Posts

[Book] Wholehearted

Image
Inspired by Matthew Skelton's comment on Wholehearted I decided to read the book . This is not a review of the book, merely a note of the most important (to me, at least) take-aways. Being "whole" Why is it called wholehearted? The answer is given in the introduction and this helped me file the book in the right "box": a thing is whole according to how free it is of inner contradictions. When it is at war with itself, [...] it is unwhole. Mike Burrows then gives examples of situations in which we experience that "magical chemistry" that makes performing (in a group of people) effortless. This is (at least to me) a powerful revelation and a great way to define what I get to experience from time to time when my organization just performs. When that happens we are whole. And it's an awesome experience. The other insight that I got is that a business is always "at war": with the market. But when it also goes to war against itself because of...

Performance is the price of freedom (via ACQ2)

Besides the two breathtaking episodes on TSMC and Dr. Morris Chang , I am just 10 minutes into  The Art of Selling Enterprise Software (with ServiceNow CEO Bill McDermott) and then this quote blows my mind so much I had to pause listening to write it down: I always tell people in sales, and I said it then, performance is the price of freedom. I never wanted to sit in internal meetings and have a boss tell me what to do or how to do it. What I would just tell them is, I’ll be number one in the country or number one in the world. Just let me run. I'll just add that this should not be the case for Sales only. (I think I've found another favorite  podcast  ðŸ˜… , and I got the t-shirt )

Long-standing ZFS bug involving encrypted datasets and send/rcv fixed!

A bug opened since May 2021, just a bit over 4 years ago, has finally been fixed:  https://github.com/openzfs/zfs/issues/12014#issuecomment-2889132540 The fix itself is trivial, even though I am sure that finding the cause surely was not. But what really caught my attention was the CodeQL integration test  that was written to prevent this issue from happening again. I find CodeQL and similar tools (such as Opengrep/Semgrep) can be incredibly powerful in integration pipelines to prevent subtle, difficult to reproduce issues from happening again probably saving a lot of time in debugging and to write expensive integration tests. I'd be curious to understand if CodeQL fares better in this context than Opengrep because it is aware of the code flow, as opposed to "just" matching patterns (I think Opengrep understands the code structure, to some extent but I'm not 100% sure). I do find CodeQL intimidating and more complex than Opengrep though: with the latter I was able to ...

The most selfish thing? Not being selfish

Funny enough, some of the most valuable advice (or practice) is counterintuitive. For example, Toyota's andon slows down the whole line momentarily to go faster in the long run. Limiting WIP ensures that work gets delivered on time and with less effort. One such piece of advice I came across in a Knowledge Project episode I cannot recall right now was: the most selfish thing you could do is to be selfless I intentionally changed selfless to not be selfish because I think it dials up the contrast, and better fits the example I'm going to narrate below. Also, as a non-native English speaker, I am ok with the slight difference there might be between the two terms. Most of the examples around being selfless involve helping others, giving away money, etc. Those make a lot of sense of course but are also relatively difficult to practice often enough (except maybe helping others, which can be tricky as it might trigger the hero/saviour complex) and while I was discussing this with my...

1/4/2000 to 1/4/2025: the "creative" stuff

One notable thing I did in my first 25 years was in answer to an odd request I got from a customer of a customer (don't ask). This particular organization had lost control of their own authoritative DNS (public DNS) and needed a hand to recover the zone hosted there. Unfortunately this was the only DNS so taking it down to mount the disk would have resulted in unacceptable downtime and there was also the risk that the disk had been encrypted (they were not sure). So many things were unknown about this server that even a reboot was considered risky. So, what we ended up doing instead was mirroring the network traffic on the switch to a new server, run tcpdump on all DNS traffic for a couple of weeks, and then through a series of specially crafted tshark + awk commands we rebuilt the entire zone file (which was not very large, thankfully). We reviewed the zone file with the customer, loaded into a new server and then swapped it in while keeping the old system running. I never heard f...

Working at Oxide must be a blast

Image
From time time there's an episode of Oxide and Friends that has content interesting enough that I feel like putting up with the hosts chattiness. To be clear: I love it, but time is a scarce resource so sometimes I stop after 10 minutes talking about Silicon Valley. Anyhow I listened to this episode and loved this quote so much, it makes me want to apply at Oxide!

Quick thoughts on "How to Coach CTOs" with Joel Chippindale

After some postponing due to a busy April, I've eventually made time to listen to another Refactoring podcast episode: How to Coach CTOs . Here are my customarily short notes on the most important takeaways. I added this episode to the compilation of my favorite podcast episodes . Focus on your strengths This is brilliant advice, which is often overlooked, even though it surfaces in lots of places (Drucker, Munger, Rumelt, Covery). I'd pair it with Munger's advice to, erm, minimize your errors (he calls it avoiding stupidity ), which I interpret as a more active version of focusing on strengths. Understanding the fear(s) of your peers This is not covered in the episode, but I thought it would make a great complement to understanding their goals and their objectives. I wrote about fear last year and it's been very valuable for me to unpack executives requests and ideas. Relationship with peers Can't believe this advice is actually free: Many early-career CTOs strug...

1/4/2000 to 1/4/2025: the mistakes

Continuing my series on the first 25 years in ICT ( previous post ). I've made some mistakes in my career, here are the two most important ones, in ascending order (most serious last), My second biggest mistake is, in hindsight, a trivial network masking error that ended costing a customer a large internet bill (when internet was still metered) and overflowed into an investigation. The investigation ended without consequences but was nonetheless worrisome. The setup was as follows: a flat internal network with a proxy to control outgoing internet traffic. The firewall had rules that only allowed certain hosts (servers, and the proxy itself) to access the internet without restrictions. Everybody else had to go through the proxy. My mistake was adding a rule for a new server, but instead of setting the source ip in the rule to ip/32 in CIDR notation I set it to ip/24, effectively allowing all network to bypass the proxy. This went undetected for a while, at least until the first unu...

Quoting Matthew Skelton & Mike Burrows

Image
Another illuminating quote from Matthew Skelton , posting about Mike Burrows book Wholehearted : Don't re-organize people; re-organize purpose This made immediately sense to me, as I often find that teams that struggle to perform are teams that don't have purpose or have lost it or are so removed from their outcomes that they mechanically complete the next thing. Also, this once again shows how crucial the role of the chain of command is for providing this purpose (the why), making a compelling case against micro-managers, or we-need-a-process-for-everything managers.

Applying inversion to organizational culture

One of the things I like the most about Accelerate is how it puts the focus on Culture and how a (measurable) Culture affects information flow. In other words, you can have a great working place and be business-effective (the two are not mutually exclusive, in fact they compound each other). Also, Accelerate introduced Generative Culture to a wider audience. Recently, I read the  Poor Charlie's Almanac and one of the things that caught my attention was the inversion principle . In my words: Inversion says that, often, the best way to solve a problem is to ask ourselves how to cause the problem, and then stopping/avoiding doing that I've set a goal to apply the inversion principle more in my activities, and today I said: what if I applied it to Culture? Being the lazy person that I am I asked Claude the following question: you are a manager in a medium-sized organization. How can you actively disrupt the flow of information in order to reduce the organization's effectivene...

Spite Driven Development

Image
There's many things that motivate us, and like tools from a toolbox, we pick the one that we find to be the most appropriate for the occasion. Spite Driven Development can be a powerful motivator, as long as it's not the only one. SDD essentially works like this: someone slights us, and we resort to proving them wrong by (over)doing exactly the thing that they don't think we can do. This is all fine, in the short term. SDD comes with a few caveats: SDD can feed on resentment and feed resentment equally. Feeding our resentment uncontrollably is an excellent way to end up being miserable SDD leave us hollow when we've accomplished our mission, because it an external motivation . We won, now what? Maybe the other person moved on or does not care, or even worse they genuinely compliment us! if we don't succeed we might end up attaching our sense of worth or identity to the thing we are trying to accomplish. It's easy to see that this is not-a-good-thing™ Profession...

Opengrep quickstart

Since I could not find a quickstart to run opengrep with the full set of rules from their fork I thought I'd document what I found out. Setup Download the opengrep binary from github and make it executable with chmod +x . Clone the rules repo: git clone git@github.com:opengrep/opengrep-rules.git and clean it up to make it usable to opengrep: cd opengrep-rules rm -rf ".git",".github",".pre-commit-config.yaml", "elixir", "apex" find . -type f -not -iname "*.yaml" -delete rm -rf .github rm -rf .pre-commit-config.yaml Ensure opengrep can load the rules with: opengrep_manylinux_x86 validate . The same can be done for custom rules maintained in a separate repository. AFAIU Multiple repositories can be specified by repeating -f option as needed, see below. We are now ready to scan a repo, from the repo root directory run: opengrep_manylinux_x86 scan \   -f <path_to>/opengrep-rules \   --error \   --exclude-rule=VAL some ti...

1/4/2000 to 1/4/2025: the beginning

Today April, 1st 2025 marks the 25 years anniversary (quarter of a century sounds more impressive, doesn't it?) working professionally in ICT. My first working day as an ICT professional was on April 1st 2000. I had just graduated from uni (literally the week before) and one of the profs offered me a position at this company. The daily commute over bus and train was about one hour and a half, but I got to work on something really fancy: writing a c-shell script to daily sync data over ftp from an Oracle 7 database running on AIX (looked a lot like this one ) to a Bull mainframe. Development occurrent from a Windows NT4 workstation over telnet (I think). c-shell was a b1tḉh to work with and vim wasn't available (only vi IIRC) so my productivity wasn't great but I got it done and it ran until one of the two system (AIX) was eventually decommissioned. The AIX system might still be in the basement at my $OLDJOB. After that I moved on to more interesting e...

Words matter: stewardship over ownership

Came across this interesting article  by Nicole Tietz-Sokolskaya on sw ownership vs stewardship (think of Github codeowners feature) and I love how it explains why stewardship is a much better term to use in this context: Owners are concerned with the value of what they own. Stewards are concerned with how well it can serve the group. And this makes all the difference in producing better outcomes.

Coding with Cursor - 🤯

TL;DR: impressive 🤯 I wanted to play with D3 to create a visualization, so I picked an example ( Bubble chart) and then started hacking at it (literally) in VS Code. Before long, I realized I had just downloaded Cursor , but not had an occasion to try it out. I thought this might be as good as any. Opened the project folder and its one HTML file, then stated prompting away. It got all the modifications right: add axis labels add labels to the bubbles change the tooltip to show all the data of the particular record; one of the attributes is confidence and goes from 0 to 1: Cursor guessed it is a percent and formatted it as such!  added a line showing the break-even point Cursor edited the file for me, and I just had to accept the change, save, reload in the browser. Made some tweaks myself where it was simple enough. Much better than copying and pasting in the chat. Where it blew my mind was when I resized the chart and added a section below which I titled "Explanation:" ....

Thank you very much. We appreciate it. A$$?ole.

Image
I recently added Acquired to my go-to podcast short list and picked the Enron story from 2022. The story comes out hot on the heels of the FTX scandal/tragedy/fraud because of their similarities (and why the regulation that came after it helped prevent other Enrons). It's a long episode (1h 50m) but it's narrated so well and the story is so riveting that I didn't even notice. Theres this passage that I found interesting about half-measures and how they can and will be gamed (emphasis mine):

DNS-based malware protection: Quad9

Image
Many moons ago I was an enthusiastic user of OpenDNS  (when it still was a standalone company), then between one move and the other I forgot to enable it again and found Google/Cloudflare to be equally capable and fast. However I always missed the protection capabilities of OpenDNS, and today I spent some time looking for alternatives. That's how I came across Quad9 : an open DNS recursive service for free security and high privacy. Importantly: Quad9 is operated by a Swiss public-benefit, not-for-profit foundation with the purpose of improving the privacy and cybersecurity of Internet users. Quad9 is headquartered in Zürich and is subject to Swiss privacy law (Swiss government extends that protection of the law to Quad9's users throughout the world, regardless of citizenship or country of residence). I enabled Quad9 on my home router and then proceeded to test it. But first I had to find a malicious url, which funnily enough is harder than I thought :D Quad9 does not support ...

Problem-solution firewall

Image
In his book Clear Thinking , Shane Parrish explains how to avoid finding the perfect solution to the wrong problem have two meetings: one to define the problem and another to find the solution(s) At least to me, it seems immediately apparent how a well conducted post-mortem facilitates exactly that. In the first phase we gather the data, establish facts and timeline. Once that is written down (emphasis on written!) we can start exploring solutions to prevent, detect and/or mitigate. At the same time, what we're achieving is slowification  (i.e.: taking work outside of the normal flow and make time to analyze it), which is another critical step towards continuous improvement. It's a simple process, but not an easy one.

Deepest motivation: Ikigai

Image
Came across this inspiring post by Psych Safety on Ikigai last week, and I immediately felt I had to save it here, if not for the sake of better interiorising it by writing about it. The post immediately resonated with me because it captures exactly how I felt, many moons ago, when I came across the Internet, around 1996. I felt that the internet, with its rebel, distributed architecture would have changed the world, and for the better. I wanted to be a part of it because I thought I would be good at it, I would enjoy it and I could earn an income at the same time. 25 years later I still find that it's the same combination of things that motivates me the most deeply and ultimately allows me to be effective: Am I good at this (or willing to improve)? Does this benefit others and have a positive impact on the world? Will this help me make a living (or am I consciously choosing to do it for free)? Does it feel good? Do I love it? If I had to point at something that I feel is missing ...

Brain dump on LLMs and sw development

In the past years we've heard all kinds of statements on LLMs and sw development: from AI will replace developers to AI lowers code quality . I think it's a bit of both, and the reality most organizations will face is that they'll need BOTH humans and AI. The optimistically proclaimed cost-savings from replacing humans with AI will most likely not materialize in the long term. By following Simon Willison blog in the past two years, I came to the conclusion that the most effective humans are those that can bend and craft their own AI tools and are willing to go to the extreme extent of completely reworking their coding workflow to suit this new technology . For example, see Harper Reed's LLM workflow  or Simon's Willison own setup . Everybody else who's "just" relying on the IDE integration of chat will reap limited benefits, because this approach is tailored for the human and not the LLM. I would also argue that platform, integration and helpdesk/sup...