news
Programming Leftovers
-
Vinay Keerthi ☛ Dottler - Manage .env Files Across Git Worktrees
Dottler is a local command-line tool for managing .env files by project. It needs no account or server. It identifies a project from its Git remote and keeps the variables in a global store under your home directory, so every worktree for that repo uses the same store.
It can import an existing .env, write one into a new worktree, export variables to your shell, or run a command with them.
-
Rlang ☛ Reading notes on Code That Fits in Your Head by Mark Seemann
Throughout the book, the author makes it clear that he believes one should pay attention to the code one writes, to its internal quality. The following two sentences even got their little frame:
“The goal is not to write code fast. The goal is sustainable software.”
-
OWASP ☛ OWASP Top 10 CI/CD Security Risks | OWASP Foundation
CI/CD environments, processes, and systems are the beating heart of any modern software organization. They deliver code from an engineer’s workstation to production. Combined with the rise of the DevOps discipline and microservice architectures, CI/CD systems and processes have reshaped the engineering ecosystem: [...]
-
[Old] Florian Herrengt ☛ How to automate Instagram engagements with computer vision (and get banned)
Obviously, Instagram does not want you to automate engagement. Their HTML is a mess of randomly generated class names and deeply nested divs. The structure changes every deployment. Any script that relies on DOM selectors breaks within weeks because the class name doesn't exist anymore.
-
[Old] Var Zero ☛ What even are microservices?
It's almost impossible to have a conversation about software architecture without someone bringing up microservices. Just look at the discussion over my last post. They have become the default example of both "good architecture" and "over-engineering," depending on who you ask.
What's interesting is that everyone seems to recognize a microservice when they see one, yet almost nobody can explain what actually makes something a microservice.
-
Python
-
LWN ☛ Python packaging council candidates announced
The Python Software Foundation (PSF) has announced the candidates running for the Python packaging council that was approved by the Python steering council in April.
-
Juha-Matti Santala ☛ M is for meetups - Python A to Z
You have likely been to a meetup. I love meetups. I’ve been participating in them for 13 years and have been running my own for over 10 years. A lot of my best friendships have started from those communities.
I have written about meetups and conferences from various perspectives in the past so consider this post as a literature review of sorts.
-
Adam Johnson ☛ Python: fix TypeError: NamedTuple() got an unexpected keyword argument
NamedTuple has always had two documented ways to define fields: the class-based syntax, and a functional syntax taking a list of (name, type) pairs. The keyword-argument style above was never one of them, it worked only as a side effect of the old implementation happening to accept **kwargs. This form was therefore deprecated and removed in Python 3.15, with NamedTuple’s signature now locked to positional-only.
-
Adam Johnson ☛ Python: fix SyntaxWarning: invalid octal escape sequence
Python strings support octal escape sequences: a backslash followed by one to three octal digits (0–7), such as \120, which represents the character with that codepoint. Three octal digits can encode any value from 0 to 0o777 (511 in decimal), but octal escapes were only ever intended to cover single bytes, 0 to 0o377 (255 in decimal), the range used by earlier character sets like Latin-1.
-
-
Java/Golang
-
Vikash Patel ☛ How Go Channels Actually Work
Go’s concurrency model comes from Tony Hoare’s 1978 paper, Communicating Sequential Processes (CSP).
In traditional multi-threaded environments, threads communicate by sharing memory. To prevent race conditions, you lock that memory using mutexes. This approach has well-known failure modes: it is easy to introduce deadlocks, lock contention degrades throughput, and tracking ownership of shared data structures becomes difficult as codebases grow.
CSP flips this pattern. Concurrent processes communicate by passing data through explicit, synchronized input and output ports: [...]
-