Programming
Saturday, November 8, 2014
I've continued my Plover rampage since my last post. There was an exception, though, as my ErgoDox stopped working with the firmware necessary to use NKRO. After much debugging, I realized that there wasn't much that I could do without a lot of soldering. On top of that, I was getting tired of using my Cherry MX Clears for chording, as they are far from light or ergonomic when multiple are being depressed.
So I decided to bite the bullet and buy a new ErgoDox. I bought it from FalbaTech, which was a surprisingly pleasant experience. It came in about three weeks, and I installed Cherry Reds, which are much better suited to chording. I've continued typing on the new ErgoDox, and my speeds are constantly improving.
In using Plover more and more frequently, I started to notice its issues more often. I had some major gripes. Mainly, it didn't work with an oddly large number of applications and websites. My list includes GTK+ programs, like Pidgin, 10 fast fingers, and Z-Type. I decided investigate the problem by forking the Plover Git repository. Also, it didn't let you emulate the Windows key.
Working on Plover was at first daunting, as is modifying any large code base, but luckily it was quite clear rather early on which file was responsible for sending keys in Windows. I spent some time and tried to rewrite it using keybd. It worked, and I submitted a pull request.
After a little bit of time, though, I realized that keybd was a outdated and had been replaced by SendInput. I spent time to reimplement it again. Of course, the pull request updated automatically, so that was nice.
Now we've got better program support, and Windows key. Nothing left to bug me. Oh, except I realize that when you use special long Unicode characters like emoji, backspacing and replacement doesn't work correctly. Another day of coding, that's fixed.
Browsing over the Plover Google group, I notice people wanting a caps lock, or a way to input code friendly words like camel or snake case, for Java and Python, respectively. Well, I was on a roll, so let's try that.
My first implementation was rather sketchy, and it truly was more of a work-around, but once I had implemented it, it was quite obvious what a proper implementation would be. Another day of coding at school, it's done, pull request submitted.
All-in-all, it was a fun experience. I got to code for a few days, potentially help lots of people, and use the features myself. My pull requests haven't gone through yet, but I'm pretty confident in my work, so as long as there's a demand and my coding style fits in, it should be merged. It will be interesting to see how that goes.
Now I'm going to be honest, I didn't really have anything to share. I'm just running out of ways to practice steno, so I'm turning to writing blog posts! It's one thing to copy races off TypeRacer, it's another to write from the mind. I'll have to see if I can start typing songs. I don't think that 65 words per minute is fast enough, but I can probably find some songs that I can do.
Finally, I tried coding in steno. As of yet, my verdict is: painful. It's hard to get the spacing just right. Maybe I need some new dictionary entries before it becomes easy.
Anyways, I'm out, have a good weekend!
Labels:
steno,
typing
So I decided to bite the bullet and buy a new ErgoDox. I bought it from FalbaTech, which was a surprisingly pleasant experience. It came in about three weeks, and I installed Cherry Reds, which are much better suited to chording. I've continued typing on the new ErgoDox, and my speeds are constantly improving.
In using Plover more and more frequently, I started to notice its issues more often. I had some major gripes. Mainly, it didn't work with an oddly large number of applications and websites. My list includes GTK+ programs, like Pidgin, 10 fast fingers, and Z-Type. I decided investigate the problem by forking the Plover Git repository. Also, it didn't let you emulate the Windows key.
Working on Plover was at first daunting, as is modifying any large code base, but luckily it was quite clear rather early on which file was responsible for sending keys in Windows. I spent some time and tried to rewrite it using keybd. It worked, and I submitted a pull request.
After a little bit of time, though, I realized that keybd was a outdated and had been replaced by SendInput. I spent time to reimplement it again. Of course, the pull request updated automatically, so that was nice.
Now we've got better program support, and Windows key. Nothing left to bug me. Oh, except I realize that when you use special long Unicode characters like emoji, backspacing and replacement doesn't work correctly. Another day of coding, that's fixed.
Browsing over the Plover Google group, I notice people wanting a caps lock, or a way to input code friendly words like camel or snake case, for Java and Python, respectively. Well, I was on a roll, so let's try that.
My first implementation was rather sketchy, and it truly was more of a work-around, but once I had implemented it, it was quite obvious what a proper implementation would be. Another day of coding at school, it's done, pull request submitted.
All-in-all, it was a fun experience. I got to code for a few days, potentially help lots of people, and use the features myself. My pull requests haven't gone through yet, but I'm pretty confident in my work, so as long as there's a demand and my coding style fits in, it should be merged. It will be interesting to see how that goes.
Now I'm going to be honest, I didn't really have anything to share. I'm just running out of ways to practice steno, so I'm turning to writing blog posts! It's one thing to copy races off TypeRacer, it's another to write from the mind. I'll have to see if I can start typing songs. I don't think that 65 words per minute is fast enough, but I can probably find some songs that I can do.
Finally, I tried coding in steno. As of yet, my verdict is: painful. It's hard to get the spacing just right. Maybe I need some new dictionary entries before it becomes easy.
Anyways, I'm out, have a good weekend!
edit
Hi Ted,
ReplyDeleteAbsolutely thrilled by your work on Plover and hope to someday help contribute there as steno is on my short list of skills to learn. One way to continue your "obsession" with practicing steno as well as improving the Plover codebase would be to start adding unit tests and integration tests around the various functions if they aren't there already (iirc it was kicked off by a comp sci PhD, so maybe they are). This is a good way to make sure the code is behaving as intended as well to ensure you don't break functionality with future changes.