links
Links to programming and software engineering related resources I found useful or interesting. A personal "awesome list".
https://github.com/pawroman/links
Last synced: 3 days ago
JSON representation
-
Rust
-
Rust learning
- A Quick Look at Trait Objects in Rust
- Accurate mental model for Rust's reference types
- Cheap tricks for high-performance Rust
- Context-preserving error handling
- Creating a Rust function that accepts String or &str
- Creating a Rust function that returns a &str or String
- Delete Cargo Integration Tests
- Error Handling in Rust
- Generic returns in Rust
- How To Write Fast Rust Code
- Join Your Threads
- Learn Rust With Entirely Too Many Linked Lists
- Programming Rust - An excellent intermediate-level book on Rust.
- Rust: A unique perspective
- Rust: Structuring and handling errors in 2020
- rustbattle.net
- The Edition Guide
- The Little Book of Rust Macros
- The Rust Reference
- Working with strings in Rust
- Wrapper Types in Rust: Choosing Your Guarantees
- Crust of Rust: Subtyping and Variance
- Crust of Rust: The Drop Check
- The Rustonomicon
- Writing an OS in Rust (Second Edition)
- Rewriting the heart of our sync engine
- Rust is for Professionals
- Speed of Rust vs C
- Sustainability with Rust
- Why is Rust the Most Loved Programming Language?
- Why Rust for safe systems programming
- We need a safer systems programming language
- Rust Language Cheat Sheet
- A half-hour to learn Rust
- Clear explanation of Rust's module system
- a book
- Rust by Example
- The Rust Programming Language Book
- The simplest guide to error handling in Rust
- Tour of Rust
- Why Rust
- Error Handling in Rust
- Clear explanation of Rust's module system
- A Quick Look at Trait Objects in Rust
- Creating a Rust function that returns a &str or String
- Why Discord is switching from Go to Rust
- Why Rust for safe systems programming
- We need a safer systems programming language
- The Little Book of Rust Books
- Rust Memory Container Cheat-sheet
- easy_rust
- idiomatic-rust
- Rust Cookbook
- rust-book-summary
- Allocations in Rust
- How To Write Fast Rust Code
- Rust Design Patterns
- Secure Rust Guidelines
- The Rust Performance Book
- min-sized-rust
- Rust Companies
- Why Rust for safe systems programming
- We need a safer systems programming language
- Programming Rust - An excellent intermediate-level book on Rust.
-
Rust news and community
-
Rust libraries
-
Rust posts and talks
- Error Handling Survey
- Is It Time to Rewrite the Operating System in Rust?
- Mocking Time in Async Rust
- How I Wrote a Modern C++ Library in Rust
- Read Rust - A large collection of Rust related posts.
- Rust serialization: What's ready for production today?
- Taking Advantage of Auto-Vectorization in Rust
- The Evolution of a Rust Programmer
- totally_safe_transmute, line-by-line
- Rust in an instant
- Error Handling Survey
- Is It Time to Rewrite the Operating System in Rust?
- Mocking Time in Async Rust
- Rust serialization: What's ready for production today?
- Taking Advantage of Auto-Vectorization in Rust
- Optimizations That Aren't, Or Are They?
-
Rust tools
-
-
Other Lists
-
Algorithms
- Cache replacement policies
- Consistent Hashing
- The Simple Magic of Consistent Hashing
- The Ultimate Guide to Consistent Hashing
- Dijkstra's in Disguise
- In Search of an Understandable Consensus Algorithm
- Introduction to the A* Algorithm
- Implementation of A*
- Rendezvous hashing
- Reservoir sampling
- The Wavefunction Collapse Algorithm explained very clearly
- Algorithms by Jeff Erickson
- The Algorithm Design Manual
- Big-O Complexity Cheat Sheet
- Raft Consensus Algorithm Visualization
- xoshiro / xoroshiro generators and the PRNG shootout
- xoshiro / xoroshiro generators and the PRNG shootout
- Big-O Complexity Cheat Sheet
-
Architecture and Programming Patterns
- Design Patterns - Describes the classic OO patterns.
- Game Programming Patterns
- The Architecture of Open Source Applications
- The Internals of PostgreSQL
- The Twelve-Factor App
- Vertical Slice Architecture
- PresentationDomainDataLayering
- You are not Google
- Database-as-IPC
- Global Variables Are Bad
- The C4 model for visualizing software architecture
- Visualising software architecture with the C4 model (video)
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- System Design Primer
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- Clean Architecture (book)
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- The Architecture of Open Source Applications
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- Global Variables Are Bad
- You are not Google
- You are not Google
- You are not Google
- You are not Google
- You are not Google
-
Assorted "How Stuff Works"
-
Career Development
-
Code Quality and Good Practices
- Clean Code (book)
- The Clean Coder (book)
- The Future of Programming (video)
- The Pragmatic Programmer (book)
- Take-home reference
- AHA Programming
- Don't Repeat Yourself
- DRY (Don't Repeat Yourself) is a Fallacy
- Make It Work, Make It Right, Make It Fast
- Principle of least astonishment
- The Rule of Three
- Manifesto for Software Craftsmanship
- Cyclomatic complexity
- Keep a Changelog
- Preventing the Collapse of Civilization
- When costs are nonlinear, keep it small.
- Write code that is easy to delete, not easy to extend.
- API Evolution the Right Way
- ARCHITECTURE.md
- Do Not Log
- Some Useful Probability Facts for Systems Programming
- Superior Testing: Stop Stopping
- The AI Hierarchy of Needs
- API Security Checklist
- hacker-laws
- Programming Principles
- How To Write Unmaintainable Code
- Software craftsmanship
- The Rule of Three
- 5 Things I’ve Learned in 20 Years of Programming
- Make It Work, Make It Right, Make It Fast
- The Ship of Theseus to NOT rewrite a legacy system from scratch (FKA. Avoid rewriting a legacy system from scratch, by strangling it)
-
Command Line Tools
-
- DBCLI - Collection of great CLI database clients,
- Midnight Commander (mc) - The best file manager.
- mosh - Like `ssh`, but with local echo and roaming. Good for poor connections.
- ncdu - Disk usage analyzer.
- HTTPie
- bandwhich
- bat - Syntax and git-aware `cat` clone, with automated paging.
- ctop - `top` for containers.
- direnv
- dive
- dua
- eza - Better than `ls`. Also has a `tree`-like switch (`-T`).
- grex
- htop - Excellent process viewer.
- hyperfine - CLI benchmarking tool.
- fd - Better than `find`.
- gdb-dashboard - Makes GDB so much better.
- iredis
- kubectx
- kubetail
- lazydocker
- lychee
- mtr - Better than `ping`.
- ripgrep - Fast file content searcher.
- rmlint
- sd
- speedtest-cli - Speedtest from a command line.
- stern
- storm
- thefuck - Correct the previous command.
- tmux - A terminal multiplexer, more user-friendly than screen.
- topgrade
- watchexec - Execute a command when a path is modified.
- xh
- DBCLI - Collection of great CLI database clients,
- ArchiveBox
- git-quick-stats
- tealdeer - A very fast [tldr](https://github.com/tldr-pages/tldr) client.
-
GUI tools
- PosteRazor
- Gestures
- QDirStat - Analyze disk usage by directory / file type.
- libinput-gestures
- PosteRazor
- Gestures
-
-
Data
-
GUI tools
-
Databases
- Don't Do This (PostgreSQL wiki)
- Jepsen Analyses
- Lessons learned scaling PostgreSQL database to 1.2bn records/month
- Nested Set Model
- PostgreSQL is the worlds' best database
- 10 Things I Hate About PostgreSQL
- Readings in Database Systems (commonly known as the "Red Book")
- 10 Things I Hate About PostgreSQL
- Lessons learned scaling PostgreSQL database to 1.2bn records/month
- Jepsen Analyses
- PostgreSQL is the worlds' best database
- Readings in Database Systems (commonly known as the "Red Book")
-
-
Design and Web
-
Distributed Systems and Cloud Computing
-
Docker
-
Eye Candy
-
Fonts
-
Icons
-
Themes
-
-
git
-
Go
-
git help
-
-
Hardware and CPUs
-
git help
- A fast alternative to the modulo reduction
- Amdahl's law
- Branch prediction
- Branch Prediction - Fundamentals Every Programmer Need Not Know
- Common Systems Programming Optimizations & Tricks
- Computer Latency at a Human Scale
- Floating Point Visually Explained
- Gallery of Processor Cache Effects
- How to Quantify Scalability
- How x86_64 addresses memory
- Latency Numbers Every Programmer Should Know
- Modern Microprocessors - A 90-Minute Guide!
- Performance speed limits
- The Fallacy of Premature Optimization
- The microarchitecture of Intel, AMD and VIA CPUs. An optimization guide for assembly programmers and compiler makers
- What Every Programmer Should Know About Memory
- "What The Hardware Does" is not What Your Program Does: Uninitialized Memory
- ![
- Wikipedia
- ![
- How does your programming language handle “minus zero” (-0.0)?
- Floating Point Visually Explained
- Branch Prediction - Fundamentals Every Programmer Need Not Know
- How to Quantify Scalability
- Napkin Math
- ![
-
-
Kubernetes
-
git help
- An Illustrated Guide To Kubernetes Networking
- CNCF Cloud Native Interactive Landscape
- Cloud Native Trail Map
- k3s
- Kubernetes Failure Stories
- The Distributed System ToolKit: Patterns for Composite Containers
- Two reasons Kubernetes is so complex
- kubectl Cheat Sheet
- kubectl explain — #HeptioProTip
- Authorization Overview (k8s docs)
- kubectl Usage Conventions
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- Two reasons Kubernetes is so complex
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- kubectl explain — #HeptioProTip
- Kubernetes Network Policy Recipes
-
-
Linux
-
Management / dealing with people
-
git help
- Turn the Ship Around!
- 22 Principles for Great Product Managers (archived)
- Deadlines Are Killing Us, And Almost Everything Else I Know About Leadership
- Developer to Manager
- Do the Real Thing
- Early Evangelists of Agile Engineering Wouldn't Mind Watching It Die
- Eliminating the Product Owner Role
- Habits of High-Functioning Teams
- Hanlon's razor
- How NOT to hire a software engineer
- How to be a manager
- How to Deal with Difficult People on Software Projects
- How to Deliver Constructive Feedback in Difficult Situations
- How to Stop Endless Discussions
- Spotify's Failed #SquadGoals
- 'Strong Opinions, Weakly Held' Doesn't Work That Well
- The Framing of the Developer (archived)
- The XY problem
- Top 12 Things That Destroy Developer Productivity
- Unlearning toxic behaviors in a code review culture
- Users hate change
- What Got You Here Won't Get You There (Book Summary)
- When your coworker does great work, tell their manager
- Why does it take so long to build software?
- Why software developers (quite honestly) hate Agile
- Work is Work
- Your Company Culture is Who You Hire, Fire, and Promote
- Anatomy of an Asshole
- Breaking Bad: Why Good People Become Evil Bosses
- Prioritizing Technical Debt as if Time and Money Matters (video)
- Pushing through Friction (video)
- Every Time Zone
- PERT (Program evaluation and review technique)
- Three-point estimation
- Open Source Guides For The Enterprise
- Producing Open Source Software
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- Deadlines Are Killing Us, And Almost Everything Else I Know About Leadership
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deal with Difficult People on Software Projects
- 'Strong Opinions, Weakly Held' Doesn't Work That Well
- Why software developers (quite honestly) hate Agile
- Open Source Guides For The Enterprise
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
- Manager's Playbook
- Commit messages guide
- How to Deal with Difficult People on Software Projects
- How to Deliver Constructive Feedback in Difficult Situations
- Work is Work
-
-
Networking
-
git help
-
-
Privacy
-
Productivity
-
Programming Languages
-
Python
-
git help
-
Python learning
- Advanced asyncio: Solving Real-world Production Problems - PyCon 2019 (video)
- Slides
- How to Make Mistakes in Python
- I Want A New Duck
- I'm not feeling the async pressure
- Python 3 Module of the Week
- Python API Checklist
- PyVideo
- The Hitchhiker's Guide to Python
- Type hinting (and mypy) - PyCon 2019 (video)
- Blog post (archived)
- Using Asyncio in Python (book)
- CPython internals (video playlist)
- How Python does Unicode
- Inside the New GIL
- Modern Dictionaries (video)
- The CPython Bytecode Compiler is Dumb
- What I've Learned About Optimizing Python
- CPython internals (video playlist)
- Practical Python (course)
- Python Cheatsheet
- wtfpython
- CPython internals (video playlist)
- Inside Python dict
- Fluent Python (book)
-
Python libraries
- aio-libs
- attrs - Alternative to 3.7's dataclasses.
- Beautiful Soup - Pythonic HTML/XML parsing.
- Jinja2 - The only Python template engine worth your time.
- lxml
- Numba - JIT compiler for NumPy code. Produces very fast code.
- pathlib - Excellent standard library module for filesystem path manipulation.
- Pendulum - A date/time library with nice API.
- pytest - The only Python test runner worth using these days.
- my blog post on basic pytest setup
- WebSockets - `asyncio` compatible, no-frills WebSocket client/server.
- Intro video: Developing With Doctests - Using Xdoctest As A Backend
- String constants
- types.MappingProxyType
- attrs - Alternative to 3.7's dataclasses.
- irc3 - IRC client based on `asyncio`.
- pyparsing
- bleach
- click - Command line argument parser and then some.
- delta-rs (aka. deltalake)
- httpx
- Lark - Fast parsing library.
- psutil
- pydeps
- pyjwt
- PyPDF2
- PySnooper
- pytest-asyncio
- pytest-env
- quamash
- requests - The HTTP library for Python.
- tqdm - Nice progress bar library and command line tool.
- xdoctest
- xmltodict - Extract data from XML just like JSON.
- yarl
- janus - Queue class that bridges the worlds of `threading` and `asyncio`.
- pydantic
-
Python news and community
-
Python tools
- Deterministic and Statistical Python Profiling
- IPython - An enhanced Python shell.
- line\_profiler - Profile Python line-by-line.
- memory\_profiler
- pyflame
- austin
- ipdb - IPython-enabled debugger.
- py-spy
- ruff
- scalene
-
-
Shell
-
Testing
-
Visualization
-
Prelude
Programming Languages
Categories
Architecture and Programming Patterns
122
Rust
106
Management / dealing with people
88
Python
75
Kubernetes
54
Command Line Tools
44
Code Quality and Good Practices
32
Hardware and CPUs
26
Algorithms
18
Data
16
Testing
7
Design and Web
7
git
7
Privacy
5
Shell
4
Productivity
4
Eye Candy
4
Visualization
3
Distributed Systems and Cloud Computing
3
Linux
2
Networking
2
Assorted "How Stuff Works"
2
Programming Languages
2
Docker
2
Other Lists
2
Career Development
1
Prelude
1
Go
1
Sub Categories
Keywords
python
28
rust
28
cli
10
command-line
10
terminal
10
linux
5
bash
4
regex
4
tool
4
kubernetes
4
shell
3
console
3
security
3
git
3
command-line-tool
3
python-library
3
http
3
macos
2
pandas
2
icons
2
openbsd
2
filesystem
2
devops
2
search
2
reference
2
developer-tools
2
design-patterns
2
gui
2
windows
2
dashboard
2
interview-questions
2
jwt
2
system
2
tui
2
fuzzing
2
cargo
2
tail
2
no-std
2
http-client
2
awesome
2
profiling
2
disk
2
awesome-list
2
top
2
linter
2
asyncio
2
static-analysis
2
debugger
2
static-code-analysis
2
monitoring
2