sotolf

My keyboard layout colemak curl angle wide

My journey so far

Like most people I started out my typing journey on qwerty, and the touch typing teacher was one of my favourite “games” on my first monochrome computer. After some time I wanted to optimise, and ended up getting into dvorak for a while, but it made my right pinky start to hurt, so after a while I changed over to colemak, and to this day that's where I'm at.

Key points with a keyboard layout.

I'm multilingual, I routinely write in 3 languages, and I didn't want to have to change layouts all the time, so having a layout that could do all of the languages I use without me having to switch layouts is something that is important to me.

Typing comfort is another one, I tend to type quite a bit at work, for different reasons, so having something that's comfortable is key for me, more than how easy transition would be or how easy it is to switch back and forth.

Where I ended up

After much research and trying out different things I've ended up with the layout you see up at the top of the post, it's a modified colemak layout, and it has made typing so much better for me. The modifications is what really brings it over the top for me, colemak already has great comfort, but the curl modification makes me have to do fever stretches while writing, and the angle making the way the hands work more symmetrical.

The thing that I didn't think I'd like that much is the wide modification, basically it makes the keyboard feel a bit more split up, and gives you a bit more space in writing, it makes especially writing on a laptop feel way better, and also reaching shift and enter on the right side of the keyboard a lot easier.

Some trouble in linux at first.

I've had some trouble with linux getting the layout to work well, but thanks to Dreymar making his big bag o' tricks available it's not that difficult to get up and running, and it works wonderfully.

Writing on other machines

This is something that a lot of people tend to bring up when I talk about alternative layouts, but honestly it's not a big deal, I still can write pretty fast on qwerty layouts as well, as long as I look at the keyboard, it's kind of a mental thing that switches me between the layouts, since I didn't really learn full touch typing before switching over. I work in IT, so the flexibility to switch back and forth is rather important, but for me it hasn't really been a problem at all.

Would I reccommend it to others?

Mostly yes, of course it's quite a bit of work to get back up to speed on a new layout, but writing has never felt better or been more fun than since I switched, and even though I have to reconfigure many applications for my new layout, I feel that it has been plenty worth it. Also my beginning RSI is now completely gone, so for me it was work that was more than worth it :)

The more I've been working on things, things being stored in plain text, or at least in a human readable format such as xml or json are mostly the best way to deal with saving things.

Well it's a truth with modifications

Of course there are situations where it will be better to use something like a RDBMS or something a bit lighter like SQLite, but for most usecases plain text will be more than adequate, and it has a lot of other benefits as well.

Choice of representation

What is written in plain text can be shown everywhere, you could use a pager, a web browser or something else entirely, and as long as you're using a reasonably structured format, such as markdown, restructured text or something like it it will be easy to convert it to another format, such as a PDF.

Also accessability is always going to be better with plain text, being able to use a screen reader or change the font if you're having dyslexia to something that is easier to read is a lot easier if what you're dealing with is plain text.

Archiving and automation

Using plain text rather than a binary format will make sure that what you do will be accessible in the future, there will always be a program to read plain text, for any given binary format however that might or might not be the case. Also storing plain text will also be easier because it's usually quite small in the first place, and it also usually compresses really well.

For using automated tools, and searching for something using tools such as grep or doing replacements with sed, or anything else really, using a plain text format is going to be much easier and problem free to work with, and in the worst case if something gets broken you're not going to have a completely garbled file, but you'll be able to read the parts of the file that saved correctly.

Freedom of tools

With a binary format you're more than likely being forced into using one specific tool, while a plain text file is portable, you can use it in almost every operating system, and you can use the tool that you're the most comfortable with to edit or view it.

Also writing a specified tool to help you or to interface between eachother is bound to be a lot easier with a plain text kind of format than with anything else, your usecase might be something that the developer of a program didn't think of, and a binary format might make difficult or even impossible to deal with.

All in all

All in all, like most of my posts lately I feel like I've been endorsing a special kind of minimalism, and again this is the case, by doing something in a more minimal way you're more likely than not to actually help yourself in the long run, things that are easier to understand is easier to maintain, and things that are easier to maintain are bound to be better and more stable. Tomorrows post might as well be water is wet :p

Addendum versioning

@fedops@fosstodon.org reminded me about versioning, something that is another thing that is so important to textfiles, it's great as a way to backing up things, and having something stored in plain text means that you can then follow your whole history through software such as git. Because of the nature of text only documents it makes it easy to show what has changed, and what has been added when and so on. Of course you could do versioning with binary files as well, but the whole process will be a lot more painful than working with plain text.

Second addendum security

Which made me think about security, something being plain text is making it something it's easier to trust, without macros or executables, other than the ones you've chosen yourself opening a plain text file is very rarely going to be dangerous to your system, since it can't execute code on your system.

A “new” thing that makes life harder for us

I've been feeling rather spent and burned out for a while, and I have found out one thing that has been zapping me of energy lately, it's things fighting for my attention, I was part of groups on discord, playing some games with “social” features, and having big lists of creators on youtube that I was following.

So the result of all of this is a phone that is constantly going “ding- ding” and even if you don't think of it, your mind gets automatically drawn towards it. So for a while I started trying to ignore the constant dings, and just look at it from time to time, but it just made things worse, without me noticing, really I got this strange annoyed itch in my head, I knew that something was there that I didn't check, and I felt kind of obligated to, which made me feel always a bit on edge.

So the first big culling started.

The first thing I did was getting rid of discord, not because I don't like it, I had a lot of nice communities that I was part of, but the “obligation” to spend time there, and how you kind of always have to keep spending time there to not get out of the conversation made me spend time that I didn't really want to spend there, just to keep “up to date” for the times that I did feel like it, this means it was more or less a constant recurring distraction that was making me feel miserable.

The second big distractor was twitter, yeah, I spent less time on there, and was more or less constantly out of the loop, but I felt that every time I contributed on there I got wildly differing responses, some times, getting people liking things a lot so that I had a constant flood of likes, or I irked someone and got a constant flood of ire and annoyed people, which made me just feel worse.

So, what with things that I keep using

So, I'm still using reddit, I am part of good communities there, and it's one place where I am contributing is usually ones where it doesn't matter if I go missing for a while. I don't get notifications every time someone likes something I post there, and also it being what it is, often it's easier to just not answer something, it's inherently more asynchronous than anything else. But I'm going through a culling phase to delete places where I'm not really spending time anymore, or that make me feel negatively, so that I get it down to something that feel less like a firehose.

I'm still using youtube, it's more or less most of my TV-watching time, but I've drastically reduced the channels I'm subscribing to, basically if I get notifications about something, and I feel that I didn't really want that one, I'm getting rid of notifications for those channels. Also anyone using the “going live” thing for premiers to get their videos giving me 3 notifications are getting axed.

My main source of entertainment is podcasts, and also here I'm working on being better at just not listening to things I'm not excited about, mostly because I have so many good shows in my feed, and it keeps growing, so If I'm getting over 30 new things in my feed thats downloaded and not listened to, it's time to cull through things.

I guess this is another part of minimalismish

So I guess this is another way that minimalism is winning out for me, not really full on this time, but minimising things that scream for attention really makes me feel better, just being able to sit down and read a book for over an hour without constantly being dragged toward my phone or PC is such a good feeling, and it makes me start wondering how I managed to get sucked into it. For sure I'm not doing it perfect yet, but for sure it's a lot better than what it was before, and can only get better :)

In most of my life I'm trying to be a skeptic, living by the motto “I want to believe as many true things as possible, and as few false things as possible” Personally I find this to be a very freeing way of thinking. But by no means am I perfect, and I'm sure that there are false beliefs that I still hold on to, but the thought behind it is nice.

But isn't it depressive?

I don't think so personally, I'm fine with not having free will for example, I'm not sure how it changes anything, either if I do or not, the way I see it doesn't change who I am, or who the people around me are. Also I'm comfortable saying that I don't know, because there are loads of things that I don't have a single clue about, and not knowing can be a beautiful thing, it means that you have the potential to learn and explore. And that's fun and exciting to me.

How does this come in contact with software?

Well in some ways it does, wanting to learn and understand can have a lot to do with it actually, I like using smaller tools that I can understand, I like knowing what my tools do, when they are running and what's happening on my PC, and if someone hypes up this “next best thing” I'm always asking myself what kind of value it will bring me before I give it a try. And yeah, for me a new experience, or seeing something cool, often is enough value for me, but it also mostly let's me have the possibility to reevaluate and try something new, it might be that this new fancy thing actually is better than the thing I currently use, and just dismissing it because I'm used to something else, maybe isn't the best way to do good things.

I like skepticism as a thought and as a guiding line through my life, it helps me focus on things that actually makes a difference, it makes it easy to pick out claims and things that aren't backed up, basically, if there is neither proof nor evidence for something, I feel that it's not something worth spending my time on.

Does it make me dogmatic?

Yes I guess in some ways it does, but then again, I try learning and picking up good things from sources that otherwise are something I'd dismiss, I do try to meditate, it's helpful for me, helps me relax and focus, I feel it's a net positive to my life, do I know how or what it does, no, not really but I like doing it and it brings positivity into my life, so I like it. Often I don't know why a piece of music, a book or some other art makes me feel good either, but as long as I can see it has a positive impact on me, that's usually enough for me.

Something I still work on.

There is one thing that I have started, and see great effect of, but I'm still not too good at, that is to learn when to stop, when something is not good for me anymore. I've started with small thing, when I listen to a podcast or watch a video or movie, if it's not making me happy, or learn something, or just is something that feels for naught, I'm getting better in just stopping it and move on to somethign that brings me more. If I'm in a discussion that just brings ire, I'm trying to stop, reevaluate, and just talk with the person, remember that I'm not talking with some unreasonable villain out there, but with a complex human that in their own story is the hero, just like I am in mine. So here's to getting better, and to stay positive, I hope you have a nice day and that you to make the best of it. Stop and think and enjoy the moments you have, and I'll try to do that as well.

We should not take ourselves so serious, and the world won't burn because not everyone does or uses the same as you.

If you don't use the same thing as me you're wrong.

No you're not, different strokes for different folks like we say in Norway, “Noen liker mora, andre dattera” Some like the mother, other's the daughter. We just have to live with the fact that some people don't have taste and don't know what's best with them, and that's each every one of us, so let's just have a laugh.

But but but, they will think I'm stupid.

Yes they will, but believe me they will no matter what you do. The time I started really learning to talk other languages was the time that I let go and just did stupid mistakes, said things that didn't make sense and have fun with it. Yeah it might not make sense to have a moving background and a colourful slow terminal, but if you're having fun, who am I to stop you.

So just let go and let the crazy flow.

If you just don't worry about saying something stupid or being the one that does something strange you'll see that things open that you wouldn't expect, and in the worst case, maybe you made someone smile, so don't worry, don't take yourself, your project or your setup too seriously be the crazy one, do something stupid and learn something new.

What did you say?

Less is more, and worse is better, both of these are software philosophy, and they end up in being more or less the same thing, having your software having less functionality, and a less busy interface is going to better for the user in the end. As you get more and more used to computers and computing it's something many people comes to realize. You may have heard about the Unix philosophy as well which is closely related, saying “Do one thing and do it well” I'm not sure what made me resonate so much with these philosophies but as I'm thinking of it many of the points will be the same that I've been talking about the last days, composability, simplicity and ease of use.

Examples of less is more software.

A prime example of this philosophy is bspwm a window manager that does nothing else than managing windows, it doesn't handle hotkeys, it doesn't display a bar and it doesn't have a configuration syntax, but what it does, manage windows it's very good at. The thing is for the missing parts you're free to do what you want, use the program that you like the most.

dwm and st from suckless are other great examples, they don't have configuration files, and have their configuration built in, but that means that when you have them configured, you'll spend less time fooling around with them, and more time being productive.

Most more minimal software has ways of extending them, vim is a great rather minimal text editor that does editing text well, but you can extend it to do what you please.

Doing less means you don't pay for what you don't use.

For most powerful and full featured software projects I usually find I only use a small part of its functionality. But you still have to pay for the stuff you don't use, in memory, program size and just mental load, sure you get used to where the buttons are that you push every day, but all that clutter that is there that you never use still are there itching in your subconcious, I find the approach of a smaller core with addon/plugin functionality to be better, both as a more seasoned user, and while learning, when learning a program like vim you start out focusing on the core functionality, and once you know that well you can start to add on things that makes your life easier, having a good knowledge of the core functionality of a program is something that is going to serve everyone well in the long run.

Peace of mind.

I'm not sure how most other people are going about things, but at least for me I like knowing the software I use, and I want to have tried out most of the functionality that it has. And having to learn what everything is, or having my curiosity fire off about that one thing that I've never tried out in the middle of working on something can be really distracting. What's not there can't really distract you. Also the feeling of mastering something is very nice, and being able to keep all the capabilities of some software in your mind makes it a lot easier to figure out how to do something in my experience.

Doing that one thing well.

I prefer a program to do the one thing that it does as well as it can, a jack of all trades thing is kind of iffy when it comes to software, when I can string together many programs that does their own task well instead of something that half-asses much functionality, the first one will win out every time.

Introduction

There are basically two big groups of people in the linux world now a days. There are those who just wants work done, and use off the shelf tools, e.g. ubuntu + vscode, and then you have the ones who go full hog and build a fully customised system (arch + window manager + vim/emacs etc.) Personally I'm of the second one, and I'll be trying to argue for that wievpoint here, but I'm not saying that this is the best way for everyone and I don't mean to talk down to the first people of the first group, we're all different people with different needs after all.

My setup

I am running on arch linux, with the bspwm window manager, qutebrowser as a web browser, and my editor of choice is vim, all pretty much configured to work just like I want it to, to fit with my strange choice of keyboard layout (colemak – curl, angle, wide). And I have basically only the things that I use installed and little more than that.

Work, and feeling of accomplishment.

The first reason why I like building and customizing my tools is just that for me it's enjoyable, and the feeling of accomplishment when the tool finally works or looks like I want it to it's just a great feeling. Tinkering with tools and configurations can be a joy in and of itself. I also learned about the IKEA effect yesterday, and it's something that at least rings very much true for me, something that you spent effort doing will be personally more worth to you than something that you just took over and didn't tinker with.

Something that fits your needs better.

The way you work is bound to be different than how others work, so to me it only makes sense to set up a working environment that is going to work for you, rather than something that works against you. What that means in practice is first choose a tool that works the way you think, and secondly to configure it so that you get those last drops of comfort out of it.

Automise tasks that you do often.

If you keep on doing something the same way every time, then it's something that you could automise, and if you can do it using smaller tools, writing a short shellscript that does what you want to is going to make that thing go smoother every next time you do it. Also at least for me it makes tasks that are otherwise monotone and boring become more exciting, since it uses something that I did.

Reduced feeling of helplessness.

And this is the most important point I feel, instead of being stuck with having to work around a problem having configured the tools by yourself, and by using customiseable tools, if there is something you don't like you can change it. I didn't like the standard window switching function of my window manager, so I changed it to the style that I prefer. Or I wish that I had a function to switch one of my smaller windows to the biggest one on the desktop, and it was something that I could changed, instead of having to do things the way that the developer of the program does it, you're free to do it your way.

Summary

Of course I don't expect everyone to rush in and do things the way I prefer, and if you're happy with what you have and the way you work, then by all means keep it that way, just know that if something is constantly rubbing you the wrong way, or you have some small points of friction, there's probably a way that you can configure around it :)

I've been using linux for quite some time now, thinking about it, it has to have been around 15 years by now. One thing has become clear, and that is that I strongly prefer command-line applications, exactly those things that I found so scary before, and there are many reasons for it.

Speed and resources

A command-line application is almost always going to be faster to work with, both in how many/few resources it uses and in how you interact with it. Not having to search for the right icon or submenu is something to leads to me being able to work faster, and it also makes it easier to just ignore functionality that I'm just not using, those things that I'm not using is not there polluting my screen.

Automatability

It's a lot easier to automate a cli application, sure it's mostly possible with a gui one as well, but it doesn't get much easier than cobbling together some shellscripting, that way you can build up powerful chains of programs doing a job that maybe only you'll ever use so that nobody would write into a program, but this way you can get something that makes your life a lot easier. Another plus is that if you bind it to some hotkey and you're not really interested in the output it can work like magic.

Simplicity and understanding

This is not always true, but mostly a cli program is going to be a lot simpler than a gui application, if nothing else because the gui application will have an event-loop running so that you can't really be 100% certain about what is getting executed when, with a cli program it's mostly easier to follow through the execution path, and it's more likely that it will consistently do the same thing the same way.

Aesthetics

There are so many gui toolkits, and so many ways to use them, so the programs tend to look wildly different, and the themes that are supposed to be the same aren't really always looking the same, slightly different shades of the same colours, the icons that do the same things aren't in the same positions, this is usually not a problem in a cli applications as they mostly are good in following the colours set by the terminal emulator.

Conclusions

So I like commandline applications because they are mostly simpler, more composable and (for me) more aesthetically pleasing, also I find text to be the simplest and most direct way to interact with my pc, you may have a different opinon, but that's mine ;)

Learning rust by doing a project


I've been wanting to really learn rust for quite a while, and I've been doing projects on exercism.io, but it was starting to feel rather boring, the things that I do there aren't really feeling “real” they are great practice, but it's just doing stuff that you will then never look at again, they aren't really useful, and it gets kind of hard to muster the motivation, and the other thing is that you're not really encouraged to using crates.

So I was quite clear I had to find something to do, and it took me many days before I came up with a project simple enough for me to actually be able to do for myself.

And what I came up was to make a replacement for variety, or more a replacement for me for the parts of variety that I use, variety is a wallpaper downloader and switcher and bascially what it does is that it downloads wallpapers for you and switches them in a set interval. The problem that I had with it was that it's quite resource hungry, it kept being one of the programs running in my machine that was consistantly using the most memory, so it was a good thing to be able to make a replacement for. And the idea for Tapet was born.

Building Tapet


So I started with thinking out how this thing was going to work, and more clearly what steps so that I gathered up the things that I would need to get and here basically here was the stuff that I was finding I would need

  • A command line arguement parser
  • Configuration file parser
  • Some way to serialize data to disk
  • A way of interacting with the internet

So on I went, and honestly the whole thing went way smoother than I was expecting it to, the libraries for rust are mostly well documented, and it was rather easy to figure out what it was that I needed, granted it was probably the smallest thing each of these libraries did. So here is what I went for:

  • Clap to parse arguements
  • toml and serde to parse configuration files
  • again serde for serialize data
  • attohttpc for communication

And off I went, and over 3 days I had made my thing, it's probably less than perfect, but it's mine, and it makes me happy.

What did I learn


Well, the most important thing I learned was to not be too afraid, and just try to make something. Have fun, and actually get something done, it's not as hard as I was trying to convince myself of.

Use the typesystem to your benefit, usually when I've been writing python and/or F# and other things I've been relying quite a lot on the repl, the rather amazing thing about rust has been that as long as it compiles it runs, and in the end I have found it to be even more comfortable as I didn't have to switch context all the time.

This was a lot of fun, and I hope to do it again, the only thing is that I will have to do the hardest thing again, find a project that is interesting to do, but still not so ambitious that I won't manage to do it.

I'd reccommend anyone that wants to learn to come up with something small that they want to solve and solve it. It's fun and practical, and in the end maybe you will end up with something that you can use as well.

And if you're interested in see (probably not that good rust code) you can find it over in my github repository

bspwm desktop

I've been hopping around on windowmanagers for a while, and bspwm is one that I've wanted to like, but never got quite on with, it just never really cliqued with me, so I decided to delete my whole configuration and start from a completely blank slate, and it was really a good choice.

I don't know what changed, but I have a feeling that it was my mindset, this time I sat down enjoying and trying out stuff from the great man page, and slowly adding one thing after the other, as you can test out what will happen in the terminal before you commit it to your configuration it's a great feeling.

Much like arch feels like building up an operative system that exaxtly fits your way of working bspwm is kind of like slowly build up a window manager that just fits how you work.

actual working desktop

Bspwm is really scriptable and just feels malluable and fast to work with so you can do just what you want, so now I have shortcuts for sticky windows, to balance sizes, change gaps, and it just feels like I've set it up exactly for me, and it's a wonderful feeling to work with it.

I think I may have found a place where I will have to stay for a while, since it's kind of hard to beat something that you get so invested in.

A second little thing that I've been working on lately is an automatic wallpaper switcher in rust that really was a lot of fun, it was an amazing experience, and I should probably write something about that as well.

In case you're wanting to look at my dotfiles you can find them over on my github page but if you're really wanting to get something that you can really feel like is made for you it's probably better to just start from a blank slate and just take some inspiration or look up things others have made, there is really very few limits to what you can do with this thing.