RC first post!
I’m going to be spending the next 3 months at the Recurse Center, which is like a writers retreat for programmers. I’m quite excited about it.
Since I started working as a programmer in 2013, I’ve never actually taken time much time to learn what it means to be a programmer. Before my first job interview, I spent a weekend cramming a web development tutorial, which gave me just enough knowledge to pass, and get the job. Since then I feel like I have learned enough to do what I needed to do (and try to do it well), but it hasn’t necessarily been intentional in any way.
I’d like to more intentionally work on things that spark a sense of wonder in me, that push my boundaries, and that solve hard problems. I don’t yet have definitions for any of those things, but in some sense, that’s the goal of this time.
I’ve also started feeling a bit tired of building things for “the internet”, and I think we’re going to soon see a fundamental shift in how we interact with information and each other online. I’m feeling more and more like the work I do is detached from reality - the code I write goes off to live in a server somewhere, and the feedback I get is in the form of metrics on a graph. It’s hard to describe to your kids or your friends what it all really means. So, I want to try my hand at building projects in the realm of physical computing - things that move, things that sense the environment, things that can change our physical realm.
I’ve struggled a bit with this in the past, as the barrier to entry is higher than spinning up a VM, and the cost of failure seemed tangibly bigger (what do I do with all these random leftover parts?!). But I’m challenging myself to get over this, as it has been a blocker for me in other parts of my life too.
All that said, my stretch goal for my next three months is to build a robot hand that can sort Lego. I have no idea if this is feasible, and I don’t really know where to start. But that’s the adventure!
To get to that ending point, I’d like to pass through these waypoints:
- Goal: Get better at C++
- Action: Translate my AoC entries from Python into C++
- Read “A tour of C++” by Bjarne Stroustrup.
- Goal: Get a computer to know what LEGO is:
- Go through the fast.ai deep learning course
- Use LEGO pieces as a training data set
- Go through the fast.ai deep learning course
- Goal: Make a computer move:
- Build this arm
- Get it to pick something up
- Then get it to pick up only LEGO in a field of random other parts
- Build this arm
If I still have time, I’d also like to work more on my Computer Science fundamentals by reading SICP and going through the corresponding MIT OCW course, practice for doing coding interviews (something I feel fortunate to never have had to do), and also just leave myself open to all the amazing things other people are working on.
Exited to get going!
[!Info]- I had a much longer list of things I wanted to work on that I added to my application. As I’ve thought about my time a bit more, I pared down the list so I can focus a bit more.
- Goal: Learn more first principles
- Read SICP and follow the corresponding lectures on MIT OCW
- Goal: Get better at C++ (to write software that can interact with the physical world)
- Read “A tour of C++” and “learncpp.com”, while doing past editions of Advent of Code as practice.
- Simultaneously, work on toy C++ projects (e.g. maze solver, pet simulator, etc.)
- Goal: Learn more about computer vision and machine learning
- Work through the courses on fast.ai
- Reproduce GPT-2 with Karpathy
- Goal: Interact with the physical world
- Build one of these and implement some projects on it:
- Train it to alert me when my kids leave their LEGO on the floor
- Turn it into a “Macro mouse” maze solver
- Build “Robot pong” with the robot as the ball
- Bonus goal: In doing this I’ll also learn about the robotics ecosystem (e.g. Robot Operating System, Gazebo, etc)
- Stretch Goal: Learn more about robotic manipulation
- Robotic Manipulation course at MIT: https://manipulation.mit.edu/robot.html