Why Are Linux Software Distributions Methods Are So Different?

November 6th, 2020

Don’t do this:

Do this:

Read the rest of this entry »

The API wars… who actually cares?

August 21st, 2020

This is a public response to Johan Thelin’s post “The API wars – 16 years later. His blog commenting system looks a bit broken and regardless – I think its an important enough discussion to publish here. The main premise of the article is that the web APIs have won the “API war” in the context of Joel’s Spolsky’s “How Microsoft lost the API war” article from 2014 but the main winner is the globally domineering Google and we should subvert their victory by moving to the new runtime – the WebAssembly, that is better in every way.

Here’s what I had to say about that:

Read the rest of this entry »

Why Konsole is the best terminal emulator

July 4th, 2020

I often say that one of the main reasons I use KDE Plasma as my default graphical workspace is that some of the KDE specific software is the best at what it does, and specifically – as a lot of my computer time is spent using a console – the KDE terminal emulator software Konsole is the best in the world.

Read the rest of this entry »

Script day – different default browser per KDE activity

July 30th, 2018

This is a bit of a weird script day – the script is pretty simple but the integration is interesting. I’m scratching my own itch here and also demonstrating how to:

  • Use dbus-monitor to listen to D-Bus events
  • Use SystemD user services to run a session service
  • Update KDE configuration safely from scripts

Read the rest of this entry »

Migrating Google Groups Archives Between Accounts

May 16th, 2018

Recently I had to move a lot of data between an old GSuite Business account and a new GSuite Business account. Google support for such a migration is… well… can stand to be improved. The main pain points are email1, Drive2, Team Drives3, Calendar4, and for everything else – there is no migration. Google+ posts, password storage, Sites, Forms have to be recreated manually, and my pet peeve: Google Groups Archives.

If you’re not familiar with this awesome GSuite feature, which is based on the Google Groups usenet-like service, Google Groups for Business is a mailing list manager that in addition to distributing emails to recipients, also stores each email in an accessible archive – so new users can have access to old communications (this is great for accounting and support) and on top of that you can get forum like features with posting replies to topics and such. Unfortunately Google Groups has no export feature and because the archive is all about past communications, you can’t actually reproduce that data manually when you move to a new GSuite account.

Read the rest of this entry »

  1. The built-in data migration tool in the admin console – which is the only data migration tool available – only moves emails, and is not 100% reliable with that, and doesn’t move rules or other settings []
  2. There are external tools available, I’m using Multcloud, but sharing is a problem – the best you can get is to get a copy of each shared file and Google Docs without any sharing information attached, so that breaks the sharing. Other tools may convert all your Google Docs to Microsoft formats []
  3. Which surprisingly works very well – you just share the team drive to a user on the new domain and they can move all the files to a new team drive they create on the new account. Sharing information is lost and you have to reshare, but documents retain comments by the old users and there is no duplications []
  4. You can manually export all calendars to ical format and then manually import them one by one. Also not 100% []

Best April Fools Joke

April 1st, 2018

That I’ve seen in a while anyway. If you go to Stack Overflow today, you’d find a helpful rubber duck in the corner that will help you solve all of your (code) problems:

Read the rest of this entry »

Java’s CompletableFuture and typed exception handling

March 26th, 2018

With version 8, Java finally jumped on the asynchronous programming bandwagon with its own Promise-Oriented programming model, implemented by the CompletableFuture class and a set of interfaces and implementations it uses. The model is generally useful and not as horribly complicated as we sometimes get in the Java foundation class library1, and it lends itself to fluent programming much better than the comparable model from fluent API proponent Vert.x project.

The Problem

One thing that most asynchronous computing models suffer from – and Java’s CompletableFuture is no exception – is the loss of typed exception handling. While CompletableFuture.exceptionally() is a good model that does not introduce a lot of boilerplate2, you do lose the ability of the try..catch..finally syntax to effortlessly ignore exceptions you are not ready to handle and just letting them propagate up the stack. Read the rest of this entry »

  1. especially for things that claim to be “enterprise versions”, aughh []
  2. again, compare to Vert.x AsyncResult handlers. Other APIs, such as RX also do a good job in reducing boilerplate around error handling []

Hosting Polymer applications on Amazon S3 with proper URLs

September 14th, 2017

In case you’re looking to host a Polymer application, S3 is a great and cheap option. The main problem is with no rewrite rules, you must use hash tag routing.

But with a simple configuration hack and a Cloudfront distribution you can use proper URLs for your S3 hosted polymer application – as detailed by Keita Kobayashi in his blog.

Newest demo in Microsoft’s stupid reverse WINE, says: “we need Linux on Windows to grep”

September 3rd, 2017

Microsoft recently demoed a Windows Subsystem for Linux1 feature where they can run commands on a Linux shell under WSL from the Windows CMD shell – which, according to the demo that pipes the output of ipconfig to Linux grep, they need becuase the CMD shell is a 30 year old joke shell that can’t even do grep properly.

  1. stupid reverse WINE : its a Linux system call translator for Windows, like WINE does for Linux, but doesn’t handle X or OpenGL and does a piss-poor job of file IO []

Woes of moving to a more secure world

June 11th, 2017

If you haven’t noticed, my blog is now secure from the NSA peeking at your comments by the magic of TLS and Lets Encrypt !

But doing this, I forgot to update WordPress’s notion of what URL this blog lives on, and as a result comments posting didn’t actually work.

Sorry about that, and now it should work fine,


Spam prevention powered by Akismet