Christopher
Stoll

Ancient Meads: Mr. Masillon's Metheglin

Ancient Meads: Mr. Masillon's Metheglin

In this series we create modern interpretations of ancient meads. This time we will look at a circa 1660 metheglin recipe from Belgium. The original recipe says that hops can be used to help preserve the mead, and we will be making that miodomel (mead with hops) version. We are going to use Saaz hops, which we hope will help bridge the mildness of the mead with the spiciness of the clove and ginger. Our one gallon interpretation uses SafAle BE-256 yeast, paying homage to the original recipe’s Belgian roots. The original and modern interpretations are below, if you are up to it.


Changing Dev Stacks: Ruby on Rails to Elm on Feathers

Changing Dev Stacks: Ruby on Rails to Elm on Feathers

From the fourth quarter of 2017 through the first half of 2018 I was almost exclusively creating Ruby on Rails applications. After the excitement of mastering a new toolset wore off, I started to feel that I was working on a dated platform. There’s nothing inherently bad about Ruby on Rails, it is a time-tested and validated approach for creating reliable monolithic web applications. But, having just previously worked at a shop where we figured out how to build actual microservices, building monolithic applications simply felt dated.

I certainly wasn’t going to use microservices out of the gate for my side projects, but I at least wanted to abstract the presentation layer from the data access layer. So, I needed a set of tools which made creating SPAs (single page applications) and APIs as easily as it was to create views and models with Rails. Where I landed isn’t quite as easy, but it is fairly enjoyable, and I really don’t even know what I’m doing yet. The stack I landed on was Elm for the front end and, for now, FeathersJS for the backend.


From Akron to Charit Creek

From Akron to Charit Creek

Last summer we drove from Akron to Fort Collins, Colorado. Although it was a great experience, we wanted to drive a little less this summer. So we came up with a new adventure idea. We wanted to find a place which was off the grid, but had front-country amenities, like running water, toilets, and great food. And, it had to be within about eight hours of Akron. It seemed like an impossible ask, and I was fairly sure that we would have to compromise on at least one aspect. Then I found Charit Creek Lodge in Tennessee. Amazingly, it has all the desired amenities and is just seven hours and fifty minutes away. As an added bonus, it costs about the same as a stay at a major hotel chain.

Rather than driving straight to Charit Creek, we decided to break our trip up. We were going to do a mix of backpacking at Zaleski, car camping at Cumberland Lake, and lodge camping at Charit Creek.


Climbing Trip Report: Red River Gorge

Climbing Trip Report: Red River Gorge

The last time we headed to the Red River Gorge our intent was just to climb some real, outdoor sport routes. As a part of that goal we wanted to explore the Muir Valley. Now, having a modicum of experience, we had loftier objectives. We wanted to top out on something which was higher than we could get in a rock gym. This time our goal was to send ‘Eureka’.


Finding Related Jekyll Posts Using LSI, for Github pages

Finding Related Jekyll Posts Using LSI, for Github pages

On this site I write about, what I like to believe is, a diverse set of topics. The normal way of presenting posts using a sequential list does nothing to help people discover other material on the site which they may also be interested in. I wanted to provide visitors with a list of links to content which is similar to the page they are currently viewing. However, due to limitations in the platform I’m using, there was no option to simply turn this on. So, I wrote some code and implemented an algorithm to solve this problem.


Backpacking Trip Report: Archer's Fork

Backpacking Trip Report: Archer's Fork

If you are an Ohioan who is into backpacking and haven’t been to Archer’s Fork yet, you should plan a trip. It is one of the most remote backpacking sites in the state. To illustrate how far out this trail is: we normally grab a meal at a restaurant near the trailhead before heading into the backcountry; the Archer’s Fork trailhead is about an hour drive from the nearest restaurant (possibly longer if you don’t download directions before leaving an area with cell service). For someone from northeastern Ohio, that’s a crazy long way from food. While on the trail you are unlikely to run into other people, which further enhances the feeling of remoteness. The best part may be that it’s only two and a half hours away from the Akron area, so most people in eastern Ohio should be able to get there in under four hours.


Climbing Trip Report: Muir Valley

Climbing Trip Report: Muir Valley

Our climbing group was finally ready to move out from under the sodium lights of the indoor climbing gym. So, half of us having completed a lead climbing course, we decided to travel down to the Muir Valley and attempt some outdoor sport routes. Located in Kentucky’s Red River Gorge, one of the largest and most popular sport climbing areas in the Eastern United States, Muir Valley has over 20 crags spread across more than 360 acres of land. The most important part, for us, was that it also has nearly 120 routes which are rated 5.9 or lower.


Getting Started with Embeded Elixir on Nerves

Screenshot of testing code

In his talk at CodeMash this year, Joel Byler mentioned a platform named Nerves which quickly and easily packages up Elixir projects for embeded applications. Joel said the platform boots in seconds, the framework takes care of all the low-level tasks, and the tooling handles all the work required to convert Elixir applications into embeddable firmware. It sounded too good to be true, so I had to try it out.

Getting up and running was actually super easy; I installed Nerves and built my first app in minutes. And, it did boot up incredibly fast, but that first app didn’t actually do anything. I needed to get my device connected to the wireless network so that I could start doing more interesting stuff, and that is when I ran into problems. I have a Raspberry Pi 2 which doesn’t have built-in WiFi, so I have a TP-Link TL-WN725N USB adapter. Unfortunately, Nerves Raspberry Pi 2 system only supports Ralink RT53xx (rt2800usb), RealTek RTL8712U (r8712u) and RealTek RTL 8192 (rtl8192cu) devices.

My first thought was, “I guess I will have to get the latest Raspberry Pi Zero to get this thing working.” Maybe I just wanted an excuse to buy a new little toy, but I’m supposed to have technical skills, so I shouldn’t buy my way out of this problem. Besides, I have used the TL-WN725N adapter in the past and I knew that there was a Linux driver for it. The question was, how do I get that driver installed in Nerves? Here is how I made it work.


Ncurses based System Performance Monitor for Mac

Ncurses based System Performance Monitor for Mac

Nmond is a Ncurses based system performance monitor for Darwin (Mac OS X terminal) written in pure C. It was “forked” from nmon. The original nmon gathered system statistics by looking at /proc, which is not available on Darwin, so system calls had to be implemented for all the statistics. The original program was monolithic and used global state a lot; it was modularized during the rewrite. It’s still a work in progress.


Simple Microprocessor Design

Simple Microprocessor Design

This details the hardware design for a simple 12-bit microporcessor. I created it for an undergraduate class which I took a few years ago. It is not really usefull for anything besides learning how computer hardware works, but I still think that it is pretty cool. I found the documentation for it on my hard drive and remebered how proud I was to have actually completed it; I am a computer scientist, not a computer engineer. Simple logic gates are used as the basis for the creation of more complex digital electronic circuits; those circuits, including a control unit, are in turn connected via a datapath to form a completed processor. The processor datapath is designed to implement the Simple-12 instruction set.


Battleship AI Algorithm Using Dynamic Programming


(image via Wikimedia)

My boys and I enjoy playing a mobile version of the classic battleship game when we are waiting our turn at the barbershop. However, the artificial intelligence algorithm this specific game uses is so feeble that even my youngest son can consistently beat the computer player. So, I started thinking about improving the algorithm. I searched the web to see if there was already an established, dominant algorithm. Although I found several clever implementations, including one that used probabilities and another based upon a checkerboard pattern, I did not find one that I particularly enjoyed. After thinking about the problem further I came to the conclusion that this problem would be well suited for a dynamic programming algorithm.

From my perspective, the best approach to take when searching for the opponent’s ship is to target a square that is in the center of the longest line of unmarked squares. It would be even better to find a target which is at the intersection of two long lines of unchecked squares. To me, this is an effective divide and conquer approach similar in spirit to the concept of binary trees, the problem is finding an efficient algorithm. The problem seems to lend itself perfectly to the dynamic programming approach.


The Ballpoint Pen

Although their use is slowly fading due to society’s increased reliance upon computers, the ballpoint pen is still used on a daily basis by most people in the United States. What is now an inescapable piece of disposable technology began its life as nothing more than an expensive and seemingly short-lived fad. Popular media accounts from the mid-1940s track the ballpoint pen’s rapid initial increase in popularity followed by its similarly precipitous drop. After this initial popularity spike the media chronicled the ballpoint pen’s gradual rise from novelty to ubiquity.

On a trip to Argentina in the summer of 1945 a businessman from Chicago named Milton Reynolds discovered a fascinating pen that he was certain could be a commercial success in the United States. Reynolds brought some of the pens back to the United States with him, and within a few months they were being mass produced by his newly formed company.