We are a small collective of developers, makers and thinkers that love to build things.

How we plan to change research

Now that we have gone through why we want to do this, let’s carry on with what we are going to do about it with these few projects.


An organised project is a successful project. Having an idea or question isn’t enough to do research – you must also have a plan of what to do, somewhere to note down what you find and write something to describe what you have done so others can know. All of this requires some form of organisation, and the most common way to do this is with some form of notebook.

An existing notebook like Notion can work, of course, but a shortcoming of Notion is its set of predefined modules. Going back to the doctrine espoused in our previous post, we don’t want to be a top-down organisation pushing down what we think is best for the user. Instead, we want users to be able to fulfil what they want. To this end, notes is designed to be a fully modular and user-extensible notebook application. If a user isn’t satisfied with the functionalities available, he can develop

Let's make research affordable

Amateur research is fine and all, but doing research is hard. Research isn’t just about the research – it’s about finding something to experiment on, something to experiment with, and making sure that whatever you find gets known to the wider world.

Unfortunately, today’s research exists in a bubble. Starting from the beginning of an experiment to publishing the results of one’s work, there is a certain way of doing things that presents such a barrier to entry to the layman. Lab equipment requires enormous sums of capital. Chemical suppliers refuse to sell to individuals. Journals won’t consider research from some uncredited institution. How can one even start?

We aim to address that with foundry collective. Research should not just be the domain of big institutions with enough resources. From a network of people to bounce and build ideas off, to a logistics system that keeps you supplied with the things you need to conduct experiments, to building affordable and effective lab systems, w

Research should not be professional

Since the dawn of modern science in the Renaissance, research has been conducted by the amateur. From Galileo looking up to the stars, to Leeuwenhoek grinding his microscopes, to Faraday tinkering with electricity, discoveries have been made by people driven by interest or curiosity about the world around them. However, with the rise of industrialization and universities within the past century or so, research has been increasingly segregated into ivory towers of research facilities.

We don’t think that that should be the case. Professional research is research driven by funding; research chasing grants and the support of those with the means to provide them. This inevitably introduces some form of bias to the research. Do we really need to look any further than the mess nutrition science has become with Big Sugar?

Research is more than trying to find something politically expedient or economically viable: it is the extension of mankind’s knowledge. X-Ray and machine learning’s progress

Faking Refraction in ThreeJS

In this post I'll describe how to achieve a crystal-like refraction effect within only ThreeJS. Below is a demo of the effect that's to be achieved. You can use your mouse to change your angle and position (right-drag to rotate, left-drag to move and scroll to zoom in and out). You might need to wait a while for the texture to load.


Do you need to be taught to teach?

I've always wondered why it was so difficult to become a teacher. Do you really need a school for teachers, where teachers teach students to teach? Are the licensing requirements to teach students, really that useful? Is there that much value to restricting the supply of teachers through regulation and compulsory education. And above all, isn't teaching something that is inherently human?

Let's first take a long hard look at how teachers learn to teach. An aspiring teacher has a set of hurdles to overcome before they can even teach professionally. The biggest, is a teacher training program, in Singapore this is primarily done through the BABSc diploma.

The Bachelor of Arts (Education) and Bachelor of Science (Education), also known as BABSc (Ed), is a 4-year sponsored undergraduate programme. It equips you with an academic degree in arts or science-based subjects, with a teaching qualification to teach in primary or secondary schools.

If they don't pursue this diploma, they can also do a

Institutionalised Learning

Since the industrial revolution, many public services have been institutionalised and organised into structures - of which the biggest two are healthcare and education. Healthcare gave rise to public hospital and health insurance while education gave rise to primary, secondary and tertiary schools.

The industrial revolution brought along with it, a toolkit on how to approach system design, which revolved around standardisation and efficiency. With a heavy focus on measurements and indexes, industrialists imagined a world where everything could be quantified. Undoubtedly, this has led to the many problems one can observe with the education system today.

A focus on metric based thinking, brings the culture of test-taking to school. When these professional test-takers enter the workforce, it creates a vicious cycle of industry leaders who can't look past KPIs and quantitative evaluations. This then leads to even more metric based study and evaluation.

In a schooled world, the road to happine

Learning used to be fun

Think back to when you were just growing up. When you were 4, enjoying the little things you did. Maybe you loved to draw on paper, maybe you were more of a musical person or maybe you loved to dance- but it doesn't matter what you did. You were just having fun.

You probably also asked a million questions. Why does the sea look blue? Why does the person on the TV talk funny? Why does the train make more noise when it goes into the tunnel? As kids, we were full of curiosity, wonderment, maybe even blind to the realities of the world.

It really starts with the formal education system, where we switch from asking questions, to being asked questions. "I don't know why" goes from a statement of curiosity to one of incompetence.

You need to learn because your worth in society is decided by how much of the test you get right.

This decouples the act of learning something new, from the reward which is extrinsic, through grades, compliments from teachers or comparison with peers. By now, long gone

PCIe Passthrough and libvirt

A pretty awesome feature of any modern hypervisor is the ability to pass through physical devices like USB and PCIe, without using host drivers. Almost any PCIe device can be passed through, including GPUs. There are many guides online discussing GPU passthrough, including this one by @bryansteiner.

GPUs, however, aren't as easy because they are initialised before the operating system starts. Upon boot, the firmware (sometimes called BIOS) initialises the GPU into VGA mode and starts drawing immediately. Any graphical interface (including the Linux console) will be constantly writing frames to the video card. To free up a GPU for use, you can either go purchase and install an additional GPU or instruct the operating system to stop writing to the current one.

I'm not willing to spend on another GPU on my system, therefore I went the latter route. Most guides online mention using two GPUs, but doing so with one GPU will work too by configuring the system over SSH. I used Fedora Server as

Abusing LOAD_FAST in Python 3 VM


A while ago, I read this article about abusing LOAD_CONST in Python 2.7. We are in Python 3.11 now, and CPython has since implemented quite a lot more features and checks. I wanna try to abuse the Python 3 VM to similarly execute shellcode, but I wanna do so without crashing CPython.

Some things to note first:

  1. Just like the case for LOAD_CONST in Python 2, the bug I abused in LOAD_FAST in Python 3 is known. It's even in the name! It's just way faster to leave that bug there.
  2. I mean there's the ctypes module that allows you to do literally anything. But that's not fun at all.
  3. I did not know anything about the Python interpreter prior to starting this. I've written some high level explanation of how CPython does things below, hopefully it's correct and helpful for anybody just starting.
    • Also CPython source is just so easy to read. It's been a joy.

Since I wanna try this on the newest Python, I cloned CPython and built the x64 Debug and Release version of CPython. At the tim

Folding the Julia Fractal

So the Julia sets are a class of sets that have became very popular because of their beauty and an interesting object of study. The definition of a Julia set is really simple, it is the set of complex numbers \(\bold S_c\) such that for \(z \in \bold S_c\), we have \(|f^n_c(z)| \le 2\), where \(f_c(z) = z^2 + c\). Each choice of \(c\) gives rise to a different Julia set with distinct looks. I might write more about these stuff maybe but given how popular this subject is you can find a lot of it's cool properties anywhere on the internet. I suggest checking out Inigo Quilez on the subject of rendering them.

I hope your internet's good. Due to the nature of the subject it does require rather large images.

Given how simple the definitions of these sets are, it makes it really easy and straight-forward to render them. It can be done in a few lines and is one of the first things I ever coded.


The source code for the above is here, you can use the mouse to control the value of \(c\). I left the


Magnifying the Micro with Moiré Patterns

Here I design circular screen patterns that can be used to magnify grid-like stuff, like the pixels on your screen or threads in a cloth via Moiré Patterns, such that you can calculate properties about them with a crude measuring tool like a ruler. At the same time, I present a mathematical formulation of what even are Moiré Patterns. It's a rather ad-hoc formulation, so if there are some things I missed do point it out.

I might write a follow up post where the patterns are printed on transparencies to be used IRL.

Some context: Most of these explorations happened back in 2018 with a friend of mine, Vernice. Me and Vernice even printed out the patterns on transparencies to slap on random things IRL. Unfortunately I don't have the original files and transparencies, neither did I document anything so here I've recreated everything and re-derived the Math and stuff.

What are Moiré Patterns?

Moiré Patterns are these trippy magnified patterns that come from overlapping repeated small screen pat

The Hephaestus Project

Hephaestus is the Greek God of design and creativity. More commonly known as the partner of Aphrodite, he was also the god of the Forge and was well known for creating some of the finest jewellery in Greek mythology. Hephaestus was banished from Mount Olympus, simply because he walked with a limp, and when he joined the mortals on Earth he taught them how to make art and the importance of doing so. Analogous to that, the Hephaestus project aims to cultivate unique people with different perspectives, spark creativity and dares the participants to propose the ideas people might dismiss out of hand.

Edit: We take admissions on a rolling basis, so once we get the required number of innovators, admissions will close

What is Hephaestus?

Hephaestus is a week long innovation boot camp for the people who dare to dream 🧠. It aims to bring together a group of 10 people, for a program where they are able to debate, discuss, brainstorm solutions to anything they might be interested in. It provides th