Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Programming Resources

A collection of programming resources, mainly relevant to the work of a data scientist.

These are my personal notes - you will often find my notes and summaries alongside links to articles.

Some of these notes are also used for teaching programming things:

I maintain similar collections on reinforcement learning and machine learning.

Music to Listen to While Programming

Project Audio for GitHub - tracks events happening across GitHub and converts them to music notes.

Listen to Wikipedia - real-time visualization and sonification of Wikipedia activity.


Random Cool Stuff

RosettaGit - solutions to the same task in as many different programming languages as possible

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

Linus Torvalds on C++

Honeypot documentaries:

The Programmers' Stone

List of software development philosophies - Wikipedia

dwmkerr/hacker-laws - Laws, Theories, Principles and Patterns that developers will find useful.

Richard Hamming - You and Your Research - lecture

Monte Carlo Methods

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.

Don't Call Yourself A Programmer, And Other Career Advice

Do call yourself a programmer, and other career advice

Software Development Waste - Hacker News discussion

Building the wrong product

  • product that does not address user business needs
  • not doing research on users or businesses
  • ignoring feedback, low user value features

Mismanaging backlog

  • duplicating work, low value features, delaying bug fixes
  • working on too many features simultaneously, imbalance of feature work and bug fixing, delaying testing or critical bug fixing


  • altering delivered work that should have been done correctly
  • no clear definition of done

Unnecessarily complex solutions

  • a more complicated solution than necessary
  • a missed opportunity to simplify features, user interface, or code
  • unnecessary feature complexity from the user’s perspective
  • unnecessary technical complexity
  • duplicating code, lack of interaction design reuse, overly complex technical design created up-front

Extraneous cognitive load

  • the costs of unneeded expenditure of mental energy
  • suffering from technical debt,
  • inefficient tools and problematic APIs, libraries, and frameworks
  • unnecessary context switching
  • inefficient development flow
  • poorly organized code

Psychological distress

  • burdening the team with unhelpful stress
  • low team morale
  • rush mode
  • interpersonal or team conflict


  • cost of idle time, often hidden by multi-tasking
  • slow tests or unreliable tests
  • unreliable acceptance environment
  • missing information, people, or equipment
  • context switching from delayed feedback

Knowledge loss

  • cost of re-acquiring information that the team once knew
  • team churn
  • knowledge silos

Ineffective communication

  • incomplete, incorrect, misleading, inefficient, or absent communication
  • team size too large
  • asynchronous communication - distributed teams/stakeholders, opaque processes outside team
  • imbalance - dominating the conversation; not listening
  • Inefficient meetings (lack of focus; skipping retros; not discussing blockers each day; meetings running over (e.g. long stand-ups))

History of programming

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


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. - 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

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


Hillel Wayne

Proper Fixation

Haki Benita

Cat on Mat

The Clean Code Blog - Robert C. Martin (Uncle Bob)

Code by Kate Rose Morley

Justin Meiners - Vincent D. Warmerdam

The Digital Cat

Code Challenges




Blog Posts & Articles

The Yoda of Silicon Valley

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

Why Google+ Failed

When Larry Met Sergey

Cities: Skylines is Turing Complete

How Notion pulled itself back from the brink of failure


A Mind at Play: How Claude Shannon Invented the Information Age

Hello, Startup: A Programmer's Guide to Building Products, Technologies, and Teams - Yevgeniy Brikman

The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World (2015 book) - Pedro Domingos

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


Lex Fridman Podcast

Talk Python To Me

Presentable - how we design and build the products that are shaping our digital future


A curated collection of programming and computation resources




No releases published


No packages published