Noodler's Bulletproof Black ink review

Noodler’s Bulletproof Black seemed like the logical choice of inks to review after the X-Feather. This ink is special due to its archival quality (bullet proofness), which means its resistant to water and fading over time. This may not be something you may look for in an every-day ink, but it sure is a nice bonus. Color This is a decent black ink. The color may be a tad lighter than the soul-eating black we all crave in inks, but it does the job.

Noodler's X Feather ink review

One of my goals this year is to review the 35 black ink samples I got. Noodler’s X Feather is the ink I started 2017 with and I have to say - it’s great. The ink’s main purpose is low feathering on most grades of paper and it does a great job at it. This comes at a cost, though: drying time may be longer than comfortable for very quick note taking.

Everyman Grafton pen review

I like pens. Fountain pens and ball point pens and mechanical pencils. That’s why I jumped at the opportunity to back the Everyman Grafton pen on kickstarter. The good parts The pen itself was built with the intention to support Pilot G2 and Fisher Space Pen refills in a durable, EDC-worthy package. The weight of the pen is great - around 30 grams (1 oz), depending on the refill being used.

50 cents

Me and my wife have gotten into the habit of saving by not spending any 50 cent euro coins we come across (usually get as change). This started when Lithuania switched to the euro on January 1st, 2015.

Writing a Snappy application

So, having ingested all the information about Ubuntu Snappy Core, we can start developing our first application. The platform Ubuntu Snappy Core can currently be run on several platforms: Beaglebone black Raspberry Pi2 x86 kvm Fortunately, I have a Raspberry Pi 2 in a nice orange enclosure that I can use for my purposes. Prerequisites Before starting our favorite editor, we need to install some tools to develop a snappy application.

Ubuntu Snappy Core list of resources

Ubuntu Snappy Core is a new take on OS and software updates and security from Canonical. Among its core features are transactional updates and a new aproach to application security and isolation. This is really cool and useful for many things: servers, phones and IoT devices. There’s still a long way to go, but eventually this will mean secure and reliable IoT devices, routers and even fridges. Starting to dive into this, I collected a few links to snappy-related resources, so here it is.

Writing juju charms with action support

Ever since version 1.23, juju support actions - a convenient mechanism of running predefined commands on the managed service. And they are a very useful tool for managing services when configuration changes and relations aren’t enough. Using actions is documented here, so I’m going to talk about writing and testing action-enabled charms. Defining actions Before we start implementing actions, we need to tell juju about the actions that are going to be exposed by the charm.

The trouble with wysiwyg

The way that wysiwyg editors hide the structure of the content behind its appearance is to blame for countless hours of lost productivity. Users are left to trying to glean insight about the structure of the content from its appearance. And achieving the desired look is usually the result of a fragile balance of formatting settings. – thoughts after watching my wife wrestle with tables in MS Word for 10 minutes

Managing my personal server using juju

I have a personal server (actually a digital ocean droplet) that I use to host my private git repositories, bip irc client and blog. Until now this was a manually set up ubuntu instance that I set up to update automatically and would ssh into every once in a while to check the logs and update configurations. In other words, not very optimal. Since I spend my work hours contributing to juju - a service orchestration tool for the cloud, I decided to try it out managing just a single server running the services I need:

A cool golang interface trick

While working on juju, I noticed a curious code snippet: var ( stepPrepare = executorStep{"preparing", Operation.Prepare} stepExecute = executorStep{"executing", Operation.Execute} stepCommit = executorStep{"committing", Operation.Commit} ) where Operation is an interface: type Operation interface { Prepare(state State) (*State, error) Execute(state State) (*State, error) Commit(state State) (*State, error) } Surely, storing a method of an interface definition as a variable makes no sense. But then again, what is the type of an interface method?