Compare commits

...

46 Commits

Author SHA1 Message Date
Charles-Axel Dein
fb746374ee Add genAI section 2026-04-01 23:05:56 -04:00
Charles-Axel Dein
e5f58679a4 Add fonts 2026-03-31 23:29:48 -04:00
Charles-Axel Dein
2208b01ab7 Add agentic coding section 2026-03-31 09:00:02 -04:00
Charles-Axel Dein
51b357617a Add errors and optimization articles 2026-03-22 20:37:02 -04:00
Charles-Axel Dein
1e2768d74a Add error and simplicity articles 2026-03-04 13:57:36 -08:00
Charles-Axel Dein
7ed526c486 Add decision tree article 2026-03-02 14:41:08 -05:00
Tiago monteiro
3cc2198a6b Update README.md 2026-02-28 16:23:11 -05:00
Charles-Axel Dein
15fd99f584 Add Google SRE 2026-02-08 18:17:24 -05:00
Charles-Axel Dein
c87bc0f3a5 Add typescript-book 2026-01-11 19:11:59 -05:00
Charles-Axel Dein
2f3be06682 Add publishing your work 2026-01-09 08:40:21 -05:00
mattpaulitsch
46233fd5b5 fix dead link to the conjoined triangles of senior-level development
resolves #105
2026-01-04 21:13:36 -05:00
Charles-Axel Dein
7ebffd6b73 Add logging articles 2026-01-04 21:11:42 -05:00
Charles-Axel Dein
ea154311de Add list of links folder 2026-01-04 14:42:55 -05:00
Charles-Axel Dein
d6f158fefb Update pre-commit 2025-12-23 19:09:43 -05:00
Charles-Axel Dein
42e1e99cf9 Add CUPID article 2025-12-23 19:02:52 -05:00
Charles-Axel Dein
49c818a122 Add microservice articloe 2025-12-12 21:26:02 -05:00
Charles-Axel Dein
85b027fbc3 Add resiliency article 2025-12-06 13:59:27 -05:00
Charles-Axel Dein
517f30b511 Add books 2025-12-04 09:06:04 -05:00
Charles-Axel Dein
b948b4d5e4 Add Python data science handbook 2025-12-04 09:04:11 -05:00
Charles-Axel Dein
0abc343c25 Add distributed systems challenges 2025-11-10 08:47:12 -05:00
Charles-Axel Dein
16b3a618e6 Add good taste article 2025-10-27 08:56:55 -04:00
Charles-Axel Dein
46154ecb91 Improve patterns 2025-10-19 23:14:01 -04:00
Charles-Axel Dein
e3fe54f383 Improve circuit breaker docs 2025-10-14 14:28:55 -04:00
Charles-Axel Dein
2c204adb20 Add Ikea algo 2025-10-12 22:24:19 -04:00
Bartłomiej Szwej
65e300a92c Add Tech Talks Weekly 2025-10-06 22:31:14 -04:00
Julien Le Dem
1a582b6c98 fix dead link 2025-10-06 22:30:10 -04:00
Charles-Axel Dein
e9a9e59944 Add being good isn't enough 2025-09-21 21:22:52 -04:00
Charles-Axel Dein
4fbd8ef7a8 Fix introduction to SQL link 2025-09-08 09:48:49 -04:00
Charles-Axel Dein
af63e5fecb Add cognitive load 2025-09-01 11:46:24 -04:00
Charles-Axel Dein
c6cb182e0f Add BigO visualizations 2025-08-31 21:53:24 -04:00
Charles-Axel Dein
2aaf71499d Fix broken link 2025-08-11 00:03:34 +02:00
Charles-Axel Dein
c1d08be255 Add writing article 2025-08-10 23:45:41 +02:00
Anil Sangwa
03076e5f1e chore: updated EbookFoundation link
However if you wish to redirect to en specific , it can be changed to https://github.com/EbookFoundation/free-programming-books/blob/main/books/free-programming-books-en.md
2025-08-10 23:45:16 +02:00
Charles-Axel Dein
54e127eb64 Add incidents metrics 2025-08-03 22:57:27 +02:00
Charles-Axel Dein
2041382a4e Add article about type system 2025-07-28 11:41:27 +02:00
Charles-Axel Dein
c161c0f3a1 Add schemas 2025-07-12 19:05:03 +02:00
Charles-Axel Dein
2ca3dfd6cf Add expert generalists 2025-07-07 08:48:21 -04:00
Charles-Axel Dein
9a5d23500c Add exercises 2025-06-29 23:09:43 -04:00
Charles-Axel Dein
5421d05e9c Add How I read 2025-06-23 09:06:14 -04:00
Charles-Axel Dein
6a841ddc6c Add data analysis 2025-06-15 21:46:13 -04:00
Charles-Axel Dein
910fd63178 Add rate limiting guide 2025-06-08 22:58:54 -04:00
Charles-Axel Dein
3895b7638b Add reinvent the wheel 2025-05-31 12:10:58 -04:00
Charles-Axel Dein
32da4a9441 Add severity levels 2025-05-18 18:23:18 -04:00
Charles-Axel Dein
0307b785ed Add YAGRI 2025-05-11 21:41:59 -04:00
Charles-Axel Dein
b22e7779af Add AWS well-architected framework 2025-04-06 22:06:25 -04:00
Charles-Axel Dein
03b4f0125f Add high-agency page 2025-03-30 17:43:45 -04:00
4 changed files with 187 additions and 21 deletions

View File

@@ -1,6 +1,6 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.3.0
rev: v6.0.0
hooks:
- id: check-yaml
- id: end-of-file-fixer

194
README.md
View File

@@ -15,6 +15,7 @@
- [Courses](#courses)
- [Topics](#topics)
- [Accounting](#accounting)
- [Agentic coding](#agentic-coding)
- [Algorithm and data structures](#algorithm-and-data-structures)
- [API design & development](#api-design--development)
- [Attitude, habits, mindset](#attitude-habits-mindset)
@@ -39,7 +40,9 @@
- [Compilers](#compilers)
- [Configuration](#configuration)
- [Continuous Integration (CI)](#continuous-integration-ci)
- [Data analysis & data science](#data-analysis--data-science)
- [Databases](#databases)
- [Internals](#internals)
- [NoSQL](#nosql)
- [Postgres](#postgres)
- [Data formats](#data-formats)
@@ -60,8 +63,10 @@
- [Engineering management](#engineering-management)
- [Exercises](#exercises)
- [Experimentation](#experimentation)
- [Fonts](#fonts)
- [Functional programming (FP)](#functional-programming-fp)
- [Games development](#games-development)
- [Generative AI](#generative-ai)
- [Graphics](#graphics)
- [Hardware](#hardware)
- [HTTP](#http)
@@ -112,6 +117,7 @@
- [Feature flags](#feature-flags)
- [Testing in production](#testing-in-production)
- [Reliability](#reliability)
- [Integration patterns (dependency management)](#integration-patterns-dependency-management)
- [Resiliency](#resiliency)
- [Search](#search)
- [Security](#security)
@@ -185,7 +191,7 @@ There are some free books available, including:
- 📖 [Professional software development](http://mixmastamyk.bitbucket.io/pro_soft_dev/): pretty complete and a good companion to this page. The free chapters are mostly focused on software development processes: design, testing, code writing, etc. - and not so much about tech itself.
- 🧰 [vhf/free-programming-books](https://github.com/vhf/free-programming-books)
- 🧰 [EbookFoundation/free-programming-books](https://github.com/EbookFoundation/free-programming-books/blob/master/books/free-programming-books.md)
- 🧰 [EbookFoundation/free-programming-books](https://github.com/EbookFoundation/free-programming-books/tree/main/books)
## Must-read articles
@@ -256,6 +262,26 @@ There are some free books available, including:
- Waste 10 weeks of wages on cloud costs.
- Waste 400 hours of engineering on bad architecture.
- Incur 400 hours of bug triage.
- [A Bunch of Programming Advice I'd Give To Myself 15 Years Ago](https://mbuffett.com/posts/programming-advice-younger-self/)
- If you (or your team) are shooting yourselves in the foot constantly, fix the gun
- Assess the trade-off youre making between quality and pace, make sure its appropriate for your context
- Spending time sharpening the axe is almost always worth it
- If you cant easily explain why something is difficult, then its incidental complexity, which is probably worth addressing
- Try to solve bugs one layer deeper
- Dont underestimate the value of digging into history to investigate some bugs
- Bad code gives you feedback, perfect code doesnt. Err on the side of writing bad code
- Make debugging easier
- When working on a team, you should usually ask the question
- Shipping cadence matters a lot. Think hard about what will get you shipping quickly and often
- [Expert Generalists](https://martinfowler.com/articles/expert-generalist.html), martinfowler.com, proposes an interesting take on the "T-shaped engineer"
- The Characteristics of an Expert Generalist: Curiosity, Collaborativeness, Customer Focus, Favor Fundamental Knowledge, Blend of Generalist and Specialist Skills, Sympathy for Related Domains
- Assessing Expert Generalists: hiring and career progression
- Growing Expert Generalists: From Tools to Fundamentals
- "Why does our attention keep drifting toward tool expertise? It isn't because people are shortsighted or lazy; it's because the fundamentals are hard to see amid the noise."
- Expert Generalists still need Specialists
- Expert Generalists in the Age of LLMs
- "Similarly to a specialist, an LLM can rapidly answer questions that an Expert Generalist will have when working in a new domain."
- "Rather than looking for “the answer”, they prompt them to generate questions, explaining mechanisms, and providing examples and even tools that help explore the underlying mechanisms of an idea."
## Other general material and list of resources
@@ -265,8 +291,9 @@ There are some free books available, including:
### Books
- [The Imposter's Handbook](https://bigmachine.io/products/the-imposters-handbook) - \$30. From the author: "Don't have a CS Degree? Neither do I - That's why I wrote this book."
- [The Computer Science Book](https://thecomputersciencebook.com/book/)
- 📖 [The Imposter's Handbook](https://bigmachine.io/products/the-imposters-handbook) - \$30. From the author: "Don't have a CS Degree? Neither do I - That's why I wrote this book."
- 📖 [The Computer Science Book](https://thecomputersciencebook.com/book/)
- 📖 [The Software Engineer's Guidebook](https://www.engguidebook.com/): Gergely Orosz's guidebook to the software engineering industry. Extremely complete.
### Articles
@@ -294,6 +321,7 @@ There are some free books available, including:
- Helps you to be strategic in your interaction with people in that role
- [Teach Yourself Programming in Ten Years](https://norvig.com/21-days.html)
- [Mistakes You Apparently Just Have to Make Yourself](https://medium.com/@mcfunley/mistakes-you-apparently-just-have-to-make-yourself-cc2dd2bfc25c)
- [The Best Programmers I Know](https://endler.dev/2025/best-programmers/)
### Axioms
@@ -329,10 +357,14 @@ There are some free books available, including:
- [Engineers Do Not Get To Make Startup Mistakes When They Build Ledgers](https://news.alvaroduran.com/p/engineers-do-not-get-to-make-startup)
### Agentic coding
- [Anatomy of the .claude/ Folder](https://blog.dailydoseofds.com/p/anatomy-of-the-claude-folder)
### Algorithm and data structures
- Read the [CLRS](https://mitpress.mit.edu/books/introduction-algorithms). You can watch and download the course on [OCW](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/) - there are newer courses as well.
- Or [The Algorithm Design Manual](https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202?ie=UTF8&qid=1297127794&ref_=sr_1_1&sr=8-1)
- Or [The Algorithm Design Manual](https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202?ie=UTF8&qid=1297127794&ref_=sr_1_1&sr=8-1) (Skiena)
- Try out some algorithms on [Project Euler](https://projecteuler.net/)
- [CS 61B Spring 2023](https://sp23.datastructur.es/)
@@ -340,7 +372,7 @@ Other resources:
- [Algorithms](http://jeffe.cs.illinois.edu/teaching/algorithms/), Jeff Erickson
Let's be honest: algorithms can be a pretty dry topic. [This quora question](https://www.quora.com/Is-there-a-book-that-teaches-algorithms-data-structures-and-other-computer-science-basics-in-a-fun-way) lists some funnier learning alternative, including:
Here are some useful & interesting algo & DS visualizations:
- [Grokking Algorithms](https://www.amazon.com/dp/1617292230/ref=cm_sw_su_dp)
- [Essential Algorithms](https://www.amazon.com/Essential-Algorithms-Practical-Approach-Computer/dp/1118612108?ie=UTF8&*Version*=1&*entries*=0)
@@ -349,6 +381,9 @@ Let's be honest: algorithms can be a pretty dry topic. [This quora question](htt
- [Hashing](https://samwho.dev/hashing/)
- [Visualizing Algorithms](https://bost.ocks.org/mike/algorithms/)
- [B-trees and database indexes](https://planetscale.com/blog/btrees-and-database-indexes)
- [Big O visualizations](https://samwho.dev/big-o/)
- [Algorithm explained like Ikea instructions](https://idea-instructions.com/)
- [Decision Trees](https://mlu-explain.github.io/decision-tree/)
Example implementations:
@@ -447,6 +482,8 @@ More specific topics:
- Improve your coding environment
- [Advice for new software devs who've read all those other advice essays](https://buttondown.email/hillelwayne/archive/advice-for-new-software-devs-whove-read-all-those/)
- [Microservices aren't the problem. Incompetent people are](https://nondv.wtf/blog/posts/microservices-arent-the-problem-incompetent-people-are.html)
- [High Agency](https://www.highagency.com/) (30-min read)
- [What is "good taste" in software engineering?](https://www.seangoedecke.com/taste/): it's all about contextual tradeoff.
> Imposter syndrome is underrated: a lot of talk goes into overcoming imposter syndrome. I say embrace self-skepticism and doubt yourself every day. In a fast-moving industry where lots of your knowledge expires every year, even the most junior people around you constantly cook up skills you don't have; you stay competitive by applying with the determination (and even fear) of the novice. The upside of this treadmill is that every engineer is on it: just because you're an imposter doesn't mean that other people are more deserving than you, because they're imposters too. You should advocate for yourself, take risks, pat yourself on the back when things go well, and, as you start to build a track record of solving problems, trust your skills and adaptability. Just make no mistake: you're only as good as the last problem you solve.
@@ -495,7 +532,7 @@ Dan Heller, Building a Career in Software
Biases don't only apply to hiring. For instance, the fundamental attribution bias also applies when criticizing somebody's code written a long time ago, in a totally different context.
- [Cognitive bias cheat sheet](https://betterhumans.coach.me/cognitive-bias-cheat-sheet-55a472476b18#.6temb6hyg). #hiring
- [Cognitive bias cheat sheet](https://buster.medium.com/cognitive-bias-cheat-sheet-55a472476b18). #hiring
### Business
@@ -517,7 +554,7 @@ Biases don't only apply to hiring. For instance, the fundamental attribution bia
### Career growth
- [The Conjoined Triangles of Senior-Level Development](http://frontside.io/blog/2016/07/07/the-conjoined-triangles-of-senior-level-development.html) looks into how to define a senior engineer.
- [The Conjoined Triangles of Senior-Level Development](https://frontside.com/blog/2016-07-07-the-conjoined-triangles-of-senior-level-development) looks into how to define a senior engineer.
- [Ten Principles for Growth as an Engineer](https://medium.com/@daniel.heller/ten-principles-for-growth-69015e08c35b), Dan Heller.
- [Don't Call Yourself a Programmer](https://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/), Patrick McKenzie.
- [On being an Engineering Manager](https://nickmchardy.com/2019/02/on-being-an-engineering-manager.html)
@@ -579,6 +616,15 @@ Biases don't only apply to hiring. For instance, the fundamental attribution bia
- [Senior Engineers are Living in the Future](https://www.zerobanana.com/essays/living-in-the-future/)
- [What would a map of your career look like?](https://tomcritchlow.com/2023/04/26/career-maps/)
- [How to be successful at Amazon (or any other large company for that matter)](https://www.reddit.com/r/cscareerquestions/comments/4x0ugj/how_to_be_successful_at_amazon_or_any_other_large/)
- [Being good isnt enough](https://joshs.bearblog.dev/being-good-isnt-enough/)
- The biggest gains come from combining disciplines.
- [Stop Avoiding Politics](https://terriblesoftware.org/2025/10/01/stop-avoiding-politics/) is a good contrarian take on the current (negative) connotation of the word "politics".
- In a way, it is unfortunate that "politics" got that connotation since Aristotle rightfully considered politics the highest form of practical wisdom, since it has to do with humans as social animals.
- "Good politics is just being strategic about relationships and influence in the service of good outcomes."
- Examples: building relationships before you need them, understanding the incentives, managing up effectively, creating win-win situation, being visible.
- "The alternative to good politics isnt no politics. Its bad politics winning by default. Its the loud person whos wrong getting their way because the quiet person whos right wont speak up."
- [21 Lessons from 14 Years at Google](https://addyo.substack.com/p/21-lessons-from-14-years-at-google)
- [Publishing your work increases your luck](https://github.com/readme/guides/publishing-your-work)
About senior engineers:
@@ -664,6 +710,8 @@ About senior engineers:
- [kettanaito/naming-cheatsheet](https://github.com/kettanaito/naming-cheatsheet): : comprehensive language-agnostic guidelines on variables naming. Home of the A/HC/LC pattern.
- 🧰 [Quality Engineering Guides](https://qeunit.com/guides/)
- [What Makes Code Hard To Read: Visual Patterns of Complexity](https://seeinglogic.com/posts/visual-readability-patterns/)
- [zakirullin/cognitive-load: 🧠 Cognitive Load is what matters](https://github.com/zakirullin/cognitive-load)
- [How to create software quality](https://lethain.com/quality/)
### Communication
@@ -695,6 +743,15 @@ See also the Writing section
- [Continuous Integration](https://martinfowler.com/articles/continuousIntegration.html), MartinFowler.com
### Data analysis & data science
- [Ways to make fake data look meaningful](https://danbirken.com/statistics/2013/11/19/ways-to-make-fake-data-look-meaningful.html)
- Dont share the raw data
- Dont share your methodology
- Dont include confidence intervals
- Dont challenge your own data
- 📖 [Python Data Science Handbook](https://jakevdp.github.io/PythonDataScienceHandbook/), O'Reilly
### Databases
See also the SQL section.
@@ -702,16 +759,24 @@ See also the SQL section.
- [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem)
- [PACELC theorem](https://en.wikipedia.org/wiki/PACELC_theorem): "in case of network partitioning (P) in a distributed computer system, one has to choose between availability (A) and consistency (C) (as per the CAP theorem), but else (E), even when the system is running normally in the absence of partitions, one has to choose between latency (L) and consistency (C)."
- [Zero downtime database migrations](https://blog.rainforestqa.com/2014-06-27-zero-downtime-database-migrations/) (code examples are using Rails but this works great for any programming language)
- [Algorithms Behind Modern Storage Systems](https://queue.acm.org/detail.cfm?id=3220266), ACM Queue
- [Let's Build a Simple Database](https://cstack.github.io/db_tutorial/)
- [Readings in Database Systems, 5th Edition](http://www.redbook.io/)
- [Comparing database types: how database types evolved to meet different needs](https://dataguide.prisma.io/intro/comparing-database-types)
- [How does a relational database work](http://coding-geek.com/how-databases-work/)
- [Use the index, Luke](https://use-the-index-luke.com/)
- [Course introduction — MySQL for Developers](https://planetscale.com/learn/courses/mysql-for-developers/introduction/course-introduction), PlanetScale
- [How Query Engines Work](https://howqueryengineswork.com/00-introduction.html)
- [Why you should probably be using SQLite | Epic Web Dev](https://www.epicweb.dev/why-you-should-probably-be-using-sqlite)
Scaling databases:
- [How Figma's Databases Team Lived to Tell the Scale](https://www.figma.com/blog/how-figmas-databases-team-lived-to-tell-the-scale/): interesting story about sharding
#### Internals
- [How Query Engines Work](https://howqueryengineswork.com/00-introduction.html)
- [Let's Build a Simple Database](https://cstack.github.io/db_tutorial/)
- [Algorithms Behind Modern Storage Systems](https://queue.acm.org/detail.cfm?id=3220266), ACM Queue
- [sorted string tables (SST) from first principles](https://www.bitsxpages.com/p/sorted-string-tables-sst-from-first)
#### NoSQL
- [NOSQL Patterns](http://horicky.blogspot.nl/2009/11/nosql-patterns.html)
@@ -728,10 +793,15 @@ See also the SQL section.
- [Transaction Isolation in Postgres, explained](https://www.thenile.dev/blog/transaction-isolation-postgres)
- [PostgreSQL exercises](https://pgexercises.com/)
- [Postgres operations cheat sheet](https://wiki.postgresql.org/wiki/Operations_cheat_sheet)
- [Just use Postgres](https://mccue.dev/pages/8-16-24-just-use-postgres)
- [Postgres is Enough](https://gist.github.com/cpursley/c8fb81fe8a7e5df038158bdfe0f06dbb)
- [Postgres: don't Do This](https://wiki.postgresql.org/wiki/Don't_Do_This)
- [PostgreSQL and UUID as primary key](https://maciejwalkowiak.com/blog/postgres-uuid-primary-key/)
- [Postgres lock explained](https://postgreslocksexplained.com/)
"Just use postgres":
- [Just use Postgres](https://mccue.dev/pages/8-16-24-just-use-postgres)
- [Postgres is Enough](https://gist.github.com/cpursley/c8fb81fe8a7e5df038158bdfe0f06dbb)
- [Its 2026, Just Use Postgres](https://www.tigerdata.com/blog/its-2026-just-use-postgres)
### Data formats
@@ -741,9 +811,12 @@ See also the SQL section.
- [Falsehoods Programmers Believe About Names](https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/)
- [kdeldycke/awesome-falsehood](https://github.com/kdeldycke/awesome-falsehood): falsehoods programmers believe in
- [Understanding UUIDs, ULIDs and String Representations](https://sudhir.io/uuids-ulids)
- [Falsehoods Programmers Believe About Falsehoods Lists](https://kevin.deldycke.com/2016/12/falsehoods-programmers-believe-about-falsehoods-lists/)
- [Falsehoods Programmers Believe About Falsehoods Lists](https://kevin.deldycke.com/2016/falsehoods-programmers-believe-about-falsehoods-lists)
- [Australia/Lord_Howe is the weirdest timezone](https://ssoready.com/blog/engineering/truths-programmers-timezones/)
- [A love letter to the CSV format](https://github.com/medialab/xan/blob/master/docs/LOVE_LETTER.md)
- [Falsehoods Programmers Believe About Aviation](https://flightaware.engineering/falsehoods-programmers-believe-about-aviation/)
- [Schemas - Schema.org](https://schema.org/docs/schemas.html)
- [ZIP Code First](https://zipcodefirst.com/)
### Data science/data engineering
@@ -804,6 +877,7 @@ Also see the Incident Response section in this doc
- [David A. Wheeler's Review of "Debugging" by David J. Agans](https://dwheeler.com/essays/debugging-agans.html)
- [Troubleshooting: The Skill That Never Goes Obsolete](https://www.autodidacts.io/troubleshooting/)
- Includes links to interesting debugging stories
- [Falsehoods software teams believe about user feedback](https://thoughtbot.com/blog/falsehoods-software-teams-believe-about-user-feedback)
### Design (visual, UX, UI, typography)
@@ -826,6 +900,7 @@ Articles :
- Help Users Recognize, Diagnose, And Recover From Errors
- [How to pick more beautiful colors for your data visualizations](https://blog.datawrapper.de/beautifulcolors/)
- [Visual design rules you can safely follow every time](https://anthonyhobday.com/sideprojects/saferules/)
- [Malleable software: Restoring user agency in a world of locked-down apps](https://www.inkandswitch.com/essay/malleable-software/)
Typograhy: see "Typography" section
@@ -889,6 +964,16 @@ Articles:
- DDD is about problem space, not about solution space.
- Familiarity is not the same as simplicity
- The more mental models there are to learn, the longer it takes for a new developer to deliver value.
- [CUPID: for joyful coding](https://dannorth.net/blog/cupid-for-joyful-coding/)
- Composable: plays well with others
- Unix philosophy: does one thing well
- Predictable: does what you expect
- Idiomatic: feels natural
- Domain-based: the solution domain models the problem domain in language and structure
- [Nobody Gets Promoted for Simplicity](https://terriblesoftware.org/2026/03/03/nobody-gets-promoted-for-simplicity/)
> “Simplicity is a great virtue, but it requires hard work to achieve and education to appreciate. And to make matters worse, complexity sells better.”
> — Edsger Dijkstra
> You can use an eraser on the drafting table or a sledge hammer on the construction site. (Frank Lloyd Wright)
@@ -904,6 +989,7 @@ Resources:
- Never store full addresses in a single field
- Never store firstname and lastname in the same field
- Establish conventions for table and field names.
- [YAGRI: You are gonna read it](https://www.scottantipa.com/yagri): store `created_at`, `created_by` etc.
#### Design: patterns
@@ -1055,6 +1141,7 @@ Checkout my [list of management resources](https://github.com/charlax/engineerin
The best way to learn is to learn by doing.
- [Reinvent the Wheel](https://endler.dev/2025/reinvent-the-wheel/)
- [build-your-own-x](https://github.com/codecrafters-io/build-your-own-x): compilation of well-written, step-by-step guides for re-creating our favorite technologies from scratch
- Richard Feynman: "what I cannot create, I do not understand"
- [The elevator programming game](http://play.elevatorsaga.com/)
@@ -1067,6 +1154,8 @@ The best way to learn is to learn by doing.
- [A list of programming playgrounds](https://jvns.ca/blog/2023/04/17/a-list-of-programming-playgrounds/), Julia Evans
- [Write more "useless" software](https://ntietz.com/blog/write-more-useless-software/)
- [SadServers - Linux & DevOps Troubleshooting Interviews](https://sadservers.com/)
- [Writing Toy Software Is A Joy](https://blog.jsbarretto.com/post/software-is-joy)
- [Fly.io Distributed Systems Challenge "Gossip Glomers"](https://fly.io/dist-sys/)
Practice:
@@ -1078,6 +1167,10 @@ Practice:
- [8 annoying A/B testing mistakes every engineer should know](https://posthog.com/blog/ab-testing-mistakes)
### Fonts
- [GitHub Monaspace Case Study](https://lettermatic.com/custom/monaspace-case-study)
### Functional programming (FP)
- [Goodbye, Object Oriented Programming](https://medium.com/@cscalfani/goodbye-object-oriented-programming-a59cda4c0e53#.39ax09e4k)
@@ -1105,6 +1198,10 @@ Practice:
- [Introduction · Joys of Small Game Development](https://abagames.github.io/joys-of-small-game-development-en/)
### Generative AI
- [Don't Let AI Write For You](https://alexhwoods.com/dont-let-ai-write-for-you/)
### Graphics
- [Text Rendering Hates You](https://faultlore.com/blah/text-hates-you/)
@@ -1158,6 +1255,7 @@ Also see the Debugging section in this doc.
- Team knowledge elicitation
- Asking the question, “Why do we have on-call?”
- Spin the Wheel of Expertise!
- [Severity Levels](https://response.pagerduty.com/before/severity_levels/), PagerDuty
Alerting:
@@ -1230,6 +1328,7 @@ Note: this is about you as an interviewee, **not** as an interviewer. To check o
- [Preparing for the Systems Design and Coding Interview](https://blog.pragmaticengineer.com/preparing-for-the-systems-design-and-coding-interviews/), Gergely Orosz
- [What I Learned from Doing 60+ Technical Interviews in 30 Days](https://meekg33k.dev/what-i-learned-from-doing-60-technical-interviews-in-30-days)
- [System Design Interview Guide for Senior Engineers](https://interviewing.io/guides/system-design-interview), interviewing.io
- [noamseg/interview-coach-skill](https://github.com/noamseg/interview-coach-skill): a Claude Code-based interview coach
Questions you should ask:
@@ -1391,6 +1490,7 @@ Richard Feynman's Learning Strategy:
- [Welcome to Linux command line for you and me!](https://lym.readthedocs.io/en/latest/index.html)
- [Linux Performance](https://www.brendangregg.com/linuxperf.html), Brendan Gregg
- [Linux disk I/O diagram](https://zenodo.org/records/15234151)
### Low-code/no-code
@@ -1415,6 +1515,7 @@ Richard Feynman's Learning Strategy:
- [Transformers from Scratch](https://e2eml.school/transformers.html)
- [A Gentle Introduction to Graph Neural Networks](https://distill.pub/2021/gnn-intro/)
- [The Math Behind Artificial Intelligence](https://www.freecodecamp.org/news/the-math-behind-artificial-intelligence-book) - Tiago Monteiro. Covers linear algebra, calculus, probability, and optimization theory in the context of AI and machine learning.
### Math
@@ -1448,6 +1549,8 @@ _See also: [Site Reliability Engineering (SRE)](#site-reliability-engineering-sr
- [Logging - OWASP Cheat Sheet Series](https://cheatsheetseries.owasp.org/cheatsheets/Logging_Cheat_Sheet.html)
- [The Audit Log Wall of Shame](https://audit-logs.tax/): list of vendors that dont prioritize high-quality, widely-available audit logs for security and operations teams.
- [Guide on Structured Logs](https://signoz.io/blog/structured-logs/)
- [What an error log level should mean](https://utcc.utoronto.ca/~cks/space/blog/programming/ErrorsShouldRequireFixing)
- [Logging Sucks - Your Logs Are Lying To You](https://loggingsucks.com/)
#### Error/exception handling
@@ -1458,6 +1561,8 @@ _See also: [Site Reliability Engineering (SRE)](#site-reliability-engineering-sr
- Write clearly
- [Errors, Errors Everywhere: How We Centralized and Structured Error Handling](https://olivernguyen.io/w/namespace.error/) (for Go, but useful for any languages)
- For inspiration: [Handle Errors - Graph API](https://developers.facebook.com/docs/graph-api/guides/error-handling#receiving-errorcodes)
- [The Error Model](https://joeduffyblog.com/2016/02/07/the-error-model/), Joe Duffy, 2016.
- [The Product-Minded Engineer: The importance of good errors and warnings](https://newsletter.pragmaticengineer.com/p/the-product-minded-engineer?publication_id=458709&r=4qowh)
#### Metrics
@@ -1537,6 +1642,16 @@ _See also: [Site Reliability Engineering (SRE)](#site-reliability-engineering-sr
- [Performance comparison: counting words in Python, Go, C++, C, AWK, Forth, and Rust](https://benhoyt.com/writings/count-words/): a great way to learn about measuring performance.
- [The Mathematical Hacker](https://www.evanmiller.org/mathematical-hacker.html)
- [Four Kinds of Optimisation](https://tratt.net/laurie/blog/2023/four_kinds_of_optimisation.html)
- [Rob Pike's 5 Rules of Programming](https://www.cs.unc.edu/~stotts/COMP590-059-f24/robsrules.html)
- You can't tell where a program is going to spend its time.
- Measure first.
- If n is small, don't get fancy.
- Fancy algo are buggier.
- Data structures, not algo, are central to programming.
> Premature optimization is the root of all evil.
>
> Donald Knuth
### Personal knowledge management (PKM)
@@ -1548,6 +1663,7 @@ _See also: [Site Reliability Engineering (SRE)](#site-reliability-engineering-sr
- I am seeing evidence that people taught knowledge management for its own sake produce unexciting work.
- [MaggieAppleton/digital-gardeners](https://github.com/MaggieAppleton/digital-gardeners)
- [Notes apps are where ideas go to die. And thats good.](https://www.reproof.app/blog/notes-apps-help-us-forget)
- [I Deleted My Second Brain](https://www.joanwestenberg.com/p/i-deleted-my-second-brain)
### Personal productivity
@@ -1674,6 +1790,11 @@ JavaScript is such a pervasive language that it's almost required learning.
- There was an interesting contrarian take in the [Hacker News thread](https://news.ycombinator.com/item?id=36011599): "Once I relaxed and decided, 'If the stuff in this book is good enough, my brain will keep it FOR me' both my satisfaction AND utility of books increased dramatically."
- [You Are What You Read, Even If You Dont Always Remember It](https://blog.jim-nielsen.com/2024/you-are-what-you-read/)
- "I cannot remember the books I've read any more than the meals I have eaten; even so, they have made me.", Ralp Waldo Emerson
- [How I Read](https://www.robkhenderson.com/p/how-i-read)
- I read pretty slowly. I take notes, I underline, I highlight, I jot my thoughts in the margins, I pause if I encounter an especially interesting passage or idea.
- "Listening to books instead of reading them is like drinking your vegetables instead of eating them"
- “You will not learn anything of lasting importance from TV, movies, podcasts…theyre junk food. Successful people converge on 3 ways to learn: lots of reading time, some exercises and projects, and conversations with people who are slightly ahead of them.”
### Refactoring
@@ -1694,7 +1815,6 @@ JavaScript is such a pervasive language that it's almost required learning.
### Releasing & deploying
- [How we release so frequently](http://engineering.skybettingandgaming.com/2016/02/02/how-we-release-so-frequently/)
- [How to deploy software](https://zachholman.com/posts/deploying-software), Zach Holman
- [BlueGreenDeployment](http://martinfowler.com/bliki/BlueGreenDeployment.html), Martin Fowler
- [Move fast and break nothing](https://zachholman.com/talk/move-fast-break-nothing/), Zach Holman
@@ -1762,8 +1882,10 @@ JavaScript is such a pervasive language that it's almost required learning.
Books:
- 📖 [Site Reliability Engineering](https://landing.google.com/sre/books/)
- 📖 [Site Reliability Engineering](https://landing.google.com/sre/books/), Google
- Written by members of Google's SRE team, with a comprehensive analysis of the entire software lifecycle - how to build, deploy, monitor, and maintain large scale systems.
- 📖 [Incident Metrics in SRE](https://static.googleusercontent.com/media/sre.google/en//static/pdf/IncidentMeticsInSre.pdf), Štěpán Davidovič, Google
- Canonical definition of TTD (Time To Detect) TTM (Mitigate), TTR (Recover), TBF (Time Between Failure)
Quotes:
@@ -1807,6 +1929,16 @@ Resources:
- 🧰 [dastergon/awesome-sre](https://github.com/dastergon/awesome-sre)
- 🧰 [upgundecha/howtheysre](https://github.com/upgundecha/howtheysre): a curated collection of publicly available resources on SRE at technology and tech-savvy organizations
#### Integration patterns (dependency management)
- [Circuit Breaker](https://martinfowler.com/bliki/CircuitBreaker.html) (mentioned in the Release it! book)
- [Making the Netflix API More Resilient](https://netflixtechblog.com/making-the-netflix-api-more-resilient-a8ec62159c2d), Netflix Blog
- 🏙 [Application Resilience Engineering & Operations at Netflix - Speaker Deck](https://speakerdeck.com/benjchristensen/application-resilience-engineering-and-operations-at-netflix)
- [Design Pattern: Circuit Breaker](https://learn.microsoft.com/en-us/azure/architecture/patterns/circuit-breaker), Microsoft Azure
- [Rate limiter algorithms](https://smudge.ai/blog/ratelimit-algorithms) (and their [implementation](https://github.com/upstash/ratelimit-js/blob/main/src/lua-scripts/single.ts))
- [Interactive Guide: Mastering Rate Limiting](https://blog.sagyamthapa.com.np/interactive-guide-to-rate-limiting)
- [Good Retry, Bad Retry: An Incident Story](https://medium.com/yandex/good-retry-bad-retry-an-incident-story-648072d3cee6): insightful, well-written story about retries, circuit breakers, deadline, etc.
#### Resiliency
- 🏙 [The Walking Dead - A Survival Guide to Resilient Applications](https://speakerdeck.com/daschl/the-walking-dead-a-survival-guide-to-resilient-applications)
@@ -1815,6 +1947,7 @@ Resources:
- 🏙 [The 7 quests of resilient software design](https://www.slideshare.net/ufried/the-7-quests-of-resilient-software-design)
- 🧰 [Resilience engineering papers](https://github.com/lorin/resilience-engineering): comprehensive list of resources on resilience engineering
- [MTTR is more important than MTBF (for most types of F)](https://www.kitchensoap.com/2010/11/07/mttr-mtbf-for-most-types-of-f/) (also as a [presentation](https://www.slideshare.net/jallspaw/dev-and-ops-collaboration-and-awareness-at-etsy-and-flickr))
- [Failure is inevitable: learning from a large outage, and building for reliability in depth at Datadog](https://www.datadoghq.com/blog/engineering/rethinking-reliability/)
### Search
@@ -1901,7 +2034,7 @@ List of resources:
- [Lost at SQL](https://lost-at-sql.therobinlord.com/), an SQL learning game
- [Joins 13 Ways](https://justinjaffray.com/joins-13-ways/?a=b)
- [spandanb/learndb-py](https://github.com/spandanb/learndb-py): learn database internals by implementing it from scratch.
- [SQL for the Weary](https://gvwilson.github.io/sql-tutorial/)
- [gvwilson/querynomicon](https://github.com/gvwilson/querynomicon): an Introduction to SQL for the Cautious and Weary
### State
@@ -1944,11 +2077,18 @@ Books:
- 📖 [Building Microservices](https://www.amazon.com/Building-Microservices-Designing-Fine-Grained-Systems/dp/1491950358), Sam Newman (quite complete discussion of microservices)
- 📖 [Designing Data-Intensive Applications](https://dataintensive.net/)
- 📖 [Building Secure and Reliable Systems](https://google.github.io/building-secure-and-reliable-systems/raw/toc.html), Google, (free online). Very complete book.
- Design for security & reliability
- Design tradeoffs
- Design for least privilege
- Design for understandability
- Design for a changing landscape
- Design for resilience
- Design for recovery
Articles:
- [6 Rules of thumb to build blazing fast web server applications](http://loige.co/6-rules-of-thumb-to-build-blazing-fast-web-applications/)
- [The twelve-factor app](http://12factor.net/)
- [Introduction to architecting systems for scale](http://lethain.com/introduction-to-architecting-systems-for-scale/)
- [The Log: What every software engineer should know about real-time data's unifying abstraction](https://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying): one of those classical articles that everyone should read.
@@ -1970,10 +2110,14 @@ Articles:
- BFF (backend for frontend)
- [Backends For Frontends](https://samnewman.io/patterns/architectural/bff/)
- Circuit breaker
- [Rate limiter algorithms](https://smudge.ai/blog/ratelimit-algorithms) (and their [implementation](https://github.com/upstash/ratelimit-js/blob/main/src/lua-scripts/single.ts))
- [Load Balancing](https://samwho.dev/load-balancing/): a visual exploration of load balancing algos
- [Good Retry, Bad Retry: An Incident Story](https://medium.com/yandex/good-retry-bad-retry-an-incident-story-648072d3cee6): insightful, well-written story about retries, circuit breakers, deadline, etc.
- [AWS Well-Architected Framework](https://docs.aws.amazon.com/wellarchitected/latest/framework/welcome.html)
- Operational excellence
- Security
- Reliability
- Performance efficiency
- Cost optimization
- Sustainability
#### Microservices/splitting a monolith
@@ -1992,6 +2136,8 @@ Articles:
- [12 Ways to Prepare your Monolith Before Transitioning to Microservices](https://semaphoreci.com/blog/monolith-microservices)
- [Death by a thousand microservices](https://renegadeotter.com/2023/09/10/death-by-a-thousand-microservices.html)
- [Microservices](https://www.youtube.com/watch?v=y8OnoxKotPQ&ab_channel=KRAZAM)
- [Disasters I've seen in a microservices world](https://world.hey.com/joaoqalves/disasters-i-ve-seen-in-a-microservices-world-a9137a51)
- [You Want Microservices—But Do You Need Them?](https://www.docker.com/blog/do-you-really-need-microservices/), Docker
### Scalability
@@ -2073,6 +2219,8 @@ End-to-end tests:
### Type system
- [Counterexamples in Type Systems](https://counterexamples.org/intro.html): a library of runtime issues that weren't caught by the type system
- [Use Your Type System](https://www.dzombak.com/blog/2025/07/use-your-type-system/)
- Your models should each have their own ID type. Public and even private functions should often avoid dealing in floats or integers alone.
### Typography
@@ -2139,6 +2287,8 @@ Topics:
- [67 Weird Debugging Tricks Your Browser Doesn't Want You to Know](https://alan.norbauer.com/articles/browser-debugging-tricks)
- [Client-Side Architecture Basics](https://khalilstemmler.com/articles/client-side-architecture/introduction/)
- [Web Browser Engineering](https://browser.engineering/index.html): this book explains how to build a basic but complete web browser, from networking to JavaScript, in a couple thousand lines of Python.
- [Don't animate height!](https://www.granola.ai/blog/dont-animate-height)
- [How modern browsers work](https://addyo.substack.com/p/how-modern-browsers-work)
URLs:
@@ -2148,6 +2298,7 @@ URLs:
- A URN is a string of characters that uniquely identifies a resource. Its syntax is `urn:<namespace identifier>:<namespace specific string>`. E.g. `urn:isbn:9780062301239`
- [Examples of Great URL Design](https://blog.jim-nielsen.com/2023/examples-of-great-urls/)
- [Four Cool URLs - Alex Pounds' Blog](https://alexpounds.com/blog/2018/12/29/four-cool-urls)
- [Your URL Is Your State](https://alfy.blog/2025/10/31/your-url-is-your-state.html)
### Writing (communication, blogging)
@@ -2185,6 +2336,8 @@ URLs:
- [7 Common Mistakes in Architecture Diagrams](https://www.ilograph.com/blog/posts/diagram-mistakes/)
- [Why Blog If Nobody Reads It?](https://andysblog.uk/why-blog-if-nobody-reads-it/)
- Blogging forces clarity. It makes you structure your thoughts, sharpen your perspective.
- [Specificity: A weapon of mass effectiveness](https://longform.asmartbear.com/specificity/), A Smart Bear.
- Swap generic words for specifics to make your text clear, powerful, engaging, and even funny.
Guides & classes about technical writing:
@@ -2231,6 +2384,7 @@ Newsletters:
- [Bytes](https://bytes.dev/) (JavaScript)
- [PyCoders](https://pycoders.com/) (Python)
- [Posthog](https://newsletter.posthog.com/)
- [Tech Talks Weekly](https://techtalksweekly.io/)
Blogs:

View File

@@ -0,0 +1,11 @@
---
title: List of AI and LLM learning resources
date: 2026-01-04T14:41:00-05:00
id: 20260104144118
---
# List of AI and LLM learning resources
## Build from scratch
- [Neural Networks: Zero To Hero](https://karpathy.ai/zero-to-hero.html), Andrej Karpathy. Building neural networks, from scratch, in code.

View File

@@ -62,3 +62,4 @@ Image from https://github.com/kamranahmedse/developer-roadmap
- [leonardomso/33-js-concepts](https://github.com/leonardomso/33-js-concepts): 33 JavaScript concepts every developer should know.
- [The Modern JavaScript Tutorial](https://javascript.info/)
- [A slightly sarcastic history of frontend](https://app.daily.dev/posts/a-slightly-sarcastic-history-of-frontend-1ohcpd7uq)
- [gibbok/typescript-book: The Concise TypeScript Book: A Concise Guide to Effective Development in TypeScript. Free and Open Source.](https://github.com/gibbok/typescript-book)