Web sockets
This week marked my first foray into Python—a language I’d heard about countless times but never actually touched. Andreas suggested I start familiarising myself through a list of foundational tasks. The first one seemed simple enough: get Python set up and running on VS Code. But of course, with my Mac, it wasn't going to be that straightforward. Almost immediately, I ran into compatibility issues with Python versions and path configurations. I’ll be honest—it felt like the kind of thing that would’ve made me give up a year ago. But we worked through it. There was something quite satisfying about the act of problem-solving this early on, even if it was just setup. I didn’t write a single line of code yet, but I already felt like I was entering a new space.
The next task was to install MediaPipe and try running it with Python. That’s when I hit another hiccup—my terminal refused to install anything because my Mac was out of storage. A classic moment of being brought down to earth. I went home, did a major cleanup, and picked things up the next day—this time using ChatGPT to guide me through the installation process. There was something incredibly empowering about typing commands into the terminal and watching things install, even though I barely knew what half of them meant. The moment I got my first “Hello, world!” program to run in Python, I actually grinned. It was simple—one line—but it made me feel like I’d unlocked a new tool. In the process, I also took the time to understand what servers and WebSockets are (turns out they’re what allow two-way, real-time communication between programs—like having a constant line open between two friends who can talk anytime.
My first web app
After getting my WebSocket server up and running, my first goal was just to try sending something. I started simple—random numbers. I wrote a small function that broadcasted a set of dummy values to all connected clients every 0.2 seconds. Watching those numbers appear live in the browser felt weirdly satisfying, like I had tapped into the behind-the-scenes mechanics of the internet. Up until now, I’d only ever interacted with websites as a user, but this was the first time I felt like I was building part of the infrastructure. It wasn’t flashy, but it worked—and it gave me the confidence to try something more useful.
Once I got the hang of sending automated data, I shifted focus to typed messages. I modified the server code so it could actually receive messages from one client and broadcast them to others. This was the turning point where it stopped feeling like a test and started feeling like an actual app. I opened two browser tabs and typed a message into one—and seeing it appear instantly in the other made me do a double take. I had just built a working chat system. It was barebones, of course—no usernames, no styling, just plain text—but that didn’t matter. It worked, and that felt huge.