October 26, 2020
Kyria - new adventures in keyboards
Somehow, even though you think you got to the proper end of a journey, there is always another step to take.
Some steps sneak up on you too, like a valley you could not see from earlier in the path, the kind of which you intended to avoid but might as well experience now that it is in front of you, even if it is something of a delay.
What are you going on about?
This is my new Kyria keyboard, bought as a kit from the excellent Splitkb.com. The hidden valley was the fact that I bought the kit including assembly, but decided to assemble it myself when I discovered the assembly service was unavailable for the forseeable future. The main thing I was after when I placed the order was to get another split keyboard, and to experience another key layout while at it. Learning how to solder was nowhere in my plan, but I decided to take the pieces and see what I could do rather than get my money back and wait for some possible future day to come.
Everything I had ordered was delivered in one box full of clearly labeled plastic bags, most of which also listed their exact contents and a link to the build instructions. I got a feeling similar to opening a Lego set: here is a box full of parts you will have a great time assembling, you can do this!
I took my time getting started though. After reading through the instructions a couple of times, my soldering skills felt like the big question mark. I did some reading, looked at some introductory soldering videos and listened to encouraging comments in Kodsnack's keyboard channel before I felt confident enough to get started.
Soldering a keyboard
The main reason I managed to finish this project successfully was the excellent set of guides Thomas of Splitkb provides. Every single step is clearly documented in text and images, striking that magical balance where there is no unnecessary fluff and every single question is somehow answered if you just read attentively.
To try and avoid the story lasting forever: everything was pretty straightforward. The two big soldering steps were soldering a diode for each key, and soldering the key switches themselves. Two hundred solder points in total, of which I ended up improving 25 or so. It was extremely helpful when I posted a photo of my first round of diode soldering to Slack and immediately got a comment about which points looked to be in need of improvement and why.
(The fact that I chose not to have any LED:s or OLED screens saved me quite a bit of work.)
The tricky part about diodes was getting them to sit as close to the board surface as possible, to ensure they would not get in the way of any other components. I did a good enough job to not have to re-do anything, but I did end up bending some diodes to the sides, so I pretty much used the margins I had. Perhaps I should have taped the diodes to keep them tight to the board as I worked? The amount of clearance needed is completely decided by the case and other components, so I understand why the guide could not provide a firm number for how low to keep the diodes.
As for the key switches, the main soldering uncertainty was soldering bridges - accidentally connecting areas which should not be connected. The guide had clear warnings about this, and it looked uncomfortably close in some places, but in the end I think it happened in at most two places. I had enough trouble with two keys that I ended up removing them completely and re-soldering after cleaning up as much as I could, so I am not comepletely sure if a bridge or just plain bad soldering was the cause.
Layout and use
I did of course realize the Kyria layout is very different to other keyboards I have used, but not until I actually sat down to type did it dawn on me just how much this could and should influence my keymap.
I think I was somewhat blinded by realizing the Kyria actually has more keys than my other 40% keyboards. While completely true, those extra keys all fall under the thumbs, laid out as if the bottom row of a standard keyboard had drifted toward and bunched up in the middle.
My current layout has put ctrl, alt, and command closest to their standard positions on the very left of the bottom row, but they are now nowhere near the finger positions they used to be at. The one advantage is that I find it easy to recall where they are, but I am sure they should move once I figure out the right destinations. It will take some thinking to find good places to put keys which are often combined. Each thumb cluster should only have one combo key each, the rest need to be combined only with keys outside of the cluster.
The "extra" keys allowed me to bring base-layer (that is, keys I do not need to hold down any other key to use) arrow keys back, but I am pretty sure that will not last.
(On my other layout, I have them on WASD when I hold down the tab key. Which means a lot of fingers get involved if I try to hold down shift and command while pressing the down arrow key.)
As I write this, I have an inverted t-shape in the right thumb cluster mapped to the arrows. While it is nice to have the arrow keys sitting right there, easily combined with modifier keys, it made me realize just how good an idea it is to move everything possible to the home row of keys. If I want to use these arrow keys properly, my right hand has to move away from the home row position completely, and that is no way to live.
As of typing this, my idea is to add a key which toggles a layer with arrow and modifier keys, so I can arrow around and use modifiers without needing to also hold down a layer switch key.
A final funny thought: if I do succeed in bringing more functionality to the home row by way of layers, I could find myself with even less use for my bonus keys.
Wrapping up, for now
I enjoy my Kyria a great deal, but its way too early to tell if it might become my new favourite. I still make too many mistakes, and I think it will take longer to figure out and learn a truly efficient layout. But if I do find a good one, I might find it very hard to go back to a more traditionally shaped keyboard.
Time will tell.
October 17, 2020
I have recorded five podcasts this week, published two, and will have edited three by the end of the week.
This was not actually planned way back at the beginning of Monday.
First, the really nice unplanned part was being able to jump at recording opportunities, so that this week's Kodsnack was actually scheduled, recorded, and edited within about 20 hours before release. I also think Monday represented a milestone in that I recorded two completely different episodes back to back, with literally five minutes' break inbetween. Good times!
Second, the more annoying unplanned part was the total technical and tactical failure that was the first attempt at recording this week's Björeman // Melin. We have had most technical problems imaginable at some point or another, but this was the very first time we actually lost the entire episode. On Tuesday evening, we sat down and recorded our impressions of Apple's we-got-paid-so-much-to-push-5G-until-we-are-blue-in-the-face-event. We had a really fun three-person discussion about phones, Homepods, Magsafe for Mac pro, and wrapped up with a completely off the record discussion about what and how to watch the movies of the Marvel cinematic universe. Again, good times.
Then I sat down on Wednesday to start editing - it is after all always fun to get event commentary out soon-ish after the event - and realized something had gone seriously wrong.
As background, the way we like to record is that everyone records their own sound locally, while I record my own sound plus that of everyone else as it comes to me over whichever application we currently use to chat. I end up with a stereo file with my own voice on one track, everyone else on the other track, and, ideally, separate tracks with each other voice straight from that person. This enables me to easily line up all the individual voices, ensures better sound quality should there be network issues, and enables me to edit so that people will not talk over eachother in the final episode. Should something go wrong with a local recording, I can fall back to using my recording of everyone. I have high-quality sound of everone regardless of internet weather, and I can always fall back to my recording should there be problems with the local recordings.
Well, for everyone but me, it turns out. Somehow, my recording ended up being two identical tracks of the other participants, and exactly no track of my voice.
I stared in disbelief at the four tracks, all of which contained conspicuous gaps whenever I had been speaking, and felt that sinking feeling in my stomach.
Somewhat to my surprise, I was not banished, and everyone was up for a re-recording the same evening. This time, the Marvel discussion was included too, so I feel listeners gained something in the process.
I now have a completely separate section inside my Audio hijack setup where I also record my own microphone straight to a separate file. Yes, just like I always ask everyone else to.
So, how did that happen?
I wish I knew. I think it might have something to do with restarting an app after a recording has been started in Audio hijack. I often stream some music before our scheduled recording, to see that the streaming setup is working, so sometimes the session has been running for quite a while before I actually sit down to begin the episode. Perhaps this was one of those times where our conferencing application had discovered an update in the meantime, and I mindlessly let it update and restart because there were still a few minutes to go? I do feel like it had made more sense if I had got a completely silent channel in that case, but who knows when it comes to computers?
What a week, huh?
October 05, 2020
Books I have read
Books and other literature I have read, in, somewhat uncertain, reverse chronological order. The list starts from the summer of 2008, and my main purpose with it is to be able to see what I have actually been reading. I do feel that I read many quite good books, but I never seem to be able to recall what I have recently read when asked for recommendations.
- The phoenix project, by Gene Kim, Kevin Behr, and George Spafford
- Take control of working from home temporarily, by Glenn Fleishman
- Norma, by Sofi Oksanen
- The soul of a new machine, by Tracy Kidder
- Under Stalins diktatur, by Signe Kaskela
- Game engine black book: Doom
- How to make sense of any mess, by Abby Covert
- Creative selection, by Ken Kocienda
- The leprechauns of software engineering, by Laurent Bossavit
- Algorithms to live by, by Brian Christian and Tom Griffiths
- Afrikanen, by J.M.G Le Clézio
- Mooncop, by Tom Gauld
- The levers of power, by Jason Fry
- A new dawn, by John Jackson Miller
- Bottleneck, by John Jackson Miller
- Mercy mission, by Melissa Scott
- Natural born heroes, by Christopher McDougall
- Making sense of color management, by Craig Hockenberry
- Tarkin, by James Luceno
- The year without pants, by Scott Berkun
- Batman - the killing joke by Alan Moore and Brian Bollard
- What if? by Randall Munroe
- Käre ledare - min flykt från Nordkorea, by Jang Jin-Sung
- Äventyrsspel - bland mutanter, drakar och demoner, by Orvar Säfström and Jimmy Wilhelmsson
- Take control of Audio hijack, by Kirk McElhearn
- Pro HTML5 games, by Aditya Ravi Shankar
- So, anyway …, by John Cleese
- The Martian, by Andy Weir
- Extremely loud & incredibly close, by Jonathan Safran Foer
- Svärdet och spiran, by Ken Follett
- What is code, by Paul Ford
- Marina, by Carlos Ruiz Zafón
- Becoming Steve Jobs, by Brent Schlender and Rick Tetzeli
- Gone girl, by Gillian Flynn
- Thinking, fast and slow, by Daniel Kahneman
- Expeditionen - min kärlekshistoria, by Bea Uusma
- Världens vinter, by Ken Follett
- Generation 64, by Jimmy Wilhelmsson and Kenneth Grönwall
- Inferno, by Dan Brown
- Yellow submarine, English interactive edition
- Giganternas fall, by Ken Follett
- Ensam i Berlin, by Hans Fallada
- Stora löparboken, by Hans Wiktorson
- Creativity, inc. by Ed Catmull with Amy Wallace
- Nionde arméns undergång - kampen om Berlin 1945, by Niclas Sennerteg
- Version control with Git, by Jon Loeliger and Matthew McCullough
- Life of Pi, by Yann Martel
- Ravioli, by Klas Östergren
- I döda språks sällskap, by Ola Wikander
- Berättelser från Engelsfors, by Sara Bergmark Elfgren and Mats Strandberg
- En av oss, by Åsne Seierstad
- The great Gatsby, by F. Scott Fitzgerald
- Living with someone who's living with bipolar disorder, by Chelsea Lowe and Bruce M. Cohen
- Out of time in Wan chai, by Fan Tong
- Mitt liv som porrstjärna, by Puma Swede and Jan Ekholm
- The complete works of H.P. Lovecraft
- How to get filthy rich in rising Asia, by Mohsin Hamid
- The new Avengers volume 1: Breakout, by Brian Michael Bendis and David Finch
- On writing well, 30th anniversary edition, by William Zinsser
- Bipolar II disorder, modelling, measuring and managing, second edition, by Gordon Parker (editor)
- Eat and run, by Scott Jurek and Steve Friedman
- Knockout.js succinctly, by Ryan Hodson
- Clean code, by Robert Martin
- Peopleware, by Tom DeMarco and Timothy Lister
- The mythical man-month, by Frederick Brooks
- Code complete (second edition), by Steve McConnell
- Mona Lisa overdrive, by William Gibson (yes, re-read)
- The art of readable code, by Dustin Boswell and Trevor Foucher
- Count Zero, by William Gibson (again, re-read)
- Neuromancer, by William Gibson (re-read, but last time was 15 or so years ago …)
- Churchill, by John Lukacs
- Tito - folkets diktator, by Björn Kumm
- Tweeting the universe, by Marcus Chown and Govert Schilling
- Andra världskrigets historia, by Liddell Hart
- Jag är din flickvän nu, by Nina Hemmingsson
- The bipolar disorder survival guide, by David Miklowitz
- Metro 2033, by Dmitry Glukhovsky
- C++ direkt, by Jan Skansholm
- Test-driven iOS development, by Graham Lee
- Sunset park, by Paul Auster
- Pushing ice, by Alastair Reynolds
- The difference engine, by William Gibson and Bruce Sterling
- Born to run, by Christopher McDougall
- Idea man, by Paul Allen
- Med Hitler till slutet, by Heinz Linge
- Insanely simple, by Ken Segall
- Lyckohjulet, by Jonas Hansson
- The art of deception, by Kevin Mitnick
- Neonomicon, by Alan Moore and Jacen Burrows
- Doggy Monday, by Maria Sveland
- Steve Jobs, by Walter Isaacson
- The arrival, by Shaun Tan
- Maria & José, by Erlend Loe och Kom Hiorthøy
- Stupid white men, by Michael Moore
- The design of everyday things, by Donald A. Norman
- Being geek, by Michael Lopp
- The elements of style, by William Strunk and E. B. White
- The Authoritarians, by Bob Altemeyer
- Seven languages in seven weeks, by Bruce A. Tate
- A mind in prison, by Bruno Manz
- Do androids dream of electric sheep? by Philip K. Dick
- Var är min syster? by Sven Nordqvist
- Svenska skrivregler, by Språkrådet
- Endless nights, by Neil Gaiman
- Ipad programming - a quick-start guide for Iphone developers, by Daniel H Steinberg and Eric T Freeman
- Textmate: power editing for the Mac, by James Edward Gray II
- In cold blood, by Truman Capote
- Harry Potter and the deathly hallows, by J.K. Rowling
- Harry Potter and the half-blood prince, by J.K. Rowling
- Nausicaä of the valley of the wind, by Hayao Miyazaki
- The catcher in the rye, by J.D. Salinger
- The Wake, by Neil Gaiman, part ten of the collected Sandman comic.
- Vad jag pratar om när jag pratar om löpning, by Haruki Murakami
- Vitt ark, by Simon Eidorson
- The pomodoro technique, by Francesco Cirillo
- The Harry Potter series part one to five, by J.K. Rowling, as audiobooks.
- Lika barn..., by Simon Eidorson
- The Kindly ones, by Neil Gaiman, part nine of the collected Sandman comic.
- The lost symbol, by Dan Brown
- Den som dödar draken, by Leif G.W. Persson
- Lev livet - det går inte i repris
- Coders at work, by Peter Seibel
- Beautiful code, edited by Andy Oram and Greg Wilson
- Iphone SDK development, by Bill Dudney and Chris Adamson
- I have life, Alison's journey, by Marianne Thamm
- No logo, by Naomi Klein
- GUI bloopers 2.0, by Jeff Johnson
- The angel's game, by Carlos Ruiz Zafón
- Snow crash, by Neal Stephenson
- Spook country, by William Gibson
- Bone, by Jeff Smith
- Jpod, by Douglas Coupland
- World's end, by Neil Gaiman, eigth part of the collected Sandman comic.
- RESTful web services, by Leonard Richardson and Sam Ruby
- Test-driven development by example, by Kent Beck
- The knowledge-creating company, byt Ikujiro Nonaka and Hirotaka Takeuchi
- Compilers - principles, techniques and tools, by Aho, Lam, Sethi and Ullman
- Structure and interpretation of computer programs by Hal Abelson, Gerald Jay Sussman, and Julie Sussman
- Pragmatic thinking and learning - refactor your wetware, by Andy Hunt
- Practical common lisp, by Peter Seibel
- The algorithm design manual, by Steven Skinea
- Brief lives, by Neil Gaiman. The seventh part of the collected Sandman comic.
- Blink, by Malcolm Gladwell
- Mahatma!, by Zac O'Yeah
- Gomorra, by Roberto Saviano
- Inshallah, by Donald Boström
- Montecore, by Jonas Hassen Khemiri
- Hemsöborna, by August Strindberg
- Everything is illuminated, by Jonathan Safran Foer
- The time machine, by HG Wells
- Egalias döttrar, by Gerd Brantenberg
- The secret history of Star wars, by Michael Kaminski
- Learning Cocoa with Objective C, by James Duncan Davidson
- Cocoa programming for Mac OS X, by Aaron Hillegass
- Människa utan hund, by Håkan Nesser
- Tyskungen, by Camilla Läckberg
- Carolus Rex, by Ernst Brunner
September 20, 2020
Hi there, I'm Fredrik Björeman!
I am one third of the trio behind the podcast Kodsnack.
When I have a longer thought, I tend to put it on this site.
When I have short thoughts, I often put them on Twitter or Facebook.
When I take a photo I find worth sharing, it might show up on Instagram.
When I work, I build cool stuff at TimeEdit.
Off work, I run often - preferably in quite minimal shoes.
I also sometimes write code for fun (including the little tinker-toy engine behind this very site).
I consider it a craft or art more than a science.
I used to help organize the local Cocoaheads chapter.
September 13, 2020
A bit of garden work got done today. It was raining continuously, and my clothing for various parts of my body ranged from reasonable to hilariously unsuitable. We got everything done in a pretty nice way, but I was soaking wet and so covered in mud that I had to do a rough first cleaning under the tap in the garage in order to not leave a trail of mud behind me as I stepped indoors and took the shortest possible path to somwhere, anywhere I could rinse off the clothes some more before actually putting them in the laundry baskets.
I had intended to write some more yesterday, but I had an appointment, and managed to somehow get Sublime stuck in overwrite mode, so I decided it was a good time to stop, build and upload. On the topic of surveillance capitalism, I have trouble getting Youtube videos to play in Safari sometimes. Review videos on the Verge work on the main page, but do not appear when I click into the article page. All this is in Safari with 1blocker active. Sometimes I am annoyed, but sometimes I feel a sort of joy in breaking something by doing reasonable blocking. If your solution for providing a feature breaks down when ad blocking is activated, you probably should solve it in a different way, right?
Firefox gets some more exercise whenever one of those broken videos feel interesting enough, and it also provides me the satisfaction of setting my rare Facebook visits in an environment specifically built to keep Facebook's tendrils away from the rest of my world. (I have no doubt they find other sneaky ways of gathering my data, but at least I am not making it easy in that particular way.)
Staring at the app icons on my phone yesterday, trying once more to trim the selection down to some imaginary essence, a great big "duh"-insight struck me: If I want the trimming to make a noticeable difference, I should be removing apps I actually use, rather than the meaningless cruft or rarely-used utilities I tend to focus on. A once-a-year public transit app tucked away in a folder causes no distractions at all, but Twitter or Instagram certainly do wherever I put them. Banking apps do not make my phone heavier in any way, so sitting around wondering if I can decrease their numbers is in itself a total waste of time. The real question is: would I truly miss anything if I purged Twitter and Instagram? Or, could I somehow relegate them, too, to be rare-occasion apps, for those times I am out and about (remember being out and about?) and can actually have meaningful exchanges through them? I made a list of things I do want to use my phone for, and communication was on the list, so it is not like some amount of networking is completely out of place. But treating it more as a tool when needed than as a quick distraction sounds healthy.
Now things are getting interesting.