Home
Projects
CV
Publications
Bookmarks
Home
Projects
CV
Publications
Bookmarks
Bookmarks
Here I collect some useful resources so that I don't need to have 217 browser tabs open.
AI stuff
Books
Category theory
CMake
Code development
Code review
Comics
Computing
Conferences
Data
Documentation
Fortran
Functional programming
Fun for geeks
Games
Git
Graphics
Haskell
Internet
JavaScript
Learning programming
Linux and shell
Music
Open science
Open source
People with interesting blogs
Photography
Programming languages
Numerical precision
Puzzles
Python
Regular expressions
Research software
Rust
Security
Typography
Unsorted
Versioning
Visualization
Web development
AI stuff
Getting started with AI: Good enough prompting
LLM litigation
Meet the Lawyer Leading the Human Resistance Against AI
Books
The Nature of Code
The Structure and Interpretation of Computer Programs
Statistical Thinking for the 21st Century
Building Reproducible Analytical Pipelines
Linear Algebra and Learning from Data
Game Programming Patterns
Probabilistic Machine Learning: An Introduction
AI for Qualitative Data Analysis: A Practical Guide for Researchers
Parallel Computing and Scientific Machine Learning
Best Practices for ML Engineering
Books about statistics
Category theory
Category Theory for the Working Hacker
CMake
Building Science with CMake
Some CMake tips
CMake: dependencies between targets and files and custom commands
A curated list of awesome CMake resources
Code development
Free screencasts about the text editor Vim
Beautiful Native Libraries
Ten Habits of a Good Programmer
GCC and MSVC C++ Demangler
Code review
6 reasons why pre is better than post production code review
Do Not Issue Pull Requests From Your Master Branch
Comics
The Perry Bible Fellowship
Saturday Morning Breakfast Cereal
Lunarbaboon
Incidental comics
Computing
Putting the "You" in CPU
Conferences
FOSS events
The Less Obvious Conference Checklist
Ticketing software
Ten Steps to Better Public Speaking
Data
OpenRefine
Documentation
Write the Docs
Scholarly markdown
Fortran
Fortran common pitfalls
Fortran Best Practices
Possible guidelines for reviewing Fortran code
Introduction to Modern Fortran
Can any coding language top a 1950s behemoth?
Functional programming
A practical introduction to functional programming
The "Thinking functionally" series
Fun for geeks
The International Obfuscated C Code Contest
The Internet Archive Software Collection
The Internet Archive MSDOS Games Collection
Recursion in C
Doom as a tool for system administration
Batman equation
Functional Floppy Disks - in 2015
O RLY Cover Generator
Fizz Buzz in Tensorflow
Silicon Valley Dictionary
Miniature Retro Papercraft Synthesizers by Dan McPharlin
GitHub Roaster
Games
Dungeon Master - Open Edition
Computer Gaming World Museum
Indie Retro News
Online Go
Git
Oh My Git!
Learn Git branching
Git man page generator
What the commit
The entire Pro Git book, written by Scott Chacon and Ben Straub
A successful Git branching model
Tech Talk: Linus Torvalds on Git
Commit Often, Perfect Later, Publish Once: Git Best Practices
Git Internals
Webcast: The Basics of Git and GitHub
How GitHub Uses GitHub to Build GitHub
Summary Report: Git Repository Disruption Incident of Nov 10th
Branch-per-Feature
Git on XKCD
An efficient GIT workflow for mid/long term projects
Oh shit, git!
Simple terminal UI for Git commands
What are GitLab Flow best practices?
Graphics
Voxel Rendering Techniques
Make 8-bit art!
Lospec, a home for digitally restrictive art
Animated Spite Editor & Pixel Art Tool
Haskell
Reimplementing 'git clone' in Haskell from the bottom up
The Haskell Cheatsheet
Haskell Programming from first principles
Maybe Haskell - Programming Without Null
Happy Learn Haskell Tutorial
Internet
A fun and colorful explanation of how DNS works
Mess with DNS
The Lost Cities of Geo
Deleted City
JavaScript
Eloquent JavaScript
Parse, validate, manipulate, and display dates in JavaScript
Understanding "Prototypes" in JavaScript
Intern - Software testing for humans
Leaflet
What if we had a great standard library in JavaScript?
Textures.js
AnchorJS
Learning programming
Learning and teaching research software engineering
Programming Historian
CS50: Introduction to Computer Science
Linux and shell
Effective Shell
Learn the ways of Linux-fu, for free
ShellCheck
SSH key tutorial
Wargames by OverTheWire
How to Backup and Restore Your GPG Key
Music
Nurse with Wound list
Open science
Barriers to open science
Scientists Embrace Openness
The Big Data Brain Drain: Why Science is in Trouble
How to Review a Scientific Paper
The Invisible Workload of Open Research
Open source
Roads and Bridges: The Unseen Labor Behind Our Digital Infrastructure
Open Source (Almost) Everything
The Architecture of Open Source Applications
99 ways to ruin an open source project
Understanding Open Source and Free Software Licensing
Software Licenses in Plain English
People with interesting blogs
John Burkardt
Mary Rose Cook
Pieter Hintjens
Josh Haberman
Daniel S. Katz's blog
Simon Willison
Julia Evans
Xe Iaso
Photography
Malkovich, Malkovich, Malkovich
Project Apollo Archive
Jennifer Greenburg
Men that went shopping
Photography mapped
The Uncomfortable
This Brutal House
Programming languages
p5.js
Lean
LiaScript
Futhark
Julia
A place to start for the future ruby programmer
Dart
Teach Yourself Programming in Ten Years
CodeKata
Learn X in Y minutes
DM's Esoteric Programming Languages
Hyperpolyglot
C++ Core Guidelines
Numerical precision
The floating point guide
Exposing Floating Point
Float exposed
Puzzles
Advent of Code
CSES Problem Set
mathpuzzle
Python
pyOpenSci
Scientific Python Library Development Guide
The Hitchhiker's Guide to Python
Transforming Code into Beautiful, Idiomatic Python
Obfuscating Hello World in Python
Python Mentors - Python Core Mentorship
Programming for Computations - A Gentle Introduction to Numerical Simulations with Python
assert_called_once: Threat or Menace
How to build a simple neural network in 9 lines of Python code
Anti-Patterns in Python Programming
Alice in Python projectland
Powering the Python Package Index
String formatting in Python
Google's Python Class
Python for Computational Science and Engineering
Facts and myths about Python names and values
Dependency tree for a Python package
Geo-Python 2024
Automating GIS Processes 2024
Natural Language Processing with Python
Regular expressions
Regex Crossword
Regular expressions 101
Research software
Of more than academic interest
Good Enough Practices for Scientific Computing
ESIP Software Guidelines
Amsterdam Declaration on Funding Research Software Sustainability
Coding Confessions
Producing anonymous results
Rust
Scientific Computing in Rust
rust-edu Zulip
Security
Brute force password cracking
Our Software Dependency Problem
Typography
Practical Typography
Typeset In The Future
Programming Fonts
Unsorted
The UX of LEGO Interface Panels
The On-Line Encyclopedia of Integer Sequences
Simulating extreme spacetimes
Voyant Tools is a web-based reading and analysis environment for digital texts
8-Bit Philosophy
Kafka's joke book
How To Ask Questions The Smart Way
Practical Guide to Solving Hard Problems
Hart Smith on Outsourcing
Invader
How an episode of The Simpsons is made
Amdahl to Zipf: Ten Laws of the Physics of People
Software Archaeology
The Moral Machine
Shelling Out: The Origins of Money
Versioning
Semantic Versioning
Why not semver
Why Semantic Versioning Isn't
On Versioning
Keep a changelog
Visualization
Earth: a global map of wind, weather, and ocean conditions
From Data to Viz
The Python Graph Gallery
The R Graph Gallery
Web development
Disposable emails
Evolution of Webdesign
HTML and CSS tutorial