I began writing weeknotes as part of learning generously when I started at Recurse.

See previous weeknotes via the weeknotes tag.


Updates

  • My 7th week at the Recurse Center: welcoming the Fall 2 batch and re-assessing what I want to get out of the rest of my time in RC.
  • Updated gianluca.ai homepage layout, menus, and tagging system. (Feedback welcome)
  • RC Pairing workshop. Despite being 11 hours apart, John and I were dialled-in and oneshotted a working version of Mastermind that proceeded to oneshot us when we played it. It was satisfying to notice how my comfort and capabilities during pairing have improved since I started RC.
  • Final Neural Networks: Zero to Hero session. We’re spinning out Paper Cuts, where each week we discuss one of the most impactful ML / AI papers from the past few years. Next week, we’re discussing the undisputed heavyweight champion: Attention is all you Need.

Inputs / outputs

  • Worked through ch 13 of the Rust Book (Iterators and Closures) and did the corresponding Rustlings 70-75.
  • Started working on (my next major project?) tai, a Rust-based tool for working with LLMs as first-class command line utilities. I’m starting out by cloning llm, but in Rust. Would love to pair with some folks on this to improve our style and intuitions together. So far, I’ve implemented basic HTTP requests to OpenAI API (with reqwest) and (de)serialisation (with serde and serde_json), and got streaming with server-sent events working. Next up: markdown rendering.
  • This week’s Creative Coding prompt: “Leaves turning. Leaves falling.” Spent half the time fighting with JS modules and CDNs, but eventually shipped a falling leaves simulation, which you can try out in your browser: falling-leaves-simulation.vercel.app

Ideas

  • Someone recently reminded me about Supermaven (another AI programming copilot), so I tried out Supermaven-nvim plugin for neovim. It’s well made and the completions are rapid and accurate, even in the free tier. Also, I hate it 1, so I used a config hack to prevent it starting by default.
  • GPT-4-turbo and GPT-4o ability at generating / fixing Rust code is shockingly bad compared to Python and JavaScript. It constantly writes code that doesn’t even compile and is nowhere near as good as suggesting idiomatic refactoring compared to static analysis. I’m curious if o1 will be better at this, or if it reveals something interesting about LLMs in general.
  • If you don’t like it, make your own. An adage I’ve been living for the past few months. I plan to double down.
  • The good and bad of C++ as a Rust dev was interesting to me (who is just learning Rust and has no idea about C++) and taught me a surprising amount about both languages, their tooling, and their ecosystems.
  • Excellent video essay on Hollywood’s obsession with ambition and the counterpoint seen in the film Perfect Days. Impeccable vibes! But also an interesting juxtaposition to consider as someone who has always struggled to balance feverish ambition with a yearning to lose myself in the present moment.
  • Incredibly cool video on procedural running and galloping animations in Minecraft. This is both technically and artistically brilliant and gets me excited about making more sophisticated games and simulations.

This week I learned

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

  • #TIL Rust has tons of useful map/reduce style methods for working with iterators and closures, e.g. fold via Iterator in std::iter - Rust
  • #TIL cargo clippy suggests idiomatic refactorings. You can literally do cargo clippy --fix to automatically apply them too!
  • #TIL In neovim, use the % key to jump to the matching parenthesis, bracket, or brace. This works in normal mode for any of the pairs (), {}, or []
  • #TIL about vim easter eggs like :smile and :h holy-grail thanks to Lucy!

  1. I immediately turn my brain off with inline completions. Plus they’re incredibly annoying and flow-breaking. I can see how this is invaluable if you’re writing shit CRUD stuff or lots of boilerplate or are doing a hackathon and need to ship some random API calls 10 minutes ago. ↩︎