Home Publications Certifications LinkedIn GitHub Email

What I cannot create, I do not understand.   -Richard Feynman


The above is probably my favourite quote. As someone who has done extensive research in cognitive neuroscience, I find that it is often too easy to rely on established tools, without needing a grasp of the technicalities involved. Building your own tools is a good way of understanding the intricacies of your data. This idea has led me to play around with programming and tinkering with somewhat unexpected programs and hardware. This website is designed as a repository of sorts for these kinds of DIY projects, some of which have been incorporated into actual research publications or conference posters.

If there are any queries, or code requests, feel free to contact me (see header icons).


My attempt at categorising these side projects:

Random fun projects  |  Games as experiments  |  Technical demos  |  Experiment Programming Hacks  |  Data Visualizations


timedata



Random Fun Projects

Will update with random projects I do where the techniques might have some use later on ...

Which country has the best food?

Boosting a decision tree? A scikit-learn example.

(Mis)adventures with ChatGPT Part I. Let's use AI to generate and analyse data!

Showing code snippets via a webpage that references its own code!

Using openAI's API to make a novel-writing AI assistant.


ChatGPT analyses data

Games as experiments

Computer-based cognitive experiments, are essentially video games (only, really boring ones).

What data can we mine from actual games? Here are some examples of games which might give us usable data:

Tetris: A cognitive test to measure learning?

Missle Command / Asteroids: Can we get precision data from a video game?

Pong: Because no game collection is complete without it! (Coded entirely in javascript)

(Mis)adventures with ChatGPT Part II. Let's use AI to make games!



Home-made Tetris

Technical demos

Sometimes research can benefit by going beyond the standard tools of the trade.

This might take the form of new hardware implementations, or new programs to use

Or sometimes, going online with the data collection.

Here are some possibilities:

A cheap analog input device: An Xbox controller

Using game engines: Plinko with physics (Linux and Chrome unfortunately not supported) Click here for a GIF.

A computer vision test to simulate V1 population coding

Running experiments online? Here's an example! GitHub: link

Borrowing from psycholinguistics for Natural Language Processing (NLP)

Practice your SQL without bothering with setting up databases

Using Mermaid code to prototype flowcharts (within a HTML!)

Heart rate analyses from raw EEG data





Response Preparation




Experiment Programming Hacks

There are often data that you would miss out on if you only stick to standard methods.

Here are some 'hacks' I've learnt:

Is your polling method frame-trapped? Try threading.

Does Eprime's data format bother you? Scrape the log file!

What does binary have to do with programming EEG studies?

Is a Raspberry Pi (ver2) good enough to run experiments on? A case for stimulus timings.



TimingPrecision



Data Visualizations

Just some general tricks that weren't obvious to me, but ended up being of use.

Using R to produce animations

Using Matlab's image processing toolbox to reslice dicom images

Some data visualization R ggplot (with code)

Statistical Tests in R (with code)

Animations as useful data visualization (EEG example)

Building a recommendation engine from a dissimilarity matrix

A 'dashboard' for visualizing timestamps



My Brain