• Activity
  • Votes
  • Comments
  • New
  • All activity
  • Showing only topics with the tag "optimization". Back to normal view
    1. Why you should consider a smaller keyboard

      Intro Whenever smaller keyboards come up online, I often see a lot of the same reactions/dismissals. I've found many of these to be foolish, but also that the community around such devices has its...

      Intro

      Whenever smaller keyboards come up online, I often see a lot of the same reactions/dismissals. I've found many of these to be foolish, but also that the community around such devices has its own barriers. It sometimes is represented from its most extreme aspects rather than someone with a more normal approach and use case.

      So here is yet another pitch on why you might want to consider trying out some of the smaller keyboards out there, and the various advantages it can bring. This will probably be quite long, but I hope it at least is interesting.

      Daily Drivers

      My current main use keyboard's are-
      • Corne LP split 40 - I carry this with me and use it for work and as a better keyboard for my GPD Pocket 3.

      • Mercutio 40 - for my lighter media/older/lower spec game machine.

      • Discipline 65 - for my gaming machine as at the time having the number row still seemed needed (and it just looks so nice)

      • Velcifire wireless 60 - As my other media keyboard since it's wireless and can be used from anywhere and causes my normal friends and family to have less of a stroke if they have to use it. A lot of what i'll say below won't apply to this as it doesn't have some keys and can't be custom mapped. (It's also what i'm typing all this on, much to my chagrin.)

      I've gone through and have owned/own several others but i wanted to be clear about what i'm using in case anyone doesn't have a clue what i'm talking about.

      Skills Required

      I think the only real "skill" you must have to consider downsizing your keyboard is the ability to decently touch type without looking. If you're the sort of person who still hunts and pecks, no judgement, but this is not for you.

      If you're someone who has to code, do data/numerical entry, or type a lot for work, then I encourage you to read on. Those are common barriers I hear thrown out, but in my experience are actually easier with a smaller keyboard.

      Why?

      The normal keyboard for most machines has a lot of dead/wasted space that could just be used better, and has some keys that are important or have grown more important in really poor positions.

      Some main offenders

      1. Capslock - How often do you use capslock? How often do you NEED capslock? If I can convince you of one thing to try out right now it's this, remap capslock (check out powertoys on windows) to left control. As it stands capslock is one of the easiest buttons to hit, and yet it if you moved it over next to Scroll lock you'd probably never mind. A large portion of my job is coding SQL and I never use it because that's what modern formatters are for. Please try remapping it(throw capslock on left control or some combo if you want).
      2. Spacebar- Hear me out, as this might vary depending on how you type. Do you use one or both thumbs to hit your spacebar? If you're anything like me, you use one, and in my case it's the left thumb. This means that I've got a massive portion of my keyboard dedicated to one button, even though I'll never touch more than half of it (you'd be surprised how small you can make the space key and still hit it reliably). Now you might think that you don't need that space, but I'll dive into that more later.
      3. The number row- More on this later, but my brief take on this is that humans are actually pretty bad at knowing exactly where the numbers are when they get away from the home row, and as anyone who's ever had to do lots of number entries know, the 10key/numpad is the way to go.
      4. PgUp/PgDwn/Home/End/Delete- These 5 keys (and control and shift) are great for navigating/editing text/code/spreadsheets/webpages quickly, and could not be farther away from where you really need them to actually do that easily.
      5. Arrow keys- A lot of people think it's fine that they're waaaaaay out there away from everything. I will be proposing an alternative given these are also critical to quick navigation.

      How is smaller better then?

      The core idea is simple. You can find the home row easily with the homing keys (j/f generally have a bump or some defining feature). You're probably excellent at hitting the keys in relation to that if they're 1 step away from the home row. The farther you are from that, the more likely you'll need to look, and the longer it'll take you to press the key even if you don't. So where possible, it's ideal to try and use space more efficiently to keep the keys you actually need to use near this position.

      But how are you going to fit all those keys anywhere near the home row?

      My Keymap

      As an example, to help explain moving forward, here is the keymap for my mercutio 40.

      You'll want to save that json, and then upload it at qmk configurator, which will make it much easier to explore. If you've never looked at this before it can seem insane, but I promise you it's pretty tame ignoring some edge case stuff.

      If you don't feel like going through the hassle here's screenshots from the site with descriptions of each layer.

      Mostly the same as below but i did fix some missing info below so sorry about that. I'm also leaving the descriptions of my "gaming" layers 4/5/6 in the imgur only because I think that's out of scope for this).

      The magic of programable layers and context.

      Space is an interesting key. It's a key only ever really tap, never hold (outside of games, more on that later). So, why not double it up, and make it do something different when you hold it?

      Well in this case, tapping any of my 3 space buttons gives you a space like anyone would expect, but if you hold either of the left 2, it "shifts" you to layer 1 (base layer is 0), and holding the right one, shifts you to layer 2.

      I put shifts in quotes because it's just like the shift key. If you hit 7 on your keyboard, you get a 7. If you hold shift and hit 7, you get &. This is the same concept, and just keep the layers organized in a way that makes sense, keeps it very easy to know what layer what key you want is on.

      The Detailed Layers

      Detailed Layer breakdowns(assuming you're looking at the json loaded into the website or the imgur album)-

      Layer 0 (Base Layer)

      Ignore the N/A's on this and the rest (where they'll be another symbol), as they are optional keys i don't have. Mute is also the encoder knob so don't worry about it.

      It's pretty basic qwerty in the the middle, and tab/left shift/right shift/backspace/windows/the alts/right control are where they normally are, and left ctrl replacing capslock is something I recommend EVERYONE do.

      Space, is still space. In fact all 3 of those spacebars are space...on tap. On hold, the left two "shift" the keyboard to layer 1, while the right one "shifts" the keyboard to layer 2. So just like holding shift + a key gets you a capital version of that key (or a symbol from the number row), holding space + a key gets you something else.

      The left control/right windows key are also layer keys. Holding them takes you to layer 3 and they do nothing when tapped.

      Finally right shift is where it always was, and is somewhat similar to space. If you tap it, you get /?, and if you hold it, you get right shift instead.

      All this to say, that outside of enter, escape, the numbers, and moving control, most people who can already touch type could mostly type on this without any explanation.

      Layer 1(Navigation/No Output)

      Accessed by holding left space.

      All keys that don't actually put a character on the screen (ignoring the left side where i've got some coding stuff but it doesn't really matter).

      Up, down, left, right, home, end, page up, and page down are all in instantly intuitive positions and make navigating anything quickly a breeze (home on the left side since it jumps you to the left/start of the line, and end on the right since it jumps you to the right/end) . Enter, Delete, and Escape are the other 3 major keys on this layer, as they are of course useful, but don't actually put text on the screen.

      The point is that if you're thinking to yourself, "where is that key on this keyboard" and you know that key doesn't actually put a character on screen, you know it's on this layer.

      Layer 2 (Number layer + the rest of the character outputs.)

      Accessed by holding right space.

      I've turned the right side of my keyboard into a numpad that is always under my fingertips(my middle finger is always on 5, just like a 10 key), and since i'm using the number row numbers, I also have access to all their symbols instantly as well by just holding right space + shift. I also have dedicated *,/,+ keys, and the -/_ underscore laid out to be intuitive as well (higher key increases the value, lower key decreases, so multiplying above division, and addition above subtraction)

      Finally we've got the rest of the keys that can output characters but didn't make it to the home row and don't fall into the numpad. `, ;, and . Again they are all basically where they normally would be, but instead you just hold right space and hit the key.

      The other 5 keys that output text are on the left hand side near the home row because they're super useful for coding (I also use | and -/_ a lot, but their positions in this layout are intuitive to me). Having the paren's/brackets under/near my middle and index finger is so nice for all sorts of coding.

      Layer 3 (Function keys, mouse inputs, music controls, and other misc.)

      Accessed by holding "left control" or "right windows".

      The function keys are the exact same layout as the numbers. F1 is where 1 on my layer 2 is. So F5 is where 5 is which means it's right under my middle finger. I put 10/11/12 going down on the left because that made the most sense to me, and so far has never caused me any issues.

      The mouse/music stuff I don't use that often, but it's something I'd like to mess with a bit more.

      I threw capslock on here in the rare cases where I actually need the key because some program or game wants it. I also have Insert on this layer in my live map, but I use it so rarely I tend to forget it until something needs it.

      Finally you'll notice that on layer 3, where the G key is, is a toggle to put you into Layer 4. Meaning that once you hit it, you'll jump to layer 4 and NOT return to layer 0 when you let go. This is explained more on that layer and is totally bonus points. The main point of this keymap is done, and I think this is an excellent layout for productivity (or at least a starting point), without having to dive into lots of complicated or unintuitive concepts.

      The shorter version

      If you don't want to read all of that, the basic idea is that your average person can type on the keyboard with minimal explanation. If they forget where a key is, the other 3 layers all follow rules to help guide them. One layer for navigation and keys that don't actually output characters (home/end/delete/esc/et) and one layer for the rest of the keys that output characters, namely the numbers, which are then also your numpad and ALWAYS under your right hand, centered and ready to go. The final layer is, mainly, for the function keys, still following the numpad from the previous so you can again easily figure out where the button you want is.

      What does this gain you?

      In the end the main benefits i've found are easier navigation, as I essentially now have a navigation layer with every key i could want on it, and much faster access to numbers. I still do data entry and lots of numbers, and having the numpad always one keyhold away is awesome.

      On top of that it's just nice to not have to move my hands so much to type, and to get so much of my desk space back.

      I type just as fast as I do on a normal keyboard for basic text, as there's almost no difference, and I type faster doing code/editing text because my numbers, brackets, and navigation keys are all closer at hand and in such a way I don't need to look or even move my hand from the home row to hit them.

      So is it just all upsides?

      On the typing side, honestly yeah. I've seen a lot of excuses like "well i prefer a numpad" or "how do you type numbers" which I've tried to address in this post.

      The only issue i've run into is gaming, where I already really solved most of my problems as shown in the extra layers in the imgur gallery, and think it might even be better for gaming vs the normal layouts.

      The only remaining hassle is roguelike games such as stone soup or caves of qud, which LOVE to assign every fucking key a use so there's no easy way to remap things and I have to actually add another layer JUST so i can hit the numpad numbers because I need them to navigate....

      BUT unfortunately, you might actually want to acquire one of these keyboards, and that's where stuff gets a little tricky.

      Programmability

      All the upsides I just mentioned assume you can actually program the keyboard. Thankfully this has gotten much much easier with both Via and ZMK making the process very simple. QMK is doable, but difficulty wise it shared a lot of similarities with trying to get the perfect modded run of Fallout New Vegas going with about 20-40 mods. If you are not more comfortable in the tech world, I recommend ONLY boards that support via software. I believe these days anything that supports QMK supports VIA, but it's worth checking on the via website to make sure the board you're about to get works.

      Some assembly required

      The mercutio and the discipline I built myself after ordering the parts. They're through hole soldering and were some of the first soldering I'd ever done on my own outside of a quick kit I bought off amazon to practice. It is actually not that hard BUT you need the equipment. It's not horribly expensive to get but it's not cheap either. I do really enjoy just throwing on music and putting these together, but I totally understand that you might just want to, you know, buy the fucking thing already built.

      Thankfully many sites offer build services (or you can find them on etsey) which charge a fee to assemble it for you. This is what i've done with every corne i've ordered because it is NOT through hole soldering and I don't have the guts for it, and even still they've all had some eventual issues (although again, i carry mine with me in a very unprotected state because i'm insane so some of that is on me).

      Made of money

      Especially if you're paying for the aforementioned build services, these things can get into the 200-400 range FAST, which is a lot for a keyboard. There are some cheaper options out there, and the Mercutio was only $70ish before switches(not bad) and keycaps (range from dirt cheap to ungodly expensive).

      Still I would not recommend ANY of these for a first time buyer. My first smaller board was a 60% mechanical and those range from $70-100 these days from what i'm seeing.

      Take my money....please?

      Sometimes you just won't be able to find or buy the board you want in the way you want. There are lots of interesting boards i've seen over the years, but they're either very expensive or only open for a limited time. I had a working cornish zen that died on me. I'd love to replace it. I cannot as they currently don't sell them. Will they make more? Dunno. I hope they do.

      Recommendations

      I DO NOT recommend diving in head first and suggest starting with something simple like a 60 or 65, probably keychron, as they're a decent budget brand. You might want to go even cheaper with just a 60% off of amazon that isn't even programmable just to see if you outright hate it, but I do think that getting something you can start to tweak as you begin to understand what you want helps adoption.

      Final Thoughts

      I hope this gave some of you the push to look into all this. I'm glad I dipped my toe in it, less glad about the absurd amount of money i've spent on it (dear god keycaps), and really glad about the moment where I thought "huh i really just don't need all these keys" and pulled some out. I hope I can convince a few others give it a shot and hopefully see the same results. No dvorak or home row modifiers and weird triple tap macros. Just some layers and common sense.

      I do still, if nothing else, highly recommend switching left control to caps lock.

      58 votes
    2. Does anyone have resources for an introduction to semidefinite programming?

      I'm interested in the subject, but don't know where to begin investigating it. I tried to look over the code for SeDuMi, but it is much more massive than I had realized. I have a background in...

      I'm interested in the subject, but don't know where to begin investigating it. I tried to look over the code for SeDuMi, but it is much more massive than I had realized. I have a background in mathematics, if anyone can point me towards a textbook.

      5 votes