As a follow-up to a previous post about writing, I’ve been meaning to write the takeaways from Larry McEnerney’s lecture on writing. How often are our words never read? How much energy do we waste to convey our ideas and plans to no avail? Larry offers practical and applicable advice to make us effective writers! In a nutshell: The goal of writing is to change the way your reader…
Marcin Wichary blogged an extensive follow-up to my post from yesterday and I found it a fascinating read with a path forward for Redmond to fix their design. It turns out (as always) that the problem is not as easy to fix (apparently Typography is impossible ), but, if Microsoft wanted an easy way out, they could turn off the preview once a replacement font has been set. The upper font is…
Having commissioned fonts like Arial , it’s no surprise Microsoft doesn’t really care that much about fonts. This, however, is a new low. The Replace Font panel in PowerPoint for Mac What’s even more damning is the lack of consistency: they get it right in the top drop-down, so why mess it up on the second one? Either mess up both or none.
Lovely image, found on the GitHub Copilot subreddit , 1 showing what is keep on happening with LLM-based coding assistant in the next months: they’ll keep on getting more expensive (as explained by GitHub on their blog). The Usage Billing impact for GitHub Copilot The post struck a nerve on LinkedIn as well. The subreddit is, by the way, a fascinating insight into how people react when…
Paul Graham wrote on Twitter how realizing an email is written by AI makes him stop reading the mail (which is the biggest failure. You’re writing to be read) and think less of the author. I have the same reaction. Companies think they’re outsmarting the competition by cutting costs by using AI. But by abusing it, they’re creating an allergic reaction from customers force-fed…
A good piece on why AI pricing is changing Everyone who deals with road planning knows about is induced demand. Each new capability invents new demand. Highways are the textbook case. Add a lane, you get new commutes. The commutes weren’t there before the lane. AI is the same shape. Cheaper inference doesn’t reduce the bill, it expands what people ask the model to do.
I always wanted a remote for PowerPoint that would allow me to use the phone as the laser pointer. So, I’ve made one! (macOS only, sorry) The app serves a control page through WebSockets, that can be accessed through a phone. There’s a handy QR code to make it easy to reach the page (since it runs an open web server, there’s a token at the end to make it hard to enter if you…
I keep Fantastical and Things on my second macOS space, and everything else on the first. However, there’s a bug that showed a black screen for a split second every time I would switch space using the trackpad. After searching how to disable the animation, I stumbled upon this neat little utility that does exactly that and it is glorious. The preference pane of InstantSpaceSwitcher
In a previous post , I described how uv can now protect you from supply-chain attacks with the exclude-newer feature. This week, pip introduced a similar feature, --uploaded-prior-to . The simple syntax is: sh Copy python -m pip install --uploaded-prior-to = P<n_days>D <my_package> In practice, to install a package ( litellm in this example) excluding releases newer than a week: sh Copy python -m…
I bought an Elgato Key Light during Covid, and lately I was operating it with Lolgato app. Since a couple of weeks, however, I started replacing small menu bar utilities with Hammerspoon . So, I thought, can I replace Lolgato with pure Hammerspoon? Turns out you can (with some help from Claude Code). The result is a new Spoon, for which I opened a PR to the Spoons repository .
I’m pretty stoked that this very blog was added to Kagi’s Small Web initiative. As a result, traffic from Kagi went up many folds since then! A screenshot of Umami showing the traffic coming from Kagi. It was basically 0 before March.
The other day, I stumbled upon the GNOME-only app Hieroglyphic , that finds LaTeX and typst symbols when you draw them on a canvas. So, I set out to port it to macOS and I can happily report that I succeeded. There’s a PR open to contribute everything back, but in the meantime, grab it from my GitHub fork ! A screenshot of the main window
Since having a notch on my MacBook, I cannot fit all the icons in my menu bar. I’ve tried heaps of apps to make it work: Bartender , Ice / Thaw , and Hidden , but they all had subtle bugs. Turns out, there’s an easy way to avoid using these apps by shrinking the spacing and padding of the menu bar items, and now I don’t need any of these apps! From the terminal, type sh Copy…
LiteLLM was recently victim of a supply-chain exploit , where an attacker was able to run arbitrary code on infected machines. In the aftermath, I saw how uv provides a safety setting for this, and it would be good practice to add this to your pyproject.toml toml Copy [ tool . uv ] exclude-newer = '1 week' or uv.toml : toml Copy exclude-newer = '1 week' The docs provide multiple options to protect…
Minifeed is a nifty website by Rakhim Davletkaliyev, who added this blog there today. The tagline for Minifeed is: Minifeed is a curated blog reader and search engine. We collect humans-written blogs to make them discoverable and searchable. You can create an account, but search works without logging in.
Killer quote by John Siracusa on the (possible) existential dread programmers are experiencing because of tools as Claude Code: The skills that I’m most proud of are not the skills that involve me typing particular API calls. That whole part (53’ in) is worth a listen.
Recently, Michael Lopp wrote I Hate Fish in which he outlined his approach to getting work done. The simplicity to remember when to do what resembles how I use Things (which he also uses) in combination with Mailmate and Keyboard Maestro : When an email requires follow-up, I hit ⌃ ⌥ ⇧ ⌘ R and I type in how many days I want to be reminded. Keyboard Maestro asking me in how many days I should be…
Slack’s /feed command is really useful; it allows you to subscribe to an XML feed and receive updates in any channel. However, it doesn’t always work as expected, and when it fails, there’s no way to find out why. Recently, I added an Atom feed to an announcement channel, but the posts weren’t coming through. I initially thought the /feed functionality might be incompatible…
I stumbled upon this beautiful utility to create minimalist posters of the (water)ways of a city. If you have uv , getting started is really easy: code Copy git clone https://github.com/originalankur/maptoposter uv venv --python 3.14.2 source .venv/bin/activate uv pip install -r requirements.txt python create_map_poster.py -c 'Padua' -C 'Italy' -t forest -d 4000 The last command will take a bit of…
Today, I asked a simple question to Microsoft Copilot in Excel: In Sheet1, add a table that looks into the other sheets and then, per week number, sum the total hours marked Internal for Alice, Bob, and Charlie. For Alice, week number is in column A, Internal hours are marked in column C as internal hours , and column D for the amount. For Bob, week number is in column A, Internal hours are marked…
I just stumbled upon Mole, a utility to clean and optimize Macs. What stood out to me is fact that it packs a bunch of GUI utilities (DaisyDisk, iStat, etc.) into a neat TUI. The developer has received quite some scrutiny being Chinese but that didn’t stop a thriving community (+30 contributors) and user base (+28k ⭐️, +80 👀) to start using it. Its core features are: 🪥 Deep Cleaning ,…
It’s been millennia since humankind realized that, if you follow the advice of medicine, you can live a better and longer life (that, and avoiding carbs, apparently). The craft has been perfected ever since, and each major technological advancement has contributed to furthering this craft. Good opening! The AWS GenAI summit was not about agentic systems, but targeted tools solving actual problems:…
I recently started using Marked 2 again with some of my markdown files. The app works great and it can strip YAML from the front matter of the files. However, I recently started another blog with TOML front matter, and Marked didn’t handle those. Luckily, it has a preference where you can set a custom preprocessor for your files: Marked 2 Advanced Preferences Pane I fired up Claude and…
This post is so great, I want to frame it If you’re an engineer opposed to AI coding—or if you haven’t started yet—read it. I feel both that I can move faster and operate in areas that were previously inaccessible to me (like frontend). Experienced developers should all be doing this. We’re good enough to avoid AI Slop, and there’s so much we can accomplish today. I like this quote…
The folks at Astral have released ty , which they define as: An extremely fast Python type checker and language server, written in Rust. You can read more in the blog post announcing it. Today, I set it up with helix . To make it work, we first have to install it. Using uv , it’s as easy as typing: sh Copy uv tool install ty@latest Then, edit your ~/.config/helix/languages.toml and add the…
Since posting about how I use llm to check my grammar, Dr. Drang took inspiration from my setup and wrote about how he implemented a system that shows differences side-by-side, instead of highlighting them as I do. On top of that, his system includes a short rationale for the changes. I have always liked the idea of a diff-based check, but because I write in Mailmate , helix , and the browser, I…
We’re moving from Slack to here. This way we can use an open source app that’s part of the open web — and we can have conversations that don’t get deleted, that are findable, that people can benefit from long after the conversation actually happened. 👏🏼 I would love if more communities were to move to Discourse. We briefly had it for the GoDataDriven Academy, but it never took off with students.…
Just before Christmas, I got an email from Bitbucket saying that inactive workspaces will be deleted. Almost 20 years ago, I created a Bitbucket workspace to host my university stuff (mostly for my research thesis and various papers). And while I have the final PDFs, I did not want all that LaTeX to go to waste, so I decided to migrate everything to GitHub (which, since 20 years ago, added private…
When starting this blog, I didn’t think about adding tags. As time passed, I wondered about adding them, but back-filling them was a chore. But with LLMs, this can be done relatively quickly and easily: Pass the LLM some text, and it will happily tell you which tags you might use. And, while you’re at it, it can create the script to call the LLM on all the posts and the code to…
UPDATE: There’s a more refined version of this in a new post . Today, Dr. Drang asked on Mastodon about my setup to leverage LLMs to check my grammar. My setup has a couple of assumptions, just like his: I have a native macOS app holding text 1 I write in markdown (although this one can be relaxed) Tooling I use Keyboard Maestro I use the excellent llm command-line utility For this post,…
The promise of AI for engineers is getting rid of engineers. Tools like GitHub’s Copilot write code, specs, review, and create pull requests. They create and run tests, and do so in the background while the developers engage in more productive activities, such as meetings.
However, whenever a customer went beyond the rigid scripts, the chat had to be routed to a person, only to reset the password to “Welcome97” (the previous one, in fact, was “Welcome96”, so it couldn’t be reused. Security, go figure!) and wasting everybody’s time while doing so. I still love this bit of writing from my article on Xebia’s blog about agentic use cases…
I just stumbled upon this (free) app, called Concurrent, that lets you benchmark different LLMs across speed, cost, and quality. The app is built by Al Castle, VP of Engineering & Security @ Nerdy and works by sending your prompt to multiple AI models simultaneously, showing you side-by-side comparisons of quality, cost, and speed. I especially like the feature to measure and compare the quality…
What a marvelously succinct article about typography with a punchy take-home message! And never choose times new roman or arial, as those fonts are favored only by the apathetic and sloppy. https://practicaltypography.com/typography-in-ten-minutes.html
Use agents, they said. You will save time, they said. Tools like Anthropic Claude CLI, OpenAI Codex, Gemini CLI, etc. can be super useful but, by default, they don’t execute commands before asking for permission each time. As a result, multi-steps tasks can become tedious to validate each time. You need to keep constant attention to it, track what it does, approving all changes and actions.…
David Smith, colloquially known as _ , has compared iOS 18 with iOS 26 adoption. Today, he tooted that someone at Apple has hit a switch to update everyone. Anecdotally, I saw this forced update pattern with my wife’s phone (a 14 Pro). She got it replaced by Apple (through Apple Care) and to restore her iOS 18 backup into the replacement 14 Pro, she had to update to iOS 26. I don’t…
I just written what has been, to date, my most popular LinkedIn post . I did not expect it when writing it–it is such a niche topic–but apparently it struck a chord. Screenshot or it didn’t happen
I get plenty of annoying spam emails from so-called legitimate business. My favorite way to get rid of them is this little Powershell script that I invoke from Launchbar after I copied the email address I want to ban! param ( [ string ] $email ) $domain = $email . Split ( '@' )[ 1 ] Connect-ExchangeOnline -UserPrincipalName my @email . com New-InboxRule -Name 'From $domain ' -DeleteMessage $True…
I recently bought the Preonic keyboard, as my two Model 01 were not really portable. The Preonic is a superb keyboard that is highly customizable and connects either by wire or bluetooth. I couldn’t pass the opportunity. Since it’s customizable, one of the first things I wanted to do was change the layout a bit. The suggested way is to use Chrysalis but it requires Chrome-based…
Sad news if the trends continue until the official release of macOS Tahoe: FireWire will not be supported by newer versions of macOS. I remember how I loved FireWire: its almost constant speed, effectively obliterating USB, at no extra CPU cost. It was just a pleasure to use. The first one I could afford to buy was in 2010: a 1 TB WD My Book Studio with FireWire 800. I could find the invoice…
Yesterday, I attended the AWS GenAI for Healthcare Summit in Lisbon, hosted by the Champalimaud Foundation Here’s my impressions for the day. Where is the Medical Sector using (Gen)AI A non-exhaustive list: Clinical Decision Support AI Buddy in Diagnostics Enhancing Imaging For example, using AI to adjust X-ray imaging when there’s missing data, low resolution, cropping, or low contrast.…
Last year, I blogged about the Binepad BNK8 , a macropad by Binepad . This week, I received the larger brother, the Binepad BNK9 . It sports 9 buttons and a larger knob 1 . Since the firmware is customizable , I started exploring it through VIA . I could create new layers, control the light effects, etc. But, once I started adding layers, I had a dilemma: Either keep a key pressed to activate a…
One of the gripes I have with Helix is not having automatic list continuation when writing Markdown. Until last week, when I found out that there’s a clever trick to achieve it, namely adding this to ~/.config/helix/languages.toml [[ language ]] name = 'markdown' comment-tokens = [ '-' , '+' , '*' , '1.' , '>' , '- [ ]' ] Note that when you have an ordered list, the trick will put the same…
Reading Simon Willison‘s excellent blog on “Things we learned about LLMs in 2024”, made me realize why we’re not seeing much economic benefit 1 from #llms yet. Simon writes: Most users are thrown in at the deep end. The default LLM chat UI is like taking brand new computer users, dropping them into a Linux terminal and expecting them to figure it all out. What should we work on, then? As it was…
Recently, the major browsers introduced the capability to go to a webpage highlighting and scrolling to a particular piece of text. Once you see it in action, it really is neat. They syntax is <original_url>#:~:text= followed by the URI encoded text you want to highlight, like https://blog.lanzani.nl/2024/who-will-speak-up-for-free-speech/#:~:text=Economist (you can click on it to see for…
A thoughtful, as often, article by the Economist on how the usual defenders of free speech (the liberals) are not defending it, leaving the task to the (far) right. The killer quote: Our long-standing position is clear: only with the freedom to be wrong can societies advance slowly towards what is right. What has changed is that today the loudest objections to the crackdown on free speech come…
Up to today, I’ve been bothered by having local https websites served by Caddy , whose certificates were not trusted by macOS. Today, I rectified it. For macOS (and Safari) to trust what Caddy deploys locally, I had to: Find the root certificate (if you’re using the Docker image, they’re in /data/caddy/pki/authorities/local/root.crt ). Copy its content into, say, caddy.pem…
Insightful linked post from John Gruber on why the AI pin flopped. This bit stood out to me as particularly insightful: It is the kiss of death for any endeavor, creative or technical, to have a culture where brutally honest internal criticism is not welcome, especially when it goes up the chain. In fact it needs to be the expectation, if you’re pursuing excellence.