A Hoverbear's Musings

Articles primarily relating to science and technology.

A New Year Dawns

First of all, happy new year! It’s been awhile since I wrote anything, and there are many things I’d love to write more about. Sadly, time is a limited resource and I’ve been managing to keep quite busy. For now, I’ll stick to an update about a wave of change in my life. Glowing memories Over the last year and a half I’ve had the absolutely wonderful pleasure of working with my dear friends at Asquera in beautiful Berlin. It has given me ample opportunity to learn, teach, and get experience with a wide range of topics. I will carry...

Posted on .

Greasing the Gears

It’s been quite a journey so far, but there is still a long ways to go. We can’t stop. We must triage, repair, and replace while the motor is still running. We can’t do it alone, but together, with hard work, we might make it. During my education, one of the most surprisingly interesting courses I took was Software Evolution. I originally took it because I know the professor was great, but it turned out to be hugely inspirational and motivating in the last years. During that class we didn’t study how to write code, how to write better code,...

Posted on .

Wrapping APIs in Rust

Modern applications often interface with external services through RESTful APIs. Examples of this include everything from telephony like Twilio to infrastructure like DigitalOcean. In most cases these services provide an HTTP REST API, though there are exceptions such as mailers which sometimes use SMTP. It’s rather common for these services to offer official wrappers for some popular programming languages, and often there are many unofficial wrappers of varying quality. Digital Ocean, for example, offers official Ruby and Go wrappers here. In languages without a wrapper, interacting with these services can involve some extra work. It can be the case that...

Posted on , into Rust and Tutorials .

The Path to Rust on the Web

Recently there has been quite a bit of talk about WebAssembly, a new format for code for the web. It is a compile target for languages like C and Rust that enables us to write, and run, code from these languages in our browser. In the interest of learning more about this technology (and to avoid writing more Javascript) let’s explore together and get our hands dirty! Disclaimer: WebAssembly is stabilized, but most implementations are not. The information contained here may become out of date or be incorrect, despite working at the time of writing. Before we start please make...

Posted on , into Rust and Tutorials .

Setting up a Rust Development Environment

In this post we’ll be discussing one way to set up your machine for Rust development. There are different ways, particularly related to the text editor, so feel free to skip what is irrelevant to you. We’ll focus on: Setting up Rust via Rustup. Valuable tools like clippy and rustfmt. Configuring VS Code for Rust. Debugging with the command line and inside of VS Code. Using different compile targets. Everything we do should be functional on both Linux and MacOS, on Windows your mileage may vary. I, unfortunately, don’t have a Windows instance to test on. In order to finish...

Posted on , into Rust , Tutorials , and Tooling .

The Future with Futures

Recently there has been a lot of progress in the Rust language towards a robust asynchronous stack. In this article we’ll take a look at what these things are, take a tour of what’s available, play with some examples, and talk about how the pieces fit together. We’ll get started with the futures crate to start, move on to futures_cpupool, and then eventually to tokio. We will assume you have some knowledge of programming, and have at least thought about trying Rust before. What are Futures and Async? When writing code to do some action which may take some time,...

Posted on , into Rust and Tutorials .

Pretty State Machine Patterns in Rust

Lately I’ve been thinking a lot about the patterns and structures which we program with. It’s really wonderful to start exploring a project and see familiar patterns and styles which you’ve already used before. It makes it easier to understand the project, and empowers you to start working on the project faster. Sometimes you’re working on a new project and realize that you need to do something in the same way as you did in another project. This thing might not be a functionality or a library, it might not be something which you can encode into some clever macro...

Posted on , into Rust .

An HTTPS Terminator Box

Over the last couple days at asquera we’ve been on a retreat at the Landhaus Fredenwalde. It’s really beautiful out here and it’s given me a chance to work on a few small projects which I’ve been wanting to explore for awhile now. Anyways, yesterday I set up a system that uses Ansible, Let’s Encrypt, nginx, and DigitalOcean to terminate HTTP and proxy requests to arbitrary hosts. The intended use case for this is to have Github Pages sites able to be dropped onto a custom domain that is SSL enabled, but there are many other use cases which I...

Posted on , into Infrastructure and Tooling .

Winds of Change

Unlike most of this blog this post is not technical in the slightest, instead it’s a personal update. Though, I have been wanting to write this post for a long time now! Many things have happened in the last few months, and life is still swirling all around me. Many things seemed uncertain, other things still do. Irregardless, things are pretty darn cool. Anyways, here’s what’s happened lately. The First Degree I went Camosun College in late 2010, and transfered to the University of Victoria in 2012. As of June 2016, I’ve finished my program and recieved my degree! I’m...

Posted on , into Personal .

The Menagerie of Badssl

Late last year I was given an opporunity to participate in the Mozilla Winter of Security 2016! I’m happy to report it was, and still is, super cool. Plans diverted significantly at the very start of the project as it was discovered that the “menagerie” of certificates we wanted to build already existed. What joy! In order to avoid any “not-invented-here” syndrome problems we pivoted, like a failing startup, and I moved to become a contributor to BadSSL. One of my mentors, April King, happened to already be a contributor to BadSSL and helped me get acquainted with the repository...

Posted on , into UVic .