Meta

Service Announcement: Now Hosted on Gandi

You may remember that I skipped one week of posting, because WordPress.com has a broken editor that does not work with Windows and US International keyboard. The bug is still there, a new minor version of the Gutenberg editor was released, but the problem was not addressed. Upstream developers I’m told are looking into it, but given the first reply from them has been to tell me that it works fine for them on Mac, I’m not holding my breath.

So I decided to throw away the €24 remaining from my Personal subscription to WordPress.com, and migrate to a Gandi Simple Hosting installation instead. Turns out that, despite what the “Happiness Engineer” told me yesterday, the bug does not affect the whole “WordPress platform”, since you don’t need to install the Gutenberg plugin at all, and you can rely on the older version bundled with WordPress itself, which does not have this bug at all.

It took me about a day to figure out all of the setup to export one, import the other, set up everything to look as close as it used to, and deploy again. In particular the Web-based import failed for me all the time, because I just have that many blog post (I can only imagine what Scalzi would get), but it worked out in the end, since Gandi gives me access to an “emergency console” over SSH.

The most annoying corner cases were with trying to make the switchover as seamless as possible: because I was trying to switch flameeyes.blog from being a WordPress.com site to an external site (with Jetpack), I had to accept some downtime, as WordPress.com would get thoroughly confused on who was serving what for it. Right now I think everything is set up correctly.

Now, since I have full control on plugins, it means I need to experiment a bit to make sure everything behaves the way I want. And it means I can actually replace some of the WordPress forced integrations with more useful ones for myself personally. I decided to start by adding a Facebook Messenger integration, that’s because IRC is basically dead, and while I still get requests by email from time to time, if you’re trying to reach me in pseudo-realtime, this is possibly the easiest option I can give people.

Also this is a reminder of what I already ranted, which is my opinion that the fact that you cannot even pay for a good blogging platform nowadays. My workflow is not that outrageously niche: I just want to type in blogs with Windows and an US International layout keyboard. Changing layout is not great, because I would keep typing extraneous spaces around the dead keys, but that’s literally the only option that WordPress.com gave me! They can’t downgrade the Gutenberg plugin, or rollback the change that broke this. Until I pointed out that for three weeks they have left me with a broken workflow, with no estimate of when it would get fixed, and without even trying to entice me to stay on the platform, they didn’t even consider offering me a few free months to cover for the problem.

Obviously, Scalzi has a different experience, but he’s also a much larger profile customer than lowly me. But if you keep wondering why blogs end up disappearing… don’t discount the annoyance of keeping up with tools that keep expanding in different directions than small-fry blogging.

Reader Is Dead, But What About Writers?

I don’t think I need to repeat my point of view on the Google Reader shutdown, as I already stated that I don’t think that Google shutting down that product had the domino effect a few people insist it did. I do think, though, that I should add my point of view on what I personally think caused not quite the death of blogging, but at least a significant reduction and reframing of what we unironically used to call the blogosphere.

You see, even before Reader shut down, there was a trend going on the authoring side of things, that I couldn’t put a finger on until more recently. Whereas when I started blogging there were a significant amount of alternatives, and indeed I have used a number of different blogging applications over the years, nowadays there’s only a handful, and I don’t think I know one that is still focused on blogging.

I have already ranted about Hugo (and hit the annoying orange site with it), and the way it clearly stopped to be aimed at bloggers a long time ago, adding more and more features for general sites authors, or online ebook writers. The same is true, more or less, for WordPress which I’m using now: if you look at the way WordPress is used in the wild, tons of websites use it with heavy customization and plugins for things that are absolutely not blogs!

Indeed, if you look at the WordPress.com plans you can notice two things: the first is that their most expensive plan is the eCommerce one, that is geared at “sell[ing] products or service”, and the other that the difference between Personal and Premium features are fairly limited, but include “Payments” and “Monetization”. So it should not be surprising that there is little care given for bugs that affect long-form writers.

And that is what brings me to think that the problem is not that Google Reader shut down, but that blogs became incredibly hard to keep running! Blog apps, such as early WordPress, Typo (later renamed Publify and probably dead by now), Serendipity, and so on so forth, had the advantage of being a specialized CMS (Content Management System) that would not require hand-tailoring to fit the needs of long-form writers. But then a number of these applications ended up being extended, and sometimes contorted, to become a generic CMS.

Note that I’m not saying that generic CMS are not useful. I started my “online” with setting up CMS for a gaming community, to set to the side of a bulletin board, and even ended up writing my own at some point. Plus the whole static site business is something that is closely related to solving the CMS problem statically. But as my problems with Hugo show, generic CMS and blog engines tend to have fairly different directions in requirements.

After abandoning Hugo, I looked at a few alternative options I could find around. Most of the blog solutions I kept finding around relied on static site generators and iframe’d comment services like Disqus (or any of the alternative, sub-par solutions). Nowadays it looks like Substack and the whole business of newsletters are capturing the vast majority of the long-form writers out there.

But the Medium/Ghost/Substack crowd is not for me, at all. Among other things, I would be missing the discussion. I’m already tired by the fact that most people stopped commenting on blog posts, and by a number of authors deciding to forego comments entirely, and letting Reddit, Hacker News, and other communities with different shade of dysfunctionality lead the conversation.

The obvious question then is, why am I not building my own tool? Well, beside a possible conflict of interest with my dayjob, which I wouldn’t want to have to explore, there’s the whole reason of why I moved away from Typo/Publify, into Hugo, and then eventually WordPress: I could be building and maintaining my own blogging solution, but then I would not be writing. And I want to be writing. Also, while I have ideas of how an architecture of a blogging engine should be, that doesn’t mean I have the skills to code it, particularly on the frontend. I’m a horrible web developer.

There are, obviously, some other working engines out there. People have built custom solutions since forever. Most of the newspapers that turned online have added a “blogs” section to their online presence where authors, friends, and guests can spout their bile, I mean share their opinion. And while there are not as many Rails developer reimplementing a blog badly, I’m sure there are enough NodeJS, or whetever the next web framework is going to be doing the same, because those things never change.

But the truth is that while some nearly-twenty years ago it seemed like blogs were a way to make money, and blogging platforms were going to be profitable, we have now accepted that most people will not be making money on their blogs (or, as most creators may have started to notice, their YouTube channel), and blogging platforms are not going to be cost effective when they have to deal with a firehose of spam comments, security issues, and scrapers.

The way I’m seeing it, what we have is an oligoculture of blogs. You have WordPress on one side, both as a platform and an engine, which is fairly well used, then you have a few platforms such as Blogger, which still have their die hard users/creators (I don’t have any insight on how Google’s handling of Blogger is going, but judging from what I hear of features flickering in and out, and the comment system being even more unusable than it was when I wrote with it, I cannot imagine it being well maintained), and then finally you have all the static content engines, which to me all fit into the same category, as they vary in implementation, but not in the idea that you “just” need a git repository (or an S3 bucket, or whatever else they use.)

To be perfectly clear, I don’t think this is the reason why everything in the world is wrong. Nor even the sole or primary reason why blogging is (considered) dead. First of all, even with this bad selection of tools, there’s a lot of blogging going on. My NewsBlur subscriptions are not quiet, even though they did reduce in updates over the years. But most importantly we have had a lot of other things going on that have “stabbed our dears to death”, for example (and it’s only one out of many) think of all the “news sites” that are basically just repeating and rephrasing someone else’s write up and call it “news”, like Hackaday did with one of my old blog posts last year.

Content creators, as well as content consumers, change their habit, and their preferences, and sometimes the former linger in the past, out of habit or out of preference. Sometimes, the future is not as permanent as people think, and sometimes, the past is something we’ll be happy to leave behind. I feel like I’m definitely part of a past I don’t want to lose, but I’m probably already forgotten.

No Post This Week, Because WordPress.com Is Broken

This will probably, eventually, cause me to write a much longer, ranting post about the state of blogging in 2021.

But right now I cannot complete the blog draft I had started before my two weeks trip to Lithuania because of a bug in WordPress chosen editor Gutenberg: gutenberg#35086: typing with dead keys under Windows is not possible — it should be on macOS, or so they say, and I have not tried Linux (notice how I had to remove the contraction there?), but this is not something I am particularly happy about.

So no post this week, sorry, blame Automattic.

A Note About Burn Out

Some of you already read my original blog post and reached out after I took a break, so you’re probably not surprised about this, but I thought it would be worth talking explicitly about this, because it’s something that affects not just me, and not just tech folks, but a lot of people overall.

Burning out, is a real thing.

It does not matter how much you like doing something, and how good you are at it, there comes a time that just by continuing to do what you have already been doing, you start getting more tired than ever. For me, while spreading knowledge is one of my favourite things to do (as you may have gathered from the fact that I blog about absolutely everything), it came to the point that juggling being an intern manager (walking the walk), supporting a possible newcomer to the team, coaching one of my teammates, and trying to spread more knowledge in the form of Twitch streams turned out to be, well, too much.

As such, I think it was a good idea for me to take most of August off. I say most, but truthfully it was just a couple of weeks, but that alone was good. One of those weeks was going out of London for the first time since before the pandemic, to “test the waters” and had us visit Southampton, which was quite nice, but also a bit of a disappointment for not managing to see red squirrels in the Isle of Wight.

I think the important part ot point out here is that I’m here for the long run, and I shouldn’t be trying to cram myself, particularly if it risks burning me out. But this needs to accept that the whole “fear of missing out” is real, and it even applies to the fear of missing out not only on events, but on prestige and “ego strokes” too.

As I said before, it’s been a long time since my blog and my open source contributions have been my main outputs. They are still my main public facing outlets, since at work I prefer working on backends of backends – the only ever publicly visible change I made to a Google product was removing references to Google Reader and Yahoo! Pipes from the Fireburner mailing list unsubscribe landing page – but they are no longer what bring me the customers, and thus pay the bills.

If they were, then I know I would be spending a lot more effort, and a lot more money, to get the streaming part down a lot more. Given enough cash flow (or savings), I would be using something like Restream to make sure I would be reaching a wider “live” audience, paying someone to add captions to the recorded streams, probably hire an artist to add graphics and logos and all kind of cool stuff to make it compelling. And it would get is dedicated setup with a “safe” desktop so I don’t risk streaming the wrong information while still feel natural as I use the computer.

There’s more that I could do with the blog, as well. I have been considering a couple of times to figure out how expensive would it be to hire an editor, and have them work with me not only on reducing the rambliness of some of my posts, but especially to set down a “style” of for the blog as a whole. This is something that honestly still tempts me simply because I feel it would teach me so much more about writing, but it also is an unreasonable expense for my amateur self.

Similarly at work, even discounting the whole “people management track” (no, I won’t be a manager any time soon — I can be an intern host every few years, hopefully doing at least a passable job at it, but the whole calibration and career conversations drain my soul to a husk), I’m sometimes envious of the colleagues who are easily recognizable as large-scale architects, or who can single-handedly fix a broken organization from the individual ranks. But for that to happen, you need to sacrifice something — most of the people I know who manage those roles end up working a lot harder and a lot longer than me, while I don’t feel I’m ready to make those sacrifices.

So instead, I think I need to internalize that there’s things that I don’t care to achieve, because they are not what I’m aspiring to for real. I will not be the streamer that teaches a mass of people how to reverse engineer glucometers, bringing in an era of open protocols for medical devices. I will not be the opinion writer that directs the discourse around open sourcing critical infrastructure. I’ll never be any Photographer Of The Year, no matter how many shots I take.

The people I worked with, though, know that they can call on me when they are dealing with a complex system that needs simplification: no matter how haunted a graveyard is, I built a fame of being able to slowly pick away at all the complexity, the organically grown modules that people forgot about, and set the pace for a fresh, ghost-tour friendly system. It’s something that I have a knack for and one I can deliver on, and while it’s not always appreciated, when it is it makes my day. I love when I hear back from former colleagues thanking me for having left breadcrumbs on how to continue a long-term deprecation, or for having written a document explaining a particular issue, or for having left a script that takes care of the most annoying steps in upgrading a codebase to Python 3.

And this has been the case many times before in my FLOSS “career” too. I’ve not been out there publicly speaking about build systems, and I have not involved myself in any of the modern replacements directly. But for many years, people came to me with problems with any build system, because they knew I could dig around the many corner cases to find an answer. I sometimes wish I could still be up to date to do that, but honestly that’s been so long out of my view that I have barely managed to update unpaper.

So how does this relate to burn out? Well, I guess I need to remind myself to set reasonable goals. Not just in terms of being reasonable choices but also in terms of being reasonable to myself. As I said above, there’s a long list of things that I will never become. There’s also a list of things that I have been, but can’t be again: much as I miss the time doing FLOSS for most of my day, that has never got to the point of paying the bills for me, and right now I prefer having the stability than the excitement — and I don’t think I’ll ever hit it big enough to get the pile of money needed to retire at 40 and then spend the rest of my life doing only stuff that pleases me. Not because it’s not an achievable situation (I know a number of people who did manage that), but because the emotional, psychological costs of aiming for that would burn me out.

Instead, I think I’m going to keep doing what I have been doing for the past ten years or so: spend my free time trying to make my world a better place, even if it’s just bit by bit. One glucometer at a time. One random home automation solution at a time. One stream at a time. One squirrel at a time.

And in doing that, I want to make sure I give back to the community, not just in terms of leaving breadcrumbs for the future, but also in terms of supporting the creators and toolmakers that I find the most positive and world-improving. And this starts obviously by supporting more of them on Patreon, but also trying to come up with better ways to spread and share the best content.

And, you know, if you think that I know something or have an opinion you think I can elaborate on, you are the most welcome to reach out to me! Either through comments, email, or even Facebook Messenger!

Burning Out From «Always Be Helpin’»

There is a phrase that I heard more people using than I would have liked, in my life: Always be hustlin’, which is often connected with Uber, though I highly doubt they are the source of it in the first place. I don’t like the phrase nor the spirit it embodies because I met those people. The guys who kept pestering me for years to build their dream site, game, app, always with a catch to make money out of it by hooking people in. For the most part these would be badly thought out clones stealing ideas from one or two successful existing examples, but who am I to go and keep score.

I prefer a variant of it which would be «Always Be Helpin’», inspired in part from Susan Calman’s talk of kindness. The way I tend to express this is: if helping someone does not cause me to lose time, energy, or money, helping them is close to a duty. Unfortunately, turns out this is not as easy as I thought when I expressed it.

I have been applying this particular rule both at work, for which I introspected on the role of senior engineers a couple of times, and in personal time, by trying to keep all of my work “visible”, either as blog posts or as Twitch streams. I’ve been trying to formulate ideas in a way that are more easily understood by newcomers (including my wife who’s been learning Python for the past couple of years and can now follow at least some of my projects), and I even ended up buying stands so that I could more easily stream the hardware implementation of my aircon controller.

But, it turns out, this is leading me to burn out, in both environments, and I seriously need to scale this back.

At work things are actually quite good, but I did sign up to host an intern and, though I’m getting a lot of satisfaction to the experience overall, it reminded me why I don’t want to be a manager. It’s too much pressure for me, and it ends up draining my energy with worry to put someone’s career in my hands. And that is probably the hardest problem in my role: to maintain the expectations of my role, I need to maintain a healthy impact on “people and org” — and that’s something that taxes me more than the technical requirements of the role.

This is something I struggle with. It makes total sense that for a senior engineering role to be having an impact on the work of other people, and I have been doing my best over time to “scale myself up” as they say — but it’s not something that comes natural to me and it takes energy. At the same time, I’m not the perfect code monkey that can live forever off that, so I really need to find a way that works for me without completely burning out.

In personal time, I found myself trying to find time that works to go ahead and work on stuff “on stream” and explain it there so that random viewers can figure out what I’m doing. But that does not really work that well. if I don’t schedule it ahead of time, nobody turns up, but to schedule it ahead of time it means I need to add to the pressure of not being able to do a number of other things I may have to do.

And the “sizeable chunk of uninterrupted time” that the streaming has been using would be the same reserve I would have for relaxing: after work, before or after dinner (depending on how early it ends up being), and not when we’re out with friends. Since now going out with friends is again an option, at least for some friends who are double-jabbed, this means there’s a lot fewer “slots” for me to stream in. I’ve been pretty much forcing myself to find that time, but this is now getting in the way not just of my own relaxation, but also of family and social life.

When I started the streams, it was because I wanted to figure out how to convey information over video calls, since that has become the norm for work related content as well. And I think I did get a bit more practical at that than I used to. But at the same time, I realize that it’s not something that can be done without a significant investment in the right tools for the job.

I ended up getting the microphone and enough mounts that allow me to keep my already owned camera (and lense) in a position that is useful — and I got the light, which admittedly I can use for a number of other things (and I already used twice for completely different purposes). But then again I can see that to get something of a decent enough quality to make sense, you do end up needing preset selection buttons (Streamdeck or the like), and if you want to have a bit more audience, you end up having to pay one of the providers to get you restreaming options (or technically I could do it from home, if I could be bothered with setting up a restreaming server here, Hyperoptic does provide 1Gbps service, but it’ll be even more work for me to do.

And that is without considering the fact that, even though I have now the videos posted on YouTube for the future, I do not have captions on them. And I have personal experience reminding me that this is not the good way to have content up — but it’s also not something I can do myself, so I would have to pay someone to do it… and it’s not a lot of money, but it’s more money than I wanted to invest just to randomly try stuff out and maybe explain something to the wide world.

Money investment is one thing, but time investment is also another. At some point, I have been considering how to make it easier to explain some concepts that need a bit more dynamic point of views. For that i was considering learning Synfig, which looks like a pretty powerful tool to explain. But it turns out this is not the type of tool I want in my toolbelt at the moment: it’s not an obvious tool unless you know enough of the concepts around animations, and while it would be probably be extremely impactful if I was trying to focus on teaching… that’s not my job, not my role, not what I can have most impact with.

So what is that I can have the most impact with right now? I have no idea! For sure, I need to recover from this spell of burnout. It means that I’ll probably not be streaming any of my work for the foreseeable future. And while I have not settled on taking a break from blogging, it might be a bit more sporadic, skipping some of the Tuesdays at least until the internship is finished and a few other things fall into place.

For now, I won’t be waiting for streams to work on the air conditioner anymore, and in particular as I finish this blog post I just assembled one of the new boards, which hopefully will turn into a working air conditioning control board this very week. But hopefully this mean you’ll see more finalized code and designs being posted, soon.

And, honestly, I start to think why the various social networks of likes, subscribe, comment, … are important to creators. It definitely would feel less taxing to me if I knew that the stuff I’m doing is actually helping people rather than shouting into the void and hope someone is actually listening. So, if you enjoyed my streams and/or blog posts on various topics, while I’m on a break, please share your favourite posts or videos with others, comment to state whether you agree or disagree, in general, if you care about the content, show it. Because it just feels so draining to put effort on things people don’t seem to notice.

Blogging From An Onyx Boox Max Lumi

Some time ago, I found a video from Technology Connections over on YouTube about using eInk tablets for productivity. It’s part one of a number of other videos exploring the usage of electronic ink (or electronic paper) displays in Android tablet, that allow an experience that is a compromise between a fully featured Android tablet, and a Kindle-like device.

This piqued my interest, which is not surprising given that, like Alec, I have been an early adopter of ebooks, suffering through the pain of my Sony PRS-505 before landing on Amazon’s love-hated Kindle. But in addition to the ideas that he showed in the videos, I was also already considering whether to get myself an ePaper drawing tablet to use to take notes and doodle diagrams to share on the blog, although I was considering the reMarkable rather than the Onyx at that point.

The main reason why I was mostly considering rather than going for it, was that it’s not a small investment. As I pointed out in a previous post, despite now having a significant easier access to funds, I’m trying to balance the investment on my personal visibility with having time (and resources) for my wife. Buying a device that is mostly to draw diagrams on is very much overkill, if what you do for a living is not drawing diagrams left and right. And while the idea of being able to doodle on eBooks was singing to my inner geek, I knew that it wouldn’t have been nearly as useful as the Kindle is to me.

Things changed when I got to the point of Alec’s videos in which he points out how he used the device with a bluetooth keyboard to work on his (video) scripts, to avoid tiring his eyes as much with a monitor. That spoke to me, and to my wife, who fell just short of ordering it for me, and instead insisted I get one. Which I did, together with a stand (which I will admit I don’t like). I already had a keyboard (a Microsoft Surface Ergonomic Keyboard that I bought a few years ago in the Microsoft Store in Seattle, and that I think could have been much better, but is still better than your average bluetooth keyboards).

In terms of which device to get I went for the highest end that was available, the Onyx Boox Max Lumi. The reason for that is once again to do with our old friend the compromise: a bigger device is harder to bring around, but I don’t think I’d be blogging on the go that much with this device. If I am going to be doing that, for instance at my mother’s house, if we ever get to see her this year, I would be using my laptop, most likely. As such, getting a bigger screen means having more space to draw diagrams. But in particular the 13″ suggested it would be possible to use it horizontally to write a blog while reading off a different source, although that one doesn’t look like it’s going to be feasible any time soon (give me a moment to get to that).

My original intention was to use this primarily through the WordPress application, because I thought it would be easier to use the block editor in that. Unfortunately, it looks like the WordPress app is not only not suitable for the Onyx Boox but it’s not suitable for many tablets either. The problems with the interface itself can be ignored, for the most part, if you just want to use it to type in blog posts. But because of the background color effect on the block editor, the text in the block editor appears hard to read with the “halo effect” to indicate the contrast.

Thankfully, similarly to what is reported in Technology Connections video, both Firefox (to a point) and the website (to a point) are usable enough to not make this a waste of time and money. Unfortunately, I think there is a long way to go to make this a much better platform for blogging.

The first question to ask, is whether the display is even fast enough for using with a browser, and the answer is a resounding yes. Since the videos, it looks like Onyx has improved significantly the handling of refresh modes, introducing two “faster” refresh rates that come with more ghosting, but allowing a much smoother operation of scrolling. They automatically enable these modes when scrolling, and they even introduced a one-tap “refresh the screen now” mode, that is one of the requests Alec makes in the videos. So either Onyx is taking that feedback directly, or they have otherwise reached the same conclusions.

Despite the screen allowing extremely fast “drawing” (minus ghosting), it looks like applications needed to be designed somewhat explicitly for them to make use of those capabilities. The included note app is a pleasure to draw on. The Italian crosswords magazine La Settimana Enigmistica, on the other hand, is disappointingly slow, not showing the traced writing in real time at all (I’m still not sure why they don’t optimize more for tablets of this kind — I would argue that they could easily sell a branded tablet with EMR pens, and it would maybe not fly off the shelf but definitely sell to a number of hardcore fans; I’d get one for my mother for sure).

As I said, I’m using this with a keyboard, and this is where the next problem is: Android is kind of terrible when it comes to physical keyboards. They work, mostly, but everything is a bit odd around them. So for instance, the default AOSP-based keyboard supports dead keys for grave (`) but not for single and double quotes (‘ and “), and it turns out I rely on those being dead keys a lot — all of my typing would look off without it.

I found a way around this, with a £2 application that allowed me to configure individual dead keys behaviour, but it doesn’t quite solve it for me. The next thing I would be needing is a way to have a compose-like behaviour that would allow me to access em- and en-dashes. I am actually considering two options for that: the first is to create a custom layout, the way the tool I bought allows me to (very complicated and annoying, and reminds me of having to reinvent US International on Mac OS X with Ukelele), the second would be to figure out how hard it is to take the AOSP keyboard and make an US International keyboard with compose behaviour. Of course if anyone is aware of that already existing, I’m happy to take it. Open source would be an advantage (to fix if something doesn’t quite work the way I want it to), but I’m happy to take something closed and paid to avoid having to deal with side-loading if it exists.

But the most annoying problem with the keyboard might not even be a problem of Android itself. It might be a problem of Firefox, or WordPress, or something in the whole unlikely setup: sometimes when I navigate to a different point in the post, and try to edit it, characters are inserted in different places. Often at the end of the post, sometimes the location I had just moved a few seconds before. This is not constant, and it happens no matter whether I use the keyboard to navigate, or I tap on the page. Given I’m using the web version of WordPress, it might be a browser-JavaScript-Uncommon setup problem, but it is aggravating. I have tried Edge, to see if it would make things better, but despite being actually able to give a much better experience, closer to a normal desktop (including the presence of as-you-type spellchecker), its insistence in zooming on the WordPress interface as I want to type on it makes it impossible to use.

As you probably noticed by now, I have not really used this to make diagrams yet. I’m not sure I have anything this very moment that would benefit from me drawing a diagram of things, although I do have a couple of ideas for later. For now I’ve only used it to scribble and try out the Staedler Noris Digital (which I got for crosswords on the Samsung tablet instead). Again, this needs specific support for this type of devices, and so most of the tools around this do not work. Microsoft OneNote is unusable due to latency; Jamboard is a bit better but nowhere close to the original Notes app; and Squid is nearly usable, but again, the internal Notes and Books apps are so much faster.

One thing that is definitely clear from using this device for a week or so, is that for this device class to be a killer, we need applications to optimize for it. It might sound like an empty phrase, given that I do not work on any application that might be involved, but I also think that a number of these different device classes have come up over the years, and sometimes they managed to establish themselves. When I first got an Archos Android TV device, it was nearly one of a kind. It wasn’t easy to use, and it wasn’t particularly powerful. And because it was pretty much based on the Samsung Galaxy design, it ended up going stale pretty quickly after. On the other hand, there are now a number of Android-based TV devices, not last Amazon’s own FireStick. So the class itself didn’t disappear despite the one device being, frankly, a failure.

Similarly, while Samsung was first to market (or at least the loudest to market) with high-precision, pressure sensitive pens with their Galaxy Note series, the same technology is now in use by a number of other manufacturers, including this very device, and supported by a number of different applications. So I do not see why, in 2021, we shouldn’t be expecting more applications to make use of the tools that are available, even if it’s for a small percentage of users for now. So if anyone is aware of any Android application that makes use of the capabilities for fast drawing on this and other devices, even if it’s a paid app, please let me know.

I have just used this device now for about a week as I finish drafting this post. My impression is that it was a good investment for my eyes, particularly as working from home during a pandemic does mean not resting my eyes as much as I used to (no more stepping from the desk to grab a coffee with Luke when something irks me, no more hour-and-change break after going through the Californian email, while commuting to the office). It does mean I’m not actually resting my eyes as much, but it does mean I don’t tire them as hard as I used to.

There is also one more interesting thing here, which is the fact that, for the blog, a vertical monitor makes a lot more sense than a horizontal one! Unfortunately, it looks like it’s still hard to get keyboard covers that allow you to use the monitor vertically, and let’s not even talk about vertical laptops. But the truth is that for a long, rambly document, the vertical space is more important than the horizontal. WordPress’s own editor does not really scale to fill the whole horizontal space when you use it on a normal monitor, but it works like a charm on the “mobile” editor as loaded by Firefox.

There are a few more things that would make the overall experience more “professional”. As I said, if the WordPress app was usable, it would be much easier to type, rather than having to deal with the silly “cursor is in one place, characters appear somewhere else” situation. And if Edge didn’t randomly zoom in the wrong place, it would probably be the best browser to use on this particular devices, including the ability to switch tabs on Ctrl-Tab (with the external keyboard of course).

The other thing this just may be usable for is coding. Not the “full software engineering” type of coding, but if you are working on, say, adding documentation to an extensive codebase, it might be a good thing to have at hand, if nothing else because it’s vastly distraction free, and makes for an easy to read screen. You could say that this is the modern equivalent of using monochrome displays with a Commodore 64 to get the sharper fonts.

At any rate, you can probably expect more blog posts and possibly Twitter questions and rants, over the next few months, as I try my best to keep up with the blogging as the lockdown finally eases, and I can finally go out and enjoy my cameras, too.

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.

Upcoming electronics projects (and posts)

Because of a strange alignment between my decision to leave Google to find a new challenge, and the pandemic causing a lockdown of most countries (including the UK, where I live), you might have noticed more activity on this blog. Indeed for the past two months I maintained an almost perfect record of three posts a week, up from the occasional post I have written in the past few years. In part this was achieved by sticking to a “programme schedule” — I started posted on Mondays about my art project – which then expanded into the insulin reminder – then on Thursday I had a rotating tech post, finishing the week up with sARTSurdays.

This week it’s a bit disruptive because while I do have topics to fill in the Monday schedule, they start being a bit more scatterbrained, so I want to give a bit of a regroup, and gauge what’s the interest around them in the first place. As a starting point, the topic for Mondays is likely going to stay electronics — to follow up from the 8051 usage on the Birch Books, and the Feather notification light.

As I have previously suggested on Twitter, I plan on controlling my Kodi HTPC with a vintage, late ’80s Sony SVHS remote control. Just for the craic, because I picked it up out of nostalgia, when I went to Weird Stuff a few years ago — I’m sad it’s closed now, but thankful to Mike for having brought me there the first time. The original intention was to figure out how the complicated VCR recording timer configuration worked ­— but not unexpectedly the LCD panel is not working right and that might not be feasible. I might have to do a bit more work and open it up, and that probably will be a blog post by itself.

Speaking of Sony, remotes and electronics — I’m also trying to get something else to work. I have a Sony TV connected to an HDMI switcher, and sometimes it get stuck with the ARC not initializing properly. Fixing it is relatively straightforward (just disable and re-enable the ARC) but it takes a few remote control button presses… so I’m actually trying to use an Adafruit Feather to transmit the right sequence of infrared commands as a macro to fix that. Which is why I started working on pysirc pysdrc. There’s a bit more than that to be quite honest, as I would like to have a single-click selection of inputs with multiple switchers, but again that’s going to be a post by itself.

Then there’s some trimming work for the Birch Books art project. The PCBs are not here yet, so I have no idea if I have to respin them yet. If so, expects a mistakes-and-lessons post about it. I also will likely spend some more time figuring out how to make the board design more “proper” if possible. I also still want to sit down and see how I can get the same actuator board to work with the Feather M0 — because I’ll be honest and say that CircuitPython is much more enjoyable to work with than nearly-C as received by SDCC.

Also, while the actuator board supports it, I have currently left off turning on the fireplace lights for Birch Books. I’m of two minds about this — I know there are some flame effect single-LEDs out there, but they don’t appear to be easy to procure. Both bigclive and Adam Savage have shown flame-effect LED bulbs but they don’t really work in the small scale.

There are cheap fake-candle LED lamps out there – I saw them the first time in Italy at the one local pub that I enjoy going to (they serve so many varieties of tea!), and I actually have a few of them at home – but how they work is by using PWM on a normal LED (usually a warm light one). So what I’m planning on doing is diving into how those candles do that, and see if I can replicate the same feat on either the 8051 or the Feather.

I don’t know when the ESP32 boards I ordered will arrive, but probably will spend some time playing with those and talking about it then. It would be nice to have an easy way to “swap out the brains” of my various projects, and compare how to do things between them.

And I’m sure that, given the direction this is going, I’ll have enough stuff to keep myself entertained outside of work for the remaining of the lockdown.

Oh, before I forget — turns out that I’m now hanging out on Discord. Adafruit has a server, which seems to be a very easygoing and welcoming way to interact with the CircuitPython development team, as well as discussing options and showing off. If you happen to know of welcoming and interesting Discord servers I might be interested in, feel free to let me know.

I have not forgotten about the various glucometers I acquired in the past few months and that I still have not reversed. There will be more posts about glucometers, but for those I’m using the Thursday slot, as I have not once gone down to physically tapping into them yet. So unless my other electronics projects starve out that’s going to continue that way.

Blog Redirects, Azure Style

Last year, I set up an AppEngine app to redirect the old blog’s URLs to the WordPress install. It’s a relatively simple Flask web application, although it turned out to be around 700 lines of code (quite a bit to just serve redirects). While it ran fine for over a year on Google Cloud without me touching anything, and fitting into the free tier, I had to move it, as part of my divestment from GSuite (which is only vaguely linked to me leaving Google).

I could have just migrated the app on a new consumer account for AppEngine, but I decided to try something different, to avoid the bubble, and to compare other offerings. I decided to try Azure, which is Microsoft’s cloud offering. The first impressions were mixed.

The good thing of the Flask app I used for redirection being that simple is that nothing ties it to any one provider: the only things you need are a Python environment, and the ability to install the requests module. For the same codebase to work on AppEngine and Azure, though, there seems to be a need for a simple change. Both providers appear to rely on Gunicorn, but AppEngine appears to be looking for an object called app in the main module, while Azure is looking for it in the application module. This is trivially solved by defining the whole Flask app inside application.py and having the following content in main.py (the command line support is for my own convenience):

#!/usr/bin/env python3

import argparse

from application import app


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument(
        '--listen_host', action='store', type=str, default='localhost',
        help='Host to listen on.')
    parser.add_argument(
        '--port', action='store', type=int, default=8080,
        help='Port to listen on.')

    args = parser.parse_args()

    app.run(host=args.listen_host, port=args.port, debug=True)

The next problem I encountered was with the deployment. While there’s plenty of guides out there to use different builders to set up the deployment on Azure, I was lazy and went straight for the most clicky one, which used GitHub Actions to deploy from a (private) GitHub repository straight into Azure, without having to install any command line tools (sweet!) Unfortunately, I hit a snag in the form of what I think is a bug in the Azure GitHub Action template.

You see, the generated workflow for the deployment to Azure is pretty much zipping up the content of the repository, after creating a virtualenv directory to install the requirements defined for it. But while the workflow creates the virtualenv in a directory called env, the default startup script for Azure is looking for it in a directory called antenv. So for me it was failing to start until I changed the workflow to use the latter:

    - name: Install Python dependencies
      run: |
        python3 -m venv antenv
        source antenv/bin/activate
        pip install -r requirements.txt
    - name: Zip the application files
      run: zip -r myapp.zip .

Once that problem was solved, the next issue was to figure out how to set up the app on its original domain and have it serve TLS connections as well. This turned out to be a bit more complicated than expected because I had set up CAA records in my DNS configuration to only allow Let’s Encrypt, but Microsoft uses DigiCert to provide the (short lived) certificates, so until I removed that it wouldn’t be able to issue (oops.)

After everything is set up, here’s a few more of the differences between the two services, that I noticed.

First of all, Azure does not provide IPv6, although since they use CNAME records this can change at any time in the future. This is not a big deal for me, not only because the IPv6 is still dreamland, but also because the redirection would point to WordPress, that does not support IPv6. Nonetheless, it’s an interesting point to make, that despite Microsoft having spent years preparing for IPv6 support, and having even run Teredo tunnels, they also appear to not be ready to provide modern service entrypoints.

Second, and related, it looks like on Azure there’s a DNAT in front of the requests sent to Gunicorn — all the logs show the requests coming from 172.16.0.1 (a private IP address). This is opposite to AppEngine that shows the actual request IP in the log. It’s not a huge deal, but it does make it a bit annoying to figure out if there’s someone trying to attack your hostname. It also makes it funny that it’s not supporting IPv6, given it does not appear to need for the application itself to support the new addresses.

Speaking of logs, GCP exposes structured request logs. This is a pet peeve of mine, which GCP appears to at least make easier to deal with. In general, it allows you to filter logs much more easily to find out instances of requests being terminated with an error status, which is something that I paid close attention to in the weeks after deploying the original AppEngine redirector: I wanted to make sure my rewriting code didn’t miss some corner cases that users were actually hitting.

I couldn’t figure out how to get a similar level of detail in Azure, but honestly I have not tried too hard right now, because I don’t need that level of control for the moment. Also, while there does seem to be an entry in the portal’s menu to query logs, when I try it out I get a message «Register resource provider ‘Microsoft.Insights’ for this subscription to enable this query» which suggests to me it might be a paid extra.

Speaking of paid, the question of costs is something that clearly needs to be kept in clear sight, particularly given recent news cycles. Azure seems to provide a 12 months free trial, but it also gives you £150 of credit for 14 days, which don’t seem to match up properly to me. I’ll update the blog post (or write a new one) with more details after I have some more experience with the system.

I know that someone will comment complaining that I shouldn’t even consider Cloud Computing as a valid option. But honestly, from what I can see, I will be likely running a couple more Cloud applications out there, rather than keep hosting my own websites, and running my own servers. It’s just more practical, and it’s a different trade-off between costs and time spent maintaining thing, so I’m okay with it going this way. But I also want to make sure I don’t end up locking myself into a single provider, with no chance of migrating.