Generative AI-assisted software engineering is here to stay, with all the consequences that brings. But the form it takes and the workflows we use to wield it? We are still in the spaghetti stage of product development, throwing everything at the wall to see what sticks.
One workflow product teams love is AI showing up with ready-to-go pull requests (PR). PR comments prompt the AI to update…
What makes this bash script slow?
Profiling GNU Bash is annoying, but then what isn’t with Bash? perf can give you a good idea where CPU resources go if you’re on Linux, or as I’ve recently taken to calling it, GNU plus Linux. But Bash is usually just glue for other programs, and no sane person writes anything substantial in Bash.
Still, launching a new shell is taking…
2025 Help Wanted: Artificial engineer, 10 years experience required.
Hot takes on the death of software engineering are legion. Boy, are Venture Capitalists hopped up on hopium over this. Imagine if AI could replace their biggest cost! No more profit sharing with expensive, uppity laborers coders. And the “idea guys”? The idea guys can focus on what they do best, think amazing…
I like Touch ID. I like to Touch ID with sudo. I like to Touch ID with sudo in tmux.
Use with caution
I may or may not have trashed my /etc/pam.d/sudo file a few times getting this right.
So before showing how to use Touch ID with sudo on Mac OS, bonus pro-tip: how to un-bork your sudo file.
copy /etc/pam.d/sudo file to $HOME edit, make fixes use Finder, drag-n-drop edited file to…
So you have a fancy-pants Home Lab™ with commercial grade switches, Proxmox local “cloud”, 50 Gagillion PB NVMe NAS, and that kickn’ HPE 4U server pillaged from the carcass of your failed startup.
That’s $40K of expensive equipment in a cheap Alibaba rack.
In your basement.
Vulnerable.
To one hundred year floods.
Dean Winters.
And a $5 garage sale…
* when writing unit tests
Info
blog adaption of my notes on unit testing.
Testers of the system, unit [sic]! You have nothing to lose but your (mock dependency) chains!
…in which we discover unit test philosophy and enlightenment. And may end up on a list for googling the communist manifesto.
Terminology Like most software development terminology, [unit testing is] very…
Update 2023-01-29: I’ve since learned that clojure-lsp also includes a GraalVM-built cljfmt.
I wanted a Clojure code formatter that: follows the community Clojure style guide and isn’t as agressive as zprint, so weavejester/cljfmt runs fast enough (<50ms) to use as an editor filter, invoked on save is up to date - node-cljfmt and several GraalVM packagings of cljfmt are no longer…
Context: This is excerpted from a Datadog-internal post I wrote on code review best practices.
Profiling teams are splitting up OKRs into 2-3 person squads. This experiment is going quite well modulo some pain points around code reviews. As few squads have the luxury of more than one backend or frontend engineer, we need to get better at inter-squad reviews.
Also, we’re…
Last month my former colleague, Chouser, invited us to work through Lisp in Small Pieces (LiSP) as a group. Forty-six of us joined the group slack and are working through Chapter 1 exercises right now. Allegedly.
Amazon says LiSP landed in my wish list mid-2015, so it’s high time I checked this one off. Coincidentally, 2015 is the last I worked on the LonoCloud team and wrote Clojure for…
Originally published on Medium.
Reverse proxy routers mysteriously segfault. Docker ignores your cries for a core dump. Stack Overflow quietly smirks at your solitary misfortune. You can retreat to defetal position and give up on your microservices dream, or you can pick up your gdb, face down Docker, and go to war.
Production is war, and war is hell. — Bryan Cantrill, Dockercon…
Demo • Source Code
Reactive programming is taking a ride on the Computer Science pop culture carousel, and attracts an impressive list of corporate sponsors: React (Facebook), Rx (Microsoft), RxJava (Netflix), Elm (Prezi).
In the Clojure world, two libraries getting buzz with reactive cores are Om (built on React) and Hoplon.
Om and a post by Fredrik Dyrkell inspired this binary clock…
UPDATE: 05 September 2013 (later) Thanks to some prodding from Jozef Wagner, I reworked the solution to use Clojure reducers for the combine step.
Speedup now nearly scales linearly with processor count.
previously on 24 … Guy Lewis Steele’s Wordsplit and the Reducers - in which we applied GLS’ algorithm on clojure.core.reducers/fold and learned some limitations. We then…
UPDATE: 05 September 2013 Guy Lewis Steele’s Wordsplit, Redux, in which we address the issue raised below.
UPDATE: 04 September 2013 A reader pointed out an issue with the benchmark, namely some lazy seqs not being realized. I updated the code and post. Now the parallel speedup, while existing, is not as impressive as previously measured. The initial observations regarding the use of…
Quines are self-printing programs. Here’s one for fun in awk (gnu awk).
source quine_gawk.awk
BEGIN{S='BEGIN{S=\'%s\';s=S;gsub(/\\\\/,\'\\\\\\\\\',s);gsub(/\\\'/,\'\\\\\\\'\',s);printf(S,s)}';s=S;gsub(/\\/,'\\\\',s);gsub(/\'/,'\\\'',s);printf(S,s)} usage awk -f quine_gawk.awk 2>/dev/null | diff quine_gawk.awk -
Most men age twenty-six can boast few accomplishments. Sir Charles Antony Richard Hoare is not most men. At that age, C.A.R. Hoare invented Quicksort (pdf).
Quicksort is typically more efficient than other comparison sorting algorithms in both auxiliary memory requirements and execution cycles. Yet, it shares the same common case time complexity limit of its peers - O(n*log n).
Parallelism…