Saturday, June 12, 2010

A Discussion on Keyboard Layouts

Recently, I've taken a look at my keyobard, and realized I wish it had more keys. More function keys.

First, let's take a look at the standard US 104 key QWERTY keyboard. This is the keyboard that virtually every American knows (and knows no other).

Here's a diagram of the standard US keyboard layout. Virtually every American keyboard looks like this, if not exactly like this (Click on the images to see more than just the left-hand side):


This is derived from the IBM 3270 terminal keyboard layout, here's a picture:


Notice the extra row of function keys at top, as well as the ten command keys to the left.

Sun's US layout of their workstation keyboard is extremely similar to your standard US PC keyboard, adding volume control keys above the number pad, as well as taking the 3270's lefthand command keys and adding a big "Help" key above it, to the left of the Escape key.


While these are good keyboards, as a programmer, I want lots of keys. I want to bind the leftover keys to various functions of my editor, or OS - for example, a dedicated key for search-and-replace, instead of a keystroke involving shift keys (e.g. Control-F or Control-Shift-F).
Also good would be more keys for typing in extended scripts, as to use Greek symbols, or advanced mathematical symbols. A good keyboard that comes close is the "Space Cadet" keyboard that was popular at MIT a long time ago; it was used on Lisp machines running MIT's "Incompatible Timesharing System", an early mainframe OS. The keyboard they used:


If you look at the Space Cadet keyboard, there are multiple shifts, labeled "Shift", "Greek", and "Top", enabling at least 5 symbols per key. The "L" key, for instance, could produce both upper- and lower-case Roman letter L, as well as upper- and lower-case Greek letter Lambda, and finally, a double-arrow symbol if used with the "Top" key.

Combining the extra typography features of the Space Cadet keyboard, with the familiarity of the US keyboard, and adding features of the Sun and IBM terminal keyboards, leads you to what I believe is the ultimate keyboard layout for programmers accustomed to the US keyboard layout:


If you look at this final layout, it have the left-hand editor keys of a Sun keyboard, as well as the shiftable modes these keys provide on the 3270 keyboard, as well as the Sun "Help" key, the full Greek and mathematical character set of the Space Cadet keyboard, as well as the Space Cadet's full shift key set - "Control", "Meta (Alt)", "Super", and "Hyper", as well as a "positive" and "negative" diamond key - usually used as "Meta" on Sun keyboards, the full 24 function keys of the 3270 keyboard as well as it's adjusted directional keys that no longer look like a Tetris piece, as well as your common PC editing keys - Insert, Delete, Home, End, Page Up, and Page Down are all in their typical places. Also, the number pad has extra keys to make entering formulas and other mathematical errata much easier. Also, of note, that this keyboard's keys have all the symbols for the various keyboards it is derived from - for example, the "Super" key - which is what X11 maps the Windows key - has the Mac "⌘" symbol on it's front side - which is also good because the Windows key maps to this key on Mac OS X (when using USB keyboards). Note that the left-side command keys have all the Sun command labels, as well as some of the 3270's labels on the front side of the keys, that there is an Alt Gr on the right, that the left Control is labeled "Reset" on it's front-side, matching the key on the 3270's keyboard, as well as other front-side etchings for 3270 compatibility.

One key that I find unusal is the angle-bracket key. I've seen it once on a French keyboard I once had, being between "Z" and the left "Shift", but it's addition here would be quite useful, especially when writing SGML-derived markup.

In all, this ultimate keyboard has 148 keys, and while I do not believe that it has ever been manufactured, I would be willing to pay for it if it were to be made. This is one impressive layout indeed.

Thursday, June 10, 2010

Android Market: Security through Obscurity?

While I haven't taken a good look at any Android devices that have the Android Market installed (instead using unofficial builds without it), I've come to the conclusion that the Android Market's client software probably implements part of the Market paywall - that is, were it open-source, it would be too easy to get software that costs money, without paying for it.

While this is just speculation, I see no reason that Google doesn't open source their Android Market client software - after all, many other companies have good and solid paywalls that haven't been defeated by fully modifiable software - I can still buy things on Amazon using a modified copy of Firefox, with a patched Gecko engine, and I still have no access to the content until I pay.

Yet, why can't Google do the same? Is it because of the multiple Android Markets, one per nation? Are they afraid that someone's going to simply patch the part of the code that says to connect to, oh, the Belgian AM server to instead connect to the US AM server? Google runs AM, so why the hell don't they solve THAT issue by using IP-Geolocation? It's difficult to fake an IP address. Of course, Google will argue that people will go to different nations to get apps only available there.

In that case, take a hint from the Portal developers. "In the case that skipping ahead arguably takes more skill than solving the puzzle proper, we let the ninja solution stand." - that is, if someone would fly overseas just to get apps from the US Android Market, just let them do it - they already spend $1000 just to get here.

Wednesday, June 09, 2010

McDonalds Don't Want To Hire You

Today, I tried to apply for a job at McDonald's, as I'm fucking desperate, I have no real qualifications for anything, and my computer skills are self-taught (read: as far as an employer is concerned, I don't have them, as I have no certifications to prove it.)

However, McDonald's outsources their electronic employment system to a company called Aon Corporation. Going to their website, I find their self-description, which reads as follows:

Aon Corporation is the leading global provider of risk management services, insurance and reinsurance brokerage, and human capital consulting. Through its 37,000 professionals worldwide, Aon readily delivers distinctive client value via innovative and effective risk management and workforce productivity solutions.


The only one of their listed services that would have anything to do with employment is "human capital consulting", which sounds quite ill-defined to me.

Anyways, McDonald's has a main landing site that you start off your job search at... it's mcstate.com, which lists all fifty states in a list, each one being a link to a new site, with names like mcalaska.com and mcflorida.com, each proving essentially the same page, just tailored to each state - that being a list of municipalities for each state listed in the bottom-right. On an interesting note, they list both "Gainesville" and "Gainsville" as cities in Florida - the second one is merely a typo of the (correct) first. Goes to show that they don't even do basic fact-checking when compiling these lists.

After finding the location matching where I am at, I am taken to a page listing all the openings in my area - sadly, only a crew member position at the only McDonald's in the area - but that's fine. Clicking on it brings me to a page where I am also shown that openings for crew member are also at locations in areas right next to but otherwise outside my own (and my own area is only about 6 sq. mi. - 10 km2).

Each store shown on this page has two links - the store home page (which is just a generic info page), and an "Apply Here" link. The "Apply Here" link for each store contains an extra identifier to uniquely identify the store at the end of the URL, and takes you to a page that automatically redirects you to Aon's application system. The problem here is that the same identifier is again passed via URL token, and sometimes the Aon system doesn't even get the store-identifying token. This leads me to a page where I'm asked to enter a promotional code, which I was not given, and nor is one pre-entered into the entry box provided.

After going through the system a few times, I finally got to a page where I can actually fill out an application, which didn't last long as poor JavaScript on the page caused Firefox to hang and peg the CPU with 100% constant CPU usage, leading to me eventually killing it.

Worse of all, the Aon site is extremely slow to load, on the order of nearly 30 seconds per page. I am not using mobile broadband or a poor internet connection - I have a good broadband cable connection, with 10 megabits down and 1 megabit up - and nothing is using the network aside from the browser, as my router has a page where you can monitor network bandwidth in real-time, and it indicates less bandwidth usage than available on any dial-up connection - the slow Aon site loads slower than dial-up's max speed (56 kilobits per second).

I can see no real reason for this. This is 2010, I'm using Mozilla Firefox 3.6.3, and I cannot possibly see 10,000 HTTP requests against their server each and every second - nothing less than this would slow a decent redundant server system with a 100MBit symmetrical connection - the minimum standard for medium-ticket websites.

Obviously McDonald's doesn't care at all about potential customers, nor does it care to find a new business partner to handle their employment application system, since their current one is providing unacceptable service. I guess they'd rather me work at, oh, Burger King or Taco Bell, instead of at McDonald's.