A collection of programming resources that help me manage my imposter syndrome being paid to program (I have a chemical engineering background).
These are my personal notes - you will often find my notes and summaries alongside links to articles.
I also maintain similar collections on reinforcement learning and machine learning.
Hidden inside these notes are teaching materials:
- the fundamentals of computing,
- the fundamentals of programming,
- an introduction to bash and UNIX,
- a test driven development course.
Listen to Wikipedia - real-time visualization and sonification of Wikipedia activity.
Offworld Trading Company Soundtrack
[Tosca - Suzuki](Tosca - Suzuki)
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
The Honeypot documentaries on Ember.js, Vue.js & GraphQL.
List of software development philosophies - Wikipedia, including Rubber duck debugging.
dwmkerr/hacker-laws - Laws, Theories, Principles and Patterns that developers will find useful.
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
Overlooked No More: Alan Turing, Condemned Code Breaker and Computer Visionary
The Friendship That Made Google Huge - Jeff Dean and Sanjay Ghemawat
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
- 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 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
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)
ines/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.
A Mind at Play: How Claude Shannon Invented the Information Age
Algorithms to Live By: The Computer Science of Human Decisions - Christian & Griffiths
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
Presentable - how we design and build the products that are shaping our digital future