Why I have stopped with IPFS and the distributed web

Image for post
Image for post
Cover photo by Sander Weeteling (Unsplash)

I spent a large part of 2019 working with the distributed and decentralized web, especially IPFS, also known as the “Inter-Planetary File System”. I’ve written a few articles on the topic, on how you can host a web app on IPFS, one of which even ended up on the front page of HackerNews.

For about a year, I hosted my blog and other apps through an IPFS cluster. I wrote a utility for making pinning files easier on Pinata, a third-party cloud service for IPFS. I made some small contributions to the IPFS core projects. I built some projects with…


A guide to interacting with JavaScript from Go/Wasm

field of wheat blowing in the wind
field of wheat blowing in the wind
Photo by Saira on Unsplash

WebAssembly, or Wasm, is an open standard that allows developers to build apps that run inside a web browser using compiled programming languages. With WebAssembly, it’s possible to write components of web apps in languages such as C/C++, Rust, C#, and Go, among others, which run within the same sandbox as JavaScript. This allows things like porting existing libraries, leveraging capabilities not available in JavaScript, and running code faster because WebAssembly is compiled into a binary format.

Recently I’ve been experimenting with WebAssembly to be able to run some Go code in the browser. Specifically, I’ve been trying to port…


A personal story about creating new products and their unintended consequences

Image for post
Image for post

In the fall of 2007, my parents gave me an unforgettable gift for my sixteenth birthday: a first-generation iPhone.

I still clearly remember watching the keynote in which Steve Jobs announced the first Apple-branded phone a few months earlier. As a teenager attending high school in my hometown of Vicenza, Italy, I tuned into the livestream just before dinner, carefully listening to every word he said. That evening, Jobs started announcing a “widescreen iPod with touch controls”, a “revolutionary mobile phone” and a “breakthrough Internet communications device”–theatrically pausing before confessing that he was actually talking about one single device: the…


Will they succeed in alienating developers?

Image for post
Image for post

I’m a software developer and I’ve been using a Mac for 15 years, when I got my first Mac running OSX Tiger 10.4. Throughout this time, professionally or not, I’ve been building full-stack apps with a variety of technologies, including JavaScript, Go, and PHP; for a while, I also worked on iOS and macOS apps, written in Objective-C (that was before Swift came to be). …


Where to put npm modules in your package.json. It’s not as simple as it seems.

Image for post
Image for post
Photo by Bonnie Kittle on Unsplash

A few days back, someone opened a pull request for svelte-spa-router — an open-source project I maintain as a client-side router for single-page apps built with the Svelte framework — asking whether they should install the module as a dependency or a devDependency in the package.json file.

Aside from the specificity of this case, I thought this was a great question in general — and worth discussing. When should we put a module dependency in package.json as a devDependency?

What the Docs Say

There’s actually official guidance on where to put a package, which is clearly written in the npm documentation. To quote exactly:


And why you should do it

Image for post
Image for post

Even if you don’t know about signed Git commits, you might have seen the screen above on GitHub.

Let’s leave everything else aside from a moment — isn’t it oddly satisfying to have a large, green “Verified” badge on your work?

Making a commit verified, or to be more precise, signed, is not as hard as you might think. Just as it sounds, signed commits are well, signed, cryptographically using a GPG key.

Why Sign Git Commits?

Before we get into the how let’s talk for a moment about why you should sign your Git commits. …


It’s time to adopt safer solutions and save time and money

Image for post
Image for post
Photo by Kyle Glenn on Unsplash

Most apps require some sort of authentication. You might be a developer working for a large company on their line-of-business apps, which require limiting access to authorized employees and checking their permissions. Or you might be building a new SaaS app, and you want users to create and maintain their profiles.

In both those cases and more, your first step when building the app will likely be creating the authentication and user management workflows. That is, creating a sign-up form and a login page, at the very least. …


Last Sunday, America was watching the Super Bowl LIV, with hundreds of millions of people gathered around TV screens, drinking beer, and eating junk food.

For those who work in the business of food delivery, that’s the equivalent of Christmas day. And you better bring up your A+ marketing game for that.

Even though, frankly, I had no interest in football, that morning I woke up to an email from Postmates, the app that delivers food from local restaurants, with a deal that recovering-from-Saturday-night me found too good to pass: one year of their Unlimited service at 54% off, or…


My talk at Node+JS Interactive 2019

Image for post
Image for post
Photo by Michael Descharles (Unsplash)

Last December, I gave a talk at Node+JS Interactive in Montreal, with the title JavaScript apps going Inter-Planetary.

I was very excited to have the opportunity to speak for the first time at a large tech event, and I got to explain and demo something I’m very passionate about: building static web apps for the Distributed Web, and making them “production ready”.

After briefly explaining what is the Inter-Planetary File System (IPFS) and how to interact with it, I showed how to run a static JavaScript app ( JAMstack) deployed through IPFS.

To make that app accessible to anyone in…


Using dm-crypt and auto-mounting a drive without storing the key on the local disk

Image for post
Image for post
Photo by adrian on Unsplash

I’ve been building a simple NAS for my home, and I wanted to store the data on a secondary disk, encrypted with dm-crypt/LUKS. There are plenty of articles on how to do that, but when it comes to automatically mounting the disk at boot, all of them recommend writing the encryption key in a keyfile and store it on the local filesystem.

This approach wasn’t acceptable to me: while the data would be encrypted at rest, the key to open the encrypted partition would also be sitting in the same place. If someone were to steal the physical server (imagine…

Alessandro Segala

Cooker of great risotto. Sometimes tech nerd. Driving dev tools, @code & open source @Microsoft @Azure ☁️ Opinions are mine 🇮🇹🇨🇦🇺🇸

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store