NULLs in the Windows Registry

in tech    3 min. read

December 1, 2017

I ran into an interesting issue with my Windows development machine when trying to test a Flask web app. This was due to werkzeug running the simple web server for flask that is created when you us The error had me confused at first, as it has nothing to do with what I was changing at the time: TypeError: OpenKey() argument 2 must be str without null characters or None, not str I tracked back through the stack to see that werkzeug is looking at the Windows Registry.

Continue reading

RPi Startup IP and Web Display

in tech    4 min. read

October 28, 2017

I’m using a Raspberry Pi 3 as the CPU in custom burn-in carts for cycling our Android tablets. It is hard to beat the 7” touch display using a Flask front end for quick development. The carts often have power connected and disconnected when moved around. We are also using a network inside of the carts for talking with tablets under test and need to bring this up each time we move carts and cycle power.

Continue reading

Raspberry Pi Hardware Mocking

in tech    23 min. read

October 14, 2017

Before I get to deeply into specific functionality and operation of our charging carts, I thought it would be good to take a detour into drivers for custom hardware. In addition I’ll cover mocking hardware devices to allow testing of your drivers and operating your system in a simulation with no hardware present. This allows you to flush out your hardware design with software before fabricating PCBs. (A PCB takes a long time to “compile”.

Continue reading

Burn-In Carts

in tech    6 min. read

October 6, 2017

Over the last 5 years, I’ve been working on a very small team as the sole Engineer designing a ruggedized Android tablet. The only product option that met our needs would cost 10 times what we could afford. These are to be produced and distributed free of charge in developing nations as a missionary tool. Due to the cost and effort involved in getting them in country, our goal was a tablet with a 10 year service life.

Continue reading

Changing my Series to Taxonomy

in tech    4 min. read

August 27, 2017

When trying to implement a series sidebar and stand alone page in Hugo, I saw advantages of using the taxonomies structure in hugo. config.toml To implement series as a taxonomy, I added it to my config.toml. That section now contains three taxonomies. [taxonomies] category = "categories" series = "series" tags = "tags" Front Matter My only change to front matter from my previous series implementation was to change into an array style.

Continue reading

Python to Rust: Enum

in tech    10 min. read

August 25, 2017

Enums are new with Python 3.4 and PEP 435, but have been backported. At first, I saw more trouble than benefit from Python Enums. They are typically used for type safety, and this isn’t really enforceable in Python. But, since they are a class, you can add additional functionality to them. This gives them more usefulness than I previously thought. It isn’t easy to store data with them in most languages.

Continue reading

Python to Rust: Types

in tech    13 min. read

August 24, 2017

Comparing Python's Dynamic and Strong-ish type system with Rust's static and very strong type system. Covering the scalar and a few of the complex types.

Read Blog Post

Python to Rust: PIP to Cargo

in tech    8 min. read

August 23, 2017

This post discusses Cargo, the packaging tool for Rust. I compare it with Pip and explain how dependencies are referenced in Rust. I explain how to create new Rust projects with cargo and to build and run them.

Read Blog Post

Python to Rust: Beginning

in tech    9 min. read

August 22, 2017

As a Python programmer, I discuss wanting to learn a new language and my choice of Rust after looking at both Rust and Go as possibilities.

Read Blog Post

Disabling Analytics for Local Hugo

in tech    2 min. read

August 3, 2017

Hugo’s watching web server is great for creating pages. Tweak a little and see the browser refresh. (Unless you break things and then it is still just a manual browser refresh away from back to the good state, once your page is unbroken.) As I was developing local pages, I happened to have my realtime Google Anaytics open. I noticed I was hitting it. When I look back at yesterday’s stats, I have 124 visits to a page I was working on, but hadn’t published yet.

Continue reading