What I Learned Today

March 4, 2026 - Setup SSH on my homelab, and connected from my main machine. I also personalised my website a bit more.

March 5, 2026 - Discovered that SSHing into my laptop doesn't work anymore - will sort this out another day.

March 9, 2026 - Learnt what a reverse proxy is. Studied Haskell, became comforable with currying.

March 10, 2026 - Decided that I'll write a RISC compiler for my ESP32.

March 13, 2026 - Studied Haskell and experimented with list comprehensions.

March 14, 2026 - Studied Haskell and experimented with implemeting functions through recursion.

March 15, 2026 - Studied Haskell and experimented with types. Disabled the keyboard (with `sudo grubby --update-kernel=ALL --args="i8042.nokbd"`) on the laptop that is currently hosting this blog because it was short-circuiting and prevented me from entering certain numbers on an external keyboard. Made progress in fixing issues with SSHing into homelab

March 17, 2026 - Fixed issues with SSHing into homelab. My problem was that I couldn't SSH into or even ping my homelab from my laptop, despite both being connected to the exact same 2.4GHz Wi-Fi network. Pings resulted in a Destination Host Unreachable error originating from my own IP address. The cause of this error was the router enforcing "Client Isolation" (also known as AP Isolation), a feature that prevents wireless devices from communicating with each other. Because of this, the router was dropping ARP (Address Resolution Protocol) requests. My laptop couldn't resolve the homelab's IP address into a physical MAC address (Layer 1 [link layer] of the network in TCP/IP model, Layer 2 [data link layer] of the network in OSI model), meaning the SSH connection was failing before network traffic could leave my machine. I fixed the issue by entering my router's web UI which showed 'Client Isolation' as disabled, but it was suffering from a "stuck UI" firmware bug where the interface didn't match the router's actual internal state. By toggling the setting on, saving, turning it back off, and saving again, I forced the router to actually apply the correct rule, allowing local traffic to flow.
I also eliminated friction in my daily workflow by setting up an SSH config file (~/.ssh/config). I mapped the shortcut Host lab to the homelab's IP and my username, and linked it to a dedicated SSH key pair. By copying the public key to the homelab (ssh-copy-id), I can now securely access the homelab instantly just by typing ssh lab, bypassing passwords entirely.

March 18, 2026 - Studied Haskell and continued experimenting with types.

March 20, 2026 - Implemented Conway's Game of Life in Haskell.

March 21, 2026 - Implemented Conway's Game of Life in Haskell again in two different ways.

March 22, 2026 - Performed experiments on my Game of Life implementations.

March 23, 2026 - Wrote report on Conway's Game of Life in Haskell.

March 24, 2026 - Created a Beamer template I can use to make presentations.

March 26, 2026 - I'm going to write a compiler in Haskell that compiles from a very small subset of C to the assembly language for an ESP32 microcontroller. Today I researched my microcontroller and setup a clear plan to write my compiler.

March 28, 2026 - Demonstrated that I can run assembly code on my WeMos D1 microcontroller.

March 31, 2026 - Defined the EBNF for the small C-subset that I'm targetting.

April 4, 2026 - Structured the repository of my compiler project and wrote the outline for the end presentation. Also signed up for Google AI Pro and setup Google Antigravity.

April 5, 2026 - Wrote the scanner for my compiler.

April 6, 2026 - Wrote the parser, type-checker, and part of the code generator for my compiler.

April 11, 2026 - Wrote the documentation for my compiler.

April 12, 2026 - Created a chrome extension that blocks recommended videos on YouTube.

April 14, 2026 - Started preparing presentation for compiler demonstration.

April 15, 2026 - Continued preparing presentation for compiler demonstration.