2018 September - Projects Log

I'm still full steam ahead with my Orloj replica; hope to start welding soon! In the background, I'm learning more about Electron, Redux, Rust, Node.js native addons, and the possibilities if one ties these all together.


2018 September 4, Tuesday

Tonight, the little bit I did was to play around with Inkscape, and besides having a few crashing bugs with too many Ctrl-Z's, it does have a lot of nice goodies packed into it that make it a pretty versatile and useful tool. I confirmed what I was hoping - there is a straightforward workflow to take something drawn with simple lines, and turn those into two paths outlining the original line at its set thickness, so that paths for a cutout can be constructed. My hope is to have an SVG with lines that I want cut out of wood to form a raised outline for the shapes on the face and the Zodiac ring - basically, the lines in gold I want raised.


2018 September 10, Monday

Tonight, after having recently obtained a 1440p monitor, decided that I want to sit squarely in front of it when I type, and not cross my arms over to my laptop. I have wanted to get a 2nd Ergodox keyboard for a while, for home as well as work, and this has given me the $200 excuse I need. So, I stretched my virtual hand over the internet, and from about 6 different websites, ordered about 16 different parts, and I expect them to arrive sometime this week or early next week. I also obtained a new soldering iron to grow my electronics toolset a little more.

For work on construction possibilites on my Orloj replica, I also tried some soldering experiments with hollow brass bars, but the results seem pretty grim. Perhaps I'm applying heat wrong, but I have access to a MIG welder, but not the right kind of wire for welding brass, which looks like it's going to be CuAl8, based on this website. Hopefully I can find a not-so-expensive spool somewhere...


2018 September 11, Tuesday

Tonight, I've gotten a fresh wave of eagerness for learning. I'm going to be spending time in the Coursera Deep Learning specialization again, just auditing and practicing for now. I also want to keep learning Rust and Redux, to see how to build awesome things better, more reliable, well-architected, safe, and higher performance.


2018 September 12, Wednesday

Tonight, I successfully got Rust Neon Bindings to work with a simple electron app, which I'm feeling pretty satisfied about. It's a really easy and nice way to have an idiomatic Rust project folder structure building as a Node.js native module. I had to go through electron-build-env so that it would build, but now that I have everything in one project, I don't even care that Neon has yet to switch to the more-stable N-API for building native Node.js modules, because all those details appear to be hidden away from me, thank goodness! This project makes me happy. The more I use parts of the Rust ecosystem, the happier I get, and the more sure I am that a very nice balance point exists in Rust bringing much power, language expression, and safety all in one. I hope the ecosystem continues to grow as it has been.


2018 September 15, Saturday

With my Ergodox keyboard parts arriving slowly but surely, I spent time today assembling what I could. The backing plate that the switches get mounted in will be the last to arrive, shipping from Poland, but I have the two PCBs, the Teensy, diodes, the TRRS cords - in essence, all the electrical components. I can wait to solder the switches in until I get the backing plate, and put everything else together to the point where I can download a firmware on it. I did that, using the new soldering iron I bought, and I have functioning hardware.

The firmware was tricky this time, as no matter what I tried, I couldn't compile the TMK keyboard firmware for the Ergodox in such a way that the Teensy loader program would accept it. After some experimenting, I think my problem was that I had too new a version of avr-gcc - the compiler for the code. I used Docker to start an Ubuntu server container, from where I was able to install the AVR gcc toolchain at version 7, which, through the use of docker cp, I was able to compile and copy out a compiled ergodox.hex file, which the Teensy loader program accepted just fine. I used essentially the same keyboard layout and layers as the one I use at work. After I downloaded the firmware, I tested it by short-circuting the copper PCB holes that the switches will eventually be soldered in to, and it was with great satisfaction as I watched the letters get entered into my text editor, indicating that the keyboard was working as expected - both boards! I can't wait for the backing switch plate to come.


2018 September 21, Friday

Finally, the last part for my Ergodox has arrived - a CNC-cut aluminum key switch backing plate from Falbatech in Poland. I spent a good deal of evening time putting it together. After testing it, I customized my firmware to use the same configuration I use at work, but with the TMK core firmware component updated. After I loaded it onto my new keyboard, I was very pleased to find that a number of annoyances had been fixed - needing to re-plug in the keyboard while it booted up, slow response for more than 6 keys held down at once (16 keys all register no problem!), all fixed. My one issue I had is that the new firmware I was using (based off https://github.com/fd0/ergodox-tmk) didn't seem to be working with the media and volume control keys, or the mouse keys either. I'm sure I'll fix it eventually, but in the meantime, I can have fun with this project. Perhaps I'll use this opportunity to learn about building Docker images...


2018 September 22, Saturday

Today, I managed to fix my issues - all I had to do is enable two switches in the Makefile for the Ergodox TMK firmware to use "EXTRAKEY_ENABLE" and "MOUSEKEY_ENABLE". I've submitted a pull request (a proposed change to the project for improvement) to fd0/ergodox-tmk, because I couldn't find any downsides - booting behavior still worked, and the keys were as fast as ever. The mouse functionallity has substantially improved, and is much more responsive.

To do these changes, I did dive into creating a Docker image for the sole purpose of building the firmware. It was fun learning from the Dockerfile reference and getting some actual practice failing and retrying to get the Docker image that I wanted. I eventually got something that was able to sync with my Ergodox project directory and try out a few different firmware builds with different options. This is definitely a skill I'll be able to apply at work - I've been meaning to wrap some of our single-place build environments up in a reproducable Docker image.

I also managed to find what I think is a solution to my Orloj problem of how to attach the metal parts together - some of this stuff - should be able to bind any of the metals I'm working with, and it's sufficiently easy to work with, and has very good strength, probably even more than I need for this project. I've ordered a small amount that I should get good mileage from, and am looking forward to trying some new experiments.