Graphs on Grids, Planning out Work, Recursing from Home, Rallying Agent Wednesday, Launching Talk to Me Human
Week 6, day 1 at Recurse F2’25.
Graph Problems on Grids
I worked on a graph problem which was presented on a grid.
I find these easier to think about than abstract / non-spatial graphs, because you can often think of grid-based problems like pixel (fragment) shaders: perform an operation on each element of the grid, usually considering its neighbors.
While this is nice for getting a rough draft, thinking of the problem more like a graph I think will sometimes yield a better algorithmic runtime (when not running on the GPU). For this one, you could make clever use of an iterative breadth-first mechanism (like a queue with explicit batching) to only process each node of a certain kind of node (r) once, to get O(mn + r) runtime, rather than O(mnt) where you do t iterations on the whole grid, and t is possibly as high as r.
Regardless, some proper graph problems would be fun soon.
Planning out Work
I have come to believe that the best task management system is one that you will actually use.
For me, and I think a lot of people, a piece of paper is usually enough, especially for self-directed work.
For the scope of a single day, I’ve found explicitly discarding or closing out (I’ve used a physical stamp) the previous day is so, so helpful. Do not let previous tasks automatically bleed over into the next day. This is the fundamental sin of digital task apps, which make it so easy to have incomplete tasks migrate to the next day it becomes natural to do so. But this means one poorly planned day overwhelms the next, which leads to tool abandonment, which makes the tool useless.
I used one piece of paper per day for the last few months and loved it.
Recently, I tried GitHub issues. I love GitHub for lightweight task management.01 As long as I close out each day’s issue, it’s great. I wrote a macro so one key on my keyboard spews out the full set of inboxes I should try to check and clear each day.
- [ ] inboxes
- [ ] messages
- [ ] messenger
- [ ] discord
- [ ] whatsapp
- [ ] gmail: lsb
- [ ] gmail: personal
- [ ] zulip
I am really bad at actually doing this, which you know if you’ve texted / emailed me.
This week, I found myself with more to do than usual, so I’m trying to use a GitHub issue to plan out my week’s work. We’ll see how this goes. It was nice to write down the several things I wanted to do differently from last week, and then make myself slot them into concrete goals for each day.
No matter how many times I rediscover it, I am always surprised how motivating it is to:
- write out out an ambitious set of goals for the day, and/or
- create timeboxes on the calendar
The former is more motivating for me than the latter, because then I am trying to beat the clock. But I know the latter is more sensible for explicitly spreading out time into several areas and making sure nothing gets missed.
Recursing from Home
High variance. Different distractions than going into the Recurse hub.
At Recurse, I talk to people a lot. This is generally great, but can take a lot of time if I’m trying to actually get something done. It can also be harder to focus because there’s more noise, and it’s often hard to find a good station on the quiet floor.02 My other ‘distraction’ is usually working on the same thing for too long, not being able to muster up the activation energy to change. This feels specific to the environment in a weird way. I don’t know what it is.
At home, it’s easier to goof off because nobody is watching. YouTube is my bane. A 30-minute break can easily balloon into 2 hours. I’ve never watched YouTube once at the hub, and I don’t see that changing. On the other hand, if I am in a working mode, it’s much easier to focus at home, and I can work nearly the whole day without getting pulled into different distractions.
Today, I realized that while planning the day is very helpful, it manifests differently for being at Recurse vs at home. At Recurse, having a plan means I can balance what I’m doing better. At home, it means I’m less likely to get distracted.
Rallying Agent Wednesday
A few folks seem interested in participating in the first-ever (and hopefully weekly) game-playing agent tournament on Wednesday in the weekly ML/RL in Games interest group. We’re doing cart-pole.
I’m most excited about an idea I had over the weekend: score on both performance and size (of model). Then, draw a Pareto efficiency chart. Size on x-axis, performance on y. Then, there isn’t a single best point, but there’s a space of possible solutions, while still maintaining the opportunity for competition (in equal size or performance regions).
I think this will be fun because:
-
People who are interested in small / code-only approaches can still compete and have a challenge among them.
-
People who are interested in training larger models have more depth to work on if they want: how big does your model really need to be? Can you quantize it, or do transfer learning into a smaller model?
-
I have a fuzzy recollection of some of the best chess models being much smaller and more efficient than what you’d naively get with off-the-shelf RL, because the people working on them understand the problem space very well and where to put the computational horsepower. This is a hand-wavy argument to say that the model design space might be richer.
For folks not interested in optimizing size, this won’t give them more work, but might expand the space of opportunities for those interested.
Launching Talk to Me Human
I clicked the “release” button on Steam, and voila, the game was live. Here it is. This was anti-climactic because I’d been procrastinating doing this since it (finally) got approved nineteen days ago. I finally just put it on my todo list today with the intention of actually doing it, and did it.
One thing working on independent projects / products has taught me is that you really don’t need to be stressed about releasing anything, because nobody will notice. In fact, it’s not like, maybe nobody will notice what I made. It’s: without extraordinary effort, it’s all but guaranteed nobody will notice what I made.
There wasn’t a perfect presentation slot to share Talk to Me Human at Recurse, so I picked Wednesday. I hope folks enjoy it!
Footnotes
I like GitHub issues for project management too. I think because I used it while it was so simple, and that it’s integrated into code, made it click with me. Because the complexity they’ve added has been gradual over time, I don’t mind it. ↩︎
I really need to get a HDMI → USB C dongle to bring in. I’m glad I wrote this. Just ordered one. ↩︎