From Software to Hardware — Part 1 (how it all started)

Marek Piechut
Real Life Programming
6 min readJul 19, 2021

--

Photo by Vishnu Mohanan on Unsplash

How it all started

I’ve always been interested in electronics and computer hardware. I’ve built almost all of my own PCs, done some soldering, replaced broken capacitors, etc. I’ve also tinkered a bit with Arduino and Raspberry Pi, but never really got anything more than recreating some basic examples from the web. Until now.

Few months ago, probably out of boredom or something, I’ve started to teach myself to touch-type. I never really had issues with typing speed. Software developers don’t need to type that fast. Most of the time you spend on staring at the screen and thinking about “What has just happened here, why this stuff doesn’t work”. But outside of that it started to really bother me, that I was making a lot of mistakes when I was typing fast. So I have started to go through online services teaching touch-typing. It was pretty bad at the beginning, but after few weeks it started to pay off. I’ve got back to my regular typing speed, but now without ever looking at my keyboard and using all my fingers.

Then I started to feel, that regular keyboard is not really made for real people. I started to feel discomfort in my left hand after longer typing session. It was probably due to fact, that my left hand fingers are not leaning to the left and my elbow is naturally not somewhere near my bellybutton. But that’s what is expected from you, when you touch type using regular — staggered keyboard. Just try to put your fingers on the keyboard according to any hand placement tutorial and press keys with proper fingers. Your right hand fingers are expected to lean towards center of your body, while left hand is leaning to the left side. I know that people are not really symmetrical, but not like that.

So, when you have learned a bit of touch-typing, and have experienced a bit of typing fatigue, what do you do? Now you have an excuse to buy yourself a…

Mechanical Keyboard

So I’ve started to look around for a mechanical keyboard. Unfortunately most of them were just regular, staggered keyboards made for gamers. It was not something I’ve even considered. There must be something better, I thought. This way I got into ortho-linear keyboards. My first shot was to get a Planck keyboard kit. I’ve had the idea, that you want not only to have keys in a plain grid, to reduce finger stress, but also that you want to have less keys, so that you have less finger movement while typing.

But during the search through the web I’ve also found a cheaper clone of Planck — a BM40 keyboard. It’s more or less the same design. The only difference is that you cannot have 2 separate keys in place of space bar, no buzzer for sound and added RGB lighting. All stuff that I don’t care about.

While waiting for shipping I’ve also got the idea to try out something more extreme — a minimalistic split keyboard. Something considered an ergonomic holy grail. So I’ve also ordered a kit to build a Corne keyboard. This was a bit more involved. I’ve received a pack with a lot of tiny pieces and had to solder it all by myself.

It took me few hours, 2 painful de-solderings of 12 pin microcontroller boards (and it’s really a pain to do it with a regular soldering iron), but it was a full success. Now I’ve had a geekiest keyboard of all people I know.

It can’t be that hard

All this tinkering with electronics, firmware flashing and microcontrollers, got me back into my old hardware interests. I’ve started to get back into Arduino and basics of voltage, current and power. You know… connect a LED to power source, voltage dividers, control a small motor with a microcontroller, etc. But this time I wanted to get a bit more, not just tinker with it. I wanted to understand how all this stuff really works. Didn’t want to just read a tutorial and build something small. I wanted to design it myself.

So that I’ve started to read about Ohm’s and Kirchhoff’s laws, AC, DC and power. About passive and active electronic components and which where used when and how they could be connected. Went through Electronics Cookbook by Simon Monk and analyzed few simple circuits filling in the gaps in knowledge whenever something was not clear.

After some time it all started to click and I could finally understand why some stuff did work and why sometimes it didn’t. In the meantime I’ve switched all my typing to new keyboards and started to see some issues within their design. Don’t get me wrong, they are really great for typing. I really like to type using Corne and my 40% ortho. I think they are ideal for text input. But not all programming tools are made for typists. You tend to rely a lot on keyboard shortcuts in tools like IntelliJ Idea or Sublime Text. Most of the people don’t use combination like Alt+Shift+F6 or Ctrl+Cmd+↑. But that’s common for programmers to use stuff like that. And with just 47 keys it’s getting painful. You need to add even more keys to these 3–4 key combos to change layers and access F-keys or numbers.

And so, I was back on a lookout for a new keyboard. I knew already that I didn’t want a staggered keyboard. It was so much easier on my fingers to type on a regular grid or on a grid with vertical stagger. I was never going back, but needed more keys and better layout.

After some searching I’ve finally have connected the dots. I was already few months into the electronics. Already had some idea about how all this stuff works, and wanted something different from my keyboard. So, how hard can it be? I thought, and set myself a goal to build my own keyboard. But not just to reproduce what others have made. I wanted to understand it all and build it from ground up. And it appears that keyboard community has a lot to offer to people willing to learn: open source schematics, open source firmware, a lot of documentation and examples.

And that’s how I got myself, after 13 years of software development, into microcontrollers, PCB design, ESD issues, schematics, datasheets, prototypes and others. Always wanted to do it all — hardware and software. To design it from ground-up. Build a prototype, create firmware and drivers and release it into production. I know that keyboards are simple products, even programmable ones. But now, while typing this, I’m holding a PCB of my first prototype and quoting aluminium machining companies for a case. It was a lot of learning and doing and it feels really good, to build a physical product from nothing. Not only software for it. Let’s see where it ends.

--

--

Software engineer — Tech Lead @Dayone.pl with more than 11 years of commercial experience. Getting into electronics and hardware engineering just now…