Random thoughts

KeyboardIO Atreus review

On august 11, 2021 I took delivery of a KeyboardIO Atreus keyboard.

My Atreus with palm rest and Qwerty keycaps.

I have been using the Atreus for a month now and I am really starting to get used to it. So this is my one month review.

I ordered the Atreus configured as follows:

  • Qwerty keycaps
  • Maple palmrest
  • Kailh Box White switches
  • Travel case

Currently I still run default layout as it comes in the box with one modification. I swapped the space and backspace keys. It turned out I am very much a left thumb spacer.

My initial impression were very mixed. Build quality and everything is very nice. The device looks clean, has some decent weight to it and it feels sturdy. Also the palm rest, I instantly was very happy I added it to my order.

But usage wise it does have a steep learning curve. What it most of all did was tell me what bad typing habits I learned over the years. And I really had to do some deliberate training to adjust to this keyboard. A nice side effect is that my typing technique on standard Qwerty layout has drastically improved as well.

I looked into learning an alternative typing layout called Colemak, but after some initial trials I felt I would be better of sticking with standard Qwerty to keep decent interoperability when this thing is not around.

Typing wise it looks and sounds like you expect from a mechanical keyboard. It is loud, especially with the clicky box white switches I have on it. I did experiment with a number of other switches. I tried Cherry browns and Kailh Speed Copper. But on the Atreus I was really missing the clicks with the browns and the speed switches were just too sensitive. Just laying down a finger would register a keypress and I did not like it at all. (On my IQunix L80 I absolutely love the Kailh Speed Copper switches, provided I put a sturdier switch under my spacebar. A Kailh Box White in my case.)

So let’s dive in a bit more on my experience. As said the initial experience was quite bad. I needed the included reference card all the time and my typing speed really tanked. The first week I really felt limited by it. If I needed to get some work done, I would quickly switch to a regular keyboard.

But after deciding to dig into this thing I opted to go for deliberate practice each day. The second week I would do a couple rounds of practice on each day. And that has proven to be the right choice. I am not back at my old typing speeds yet, but I am getting there. In the second week I managed to get through my first full day of working on it. That combined with the deliberate practice sessions has been working great for me thus far and I plan on keeping at it until I can really see a steady high speed on keybr with a low number of errors.

All in all I do not regret buying the Atreus. Would I recommend it to anyone. Absolutely not. Do I love this thing? Absolutely.

This is an input device you either need for ergonomic reasons or you just really like the small desk footprint and are willing to put in the effort to adjust to how it works. Because one thing to know with the Atreus is the layering system, eventhough it only has 44 buttons, all usual key presses are available by what is called switching layers. With one key press all keys on my device switch to a different function and I can type brackets on the left side and the right side becomes a sort of numeric pad. And there is a whole lot more you can do with this thing. Currently I am slowly creating a dedicated podcast editing layer strictly tailored to my usage of Hindenburg’s Journalist Pro software.

Some fun things to note about the Atreus. It is a split columnar layout. Just look at the images in this post and you can see what that is about. But what is not visible is the firmware, it is an Arduino based system, opensource and KeyboardIO also has a graphical user interface available allowing you to do most of the setting and tweaking of the functionality of every single switch on the Atreus.

If you have any questions or things you want me to share my experience on with this keyboard. Let me know, easiest is a DM on Twitter. @leenarts or @appforce1.

Random thoughts

Published eBook: Lead Developer

On march 18 I self published my first book. Lead Developer. And I have been getting some questions on what my proces was.

You can find more info on my book here.

Lead Developer: best practices and tips for lead software developers, by Jeroen Leenarts.

It is really simple. I used LeanPub and just started writing. The benefit of using their platform is that you can write in MarkDown and they take care of the typesetting and making sure you end up with an PDF, ePub and Mobi output.

I wrote the book, which at first launch was a little over 10.000 words in about 3 months time. Since I already had a good set of notes to begin with I knew I had enough content. The first thing I did was create a preliminary table of contents. And based on that I started writing. During the writing I discovered I wanted to group things into three categories. Team, Business and you. Since I wrote everything in Markdown it was very easy to adjust.

I also wanted some graphical content and a book cover. For that I asked a creative friend to draw up some avatars. I really like the results Linda Udding created. And we also made an agreement on what I will pay to her for her work. Since this is a first book, we both did not know how well it would work out. So we agreed on a profit cut until we reach a level of payment that is in line with market standard for the amount of work she did. Since I already had my book’s content divided into three parts by that time it was easy to convert that format into a creative brief for Linda. She was able to create the work in no time at all.

When I set out to write this book I planned on doing it just for the fun of it. If I help on person, great. If I sell no copies at all, that’s great as well. My main goals with writing the book are:

  • Structure my own learnings on the topic of being a lead software developer to become a better one myself.
  • Learn about what it takes to write something resembling a book.
  • Have something meaningful on offer when someone asks how they can support my online activities. Buy my book sounds way better to me compared to “just give me some money”.
  • Be able to put “published book author” on my resume.
  • Learn about what it takes to market a product to some level of succes.

Any income gained from this book is a happy coincidence. And, at the time of this writing I sold over 60 copies and I am looking into ways to market my book more. I hope to hit 100 soon. But who knows, it all depends on wether I can make online appearances, get my book linked more by others. Advice is still welcome at this stage, I have not found “the best way” to do this on a shoestring budget.

Random thoughts

iOS Core Data Workshop

With the help of Donny Wals I am organizing a Core Data workshop on April 22 and April 29. We’ve chosen times that are convenient for multiple timezones around the world.

More info here:

Order your ticket

We’ll build a simple app that features everything you might need in a moderately complex application. We’ll start by adding Core Data to an app and setting up a very simple form to add data to a store. After that, we’ll set up a list in SwiftUI to display data. Next, we’ll add an edit screen. The next step will be to build a filter screen.

Once the filter screen is added, we’ll focus a bit on architecture. Instead of using SwiftUI’s built-in features, we’re going to build a view model that holds a fetched results controller, and we’ll use this to drive a SwiftUI view by leveraging Combine.

The last step will be to write an importer that uses a background managed object context to import a bunch of sample data for our app. We’ll use a set of JSON data so it closely mimics a scenario where you load data from the web.

Throughout the workshop we’ll not only use SwiftUI, but also bits and pieces of Combine. Don’t worry if you’re not familiar with Combine yet. You’ll learn some of Combine’s core principles as we go to make sure you know and understand just enough to leverage it in the workshop.

Your trainer will be Donny Wals, author of Practical Core Data.

  • Duration: 4 hours
  • Capacity: 5–15 people
  • Location: Online
  • Programming Language: Swift, latest Xcode
  • Choose your date and time when buying your ticket:
    • April 22, 2021 / 09:00 AM – 01:00 PM Pacific Time
    • April 29, 2021 / 13:00 – 17:00 Central European Summer Time

About Donny Wals

Donny has been practical experience with Core Data, Combine and teaching. Through his book Doony was able to share his knowledge to a wider audience. Donny is an expert on Core Data. He has written one of the best received recent books on the topic of Core Data. Donny has also written an amazing book about the Combine framework called Practical Combine.


AppForce1: Episode 7

Book, lots of books this week. Daniel Steinberg interview live on thursday. Some great articles. And I think I am getting less nervous now. 🙂

00:00 Intro

00:41 Twitter me: @AppForce1


00:53 Go go Craig Clayton: SwiftUI Projects

01:06 My book: Being a Lead Software Developer

03:16 My Book: Pre order on Gumroad

03:30 Hassan Osman: Writer on the side

03:45 Sponsor: Backblaze

04:23 The news

04:27 Apple: App privacy questions

05:11 What It Took to Get FoodNoms Ready

05:48 SwiftUI’s Grid Views

06:11 Event-driven generic hooks for Swift

07:20 Formatted Localizable Strings

07:45 Donny’ monday morning tweet)

08:56 ConnectKit by Josh Holtz

09:33 Coaching for free: email

10:04 CocoaHeadsNL Dec. Meetup

10:19 Outro

10:26 Twitter: AppForce1


10:48 My website


AppForce1: Special 5

Pedro Piñera. A software developer working mostly on development tools at Shopify in Berlin, Germany. He spends his days improving the development tooling for his peers at Shopify. In his spare time, he works on, a tool to make maintaining Xcode projects everyone’s task by describing them using a plain language.

Subscribe to my newsletter on

00:00 Intro

00:39 Welcome

01:32 Origins

04:39 Getting started with iOS

06:07 8fit

07:17 SoundCloud


11:13 Shopify

12:31 Comparing SoundCloud and Shopify

14:08 at Shopify?

15:15 Weekly time spent on…

17:11 More on Tuist.

22:34 Future Xcode changes and Tuist?

26:11 So Pedro, who are you?

29:09 Podcast recommendations

29:17 Podcast: The Changelog

30:03 So about Berlin weather…

31:42 Books

32:17 Book: Refactoring UI

32:48 Book: Thinking in SwiftUI

33:32 Working with and managing people

37:58 Make things simple

39:02 Outro


AppForce1: Episode 6

Lots of stuff going on right now, planning a bunch of interviews. Doing recordings, decided to take my newsletter a bit more serious. And my recommendation for this week “Shut up and listen” if, for example, you want to be a better team player.

00:00 Intro

00:18 AppForce1 newsletter

01:02 Book: Junior to Senior by Yuri Karabatov

01:29 Twitter: AppForce1


01:44 Sponsor: BackBlaze

02:21 News

02:37 Apple Small Business Program

03:39 Apple: Subscription offer codes

04:08 PSPDFKit: PDF to an Image

05:26 Scaling custom fonts with Dynamic Type

06:22 SwiftNIO SSH

07:04 Anatomy of collection view compositional layout

08:20 Touch ID for SUDO

08:47 Empower Apps: Antoine part 2

09:20 Donny’ Monday morning

10:43 No conference tip

11:05 Coaching for free: Shut up and listen!

13:13 Outro

Colors One

Signal path in de App Store


AppForce1: Special 4

Ben Scheirman. An experienced software developer from Houston, TX. He spends most of his time these days writing Swift and Ruby and recording screencasts. You might know him from

00:00 Intro


03:44 Origins and car audio hacking

05:15 ColdFusion

05:40 ASP before the .NET boom

06:24 Education

06:52 My professor, my mentor

07:37 Making the switch to iOS

12:21 The local usergroup, a place to learn

13:34 Changing career paths from .NET to iOS

22:45 Alex Honnold and Combine learning curve

25:24 Combine Swift

31:14 So Ben, who are YOU.

33:25 Time spent during the week

35:15 I forgot to ask if she is Ben’s better half…

36:23 How much time to create one video

39:46 Tips and advice


40:38 Hacking with Swift

41:38 Book: Deep Work

42:43 So Good, they can’t ignore you

43:05 Recap

43:49 Venkat Subramaniam

45:10 My wife

45:35 Outro

46:14 Feedback? Leave me a voicemail…


AppForce1: Episode 5

Welcome to my 5th episode.Big Sur launched and people are spending more and more time on SwiftUI and Combine. I also have my first listener question.Please rate me on Apple Podcasts.

Sponsor me on
Send me feedback on SpeakPipeOr contact me through twitter.

00:00 Intro

00:21 Twitter: AppForce1

00:27 SpeakPipe

00:32 Headlines

01:23 Sponsor: Backblaze

02:01 Big Sur launched: OCSP failed

02:36 OCSP Apple’s response

03:06 Paul Hudson about page

03:41 LLDB JSON dumping

04:08 MVVM and SwiftUI

04:45 Multi cursor editing

05:05 URLCache

05:26 Monday morning tweet by Donny

07:34 iOS Conf SG

08:04 Voicemail

10:21 Outro


AppForce1: Special 3

Pedro is a Portuguese iOS Engineer since February 2017. He studied at Instituto Superior de Engenharia do Porto.

He is an avid OSS enthusiast and contributor. Helps by sharing, learn by what’s shared.

He is a member of SwiftAveiro’s organization, where around 250 iOS Engineers have gathered to learn in the past three years, and CocoaHeads Porto, the first CocoaHeads meetup in Portugal, where people share knowledge by doing speeches and workshops.

00:00 Pre-show

00:29 Intro

01:15 The University

01:48 The Doist, Todoist and Twist thing…

02:47 First some history

05:57 Day to day at A company

11:44 Swift Aveiro

14:43 CocoaHeads Porto

16:01 CocoaHub

21:32 Time management

28:52 Getting started as developer


AppForce1: Episode 4

Welcome to my 4th episode.We are in a bit of a quite time due to today’s Apple event “Back to the Mac”. Still there are some very interesting articles, NSSPain, I want to pitch you on a new podcast section I am working on and I do my first sponsor read.

Please rate me on Apple Podcasts.
Sponsor me on
Send me feedback on SpeakPipeOr contact me through twitter on @appforce1.

00:00 Intro

00:46 Feedback trough SpeakPipe

00:51 Apple Event: One More Thing

01:03 SwiftUI and UIKit interoperability

01:15 UICollectionView List with Interactive Custom Header

01:32 ProxymanApp Atlantis

01:50 App privacy questions

02:01 Developing a Distributed Data App with SwiftUI and CRDTs

02:23 Building a concurrency-proof token refresh flow in Combine

02:49 Donny’ monday morning)

03:46 Conference: NSSpain

04:08 Coaching for free

04:58 Sponsor: Practical Combine

05:56 Subscribe to my podcast

06:06 Feedback?