Ezra PalmersCV (PDF)

Hamilton, New Zealand

Ezra Palmers

Machine learning researcher / engineer

Honours student in artificial intelligence, University of Waikato

Interests:MLEEGCUDAASRLLMsHomelab

I am an artificial intelligence honours student at the University of Waikato, focused on machine learning research. My dissertation continues my summer EEG research by developing a reusable software platform for future studies. EEG measures the brain's electrical activity through sensors on the scalp. I am using the platform to examine activity around the moment someone reports leaving flow, the absorbed state in which a task holds all your attention. This is the kind of work I want to continue in deep learning and language model research.

My background is a Bachelor of Science in data analytics. Probability, statistics and statistical learning shaped how I first understood machine learning, and I now tutor probability and statistics. That foundation shapes the questions I ask in research: why a model learned a particular pattern and what else in the data could explain it.

I use coding agents every day and write custom skills that guide them through recurring, multi-step work. One workflow begins with a speech recognition tool I built: it turns recordings into transcripts, then an agent searches them, pulls exact quotes and marks each passage's place in the audio.

I like to understand the systems underneath my work. I am studying an open CUDA problem with an NVIDIA mentor, and I run a Raspberry Pi server at home to learn more about networking.

My current projects

EEG research platform and flow state

My interest in EEG machine learning began with a summer research scholarship on predicting flow state from the brain's electrical activity, measured by sensors on the scalp. What drew me in was that nobody knows yet whether it can be done. Flow is the absorbed state where a task takes all of your attention and people lose track of time. Labelling it is the hard problem: there is no objective measure of flow, a person's account of their own state is unreliable, and stopping to ask breaks the absorption or prevents it, so the task has to run uninterrupted. I designed the protocol around that. Participants drove a simulator without a break and pressed a button the moment they felt flow end. It took a team from several fields; the laboratory recorded the sessions, and the processing and analysis were mine. My dissertation carries the work on now.

EEG is difficult data. There is a great deal of it, and muscle movement and nearby electronics are picked up along with the brain activity. Which processing steps are the right ones is still argued over, cleaning out an artifact can take real signal with it, and the activity drifts, so a pattern that holds at the start of a session need not hold at the end. All of that has to be handled before a study can ask its own question, and it is enough work to keep researchers out of the field. My dissertation turns my processing code into a platform the other researchers in the laboratory can run their own EEG studies on, supplying only how their data is labelled. First I check it on a simple eyes-open, eyes-closed study, then analyse the flow recordings.

Working towards an open-source contribution to NVIDIA's CUDA libraries

Segmented scan runs a calculation along a list cut into sections, starting again at each new section. It is one of the building blocks in CUB, NVIDIA's open-source collection for CUDA programs. CUB gives each section to one block of GPU threads, so when section lengths vary sharply, most blocks finish early and sit idle while one works through the longest. Balancing the load means splitting the elements evenly between the blocks instead, so they finish together. An NVIDIA engineer mentors the work.

The project asks how uneven the sections have to be before CTA-level load balancing earns its cost, since an even split adds coordination wherever a section crosses a block boundary. Reading CUB's source showed that the upstream work in progress still cannot divide one oversized section between blocks. The design is settled, and I am now implementing the balanced path. A benchmark and upstream review come next.

Recording transcriber

I had recordings I wanted to put in front of a language model, and turning the audio into text is the first step. Paid services do that well, but I wanted to run it myself, so I built an open-source tool around Whisper, a speech recognition model that works on my own graphics card.

The transcript is where the useful part starts. I ask a coding agent when a topic came up and what was said about it; it searches the transcripts, reads the discussion around each hit, and writes up notes that quote the words exactly and mark the point in the audio each quote came from. That lets me play the moment and check a quote before I rely on it, and the notes can be turned into a summary afterwards. The public repository holds the tool, the instructions the agent works from, and a few of my own writing rules for it. It does not identify speakers, so it suits one main talker, and names and technical terms are often misheard.

Articles

Contact

The best way to reach me is by email. Most of my code is private for now, apart from the recording transcriber.