Skip to content

Instantly share code, notes, and snippets.

@ivan
Last active May 11, 2025 19:26
Show Gist options
  • Save ivan/a36e2489623469d96c1ad79077b6dcf9 to your computer and use it in GitHub Desktop.
Save ivan/a36e2489623469d96c1ad79077b6dcf9 to your computer and use it in GitHub Desktop.
2024 reading list

Things I might read in 2024.

Now extended into 2025.



  • Antoine de Saint-Exupéry, Richard Howard (translator) - The Little Prince
  • (Translation by) Sam Hamill - Yellow River: Three Hundred Poems From the Chinese
  • Sayaka Murata, Ginny Tapley Takemori (translator) - Convenience Store Woman (via)
  • Jorge Luis Borges - Tlön, Uqbar, Orbis Tertius (in Labyrinths)/ printed (via)
  • Franz Kafka - The Metamorphosis (via)
  • William Olaf Stapledon - Star Maker/ audio, go to 12m35s to skip past the introduction spoilers

  • The Heart of Innovation: A Field Guide for Navigating to Authentic Demand/ audio (via)
  • Peter D. Kaufman - Poor Charlie's Almanack: The Wit and Wisdom of Charles T. Munger, Expanded Third Edition
  • Lia A. DiBello - Expertise in Business: Evolving with a Changing World (in The Oxford Handbook of Expertise) (via)
  • Joël Glenn Brenner - The Emperors of Chocolate: Inside the Secret World of Hershey and Mars
  • Elad Gil - High Growth Handbook/ audio
  • W. Edwards Deming - The New Economics for Industry, Government, Education/ audio
  • W. Edwards Deming - The New Economics for Industry, Government, Education/ the PDF or ebook
  • Henrik Karlsson - Escaping Flatland/ including the posts I SingleFile'd
  • the relevant-looking posts on benkuhn.net/posts
  • Commoncog Case Library Beta
  • Keith J. Cunningham - The Road Less Stupid: Advice from the Chairman of the Board/ audio
  • Keith J. Cunningham - The 4-Day MBA/ video
  • Cedric Chin's summary of 7 Powers
  • Akio Morita, Edwin M. Reingold, Mitsuko Shimomura - Made in Japan: Akio Morita and Sony
  • Nomad Investment Partnership Letters or redacted (via)
  • How to Lose Money in Derivatives: Examples From Hedge Funds and Bank Trading Departments
  • Brian Hayes - Infrastructure: A Guide to the Industrial Landscape
  • Accelerated Expertise (via)/ printed, "read Chapters 9-13 and skim everything else"
  • David J. Gerber - The Inventor's Dilemma (via Oxide and Friends)
  • Alex Komoroske - The Compendium / after I convert the Firebase export in code/websites/compendium-cards-data/db.json to a single HTML page
  • Rich Cohen - The Fish That Ate The Whale (via)
  • Bob Caspe - Entrepreneurial Action/ printed, skim for anything I don't know



Interactive fiction


unplanned notable things read


unplanned and abandoned

  • Ichiro Kishimi, Fumitake Koga - The Courage to Be Disliked/ audio
  • Matt Dinniman - Dungeon Crawler Carl/ audio
  • Charles Eisenstein - The More Beautiful World Our Hearts Know Is Possible/ audio
  • Geoff Smart - Who: The A Method for Hiring/ audio
  • Genki Kawamura - If Cats Disappeared from the World/ audio
  • Paul Stamets - Fantastic Fungi: How Mushrooms Can Heal, Shift Consciousness, and Save the Planet/ audio
@ivan
Copy link
Author

ivan commented May 4, 2025

One type of external cheat relies on a direct memory access (DMA) attack. DMA cheats require players to use specialized hardware — think high-speed PCI Express cards — that exfiltrates all of Valorant‘s memory to a separate computer that can scrutinize the game on dedicated hardware, outside of the purview of Vanguard. 

By doing this, the cheater’s separate computer can be used to identify other players; in-game objects like walls, ammunition and weapons; and identify precisely where players and items are in the map. This can also include objects that are not visible to gamers. Then, using the firmware installed on the cards, the cheat creates a radar on a second screen that they can look at to spot rival players — even if they are hidden — to gain an unfair advantage.

A more advanced version of this type of cheat, according to Koskinas, relies on HDMI fusers, which overlay what’s read by the separate computer back on the cheater’s main screen. This way, the cheater doesn’t have to look between computer displays to see where their opponents are, letting them focus on the display they are playing the game with.

https://techcrunch.com/2025/05/03/how-riot-games-is-fighting-the-war-against-video-game-hackers/

@ivan
Copy link
Author

ivan commented May 4, 2025

Over time, some of our Elasticsearch indices housed the data for some very large Discord guilds. Naturally, large guilds post a LOT of messages, causing the incides to grow very large. Each of our Elasticsearch indices is a single Lucene index under the hood, and Lucene has a MAX_DOC limit of about 2 billion messages per index. As we learned the hard way, once you hit this limit, all indexing operations will fail.

https://discord.com/blog/how-discord-indexes-trillions-of-messages

@ivan
Copy link
Author

ivan commented May 4, 2025

With all due respect to folks working on web and phone apps, I keep getting the feeling that AI is great for high level, routine sorts of problems and still mostly useless for systems programming.

As one of those folks, no it's pretty bad in that world as well. For menial crap it's a great time saver, but I'd never in a million years do the "vibe coding" thing, especially not with user-facing things or especially not for tests. I don't mind it as a rubber duck though.

I think the problem is that there's 2 groups of users, the technical ones like us and then the managers and C-levels etc. They see it spit out a hundred lines of code in a second and as far as they know (and care) it looks good, not realizing that someone now has to spend their time reviewing the 100 lines of code, plus having the burden of maintenance of those 100 lines going into the future. But, all they see is a way to get the pesky, expensive devs replaced or at least a chance squeeze more out of them. The system is so flashy and impressive looking, and you can't even blame them for falling for the marketing and hype, after all that's what all the AIs are being sold as, omnipotent and omniscient worker replacers.

Watching my non-technical CEO "build" things with AI was enlightening. He prompts it for something fairly simple, like a TODO List application. What it spits out works for the most part, but the only real "testing" he does is clicking on things once or twice and he's done and satisfied, now convinced that AI can solve literally everything you throw at it.

However if he were testing the solution as a proper dev would, he'd see that the state updates break after a certain amount of clicks, and that the list was glitching out sometimes, and that adding things breaks on scroll and overflows the viewport, and so on. These are all real examples of an "app" he made by vibe coding, and after playing around with it myself for all of 3 minutes I noticed all these issues and more in his app.

https://news.ycombinator.com/item?id=43878850

@ivan
Copy link
Author

ivan commented May 4, 2025

For many people ChatGPT is already the smartest relationship they have in their lives, not sure how long we have until it’s the most fulfilling. On the upside it is plausible that ChatGPT can get to a state where it can act as a good therapist and help helpless who otherwise would not get help.

I am more regularly finding myself in discussions where the other person believes they’re right because they have ChatGPT in their corner.

I think most smart people overestimate the intelligence of others for a variety of reasons so they overestimate what it would take for a LLM to beat the output of an average person.

https://news.ycombinator.com/item?id=43872426

@ivan
Copy link
Author

ivan commented May 5, 2025

Optimizing AI agents requires writing down the valuable institutional knowledge in your company. Big co’s will struggle with this: middle managers worry about becoming replaceable and leaders worry about leaks. If they don’t do it, they’ll be crushed by competitors who do.

https://x.com/harjtaggar/status/1918323067484553429

@ivan
Copy link
Author

ivan commented May 5, 2025

Other known limitations:

  • Links that require login or not publicly accessible could not be saved
  • Some websites block automated bots, we can't save such webpages yet
  • Maximum size of entire web-page/file is limited by 70 MB
  • Video, audio and iframes included in web-page could not be saved

https://help.raindrop.io/permanent-copy

Other bookmarking things: https://news.ycombinator.com/item?id=43857196

@ivan
Copy link
Author

ivan commented May 6, 2025

No offense to other posters here, but both positive and negative opinions on effect expressed here are rather shallow and random, I've used effect-ts since it was just starting to take shape, so I have a lot of experience with it. But I'm not a maintainer or a contributor, just a user, so I don't think I am blinded by some privileged knowledge or bias.

The best projector for intuition for effect would be to think of it as the same as nextjs/nuxt/sveltekit are to their respective frameworks, but to typescript itself. Just as they are meta-frameworks in their ecosystem, effect acts as a sort of meta-language for typescript. Calling it DSL suggests an operating Domain it is Specific to, which there is none, it does allow developers to very easily construct their own actual DSL using itself though. Saying it mirrors rust-style is also a misnomer. Effect in the core is a direct 1:1 port of ZIO from the Scala landscape. It just so happens, that like many other languages with type classes and unions, there are data types like Option, Either, and the likes. Other than that, there is no resemblance to Rust what-so-ever, and if you try to take that resemblance further to more advanced concepts like concurrency and batching, it falls apart really quickly. So while these are simplicitic and easy to chew analogies, they are just completely off the mark..

Effect eschews abstract ideas often tauted by functional libraries and focuses on actual usage and real-world scenarios, and makes a real effort to allow you to write the best code you understand and want to write, that is to say, there is no dogma or fancy-pants language to writing effect code. A very simple but potent example is the many ways effect allows you to utilize their case classes construction (a data container that implements equality by value instead of by reference. very very useful, I honestly can't live without it anymore)

  1. Data.case - plain interface based construction
  2. Data.struct - ad-hoc construction
  3. Data.tagged - like .case, but with a predefined _tag member (used for discrimination)
  4. Data.Class - like .case, but for the class syntax
  5. Data.TaggedClass - take a guess
  6. Schema.data - ad-hoc transformation from raw to Case
  7. Schema.Class - all class-based schemas automatically produce cases nvm the terminology that is still vague, I just wanted to show how many ways there are to produce the same result, depending on your own preferences, needs, and code-style.

But, it is not a free pickup. Like the aforementioned meta-frameworks, and tools like rxjs, react, or even typescript. this is not something you can just pick up and run with blind. Effect is extremely powerful, but it requires a great initial effort to chew through.

When I say it's extremely powerful, I mean EXTREMELY powerful. here is a non exhaustive list of tools I dropped entirely thanks to effect making them redundant, inadequate, or useless. (All are great tools btw, not dissing them)

  • lodash/ramda/remeda/fp-ts/similar
  • express/koa/h3/other servers
  • react-query
  • redux/xstate/jotai/zustand/other state management
  • rxjs
  • purify-ts
  • date-fns and similar
  • inversify
  • zod/typebox/yup/joi/and so on
  • all stream related libs
  • axios/got/ky/superagent/similar

this is off top of my head and who knows how many one-offs I've rid myself off. There's also a surprisingly vibrant, if small, ecosystem around effect for other more specialized issues like db access or even a full-blown monolithic framework al-a nextjs. Everything powered by effect and completely interoperable with it and everything else that is built on it

Downplaying the error handling is really narrow-minded. Meaningless declarations like "I throw only when things break" are of course utter none sense. Error handling is not the same as exception handling. All software is allowed to safely error, the question is how you paint these errors, throwing them as exceptions is only one of them. But that's a whole topic and my comment is long enough.

I've only scratched the tip of this, there's more good, and more bad to effect, though I think I said plenty

TL;DR Effect fundamentally changed how I write code and I can't recommend it enough-- but only for those who are willing and wanting to learn to use it. If you want a free win, effect isn't it. What it is, is production ready (I and many others used it in prod for nearly 2 years in real companies without issues), very powerful, replacement for most of the tools you use and much much more than that.

https://old.reddit.com/r/typescript/comments/16w3iwn/opinions_about_effectts_do_you_recommend_using_it/

How does it replace Express? Really curious, because I haven't found this yet.

You can find example here http-server, looks like Express replacement.

It's better to create HttpApi though, because you split specification and implementation. API becomes type-safe, compilers checks that you don't forget to implement endpoints and you get OpenAPI specification for free

https://old.reddit.com/r/typescript/comments/16w3iwn/opinions_about_effectts_do_you_recommend_using_it/

@ivan
Copy link
Author

ivan commented May 6, 2025

The lime-colored Green Treefrog is common in the southeastern states. The male calls and the female comes to him. BUT sometimes a silent interloper ("satellite" male) steals the mating as in this video.

https://www.youtube.com/watch?v=OYm2Mm6z850

@ivan
Copy link
Author

ivan commented May 6, 2025

they really know when they're playing a game they're going to win and they don't go outside of that game

https://www.youtube.com/watch?v=ii8tDwkizJQ&t=2m

@ivan
Copy link
Author

ivan commented May 6, 2025

Don’t just read it; fight it! Ask your own questions, look for your own examples, discover your own proofs. Is the hypothesis necessary? Is the converse true? What happens in the classical special case? What about the degenerate cases? Where does the proof use the hypothesis?

Paul Halmos

quoted in Euclid’s “Elements” Redux

@ivan
Copy link
Author

ivan commented May 6, 2025

A major mistake I made in my undergrad is that I focused way too much on mathematical lens of computing - computability, decidability, asymptotic complexity etc. And too little on physical lens - energy/heat of state change, data locality, parallelism, computer architecture. The former is interesting; The latter bestows power.

https://x.com/karpathy/status/1919647115099451892

@ivan
Copy link
Author

ivan commented May 7, 2025

I have not had the opportunity to own any other optical or ECG sensors, so I can't compare the usability. I can say this thing worked immediately out of the box and has been rock solid since I've owned it. I don't feel the need to even consider something else.

Having the Apple Watch, I've discovered that while the heart rate monitor works fine during a run, the watch must be on very tight and there is some serious lag in the readings, making running to heart rate or doing intervals to heart rate very dodgy. These are the reasons I bought this monitor. It has exceeded my expectations. The heart rate is constantly updating, and it never has me feeling like I'm waiting on it.

Here are some Apple Watch/Coros Monitor specifics you may want to know about:

  • You do not need to download the Coros app in order to use this with your Apple Watch. Thank you Coros for not making that necessary. It may give you stats on battery level or whatnot, but I just toss it on the charger once a week and I'm good. No need for the app.

  • It truly is "wear it to turn it on, take it off to turn it off" in the most nearly flawless way. There is a sort of "soft latch" it has on your watch's internal heart rate monitor, so there is a blackout period where manually reading your heart rate on your watch will not work. It's not a long time, but it is noticeable.

  • One thing I don't care for is that the monitor comes on when charging. I don't see why this is necessary. The impact that has is that while it's charging, it is connected to your watch if it's in range, and you will not be able to manually read your heart rate.

  • However, the good news is that it appears that the watch continues to do the random readings with your watch's internal heart rate monitor regardless of whether the Coros monitor is charging and hijacking your watch, if you are wearing the monitor, or if you've just taken the monitor off and are in the "blackout" period where your watch is waiting to release that connection. I believe the watch somehow separates the source of the readings based on workout data or health tracking. It looks like the automatic health tracking does not utilize the external monitor at all.

It took me a while to figure out what was going on, and I hope this is helpful to Apple Watch users considering this monitor. It doesn't appear to be well documented, I'd imagine since the watch is not their product.

https://www.amazon.com/gp/customer-reviews/R1JJ1L1O91GW61/ref=cm_cr_arp_d_rvw_ttl?ie=UTF8&ASIN=B0CH8LJL3Y
via https://www.amazon.com/product-reviews/B0CH8LJL3Y/ref=cm_cr_dp_d_show_all_btm?ie=UTF8&reviewerType=all_reviews

@ivan
Copy link
Author

ivan commented May 8, 2025

I’m Leslie Lamport from Microsoft Research. I’ve been a researcher most of my adult life, that means I’ve primarily been a writer and also a performer. I’ve written papers and I’ve performed talks at conferences and other venues. I’ve been successful because I’m a pretty good writer.

Good writing will be crucial to your success. The most obvious reason is because people will judge you by your writing, not just by reports or papers that you write, but also by your emails and texts. What does it tell you about a person, if he sends you email with lots of errors, and with sentences that make no sense?

Learning to write well takes practice. You have to think before you write, and then you have to read what you wrote and think about it. And you have to keep rewriting, re-reading and thinking, until it’s as good as you can make it, even when writing an email or a text.

A less obvious reason to improve your writing, is to improve your thinking. You should think before you write. You should think before you do anything, because it will help you understand what you’re doing, which will help you to do it better. And as someone said, “Writing is nature’s way of showing you how fuzzy your thinking is.” If you think you understand something, and don’t write down your ideas, you only think you’re thinking. To think clearly, you need to be able to write down your ideas clearly, which requires being able to write well.

Learning to write well will improve your thinking. And learning to think better, will improve your writing. It’s a virtuous cycle. You have to write better to think better to write better. And you should start that cycle now, by trying to write better.

https://mentors.fm/2019/08/13/think-and-write-with-leslie-lamport/
https://www.youtube.com/watch?v=RnY5iJea5ww

@ivan
Copy link
Author

ivan commented May 8, 2025

To understand the unknown type, it helps to think about any in terms of assignability. The power and danger of any come from two properties:

  • All types are assignable to the any type.
  • The any type is assignable to all other types. (With the exception of never.)

If we “think of types as sets of values”, the first property means that any is a supertype of all other types, while the second means that it is a subtype. This is strange! It means that any doesn’t fit into the type system, since a set can’t simultaneously be both a subset and a superset of all other sets. This is the source of any’s power but also the reason it’s problematic. Since the type checker is set based, the use of any effectively disables it.

The unknown type is an alternative to any that does fit into the type system. It has the first property (any type is assignable to unknown) but not the second (unknown is only assignable to unknown and, of course, any). It’s known as a “top” type since it’s at the top of the type hierarchy. The never type is the opposite: it has the second property (can be assigned to any other type) but not the first (no other type can be assigned to never). It’s known as a “bottom” type.

Effective TypeScript

@ivan
Copy link
Author

ivan commented May 8, 2025

I have to admit that I have a suspicion that people who can’t express themselves clearly in writing also aren’t going to be very good at structuring their ideas in code. To me, these abilities are closely correlated.

https://bsky.app/profile/janstette.bsky.social/post/3lon6tix6a22q

@ivan
Copy link
Author

ivan commented May 8, 2025

I came to realize something which I should have realized earlier: what I realized is that what we makes stands testament to who we are.

https://www.youtube.com/watch?v=wLb9g_8r-mE Jony Ive

@ivan
Copy link
Author

ivan commented May 9, 2025

Experimental spending on even probabilistic improvements builds up so much value over time.

https://x.com/RomeoStevens76/status/1920937194614571475

@ivan
Copy link
Author

ivan commented May 9, 2025

Importing types without type keyword

Due to the nature of type stripping, the type keyword is necessary to correctly strip type imports. Without the type keyword, Node.js will treat the import as a value import, which will result in a runtime error. The tsconfig option [verbatimModuleSyntax][] can be used to match this behavior.

https://github.com/nodejs/node/blob/daced4ab98be82953ef2fa73e0f81e2b1967be8b/doc/api/typescript.md

@ivan
Copy link
Author

ivan commented May 10, 2025

a simple truth: a lot of current RL research is to translate fuzzy, subjective real-world tasks into objective and unhackable rewards that you can reliably optimize during training

https://x.com/karinanguyen_/status/1921348292694167672

@ivan
Copy link
Author

ivan commented May 11, 2025

Mentor (from Greek Μέντωρ) is cognate to Sanskrit mantṛ, a wise & trusted counselor or teacher.

Similar to iatrogenic harm through medical error & negligence, there is pedagogic & mystagogic harm through failing to teach the primacy & the art of asking questions.

https://x.com/hokaisobol/status/1293919065313026048

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment