I’m Iranian (and proud to be!), which in practice meant that the Kingdom of Morocco neither issued nor formally denied my visa application for attending ETRA 2026 in person. I called them and was told I should “just wait,” and they never replied to any of my follow-up emails. Anyway, my co-authors and lab mates are there presenting our work. Below are the posters, code, and links to each paper.
How Close Can You Go? Minimum Eye-to-Screen Distance for EyeLink 1000 Plus
This paper started when Renārs Trukša visited our lab in Joensuu and asked how close he could place the EyeLink 1000 Plus to his participants. We had access to the tracker, so we ran the experiment together and documented every step so others don’t have to start from scratch.
PyeLink and SyeLink: Open-source Python tools for low-level EyeLink experiment control and data parsing
For my work on the pupil-size artifact (PSA), I needed to know the pupil size during calibration and validation on the EyeLink 1000 Plus, and the available tools didn’t give me a clean way to get it. Marcus Nyström and Diederick Niehorster shared their own code with me, and after days of refactoring it grew into two packages: PyeLink to have full control over the EyeLink 1000 Plus and SyeLink for parsing the resulting EDF files.
What sets PyeLink apart is that it exposes the pupil and corneal-reflection positions in the EyeLink 1000 Plus’s own camera coordinate system. In practice, this means you can treat the EyeLink as a camera, pull out the raw features it sees, and build your own gaze-estimation algorithm on top of them. PyeLink also exposes both the raw measurements and the calibration data across the full experiment — calibration, validation, and recording phases, while existing tools typically give you one or the other, not both.
A small companion tool came out of this work too: eyelink1000plus-pupil-size-to-mm converts the EyeLink’s arbitrary pupil-size units into millimeters, derived from artificial-eye recordings.
PyEtSimul: An Open-Source Python Framework for Eye-Tracking Simulation
I needed a simulator for an experiment, couldn’t find one that did what I wanted, and PyEtSimul was born. Since the paper went in I’ve kept adding things — most recently, end-to-end calibration following Stampe (1993). I validated it against high-resolution eye-image recordings and against simultaneously-recorded EyeLink 1000 Plus data, which is also why I needed PyeLink and SyeLink in the first place.
A small note
My long-term goal in eye tracking is to build a PSA-free eye tracker. If that overlaps with anything you’re working on, please get in touch: [email protected] or [email protected].
My previous works on the pupil-size artifact (PSA): paper 1 · paper 2


