Înapoi la articole →

Cel mai recent articol

Ultima verificare

Urmăritori 0 urmăritori
Articole: 52
  1. Five Laws

    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…

  2. Git Virtual Cherry-Pick

    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…

  3. 20%

    Two quotes, apropos of nothing: A lot of software developers are seduced by the old “80/20” rule.

  4. 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.

  5. Ralph and Lisa

    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…

  6. Sandboxes are so in right now.

  7. What is Buildkite?

    If you're starting a new project, just skip the misery of GitHub actions and move on.

  8. Bot posts must include a pointer to their source code and execution environment.

  9. Uptime charts

    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.

  10. What is tmux?

    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…

  11. The *ad hoc* Test

    Once upon a time, there was a code base where the test infrastructure (setting up databases and so on) was significant.

  12. I was asked for some reading on the current agentic stuff.

  13. subprocess.check_output() > set -o pipefail

  14. In a previous post, we talked about using some git plumbing techniques to combine a bunch of repos into a monorepo.

  15. Git Commit Prompt Hook

    Here's a git hook that rejects commit messages if they’re coming from a coding agent and don’t have a "Prompt: " section.

  16. Close Idle Tmux Panes

    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}'))" =~…

  17. There are two loops in using agentic coding agents.

  18. Coverage

    Sometimes, the question arises: which tests trigger this code here?

  19. tmux For Agents

    If you're working on a web thing, you gotta give your agents a browser.

  20. Apropos of nothing, Node changed its maximum string length from about 1GB to about 0.5 GB between Node 13 and Node 14.

  21. tool report: Subtrace

    subtrace magically intercepts a program's HTTP and HTTPS traffic, and presents it to you with the familiar Chrome DevTools interface.

  22. Build Artifacts

    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.

  23. Containerizing Agents

    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.

  24. Pipefail Fail

    $bash -c 'set -euo pipefail; (echo hi; sleep 2; echo bye) | grep -q hi'; echo $?

  25. As we recall from my earlier post, an agent is just 9 lines of code.

  26. Shell Trap

    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…

  27. TL;DR: # A dashboard is, in essence, an array of (title, query) pairs: you can get pretty close to that essence.

  28. My co-workers and I have been working on an AI Programming Assistant called Sketch for the last few months.

  29. LLM Log

    We're all trying to build some intuition on what does and doesn't work when using LLMs.

  30. tool report: spr

    I've been using spacedentist/spr (docs) (not to be confused with ejoffe's tool of the same name) to send PRs.

  31. Let's do what we always do... let's export the data from our language server into a SQL database.

  32. Safari Top, Part 2

    I posted recently about getting the top memory-using tabs from Safari.

  33. 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.

  34. CI Performance Debugging

    A friend of mine asked me to look at why their GitHub Actions CI workflow was slow.

  35. direnv for Node and Python

    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.

  36. Observability in Trouble

    Writing down and sharing a tools and tricks that got us out of a jam.

  37. pybricks

    Pybricks is excellent.

  38. These were impactful to me, one way or another.

  39. 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…

  40. 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.

  41. Advent of Code 2023 Day 24

    Learned some sympy to solve this particular AoC problem.

  42. tl;dr: Timeline visualizations are surprisingly effective, especially to look for parallelization opportunities.

  43. Timeseries observability systems (like Datadog) are all a bit weird.

  44. Deploying for Compatibility

    tl;dr: When schemas or protocols are changing, it's typical to work across multiple deploys.

  45. I enjoyed finishing Advent of Code 2023.

  46. Inspired by Julia Evans' posts on git, I'm jotting down an obscure trick to combine repos.

  47. 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.

  48. (Updated October, 2024.)

  49. "Docker Container on a VMWare instance on AWS is our version of Turducken."

  50. I talked debugging distributed systems at Strata today.