I have been contemplating, getting an Ergodox keyboard for a while and I kept putting it off. This holiday season, I put it into my wishlist because, according to my family and friends, I’m notoriously difficult to buy a gift for. I got gifted the Moonlander and it’s been an interesting few days.
First Impressions
I realised that I never quite touch typed. One of the things, I’m forcing myself to do is to actually learn to touch type. Once I got past that learning curve, it’s not too bad. The Moonlander is quite pretty and compact. I could carry it every day. I’m using the default layout for now. In the first week, my typing speed was around 25 to 30 WPM.
My Moonlander keyboard with a printed layout.
Positives
The second layer having a dedicated numpad is something I enjoy when I’m working with numbers — usually for accounts. Having used a keyboard without a numpad for years, it is super helpful.
Surprises
Backpace where I expect caps lock. I’m still learning to use it.
A single space key. I need to use my left thumb for it.
The position of the Esc key. It’s at my right thumb.
Frustrations
This may be due my own making by picking the default layout; but some keys always frustrate me. At the moment, combinations that use the Tab key are my stumbling block. I keep having to think really hard to remember how to change windows.
Practice Makes Perfect
Throughout the holidays, I practiced around 6 to 8 times throughout the day. As of today, my typing speed is at 70 WPM. I’m even touch typing better than I used to!
This year it has officially been 15 years since I started my first job as a web developer. In all these years, I never finished a degree. Since 2021, I’ve been working on a BSc in Information Systems and Information Technology from TU Dublin. The course is modular with several exit paths. One could choose to exit at a Higher Certificate (Level 6/2 years), BSc Ordinary (Level 7/3 years), or BSc Honours (Level 8/4 years). When I started, I was thinking I’d exit at BSc Ordinary but later decided to stick with it for another year just in case I decided to get a Master’s degree in the future.
The view from the Central Quad. I came here for exams every January and May.
The course is fairly modular, you can pick which modules you want to do in every semester at the start of the year. This is unlike most courses at the university and it meant, registration was quite a stressful time every year. While I was never elected the class rep, from the 2nd year onward, I had to step in and talk to the course coordinator regularly at the start of term to get information about the start of classes. We organized ourselves into a Discord server pretty early on and it helped!
The stairs in the Central Quad building. They were always fascinating.
The first 2 years of the course taught us fundamentals. This is probably when I learned the most. The fundamental math and algorithm classes were fun and taught by excellent lecturers. I also got a chance to learn about the theory behind relational databases, networking, and encryption further than I had explored myself. All of these subjects had some great lecturers who went in-depth. In theory, the university would have let me skip some courses, but I explicitly chose not to. I wanted to get a feel for doing the work and allocating time in low stakes courses in the first year. Every semester went something like this: One course were I’m learning new things, 2 courses were what’s being taught is familiar enough and I can probably trivially pick up the new pieces.
Our class started with roughly 18 students. Due to different folks and their availability, not everyone went at the full pace of talking all the subjects in every semester. At the end of the third year, there were 3 of us who were from the start, we adopted 2 more folks who had started before us, but were targeting to finish with us.
The classes were from 6:30 pm to 9:30 pm on Tuesdays to Fridays in most years. The last year of the course was chaotic since the days of the week shuffled around. Additionally, we had to do a project and that had its own classes to talk about the report. I also had a meeting with my project supervisor to top off the class about it. If I had a time machine and choice, I’d probably not try doing the project and a full course load. That nearly burned me out at the end of the academic year.
I approached by assignments like an SRE, it was all version controlled in Git and I wrote most of it with LaTeX. The only exception was a math course that took only 15 mins on paper. It would have taken a good hour with LaTeX. I ended up with a standard LaTeX template for my assignments that I kept reusing. The good news is that it looked consistently good across the board!
Standing in line to get my parchment. Disbelief that this is finally over!
At end of October, we graduated finally! The sense of relief among the 6 of us were palpable! Would I got back for a Master’s degree? Not any time soon. I need the distress and burn out of the last 4 years to leave me before I try that again.
Learning a new programming language is rough without using it regularly. When I tried to learn Go a while ago, I struggled because I was not using it a lot. Then I my team at work started using Go and it clicked into place really well. When I decided to pick up Rust, I ran into the same challenge. This time, work wasn’t going to save me. I decided to challenge myself to write all new personal code in Rust.
As part of a college course I’m doing, I have a security and cryptography module this year and I decided to try to write the code for that module with Rust. In some particularly tricky sections, I had to write the code in Python first and then figure out how to convert that into Rust. I’m pretty sure my code isn’t the most perfect, it helped me get a sense for using the language constructs and reading a lot of documentation.
Clippy helped improve my code into something marginally elegant.
Learning to write tests early increased my velocity a lot. The code-edit-run cycles are a lot easier if unit tests do the work for you.
Following a book or a full guide bored me a bit, so this was a nice middle ground and I got to submit this for my assignment. The code is at cipher-suite and I can’t really think of any real world use cases for it. It was fun playing around with it.