Sunday, 12 August 2018
How I Blog

So I have tried and failed to start blogging a lot of times. The main motivation for blogging in the first place is as a place to document my findings, experimentation and failures, mostly as a reference guide for myself; if it helps others then that's even better. I do enjoy talking through problems and ideas with others and if I'm educating then that's great. The biggest reason however, is when I explain through a problem or some implementation whether in writing or verbally it really helps to cement it in my mind and just by explaining it, it brings up all sorts of cases that I wouldn't necessarily think of or consider, helping to avoid future bugs or refactoring. For this reason alone, if doing that helps you in a similar way, I recommend you start blogging if you were maybe on the fence about it, thinking of doing it or never even considered it. Also the more opinions out there the better.

When I have attempted to do it before, I've always intended to use the simplest command line Markdown based static blog generators. Static because I would deploy to S3 and serve it over CloudFront so I could basically forget about it, and Markdown-based as it is so easy and quick to write and format. Some good tools I found in this vein are BashBlog and ssg. In trying out these tools, which are very simple, I'd always seem to get distracted and start obsessing over small details like the styling/layout, RSS, etc. Combined with being tied to a specific environment and on the command line (which I do strongly advocate) meant that there was a high enough barrier to actually not get any meaningful writing done. The whole purpose of this blog is to get down ideas almost as soon as possible and for that there needs to be as much convenience as possible, and the least amount of setup. To this end I have set this blog up on Blogger. The only downside that I can see at the moment is the fact that there is lock-in to this platform (although realistically if I was to move away I could export all this data); otherwise it just lets me write stuff down from the Android app, on my Chromebook or my main laptop, in other words whenever I feel like writing something down.

Update 2018-10-06 In a potential display of distraction as described above, this blog has now changed from cromle.ch to dysfunctionalprogramming.com an older domain name I registered as a kind of profile/portfolio site and is now completely static, and in fact is completely hand written in Vim. I still use Blogger, literally to save drafts so my workflow is basically the same, but when I want to publish I copy and paste the text into Vim (into a template), sprinkle some HTML around for formatting, git commit it and push it to Amazon S3. The reason for this change now, is that I've now got some momentum on the whole blogging thing, so I'm still actually concentrating on writing.

Saturday, 11 August 2018
Linux kernel v4.17.x series on Ubuntu 18.04

I am currently running Ubuntu 18.04 which ships with a 4.15.x series kernel, but as reported around the web the 4.17 series have improved power management and can apparently extend battery life.

I have been running this latest series for a couple of weeks now and the battery life on my Lenovo laptop is greatly improved, coming very close to or even the same as the battery life I experienced using Windows out of the box.

I've never really needed to upgrade the kernel a particular distro ships with beyond the usual updates, except in this case which I explored due to the abysmal battery life I have always experienced on any of the distributions I have tried.

Though not as common as Debian, for example which moves at a much slower pace, any time I researched manually upgrading kernels for Ubuntu I've always seen posts and comments generally discouraging it, and I guess depending on how it is done it can be error prone and could potentially lead to a non-bootable system. Though I am quite familiar with a lot of Linux, there are still a lot of things that I don't know and don't necessarily have time to research before hand or fix especially when I am still needing to get a lot of work done.

The best solution I have found for this is an official Ubuntu mainline kernel repo which contains automated builds of the latest supported releases: http://kernel.ubuntu.com/~kernel-ppa/mainline/ here you can simply download the necessary .deb files (ensuring you get the -headers, -image, -modules components) and just dpkg -i linux*.deb them.

Update 2018-09-29 I don't recommend this or do this anymore, for a specific and likely Ubuntu-only reason, that the mainline kernel isn't compiled with user namespace support, and I have been dabbling with this functionality with certain Docker containers, so this is something to be aware of. Also see this guide for general recommendations.