These are my personal notes on programming & computing things.
You will often find my notes and summaries alongside links to articles in the many Markdown files in this repo. This README.md
also includes lists of resources that I have found useful.
I maintain similar collections on reinforcement learning and machine learning.
Hidden inside these notes are are the content for a few courses:
Other highlgihts are the memes.
Listen to Wikipedia - real-time visualization and sonification of Wikipedia activity.
Offworld Trading Company Soundtrack
Stories of reaching Staff-plus engineering roles
Content Tests @ The Open Buddhist University
cbonsai - a bonsai tree generator that intelligently creates, colors, and positions a bonsai tree.
dorking (how to find anything on the Internet)
practical-tutorials/project-based-learning - Curated list of project-based tutorials.
Writing a Simple Operating System from Scratch
The Compiler Writer Resource Page
The Codeless Code - fables and Kōans for the software engineer.
Good enough practices in scientific computing
progsbase - Flow-Charts of Programming Language Constructs.
Rob Pike's 5 Rules of Programming
Generative Artistry - A range of interactive tutorials, exploring ideas and techniques used in generative art.
cheat.sh - Unified access to the best community driven documentation repositories of the world.
Refactoring.Guru - makes it easy for you to discover everything you need to know about refactoring, design patterns, SOLID principles, and other smart programming topics.
RosettaGit - solutions to the same task in as many different programming languages.
Screenshots from developers & Unix people (2002)
Screenshots from developers: 2002 vs. 2015
At what time of day do famous programmers work?
The challenges of teaching software engineering
Honeypot documentaries:
List of software development philosophies - Wikipedia, including Rubber duck debugging.
dwmkerr/hacker-laws - Laws, Theories, Principles and Patterns that developers will find useful.
Lehman's laws of software evolution
Richard Hamming - You and Your Research Lecture
The Architecture of Open Source Applications - Architects look at thousands of buildings during their training, and study critiques of those buildings written by masters. In contrast, most software developers only ever get to know a handful of large programs well—usually programs they wrote themselves—and never study the great programs of history. As a result, they repeat one another's mistakes rather than building on one another's successes.
Software Development Waste - Hacker News discussion
Do call yourself a programmer, and other career advice
Don't Call Yourself A Programmer, And Other Career Advice
What every computer science major should know
The Man Who Killed Google Search
The Tyranny of Spreadsheets | Tim Harford
DeepDream: How Alexander Mordvintsev Excavated the Computer’s Hidden Layers
The Secret Auction That Set Off the Race for AI Supremacy
The messy, secretive reality behind OpenAI’s bid to save the world
Overlooked No More: Alan Turing, Condemned Code Breaker and Computer Visionary
[The Friendship That Made Google Huge - Jeff Dean and Sanjay Ghemawat](https://www.new yorker.com/magazine/2018/12/10/the-friendship-that-made-google-huge)
How Data (and Some Breathtaking Soccer) Brought Liverpool to the Cusp of Glory
A Unicorn Lost in the Valley, Evernote Blows Up the ‘Fail Fast’ Gospel
Cities: Skylines is Turing Complete
How Notion pulled itself back from the brink of failure
Don't Learn to Code - Learn to Automate - DaedTech
Falsehoods CS Students (Still) Believe Upon Graduating
Falsehoods Programmers Believe About Falsehoods Lists
5 Computer Science Papers That Changed How I Write Code
5 Famous Programming Quotes, Explained
new codebase, who dis? (How to Join a Team and Learn a Codebase) - Samuel Taylor
Zach Alberico - How To Become A Hacker
Dev tools: The ex-Googler guide
charity.wtf - technology, databases, startups, engineering management, and whiskey.
- The hacker's guide to uncertainty estimates
- Building a data team at a mid-stage startup: a short story
- Software infrastructure 2.0: a wishlist
Structure and Interpretation of Computer Programmers
- Tools You Should Know About: direnv
- Tools You Should Know About: nix-shell
- Tools You Should Know About: jq
Nicolas Loizeau
- Essays on programming I think about a lot
- Attention is your scarcest resource
- My favorite essays of life advice | benkuhn.net
- You don't need to work on hard problems
- Streaming for Data Scientists
- What we look for in a resume
- 7 reasons not to join a startup and 1 reason to
- Building LLM applications for production
- Advantages of Monorepos
- In defense of simple architectures
- Some programming blogs to consider reading
- Big companies v. startups
Visualize Today - Small Multiples
- Think in Tradeoffs - most engineering decisions as tradeoffs — not good choices versus bad choices.
- Pierce the Abstraction Wall - soft versus hard interfaces
- Don't Write Code
- Read Code
- The User is King (And Not)
- Everything I googled in a week as a senior software engineer
- Everything I googled in a week as a professional software engineer
- Start at the beginning: the importance of learning the basics
- Burnout, a cautionary tale (and a plea to take a break)
- Give yourself a break: lessons from burnout
- A terrible schema from a clueless programmer HN Discussion
- Tasks, lists, and promises
- One way a builder culture can fail
- An incomplete list of complaints about real code
- Unfortunate things about performance reviews
- (A few) Ops Lessons We All Learn The Hard Way
- Consistent Tools
- Writing Shell Scripts
- Industry vs Academia
- Sources of Complexity: Constraints,
- Clever vs Insightful Code
- What engineering can teach (and learn from) us
- Are we really engineers?
- The Hard Part of Learning a Language
- Don't ask if a monorepo is good for you – ask if you're good enough for a monorepo
- Evil tip: avoid "easy" things
- Love thy coworker; thy work, not necessarily
- Things from Python I'd miss in Go
- Engineers vs managers: economics vs business
- The cardinal programming jokes
The Clean Code Blog - Robert C. Martin (Uncle Bob)
koaning.io - Vincent D. Warmerdam
- The Future of Data Science is Past
- Outliers: Selection vs. Detection
- Bad Labels
- Introduction to Inference
The A-Z of Programming Languages
History of Infra as Code - talk about history of cloud services, Docker etc
History of Programming Language Conference
An opinionated history of programming languages
Is It Time to Rewrite the Operating System in Rust? - Bryan Cantrill - 2018
Why Isn't Functional Programming the Norm? – Richard Feldman - 2019
Why does "=" mean assignment? - Hillel Wayne
CSE 20289 - Systems Programming
codecrafters-io/build-your-own-x - master programming by recreating your favorite technologies from scratch.
Opinionated Guides on Engineering
Open Source Society University - Computer Science
The Good Research Code Handbook
Developer Roadmaps - Python, React, backend, frontend.
6.005 Software Construction - course homepage - notes - introduces fundamental principles and techniques of software development - how to write software that is safe from bugs, easy to understand, and ready for change.
Systematic Program Design - video lectures.
calmcode.io - video tutorials for modern ideas and open source tools (mostly Python)
lines/course-starter-python - course framework for spaCy
./missing-semester - gain proficiency with computing systems (shell, editor, version control) - notes - lecture videos
- Lecture 4: Data Wrangling (2020) - sed
- Lecture 5: Command-line Environment (2020) - tmux, ssh
- Lecture 8: Metaprogramming (2020) - make, testing
- Lecture 9: Security and Cryptography (2020) - hashing
Introduction to Computer Science and Programming in Python - lecture videos - course home page
Teach Yourself Computer Science
Computer Science from the Bottom Up
CS360 -- Systems Programming, and the module on Memory.
hoanhan101/algo: 101+ coding interview problems in Go
A Mind at Play: How Claude Shannon Invented the Information Age
Algorithms to Live By: The Computer Science of Human Decisions - Christian & Griffiths
Command Line Interface Guidelines
Elements of Data Analytic Style
Computer Science from the Bottom Up
Clean Architecture: A Craftsman's Guide to Software Structure and Design - Robert C. Martin
Introduction to High-Performance Scientific Computing - Victor Eijkhout
- Bjarne Stroustrup: C++
- David Patterson: Computer Architecture and Data Storage
- Jim Keller: Moore's Law, Microprocessors, Abstractions, and First Principles
- Jim Keller: The Future of Computing, AI, Life, and Consciousness
- James Gosling: Java, JVM, Emacs, and the Early Days of Computing
- Chris Lattner: The Future of Computing and Programming Languages
- Brian Kernighan: UNIX, C, AWK, AMPL, and Go Programming
- Guido van Rossum: Python
- Richard Karp: Algorithms and Computational Complexity
- Brendan Eich: JavaScript, Firefox, Mozilla, and Brave
- Charles Hoskinson: Cardano
- Jeffrey Shainline: Neuromorphic Computing
Talk Python To Me - Why is Python Slow?
Presentable - how we design and build the products that are shaping our digital future