Posts

Showing posts from 2024

Quoting John Cutler: Fluffy Concepts

There's one bit of this excellent piece by John Cutler that really caught my attention, and I've added it to my bag of leadership tricks (emphasis mine): Could you help me understand this for a second? Say <insert the thing that's being discussed here>; what would I see more or less of? Love how such a simple sentence can help turn a vague, fluffy concept into something more concrete that can be used as a basis for an effective conversation. Later on John Cutler explains: Describing actual behaviors can be extremely powerful. It cuts through the context collapse that tends to accompany vague concepts. I found this very effective when trying to push for change such the one outlined in  A Practical, Step-by-Step Guide to Wiring a Winning Organization from the Middle , and in particular this bit on page 131 (emphasis mine): Finally, incorporate into the message proof that these concepts actually work to be prepared to meet those who will oppose you . When leading from t...

From engineering metrics to business metrics

Image
Excellent post  ( LinkedIn ) by  Iccha Sethi  tying Engineering Metrics to Business Metrics. The graphics that sums it up is the reproduced on the side (I've remade it using SankeyMATIC  as I felt the original graphics did not make it justice). Interested? Now go read the article, it will be worth your time!

A definition of Leadership

Leadership is achieving results with and through others. Leadership is inspiring others to rise to the best version of themselves.

Leader skills: why asking questions is important

Caught this passage from  Ryan Holiday: How to Win the War with Yourself [The Knowledge Project Ep. #208]  (yeah I'm on my fifth listen, and still getting new insights every time). Emphasis mine: One of the things you learn as a project manager, if you’re working with someone who has technical expertise, is that you have to know enough and they have to know that you know enough that they can’t bullshit you. They can’t say, “No, that’s not possible” or “That’s going to take six months” or “That’s going to cost this amount of money.” You have to have enough technical domain expertise that you can push back and get to the truth of things . and, in a nutshell, that explains why it's important to be good at asking questions as a leader, and why knowing what questions to ask is one of the key characteristic of a technical maestro .

Tinkering with semgrep

Image
A couple years ago I was introduced to semgrep (together with  defectdojo ) but I never really paid much attention to this tool until recently I had an itch to scratch. The itch: all (curl) network calls must always have an associated timeout. This can be (easily) achieved with semgrep using the following rule: Took me a bit of fiddling to find the right pattern incantation, but seems to work. Link to rule in semgrep playground .

On the difficulty of estimating opportunity cost

I recently mentioned in my best of 2024 this quote from  Ryan Holiday: How to Win the War with Yourself [The Knowledge Project Ep. #208] : The problem is that the financial upside is always clear. Opportunity costs are sometimes clear, but often not clear. today I read this The Register article about Pat Gelsinger "resignation" from Intel. It mentions some of the opportunity costs that Intel got wrong (in hindsight, and many years later): The Itanium was going to be the high-end architecture, so there was no need for 64 bit extensions to x86, no matter how hard Microsoft asked. AMD disagreed, forcing Intel to grumpily adopt its standard. Atom was going to be the portable processor of choice, so let's flog off the Arm license. I find it always extremely fascinating to read about these stories, and hopefully learn something from them. And I think, in this case, it's really as Ryan Holiday put it: the financial upside is always clear (and sometimes too optimistic) and ...

Best of 2024

Podcast Ryan Holiday: How to Win the War with Yourself [The Knowledge Project Ep. #208] I am sure The Knowledge Project helped me, actually, showed me how to become a better person: at home and at work. This 1h 39' episode is densely packed with life-changing advice. Some quotes from the passages that speak the most to me: You’ve said before that life is always whispering at you, and if you’re not paying attention, it’ll eventually scream at you. Yeah, there’s a Latin expression called festina lente, which just means “to make haste slowly.” We often look for shortcuts, and it takes longer than if we’d just done it slow and steady. And this is a very core idea of Stoicism. Epictetus said, “It’s not things that upset us; it’s our opinion about things.” that’s what sports are; they’re a metaphor for any kind of pursuit of excellence. [Sport] is just the most visible. The problem is that the financial upside is always clear. Opportunity costs are sometimes clear, but often not clear. W...

Great teams rely on rules, not willpower

In Clear Thinking , Shane Parrish argues (correctly IMHO) that rules can help us achieve our goals because: they remove all the decision making and effort  they fight the social default, as, oddly enough, people will be less inclined to argue with someone's rules An example mentioned in the book: my goal is to drink less soda. Instead of going through a sapping decision process every time I go out on whether or not I will drink soda, and maybe have to fight other people pushing back on my decision I can eliminate all this decision making at once by setting a rule instead: I don't drink soda . Now there's nothing left for me to decide, and if someone offers a me a soda, I can decline both politely and definitively (for most people, at least). I don't need to exert my willpower every time to choose the action that will get me closer to my goal of drinking less soda, but I can just rely on the rule to do all the decision-making for me. In my experience I find that the g...

Quoting awfulwoman: Homeprod, not homelab

From  https://awfulwoman.com/notes/2024/11/homeprod-not-homelab/ : If your homelab is being used by others it isn’t a homelab - it’s home production.

Good Ideas, Bad Ideas

Quoting myself: There aren't good or bad ideas, only good or bad executions.

Quoting Mike Volpi on Board membership

 From https://techcrunch.com/2020/02/12/effective-board-members-create-value-for-startups : One of the analogies I often use for the role of a board is that of being a “mirror” to the management team. Entrepreneurs, by their nature, live on a roller-coaster ride that is matching their startup’s journey. Their perception of the business is often an amplification of the current state of the business. The highs are often more optimistic than the business might really deserve and the lows are often much lower than they should be. The board should reflect a snapshot of the reality of the business. All businesses, both the most successful and the somewhat troubled, involve a lot of sausage-making. There are aspects that are not working well that shouldn’t be brushed aside or ignored, but should be focal points of improvement. Conversely, when things aren’t going well, entrepreneurs can often be too critical of their own business. By placing things in the context of other experiences, the...

Thank you, I believe you, tell me more

While there are many summaries of practices that foster Psychological Safety there is a recipe that I've picked up recently which I believe is supremely powerful both at work and in life (especially with children). The recipe allows us to gracefully handle the delivery of negative news, negative feedback, or general disagreement creating an environment which encourages open and honest communication. The reasoning is that open and honest communication will allow us to get the heart of the problem, and then, hopefully tackle it. It is surprisingly simple and boils down to framing our response in these terms (in order): Thank you for sharing it with me I believe you Tell me more

Screaming in the datacenter (and at the workplace)

Image
Via imgur: The story about hard disks is true, btw. Rotational hard disks, that is.

Engineering metrics for Board/C-level

This LinkedIn post hurt 😅: The metrics they create for engineering help them convey to the board and to the other non technical department how engineering is helping the business move forward, how engineering is adding value. Not what the DORA metrics say without any relationship to what the company is trying to achieve. As a huge DORA fan, I am hurt that DORA is not the pinnacle of clarity that I want it be, especially since I have it on the deck I present the board each quarter. The fact is that Adelina Chalmers is right. The language of business is accounting and engineering performance should be ultimately connectable to bottom line impact. If it can't, there is a disconnect which will ultimately lead to a rough wake up call. So what can we use instead? A similar question was asked in the CTO Craft slack. Here is my take, straight off the top of my head (so probably still a bit rough). Considering that a C-Level/Board would be talking at the level of impact , we need to con...

Prehistory, history and writing culture

Last week I was helping one of my children with their history study, and I came across something I had forgotten: the clear distinction between prehistory and history. Prehistory ends with the discovery of writing, and history begins. Is there a prehistory and history for organizations too? Can an organization benefit in a similar way as the human civilization did by committing to a writing culture? I think so. I wrote an advocacy piece on writing culture here .

Quoting Rob Fraser (via The Knowledge Project)

Another mind-expanding episode from The Knowledge Project. Two sentences are without a doubt worth quoting as a note-to-self exercise: So in particular, as I started to get some level of moderate success in business, my network started to grow, and I started to become friends with people that were much further ahead than me, and it almost led to this insecurity and: Ultimately, [the goal is] to have those good ideas, so how do I put myself in a position to have those good ideas? That’s a lot of reading; that’s a lot of consuming of just basic information out there. So reading, even just publicly traded companies in our space, reading the reports. How are the CEOs thinking? How is the market looking at these businesses and what are they saying?  It’s networking with people, extracting those insights. I call it almost like engineered serendipity. How do you put yourself in a bunch of different situations to just extract an idea? How can you go idea harvesting?

Collaboration or Cooperation?

Collaboration : working together towards an output . For example: collaborating on a presentation, book, song, etc. Cooperation : working together towards an outcome . For example: "customer centricity", volunteer fire departments protecting communities, different departments sharing resources but working separately Which one do you need, and when?

[Link] Building Large Language Models (LLMs)

Image
Awesome video from Stanford CS which goes into the details of building LLMs and how they work. Really interesting explanation on the impact of tokenizers on LLM ability to "interpret" code, such as Python which relies on whitespace for its structure. Highly recommended to understand the details how LLMs work and what the tricky parts are.

IMF article on WFH

Well written and balanced article on the impact of Working From Home on productivity, and the general economy (i.e. downtown stores) in both fully-remote and hybrid setups:  https://www.imf.org/en/Publications/fandd/issues/2024/09/working-from-home-is-powering-productivity-bloom

Quoting Thorsten Ball: Use data that looks like data

Excellent advice from Thorsten Bal l: When debugging or testing your program, do not use data that looks like a variable or type name.  Do not use data that looks like a label or a column name or something your operating system has tons of. Do not use data that looks like it’s part of the program. I would also add that using real-istic data has the advantage of testing our system under conditions that are closer to those that might be in the field.

SMURF: visualizing the tradeoffs of different test types

Insightful article from Google Testing blog on visualizing the tradeoffs, strengths and weaknesses of the different test types: E2E, unit, integration:  https://testing.googleblog.com/2024/10/smurf-beyond-test-pyramid.html They called the resulting radar chart "SMURF" after the initials of these 5 properties: speed, maintainability, utilization, reliability, fidelity .

A list of my favourite podcast episodes

From tech, to leadership, through people, architecture, design and music. A curated collection of my personal favourites.

Reports: the bad, the good, and the great

Following up on my previous post On Fear , I was reflecting on the possibility that: bad reports will ignore your fears and only focus on the goals. As a result your satisfaction will be low good reports will only pick up on the fears that are explicitly stated as a goal. As a result your satisfaction will be OK-ish, but at great expense great reports will understand your fears before you even state them or without needing to go into the details. As a result your satisfaction will be at its greatest potential, allowing full delegation and growth for both

On Fear

Image
Photo by Daniele Levis Pelusi on Unsplash This week I joined a Risk Storming workshop led by Beren Van Daele . Disclaimer: my attendance was spotty due to overlapping events, but I think I got a passing understanding.   One aspect of the workshop stirred my attention, and it was the mention of fears in the context of goals vs fears. Obviously anyone wants to achieve certain goals, so it makes sense to set goals and to mention them in a workshop like this. However when setting goals there are certain second-order effects or side-effects that we want to avoid, minimise or eliminate entirely. Here are a few reasons why I found intriguing (and valuable!) the explicit mention of fear. Acknowledge fears when planning Acknowledging fears and taking them into account into planning is a desirable trait in any wise person who seeks...

On Quantity

Image
I once asked my therapist: I often find myself thinking about work while I'm not working, for example while doing house chores, watching my kids at the park, etc. and I'm not sure how to feel about it. Does that make me a bad father/partner? Nutella for Breakfast, source He asked me back: what's the attribute of every thing that can make it bad or good? No matter how much I thought about it I could not answer the question. After a pause, he then said: it's quantity. Are you thinking about work all the time while at the park, or just a moment? Think about it: a glass of wine is good, but a bottle isn't. A spoon of chocolate spread is ok, maybe even healthy. The whole jar isn't.

Enabling constraints

An enabling constraint is a limitation or rule that, rather than hindering creativity or progress, actually promotes innovation and problem-solving. In software development, we've all experienced the positive effects of enabling constraints. Examples of enabling constraints in sw development are: trunk-based development continuous integration static code analysis/checks, i.e.: enforcing rules such as function or method length, number of parameters, naming conventions, etc Recently, I've been thinking about the use of enabling constraints at the organizational level. One example I think I heard here was about strengthening the cooperation between engineering and marketing. The solution can be remarkably simple: have marketing prepare the material for a feature  before  its implementation. What I was wondering is: how should we think about this change in terms of Team Topologies? Before diving into the topologies and interactions I would observe that this change adheres to som...

Intel

I just read Prof's Galloway latest No Mercy/No Malice post ( link ) and I am actually not sure how to name my feelings after learning how low Intel has fallen. I've never been a particular fan of Intel ever since they were found to be bribing/coercing PC manufacturers to prefer Intel chips (instead of AMD): At its peak in 2000, Intel’s market cap was $500 billion. Since then, the S&P is up 243%, and Intel down 80%. If Intel had kept pace with the S&P, the firm would be worth 16X what it’s worth today. A stark reminder of this fall from grace: Jensen Huang (CEO, Nvidia) is worth more than Intel. The firm is at risk of being dropped from the Dow. Wow, just WOW! 

Founder mode: Oxide and friends (best take so far)

Best take so far on founder mode:  https://oxide.computer/podcasts/oxide-and-friends/2098243 The hosts do a fantastic job of keeping the discussion entertaining, despite its length. Some key takeaways: Oxide write-intensive culture as a mechanism to build trust and keeping the company true to itself: a writing- (and reading-!) intensive company culture does, in fact, allow for scaling the kind of responsibility that Graham thinks of as founder mode the false dichotomy between founder mode and "traditional" manager mode the feat that founder mode will be used to justify all kind of behaviour and decisions Footnote: interestingly they link to the same interview of Brian Chesky that I linked too in my previous posts on the topic.

Rethinking Conventional Business Management: Insights from Brian Chesky and Airbnb

Two weeks ago, a post by Paul Graham about unconventional company management sparked significant discussion in the Refactoring community. Initially skeptical, I shared my thoughts after reading the post multiple times. Graham's compelling question lingered: what if the common way to run companies isn't the best approach after all? Intrigued by this idea, I decided to delve deeper. I watched two insightful interviews with Brian Chesky, CEO of Airbnb, which I believe offer context to his remarks at the YC event mentioned by Graham: "Leading through uncertainty: A design-led company" (Config 2023) "Brian Chesky's new playbook" I recommend the first video for those short on time. After watching these interviews, I found Chesky's ideas resonating strongly with me. His core philosophy can be distilled to: "If you do what everyone else does, you'll get the same results everyone else gets." This approach seems to be working. Airbnb's impr...

"Same results as everybody else" and "founder mode"

Image
A  post by Paul Graham caught a lot of attraction in the Refactoring community  a couple of weeks ago. I read the post a couple of times, and then rushed to share my thoughts (which I reproduce below). The essence (at the time) is that I was skeptical, even though I think Paul Graham's post asks a compelling question: what if the common way to run companies is not the best after all? Last week I finally had time to watch a couple appearances by Brian Chesky which I believe give an insight into what Brian Chesky might have have said at the YC event mentioned by PG, which is, AFAIU, not publicly available. For the record I watched these two: Leading through uncertainty: A design-led company - Brian Chesky (Config 2023 ) (my recommendation if you're short on time) Brian Chesky’s new playbook and I have to admit his ideas resonated a lot with me. Abstracting to the core I would say that Brian's approach can be summarized as ...

Quoting Will Larson: extract the kernel

One of my most unexpectedly controversial posts is Extract the Kernel , which argues that executives are generally directionally correct but specifically wrong, and it’s your job to understand the overarching direction without getting distracted by the narrow errors in their idea. from executive translation : it reminds me of Shreyas Doshi antithesis principle : everyone can be effective with a good boss, but it's more interesting (and relevant as a hireable skills) to be effective even with a "bad" boss. This KP episode explains it in much more details . It's an alternate take on the old adage: “In calm waters, everyone looks like a good sailor, but in stormy waters, you want to be the one with the experienced captain.” The experienced captain is our ability to handle these situations in imperfect conditions.

Syncthing: backup your phone pictures

My phone has (for all intents and purposes) fully replaced my DSLR, however this poses the question of how to back them up and share them with the rest of the rest of the household. One solution is of course to just enable the cloud storage of choice (Google Photos, Apple iCloud, etc) and for some time I relied on my old, trusty Flickr Pro account with its 1Tb of storage and the automated sync. With Flickr having gone through a few acquisitions I am becoming more and more concerned about whether the sync will keep working and how well. Also, I wanted something that I could run on my home PC (a Mac Mini).

Effectiveness of code reviews

Image
Really interesting research article on the impact of various factors on code review effectiveness. The research focuses on a single product: "analysis of data collected from a (commercial) software project and developers from a single software development company" The findings should be not new to all of us, but, personally, I always appreciate having data to back experience up. All the study findings in one chart The take aways 👇:  Change size : size negatively affects all outcomes of code review that we consider as an indication of effectiveness. Reviewers are less engaged and provide less feedback. Moreover, the duration is not linearly proportional to the patch size, which may affect the quality of code review. Number of Teams involved : code reviews involving more teams have lower effectiveness considering duration and participation, but higher effectiveness with respect to the overall comment density. Comment density by reviewer is slightly higher when two teams are i...

Quoting Deming: A bad system ...

A bad system will beat a good person every time. W. Edwards Deming at a February 1993 seminar.

There are no stupid questions, only stupid answers (my motto)

My motto (has been for a while): There are no stupid questions, only stupid answers

Not all tech debt is created equal

Image
Just like financial debt, not all tech debt is created equal. There is some you want to pay back ASAP and some you can slowly pay back over time just like the low, fixed-rate mortgages one could get in the past decade. Surely, you would not borrow from this guy On the other hand, if you borrowed money from the thug down the corner you'll want to pay him back right away. Credit card debt: you can give yourself some time, until the next sprint. The question is, how do you tell one tech debt from the other?

Error correction: cryptocurrency flooding npm with garbage modules

Image
Via:  https://blog.phylum.io/the-great-npm-garbage-patch/ The Tea protocol started with good intentions as a way to reward open-source contributions, but is ending up badly by polluting package repositories with (lots of) garbage packages. Most of these packages are harmless , but some are downright mischievous as they pretend to depend on the popular axios module, when in reality they're downloading a completely different thing instead. So, besides warming up the planet, now Crypto is also blowing up package repositories with trash. Not all hope is lost however: the key to building good systems is consistency and great error correction . So if Tea protocol recognizes the problem and acts upon it promptly, the course can still be reversed into a (possibly) positive direction.

Codescene clever approach to measuring complexity: whitespace

Image
I've heard or of Codescene through Matthew Skelton who mentioned it in his presentation "Untangling software delivery with Team Topologies, flow metrics, and careful decoupling" .  AFAIU Codescene is a contraption of the title of the book "You code as a Crime Scene" by CTO and Founder of Codescene Adam Tornhill . Illustration from Codescene documentation I was playing around with Codescene and came across a chart referencing a  ws_complexity metric. Curious about how complexity was measured, I asked and they pointed me to this document page:  https://codescene.io/docs/guides/technical/complexity-trends.html#what-s-complexity-anyway  Essentially Codescene measures amount of (leading) whitespace as a proxy for complexity. As they explain this has several advantages, the most important being that it is simple (both in terms of implementation and computation) to implement for almost all programming languages.

Quoting Dan North: people don't get blocked, work gets blocked

 Quoting Dan North on Patterns Of Effective Teams  on standups (he calls them seize the day ): I think Ken Schwaber is being misunderstood [...], so these three questions what did you do yesterday, what are you doing today, and are you blocked? These are the three standard question, he using those sort of questions, it's kind of close, yeah. Unfortunately you're totally missing the point - I do apologize - the questions are these: what work items moved yesterday, what work items are likely to move today, what work items are blocked . People are never blocked, right? If in doubt context switch, if you are worried about which context to switch, have a meeting, you lonely at work? have more meetings. So... people don't get blocked, work gets blocked . [...] You don't measure the workers, you measure the work items, we're measuring the the flow of work through a system...

Trying out Unblocked

Image
Disclaimer: I am not affiliated with Unblocked, nor Unblocked sponsored this post in any way. This is my a genuine account of my time spent with Unblocked. I wanted to give Unblocked a try for a while, but never got a good excuse. Last week I came across opslane , which does something I always thought would have been great to have as part a ChatOps setup. Since opslane does not support Prometheus Alertmanager I decided to fork it, and then give unblocked a try. First, I familiarized with the code in a codespace, once I had an idea of how the code is setup I decided to give Unblocked some tasks. The first one was to ask: how do I add a new alert source? BTW, these are the actual questions I used. As far as I can tell Unblocked answer was detailed and accurate. However, before jumping into writing code I needed to assess if my codescene could run tests. We should only touch a codebase after we've ensured it passes tests (it's green), righ...

How much MORE value am I adding?

The most effective way to kill anybody's commitment when they present an idea or work to us is to start suggesting changes. Now it's no longer their idea, and as a result their commitment will be cut in at least half. A reduced commitment will in turn negatively affect execution, then outcomes, and ultimately impact. And we don't want to negatively affect impact. So what we should instead think about is: how much MORE value am I adding? Unless it's an amazing margin (2x), the best course of action is just to say thanks, that's a great idea! How were you planning to execute it and is there anything that I can help with, now or later? Alternatively, if we really want to add something we can ask: what kind of feedback or advice are you looking for from me? By asking in this way we're still leaving the agency - and the commitment - with them. This does not apply only in employee - manager situations, but can happen in lower-stakes interactions too: think code revie...

AWS deprecating Cloud9

From https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/: After careful consideration, we have made the decision to close new customer access to AWS Cloud9, effective July 25, 2024. AWS Cloud9 existing customers can continue to use the service as normal. AWS continues to invest in security, availability, and performance improvements for AWS Cloud9, but we do not plan to introduce new features. Cloud9 , which was back then operating as a stand-alone (Dutch, IIRC) company, was my first Cloud IDE. It was amazing being able to do all sw development in the browser with literally nothing local (including C/CD, at that time Travis-ci was the golden standard. Does is still exist? Yep, it does).

No-money fun

Image
I first heard about the concept on no-money fun in The Knowledge Project Ep. #181 where it is said that the term was coined by  Mike Myers : You build whatever life you want to build. What I learned for myself, it’s what the actor Mike Myers… Mike Myers …, and they’re writing… Austin Powers, beautiful thinker, great comedian. In an interview, he talked about what he called “no-money fun,” no-money fun. He said, “When I was a kid, we would sit out by the airport, my dad and I, and we’d watch the planes land.” He said, “Because we had no money.” He said, “And we would watch the planes land and we would guess what kind of plane they were. And then we’d go to the lake and we would skip stones, and we’d watch cars and guess what color they were.” He said, “We grew up with not a lot of money.” He goes, “But I was always happy.” Somehow the concept stuck with me. As a kid I did not have a lot of money to spend, but I was happy because the place where I lived and my parents allowed for a ...

Brendan Gregg on the Crowdstrike incident

I guess I HAD to write about Crowdstrike, and I find this article by Brendan Gregg to be the right reason for jumping on the bandwagon. I love how Brendan shows us a path forward that does not rely on static code analysis, or more tests, or more QA, or no more automatic updates, but instead solves the problem by changing the approach entirely. Instead of writing a kernel driver to perform whatever security checks are necessary, Brendan suggests we'll use eBPF instead which is designed to run custom programs within the kernel. AFAIU Brendan has been one of the major proponents of eBPF for monitoring and has some awesome tooling to show for it:  https://github.com/iovisor/bcc The idea is that since eBPF has been designed to run custom programs it is designed and hardened against errors that could cause the kernel to crash. Of course it won't be completely effective against code with poor performance and that is ok. What I did not know was that Microsoft has a port of eBPF for W...

HTTM: CLI Time Machine for ZFS, BTRFS/NILFS2 now supports restic

httm added support for restic with version 0.4.0. I've been a long time restic user, and even used restic to backup large datasets (TB) encrypted to S3. While backup is very fast, restore is where things get a little bit more complicated (and slow). Using httm with restic is pretty simple. First you mount the restic repository: restic -r /your/restic/repo/path mount /mnt/restic then you can run httm in browse mode for example for the current directory (assuming it's a directory backed up by restic): httm -b --alt-store=restic . easy peasy.

Quoting Gerald Weinberg on problems

 Once you eliminate your number one problem, number two gets a promotion. From the Secrets of Consulting, A Guide to Giving and Getting Advice Successfully . Might be my next read, I need something humorous. Found via the Personal MBA: Constraints

STM employee reaches out to Reddit for UX feedback

Image
I was casually browsing Reddit today when I bumped into this post in  r/embedded : the account is new (their first post), and the post says brand affiliate which should mean the post is authentic. Regardless of that, I truly believe STM is going in the right direction. Embedded developers should expect more (i.e. more boiler plate such as automated testing, rtos integration, linting, etc) from manufacturers, and IMO STM should start supporting other languages than C/C++ too, i.e. rust or swift (maybe on select MCU only initially). I am convinced whoever adds rust or swift support will have a significant market advantage, especially if we consider the pressure that major organizations (NSA, White House) are putting on the adoption of memory safe programming languages. I've pitched the idea to our contact at STM last year, and haven't heard back so far. As I've argued before embedded development is ripe for a sudden change of pace. Fatma , one of our most talented engine...

Bad leaders are great decision makers and solution providers

I was watching this video , and at around 37' he says something along the lines of: we need to stop rewarding leaders for making good decisions, and instead reward them for enabling their teams to make the decisions/find the solutions which reminded me to of this passage in  L. David Marquet's Turn the ship around! : When the performance of a unit goes down after an officer leaves, it is taken as a sign that he was a good leader, not that he was ineffective in training his people properly.

Quoting Nikhil Suresh on AI

Warning: strong language ahead.

Is Embedded Systems development ripe for a jump in productivity? 30' with Nerves Project

In a chat on the refactoring community somebody mentioned Nerves Project as an alternative to the reigning programming language (C) in embedded systems. I was at the airport with 30' to kill and decided to check it out and see how I could go in just half an hour. Turns out I managed to fully compile the hello_nerves project and stopped short of flashing the image to a rpi3 which I did not have with me. I find this pretty impressive, considering it's a fully-fleshed Linux-based system for half hour of work on a flaky internet connection.

Quoting luminousmen: Senior Engineer Fatigue

An article I related to a lot on seniority and what it brings to the table (even though the term fatigue gives it too much of a negative connotation IMHO): Senior Fatigue is characterized not by a decline in productivity but by a deliberate deceleration. The vibrant energy of younger engineers, bursting with rapid pull requests and overflowing with design documents, starts to give way to a more measured pace. At this stage, seniors might send fewer pull requests or be quieter in meetings, but this isn't an indicator of lost productivity. Quite the opposite — seniors are often finding more efficient, impactful ways to contribute, leveraging their vast experience. The seasoned engineer learns that sometimes the best code is the code you never wrote. They become adept at delegating tasks, capitalizing on the strengths of their colleagues, and asking the dreaded question, "But why?" — a question that often leads to the heart of what needs to be solved, avoiding unnecessary w...

Readwise and Reader

I've been a Readwise user for 4 years now and I can say without a doubt that it has been the best investment I have made towards increasing the retention of what I read. I lost count of the times that the Daily Review brought up the exact highlight I needed in that moment, making me more effective and more content. Their Reader is equally good and I have moved over all my feeds from Feedly as soon as it was usable. The Chrome extension lets you save pages for reading later, highlight content, etc. It's just an indispensable tool. I'm just a satisfied, paying user and Readwise did not sponsor this content.

[link] Apache DevLake

Image
Today I came across DevLake on the DORA Resources page. DevLake is an:  Open-Source Dev Data Platform for Productivity It seems to be an incubating Apache Project which means it might still be a bit rough around the edges. It's going to be interesting to look into it.

Analysis of the Verizon Data Breach Investigations Report [link]

Compelling analysis of the Verizon Data Breach Investigations Report : 1. financial motive is behind most breaches 2. IT systems are the easiest target: developers have figured out how to quickly patch their systems, IT has not yet 3. AI is *not* playing a role in cyberattacks (yet?) 4. email still plays a relevant role because  of email overload

An engineering roadmap distinct from product is a set up for failure

What a great insight from the recent Refactoring podcast episode  with Laura Tacho ! https://lauratacho.com/blog/engineering-roadmap-destined-to-fail This is something I had intuitively grasped and, consequently, I always tried very very hard to weave the Engineering in the Product roadmap (and even after that, it's still difficult to find the right balance in the daily work, as some of my reports tell me). I'm grateful that Laura expressed this concept so clearly, allowing me to take the insight out of the subconscious (the things we do instinctively) and into the conscious space (the things we actively and purposefully seek out).

Leadership tech debt

This week on the  https://refactoring.fm/ community a member asked the difference between a good Engineering manager and an exceptional Engineering manager. In the conversations that followed someone suggested that " a good manager leads the team, a great manager creates a team of leaders ". That immediately reminded me of how in Turn the ship around , the author Captain L. David Marquet argues that leaders’ performance should be measured by how their reports perform after the leader has left. A few days later I was listening to the Knowledge Project podcast (I usually listen to most episodes two or three times to make sure I can get all the knowledge), and I made the connection of the above to tech debt. Someone who is a good leader but is required/essential for the performance of his reports is the transposition of code tech debt in the organization hierarchy. The organization trades going further in the long term for going fast in the now. Touch points between the two...

Agency, skill and mastery

Image
Agency, skill, and mastery are topics on which I have so many thoughts, and I am still discovering myself. This writing summarizes my position as of roughly April 2024. Agency, as pictured below, is to take on things, doing hard things without waiting for conditions to be perfect or otherwise blaming others or your circumstances. Examples of low agency: I could develop so much faster if only the code was not so crappy!  We would be already finished if this or that team had done their job properly!  If only my boss (or company) understood me, I could really do great things for this Company or my team! High agency behavior:  I'll try to make changes to the code/add tests/etc as I work on parts of it so that I will, over time, be faster. Let's see if there are ways that I...

XZ Backdoor: we all were in a movie

The XZ backdoor has been covered extensively in various writings, but I had to listen to this episode because it features Andres Freund, who discovered the backdoor: https://oxide.computer/podcasts/oxide-and-friends/1843393 And of course, Bryan Cantrill did not disappoint. His energy and passion, together with the unique views and understanding he has around topics that are otherwise trite and thought to be well understood , to me looks pretty much like how a reality distortion field would work. The big revelation for me is that we've all been featured in a movie. You know the classic movie plot in which one person finds something out, and then they go about telling everybody about it, and nobody believes them but they take it upon themselves to save the world? That's what happened, well except everybody took Andres seriously from the beginning this time. And the world was saved. Pheeewww. Well, it was saved this time.

ArchUnit: enforce architecture in Java codebases

Today , I came across ArchUnit  which lets you enforce architectural choices on any Java codebase. For example you might want to enforce that certain domain object methods are only accessed by the persistence layer classes, but not in, let's view-related classes, with the exception of tests. This can be helpful to avoid spaghetti code, with all classes depending on each other. Java packages can help in this regard, but they are a rather coarse filter. Additionally, a unit test adds an immediately clear and conspicuous layer of intention to the codebase by expressing certain design choices that might be otherwise overlooked, unless a careful code review catches them. It's pretty clear to me that Java, even with all its shortcomings and despite Oracle efforts to sabotage it , offers the best development environment in terms of tooling, IDEs, support, and libraries. Notice that in the video, the host Ted M. Young is wearing the Change Behavior beanie, the other beanie is Refactor...

Drucker: the manager

Image
I recently picked up People and Performance by  Peter F. Drucker . If you're keen on understanding what is this manager job that everybody talks about (especially if you're new to management) this book will set you on the right path. I've thoroughly enjoyed reading it and I wanted to make a visual summary for my own use. I think it came out nice enough that it might be worth sharing it, so here it is:

Brain dump on the recent Figma database infrastructure articles

Image
Warning: this post is in a stream-of-consciousness form. Approach it accordingly. Figma recently posted a couple of articles ( one and two ) on the challenge they are facing to keep their database infrastructure up with the massive growth they are going through, and how they're solving it. The last article especially was re-shared in some of my circles, and my initial gut reaction to the articles can be summed up in the immortal words of Jeff Goldblum in Jurassic Park : “Your Scientists Were So Preoccupied With Whether Or Not They Could, They Didn’t Stop To Think If They Should” . After I (admittedly) quickly read the article a couple of times, I still did not "get it". IMHO is a red flag as critical infra stuff like that should be simple: simple to understand, simple to operate, simple to troubleshoot, simple to restore. Had I been in their position, what would I have done? I could have left the article at it, but I've made it an habit to never say something "n...