Creează un cont pentru a te abona la acest blog și a-i urmări articolele pe pagina Lectură.
-
Conway's Law # Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure. — Melvin Conway, 1968 Hyrum's Law # With a sufficient number of users of an API, it does…
-
Thing I learned recently from Josh Bleecher Snyder: there are enough git plumbing commands now that you can produce a commit object that's the same as "checkout origin/main and cherry-pick one-commit" with just plumbing, without creating worktrees, using…
-
Two quotes, apropos of nothing: A lot of software developers are seduced by the old “80/20” rule.
-
Too often do we find ourselves clicking, and clicking, and clicking "Next" through trivial amounts of data--a few thousand rows--or fighting a search box that doesn't really work.
-
We know the Ralph Wiggum loop: # Ralph echo "TASK" > PROMPT.md while true; do claude -p "$(cat PROMPT.md)" done The Ralph loop is about context management; doing things one "turn" at a time can be more effective and cheaper than doing many turns (see "E…
-
Sandboxes are so in right now.
-
If you're starting a new project, just skip the misery of GitHub actions and move on.
-
Bot posts must include a pointer to their source code and execution environment.
-
Learned a trick recently: time() - process_start_time_seconds{...} gives you a chart where it's easy to see if a process is flapping, once you plot it with a log scale.
-
tmux (or zellij or screen...) is 3 things: A mechanism to persist your terminal session independently from your connection, so that when your ssh session drops (because you closed your laptop or your wifi changed), you can keep going from where you left o…
-
Once upon a time, there was a code base where the test infrastructure (setting up databases and so on) was significant.
-
I was asked for some reading on the current agentic stuff.
-
subprocess.check_output() > set -o pipefail
-
In a previous post, we talked about using some git plumbing techniques to combine a bunch of repos into a monorepo.
-
Here's a git hook that rejects commit messages if they’re coming from a coding agent and don’t have a "Prompt: " section.
-
I have a two-line prompt, the second line of which is $, so: for p in $(tmux list-panes -a -F '#{pane_id}'); do if [[ "$(tmux capture-pane -t $p -p -S $(tmux display-message -t $p -p '#{cursor_y}') -E $(tmux display-message -t $p -p '#{cursor_y}'))" =~…
-
There are two loops in using agentic coding agents.
-
Sometimes, the question arises: which tests trigger this code here?
-
If you're working on a web thing, you gotta give your agents a browser.
-
Apropos of nothing, Node changed its maximum string length from about 1GB to about 0.5 GB between Node 13 and Node 14.
-
subtrace magically intercepts a program's HTTP and HTTPS traffic, and presents it to you with the familiar Chrome DevTools interface.
-
This is a quick story about a thing I miss, that doesn't seem to have a default solution in our industry: a build artifact store.
-
Simon Willison has been writing about using parallel coding agents (blog), and his post encouraged me to write down about my current workflow, which involves both parallelism, containerization, and web browsers.
-
$bash -c 'set -euo pipefail; (echo hi; sleep 2; echo bye) | grep -q hi'; echo $?
-
As we recall from my earlier post, an agent is just 9 lines of code.
-
Should you fall into the trap of having a load bearing shell script, perhaps this will help: set -euo pipefail trap 'echo Error in $0 at line $LINENO: $(cd "'"${PWD}"'" && awk "NR == $LINENO" $0)' ERR And then you can play three truths and a lie: $cat /t…
-
TL;DR: # A dashboard is, in essence, an array of (title, query) pairs: you can get pretty close to that essence.
-
My co-workers and I have been working on an AI Programming Assistant called Sketch for the last few months.
-
We're all trying to build some intuition on what does and doesn't work when using LLMs.
-
I've been using spacedentist/spr (docs) (not to be confused with ejoffe's tool of the same name) to send PRs.
-
Let's do what we always do... let's export the data from our language server into a SQL database.
-
I posted recently about getting the top memory-using tabs from Safari.
-
Update: see also part two Activity Monitor manages to do this, but it's not clear what hooks it has into asking Safari for the mapping between URLs and pids.
-
A friend of mine asked me to look at why their GitHub Actions CI workflow was slow.
-
I use direnv to manage per-directory environment variables, which comes in handy when a project needs its own Python or Node (or whatever) environment.
-
Writing down and sharing a tools and tricks that got us out of a jam.
-
Pybricks is excellent.
-
These were impactful to me, one way or another.
-
This nonsense might extract the URLs from your Add to Reading List habit. import plistlib import os for p in [ y["URLString"] for y in [ x for x in plistlib.load( open(os.path.expanduser("~/Library/Safari/Bookmarks.pli…
-
Having spent a good deal of time staring at profiles, I wanted to explore what sampling profiles and Flame Graphs are in a bit more detail.
-
Learned some sympy to solve this particular AoC problem.
-
tl;dr: Timeline visualizations are surprisingly effective, especially to look for parallelization opportunities.
-
Timeseries observability systems (like Datadog) are all a bit weird.
-
tl;dr: When schemas or protocols are changing, it's typical to work across multiple deploys.
-
I enjoyed finishing Advent of Code 2023.
-
Inspired by Julia Evans' posts on git, I'm jotting down an obscure trick to combine repos.
-
Use Common Table Expressions (WITH clauses; like a let for SQL) combined with the row_number() window function to pick out the biggest (or first or smallest) row within a grouping.
-
(Updated October, 2024.)
-
"Docker Container on a VMWare instance on AWS is our version of Turducken."
-
I talked debugging distributed systems at Strata today.