Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Allocations in Rust
- 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 Discord is switching from Go to 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
- 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
- Optimizations That Aren't, Or Are They?
- 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
-
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
-
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
- System Design Primer
- 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
-
Assorted "How Stuff Works"
-
Career Development
-
Code Quality and Good Practices
- Avoid rewriting a legacy system from scratch, by strangling it
- 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
- hacker-laws
- Programming Principles
- How To Write Unmaintainable Code
- API Security Checklist
- Software craftsmanship
- 5 Things Iβve Learned in 20 Years of Programming
-
Command Line Tools
-
- ArchiveBox
- DBCLI - Collection of great CLI database clients,
- pgcli
- HTTPie
- Midnight Commander (mc) - The best file manager.
- mosh - Like `ssh`, but with local echo and roaming. Good for poor connections.
- ncdu - Disk usage analyzer.
- tokei - Count the number of source lines, quickly.
- ArchiveBox
- ArchiveBox
- 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`).
- htop - Excellent process viewer.
- hyperfine - CLI benchmarking tool.
- fd - Better than `find`.
- gdb-dashboard - Makes GDB so much better.
- git-quick-stats
- grex
- 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
- tealdeer - A very fast [tldr](https://github.com/tldr-pages/tldr) client.
- 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
- tokei - Count the number of source lines, quickly.
-
GUI tools
- PosteRazor
- Gestures
- QDirStat - Analyze disk usage by directory / file type.
- libinput-gestures
-
-
Data
-
GUI tools
-
Databases
-
-
Design and Web
-
Distributed Systems and Cloud Computing
-
Docker
-
Eye Candy
-
Fonts
-
-
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)?
-
-
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
- kubectl explain β #HeptioProTip
- kubectl explain β #HeptioProTip
-
-
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
- How to Deliver Constructive Feedback in Difficult Situations
- How to Deliver Constructive Feedback in Difficult Situations
-
-
Networking
-
git help
-
-
Privacy
-
Productivity
-
Programming Languages
-
Python
-
git help
-
Python learning
- Advanced asyncio: Solving Real-world Production Problems - PyCon 2019 (video)
- Slides
- Fluent Python (book)
- 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
-
Python libraries
- aio-libs
- attrs - Alternative to 3.7's dataclasses.
- Beautiful Soup - Pythonic HTML/XML parsing.
- click - Command line argument parser and then some.
- Jinja2 - The only Python template engine worth your time.
- lxml
- NetworkX
- 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.
- pydantic
- PyPDF2
- 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
-
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
-
-
Shell
-
Rust tools
-
-
Testing
-
Visualization
-
Static Analysis
-
-
Prelude
Categories
Management / dealing with people
75
Rust
65
Architecture and Programming Patterns
57
Kubernetes
50
Command Line Tools
46
Python
45
Code Quality and Good Practices
30
Hardware and CPUs
21
Algorithms
16
Data
11
Design and Web
7
Privacy
5
Testing
5
git
4
Shell
3
Productivity
3
Visualization
2
Linux
2
Distributed Systems and Cloud Computing
2
Programming Languages
2
Docker
2
Other Lists
2
Assorted "How Stuff Works"
1
Eye Candy
1
Career Development
1
Networking
1
Prelude
1
Go
1
Sub Categories
Keywords
rust
11
cli
9
python
9
terminal
9
command-line
7
linux
5
tool
4
macos
3
bash
3
regex
3
kubernetes
3
python-library
3
command-line-tool
3
shell
3
system
2
tail
2
design-patterns
2
statistics
2
security
2
dashboard
2
git
2
syntax-highlighting
2
filesystem
2
docker
2
console
2
c
2
tui
2
awesome-list
2
windows
2
developer-tools
2
devops
2
awesome
2
sast
1
commandline
1
static-analysis
1
static-analyzers
1
static-code-analysis
1
bsd
1
laws
1
cheatsheets
1
principles
1
networking
1
architectural-patterns
1
guidelines
1
bandwidth
1
oauth2
1
jwt
1
api
1
programming-principles
1
inspector
1