FastMail 9 Months Review

You may remember that earlier this year, for reasons weakly linked to my change of employer, I have been looking to change my email provider. After many years using Gmail via what is now called Google Workspace, the complete disconnection to consumer features including Google One got to me, and I looked for an alternative.

At the time I considered both ProtonMail and FastMail as valid options — the former having been touted all over the place for their security features and privacy. After trying them both, and originally choosing the former, I found out that it would just not scale for the amount of email I had in Gmail, and instead switched over to FastMail, that seemed to fit much better for my needs.

Now it’s over nine months later, and I thought it’s a good time to check-in with my choice, and provide an update for the next person looking to choose an email provider. But before I get into the details, I think it’s also important to qualify that this year has been anything but “business as usual” — not just because of the lockdown, but also because me and my wife ended up moving to a new apartment, and oh, yeah I changed jobs. This means that my email usage pattern changed considerably, and that changed which features and values of FastMail I stressed on.

So let’s start with the elephant in the room, that is the offline availability — one of the things I noted earlier on is that the default Android app of FastMail is not much more than a WebView on a portable web app. It might not be technically precise, but I still feel it’s a good description for it. It does have some offline features, but you can’t “sync offline” a whole folder of email to have access to without a network connection. This would have probably been a much bigger, if not even deal-breaker, problem… if we had been traveling, or if I had been commuting two hours a day every day. But given the lockdown, this part is not really affecting me, nearly at all.

I guess that if this is a significant enough feature you need, using a “proper” client on the phone would be a good option — and that might have been something I’d have tried in different circumstances. As far as I can tell, FastMail does not implement OAuth2-based IMAP login flows, so you still need application-specific passwords for this to work, which I’m not really fond of — if they did, and they also supported U2F from phones (why is it not supported is not clear to me), that would be a total non-issue. As it is, it’s very low in my priorities though, so I’m not complaining.

Let’s segue that into security — as I said I’m still not sure why U2F is not supported on phones, and why I had to enable SMS 2FA to login on my Android phone. But on the other hand, it works fine on computers, so there’s that going on for us. FastMail is also the first provided that I see taking Application-Specific Passwords to the letter: when you create the password you can decide which scopes to attach to it, so if you want a send-only password, you can. And that makes life easier, and not just for developers needing to send kernel patches out.

So there’s space for improvement (OAuth2 and U2F, folks?), but otherwise I’m feeling confident that FastMail knows what they are doing and are taking compromises intentionally, rather than by coincidence.

On the Web UI side, things may be a bit bumpy — the UI feels “less fresh” than Gmail or Inbox, but that’s not entirely bad: it’s definitely lighter to use, and it makes searches work nicely. I think what I am missing from it is a more “native feeling” — I miss the contextual menu to archive or delete threads. The drag-and-drop works great though, so there’s that about it. Some of the choices of where to find actions (such as report spam/report non-spam) are a bit confusing, but otherwise it’s all very serviceable, and very customizable, too! The (optional) Gravatar integration is also fairly handy when talking with people in the FLOSS community, although I wish more services decided to provide a “service identity”.

If anything, there are two features I really miss from Gmail: the first is something that FastMail appears to have tried, and then given up on (for now), and that is the portable web app mode on desktop. For a while I had a FastMail window rather than a tab, and that was easier to handle for me. Having notifications running in the background without needing to have the tab open in my browser just make my flow easier (which is why I do that with Twitter, Home Assistant, and Google Maps among the others), and FastMail would be an obvious option there.

The second feature is the composer “pop up”. When having to deal with the horrible old property management company for the flat we lived in, I often had to go and refer back to previous threads, because they rarely would follow-up in writing, and the reference person changed all the time. I ended up having to open a second (or sometimes third) window open with the various searches, while composing a long message in the first one.

But otherwise? I haven’t been missing Gmail at all, despite the significantly higher amount of email I had to read and write due to the work and flat changes. Filters work fine, the self-deleting folders (or labels, you can choose which version you want!) are an awesome tool to keep the sheer amount of email under control.

Okay, sure, the “Smart Mail” features that I never had would have been nice at times — fill in the calendar with events just by receiving them! But as it turns out, GSuite/Google Workspace never got that feature in for their users. It’s long been a consumers-only feature, and so I never got into the habit of relying on it. And even when I had access to it, the fact that it required explicit enrolling of the providers by Google, it meant that only those services that had enough critical mass, or were used by a Googler, would be covered. It would be so much better if instead there would be better support for providers to attach, say, ICS files when they send you time-based information, such as expected delivery (for groceries, online shopping), or appointments (for hospitals and so on — although this is unlikely to happen: while NHS is very happy to remind me of all appointments in full by SMS, email messages only contains a “Please click here and put some obvious information about you to see the medical letter with the appointment”, alas.)

So, I clearly am a happy customer; even more so now that I have experience Outlook 365 (I can’t make heads or tails of that interface!) And I would say that, if you’re looking for an email-only provider, FastMail is the best option I have seen. Depending on what you’re looking for, Google Workspace might still a better value for money (with the whole collaboration suite), but I have a couple of former customers that I would probably have signed up on FastMail rather than Google, if they asked right now.

To close up, yes, there’s a referral programme nowadays — if you’re interested, this is my affiliate link. You’re welcome to use it, but it’s not the reason why I’m suggesting to use FastMail. I’m suggesting it because it is a terrific service.

The Cat Who Reviewed Some Books

As promised, I am still doing sARTSurday posts about arts, including book reviews. In this case it’s not the review of a book but a review of a series. Lilian Jackson Braun’s The Cat Who… series, to be precise. So sit down and relax for a bit of feline whodunit review.

Personal History

This is a very special series for me. I was in primary school when I read a book from the series for the first time — not the first book in the series, though, but rather the 16th book, The Cat Who Came to Breakfast, titled in Italian Il Gatto Che Giocava a Domino (“The Cat Who Played Dominoes”). For a kid that was already into Agatha Christie novels, it felt so nice to read something more modern, and despite this not being something that my parents or my sisters ever cared about, it turns out the series is also fairly age-appropriate, at least most of the time.

I did manage to read four of the books in Italian – plus one of the unrelated short stories by Braun – but anything more was a lost cause. I went into so many different bookstores, even second hand bookstores, and I never found more than those. I even wrote to the publisher (Mondadori) asking them if they published more of the books, and how to find them and order them… this is before Amazon, and before most online bookstores, you need to understand. When I say I wrote to them, I mean that I typed it on an Olivetti typerwriter, and sent it over by snail mail. They did reply, by the way — but they also had no idea how to find any of the other books; I’m fairly sure the impression I got was that they didn’t print any of the other books, but Italian Wikipedia appears to disagree with me. Instead, they sent me over an anthology of short stories about cats and mysteries (or deaths), that included one story by Braun.

As an extra fun aside, some of you out there might remember a toy called 2-XL – not the 8-track version but the compact cassette one – which was available in Italy as well as a number of other countries. I loved that toy as a kid, and I think I might still have it somewhere at my mother’s house. It was pretty much just a tape player with trivia questions. One of the tapes I was given for that toy was about mysteries, and it had a question about this series of books! With hindsight, I guess they just translated the original Tiger Electronics cassette to Italian, because the series clearly had much more success in the USA than in Italy.

Anyway, when I decided I really wanted to be able to read English – after high school, when I didn’t have terrible teachers thinking they were helping while making us hate the language – I turned to these novels again, and bought a few books from one of the first Internet bookshops in Italy that actually sold English editions. Unfortunately even then it was not something I could read start-to-finish, because of the availability of the physical books. So it wasn’t until earlier this year that I decided to read the whole series, in order. It was a quarantine project.

This is one of the reasons why I feel that eBooks are still extremely empowering, despite the whole problems of artificial regions, DRMs, and so on. With very few exceptions, eBooks, like all digital goods, are removing the wall of scarcity that physical books have to live with. For good or bad, there’s no hunting down a second hand copy of the Italian translation in a bin in a small bookshop on the outskirt of Treviso — you go online, and get a copy of the book.

Well, at least most of the time. I know that some authors have explicitly boasted setting up deals selling only a limited amount of eBooks copies, to make an artificial scarcity that reproduces the physical world’s rarity into the digital world. I don’t particularly like this, but it’s their art and it’s their choice — I’ll just avoid playing to those notes myself, and not buy “limited edition” eBooks.

400 Miles North of Everywhere… or Not

So let’s talk setting for a moment, because this is a series that is fairly interesting. First of all, these are mystery novels, and they are generally light mystery novels. With a handful of exceptions, there’s no description of gruesome deaths, and while there’s fairly obvious references to characters sleeping around, they are only obvious to an adult, and I’m sure I had not picked up on any of them when I was younger.

The protagonist is Jim Qwilleran, a journalist from Chicago, and his cat companion Koko, who are later joined by another cat, Yum Yum. These are the only constants throughout the series, because the rest of the characters are not only varied, but they are also fairly disposable: I have not calculated the body count of each books, but there’s a lot of characters that, despite surviving for a number of books, end up dying some times “off stage”, for all different type of reasons: accidents, malfeasance, old age, health issues, …

The location of where the main action takes place is also not constant. When I read the four books as a kid, they all took place in the fictional rural community of “Moose County”, which is described as being 400 miles North of everywhere. But that’s not where the series started.

Indeed, the first few books take place “Down Below” in a city that could very well be Chicago, but is never specified. That’s where we get introduced to recovering alcoholic Qwill, and the posh Siamese cat Koko, and the first characters in the cast, some of which will stay around until the very end of the series. Then after twenty years from the first book, Moose County is introduced, which became the permanent setting for the series — well, with a couple of exceptions.

The different setting doesn’t really change the main feeling of the series, except for the fact that book number four The Cat Who Saw Red, the first book after the 18 year hiatus of the series, and the last one in the big city, that contains the only death that made me sick in my stomach when reading. Otherwise, the main difference between the two settings is that the cast stopped cycling, and started “building up”.

As for the cats… they feature prominently in the stories, not just as human companions but as raison d’être, at times, with most of the “good folks” sharing their life with a cat. The titular character, Koko, is a normal, pampered Siamese cat, that somehow acts just the right way to make Qwill see through misdirection and mysteries, and solve whichever murder just happened around him. While there’s the usual need for a suspension of disbelief of the typical whodunit series – why did people still invite Jessica Fletcher for events, knowing full well that someone will die just before or just after dinner? – Braun made a point that none of Koko’s behaviour was not out of the ordinary for a cat… just a lot of coincidence.

While the cast is far from diverse, and you can probably tell that Braun had not been mingling much with people outside of the USA, except maybe for Scots, it gives a warm feeling of rural closed communities, with a lot of time dedicated to the fictional history of the county, with immigrants from… a bunch of white European places. It’s definitely the product of its time in this regard — the only character that is described as being not white is a woman with not-well-defined “Mediterranean” origin.

A more interesting point is that, unlike a lot of other books I have read when I was a kid, the cast is generally older. Qwill himself is middle-aged to older, having gone through a nasty divorce before the events of the first book, and being a recovering alcoholic, and most of the friends he makes in the whole series are older than him. Any character that is described as being less than thirty is pretty much described as a youngster, if not a delinquent!

Qwill also appear to be – like me, my wife, and Sarah Millican – a “cheery childless”, not having particular fondness for children, avoiding babies, and having a short temper with their “nonsense”, which I totally relate to. While there’s a number of babies being born in Moose County, they usually stay off-screen, until at least they are grown up enough to at least say something.

And being a recovering alcoholic, he’s also the character that always goes for a mocktail — although I wonder if that word was even used at the time. But the Squunk Water with cranberry juice sounds pretty much like it. Once again, relatable.

As I said already, there’s a couple of exceptions about all the action happening in Moose County. Two of the books – The Cat Who Lived High and The Cat Who Moved a Mountain – have a different settings, Down Below and a different rural community, respectively. But at the same time, they are very clearly books that remind the reader why the action will stay in Moose County. So not really “pilots in disguise” for any reboot.

29 25 Delightful Novels.

The Cat Who… series includes 29 novels. Of these, I would recommend stopping after the 25th, The Cat Who Brought Down the House. There are repeated rumors that Braun, who was getting on with age herself, had not been writing the last few books — I have no idea nor proof about the situation with this, but the last four books definitely have lost their shine, and would not recommend reading them. Indeed, as I’m typing this review I’m still not done with The Cat Who Had 60 Whiskers, but I thought it wouldn’t be important to actually finish it, as already the previous book was hard to swallow.

It’s not just the writing going a bit off-style — Braun has definitely played with different writing styles between books – in a way that reminds me a bit of the first few books in Charles Stross’s Laundry Files – but her characters have always behaved… in-character. While many of them have not been particularly well developed, they have at least always acted consistently between books… until those four books.

My honest, personal impression is that Braun might have had a general outline of where she wanted to bring a bunch of stories and threads, and a ghost writer took care of fleshing it out. The reason why I say that, is the number of inconsistencies, the characters that appear to be completely forgotten, other characters that appear and disappear out of nowhere, instead of being at least introduced and discussed.

I’ll give you a few examples with spoilers, so be careful about this section.

In the Moose County books, the unofficial historian throughout is a character named Homer Tibbitt — who became clearly a dear friend of Qwill. Indeed, Braun at times talk about how the latter never met his grandparents, and that’s why he gravitates around older people, such as Homer. As of Turkey, the title of county historian has been passed on to a different character (Thornton Haggis), and there’s no hearing about Homer until Bombshell, in which he dies, off-stage, announced by a phone call — not to Qwill, but to the plumber, never heard of before, and never heard of since, who came visiting the barn just right then. And despite the long-running job that funerals are big deals in Pickax, and that Homer was like a grandfather to Qwill, there’s no discussion of funeral arrangements, no discussion of wills, no call to his widow, … it isn’t until Whiskers (the last book), that Qwill even appears to care about Homer being dead!

This is just one of the reasons why I think Braun might have left notes about her wanting to “kill off” Homer before the 150th anniversary of the city, but it wasn’t her actually writing the whole treatment. And similarly, once people complained about not having heard anything about Homer’s funeral, the following book tried addressing that.

Similarly, at the end of Bombshell, another, much younger, character dies, that has a relationship with a close friend of Qwill — and neither him nor anybody else that talks about how that death will reflect on the friend! Not even a quick call to express regrets, no talk about funeral arrangements… despite, once again, the local tradition of funerary prowess.

And to top it off, the reason why I’m slow at finishing Whiskers is that I’m now reading descriptions of how Qwill, a columnist that prided himself to be able to write a thousand words on the colour green, is having trouble finding new topics, and can’t extract a good column on… viticulture. I mean, sure, he’s not had a drink for half a century by then, but that doesn’t seem to have stopped him before mixing cocktails and talking shop. This is all so out of character that it makes reading the book just painful.

Speaking of out of character… in the last four books, Koko becomes a caricature of himself — while there’s always been the tension and mystery of whether Koko actually had supernatural powers, or just happened to be doing stuff that Qwill would read too much into (which, I found out recently, is called apophenia)… but in the last four books it became much more paradoxical, including suggestions that he would be able to send wrongdoings pretty much unrelated to anyone in the books at all — come on, someone “firebombs” city hall, Koko senses it before it happens, and it’s dismissed with a call of the police chief?

There’s more — the attorney that would rarely be spoken about except when something bad happened suddenly becomes “Uncle George” and appears every third chapter — the multiple young women that appear out of nowhere, drop the answer to the current mystery, and disappear — the young sidekick that joins the newspaper under false name, and then disappears without a trace — Lisa Compton nearly flirting with Qwill, or vice versa, despite them knowing each other for years by then.

I can see why the rumors spread, and I’m willing to believe them. As I said, my impression is that some time during the writing of Turkey (which starts fairly on par with everything else, but then degenerates), Braun started being unwell, and the publisher brought in someone to help. Someone who only gave a superficial reading of the plots of the series, and maybe a character sheet, but couldn’t keep them straight enough to write as well as Braun.

There’s a missing closure for Turkey, there’s missing characters in Bananas, there’s just plain bad writing in Bombshell, and Whiskers feels like a hackjob to the point I ‘m not sure how else to describe it.

Personal Views and Impact

I really enjoyed the “trip down memory lane” with reading The Cat Who… back to back. I wished there was a bit more closure towards the end of the series. I have a feeling that it was planned for it, but it just didn’t manage to materialize.

I can’t say for sure that the books have directly influenced me. But they definitely have left an impression in my memory, with the whole experience of trying to find a copy, writing to the Italian publisher, starting to read English books with it, and so on.

And maybe a bit of a subtle, subconscious influence made me worry less about old age and loneliness — even though I’m very unlikely to inherit billions of dollars like Qwill, particularly after reading the whole series, I can feel that there’s plenty to do in my later years to feel satisfaction, even without kids of our own.

While the journalistic profession is not really something I’m interested in, you can see from this blog that writing is something that I ended up doing quite a bit for. Was I impressed as a kid that from Qwill’s lifestyle? Did I miss the part where he could afford it because he inherited billions and owned the newspaper he wrote on? I don’t think it’s that easy, but I guess it might have been in the back of my mind growing up after all.

And of course, reading this now, that I’m not quite that young, that I can’t be drinking (and don’t care for), and that I share my life with a person I love, with no intention of having kids, I can definitely feel closer to Qwill, although clearly not entirely, and not just for the money.

Generally, if you’d like a reading that “feels” like the early seasons of Murder, She Wrote, then this might be the series for you. For the most part, I’d say it’s also a kid-friendly read, since there’s very little explicit violence – beside the murders, of course – and as I said, not really any explicit sex. Indeed, at most it’s said that Qwilleran and Polly just happen to lose track of time, since at many points Braun wrote they met after dinner for a quick chat, and one or the other left when it was quite dark out there — this was totally lost of ten years old me, since the concept of “after dinner” in Italy would imply darkness anyway. It wasn’t until I lived in Los Angeles, and then Dublin, that I realized how early Anglosaxons eat!

There’s a lot of nice pearls to dig around; Braun seems to have been predicting a lot of the banes of modern life, including smartphones’ autocorrects. And while she sounds a lot like a technophobe, you also need to keep in mind that most of the books predates “modernity” by quite a bit. And is aimed at a generally older audience.

I’m happy I read these books in a binge – and I hope that, if you pick up the series yourself, you’ll enjoy it as well. Given it’s now “winter lockdown” up here, I would suggest reading it while wrapped up in a blanket while drinking a strong, black coffee — just like Qwill would like it!

You can’t program the world to suit you

Last year, I was drafting more notes regarding the Free Software for SMB that I talked about before. While doing so I recognized that one of the biggest takeaway for myself is that successfully making a software project thrive takes a lot more than just good programmers, developers, designers. If you have customers you need people who know how to make a business work, you need people who can market your product, and you need people to remind you what the customers actually want as well as what they need.

It’s not an entirely new lesson — I wrote (in Italian) about helping Free Software without being a programmer fifteen years ago. I also wrote about the importance of teamwork two years ago. And I have spent a good chunk of my opensource and professional careers knee-deep in documentation matters.

I actually want to go back to the tweet that spawned the teamwork post:

Most things don’t work the way I think they work. That’s why I’m a programmer, so I can make them work the way I think they should work.

This is not meant to single out the author of the quoted phrase, but just to take it as an example of a feeling I get from many talks, and discussions, and in general just people out there. The idea that you can tech your way out of a problem. That by being a programmer you can change the way most things work.

And that’s not true, because the world is not running on servers, unless you found the Repository and I don’t know that. Indeed wielding “the power of programming”, thinking of changing the world just with that, sounds to me like a recipe for either failure or disaster.

I heard all kind of possible “solutions” to this — from insisting on teaching ethics in Software Engineering courses (with reasonable doubts about it), to regulating the heck out of any action businesses can take. I think the closest I have seen to something I would like (with all my biases of course) would be to make sure there is a mix of non-programming subjects in every university or high school that teaches programming as well. But even that has its own limitations, and I can totally say that I would probably have been frustrated by that and just ignored everything that’s not programming-related, when I was that age.

To make the example of Italy, that is under political turmoils most of the time, I could see a number of critiques of (in my opinion horrible) politicians based on where they went to school. In particular I saw some left-wing intellectuals criticising ministers (who have enough to be criticised about in deeds) based on the fact that they didn’t study in a lyceum but rather on a technical (or professional) school. Well, turns out I studied at a tech school, and I studied basic economics and (very basic) civic education for two years, and I found out the hard way that I know how VAT works much better than most of my local acquaintances who got an university degree after a lyceum: they never were introduced to the concept of VAT, the difference between types of taxes, and so on.

You could argue that there is no reason to know this particular tidbit, which is where I’m actually going to end up: there is no perfect education, the same way as there is no perfect solution. People need to learn to work with each other and they should know how to play each other’s strengths instead.

What I really would like to see proposed more often is focusing a lot more on teamwork. And not in the sense of “Here’s a topic for research, now work on it with your team”, which I had to do in high school — many of us have had the experience of being the only person working for a group assignment. What I would have loved to have would be cross-school year-long projects. Not competitions, but rather something that requires more than one type of expertise: trying to get three programming students in a room to work together, in my experience, turned to either two of them slacking off, because one of them actually enjoy doing the work, or if you’re lucky having someone with actual leadership skills telling them how to do their job… but still gives the impression that you just need programmers to do something like that.

In hindsight I would have loved instead if I had a project shared with some of my colleagues from electronics, mechanical and business tech-schools. Come up with a solution for a problem, that requires hardware and software, and a product plan that would include optimising the bill of material for small batch production and still make profits.

Sounds complicated? It is. Having had my own company, alone, for four years, made it very clear that there is a lot more than just being a programmer if you want to succeed. If you want to change the world, and in particular if you want to make the world a better place, then it takes even more energy, and a bigger group of people who can work together.

It also takes leadership. And that’s not something that I feel can be taught, and it’s the one that makes the most difference on whether the change is for good or not. I’m not good at leading people. I don’t have the right mindset most likely. I have trouble rallying people towards a common goal. I know that. I just hope that at some point, when I’ll be looking at more meaning in my work, I’ll find the right leader that can take what I can add to a good team, and let me shine through that.

I know it’s going to be repeating myself, but that is also what I mean with “there is no perfect solution”. If we decided that leadership is something that is important to score people, whether it is with school results, or with performance review at work, then we would be pretty much excluding a significant part of the population: not everyone wants to be a leader, are people who don’t want to be a leader worth less to society? Hint: this is not far from the question of how many multiples of a line worker a CEO should be worth.

And if you need a proper example of how “tech will not solve it”, just look at 2020 in general: tech is not really solving the Covid-19 world crisis. It does help, of course: videopresence, social network and chat services (including my employer’s), online “tabletop” games, shared documents infrastructure, online shopping, and so on… they all allowed people, isolating or not, to feel closer together. But it did not solve the problem. Even if we including medical sciences as “tech”, they still have not managed to find a way to deal with the crisis, because the crisis is not just medical.

People don’t ignore the lockdown requirements because they don’t have enough tech: it’s because there are other things in this world! It’s one thing to talk to my mother on the big screen of Portal, and another thing to spend a week at her house — including the fact that I can’t fix her house’s wiring while physically in another country. And then there is the big elephant in the room: the economy — tech can’t solve that problem, people working in industries that had to shut down because of the lockdown can’t just be “teched” into new roles; they can’t magically be vaccinated overnight; they need political leaders to make tough decisions around supporting them.

So no, you can’t program the world to suit your needs. Great for you if you have more tools in your toolbox – and there’s a lot more use for even basic programming literacy that has nothing to do with working as a programmer – but that doesn’t make you super-human, nor it allows you to ignore what’s going on in the world. If “being a programmer” is providing a superiority complex, I feel it’s more related to the fact that we’ve been well paid for a number of years now, and money makes the difference.

But that’s a topic for an entirely new rant, later on.

Home Assistant and CGG1 Sensors

You may or may not know that I’m one of the few tech people who don’t seem to scream against IoT and I actually have quite a few “smart home” devices in my apartment — funnily enough, one less now that we don’t have normal heating at home and we had to give up the Nest Thermostat. One of the things that I have not set up until now was Home Assistant, simply because I didn’t really need anything from it. But when we moved to this flat, I felt the need to have some monitoring of humidity and temperature in the “winter garden” (a part of the flat that is next to the outside windows, and is not heated), since we moved up in floors and we no longer have the “repair” of being next to another building.

After talking with my friend Srdjan, who had experience with this, I settled on ordering Xiaomi-compatible “ClearGrass” CGG1 sensors from AliExpress. These are BLE sensors, which mean they can broadcast their readings without requiring active connections, and they have a nice eInk display, which wastes very little power to keep running. There’s other similar sensors, some cheaper in the short run, but these sounded like the right compromise: more expensive to buy, but cheaper to run (the batteries are supposed to last six months, and cost less than 50p).

Unfortunately, getting them to work turned out to be a bit more complicated than either of us planned at the beginning. The sensors arrived on a day off, less than two weeks after ordering (AliExpress is actually fairly reliable when ordering to London), and I spent pretty much the whole day, together with Srdjan over on videocall, to get them to work. To save this kind of pain for the next person who come across these issues, I decided to write this up.

Hardware Setup Advices

Before we dig into the actual configuration and setup, let me point out a few things about setting up these devices. The most annoying part is that the batteries are, obviously, isolated to avoid running out in shipping, but the “pull out tab” doesn’t actually pull out. It took quite a bit of force to turn the battery compartment door, open it up, and then re-set it in. Be bold in taking them out.

The other advice is not from me but from Srdjan: write the MAC address (or however it’s called in Bluetooth land) on each of the sensors. Because if you only have one sensor, it’s very easy to tell which one it is, but if you bought more (say, four like I did), then you may have issues later to identify which one is which. So it’s easier to do while you’re setting them up, by turning them on one at a time.

To tell what’s the address, you can either use an app like Beacon Simulator, and listen to the broadcast, or you can wait until you get to a point when you’re ready to listen to the broadcast, later in the process. I would recommend the former, particularly if you live in a block of flats. Not only there’s a lot of stuff that broadcast BLE beacons, but nowadays pretty much every phone is broadcasting them as well due to the Covid 19 Exposure Notifications.

And to make sure that you don’t mix them up, I definitely suggest to use a label maker — and if you are interested in the topic, make sure to check out the Museum of Curiosity Series 13, Episode 6.

Finally, there’s a bit of a spoiler of where this whole process is going to end up going to — I’m going to explicitly suggest you avoid using USB Bluetooth dongles, and instead get yourself an ESP32 kit of some kind. ESP32 devkits are less than £10 on Amazon at the time of writing, and you can find them even cheaper on AliExpress — and they will be much more useful, as I’ll go ahead and tell you.

Home Assistant Direct Integration

So first of all, we spent a lot of time mucking around with the actual Home Assistant integrations. There’s a mitemp_bt sensor integration in Home Assistant, but it’s an “active” Bluetooth implementation, that is (supposedly) more power hungry, and require associating the sensors with the host running Home Assistant. There’s also an alternative implementation, that is supposed to use passive BLE scans.

Unfortunately, even trying to install the alternative implementation turned out to be annoying and difficult — the official instructions appears to expect you install another “store-like” interface on top of Home Assistant, which appears to not be that easy to do when you use their “virtual appliance” image in the first place. I ended up hacking it up a bit, but got absolutely nothing out of it: there isn’t enough logging to know what’s going on at any time, and I couldn’t tell if any packet was even received and parsed.

There is also a clear divergence between the Home Assistant guidelines on how to build new integration, and the way the alternative implementation is written — one of the guides (which I can’t now find easily, and that might speak to the reason for this divergence) explicitly suggests not to write complex parsing logic in the integration, and instead build an external Python library to implement protocols and parsers. This is particularly useful when you want to test something outside of Home Assistant, to confirm it works first.

In this case, having a library (and maybe a command line tool for testing) would have made it easier to figure out if the problem with the sensors was that nothing was received, or that something was wrong with the received data.

This was made more annoying too by the fact that for this to work, you need a working Bluetooth adapter connected to your Home Assistant host — which in my case is a virtual machine. And the alternative implementation tells you that it might interfere with other Bluetooth integrations, so you’re suggested to keep multiple Bluetooth interfaces, one for each of the integrations.

Now this shouldn’t be too hard, but it is: the cheapest Bluetooth dongles I found on Amazon are based on Realtek chipsets, which while supported by (recent enough) Linux kernels, need firmware files. Indeed the one dongle I got requires Linux 5.8 or later, or it requests the wrong firmware file altogether. And there’s no way to install firmware files in the Home Assistant virtual appliance. I tried, quite a few times by now.

ESPHome Saves The Day

ESPHome is a project implementing firmware (or firmware building blocks, rather) for ESP8266 and ESP32 boards and devices, that integrates fairly easily with Home Assistant. And since ESP32 supports BLE, ESPHome supports Xiaomi-compatible BLE sensors, such as the CGG1. So the suggestion from Srdjan, which is what he’s been doing himself, is to basically use an ESP32 board as a BLE-to-WiFi bridge.

This was easy because I had a bunch of ESP32 boards in a box from my previous experiments with acrylic lamps, but as I said they are also the same price, if not cheaper, than Bluetooth dongles. The one I’m using is smaller than most breadboard-compatible ESP32 boards and nearly square — it was a cheap option at the time, but I can’t seem to find one available to build now. It’s working out well by size, because it also doesn’t have any pin headers soldered, so I’m just going to double-side-tape it to something and give it a USB power cable.

But it couldn’t be as easy as to follow the documentation, unfortunately. While configuring the ESPhome is easy, and I did manage to get some readings almost right away, I found that after a couple of minutes, it would stop seeing any signal whatsoever from any of the sensors.

Digging around, I found that this was not uncommon. There’s two ESPhome issues from 2019: #317 and #735 that report this kind of problems, with no good final answer on how to solve them, and unfortunately locked to collaborators, so I can’t leave breadcrumbs for the next person in there — and it’s why I am now writing this, hopefully it’ll save headaches for others.

The problem, as detailed in #735, is that the BLE scan parameters need to be adjusted to avoid missing the sensors’ broadcasts. I tried a few combinations, and at the end found that disabling the “active” scan worked — that is, letting the ESP32 passively listen to the broadcasts, without trying to actively scan the Bluetooth channels seemed to let it stay stable, now for over 24 hours. And it should also be, as far as I can tell, less battery-draining.

The final configuration looks something like this:

esp32_ble_tracker:
  scan_parameters:
    duration: 300s
    window: 48ms
    interval: 64ms
    active: False

sensor:
  - platform: xiaomi_cgg1
    mac_address: "XX:XX:XX:XX:XX:XX"
    temperature:
      name: "Far Corner Temperature"
    humidity:
      name: "Far Corner Humidity"
    battery_level:
      name: "Far Corner Battery Level"

The actual scan parameters should be, as far as I can tell, ignored when disabling the active scan. But since it works, I don’t dare to touch it yet. The code in ESPhome doesn’t make it very clear if changing those parameters when disabling active scan is entirely ignored, and I have not spent enough time going through the deep stack to figure this out for certain.

The only unfortunate option of having it set up this way, is that by default, Home Assistant will report all of the sensors in the same “room”, despite them being spread all over the apartment (okay, not all over the apartment in this case but in the winter garden).

I solved that by just disabling the default Lovelace dashboard and customizing it. Because turns out it’s much nicer to customize those dashboards than using the default, and it actually makes a lot more sense to look at it that way.

Looking To The Future

So now I have, for the first time, a good reason to use Home Assistant and to play around with it a bit. I actually have interesting “connected home” ideas to go with it — but they mostly rely on getting the pantograph windows working, as they don’t seem currently to be opening at all.

If I’m correct in my understanding, we’ll need to get the building managers to come and fix the electronic controls, in which case I’ll ask for something I can control somehow. And then it should be possible to have Home Assistant open the windows in the morning, assuming it’s not raining and the temperature is such that a bit of fresh air would be welcome (which is most of the summer, here).

It also gives me a bit more of an incentive to finish my acrylic lamps work — it would be easy, I think, to use one of those as a BLE bridge that just happens to have a NeoPixel output channel. And if I’m going “all in” to wire stuff into Home Assistant, it would also allow me to use the acrylic lamps as a way to signal for stuff.

So possibly expect a bit more noise on this front from me, either here or on Twitter.

RPC Frameworks and Programming Languages

RPC frameworks are something that I never thought I would be particularly interested in… until I joined the bubble, where nearly everything used the same framework, which made RPC frameworks very appealing. But despite both my previous and current employers releasing two similar RPC frameworks (gRPC and Apache Thrift respectively), they are not really that commonly used in Open Source, from what I can tell. D-Bus technically counts, but it’s also a bus messaging system, rather than a simpler point-to-point RPC system.

On the proprietary software side, RPC/IPC frameworks have existed for dozens of years: CORBA was originally specified in 1991, and Microsoft’s COM was released in 1993. Although these are technically object models rather than just RPC frameworks, they fit into the “general aesthetics” of the discussion.

So, what’s the deal with RPC frameworks? Well, in the general sense, I like to represent them as a set of choices already made for you: they select an IDL (Interface Description Language), they provide some code generation tool leveraging the libraries they select, and they decide how structures are encoded on the wire. They are, by their own nature, restrictive rather than flexible. And that’s the good thing.

Because if we considered the most flexible options, we’d be considering IP as an RPC framework, and that’s not good — if all we have is IP, it’s hard for two components developed in isolation to be able to talk together. That’s why we have higher level protocols, and that’s why even just using HTTP as an RPC protocol is not good enough: it doesn’t define anywhere close to the semantics you need to be able to use it as a protocol without knowing both client and server code.

And one of the restrictions that I think RPC frameworks are good for, is making you drop the convention of specific programming languages — or at least of whichever programming language they didn’t take after. Because clearly, various RPC frameworks inspire themselves from different starting languages, and so their conventions feel more or less at ease in each language depending on how far they are from the starting language.

So for instance, if you look at gRPC, errors are returned with a status code and a detailed status structure, while in Thrift you declare specific exception structures that your interfaces can throw. Both options make different compromise, and they require different amount of boilerplate code to feel more at ease with different languages.

There are programming languages, particularly in the functional family (I’m looking at you, Erlang!) that don’t really “do” error checking — if you made a mistake somewhere, you expect that some type of error will be raise/thrown/returned, and everything else will fall behind it. So an RPC convention with a failure state and a (Adam Savage voice) “here’s your problem” long stack trace would fit them perfectly fine.

This would be equivalent of having HTTP only ever return error codes 400 and maybe 500 — client or server error, and that’s about it. You deal with it, after all it’s nearly always a human in front of a computer looking at the error message, no? Well…

Turns out that being specific to a point of what your error messages are can be very useful, particularly when interacting at a distance (either physical distance, or the distance of not knowing the code of whatever you’re talking to) — which is now HTTP 401 is used to trigger an authentication request on most browsers. If you wanted to go a further step, you could consider a 451 response as an automated trigger to re-request the same page from a VPN in a different country (particularly useful with GDPR-restricted news sources in the USA, nowadays).

Personally, I think this is the reason why the dream of thin client libraries, in my experience, stays a dream. While, yes, with a perfectly specified RPC interface definition you could just use the RPC functions as if they were a library themselves… that usually means that the calls don’t “feel” correct for the language, for any language.

Instead, I personally think you need a wrapper library that can expose the RPC interfaces with a language-native approach — think builder paradigms in Java, and context managers in Python. Not doing so leads, in my experience, to either people implementing their own wrapper libraries you have no control over, or pretty bad code overall, because the people knowing the language refuse to touch the unwrapped client.

This is also, increasingly, relevant for local tooling — because honestly I’d rather have an RPC-based interface over Unix Domain Sockets (which allow you to pass authentication information) rather than running command line tools as subprocesses and trying to parse their output. And while for simpler services, signal-based communication or very simple “text” protocols would work just as well, there’s value in having a “lingua franca” to speak between different services.

I guess what I’m saying is that, unlike programming languages, I do think we should make, and stick to, choices on RPC systems. The fact that for the longest time most of Windows apps could share the same basic IPC/RPC system was a significant advantage (nowadays there’s… somewhat confusion at least in my eyes — and that probably has something to do with the amount of localhost-only HTTP servers that are running on my machines).

In the Open Source world, it feels like we don’t really seem to like the idea of taking options away – which was clearly visible when the whole systemd integration started – and that makes choices, and integrations, much harder. Unfortunately, that also means significantly higher cost to integrate components together — and a big blame game when some of the bigger, not-open players decide to make some of those choices (cough application-specific passwords cough).

Why Am I Writing This Blog?

When I decided to take a break from the blog, I decided that the first thing I would be reflecting upon, and posting about, is my reasons to keep this blog running, and to keep writing on it. Because the answer to that should definitely feed into the decision of returning from the break and writing again.

The reasons why I started, continued, and am currently writing are all different. The only constant part is that I always wanted to make something that would be read or used by others. And while I hated writing essays for school, I always liked sitting down and writing on a topic I cared about. I remember before blogs were easy to get a start with, I wrote “articles” in LaTeX and posted it as PDF to the local Linux Users Group mailing list¹.

But the truth is that those “articles” were pretty much the same (low) quality of blog posts — as I already wrote about, blog posts are not very involved. I have written articles for actual publications: NewsForge back when it existed, the Italian Linux Journal (also gone), and LWN.net. The amount of work put on by the editors varied widely, with LWN having taught me lots, and being also the only one who paid for the articles — I feel it’s unfair, they did the most work and they gave money to me rather than the other way around.

Most of the readers of this blog probably know it from my blogging related to Gentoo Linux, but before I held a Planet Gentoo blog, I had a blog in Italian on Blogspot (for which I lost the backups, and only recovered some sparse posts thanks to the Wayback Machine), and in between the two I had a few posts on a KDE-sponsored shared blog (KDevelopers), which I have folded into this site, together with the few guest posts I did for Axant and for David’s Boycott Boycott Novell.

When I started blogging regularly for Gentoo Linux, it was mostly daily updates on the work I had been doing there. Whether it was multimedia packages changes or the Gentoo/FreeBSD progress — and that’s why a lot of the early blog posts look more like Twitter than the current blog, particularly those that predate Twitter. I still use this blog for updating the progress of various projects I’m involved in, but Twitter took over the “daily” updates, and the blog only includes “milestone” updates. Also, I have much fewer public projects compared to what I used to contribute to ten to fifteen years ago, for good or bad.

At some point, in addition to providing a status update, I used the blog also as a “showroom” — as a way to find work. Turns out that when I was a contractor I did indeed find a few gigs thanks to the blog itself — but since I have been working full time for many years now, that’s no longer a reason. Similarly, while before having a stable job, I have experimented with different ways to monetize the blog, from various referral systems to ads — none ever managed to cover the costs of running the blog at all, but in particular they would all now fit into the category of “rounding error”, as a former colleague would call them.

These last two points are important to the motivations discussion — a monetized blog, or a blog of someone who’s struggling to find a job, are very good reason to want more eyeballs on the posts, but both are not reasons I care for, at least not at this point in time. So why am I feeling disappointed that there aren’t more visitors, beside the psychological effects of counters and stats?

I guess the answer is that I have strong opinions, and the main motivation for me to write this blog nowadays is to voice them, and try to sway others — or be proven wrong and be swayed myself to a more positive and optimistic view of the world. Some are more active opinions than other: comments on working from home are very general and with the only action item to please consider the effect of it on others with different experiences and problems, while my repeated rants about licensing have action items that you can all pick up on.

I also still want to write so that other people can find out how to do stuff — because I love finding out how stuff works, and sometimes I even get to make use of that knowledge. I said this some time ago, that there’s significant value to spread the word, and share how things are done with others. Most of the stuff I have produced myself is not an invention of mine — it’s a refinement of someone else’s idea. Yes, even the free ideas that I have thrown out there but never managed to work on myself.

And then, there’s been quite a few personal posts on this blog over time – as I said before when sharing it at work, «there is a whole lot of me in [this] blog» – and those are there for… different reasons. Sometimes it’s personal therapy, sometimes a reminder to myself that I went through stuff, and I don’t need to squander opportunities. In many cases, it’s to share my experiences with others who might go through similar troubles. When I complained the first time about alcohol culture in Free Software, I was a very dissonant voice — nowadays this is a much more common complaint, and a number of conferences replaces beer parties with tea parties, though sometimes more to make fun of the complains… except the joke’s on them.

So what does all of this come down to, when it comes to the blog? Well, not really much to be honest. It means that there will still be project reports, opinions (and rants), explanations, and some personal point of view posts. I’ll also probably keep posting sARTSurday – even if not as regular as I tried at the beginning of the lockdown – including personal reviews of books and videogames, because I did write those before, and I see no reason not to keep doing that.

What it does say to me, is that my focus on the tight two-posts-per-week schedule is misplaced. While it did work great to keep my mind off the pandemic, particularly during the two months sabbatical between jobs, it’s proving more of a chore than a relief now that I’m back working full time and (mostly) ramped up in my new position. The tight schedule would have made sense if I tried to keep as many eyeballs on the blog as possible – which again is not really an useful goal to have for my motivations – but it also can reduce the quality of posts if I’m posting something early just so that I have a paced release of it.

So from now on, the schedule of blog posts will be once per week, on Tuesday, for regular post. sARTSurday posts will not be regular, but will appear when I find something particularly interesting to share with all. I’ll stop chasing timing and opportunities, and will instead post just what is ready to be posted, with no particular regard to scheduling the posts.

While thinking the blog’s motivation over, I also started wondering on whether I should spend more time on doing something… different. You might remember I have now a few times streamed on Twitch (and once on Facebook Live) — that started mostly as me trying to figure out how to convey information over the Internet that I would usually convey on a whiteboard. I still haven’t found a good answer to that, so I might end up doing more of that as time goes by, to experiment and find something that will work as well for work meetings. But it’s not going to be the kind of thing I expect people to care about or follow — after all, I have tried this before, over 11 years ago, and it wasn’t my cup of tea to continue.

What I might want to try is to prepare a “talk” out of some of the knowledge I have. Somewhere between a blog post and a conference talk, with a few of the things that I learnt over time and that might be worth sharing… but the motivation for that is less to become a famous streamer, and more that I might need to do that at work, and it’s worth trying to learn to make content in a way that can be used for training the newbies arriving. But don’t hold your breath on that, and don’t expect it to be any high quality to begin with.

Rather, if you find anything here, new or old that it might be, that is worth discussing further, feel free to bring it up — I might do a whiteboarding session about it, or I might take it for a jumpstart topic for a talk. Or at the very least I might write a refresher blog post to correct mistakes or update information of how things evolved in the meantime. And feel free to share it on aggregation sites like Reddit and Lobsters, just don’t expect me to be proactively there to answer questions — ask them here!

¹ Those articles are still to be found in this blog! I used to keep them on a page of my site, but have eventually folded them into blog posts. Which is how the archives go back to 2004!

It’s Time For A Break

Since before the beginning of the lockdown, I’ve been striving to keep a two-posts-per-week schedule to the blog, talking about my work philosophy, my electronics projects, and even trying a third post a week for a while with sARTSurday. Keeping the schedule was not easy, but I tried and only messed it twice: once when I mis-scheduled a post, and once when Microsoft “stole” my thunder.

About six months later, I’m running out of steam to keep the schedule. It might be because I spent the last few weeks worrying about whether we would have a flat to stay in as a new lockdown started. Or it might be that I’m now engaging gears with my new dayjob and it’s using all of my mental capacity.

I even tried whiteboarding — both with a physical whiteboard and on Twitch with Microsoft Whiteboard. Part of the reason why I did that is that with the lack of an office, I was looking for better venue to engage with my colleagues to discuss ideas and come up with plans. I can’t say it worked.

I have been mulling about options. I even briefly considered figuring out how much it would cost me to hire an editor to make the blog post more… polished. But the truth is that it wouldn’t make much sense — while I have been known for the blog in the past, blogs are the past. I never became a speaker when conferences were at their highest point, and I’ll never be a streamer now that they have been replaced by virtual events. I described myself recently as a C-list blogger – and I meant that. It seems nowadays to be B-list you need to have statically generated blog with no comments, and to be A-list you need to have not your own blog but just a Medium account. I don’t fit, nor I care to fit, into that world.

I guess I’m like a sportsman who’s too old to keep playing, but not well known enough to become a coach or a celebrity. And you know what? That’s okay. I’ll keep focusing on my dayjob as a “software mechanic” for as long as I can at least keep up to date to the new bubble’s stack. And maybe I can still get an idea or two out in the future, even when I won’t be able to do anything good with it myself.

This is not a goodbye, it’s just a “see you later” — I’ve been blogging for over 15 years and I’m not going to fully stopping now. If you have any questions or comments or suggestions on any of my old blog posts, feel free to leave a comment there, as I will be monitoring those, although possibly not as closely as before.

Update 2020-09-25: A couple of weeks into the break, I feel I’m finding myself more relaxed, and trying to get myself into a better position to get back to blogging later. Also in the meantime we finally finalized the paperwork for moving to a new apartment (that will also be a tale for later on in the blog), which means that we have a timeline for when we’ll have even less time.

So the current plan is that I’ll be taking time off posting until November 2020. After which I’ll come back on a one post per week schedule, until further notice. With the post going out likely on Tuesday or Wednesday, not sure yet. The reason for reducing frequency is to give myself some more time to work on content without rushing through incomplete posts.

“Working From Home”

Despite having commented on my continuing lockdown, I have tried extremely hard not to comment too much on the whole WFH debate, at least on the blog. You might have seen me ranting about it a few times over on Twitter though.

First of all, I have to admit I was lucky — when the whole lockdown started, I didn’t have to scramble to find the space to work from home: I already set up a home office, I had a standing desk already, multiple monitors, proper home connection without relying on WiFi, and all the kind of ergonomic setup that many of my teammates had to scramble hard for. I had set this up when I got to London, because I remember how bad it was for me to have a work/life balance separation in Dublin, when I had a desk just sitting next to the sofa, and I would end up working till late instead of just sitting on the sofa to watch TV or play games.

And of course, I’m also counting myself lucky that neither me nor my wife fell ill, form Covid-19 or anything else, that our families – while struggling a bit – had been safe throughout this whole event. And also, since we’re not interested in having kids, that significantly reduced the amount of worry, and of work, needed to switch to the lockdown scenario. I can only imagine how much harder for families it still is and don’t envy them.

But at the same time, I do miss the office, and am hoping not to stay working from home forever. I spent many years working from home, alone and isolated, while I had my own company, back in Italy. And while I can do a significant amount of work individually, I do believe that teamwork brings better results. Thankfully, “telepresence” options such as Portal, Zoom, and Google Meet help significantly to coordinate the work, but they are not quite the same thing. I feel more relaxed working sitting at a desk next to my colleagues than I feel working at my desk with a camera pointed at me while I’m working — it makes me feel self-conscious.

I’m also painfully aware that even with the luck of being able to keep working from home, there’s a lot of things that are left to be desired. For instance, while lots of people are bringing up the fact that you don’t have to pay for commute anymore as a great positive, few go back to point out that you end up paying more for utilities such as electricity, water, and heating. We could see a good 20% increase in electricity usage since I started working from home, and while we’re (again) lucky that this is not a significant difference, I can see how the heating in the winter, for people leaving in cottages, would wipe out any commuting savings for the year.

And while I can definitely find an easier way to get my focus time from home, even taking turns preparing meals with my wife, the amount of time we spend for fixing up two extra meals a day (breakfast and lunch) is noticeable. The whole “free food” perk is not just about not paying for food: it’s about the time it takes to make the food, and the time it takes away from your workday.

There’s a lot more of course, on both side of the equation — and there’s the whole point that we’re in the middle of a pandemic that is literally reshaping the way we live. I’m just looking forward to go back to an office, and to have a commute — not because I want to spend an hour on a crowded Tube train, but because I want a little bit of time to mark the end of a workday, stop worrying about the issues of the day, and turn off my work phone, so I can join my wife at the end of the day in full without splitting my mind with work.

It’s tiring, and it’s getting to me, and I’m sure it’s getting to many. Be looking out to your friends and your colleagues. Cut them a break if they are snappier than usual, particularly if they have complicated home situations – kids, babies, sick family (even extended), risks, moving houses, … – as it’s likely they are not trying to tick you off, and it’s more than likely that you’ll need the same before this is all over.

Ode to the five litres tank

You may remember that last year I wrote about a “plastics free” store, selling spices, oil, and even laundry detergent. I have no idea how they are faring with the current pandemic, but let’s just say that unless they turned into a conventional store, there’s no way that I would be interested in going and buy spices, nuts and pasta from huge containers that are handled by dozens of customers per day — and particularly by kids sticking their grubby fingers into the nuts’ boxes to steal a macadamia.

Even if the concept would have been workable before, I doubt that after this whole experience it’s going to thrive — while I care about the planet, I care about not dying more, and I assume the same is going to be true for the vast majority of the public (but not everyone, I’m sure). So what are the alternative options to buying without plastic containers? I can only think of the idea of buying in bulk.

Back at the start of the lockdown, one of the things that was getting harder to find in the local supermarkets was soap — and if you have read the blog post linked above, you know that I’ve been using refills. In particular at home we have a very nice glass, 1L liquid soap dispenser bottle that came with some decent lavender liquid soap we bought in TkMaxx over a year ago, and we’ve been filling it with different brands’ soap, that are usually available around the £4/L mark. We had a couple of litres stashed away, but eventually they started running low.

So looking around we found a 5L tank of hand wash, targeted as commercial users, but easy to get a hold of in the pandemic. It’s a bit more expensive than what we found before, but we liked it better, particularly given the fact that it has not ruined my hands, despite us washing our hands a lot more than before. And that had me thinking that most most likely the 5L tank can be reused, rather than recycled, much more easily. For instance, you can use it to collect waste oil when deep frying, and then bring it to the correct recycling point for that. Or in any case you can throw it with the recycling.

But it’s not just the plastic involved that makes a difference. Just think of how often you would need to get these delivered in half a litre increment. The 5L tank is due to last us just about five months, so you get around two deliveries a year, instead of about two a months (or once a month if you can just order the refills in pairs). And because we liked the quality of the soap, we ended up ordering the shampoo from the same brand, and fill a plastic bottle instead; at least for my hair it works well, and I’m picky — and it costs nearly half per liter than my usual ones.

There’s more than shampoo and soap that can be bought in 5L tanks. Body wash, fabric softener, vegetable oil, … and liter-for-liter they clearly need less plastics, if that’s the main measure we use for pollution, and they require fewer trips to shops and fewer deliveries. They are a bit awkward to use sometimes (thus why we have a 1L bottle we pour the vegetable we use for cooking), but the main disadvantage is that they take space, and while we’re lucky to have enough space for them in our flat, I don’t think I’d have been able to make the space for them in Dublin (didn’t help that the closet had a ton of stuff left over from the landlord and the previous tenants, including umbrellas, 5cm square framed mirrors, and stuff like that).

And I’m taking the 5L tanks as an example, but they are a metonymy for a number of other bought-in-bulk items, many of which are hard to find here in London. Even toilet paper, another staple of lockdown hoarding: Dublin and London got me used to order it in 16- or 9-roll bags, while in Italy I was used to buying 48/64 rolls at a time. It’s non-perishable, and if you do have the space to just get it and stuff it somewhere until you need it, why increasing the number of times you need to order it?

Funny story here: when I moved to London, and found out that my local Sainsbury’s didn’t have anything over 4 rolls bags, I decided that it would be easier to order 60 rolls from Amazon and have it delivered. The cost was meaningfully lower, and at the time I was not setting up for groceries’ delivery, and rather going to the stores myself to pick up just the stuff I needed for the days — bringing toilet paper on the bus is bulky and uncomfortable. Unfortunately i forgot to check where I asked Amazon to deliver it, and I ended up receiving nearly a cubic meter of toilet paper to my office, and had to find a way to bring it home, considering it took me an hour to go from King’s Cross to home, between Piccadilly and bus. Thankfully, two trips with my Filson duffle bag at a late hour were enough to bring it home. I love that duffle bag.

What I’m suggesting is that city living needs to start adapting to the idea that people need storage space. When looking at apartments, you can’t but wonder what’s the chicken and what’s the egg, between the lack of cupboard storage and the just-in-time supply used by most grocery stores in the big cities. Maybe in five years we will all live in apartments that have enough cupboard storage that you only need to buy non-perishables once a month, and the local stores will be providing fresh food and only urgent needs.

There’s also another clear problem with getting people to use bulk-volume non-perishables: beside Amazon, very few sellers carry those as options, at least in the UK. Yes, there’s Costco here just like in the USA, but that’s not common, and you do need to make sure you account for the £15/yr options. In Italy if you have a VAT ID you often end up shopping at Metro, because that’s an option that opens up to you…

Again, this is the type of thing that needs to be adapted for, after this whole pandemic happened. Reducing the frequency of deliveries by buying in bulk should be favourable for both grocery stores and consumers, given how the panic buying broke most delivery systems. So maybe next year Morrisons will have more 5L tanks of stuff available for delivery, not just the vegetable oil.

Revisiting Open Source Washing Machines (in Theory)

A number of years ago I wrote a post about the idea of Free Software washing machines, using it as an allegory to point out how silly it might be to attack people for using products with closed-source firmware, when no alternative is readily available. At the time, the idea of wanting an open source washing machine was fairly ludicrous, despite me pointing out that it would have some interesting side effect with programmability.

Well, in 2020 I would actually suggest that I really wish we had more Open Source washing machines, and actually wish we had, in general, more hackable home appliances (or “white goods” as they are called over here), particularly nowadays that it seems like connected appliances are both trendy and the butt of many jokes.

It’s not just because having access to the firmware of everything is an interesting exercise, but because most appliances are lasting for years — which means they are “left behind” by technology moving on, including user interfaces.

Let’s take for instance washing machines — despite being older than the one in my apartment, my mother’s LG washing machine has a significantly more modern user interface. The Zanussi one we have here in London has one big knob to select the program – which is mostly vestigial from the time it would be spring-loaded and moving to select the various phases – and then a ton of buttons to select things like drying mode (it’s a washer/dryer combo), drying time, and the delay start (awesome feature). You can tell that the buttons were addition to an interface, and that the knob is designed to be as similar to the previous interface as possible. And turns out the buttons are not handy: both drying time and delay have only one button each — which means you can only increase those values: if you miss your target, you need to go back to zero and up again.

On the other hand, my mother’s LG also has a knob — but the knob is just a free-spinning rotary encoder connected to a digital controller. While her model is not a dryer, I’m reasonably sure that the machine has a delay start feature, which is configured by pressing one button and then rotating the wheel. A more flexible interface, with a display a bit more flexible than the two multi-segments that our current machine has, would do wonder to usability, and that’s without going into any of the possible features of a “connected appliance”. Observe-only, that is — I would still love seeing a notification on our phones when the washing machine completed, so that we don’t forget that we have clean clothes that need to be hanged to dry. Yes we actually forget sometimes, particularly before the pandemic if we left them to delay-run from the morning.

Replacing a washing machine just because the user interface is bad is a horrible thing to do for the planet. And in particular when living in rented accommodation, you own the white goods, and even when they are defective, you don’t get to choose them — you end up most of the time with whichever is the cheapest one in the shop, power efficiency be damned, since rarely the landlords are paying for electricity. So having hackable, modular washing machines would be just awesome: I could ask our landlord “Hey can I get a smartmodule installed for the washing machine? I’ll pay the £50 it costs!” (seriously, if it costs more than that, it would be a rip-off — most of the controls you need for this can be hardly more complicated than a Feather M4!)

Oh yeah and even if I just had access to the firmware of this washer/dryer I might be able to fix the bug where the “program finished” beeper does not wait for the door’s lock magnet to disengage before starting. The amount of times I need to set a timer to remind myself to go and take the towels out in five minutes is annoying as heck.

But it’s not just washing machines that would be awesome to be hackable and programmable. We have a smallish microwave and convection oven combo. I got it in Dublin, and I chose this model because it was recommended by an acquaintance for its insistent beeping when the timer completes. If you have ever experience hyperfocus at any degree, you probably understand why such a feature is useful.

But in addition to the useful feature, the oven comes with a bunch of pretty much useless ones. There’s a number of “pre-programmed” options for defrosting, or making pop-corns and other things like that, that we would never use. Not just because we don’t eat them, but also because they are rarely recommended — if you ever watch cooking channels such as How To Cook That, you find that professionals usually suggest specific way to use the microwave — including Ann Reardon’s “signature” «put it in the microwave for 30 seconds, stir, put it back for 30 seconds, stir, …».

And again in term of user interfaces, the way you configure the convection temperature is by clicking the “Convection” button to go from full power (200W) down — and if you got it wrong, oops! And then if you turn the knob (this time a free-spinning one, at least), you’re setting the timer, without pre-heating. If you want to pre-heat you need to cancel it all, and resume the thing, and… you see my point.

This is a very simple appliance, and it works perfectly fine. But if I could just open it and replace the control panel with something nicer, I would love to. I think that I would like to have something I can connect to a computer (or maybe connect an USB thumbdrive to), and configure my own saved parameters, selecting for instance “fish fingers” and “melted butter”, which are the more likely uses of the oven for us at home.

But again, this would require a significant change in the design of appliances, which I don’t think is going to happen any year now. It would be lovely, and I think that there might be a chance for Open Source and Open Hardware amateurs to at least show the possibility for it — but it’s the kind of project that I can only with for, with no hope to get to work on myself, not just for the lack of time but for the lack of space — if you wanted to try hacking on a washing machine, you definitely need a more spacious and populated workshop. My limit is still acrylic lamps.