Read Later Articles
AI & ML
Getting Started
- AI Canon | Andreessen Horowitz (a16z.com) (05/26/2023)
This article contains a curated list of resources to help getting started with AI.
- learn/artificial-intelligence at hackernoon (06/20/2023)
This source has a boat load of articles around Artificial Intelligence.
- ML For Beginners (11/15/2023)
12-week, 26-lesson curriculum all about Machine Learning from Microsoft,
Prompt Engineering
- brexhq/prompt-engineering: Tips and tricks for working with Large Language Models like OpenAI's GPT-4. (github.com)(05/12/2023)
- A developer's guide to prompt engineering and LLMs - The GitHub Blog(07/18/2023)
- ChatGPT Prompt Engineering for Developers - DeepLearning.AI(05/10/2023)
- Fuck you, show me the prompt (02/16/2024)
ChatGPT
- It's Time To Create A Private ChatGPT For Yourself Today(04/08/2023)
- Here is How ChatGPT Helped Me Make Over $1k As A Programmer — No BS (04/08/2023)
- You're Using ChatGPT Wrong! Here's How to Be Ahead of 99% of ChatGPT Users (05/30/2023)
LLMs
- How to Run Your Own LLaMA. LLaMA weights are available to download (04/08/2023)
- Getting Started with Large Language Models: Key Things to Know (10/12/2023)
- Train your own minimal GPT language model in Rust (06/22/2023)
- Private LLMs on Your Local Machine and in the Cloud With LangChain, GPT4All, and Cerebrium (06/22/2023)
- Catching up on the weird world of LLMs (simonwillison.net) (08/04/2023)
- Building an LLM from Scratch (02/16/2024)
Misc
Guides, Books, and Courses
- AI & ML University (sharepoint.com)(05/30/2023)
- Practical Deep Learning for Coders - Practical Deep Learning (fast.ai) (05/09/2023)
- The Complete Beginners Guide to Autonomous Agents (04/20/2023)
- Building Autograd Engine & Neural Network Library: An Interactive Guide (x0axz.com) (06/27/2023)
- But what is a neural network? | Chapter 1, Deep learning - YouTube (06/22/2023)
- Machine Learning Engineering Open Book (01/23/2024)
An open collection of methodologies to help with successful training of large language models and multi-modal models.
Architecture and System Design Articles
Architecture Decision Records (ADR)
- Decision Records Introduction | Open Software Design
- A practical overview on Architecture Decision Records (ADR) (06/02/2023)
Distributed Systems
- The Inner Workings of Distributed Databases #databases #distributed(04/21/2023)
- A Distributed Systems Reading List (02/08/2024)
- Learning about distributed systems (04/16/2024)
Logging, Monitoring, and Tracing
- Monitoring Self-Hosted Services #grafana #loki #prometheus #promtail #logs #node-explorer #cAdvisor(06/07/2023)
- Monitoring is a Pain #logging #tracing(06/27/2023)
- An Introduction to Microservices Monitoring—Strategies, Tools, and Key Concepts (03/12/2024)
This document is an introduction to monitoring microservices. It explains why monitoring microservices is important, key concepts, challenges, tools, and how to get started with microservices monitoring.
Key points include:
-
Importance of monitoring microservices: It improves user experience, availability, cost savings, and observability.
-
Key concepts: Metrics like latency, response time, error rate, resource utilization, and SLO/SLI are important. Data collected for monitoring includes logs, metrics, and traces.
-
Challenges: Tracking service dependencies, root cause analysis, tech stack diversity, scalability, and implementation complexity are some of the challenges in microservices monitoring.
-
Tools: OpenTelemetry, InfluxDB, Grafana, Telegraf, and K6 are some of the tools used for microservices monitoring.
-
Getting started: Determine monitoring strategy and requirements, select tools, and implement and integrate them into your application architecture.
-
Low Level
- hackclub/putting-the-you-in-cpu: A technical explainer by @kognise of how your computer runs programs, from start to finish #lowlevel(08/09/2023)
Patterns
-
Use Nginx as an API Gateway. In this article, we will utilize Nginx #api #api-gateway #apigateway #nginx(08/05/2023)
-
Architecture Patterns: Caching (Part-1) #caching #patterns(08/11/2023)
- 08/11/2023: A deep dive on load balancing algorithms #load-balancing
- Real-time Messaging - Slack Engineering #slack #service-discovery(04/12/2023)
- Load Balancing #graphical(04/17/2023)
This article is very well done, and has an amazing visual component.
-
Traffic 101: Packets Mostly Flow - Slack Engineering #slack #networking #network #packets #envoy #load-balancing #traffic-manager(09/27/2023)
- Consistent Hashing Explained - System Design(04/10/2023)
- Cloud design patterns
- Introduction to Loro's Rich Text CRDT
While this is specific to a language, this is a great example of how to implement a CRDT.
- CRDTs turned inside out
A & SD Misc
- You're Doing Shift-Left Wrong | Permit
- Structuring your Infrastructure as Code | lbr. (leebriggs.co.uk)
- How-to Evaluate a Product Roadmap, for Engineers (stephen.fm) #roadmap
- MMO Architecture: client connections, sockets, threads and connection-oriented servers
Tools
Bash
- dylanaraps/pure-sh-bible: đź“– A collection of pure POSIX sh alternatives to external processes (04/30/2023)
- CLI tricks every developer should know (05/01/2023)
Tags: #cli #shortcuts
- 06/20/2023: How "Exit Traps" Can Make Your Bash Scripts Way More Robust And Reliable(06/20/2023)
Tags: #trap-exit
- How to Use Bash Getopts With Examples (07/29/2024)
Build your own X
Business / Startup Articles
- Startup Founders Guide
- The Architecture Behind A One-Person Tech Startup (11/13/2023)
- My Solopreneur Story: 0 to 65k a month in 2 years (02/02/2024)
- Zach Goldbergs Reading List
Compilers, Interpreters, Programming Languages
LLVM
- How to learn compilers: LLVM Edition (11/04/2023)
- A Gentle Introduction to LLVM IR (08/02/2023)
Virtual Machines
Interpreters
- Preface - Build a Lua Interpreter in Rust (04/21/2023)
C/I/P Misc
- Writing a package manager (08/23/2023)
Containers (Docker, Podman, etc.)
- Learning Containers From The Bottom Up (11/21/2023)
- dexec Makes Working with Docker Containers Easy (06/27/2023)
-
Container Training (07/09/2023)
This has full blown training resources. Slide decks, videos, you name it. And they are ridiculously thorough.
-
How we build containerized services at GitHub using GitHub - The GitHub Blog #github #build (08/10/2023)
- How Container Networking Works: Practical Explanation (iximiuz.com) #networking (09/21/2023)
- Quadlets might make me finally stop using docker-compose · Major Hayden #podman #quadlets #systemd (09/26/2023)
- Server Side Sandboxing Containers and Seccomp (10/24/2023)
- How Container Networking Works: a Docker Bridge Network From Scratch
Databases
- Why you should probably be using sqlite (10/27/2023)
This article discusses the benefits of using SQLite as a database solution for web applications. It highlights several advantages of SQLite:
- Zero Latency: SQLite's single-file architecture results in zero latency, reducing the "n+1 problem" and making query optimization less critical.
- One Less Service: SQLite is embedded within your application, eliminating the need for an external database service, simplifying your architecture, and reducing costs.
- Multi-Instance Replication: Tools like LiteFS allow transparent replication of SQLite databases, making it suitable for applications that require multiple instances.
- Database Size: SQLite is capable of handling massive databases, and for most web developers, database size is not a primary concern.
- Development and Testing: SQLite's simplicity facilitates development and testing, as you can easily run multiple instances of the same app and create isolated test databases.
The article acknowledges some weaknesses of SQLite:
- Lack of Subscriptions: SQLite does not support subscriptions, which might be limiting for certain real-time use cases.
- Connecting from External Clients: Connecting to SQLite from external clients can be challenging, requiring workarounds in some cases.
- Lack of Plugins: SQLite doesn't support plugins like TimescaleDB for Postgres, limiting its suitability for specific use cases.
- No Enum Support: SQLite does not support enums, which can be inconvenient when enforcing specific values for a column.
In conclusion, the article recommends SQLite for the majority of web developers due to its performance, simplicity, and cost benefits. While it's not a one-size-fits-all solution, it's worth considering for many applications.
- Database Fundamentals (12/15/2023)
- Create an advanced search engine with PostgreSQL (12/18/2023)
- The Inner Workings of Distributed Databases #databases #distributed(04/21/2023)
- Build your own database index - part 1 (02/22/2024)
- Implementing a distributed key-value store on top of implementing Raft in Go(05/25/2023)
- Bricolage | Some notes on Local-First Development (09/13/2023)
Data Structures
Dev Tools
- 11/29/2023: An ex-Googler's guide to dev tools
Dotnet (C# / F#)
- 5 useful extensions for Task in .NET (04/17/2023)
eBPF
- What is eBPF? An Introduction and Deep Dive into the eBPF Technology (05/08/2023)
- lizrice/ebpf-beginners: The beginner's guide to eBPF (github.com) (05/08/2023)
- Experiments with eBPF: Snitchrs #eBPF (08/22/2023)
- eBPF Networking Techniques - Packet Redirection (12/23/2023)
- Unlocking Kafka's Potential: Tackling Tail Latency with eBPF
- XDP for Game Programmers
- Writing a UDP eBPF/XDP load-balancer in Rust
Elixir
- Dockerless, Elixir Web Application using Podman and Plug (spacedimp.com) (06/06/2023)
Tags: #plug #elixir #podman #containers #docker #dockerless
- How to Enable IEx Shell History and Search - John Elm Labs (07/20/2023)
- Livebook is a secret weapon for documentation · The Fly Blog (08/07/2023)
Tags: #livebook #documentation
- 10 Elixir Gotchas (05/20/2024)
Game Dev
- 01/05/2024: Making Small Games, Which Is Fun in Itself
General Programming
- BBR: Congestion-Based Congestion Control (12/01/2016)
- Fun with File Formats (12/09/2021)
- The Perfect Commit (12/9/2022)
- Dropbox Engineering Career Framework (04/10/2023)
- Makefile Tutorial By Example #make #makefile #tutorial (05/28/2023)
- How I run my servers (07/18/2023)
- A simple but safe deploy script (07/18/2023)
- A few words on taking notes (08/04/2023)
- howvideo.works (08/11/2023)
- SpacetimeDB/Cargo.toml at master · clockworklabs/SpacetimeDB (09/01/2023: )
Look at this resource for Good Rust code
- Dotfiles matter! (dotfiles-matter.click) #dotfiles #configuration #filesystem (09/27/2023)
- Truck Based Development (01/23/2024)
- Why I Live in IRC (02/06/2024)
- What color is your function?
- How to learn Nix
- Writing I/O-Free (Sans-I/O) Protocol Implementations (02/01/2024)
- Rebuilding Netflix Video Processing Pipeline with Microservices
Netflix has been re-architecting their video processing pipeline to use microservices. This article is the first in the series that goes into the details of how they did it.
- Intro to Content-Defined Chunking
This is the first in a series on Content-Defined Chunking (CDC). Chunking is the processes of splitting a file into chunks. This is interesting to me for the purposes of deduplicating data.
- 503 days working full-time on FOSS: lessons learned
- Learn Anything
- Parse, don't validate
Go
- How to start a Go project in 2023 | Ben E. C. Boyter (05/29/2023)
- Robust generic functions on slices
- Sentinel errors and errors.ls slow your code down by 500% (06/01/2024)
- Blazingly Fast Shadow Stacks for Go (06/01/2024)
Go Newsletters and News Aggregators
- Golang News
Aggregates the latest news about Go from various sources.
Go Web Development
Learning Go
- The Complete Guide to Learning Go (06/01/2024)
- Go Fieldnotes (06/01/2024)
Example Code and Projects in Go
- Wild Workouts Go DDD Example
A project that demonstrates how to build a web application using Go and Domain-Driven Design (DDD) principles.
Home Lab
- Home Lab Beginners Guide Hardware (03/08/2024)
Infrastructure
Ansible
- Using Ansible Shell Module to Execute Remote Commands (spacelift.io) (08/10/2023)
- ScratchDB/deploy/web.yaml at main · scratchdata/ScratchDB (github.com) (08/28/2023)
This ansible playbook has some cool tasks that show how to copy, unarchive, restart, etc.
Linux
Linux Performance
- How to get consistent results when benchmarking on Linux?(05/31/2024)
Tags: #performance-analysis #tools #benchmarking
- Red Hat: Performance Tuning Guide
Linux Networking
- Queueing in the Linux Network Stack - Dan Siemon (coverfire.com) (03/30/2023)
- How to receive a million packets per second (cloudflare.com) (04/09/2023)
tags: #ethtool #multi-queue-hashing-algo #multi-queue-nics
- LinuxConJapan2016_makita_160712.pdf (linuxfound.org) (04/10/2023)
tags: #udp #performance
- Linux Networking Shallow Dive: WireGuard, Routing, TCP/IP and NAT - A Salty Blog (05/23/2023)
- Network Protocols - Programmer's Compendium) (08/03/2023)
- Monitoring and Tuning the Linux Networking Stack: Receiving Data (08/26/2023)
- Monitoring and Tuning the Linux Networking Stack: Sending Data (08/26/2023)
- Illustrated Guide to Monitoring and Tuning the Linux Networking Stack: Receiving Data
- Computer Networking Introduction: Ethernet and IP (Heavily Illustrated) Computer Networking Basics For Developers (04/21/2024)
- [?] It’s always TCP_NODELAY. Every damn time. (05/10/2024)
Default to
TCP_NODELAY
- Monitoring and Tuning the Linux Networking Stack: Sending Data
- Tunning and observing UDP buffers
- Kernel: Sysctl docs
Personal Growth
- [?] The 5 Golden Rules of Remote Work | by Israel Miles | Mar, 2023 | Level Up Coding (gitconnected.com)
- Memorized Rules: How to give your life direction (julian.com) (09/25/2023)
Career
- On being an effective developer (carlosbecker.com)
- Teach Yourself Computer Science (teachyourselfcs.com) (05/01/2023)
- 7 simple habits of the top 1% of engineers (substack.com) (09/11/2023)
Investing
- Investment research for everyone (openbb.co) (08/16/2023)
Management and Leadership
- Model, document and share. | Irrational Exuberance (lethain.com) (05/09/2023)
- How to write an effective progress report - LogRocket Blog #writing #reporting #report #progress #effective #leadership #team-lead (09/05/2023)
- Finish what you started (10/23/2023)
Project Management
- The Perfect Commit (simonwillison.net) (12/9/2022)
- How to contribute to a project you have no idea about - Grifel (03/01/2023)
- Why You Should Send a Weekly Summary Email | by Jens-Fabian Goetzmann | Feb, 2023 | Medium (03/07/2023)
- Project Management for Software Engineers | Kevin Sookocheff (03/10/2023)
- How I make OKRs more playful for my team using Hill-Charts (12/15/2023)
Python
- How virtual environments work (snarky.ca) (03/14/2023)
- Hypermodern Python Toolbox | Level Up Coding (gitconnected.com) (04/08/2023)
Tags: #poetry #package-manager
- How many CPU cores can you actually use in parallel? (12/19/2023)
Raspberry Pi
Rust
Architecture and Design in Rust
- Hexagonal Architecture in Rust
- Master Hexagonal Architecture in Rust (08/26/2024)
- Ultimate Guide to NewTypes in Rust (08/26/2024)
This is the first in a series of amazing articles on Rust development with the goal of helping developers produce error free code in Rust.
Blogs
Actors
- Quickwit, Tantivy, Rust, and more. (05/04/2023)
- quickwit/quickwit-actors (05/04/2023)
- Hydra (06/17/2024)
A framework for writing fault tolerant, highly scalable applications with the Rust programming language. Tries to be more like Erlang than other actor frameworks in Rust.
AI / ML
- Let's build a standalone chatbot with phi-2 and rust (01/03/2024)
Concurrency (Async, Tokio, Streaming, etc.)
- The guide to signal handling in Rust (04/09/2023)
- Using Rustlang's Async Tokio Runtime for CPU-Bound Tasks (04/14/2023)
-
Async: What is blocking? (04/14/2023)
Using Tokio and Rayon together
-
Getting Started - Asynchronous Programming in Rust (04/14/2023)
- Inventing the Service trait | Tokio - An asynchronous Rust runtime (04/14/2023)
-
High-throughput stream processing in Rust (08/07/2023)
Contains info on the following: streaming, channels, hashing, circular-buffers, cross-beam, mpsc, flume, ringbuf, rtrb, lock-free-ring-buffers
-
Learning Async Rust With Entirely Too Many Web Servers (08/21/2023)
- Put a Pin on That (08/28/2023)
- Implementing a Load Balanced Thread Pool in Rust (11/27/2023)
- Process Streaming Uploads with Axum (01/19/2024)
Walks through a basic example of streaming a file through Axum
- Async/Await in Rust
- Using Rust scoped threads to improve efficiency and safety (02/29/2024)
- Implementing a load balanced thread pool
- Using Rustlang's Async Tokio Runtime for CPU-Bound Tasks > Good article about running CPU-bound tasks with Tokio by running another Tokio runtime on a separate thread.
- Avoiding over-reliance on 'mpsc' channels in Rust (06/03/2024)
Article shows how using
mpsc
channels can lead to performance bottlenecks and how to avoid them. - How to configure CPU cores to be used in a Tokio application with core_affinity (07/11/2024)
Benchmarking
- How to benchmark Rust code with Criterion (02/02/2024)
- How to build a Custom Benchmarking Harness in Rust (06/17/2024)
Build your own X in Rust
- A guide to writing a DNS Server from scratch in Rust (04/27/2023)
-
Build your own JIRA with Rust (09/24/2023)
Contains info on the following: tdd, koans
-
Rust API Workshop (09/24/2023)
Contains info on the following: mocks, errors, api, axum, tdd And video: Rust HTTP API with TDD Workshop
-
Write Your Own Static Site Generator (11/10/2023)
- Writing a file system from scratch in Rust (12/08/2023)
-
Learn a lot about linux networking, things like wireguard, iptables, etc.
-
Build your own SQLite, Part 1: Listing tables (07/24/2024)
-
Build a simple key-value storage engine in a week, and extend your LSM engine in the second and third weeks.
Containers
- Rust container cheat sheet (04/27/2023)
Data Structures in Rust
Database
- Raw SQL in Rust with SQLx (10/13/2023)
Distributed Computing
Rust Software Design
- Leveraging the Type System for Domain Modeling in Rust (06/23/2023)
- Make invalid states unpresentable (07/31/2023)
- Building an Enterprise Grade Rest API in Rust (11/16/2023)
- What this senior developer learned from his first big rust project
- Mastering Dependency Injection in Rust: Crafting a Custom Container (08/08/2024)
Error Handling
- Modular Errors in Rust (04/14/2023)
- Errors in Rust: A Formula (01/10/2024)
- Rust error handling with Miette (06/17/2024)
GUI and TUI
- Tuify your clap CLI apps and make them more interactive (09/22/2023)
- Rich Terminal Interfaces with Ratatui - YouTube (08/11/2023)
Learning Rust
- plabayo/learn-rust-101: A guide to aid you in your journey of becoming a Rustacean (04/13/2023)
- About - Rust API Guidelines (04/13/2023)
- ctjhoa/rust-learning: A bunch of links to blog posts, articles, videos, etc for learning Rust (github.com) (05/22/2023)
-
Comprehensive-Rust: (09/29/2023)
This is the Rust course used by the Android team at Google. It provides you the material to quickly teach Rust.
-
EventHelix (03/19/2024)
Cool site that breaks down features of Rust into assembly and explains it. It also does the same for networking protocols, 5G, LTE, and other protocols.
- Rust Exercises
Rust Logging, Tracing, and Profiling
- Distributed Tracing in Rust, Episode 1: logging basics (08/07/2023)
-
Profiling with perf and DHAT on Rust code in Linux (09/29/2023)
Contains info on the following: profiling, flamegraph, perf, DHAT
-
Building Segmented Logs in Rust: From Theory to Production! (11/27/2023)
- Rust Memory Profiling (12/22/2023)
- Getting Started with FireDBG (01/22/2024)
- Memory Leak Diagnosing using Flame Graphs (02/02/2024)
Rust Networking
- Writing Highly Efficient UDP Server in Rust (04/09/2023)
-
Protohackers Learning (09/13/2023)
Short article about the site Protohackers, which hosts small challenges to help you learn about network protocols
-
Using Modern Linux Sockets (11/13/2023)
This article shows examples of how to use Kernel features to send messages via UDP faster with socket2's sendmsg and iovec.
Rust Parsing
- Parsing in Rust with Nom (01/02/2024)
Rust Performance
- Using Cow in Rust for efficient memory utilization (03/24/2023)
- Rust Performance Pitfalls (04/27/2023)
- How to write CRaP Rust code (04/27/2023)
- Local Async Executors and Why They Should be the Default (maciej.codes) (07/19/2023)
- Rust: The joy of safe zero-copy parsers (09/29/2023)
- How to write fast Rust code (05/31/2024)
- My experience crafting an interpreter with Rust (06/13/2024)
Great article that discusses optimizations the author made to their interpreter. They discuss how they used different types of
HashMap
to speed up variable lookups. And the use ofunsafe
to speed up the interpreters. Tags: #interpreter #rust #crafting #experience - Using SIMD for Parallel Processing in Rust
Rust State Machines
- Pretty State Machine Patterns in Rust (04/27/2023)
- How to Write Your Own Email Server in Rust - The New Stack (09/12/2023)
- Building a Managed Postgres Service in Rust
Rust Web Development and Frameworks
- Introduction to the Tower library (frankel.ch) (08/25/2023)
- Getting Started with Axum - Rust's Most Popular Web Framework
- Axum Ecosystem > A list of crates that are compatible with Axum
- Getting started with Actix-Web
- WebSockets - The Beginner's Guide (02/02/2024)
Rust Tools
- Iggy.rs - building message streaming in Rust (01/04/2024)
- Heaptrack (01/22/2024)
Why Rust?
- Rust impace on Engineering Management
One interesting peice of this is how they target linux-musl for their production builds. They reference this article as to why: SUPERCHARGING YOUR RUST STATIC EXECUTABLES WITH MIMALLOC
Security
- Everything you should know about certificates and PKI but are too afraid to ask (12/12/2022)
- The Reluctant Sysadmin's Guide to Securing a Linux Server (pboyd.io) (07/30/2023)
Software Design
- Planning for Change with RFCs - Increment (11/01/2021)
- Developer-Handbook (12/28/2022)
- Cohesion in simple terms - Software modularity (04/10/2023)
- How RocksDB works (04/20/2023)
Tags: #database #rocksdb #lsm-tree
- The “Build Your Own Database” book is finished | Blog | build-your-own.org (04/24/2023)
- APIs vs SDKs: Why you should always have both (04/25/2023)
- Introducing Grasshopper - An Open Source Python Library for Load Testing(05/02/2023)
- Rules of Thumb for Software Development Estimations (05/03/2023)
- How to Write a Great README (07/18/2023)
- Documentation as Code for Cloud - PlantUML (07/30/2023)
Tags: #plantuml #documentation #documentation-as-code #diagrams
- So, you want to deploy on the edge? (07/31/2023)
Tags: #edge #databases #write-ahead-log #wal #append-only-log
- Playbook for universal design – Universal design methods for more inclusive solutions (08/26/2023)
- Goodbye to sequential integers, hello UUIDv7! (10/02/2023)
Tags: #uuid #primary-keys #uuidv7 #indexing #index #identifiers #random
- Verticle Slice Architecture (11/10/2023)
- The Big Little Guide to Message Queues (01/30/2024)
Systemd
- systemd by example (02/15/2024)
Web Development
Documenting APIs
- 08/11/2023: Documenting APIs: A guide for technical writers and engineers | I'd Rather Be Writing Blog and API doc course (idratherbewriting.com) #documentation #api
Web Development Tools
- 20 Essential Browser Extensions For Web Developers (07/17/2024)
UI
- Pines - An Alpine and Tailwind UI Library (07/13/2023)
Tags: #ui #javascript #tailwind #css #alpine
- CSS Selectors: A Visual Guide & Reference (08/15/2023)
Tags: #css
Writing and Blogging
- Some tactics for writing in public (jvns.ca) (08/07/2023)
- AddyOsmani.com - Write about what you learn. It pushes you to understand topics better. (08/14/2023)
- Diataxis (11/29/2023) > A systematic approach to technical documentation authoring.
- Writing Documentation for Your House (11/29/2023) > How to start a technical knowledge base for your house. Also has info on MkDocs and Material