How to remove a file from Git history

Today I learned how to remove a file from a git repository while also cleaning it from the history. When you delete it with git rm or git rm --cached, tracks remain in the commit history (the reflog). That might not be a big deal, but if the file has sensitive contents that you want to disappear from version control entirely, then you also want it cleaned from the reflog. That’s when git filter-branch comes to the rescue. »

On GitHub Copilot

Like everyone else on the planet, I’ve been following GitHub Copilot since its launch. It is an impressive achievement and a remarkable milestone for the deep learning industry, that’s for sure. We are obviously at the early stages in deep learning applied to software development, and it is somewhat unsettling to ponder what the future might hold in this field. Like many others, however, I worry about code quality issues and the risk of license infringements1. »

Book Review. Eight Days in May: The Final Collapse of the Third Reich

Volker Ullrich’s Eight Days in May describes the period from April 30, 1945, the day of Hitler’s suicide, to May 8, the day of signing the German capitulation, with significant jumps backwards in time and some hops in the future. We’re covering only eight days, and the dictator dies on day one. What essential events might ever have happened in such a short period? Well, many pivotal ones, as this well-researched work shows us. »

The Internet is Rotting

Terrific piece by Jonathan Zittrain, on The Atlantic, on link rot and digital preservation. I love how well documented and informative it is. Yet, it remains perfectly approachable for both the non-knowledgeable reader and the technically savvy. Too much has been lost already. The glue that holds humanity’s knowledge together is coming undone. We need more content like this. Subscribe to the newsletter, the RSS feed, or follow @nicolaiarocci on Twitter »

Yet Another Reason to Use DuckDuckGo

I couldn’t recall a tmux command, so I quickly reached for my trusted default search engine DuckDuckGo. I typed “tmux cheat sheet” because, well, once I found an excellent one which I wanted to summon again. To my surprise, the search result included an in-page cheat sheet—a good one too. It isn’t the first time that DuckDuckGo surprises me like that. Need a new GUID? Search for it. Need a quick QR code? »

Proust's Madeleine Was Originally a Slice of Toast

A long-sought first draft of Marcel Proust’s ‘In Search of Lost Time’ surfaced a few years ago. Its fascinating story and intriguing news are revealed in a Tablet article titled Proust’s Madeleine Was Originally a Slice Toast. Being the Tablet “a daily online magazine of Jewish news, ideas, and culture”, it makes sense that a good part of the article focuses on Proust’s ambivalence about his Jewishness. Still, there are many other interesting tidbits to be learned. »

Will .NET 6 Minimal APIs turn heads?

I am pretty excited about the Minimal APIs feature that is coming with .NET 6. Three lines of code will be enough to build a fully functional REST microservice1: var app = WebApplication.Create(args); app.MapGet("/", () => "Hello World!"); await app.RunAsync(); If you’re a seasoned ASP.NET MVC/WebApi developer, the snippet caught your attention because, pre-.NET 6, achieving the same result will have you messing with a lot of extra cruft2. I suspect, however, that this feature is not primarily targeted at existing . »

Book Review: Power to the Words

Vera Gheno’s “Potere alle Parole” (Power to the Words) is an essay on the importance of appropriate use of the (Italian) language, not just in written works but also and predominately in everyday life. What would we think of a person who, having a vast wardrobe of beautiful clothes, always wore the same suit out of laziness? These situations appear unlikely; yet, they are examples of the attitude that many have towards their language: they have access to an immense, incalculable patrimony, which out of indolence, or fear, or inexperience, they use partially. »

My DotNetPodcast interview

Today I was interviewed by Mauro Servienti on the DotNetPodcast. The theme was my experience as an open-source maintainer on both the Python and C# stacks. We also discussed the ongoing evolution of the dotNET ecosystem, touching on a few tangent topics. The recording is in Italian and is available below here. Listen to “Python, Eve, open source e fattura elettronica. Con Nicola Iarocci” on Spreaker. Subscribe to the newsletter, the RSS feed, or follow @nicolaiarocci on Twitter »

An unexpected return to the Alps

I recently had the unexpected opportunity of spending a few days in the Alps, climbing and hiking with my daughters. After a few years of hiatus, it felt great to be back romping. Subscribe to the newsletter, the RSS feed, or follow @nicolaiarocci on Twitter »

A Beginner's Guide to Miles Davis

Sam Enright assembled a friendly Beginner’s Guide to Miles Davis. If you’ve always been curious about jazz but never really managed to get into it, then this resource might serve as a good starting point. I cannot say I’m one hundred per cent aligned with his choices, but we’re close. One remarkable statement I concur with is this one: Jazz is so interesting to me because of its fusion of intricate underlying structure with improvisation and spontaneity. »

Triumph Bonneville Dolomites Ride 2021

So the motorcycle-touring season has started, albeit a little late this year because of the COVID situation, and I’ve been avidly pursuing it. On Sunday, I embarked on a 700 km trip from my place to the Dolomites and back. It’s been a glorious day. We (Antonio and I) visited many renowned Mountain Passes, enjoyed stunning views, ate great food and chatted like there’s no tomorrow. I took my GoPro along with me. »

Linus Torvalds addresses an anti-vaxxer

Linus Torvalds’ reply to an anti-vaxxer on the Linux kernel list is a must-read. Pre-2018, Linus would have destroyed the poor chump. He’s discouraging further discussion (Kernel list is not the place for that) while providing crystal clear and detailed mRNA vaccine information, all without renouncing to an opening salvo of his good-ole, grumpy style. As John Gruber affirms, this is one rant we can all get behind. Subscribe to the newsletter, the RSS feed, or follow @nicolaiarocci on Twitter »

Custom default values for not existing dictionary items (and a lesson learned)

When dealing with dictionaries, a typical problem is when an operation attempts to retrieve an element using a key that does not exist in the dictionary. In .NET, a KeyNotFoundException is raised, and that’s the desired behaviour in most circumstances. Sometimes, however, you know that your program will frequently try to retrieve keys that do not exist. In such cases, it is more efficient to use the TryGetValue method: This method returns the value associated with the specified key, if the key is found; otherwise, the default value for the type of the value parameter is returned (source) »

Book Review: Alpi Ribelli: Storie di montagna, resistenza e utopia

The idea behind this book is fascinating. As the subtitle suggests, the book collects stories of rebel mountaineers of all kinds. Some chose to disobey orders; others built refuges of resistance, outposts of autonomy and laboratories of social innovation. The collection is rich and varied. We go from the heretics who went with Fra Dolcino to the partisans who stopped the Nazi fascists in the mountains of Cuneo and Belluno, up to the contemporary movements against the high-speed train in the Susa Valley. »

Open Source: What Happens When the Free Lunch Ends?

The article I’m linking today is authored by Aaron Stannard and focuses on the drama currently going on in the .NET Open Source ecosystem. We’ve all been there. A dependency we took aeons ago goes unmaintained or changes its licensing model. Why does this happen? Because at some point, projects need to become sustainable or else they fail. […] it’s inexpensive for maintainers to support a small number of users with relatively similar demands - but once a project achieves critical mass and the demand on the maintainers exceeds their desire to supply, something will have to give. »

Trade Wars 2002 and its connection to Eve Online

Trade Wars 2002 was a great 1991 online game I hosted on one of my BBSes back in the day. Not sure if it was Lorien or Phoenix BBS; it might have been the latter given the game’s release date. I totally forgot TW2002 until yesterday when I spotted this 1991: Trade Wars 2002 article on the 50 Years of Text Games newsletter. I humbly confess that, until yesterday, I never made the obvious connection between TW2002 and Eve Online. »

So tired of Homebrew messing up with my stuff

Pardon me while I’m venting out my frustration. I am so tired of Homebrew messing up with my stuff. It used to be the perfect tool for the right job until they decided to auto-brew-update-and-cleanup at every new install. Another day another issue, today with vim not running anymore: dyld: Library not loaded: /usr/local/opt/lua/lib/liblua.5.3.dylib Referenced from: /user/local/bin/vi Reason: image not found Lua has suddenly gone missing. Ah, but of course. »

On Programming and Writing

My brilliant friend Salvatore Sanfilippo (otherwise known as antirez of Redis fame) has an interesting write-up on his website. How similar is programming to prose writing? After getting his own feet wet with novel writing, he is convinced that the two activities share many common traits. One year ago I paused my programming life and started writing a novel, with the illusion that my new activity was deeply different than the previous one. »

Book Review: The Voice of the Sirens. The Greeks and the art of persuasion

According to a famous and fortunate Homeric expression, words are winged, not so much like birds but rather like arrows, which cut the air quickly to go straight to the target and break through the listener’s heart. The Greeks have always known that the word is used to convince and show truth and correctness. But they also know that it has a magical force in it: it can turn into a spell, capable of dominating and dragging the listener’s soul; to bewitch like music and to heal like medicine; but, above all, to deceive and mislead. »