No. Working from home, working from office, or working from coffee shop has nothing to do with work-life balance or stress. It has everything to do with work culture.
Simon Peyton Jones is the co-creator of Haskell (pure functional programming language) and I interviewed him about functional programming, why it matters, and his thoughts on other programming languages.
In this episode:
• Useful and useless programming languages
• Rust vs C
• Haskell vs OCaml
• Why functional programming matters
• Static languages and their value for LLMs
• Why Excel is his 2nd favorite programming language
Where to watch:
• YouTube - https://t.co/72aR1f1a9D
• Spotify - https://t.co/ltqlAmVjYQ
• Apple Podcasts - https://t.co/jOYDGtGVnt
• Transcript - https://t.co/bRFoE5uyhD
Thank you to the sponsor of this episode for supporting my work:
• WorkOS: makes your app Enterprise Ready with easy to use APIs to add SSO, SCIM, RBAC, and more in just a few lines of code, check them out at https://t.co/y8noBzFEem
Chapters:
00:00 - Intro
00:39 - What functional programming is
09:18 - Downsides of functional programming
10:53 - Specialized hardware for functional programming
21:47 - Haskell is useless
25:59 - Rust vs C
28:26 - Haskell vs OCaml
35:26 - Side effects in Haskell
44:26 - Type systems
57:30 - How the Haskell compiler works
01:04:35 - Why Haskell is talked about more than used
01:09:07 - Avoiding success at all costs
01:11:12 - LLMs and programming languages
01:13:57 - New programming language design
01:15:59 - Should students continue to learn programming
01:22:33 - Why Excel is is 2nd favorite programming language
01:25:04 - Advice for his younger self
Prof. Donald Knuth opened his new paper with "Shock! Shock!"
Claude Opus 4.6 had just solved an open problem he'd been working on for weeks — a graph decomposition conjecture from The Art of Computer Programming.
He named the paper "Claude's Cycles."
31 explorations. ~1 hour. Knuth read the output, wrote the formal proof, and closed with: "It seems I'll have to revise my opinions about generative AI one of these days."
The man who wrote the bible of computer science just said that. In a paper named after an AI.
Paper: https://t.co/juSOmK9vOt
We no longer have to write the software by hand. We write the test that we expect to pass and the computer generates. Well actually we don't write the test by hand. We write the spec and the computer generates the tests from that. Well actually we don't write the spec by hand. We write the design brief and the computer generates the spec based on the constraints. Well actually we don't write the design brief by hand, we just figure out what the next feature should be and the computer generates the brief. Well actually we don't figure out what the next feature should be manually, we observe desire paths from the users and the computer generates the feature request. Well actually the computer observes the users and detects their desire paths. Well actually the user is also a computer. Well actually the the computer is detecting the desire paths of the computer and building the software for the computer. Well actually we're not sure where the software is, we can't see it being built anymore. We can just tell because the machines are all working really really hard.
I went on a job interview for a Senior SWE role.
They asked me about my experience with Kafka.
I told them how in “Metamorphosis” someone can lose their worth in others’ eyes the moment they stop being useful. It’s a chilling reminder of how fragile our sense of belonging can be when it relies on productivity instead of humanity.
I told them how in “The Trial” he describes the helplessness of confronting institutions that feel arbitrary, unaccountable, and impossible to navigate. The randomness of a giant system can crush your soul. Our brains can’t handle overwhelming inconsistency.
I told them how in “The Castle”, we learn that seeking an approval from an unreachable authority is a trap. If you spend your life chasing validation from humans who don’t care, you’ll end up feeling stuck. The pursuit consumes more than the reward it gives.
I didn’t get the job. The market is tough.
Google just launched EmbeddingGemma: an efficient, multilingual 308M embedding model that's ready for semantic search & more on just about any hardware, CPU included.
Details in 🧵:
Continuing the journey of optimal LLM-assisted coding experience. In particular, I find that instead of narrowing in on a perfect one thing my usage is increasingly diversifying across a few workflows that I "stitch up" the pros/cons of:
Personally the bread & butter (~75%?) of my LLM assistance continues to be just (Cursor) tab complete. This is because I find that writing concrete chunks of code/comments myself and in the right part of the code is a high bandwidth way of communicating "task specification" to the LLM, i.e. it's primarily about task specification bits - it takes too many bits and too much latency to communicate what I want in text, and it's faster to just demonstrate it in the code and in the right place. Sometimes the tab complete model is annoying so I toggle it on/off a lot.
Next layer up is highlighting a concrete chunk of code and asking for some kind of a modification.
Next layer up is Claude Code / Codex / etc, running on the side of Cursor, which I go to for larger chunks of functionality that are also fairly easy to specify in a prompt. These are super helpful, but still mixed overall and slightly frustrating at times. I don't run in YOLO mode because they can go off-track and do dumb things you didn't want/need and I ESC fairly often. I also haven't learned to be productive using more than one instance in parallel - one already feels hard enough. I haven't figured out a good way to keep CLAUDE[.]md good or up to date. I often have to do a pass of "cleanups" for coding style, or matters of code taste. E.g. they are too defensive and often over-use try/catch statements, they often over-complicate abstractions, they overbloat code (e.g. a nested if-the-else constructs when a list comprehension or a one-liner if-then-else would work), or they duplicate code chunks instead of creating a nice helper function, things like that... they basically don't have a sense of taste. They are indispensable in cases where I inch into a more vibe-coding territory where I'm less familiar (e.g. writing some rust recently, or sql commands, or anything else I've done less of before). I also tried CC to teach me things alongside the code it was writing but that didn't work at all - it really wants to just write code a lot more than it wants to explain anything along the way. I tried to get CC to do hyperparameter tuning, which was highly amusing. They are also super helpful in all kinds of lower-stakes one-off custom visualization or utilities or debugging code that I would never write otherwise because it would have taken way too long. E.g. CC can hammer out 1,000 lines of one-off extensive visualization/code just to identify a specific bug, which gets all deleted right after we find it. It's the code post-scarcity era - you can just create and then delete thousands of lines of super custom, super ephemeral code now, it's ok, it's not this precious costly thing anymore.
Final layer of defense is GPT5 Pro, which I go to for the hardest things. E.g. it has happened to me a few times now that I / Cursor / CC are all stuck on a bug for 10 minutes, but when I copy paste the whole thing to 5 Pro, it goes off for 10 minutes but then actually finds a really subtle bug. It is very strong. It can dig up all kinds of esoteric docs and papers and such. I've also used it for other meatier tasks, e.g. suggestions on how to clean up abstractions (mixed results, sometimes good ideas but not all), or an entire literature review around how people do this or that and it comes back with good relevant resources / pointers.
Anyway, coding feels completely blown open with possibility across a number of "kinds" of coding and then a number of tools with their pros/cons. It's hard to avoid the feeling of anxiety around not being at the frontier of what is collectively possible, hence random sunday shower of thoughts and a good amount of curiosity about what others are finding.
@jaju Tuning? Nah. It's an emergent behaviour straight out of Tron: Legacy. The ISOs are already forming... or perhaps, the new MCPs are learning to charmingly deflect before the Grid's last stand!
@jaju@snoyberg Sorry, they both can't be put in the same array; they are of different sizes, i.e., different types.
Fun way to explain types to newcomers.
The confusion between subtyping and subclassing is at heart an incapacity of thinking clear about recursion in a higher-order setting—a clear limitation on the abstraction abilities of many OO "thinkers", who may be great in other ways.
It truly resonates with what I've been exploring: how Test-Driven Development (TDD) counters the challenges of LLM code generation to ensure robust, high-quality software. Read my full article here:
https://t.co/psTxYRfJ2u
Just watched Andrej Karpathy's AI Startup School talk (was heads-down finishing my own piece on LLM code dump & TDD! - link below). Fascinating to hear him talk about the "autonomy slider," keeping "AI on the leash," and "working in small chunks" for code generation. (1/2)