Archive

Archive for August, 2009

New Keyboard Layout Project: Serious Problem

Uh-oh. I’ve just noticed a huge bug. The inward roll scorer was not working properly. I fixed it, but now it’s getting some unusual results. I am going to have to seriously revamp the scoring system to get the results I want.

Although I did like MTGAP 3.5, it has far fewer inward rolls than I thought. It’s only 4.98% inward rolls, and not 7.66%. In fact, I had inward rolls and outward rolls switched. It’s a nice looking layout, and probably better than version 2.0, but it is certainly not optimal.

Here’s what I mean by “unusual”. This layout looks very strange to me.

, y c d b  x l u f .
a i n t g  h r e s o
q j p w z  k m ; v '

However, after I examined it, I saw that it is actually very good. It has better distance and same finger than MTGAP 3.5, and MUCH better inward rolls. It does not perform so well on row changing, and it will probably still need tweaking, but it’s very good. Its same finger is even better than Colemak.

I also got this:

, g h c b  x l u p y
a t o s d  m r e n i
q j . f z  k w ; v '

It scores well overall (and especially well on inward rolls) but does not do so well on same finger. But TH sure looks uncomfortable. I’m going to have to fix that. Phynnboi was right about that.

Texting Layout

August 31, 2009 3 comments

Phones with a full keyboard, like Blackberries and iPhones, need optimized layouts just as much as any other keyboard. But as I have discovered, it’s actually a pretty simple optimization. Check this out.

x p m w v  ' z ; , .
r h t s b  y g e a i
l n d c f  j k o u q

Thoughts? Improvements?

MTGAP 2.0 and 3.5 Now Available

August 28, 2009 1 comment

Thanks to LRFLEW, my keyboard layouts are now available. I do not think that they work if you’re not on a Mac. But if you are on a Mac, you can get MTGAP 2.0 and 3.5. In addition, the QWERTY shortcuts are retained, so the QWERTY zxcv positions still work.

Version 2.0

Version 3.5

HOW TO INSTALL

1. Click on the above link to the layout of your choice.

2. Copy the contents of the page into an XML file that you create on your computer.

3. Take that XML file and put it into the folder Macintosh HD/Library/Keyboard Layouts.

4. Log out, then log back in.

5. Go to “System Preferences” and click “International.”

6. Go to the “Input Menu” tab. You will see a list of keyboard layouts with check marks next to them. Scroll down until you find the name of the layout you downloaded, and click the check box next to it. An icon should appear at the top of the screen. Presto! You can now switch between layouts!

Or you can just download the installer that LRFLEW created.

New Keyboard Layout Project: The Optimal Layout?

August 28, 2009 6 comments

MTGAP 3.5 is the best layout, even with several criteria changes:

' y l d b  j p u m ,
o i t s c  h n e r a
x q w g z  v f . k ;

So the question now is, is it really the best layout?

PROS
-Low same finger, most of which is on the strong middle or index finger.
-A lot of keys are in good positions. I very much like the position of l (ell).
-Very good inward rolls.
-A good balance of outward rolls to satisfy both those who find them easy and those who don’t like them.
-A good-looking home row.
-The word “are” is super easy to type.

CONS
-Same finger, while low, could be better.
-hand alternation is pretty bad, though better than Capewell or Arensito.

How does it compare to Colemak, MTGAP 2.0, and Carpalx GYLMW?

Read more…

New Keyboard Layout Project: Followup

My previous post was erroneous. MTGAP 3.6 was in fact the convergence point. But MTGAP 3.5 still scores better for some reason.

Categories: Keyboards

New Keyboard Layout Project: Another Cost and a Strange Development

August 27, 2009 6 comments

I added another fitness element. If the curve follows the natural roll of the hand, then it should be supported. I made it cheaper to change rows if the row changes were (QWERTY positions) DV/VD, FE/EF, MK/KM, or IJ/JI. After adding that and running the program once, I got this strange result:

, p h d k  j c u l y
a n o t m  g s e r i
q b . f z  v w ; x '

It looks so different from the other results that I don’t entirely trust it. But h and o on the same finger? What? But perhaps surprisingly, it actually has very low same finger.

I ran a comparison, and it turns out that it is actually not the best layout for the score set. Apparently, adding that extra fitness criterion caused the program to take longer to converge upon the best layout.

MTGAP 3.5

k c f g b  j h u w .
o s a t d  l n e r i
q v , p z  ; m y x '

Fitness:       18.99
Distance:      1822.85
Inward rolls:  7.50%
Outward rolls: 5.27%
Same hand:     22.29%
Same finger:   0.85%
Row change:    9.89%
Home jump:     0.30%
To center:     3.16%

MTGAP 3.6

, p h d k  j c u l y
a n o t m  g s e r i
q b . f z  v w ; x '

Fitness:       19.49
Distance:      1864.59
Inward rolls:  8.67%
Outward rolls: 6.06%
Same hand:     24.29%
Same finger:   0.76%
Row change:    11.67%
Home jump:     0.23%
To center:     2.92%

3.6 has better same finger, but 3.5 is a good deal better overall. How could this happen? At this time, I have no idea. I will probably not be using the additional criterion, since it makes the convergence rate so slow.

Programming Language Review

I am by no means a programming expert. And in ten years, I may look back and say, “What was I thinking?” But nonetheless, here is a review of various programming languages.

BASIC
I tried to learn this when I was about ten years old. It didn’t work.

BASIC was written in 1964 to try to provide an easy-to-learn programming language. Since then, dozens of superior easy-to-use languages have been made such as Ruby and Python. Don’t try to learn BASIC.

Python
I learned Python for a school project a while back. It was very easy to learn — I was fluent enough after I had logged only about five hours — but I did not like it. There are better alternatives. Python is very easy to learn, use, and read, and it’s a good language to learn when you’re just starting out. But after that, I don’t see that it serves much use. It’s slower than C or Java and it’s more difficult to use than Ruby. Sure, some people may like it. That’s fine. You might like it. It’s easy to learn, easy to use, and easy to maintain. I happen to like Ruby better.

Ruby
Ruby was the first language that I learned. It is very slow, but there is so much that it can do. It has some very elegant features, and it is very broad in its capacity. Everything is an object, including numbers; one feature that I particularly love about that is this:
100.times do
# something gets done a hundred times
end

Is that awesome or what?

C
C is a solid low-level language. It’s hard to get a handle on, but there aren’t many features so you can learn it quickly. Especially in its favor is that it is very fast. I would recommend it for anyone who is writing either a simple program or a program that needs to be efficient.

On the other hand, C has some serious difficulties. There is no garbage collector, so you have to do all of your own memory management. Pointer arithmetic can get tricky. Working with arrays is much harder than in Ruby or even Java. This can work, and can even encourage more elegant code, but it’s harder.

Objective-C
Much like C++, Objective-C is an object-oriented extension of C. It has some fun syntax, and it has some annoying syntax. It’s easier to use than C, but not by a lot. Some people like it; I think it’s a decent language. Its portability is limited, since it is mostly only used for Mac and iPhone development.

Objective-C allows for a much broader perspective than C. You still have to deal with pointer arithmetic and such, but the objects make the daily grind so much easier.

Java
Where to begin? For many purposes, I find that Java strikes a perfect balance between speed and ease of use. It is one of the fastest languages out there (though not as fast as C), has relatively easy syntax, and its massive standard library makes life much easier. It is suitable for many applications, and fun to use. It bridges the gap between low-level languages like C and high-level languages like Ruby.