Ergonomic, idiomatic Rust and error handling?

Update: 11th June, 1017: See summary at bottom of post As I learn to program in Rust I’m constantly struck by how is’ not a C like language. You can write code in a C-like fashion, but the language, and the libraries don’t seem to encourage that approach. If anything, it seems to steer the naive beginner, like myself, towards a more functional style of programming. Is this intentional? In this post, I’m documenting my solution to one of the Exercism problems, and how I migrated from an initial solution based on mutable variables, to one which is solely functional. Read On →

Fighting Rust; or immutability, borrowing and lifetimes

So I’ve decided to learn Rust. Rust is a ‘systems’ programming language, which essentially means a language designed for writing systems code. A bit circular as definitions go, so lets see what Wikipedia has to say on it: A system programming language usually refers to a programming language used for system programming; such languages are designed for writing system software, which usually requires different development approaches when compared with application software. Read On →

The perfect Tiling Window Manager (for me)?

Window managers are a very, very personal thing. If you don’t know what a Window Manager is, then this probably isn’t the place to start. Wikipedia is always useful for a pretty thorough explanation. Tiling Window Manager I’ve been on the hunt for the perfect tiling window manager. I like tiling window managers because they take (most) of the thought (and action) out of how big to make a window, and they stop them overlapping. Read On →

Living with the 6800k + rx 480 (still waiting for Vega)

If you’ve been reading the other posts in this series, you’ll know I was waiting for the AMD Ryzen and the AMD Vega GPU. The Ryzen came out, but it had (the usual) teething problems, and as the new desktop is supposed to be my work machine, I eventually decided to go with the 2 year old X99 platform and a 6800k CPU. It was (on paper) slower that the equivalent Ryzen 1700, and a bit more expensive (as a platform). Read On →

Decision made: it's going to be a 6800k/X99 build

As I write this, the X370/Ryzen platform is still in its infancy. So much so, that there aren’t many X370 boards available, and there are many, many teething problems. I’ve decided that I don’t really want to be an ‘early adopter’ with, what will be, my main work machine. Here’s how I came to the decision; hope it might help with your decision process. The systems To recap, the systems I was considering were. Read On →

Ryzen in the UK; no parts to build with

Building a Ryzen system in the UK in March is very, very hard. There are almost no motherboards (apart from Asus), and the two boards that I’ve considered are very much “not in stock”. I want to build a new desktop/workstation type computer, mostly for work, and I’m currently see-sawing between Ryzen 1700X and Intel 6850k. The Ryzen 1700X has more cores/threads, but the 6850K is much older and, thus, all the bugs are (mostly) ironed out on the boards and chips. Read On →

Writing better Charm interfaces

UPDATE 13th January 2017 I was in contact with one of the developers of charms.reactive and he pointed out that the proposal suggested in this post may lead to subtle bugs if the charm author is not absolutely clear on what’s going on. Essentially, it links the hook context event to a reactive state, and then that state disappears at the end of the hook invocation. This breaks the contract that reactive states are, if you think about it, supposed to represent the state at the end of the hook invocation, rather than be transitive during the hook invocation. Read On →

Getting started with the OpenStack Manila File share service by Canonical

The Manila file share service is the file Share service project for OpenStack. This post explores the Juju manila charms that provide the Manila file share service, and provides a practical set of instructions to get your own mini OpenStack system up and running (on a powerful machine) so that you can explore the service. I work at Canonical in the OpenStack Charms team, working on software to make deploying and managing an OpenStack system as easy, convenient and flexible as possible. Read On →

Birth of a new (technology) blog

It’s not every day a new technology blog is born. Actually, it probably is; indeed, 1,000’s of new blogs are probably born everyday, most of which will die within a few short years. I already have another not-so-well maintained blog. I discovered that I was overly mixing my politics with technology, and these are two topics that make unlikely, and slightly uncomfortable bedfellows. Thus, I decided to split these two topics apart and this one is for technical types. Read On →