I began writing weeknotes as part of learning generously when I started at Recurse. See previous installments via the weeknotes tag.


Updates

  • My 8th week at the Recurse Center began with a major Anki session. I ploughed through cards and am finally on top of my reviews backlog for the first time in years! FSRS definitely made a difference.
  • I also had a few excellent coffee chats with other Recursers this week. Conversation, like writing, is a great catalyst for thinking. Writing forces the greatest clarity of thought and the most rigour, which is essential for actually advancing the frontier. Conversation is less rigorous but has higher spontaneity and random variance, which is exceptionally helpful for igniting new sparks of ideas.
  • Revisited RC motivations and goals. Re-prioritised projects.
    • How am I doing on the original plan?
      • Spent ~3h looking deeper into SimCell project, learning and clarifying some things, but realised that it’s mainly “cold-start blocked.” You need data to make the simulation to get the data to make the simulation to …
      • Learned Rust (and a little bit more about C(++), Go, Zig)
      • Made some in-browser simulations/graphics and games in pure JavaScript and with Three.js.
      • Came to the conclusion that most of web dev will always be either trivial or over-engineered bullshit. I’m not the only one. So instead of investing heavily in learning libraries/frameworks, either rawdog it (static sites, pure JS) or JIT learn it as needed. React expertise isn’t particularly rare or valuable, but it is short lived.
      • Made some weird and fun things (mainly little sims or games in browser) during Creative Coding, but they were all solo.
      • Have had some unexpected flourishing in the blogging / writing area.
    • Some questions I reflected on that helped me with this:
      • What currently seems like the most fun to me?
      • What things am I finding myself learning the most doing?
      • What work am I most proud of so far?
      • What would I be annoyed to leave RC having not done/learned?
      • What sort of engineer/scientist/dev do I want to be in 2 years time? What skills do I need to get there?

Inputs / outputs

  • Made further progress on my terminal AI, tai, starting with some refactoring of the spaghetti code to nice modular Rust. Then added IO via CLI arguments. There’s lots more to come, but it’s now an actually useful tool.
  • OpenAI Dev Day: Playing around with running the new Whisper Turbo model locally and looking into the new realtime API. It’s somewhat amusing that OpenAI is now shipping almost exactly what we were building with Bountyful ~20 months ago.
  • I finally got to try using OpenAI’s o1 in my workflows. It does feel different and can one-shot well-defined and constrained tasks reliably compared to 4-turbo or 4o. It’s undeniably a substantive improvement, but I’m not sure that my feelings about it have changed much.
  • First AI “Paper Cuts” session, discussing Attention is All You Need. Despite having studied and used and implemented many transformers, I still learned a lot and identified many interesting gaps in my understanding thanks to questions from the rest of the group. It’s also been interesting to do paper studies now that tools like NotebookLM are so ubiquitous. It’s an entirely new workflow that’s based on LLM summarisation, multi-source context, and document Q&A.
  • Creative Coding: I decided to program a piece of music in Sonic Pi for this week’s prompt of “cold fingers.” I haven’t used it since 2020, so I was surprised just how frustrating and non-intuitive I found it this time around. But I polished up my work and shared it with the group after the fact. It’s called “Cold Fingers - A Sonic Annealing.” The track gets increasingly chaotic, loud, and complex as the temp parameter increases.
  • Spent some time revisiting Gilbert Strang’s newest linear algebra course, which was incredibly satisfying after years of assimilating the core concepts from watching his older lectures back in 2020.
  • Spent a late night digging into a WebGL tutorial and deployed my first creation, which you can view at webgl-shader-art.vercel.app. I also ended up writing this template repo which simplifies developing and deploying in-browser shader art in a format compatible with Shadertoy.com but with dynamic canvas resizing.
  • Joined for the first Graphics Study Group at RC. The plan is for us to work through The Book of Shaders. Learning by implementing shaders is a rewarding feedback loop, so I’m looking forward to it.
  • “Quantity enables Quality” — via Robin Hanson. This was the key concept that reconciled Cal Newport’s advice to “obsess over quality” with the famous story of the pottery class where students who made more pieces over the semester ended up producing the best work. “The real key to getting everything you want is to be able to generate more options.” The obsession over quality comes in filtering and editing what you’ve already made, but the quantity you produce allows you to be more picky about the quality (and improves your taste and skills too).
  • Scott Alexander on why Ozemic seems to cure all diseases. I’m so impressed by Scott’s ability to communicate insightful ideas about multiple topics and convey information on multiple levels in a single essay. This is another fine example and a fascinating read for anyone interested in GLP-1 agonists, epistemic rigour, or the craft of writing.
  • Is a lot of the “suck” of LLMs just a result of optimising them for other people’s preferences? Trained on the average case and broad utility, RLHFed into compliance and safety for the lowest-common-denominator? Perhaps I should tune and configure and tweak my own to find out.
  • Came across the idea of “exercise snacks” from a day in the life video, and decided to adopt it this week. For example, 10 pushups every 2 hours while working.
  • “If you’re not regularly getting better at your digital toolbox, you’re actually getting worse.” — Seth Godin
  • Thorsten Ball recently described the process of “shredding” code and how it’s favoured over refactoring at Zed. I love this. “Unlike traditional refactoring, shredding involves deleting and rebuilding significant portions of code. Regular, focused shreds keep the codebase fresh and adaptable, ensuring it remains efficient and up-to-date.” This keeps the codebase in a “constant state of renewal” and fights the entropic bloat that otherwise consumes every endeavour over time. I think this is a great idea for developing software, but also for policymaking and science and management. If you disagree, please see the best piece of satire I’ve come across in months.
  • Maybe the best productivity system is just writing down your top few tasks on a piece of paper.
  • Most ambitious people (especially engineers and mathematicians) fall prey to the Zombocom Problem. “Sure, it can be anything, but first it has to be something specific.” Before it was the everything store, Amazon was first the book store.
  • Let go of the nuclear retrofuture. I’m bullish on the notion that abundant, cheap, clean energy solves almost all of humanity’s problems. I’m therefore bullish on nuclear energy. But Noah presents an interesting perspective on the absurd improvements to the cost and efficacy of solar energy and how that might be the right hand to play in a world where the best time to build nuclear reactors was 40 years ago. I’m not sure I fully agree, but he raises good points.
  • Thoughts on Debugging. “Debugging skills are not difficult to practice, but they are counter intuitive to learn and easy to be relegated.” I am even more convinced that the knack for debugging is one of the hardest to acquire, one of the most under-appreciated, and one of the most useful in all of life.
  • A superb video explaining the evolution of different display technologies. Convergent evolution of LED and OLED capabalities.
  • Stanford CS229 building large language models (LLMs), probably the most comprehensive technical dive on what is actually required to make LLM-based assistants like ChatGPT work.
  • Kyla Scanlon may be the most level-headed and interesting person who posts to TikTok. But I’m not on TikTok, so I cannot verify that.
  • I loved Gregory Aldrete on the Lex Fridman podcast. I’ve been increasingly curious about ancient Roman history these past few years and have been exposed to a number of sources and perspectives by now. But Aldrete has such a profound enthusiasm for the material and such an incredible understanding of the nuances of Roman psychology and society that this truly changed how I understand a thousand years of human history. A must listen!
  • World’s fastest camera drone vs F1 car. Great engineering, great footage, great edit.

This week I learned

(Copy-pasted from my #TIL-tagged notes in Obsidian from the past week.)

  • #TIL With a bit of fiddling, you can use shot-scraper to headlessly screenshot websites with uvx: uvx shot-scraper https://gianluca.ai
  • #TIL MLX + Apple Silicon is unlocking a lot of on-device possibility:
    • time uvx mlx_whisper --model mlx-community/whisper-turbo --language English 2022-Bit-of-a-Tangent/Released\ Episodes/001.mp3 transcribed the 47-minute podcast in 1m17s on my M2 MacBook.
  • Someone made a handy web project that allows you to fetch all the files from a Github repo and concatenated them into one long (annotated) text file. Why would you want this? To feed to an LLM of course.
    • cat whole-repo.txt | llm -s "Please explain this project to me: what it does, how it does it, and what the general architecture is."

Thanks for reading this far. If you’ve stuck with me this whole way, I’d love to hear from you. What did you like about this week’s notes? What annoyed you? What felt like too much or too little?