Week 3: ProgrammerD Rises

This week I figured I’d write about what I’ve been working on since I haven’t really talked about it so far. I’ve been learning web application development with a balanced amount of front end (what you see in your browser) and backend (the database and API that manages data). If you’re into specific framework names, I’ve been learning React, Django, and some of the variations (like Flask).

I picked this because it seems like tools that will let me solve useful problems like “I need a site that tracks XYZ” or “how can I sell people something on the internet” or “I need to make a control panel for this physical thing”. Acknowledging of course that there are many different tools for solving problems with computers and many useful things one can do with computers using much more esoteric knowledge, this just seemed like a good place to start for the middle of the road “how could I be equipped to solve everyday problems.”

The first thing I built was a todo list app that used Django and React. I followed a tutorial to start and it was extremely helpful early on to just go through the motions of programming all the individual parts. Then on my own I took two days to figure out how to deploy it to a server. It turns out it’s a whole different ball game to serve the site not using development tools so I worked my way through Nginx, gunicorn, supervisor, and a bunch of linux server considerations. Plus I wanted to set up a realistic workflow so I did some git configuration and bash scripting to automatically deploy and restart the server when I made a code change on my development machine.

Then I spent about two weeks working on a React and Flask based Sudoku game with one of my batchmates. I’m not much of a puzzle player but my batchmate studied the mathematics of sudoku and had some interesting puzzle board generating code that really needed a front end. It seemed like a good application of React so I jumped on it. A lot of learning took place writing an initial version that 90% worked except for some weird state bugs. Then even more learning happened going through three or four rewrites of the code to just get it to 100% work. Ironically the code became more crude with time (I ditched a lot of hierarchical structure and modularity in favor of stupid simple) but it became easier to track state and ultimately it was the philosophy that got it working. I don’t know if it was the right lesson to walk away with, but it definitely showed the tradeoffs between simple and complex, functional and object based, tree structure and flat.

Both these projects are hosted on a new domain, programmerD.com which is a nod to how this domain, mechieD.com, celebrates my mechanical projects, and the new domain will celebrate the software ones. I’d link it here, but I’ll probably break the site and it’s not ready for primetime, so it’s only “proceed at your own risk” for the moment.

An unofficial rule of Recurse Center seems to be “don’t stick to your plans too much” so it would be foolish to say my learning path is set for the remaining 9 weeks. I can however definitely say I am glad I’ve spent time on I’ve worked on so far and I keep seeing more and more applications so I just hope to keep the momentum up.