Showing posts with label keyboard. Show all posts
Showing posts with label keyboard. Show all posts

9 September 2016

Mechanical Keyboards

Over the years I developed a love for keyboards. It is not surprising as I used keyboards since 1995 to do my work. I spent countless hours typing and writing. I am not a collector, I own some cheap and a few mechanical keyboards. Each of them has its use. Recently I did some research about them. Here is what I found:

Cherry G81-3000 KeyboardCherry - G81-3000 (DE)
The Cherry G81 does not look special. I did not select it, I just bought it together with one of my early computers. It is a regular 105-key PC German QWERTZ keyboard as used in Austria and Germany. (The 104/105-key layout is like the 101-key keyboard including some special keys to activate common Windows functions.) I bought it in 2000 and it worked well. Two years later - when I killed it by pouring a glass of water into it - I bought another one. It is connected via PS2 plug, which gets rare these days.

Switches: It was cheap and I always believed it to contain rubber domes. But even after buying my first mechanical keyboard I went back to using it. I was used to it and liked the typing experience. Recently I found out why. During cleaning I recognised the typical Cherry MX mounts - could my old Cherry keyboard be a mechanical one after all? The Cherry G81 contains the Cherry MY switch, a semi-mechanical keyboard switch, with a spring in each switch. It is considered something between rubber dome and MX with a life expectancy of 50 million presses, which is the same as of modern MX.

Typing: The Cherry MY have no tactile feedback and actuation happens two third on the way down. The counter force of the spring increases linearly while pressing it, with a peak force of 120 cN. In a way they feel like linear MX switches. (Some people say MY feels like MX-Black but harder. I do not own any MX-Black, but the keys are definitely harder to press than any MX I know, even MX-Clear. The comparison of MX switches states that MX-Black has an actuation of 60 cN, much less than the MY.) There is no click sound, only some slight noise from the key caps. This is the most muted keyboard I know. When I press slowly then there is absolutely no sound at all. None of my other keyboards are that quiet.

The Cherry G81 is heavy because it has a steel plate, like high quality keyboards nowadays. This might explain why I stayed with it for such a long time without looking somewhere else. For the small price of 29 Euro (price in 2002), it is definitely the best keyboard I own.

DasKeyboard Model S Ultimate KeyboardDas Keyboard - Model S Ultimate (III) (DE)
Das Keyboard Model S is a "high-quality mechanical keyboard." I was new to mechanical keyboards - thanks to peer-geek Michael Clay for telling me about them - and had no idea about switches. The Model S was the first high quality mechanical keyboard that I liked which I found on the German market. It was supposed to be cool so I bought it. I even went for the ultimate version with blank key caps, because I wanted to master touch typing.

Switches and typing: The Model S contains gold-plated, mechanical, Cherry MX-Blue switches. They offer the classic mechanical typing experience: There is a tactile feedback halfway down as the key actuates. The noticeable bump lets you know that your key press has been registered. And it is noisy. Really, the MX-Blue clicks noticeably, and can be disruptive in close working conditions. It makes so much noise that it breaks my own thoughts when I type fast, especially as I am used to the super quiet Cherry G81. Due to this noise I am not using it on a daily basis. Maybe I should by it again with other switches.

The Model S comes with an USB hub included, which is very handy to connect a mouse or other devices, especially when working with a different computer almost every day. I love the look of its blank surface. The packaging includes a tiny cloth to wipe it and keep it shiny black. Its blankness makes it perfect to show off your mastery of the keyboard to your peers. Most colleagues are confused (and unable to use it) or amazed. It is definitely useful to improve typing accuracy, and it has improved mine.

TKL Keyboard Bag, courtesy of Michael ClayTKL (Tenkeyless)
Since my Pair Programming Tour and working as freelance Code Cop, I am almost exclusively programming in a pair. When I visit someone to pair with, I bring my own keyboard. I have to carry it, which makes me wish for a small one. I do not like compact or laptop keyboards, because I am really used to regular QWERTZ layout. The answer is TKL - "Tenkeyless". As the name suggests, tenkeyless keyboards are standard full-sized keyboards without a tenkey / number pad on the right side. The number pad contains not ten but 17 keys, making the TKL an 88-key PC German QWERTZ keyboard (if such a thing exists). As the TKL is a standard keyboard I am able to type as usual. The only slight problem is that I am unable to press Ctrl Numpad / which toggles line comments in IntelliJ IDEA. I own a bag for the TKL, courtesy of Michael Clay. When he heard about my planned Code Cop Tour he showed up with four different TKL keyboards so I could chose one. I bow to the master of keyboards.

Diatec Corp Filco Majestouch-2 TKL KeyboardDiatec Corp - Filco Majestouch-2 TKL (DE)
I needed a TKL to put into my backpack. While I could have created one by myself, I bought a Filco Majestouch-2.

Switches and typing: This time I avoided Blue switches and bought the Majestouch with Cherry MX-Brown ones. The Brown switches are one of the most widespread switches today. They are tactile, non-clicky and relatively soft with an actuation force of 45 cN. They are supposed to be silent, still there is some sound from the key caps themselves. When I type fast the plastic key caps make a high pitch noise. Of course the sound is not as nasty as from the Model S, but it is quite noisy for my liking. Fortunately its noise is not a problem during pair programming because there are no extended periods of silent, fast paced typing.

The Filco Majestouch-2 is a basic keyboard, exactly what I need. Maybe it is a bit of an understatement because it looks so very basic. The TKL version is ideal for travelling. I always carry it with me when I am going to pair with an Austrian or German developer during work or Coding Dojo. With the Majestouch I mistype more often. I guess this is because the mechanical switches actuate half way down, while the MY switches register the key around two third of the way. I am just too used to my old Cherry G81.

Cooler Master NovaTouch TKL KeyboardCooler Master - NovaTouch TKL (US)
During my pair programming activities I often work under UK or US layout. I am able to operate the English layout sufficiently well if I see the right labels on the keys. So one TKL is not enough. I took the NovaTouch with (87-key PC) US English QWERTY keyboard layout. It is "exceptionally quiet and suitable for heavy-duty typing or gaming."

Switches: The NovaTouch contains Topre switches with MX compatible key caps which is great if you love custom keys. The Topre switches are semi-mechanical, hybrid capacitive switches "that combine the benefits of a mechanical spring-based switch and an electrostatic capacitive sensor to provide excellent tactility, comfort, and durability. The unique design of these Hybrid Capacitive switches require no physical mechanical coupling, therefore eliminating key switch bounce and chatter for a frictionless experience."

Typing: The Topre switch is similar to the Cherry MX-Brown, a tactile, non-clicky switch. There is the bump halfway down. Compared to the Majestouch-2 the force needed to press the key is slightly higher and the bump seems "bigger" and more articulated. (Actuation is at least as strong as for MX-Clear as used in the CODE keyboard described below.) While the marketing description above describes the keyboard as exceptionally quiet, unfortunately it is not. Like the Majestouch-2, its plastic key caps create some noise when pressed. The NovaTouch ships with a set of o-rings which made it more quiet, but some sound remains, especially when typing fast. At least the noise of the key caps is more low pitched than of the Majestouch-2.

The NovaTouch is a bit bloated because it has some audio and repeat rate adjustment function keys, which I never use. Even worse, the function (Fn) key replaces the menu/right click key. I do use the menu key because I love keyboard navigation and I rely on it to activate functions from context menus that do not have their own keyboard shortcut.

The NovaTouch is despite the missing menu key a very nice keyboard. Its cable is braided and can be removed from the keyboard. It comes with o-rings and and a wire key cap puller to remove the key caps. But the best thing is its box. While all other keyboards ship in a simple cardboard box, the NovaTouch lies in a large, shiny black box, softly bedded on rubber foam. It looks like decoration inside its jewel case. It is marvellous.

I use the NovaTouch when I pair program with someone who uses UK or US layout. I bring it to international Coding Dojos or workshops. It is small enough to fit into my hand luggage when flying. During my Pair Programming Tour I even carried both, the DE and US layout because I never knew which layout my next pairing partner would use.

WASD Keyboards CODE V2B KeyboardWASD Keyboards - CODE V2B (DE)
Despite all these keyboards I was still looking for a keyboard to use every day - as a replacement of my trustworthy Cherry. I did not really need it, but somehow wanted it - the perfect opportunity for a present. For Xmas I ordered a WASD CODE V2B, with 105-key PC German QWERTZ layout. It is a "simple, clean and beautiful mechanical keyboard, a collaboration between WASD Keyboards and Jeff 'Coding Horror' Atwood."

Switches and typing: I selected the CODE because of its switches. The MX-Clear are stiffer than the Brown ones, with a tactile bump and weighting of 65 cN. The harder actuation force is good for me, being used to the Cherry-MY keys, which are still harder to press. The tactile bump feels right. Again the plastic key caps make some noise and the keyboard is louder than the NovaTouch.

Like the Majestouch-2 the CODE is a very basic keyboard, without any label, its black matte surface looks sharp. Like the NovaTouch its cable can be removed and a key cap puller is included. Most important has a series of dip switches which enable the function key, caps lock and different layouts. This is most useful, because I can have my menu key instead of the function key. It also has LED back lighting, which probably is the reason for it to be more expensive than my other keyboards. (The CODE is around 200 Euro where my other keyboards are between 100 and 160 Euro.) There is a slight glitch: when my computer wakes up from power-saving/standby mode, sometimes the keyboard is not activated and I need to disconnect and reconnect the USB cable to activate it, which is annoying. After a few months I got used to the CODE and despite the glitch it is my favourite German keyboard. I enabled LED back lighting and found it quite comfortable because I am working a lot in the evenings.

Future
It is difficult to predict the future. At the moment I like my CODE and it looks like I finally found a keyboard to keep. On the other hand I have not tried all Cherry switches, e.g. MX-Black. Maybe I should get a Cherry MX Switch Pro Sampler to compare them. The sampler looks like a great desk toy to impress and confuse colleagues. At the moment MX-Clear is the stiffest switch available from Cherry, so I might need to look for alternatives. I am curious about the Buckling Spring as used in the original IBM's Model M. People say that this is the best keyboard ever made. I will have to try it one day.

27 July 2016

Improving Typing Accuracy

Das Keyboard - Model S Ultimate (III)I am always interested to improve my typing performance and eager to use keyboard shortcuts. As Code Cop I mentor developers and pair with them in different environments. I need to improve my typing and shortcut-fu across different tools and use flashcards to memorise IDE shortcuts. I found that I need more visual hints to remember the positions of certain keys. I am able to touch type but I do not know the exact position of the keys consciously. This is sometimes a problem when typing passwords.

Using a Blank Keyboard
Iris Classon reported that using a blank keyboard improved her touch typing accuracy. She listed measurements and statistics on her web site regarding her improvements. I own a Das Keyboard Ultimate and have used it from time to time. It is true that using it improved my touch typing accuracy, but it did not help me to "know" where the keys were.

Key Flashcards
I want to memorise the exact locations of all keys on the keyboard. This is very difficult for me, but I want to master it. As with the IDE Shortcuts I used Anki to create a deck of flashcards containing all keys on the keyboard. It starts with pictures of the blank keyboard and the name of the key in question:
Where is the #'-key on a German keyboard?Showing the keyboard already on the front side of the flashcards - the question side - helps me visualise the location of the key. I use the TKL (tenkeyless) variant of the keyboard, ignoring the numeric keypad, to save horizontal space. When ready I advance the deck and see the key marked on the keyboard:Position of the #'-key on a German keyboardThe same layout on both sides of the flashcards help me keep my visual focus on the position. (Having two pictures for each card doubles the file size of the deck, which might be a problem on mobile devices running Anki but I had no issues when using the deck.) As I use German and UK layout depending on my pairing partner, I created two decks with German and UK layout respectively:I did not create these decks by hand, rather developed a sequence of little application that would allow me to mark the key positions on the image of the blank keyboard, render the keyboard with and without markings to be used in a deck of flashcards and write the CSV needed to import the deck into Anki.

During my practise with the decks I sometimes wanted to separate letters from non letter keys. So I created even more decks:

20 February 2016

Memorising Keyboard Shortcuts

Two months ago I found a set of flashcards with IDE shortcuts and started learning them. After using the cards for some time, I noticed that memorising all the shortcuts is really hard for me. While many key combinations are sort of mnemonic, e.g. Ctrl-Alt-m to extract a method, some are not, e.g. Ctrl-Alt-l to format the source. I struggled to remember the shortcuts, mixing up the modifier keys all the time. It was frustrating to answer a card wrong for the n-th time and I had to reduce the number of cards I studied each day.

There is not much information in a key sequence like Alt-F12 to make it a reasonable entity to remember. There is no story around it, nothing to relate to. I have heard of people being able to remember huge numbers by translating them into sequences of pictures - a story, which is much easier to keep in memory.

Old KeyboardOn my German QWERTZ keyboard there are 105 keys. Ignoring the number block and a few other keys, there are up to 70 keys which might be used in shortcuts. There are three modifier keys which can be combined into eight combinations. (I ignored the Windows and Menu keys and till now have not seen an IDE that made a difference between left and right Shift or Alt.) Not all combinations of keys are special, e.g. Shift-a is just an A - I counted 400 potential shortcuts to activate IDE functions. Further some shortcuts mean (hopefully similar but) different things in different contexts, e.g. inside the editor window or navigator.

Modifier Keys
I do not know how translating the shortcut into a story might help, but I will experiment with hints for modifier combinations at least, because I never seem to get them right. Changing the order of modifier keys between shortcut descriptions makes things more difficult and I have not found an order which is easier to remember for me. Any ideas anyone?

Maybe some research is needed: The Control key was created to zero the leftmost two bits of the generated ASCII character. This created values below 32 which controlled where the next character would be placed on the display device. Its symbol is the helm, U+2388 (⎈). The Alt key was used to set the high bit of the signal generated by the other key. Its symbol is the alternative key, U+2387 (⎇). The third modifier is the Shift key, shown as an upwards white arrow, U+21E7 (⇧). It is the oldest of the three keys as it was used in typewriters to shift up the case stamp to change to capital letters.

By position on the keyboard and their prior usage, I sort Control before Alt, as in Ctrl-Alt-Delete. I am not sure where to put the Shift. JetBrains' Help puts the Shift between Control and Alt. The question for me is if Shift is a part of the character, e.g. uppercase A. I will have to experiment with Ctrl-Shift-Alt-something and Ctrl-Alt-Shift-something.

Visual Hints
I noticed that I take visual hints from the question, i.e. the typeface and text describing the shortcut, e.g. "Switch between views". Maybe that is how the brain works but this is not the kind of memory link I want to establish between the desired action in the IDE and the shortcut that activates it. Maybe I need a more visual representation to remember the shortcuts. The symbols (helm, alternate, upwards arrow) are very different and could be useful.

I experimented with Anki and it is possible to add pictures to the flashcards. I plan to create a new deck of cards containing a picture marking the actual keys on a keyboard. I hope that the visual representation of the keys will help me remembering them. Unfortunately images if keyboards make some shortcuts layout specific, e.g. Ctrl-z is in a different location on an US/UK layout than on my German one. As I plan to master both layouts, I will have to create and study the visual layouts of the relevant shortcuts twice.

Muscle Memory
Knowing the list of available functionality and their key combinations can only be the beginning of my "I know all shortcuts journey". There is no doubt I will need to practise typing them. I hope that knowing them will shorten the actual practise needed. Using flashcards allows me to study a few shortcuts whenever I have an extra minute, e.g. on the subway or when I am early for an appointment.

Going Crazy
I am already working on my "absolute mastery" deck. It will contain all the shortcuts of Eclipse, IDEA, Vim and possibly other tools like Word or Firefox, using both pictures of the US and German keyboard layouts when necessary. Creating all these images will take some time - coding time of course, as I will not draw them manually ;-)

6 January 2016

IDE Shortcut Flashcards

From time to time I need to look up certain keyboard shortcuts in IntelliJ IDEA or PyCharm. (This would not be necessary would I use my proper keyboard always.) While there are official productivity guides, I usually just google the shortcut. There are plenty of pages listing the basic and more useful ones, nothing special indeed. But the one Google showed me the last time was special: 69 things you should know about IntelliJ IDEA by Krzysztof Grajek.

Remember theseThe list of IntelliJ IDEA commands was as expected, but at the end Krzysztof had put something new: flashcards. Flashcards are a great way to learn short facts. While I am aware of flashcards, I have not thought about nor used them since many years. I got curious and immediately downloaded them.

The package was an apkg, a file format used by Anki, a free flashcard application. According to Wikipedia Anki is most feature complete and available on many platforms, including smart phones. The apkg file is just a zip including a SQLite database, so it is pretty light-weight.

Unfortunately Krzysztof's original deck was created for the Mac version of IntelliJ, so I had to translate and verify it. Some shortcuts did not map to Windows keys (or were not available any more), so my IntelliJ IDEA shortcuts for Windows flashcards just contain 59 cards. There were several keys I did not know and a few I had never heard about. I recommend you instal the mobile version of Anki and start learning more shortcuts today!

There is also a community sharing Anki decks and I immediately looked for Eclipse shortcuts. I found a large deck of 91 cards for Eclipse, which - again - was created for the Mac version of Eclipse. I translated and verified them as well, which was much easier because I have been using Eclipse for more than ten years. Here are the Eclipse shortcuts for Windows flashcards.

Download 59 IntelliJ Shortcuts Win.apkg here. Download 91 Eclipse Shortcuts Win.apkg here.

14 September 2013

Journeyman Findings 1

Here are some notes I took during the first week of my Pair Programming Tour.

Discuss the expectations with your host up front.
Chair On 37At the end of each visit I do a short retrospective with my host. After pairing with Nik Graf for two days, we did such a retrospective and I found that he had different expectations for the past two days. He had paired with other people before, usually technical experts in one or the other area of the Blossom technology stack. He and his pair would hack away deep inside the bowels of Blossom code and get things done. When I joined him, he had to fix a potential security problem and we worked on some Google App Engine specific part of the application. I learned a lot but was not able to contribute much on this level of detail. I helped him with changes and offered general comments and advice on build, testing and deployment - whatever we touched during our work. That was not what he expected, nevertheless he assured me that my contribution was welcome, just on a higher level, "in a way how he had not looked at his application since a long time". We should have discussed his expectations at the morning of my arrival.

An initial design might block your options.
When I paired with Raphael last week, we discussed his needs and came up with a small drawing depicting a possible design. Coding went well for some time and we followed our design that I jokingly called our BDUF. After building several classes, Raphael noticed that he needed a feature that he had not thought of before. Instead of embracing the change in our design, I somehow did not like the idea and talked him out of it. In the evening during our daily retrospective we discussed what had happened. The needed change would have destroyed the initial design but I liked it and was almost proud of it. Subconsciously I had rejected the idea of a change that would invalidate my plan. I did not know that it was because of the design up front until we talked about it.

Bring keyboards for all languages used in your area.
Keyboard CollectionEven when pairing on a small laptop an additional keyboard and mouse allow to change between driver and navigator roles more easily and so I brought my own keyboard with me right from the start. In Austria we use German keyboard layout but some developers use English laptops or just like to use English keyboards. Raphael used an English keyboard and showed me where to switch layouts, so I would be able to work with my German keyboard as well. Switching keyboard language took time and we forgot about it often resulting in both of us typing wrong keys. I knew the English layout and we decided to stay with it. Then I was struggling to find the proper keys for special characters like {}. On the next day I brought an English keyboard which resolved all my typing issues.

This is a positive experience!
When I explained my tour to some fellow coders, one asked me if I would create a list of worst code I have seen. I answered him that this tour is a positive experience. I have worked for big companies and I already know how bad code can look like. I assume that in the last 14 years I created more bad than clean code myself. I will not collect any findings because I am not interested how bad your code is. I am interested how you work and how you try to improve your code. Hosting a journeyman for a pairing session is a sign that you want to grow and I can show you how to fix that legacy code.

31 July 2011

Finally a Proper Keyboard

At last GeeCON I met Hamlet D'Arcy and he distributed keyboard stickers with IntelliJ IDEA's keymap. I had them lying around for some time because I did not want to put them on my primary keyboard (because it does not have any labels). Last week I cleaned my old Silicon Graphics keyboard and boosted it with these stickers. Doesn't it look great?

Silicon Graphics Keyboard with IntelliJ IDEA Keybinding
I had to customize the stickers to my German keyboard. The Shift and Enter keys are shorter and I had to cut their stickers. Then I thought about changing the keymap inside IDEA and to put the stickers on the keys where they would be on an English keyboard. But I got confused, and in the end I put the stickers on their according places. I only changed the binding for [ to ö and ] to ä because 8 and 9 where [ and ] are on, were already taken.