19 October, 2012

Google Profile: Bragging Rights: Hardware Hacking

When you're a member of Google Plus (G+), there are a lot of things one can fill in about yourself.  If I recall correctly, the only ones which are mandatory are a name and gender (and even disclosure of gender can be controlled).  However, there are lots more categories available, such as education, employment history, and so on.  The one I'd like to focus on here is "bragging rights," and fill in some detail which is not on G+.

Way back in the day, my friend Karl had an IBM PC-AT work-alike, with a 80286 processor, a 1.2MB 5.25 inch floppy, and a 20MB Seagate MFM hard disk.1  Karl ran mostly PC-DOS (or was it MS-?  not sure), and DesqView, and all sorts of neat hacks like that for quite a while.  But he thought he would take a chance on a recently published OS, MINIX.  That was great; he let me have an account on that and mess with it while I was visiting.  But it had quite an issue.  There was no way MINIX (or even something like a home directory) was going to fit on 17 disk sectors, which is all the hard disk would accept before erroring out.  That, if you old timers will recall, was merely one track (on one side of one platter), not even a whole cylinder.  So, at least for a while, Karl and I had to be content with operating off floppies and a RAM disk.  But it kind of bothered me...how could they even publish a disk driver if it worked so poorly?

It just so happens his father was a computer consultant type, and as such, had access to or copies of all sorts of technical references, one of which was the programmers' manual for the hard disk controller.  So, I went about studying the controller registers and such, and trying to deduce what the disk code in MINIX was doing.

Lo and behold, there was a certain disk controller register which held head number, cylinder number...y'know, that sort of thing, to read or write.  In essence, it embodied how to cross track and cylinder boundaries, and it was divided bitwise.  When I looked at the driver code, it all seemed to jive fairly well with the tech manual.  But what's this I see?  The various "coordinates" are being assembled together in the assignment of a variable, with various "&" masks, and shifting, and whatnot, but there is a "||" in the code...or a Boolean OR.  Wait a minute...this register needs this in these bits, and that in those other bits...hey, that Boolean OR should be a bitwise OR, or "|" instead!  Jiminey, if we didn't edit the disk driver source, recompile the kernel, and all the sudden more than 17 hard disk sectors became accessible!  Success!  I hacked the hard disk driver!

Of course, this was just as a hobby then, although I was studying for a computer science degree at the time.  I actually had a chance a few years after that to do hardware hacking professionally.  My job was to write some pieces which would facilitate voicemail system vendors' integration with the Simplified Message Desk Interface (SMDI) protocol.  This involved writing a character device driver for MS-DOS which would take in data from a serial port and store it for retrieval by the voicemail software.  One of the major lessons learned there was that sometimes manuals "lie."

In the interrupt routine for the serial port, I would read the status register which contains bits for control lines changing (say, losing carrier detect), for character written, for character received, and whether there were any more interrupts pending.  On some systems, I would wonder why data stopped being received from the phone switch, and thus making my routines reject the SMDI data which were being sent (format errors, basically).  It turns out the "interrupt processing done" flag bit was being set, even though the "character received/ready" bit was set also!  It was a definite sign that either some of the UARTs were not interrupting enough, or interrupts were being lost.  I stopped relying on the "done" bit, and checked each bit individually.  It seemed less efficient to have to do that, but every once in a long while we come across this need to work around hardware bugs. I also ended up additionally hooking the timer interrupt, so periodically there was a double check for reception of characters.  At 1200 bps (or 120 characters/second), and timer ticks at a little more frequent than 18 Hz, it was enough to make almost all the reception errors go away.

I've also had a long-term interest in Linux internals.  Really, the build scaffolding for the Linux kernel has become very refined over the years, making it very easy for anyone with a minimum of system skills to tinker with the kernel.  I used to want to optimize the booting time by going through the configuration and including only the bare minimum to get init going, which meant basically console, disk, and root filesystem drivers, and everything else possible as a module.  From there, anything needed by init or beyond could be demand-loaded by the kernel merely by triggering a module load through accessing a device node.  (Of course these days there are facilities to enumerate all the hardware present, such as scanning PCI and USB buses, and everything gets loaded and initialized, kinda whether you wanted it initialized or not.)  But I needed even a little bit more control of my kernel than that (no pun intended).

I had bought a serial card for my computer, four ports, two populated with hardware with sockets for two more sets of DIP chips.  It was also capable of being clocked at four times the standard rate, making it capable of 460800 bps.  The thing about x86 Linux at the time is that it had no accommodation in the serial driver for rates greater than 115200.  Oddly enough, the system header files defined constants for the termios interfaces for B230400 and B460800, but they were never used in the serial port driver.  Well...since I wanted to drive my US Robotics Courier at the top speed of which it was capable, 230400 bps, I put some additional code in there to handle the higher, nonstandard rates.  Build, install, run the bootloader installer, reboot, and wouldn't you know...it actually worked swimmingly.  I was thrilled to be a minor, successful Linux kernel hacker.

In yet another incarnation of my main Linux system, I couldn't use that ISA 4 port card (it has only PCI slots), so I got a Keyspan USB to four RS232C port adapter.  These are also capable of more than the standard 115200 bps, and again, I wanted my Courier to operate optimally, so I decided to sling it off the USB adapter.  And that was great...except for one problem.  When I would dial into my system, all the lines in my session would "pile up" at the last line of my terminal (emulator).  "That's odd," I thought.  If I attached the modem to the standard, chipset serial port, things were just fine, so I knew it wasn't my kernel per se.  I was able to track it down, in that the terminal driver checks each outbound character for "\n", and if the right output termios bits are set, it inserts an additional "\r".  I traced this all through the terminal driver down to the kernel, and back up through the USB serial driver and the Keyspan driver.  None of it made sense.

I actually posted my findings of this misbehavior to a newsgroup, asking what would be the wisest way to fix that.  The reply was kind of disappointing.  In essence, it was, yep, we know it does that, and the reason is the packetized nature of USB transfers.  Adding that additional character ("\r") presents a timing problem in that the character(s) preceding that have already been "in flight" down the USB, so it would be difficult with the existing architecture to be able to accommodate that (atomically) in the output.  I can say that although I wasn't able to fix it, at least I had the satisfaction of knowing I was able to pinpoint the exact cause of the misbehavior, and just lacked the knowledge of USB to handle it adequately. Ultimately, the times I would be dialing in for just the terminal mode would be really rare (would much more often dial in to use PPP instead), so it really wasn't worth the effort to fix it. It was simply easier to adjust the terminal program to add a LF for each received CR for a call to my system.

1For you youn'uns, this was in the days where the mainboard had lots of Industry Standard Architecture (ISA) slots, and very little was on the mainboard.  Your parallel printer and serial ports were on one card, your graphics controller on another, your floppy controller on another, and your hard disk controller on another.  This had the advantage of functional isolation--if your floppy controller went bad, you could swap out just that; these days, it's all wrapped up into the mainboard chipset, and the whole mainboard has to be replaced.  It also allowed the system builder the ability to engineer the system better.  For example, if the standard two serial ports was not enough, just get a card with say eight ports instead.  But I digress; the point is, hard disks were relatively expensive back then, and most systems had only floppies.

Direct all comments to Google+, preferably under the post about this blog entry.

English is a difficult enough language to interpret correctly when its rules are followed, let alone when the speaker or writer chooses not to follow those rules.

"Jeopardy!" replies and randomcaps really suck!

Please join one of the fastest growing social networks, Google+!

11 October, 2012

Things One Needs to Realize About Jobs

I want to lead off with the usual disclaimers about how I am not intimately familiar with what went on, just to make sure everyone knows that.  I can only comment on what I have been able to gather from around the 'Net.  You have been warned up front that this is nearly purely commentary.  Both sides in the long story I'm about to relate seem to have just cause.

I've continued to hear a lot of talk over Erik Lanigan and his departure from the TWiT netcast network.  I know there are a lot of Erik supporters out there, and probably, if you had to come down on TWiT's/Leo's side or Erik's side, there'd probably be more people on Erik's side.  However...if Erik had a little bit more experience (and I mean life experience, not necessarily radio/netcasting or TWiT experience), he'd have known it's not exactly good form to criticize publicly those who are employing you.  I learned this early on when I was working at Radio Shack, when my manager told me, that's fine, you can talk about this and that, but do not "talk shop" in front of the customers.  Not only did I correct my behavior for wanting to keep my job, but I agree with that assessment.  As a customer, I don't want inside squabbles going on in front of me.  I've had it happen in front of me in some of the shops I've been.  Yes, it's important to talk about immediate operational issues (e.g., my cash drawer is out of quarters), but if there are personal opinions about how the shop's being run, the discussion absolutely should not be taking place in front of strangers to the situation.

Erik's beefs may be totally legitimate.  He may have been lacking a paycheck.  He may think he's being overworked and underpaid.  But there are a few lapses in thinking and judgement on Erik's part.

1. Going negative is rarely good, at least not in public.

People will not take too kindly to being badmouthed in public.  And you're not necessarily going to curry any favor by being negative either.  It doesn't matter how generally right and just you may be.  You may be seen simply as a whiner and complainer.

The better solution many times is not to complain but do it yourself.  As some have suggested, take your talent and out-TWiT TWiT.  Mr. Laporte has many times on TTG told of how broadcasting is not as it used to be, needing to go hat-in-hand to a bunch of guys who have spent mounds and mounds of cash on transmitters and satellites and such.  The Internet is a whole lot more wide open.  Radio is waning in significance (albeit slowly).  Think of how in the  present day there is considerable money going into Internet exclusives (YouTube and Netflix productions).

2.Yes, finding a job is a pain in the behind.

I know that all too well, having been laid off 21-May-2010 and not having had anything except a 12 week contracting job since.  But the fact of the matter is, you've got to think critically about how much effort you want to plow into making your current gig better.  Could this effort be better focused on doing the job somewhere else, or maybe doing some other work?  And again, do you really think discussing that critically to anyone except your employers is going to help?

What...you want to try to amass a proverbial  army to storm the castle which is your employer's operation?  Yes, it might work, especially if there is something along the lines of human rights violations going on, but this would generally apply to more than one person--by forming a union for example.  (And those who know me know I don't like unions in the least.  However I have to look at history and say that there are some industries which likely would not have been changed for the better without them.)

In other words, you have to know when it's time to cut your losses and move on, and when you truly have a terrible labor problem.  If Erik had such insurmountable labor problems, I think he would be much better served by entering into talks with the California Department of Industrial Relations, Division of Labor Standards Enforcement (what would be the NYS Dept. of Labor for me, I think).

3. Complaining about the past will not change the past.

Only some twist of quantum physics which allows us to create a TARDIS will help that at all.  Do not ignore history, but use it only as a guide to improve the future.  Dwelling on the past usually only hurts the dweller, not helps.

4. Consider carefully for whom you want to work.

Consider it not only from the perspective of your personal gain, but also try to consider future issues which may arise.  Unless you're the top of the heap (like Leo, or possibly Lisa) you never know in what direction any outfit will be going.  You can only make guesses based on past history.  You never know when you'll be associated with something you'd rather not be.

I understand these sorts of things, surpisingly for some, from an employee's perspective, not as management.  I've never been anything more than (well, male version of) a worker bee.  (Scientists tell me worker bees are female :-) . )  I think I agree with Mr. Laporte, this was not necessarily a good fit.

I've seen Erik's 0:39:40 long YouTube edit of his side of the story which I suspect does not include everything.  Of course, why would it?  It's Erik's perspective on the story, and it will be either deliberately  or subconsciously edited to make Erik look the best, and perhaps by implication, TWiT not so hot.  However...considering the repetition used in this video, it seems quite a bit more slanted towards deliberate than subconscious.

But the thing is, Leo is also somewhat guilty of some of the same issues.  When confronted during "The Tech Guy" to explain why Erik was no longer doing his show, it would probably be far better simply to have stated Erik and TWiT were not working out as a combination, we didn't agree with some of the things which were said/written and done, and so this is the direction in which we went.  And that's as far as it should have prudently gone, referring any persistent inquisitors that they're private, internal TWiT affairs.  But instead, it was somewhat of a counterattack when Leo went on to say things about compensation, about what was written on the main TWiT IRC channel ("chat room?"  pish.  Call things what they are.), and operational issues such as fiddling with the controls.

We generally societally don't talk about compensation.  The fact that Erik brought up dollars in IRC and Leo also commented on it on mic during a TTG break are fouls on both sides.

That Erik and TWiT didn't see eye-to-eye on how to run Erik's call-in show should have been the end of it.  I know it was just a sort of "natural" commentary on the state of things, that call screeners would help, but once again, it's poor form and rarely helpful to comment publicly on such operational issues.  Unless the topic of the show is you, it would seem far better to bring this up with the powers that be instead of commenting on it on the show.  At the very least you'll be perceived as a whiner.

The fact that Leo was talking among others on the staff about locking down the controls to me is a bit telling of growing dischord between the parties.  Although...if Erik could have adequately demonstrated the abilities of the system to revert things properly (and I stress "properly" because things don't always work as documented, or work consistently), it's TWiT's fault for not using their capabilities to the fullest.  So what if Erik twists every single virtual knob to something unsuited for the other shows?  If it serves Erik's show well, and it can more or less be reverted to whatever you want it to be easily, rapidly, and consistently, why lock him out?  Still, Erik has to realize whose knobs they are, and respect the owners' wishes, and the owners shouldn't have to result to such things as the access controls being discussed.

Transparency is generally thought to be beneficial to all.  The argument will probably be made that the more transparent, the more out in the open the whole affair could be, the better.  I would also in theory be in favor of everyone on both sides being able to core dump their experiences, and let me decide, if I had the inclination, who/what is better.  But let us not forget transparency can work to people's detriment, and people don't necessarily want to be transparent.  That's why the US Constitution has its Fourth Amendment.  In a perfectly transparent society, the 4th wouldn't be there.  But in practice, very few people want such perfect transparency, hence the existence of the 4th.  The thing is, in practice it's rarely prudent to air all these gripes about the other party.  It's often far better just to move on and just chalk it up as another experience.

Again, it's not necessarily my intention to be critical, but I want to speak some more to point 4 above, about the character, as I see it, of Leo Laporte.  Yes, this will have a complaining tone to it of sorts. I realize that, and that it's somewhat contradictory and hypocritical, but I feel I must put it forth anyway.  After all, I did say this was an opinion piece.

I've written on Google+ before about a taste of Leo's irresponsibility.  I for one just find it difficult to fathom why he finds it so impossible to hit every single live read.  Sponsors are more-or-less his customers, albeit indirectly, and their needs I would think should be paramount.  If necessary, he should devote some time either to searching out some software to help him out, or indeed since he says he's a programmer, coding something himself.  He interrupts all the time for hard breaks.  He has no choice whatsoever (that's why they're called hard breaks).  Why he cannot take control for a moment and even interrupt a call if necessary and do his live reads, I do not understand.  However, it seems most times he just plum forgets that, "hey, this is a segment 4," and just goes on to another caller.  Then he ends up doing a live read as the last part of the segment, and what good is that if it's followed by more ads?  Might as well just integrate it into the stop set (block of ads) near the end of the hour.  And I can't imagine the sponsors are pleased when their ad time gets somewhat truncated because Leo is in a live read and the hard break sounder comes.  (Of course I'm imagining they aren't too pleased either when their spot does not air in the segment which I presume the traffic department told them it would.)  Idunno...it's pure speculation on my part; maybe they don't care as long as it airs sometime during the show.  That seems to be the prevailing attitude of Leo and the Premiere board op(s) (Luis, then Kyle, then Nathan).

Again, transparency might not be the best.  Leo seems to think it's all the best all the time.  He seemed to have no qualms talking about how his wife and he are separated.  I also recently read about how Abby was none-too-pleased about Leo talking about her college, her illness, and so on.  Also, granted, I haven't been following California public records to look for it, but Leo has not yet said anything about divorcing his wife.  I can just say I make a value judgement on this one, that I think it's improper that he be doing anything besides TWiT with Lisa...at least not until he is genuinely single again.

I personally don't like how he talks over callers sometimes.  I know; I've been there, and tried (unsuccessfully) to get a point in edgewise.  It's also a reality that often this is necessary due to the very nature of some callers.  It's a necessary evil, if you will.  All the same, it seems rude a lot of the time.  Of course, there are some in the biz (Mark Belling springs immediately to mind) who are worse.  (I will not listen to Mark past any monologue when he is substituting on "The Rush Limbaugh Program.")

Color me surprised, but he's also talked openly about how he's disturbed his apartment neighbors with his sound system.  Speaking as someone who lived under two sets of tenants (among 5) who couldn't seem to grasp this concept either, this is something one just plain does not do.  Barack Obama said similar things about his college days; yet one more reason I don't like him.  Both of them ideally should have known better.

Leo has also made it publicly known he spent unbelievable gobs of money on the TWiT Brick House, close to $1 M or perhaps beyond, if memory serves.  Then not too long ago he also let on how he had to start watching his pennies perhaps due to this.  Huh?  I mean, another theme talked about from time to time, sometimes during TTG, sometimes during network breaks, is how netcasting is mostly a labor of love and how there's typically not a whole lot of money in it, and how it's sooooo tough to get sponsors.  Of course I'm not privy to their ledgers, but they seem to be talking at odds there.  How can this be such as tough-to-sustain business, and yet you have the budget for a million dollar studio?  (Actually, Leo didn't; he has talked about how the budget was a lot more modest in the beginning.  I do not know what led him into exceeding it.)

So to wrap up point 4, do you really want to be working for someone who has such openly suspect character, Erik?  Maybe it's much for the better you two separated.  If despite that you still wanted to work for them, it would seem keeping your concerns private and not airing it all out would have been more prudent.

Yet, despite all that, it's obvious Leo is successful.  He probably has millions of followers and fans due to Premiere Radio Networks.  There are also exceedingly few people who can claim to have won an Emmy.  I have to admit he is entertaining and informative too, otherwise I wouldn't be spending around 6 hours per week listening (to TWiT's stream), plus occasionally other downloads like "Security Now!"

Direct all comments to Google+, preferably under the post about this blog entry.

English is a difficult enough language to interpret correctly when its rules are followed, let alone when the speaker or writer chooses not to follow those rules.

"Jeopardy!" replies and randomcaps really suck!

Please join one of the fastest growing social networks, Google+!

04 October, 2012

Finally...there's a radio station which carries Glenn Beck which "gets it..." at least partially: KYKN Salem, OR. First, I'd like to relate what they don't understand, so I can end on a positive note: people are usually adult enough to be able to choose whether they want new windows, new tabs, or the same window; DON'T use window.open(), it is EVIL. Now, what they "get" which other radio stations don't seem to have the faintest idea of how to grasp: IT'S RADIO, WE DON'T "WATCH" IT.

Sooooooo many stations offer a stream, for which I am actually really grateful. Glenn is not carried live locally, and the semi-local station (WHAM-AM) which does carry him delays him 14 hours (2300 local time), and then only carries the first two hours until Coast to Coast AM. BUT...the vast majority of these streaming stations wrap their stream in Flash, or Silverlight, or...well, use your imagination...as well as JavaScript. Leo Laporte recently explained this to a caller on "The Tech Guy" radio show. This is ostensibly to show ads along with the program. To the radio station execs, programmers/PDs, and Web programmers: knock, knock, knock, McFly? You in there? It's radio, not TV. We throw it up on the tablet, iPod, phone, or desktop, and we (here's a shock) LISTEN.  We don't see the ads.  In fact, it's common practice for Android apps (such as IHeartRadio, TuneIn, PSA Stream Media Player, etc.) to allow the audio to keep flowing even though the app does not have focus, and I'm looking at my launcher/home screen (or any other app for that matter).  Your ads are therefore virtually useless.

KYKN on the other hand seems to understand this, and simply provides 4 links directly to their streaming provider (for 4 different formats: MP3, Windows Media, RealPlayer, and QuickTime).  Finally and at last...I can automate starting  the stream, with a simple
mplayer -playlist http://panel7.serverhostingcenter.com/tunein.php/jsktech/playlist.pls
I'm sick of most streamers (e.g., radio stations) making me pull up Wireshark to analyze the net traffic interaction with their "players," many times which lead to unusable results (such as inability of MPlayer to handle their stream).  What would be even worse if is they choose to encrypt (HTTPS) their interactions, but I'm not sure I ran across too many of these.

It's just evil, and many times quite pointless.  Get rid of the Flash, or at the very least, also provide direct links to playlists, or even better, the compressed stream itself.  Besides...even Adobe has basically told the world, Flash is being phased out.  Also, there's nothing like telling a couple million customers (who have Apple products, which never supported nor never will support Flash) to go pound sand.

Direct all comments to Google+, preferably under the post about this blog entry.

English is a difficult enough language to interpret correctly when its rules are followed, let alone when the speaker or writer chooses not to follow those rules.

"Jeopardy!" replies and randomcaps really suck!

Please join one of the fastest growing social networks, Google+!

04 September, 2012

Some Experiences with (X)Ubuntu 12.04.01

I really should read more carefully and take advice from those more experienced than I.  There are indeed all sorts of warnings when upgrading a Lucid Lynx to a Precise Pangolin about backing up and so on.  Well...as the system in question isn't used a whole lot (it's unstable because the processor context gets corrupt because of a quirky HyperTransport link), I thought, what the heck, just forge ahead and do it; if it breaks, it's not like you lost a whole lot.  Well, actually, I keep forgetting how long tweaking takes, especially tweaking the boot process so that WoL works and the console framebuffers are maximally sized for the video controller and font, and are initialized to green on black in the initrd really early in the boot process.  The hack that nudged me to write this post will come...please read on to the end, where I tell you about my shazam moments.

Nonetheless, I forged ahead, and did an in-place upgrade.  Yeah, it looked a little scarey in that the "before blurb" said several of the packages I had installed wouldn't carry over, "but the community might support them." "Uhhhhhhhh....OK,"  I thought a little nervously.  I knew it was trouble of nearly the greatest sort when in several places it threw errors.

In a recent phone conversation with one of my friends, I heard the unfortunate news that yes, Precise does quite well, even upgrading LTS to LTS...if you have a very generic, default installation.  Vary from this in some cases just a little, and you're in for a world of hurt.  My usual setup is far from typical.  For starters, it's GPT, not the "traditional" MS-DOG (sic) partition table scheme.  I always want my bootloader and boot files on a simple, uncomplicated partition, so those are the first two (as GPT and GrUB play together to put GrUB linearly in its own, "special purpose" partition; "bios_grub" as parted puts it).  Similarly, the root filesystem gets a parition all its own, to make recovery hopefully as uncomplicated as possible, and a fsck of same fairly speedy.  Similarly, the swap and /var/log paritions are plain partitions to make things as efficient and straightforward as possible.  Everything else gets partitioned as LVM PE(s), lumped into one VG, an divvied out to /opt, /usr, /var, /var/tmp, and /home LVs with varying sizes as I think appropriate.   Putting them into LVs makes it easy to resize filesystems and reapportion from one to the other if I guessed wrong while setting up.

As you may have guessed, an in-place upgrade went rather poorly.  After rebooting the system, it would sit there like a lump waiting for filesystems to become available, and after a while it told me root wasn't there and gave me options to skip trying or to fix things manually (followed by a reboot).   But the strange thing is, / was mounted from /dev/disk/by-uuid/something, as the kernel command line has root=UUID=something.  OK, next go-round (because a reboot was I guess mandatory at that point, no option to just continue) I just said skip, and it complained about /tmp being absent.  Again, I went into manual fix mode, and / was fine, so I fsck'ed it and remounted it rw.  To no avail; didn't matter what was tried to coax it into thinking filesystems were OK, it was convinced my system was all in shambles.

The same friend told me about being able to boot into rescue mode, and automatically fix up things.  This sounded reasonable because he was talking about a regen of the initrd and reinstalling the bootloader.  So I tried that.  Naw...so much for the Rescue Remix, or the Desktop installation media.  Neither was really any help, even after trying to upgrade again.  What really screwed the pooch was that I saw it emit a message about "removing all files from /usr "...frak!  There  goes my build of BZFlag, in /usr/src.  I tried to abort, basically by shutting down/rebooting.  Then the system wasn't recognized anymore, the "upgrade" option was gone.  Sigh.  (Re)install it was then.

Unfortunately, that had similar, error-laden results as trying to upgrade, with no automatic progress after rebooting.  I then went and grabbed the Xubuntu amd64 alternate install ISO from BitTorrent.  I think it may be key that I got the alternate, which is kinda geared towards "Martians" like myself.  And another unfortunate thing with Ubuntu and its derivatives like Xubuntu is, installations often do not work (as in making an autobootable system) unless the options to format all partitions in question are given.  The only thing I left totally out of the installer was homelv.  At least all those personal Xfce settings, .emacs, .inputrc, .profile and the like for my "ordinary user" would survive and not have to be tweaked too much.  Not so lucky was root who, of course, is stored at /root, not /home/root.  But, since they're one in the same person (myself), it wasn't too bad just to copy dotfiles and such from my normal user on /home.

Finally, basically after a total wipeout (except as noted for /home), I had a system which would autoboot to a login prompt and an Xorg server which would run.  The first graphical login under my normal user asked me about migrating my Xfce settings to the newer version, and all that was pretty much fine.  Root was another story however.

Under Lucid, I liked gdm, so I installed it.  Unfortunately, gone was the GUI widget which I used to set up autologin (after 5 secs).  In fact, logging in as Other... and specifying root and root's password would sometimes hang gdm.  In fact, until I installed gnome-desktop-environment, the greeter's cursor would never change to a pointer, just stay at the "I'm busy doing something" variety.  Worse yet, once the greeter wedged while attempting to log in, switching to a console and doing stop gdm and start gdm wouldn't help one wit, only a system reboot seemed to fix it.  God and deep GNOME DE hackers only know what the frak it wanted/was waiting for and never got.

The next surprise was that similarly, the "users and groups" widget was thoroughly nonfunctional until gnome-desktop-environment was installed.  It would bring up a window all right, but everything in it was greyed out...everything.  In fact, only xkill would make it close, not the WM, no keystrokes such as Alt-F4....nuttin'.   Well, not strictly nuttin'; a logout would kill it, but in doing that, it would be restarted with similar nonfunctioning results when logging back in...so it was wise always to xkill it before logging out.

What was really weird compared to previous releases is that individual greeters weren't configured by "Users and Groups."  Both the ones I had on, lightdm and gdm, were affected simultaneously.  That was a bit disquieting, as I was expecting only gdm to be affected, so when I used dpkg-reconfigure to revert back to lightdm, it was autologging in too.  This implementation chooses to have an "on/off toggle button for autologin" under each user.  And incidentally, I never did get back into a functioning "users and groups" GUI widget to undo the autologin effect; I found the conf files by recursively grepping through /etc for my logname, and editing them manually.  It was also somewhat of a surprise that neither of them seems to implement a timeout mechanism.  I tried adding that into the lightdm.conf according to some people's postings about that subject, but to no avail.

I even got into a state where start gdm would flash the greeter on the screen for maybe a half second, but then flip right back to the console on which that command was given.  So much for autologin, and indeed for the hypothetical stability for a(n) LTS release.

Eventually I just gave up, and uninstalled anything GNOME related.  I had read so much about how people just hated it (the new v3) that I figured it really wasn't worth any hack time to get it to work right.  I did however try the v3 shell for one login session (ironically chosen from lightdm).  I will say it's sucky, but not as bad as the opaque Unity.  At least with GNOME3 shell, it's still tree-oriented, with (as I recall) two options of Activity and something else at the top level.  Then activity categories show up along the right of the screen, and selecting them causes the tree to be descended.  But just like the sucky Modern UI (or Metro, or whatever they're going to call it this week) and Unity UI, the programmers of it are deluded into thinking a tiled interface is appropriate for desktops.  Well, maybe "inappropriate" is too strong a word, maybe annoying by being aesthetically displeasing would be a bit more accurate.  I somewhat understand not wanting to program (or use) two UIs, but a workstation is not a tablet, nor a tablet a workstation.  There's no particularly good reason to jam the tablet interface on a desktop.  Microsoft are about to find this out in the worst way with Win8 right soon.

What I'm the most proud of figuring out today though was why video initialization within the radeon module seemed to hang.  After all, there wasn't this hang before I set about getting the radeon module to load sooner in the boot process.  As I alluded to earlier, one of the things I like to tweak is getting the framebuffer driver running and the screen to green on black as SOON in the boot process as possible.  That's one of the reasons I had studied the initramfs-tools package thoroughly.  I put in hooks and scripts which would copy the fb modules (which happens to be integral to the radeon kernel module) into the initial RAM disk, as well as setterm, fbset, and setfont.  As I wrote, I want this initialized ASAP, so I put it into the init-top section.  The big downside, if you're not really, really careful, is that if vid init doesn't go particularly well, you're mostly blind until networking and sshd start, if they start at all.  That's where I thought I ran into big trouble, as in, back possibly to reinstalling.

I was just getting ready to take the 8GB flash drive I used to boot the installer and (re)insert it into a USB socket when the monitor came alive again.  My, that was a bit encouraging; it didn't wedge completely, just it was problematic for some reason because it eventually finished.  So...I went into the grub defaults file, added a console=ttyS0,... part to the kernel arguments, updated grub, hooked up a serial cable to another workstation, and rebooted.

Shazam.  It was getting to some part in the radeon module initialization where it was trying to download microcode of some sort, and timing out after a very long pause (like two minutes or so).  With due deference to Yogi Bear, this is where the "smarter than the average hacker" part comes in.  It's not necessarily "what changed," which is the perennial troubleshooting favorite; we know what changed: the initrd.  It eventually came down to, as most engineering sessions of this sort do, what's the difference between when it was working fine and now?  I have run across this sort of thing somewhat frequently in the past, usually something like the difference in environment variables between interactive sessions and cron jobs.  That's when the second "shazam" moment came: it's so early in the boot process that udev may not be running!  The tipoff was the eventual message that the load from some file within /lib/firmware wasn't loaded.  See, not only does udev make things appear and disappear from within /dev due to things like USB flash drives being inserted or removed, it is also the agent which initiates a lot of the firmware loads.  I know this from watching my MythTV with a PVR-500 boot, which pauses for about 7-10 seconds per tuner.

Under Lucid this didn't seem to be an issue.  However the radeon module happened to be programmed, or perhaps even because of a slightly different bootup, it worked without any special attention.  This fix was as simple as adding a "udev" under PREREQS in my script.  That ensured firmware-loading udevd was running before even trying to initialize the Radeon video controller.  After that tweak, it was loading lickety-split.

One last thing: the terminfo files are now under /lib these days instead of /usr/share, and therefore on the root fs?  Really?  Seriously?   Sigh...whatever.  This is kind of required for setterm to do its work, it needs to know how to work with the terminal type linux.  Therefore one of my hooks had to copy it into the initrd image.

Instead of commenting here, direct all comments to Google+, preferably under the post about this blog entry.

English is a difficult enough language to interpret correctly when its rules are followed, let alone when the speaker or writer chooses not to follow those rules.

"Jeopardy!" replies and randomcaps really suck!

Please join one of the fastest growing social networks, Google+!

06 August, 2012

A Journey Into One Car's Purchase and Repair

Somewhere around 3 months before writing this post, I pretty much stopped driving the 1998 Lumina I have had since about 2004.  As you may know, on Friday, 6-Jul-2012, I drove it for the last time to West Herr Used Car Outlet (which I'll reference as just "WH" later), and bought a 2008 Hyundai Elantra from them.  It was basically functional, but there were a couple of problems with it, each with workarounds.  For your entertainment (and to a certain extent making you a more informed consumer) I will write about my experience.

I had gone to WH because they had one of the less problematic Web sites of the ones I had visited (but still in need of work, mind you), and because one of my dear friends, Matt, had talked about his positive previous West Herr experience, although not specifically with the Used Car Outlet.  They had two in which I was interested; Plan A was a 2007 Corolla, and Plan B was a 2009 Focus...but I had to fall back on Plan C, which was the Elantra.  Plan A was sold by the time I got to WH, and Plan B turned out to be uncomfortable for me to sit in due to my height, and apparently seat height was not adjustable.  Besides....many Fords these days have this utterly annoying characteristic of locking all the doors once underway, as if I'm not adult enough to do it myself.  Also not in its favor was that the onboard computer's display showed an average of only 18 MPG, despite its EPA estimate being in the mid 20's.  So, looking around the lot a little, and primarily where the Corolla used to be the last time I saw it, I saw a similarly colored car, slightly darker, with a city MPG rating in the target I was seeking (the mid 20's).  So I figured, what the heck, give it a test drive.

I intuitively thought when I first opened the door, not even with key in hand (just trying it out for size/fit), and the warning chime came on, that this car could be problematic.  But I figured, let's soldier on. I saw the "door ajar" lamp in the dash light up and thought it was plausible this was normal behavior.  It seemed OK(ish) for feel, so I went inside to ask for a test drive.  They were a bit busy, and Ray Snyder, Sales Manager, assured me someone would be with me shortly.  Sure enough, within a few minutes, one of the most personable and knowledgable salescritters I ever met, Ron Slisz, was able to get a dealer-class license plate and the key for this Elantra.  We took it around E. Amherst a little, and while not as comfortable nor powerful as the Lumina I was used to, I thought, "this will do."

A downer in this process is the fact that WH only credited me $350 for what edmonds.com told me should have been at least $1000 for my Lumina.  But I just wanted it all to be over with.  I had no energy at the time to argue it.  In retrospect, I should have said "hold it right there, skippys," and taken it next door to Auction Direct USA.  They advertise on radio that they will write up a purchase offer good for 5 days.  They may have even bought it so that I could put the money towards this Elantra.

There was another particularly annoying aspect, the $75 fee I was charged which was essentially a convenience fee for WH acting as my DMV agent to register the Elantra and transfer my plates from Lumina to Elantra.  Well...what can I say?  Even the NYDMV site mentions this fee.  In the plate transfer aspect, salescritter Ron must have read my mind.  He got out West Herr plate frames, and had one or two near his desk, but none made it onto my newly purchased car.  I would have removed them anyway.

To WH's credit, they are foursquarely behind making this Elantra as it should be (mind you, not perfect, just major and minor functionality that one would expect).  It was sold as a "value car," meaning they don't intend to make it perfect.  For example, they purposefully didn't repair the paint blemishes/scratches, in order to sell this to me more cheaply.  We knew at the time/point of sale that the keyless remote entry was not working, and the working theory at that time was the transmitter (keychain fob) is defective; a new one would be ordered.  Of course, being a Friday evening, nothing would really be accomplished until Monday.

That pretty much ended my 4 or so hour day at a dealership.  I'm glad I brought my Android tablet with me; it provided lots of entertainment, and allowed me to change my insurance easily.  It also allowed me to post to Google+ to tell a little bit about my day.  I didn't think it would take as long as it did, and I kind of apologize to Kevin and Pam, who I did not send a "decline" for their invitation to their annual party.

After the deal was done, I headed south to the Aldi in the plaza near Transit and Main.  It was there that a kernel of an idea about why the chime was not silenced came to me.  I pressed on the switch to secure all the locks.  As a humorous aside, my first guess was wrong; it was exactly opposite the Lumina in that pressing the bottom of this rocker switch opens, not locks.  So, realizing this is backwards, I rocked the switch upwards.  Initially, all the locks locked.  But then about half a second later, the driver's door unlocked.  So I pressed the switch again, and this was perfectly repeatable.  Out of curiosity, I flipped the lock lever instead of pressing the switch.  Same thing; half a second later, it unlocked itself.  I held it.  The lock solenoid clicked a few more times, then the controller gave up.  It was then the chiming made sense; the most plausible explanation was that the ignition lock cylinder's sensor to know when the key has been removed is defective.  This would cause the chime to remind one to remove the key, and the controller programming is trying to prevent the (stupid) driver from locking him-/her-self out of the vehicle.  But having never owned an Elantra before I still was not 100% convinced I had the correct diagnosis.  It was not insecure, in that if the key is inserted into the door and rotated in the proper direction, it will lock.  This too was opposite the Lumina, in that for rotation towards the front, Luminas unlock, Elantras lock.

I also noticed while trying to put my Aldi groceries in the trunk that the key would insert, but would not rotate.  When I got home, I sent an email to salescritter Ron telling him about this trunk problem, and very much to my surprise, within very little time I got a message back, sent from his mobile phone, that I should just look on the driver's door for a trunk release button.  Boy, that made this complete; I had an easy workaround for everything until all could be repaired.

Also when home I went to the Hyundai Motor America (HMA) site to get a PDF of my owner's manual.  Who wants to search visually through a paper manual for something when a computer can search for me, and point right to it?  I have one for 1998 Luminas for that very reason.  The first thing you'll notice in this scenario (should you go through it yourself) is that they do not have PDFs available outright.  You must register with their site with a vehicle's VIN, and log in.  Then you may download a manual.  And I didn't actually know this until after I used their "contact us" function on their Web site, essentiallly asking, "where's your PDFs?" and they sent an email reply stating one will see this after logging in.  If they have this on their site somewhere, I didn't see it (point being, it's non-obvious).

Unfortunately, there is very little to gain by doing this either.  One would hope that if I provided something as specific as a VIN I would get documentation specific to my VIN...no such luck.  There are plenty of asterisks in this e-book with the obligatory explanatory asterisk at the bottom of such pages saying "* if so equipped".  I am very glad one of the (mis)features listed does not apply to mine, the locking of the doors after travelling over a certain speed.

The next  HMA slap in the face is their site has all sorts of JavaScript and Flash, which, of course, like wayyyyyyy too many sites, does not tell you JS needs to be enabled for it to work fully/properly.  There are many, many reasons utilities like NoScript and NotScripts exist, with which I will not bore you, but suffice it to say that it is just so exceedingly easy to do, it is pointless NOT to point out that JavaScript is disabled.  But that's not even the worst.  Of course, almost all users of these security tools realize this, and temporarily enable JS.  So what does the HMA site do then?  It uses styles to pop up a pseudowindow (as I like to call them...basically using visibility, opacity, and z-index tricks to render boxes in front of boxes).  This pseudowindow is telling me the site should be viewed in Internet Explorer such and such, or Firefox blah, blah, blah.  That's a frak of  a thing to tell your customers or potential customers, that you don't like their software of choice.  Gee, what a concept!  Just stick to Web standards, and then you don't have to care so much what their user agent (UA) is.  Also, don't try to lay out the page to the pixel, and by-and-large you also shouldn't have to worry about the precise CSS vagaries of UAs.  This is also not to mention Adobe themselves have stated that Flash is a deprecated product.  It's never been available for iOS (e.g., iPad), soon not to be available for mobile platforms (smartphones, tablets, etc) in general, and The Tech Guy Leo Laporte even mentioned this past weekend (5-Aug-2012) eventually not on desktops either.

So after downloading the documentation I started to skim over it, and then read  certain sections more in depth.  One of the things I eventually came across was that the fob is ignored if the key is in the ignition.  This solidified my diagnosis, as this is exactly the behavior I was experiencing.  So I sent another email to Ron the salescritter with a copy/paste of this from the PDF, and when we next talked about effecting repairs, he concluded the same as I did, that the likely cause was a faulty key sensor, and not a defective fob.  It turns out that despite Kia being part of Hyundai Motor Group, the West Herr Kia shop is not prepared to handle Hyundais, and a referral to a nearby Hyundai dealer/shop would be necessary. In this case it was Transitowne Hyundai (TTH).  They too thought this was a plausible explanation when Ron told them about that part of my email.

I called TTH to arrange for repairs, and was given an appointment for Thursday, 12-Jul at 11:20.  Wow, such precision.  Maybe I'm just thinking too much, but I would guess they tend to do this to steer expectations.  If given a time like 11:00 or 11:15, I would think most people would tend to figure around 15 mintues of slop might be expected, but with :20, it's probably more like 5 minutes or less.  I can tell you at least with my experiences so far,  any appointment times are folly.

Admittedly, I arrived a little late, around 5 or so minutes; let's just say my gastrointestinal tract didn't know anything about appointments and resisted my attempts to be on time.    When  I arrived, it looked as if every single repair bay in the garage was tied up.  And I spent about 4 or so hours there.

I did not know what to expect, so at the last minute, I left my tablet at home, but I brought a pocket radio and earbuds for my weekdaily dose of EIB.  In their waiting room, they also have this (what I would call a) "leader board" wall-mounted flat screen computer monitor, with a table of customer names, service advisor's name, status ("arrived," "in progress," "awaiting parts," "ready," etc.), and expected departure time.  At no time did anything like "Joe Philipps," "Ron Slisz," "West Herr," or anything else which would apply to me appear on this system.  And I must have been in the restroom if/when they came looking for me in the waiting room, because I had to go to the service counter to find out what the deal was.  I saw plenty of other customers who were fetched by the repair counter people.  Who knows, maybe they were just about to come my way when I went their way.

After their considered diagnosis, TTH concluded the trunk lock assembly and the body control module (BCM) would need to be replaced.  Again, I don't know specifics about Elantras, but that sounded like a plausible explanation.  Maybe the existing lock was just irreparably corroded internally.  And I don't know what things a BCM would control.  So, TTH tells me they will order parts and give me a ring when they arrive.

Even more interesting, when I was there that day, while describing my amateur diagnosis about the fob not working and why, the service counter person remarked that this was incorrect; the fob ostensibly would work, contrary to the Hyundai-supplied documentation.  Aw, heck...this wouldn't be the first time I've seen reality at odds with widely distributed documentation.  Take the configuration of OpenLDAP for Ubuntu 10.04 for example.  Many online references at the time would talk extensively about entries in slapd.conf whereas in reality this version's configuration is within the LDAP database itself.

An inordinate number of days pass, until Monday, 23-Jul to be precise.  So I called TTH service to see what's what, and to ask how long it takes typically to acquire a BCM and lock cylinder.  At this time they told me that the parts had arrived Thursday, 19-Jul--about one week; not bad.  But somehow the call did not go out.  I guess it's no big deal because I had very easy workarounds.  I understand; this sort of thing happens from time to time with service businesses, it's just that I was the not-so-unlucky guy that didn't get called.  So during that call I arranged for installation 11:30 Wednesday, 25-Jul.  This time around they knew this was going to take a very long time, and they offered to take me somewhere I might want to go.  I declined; I brought my tablet this time, and trust me, that can entertain me for hours, given WiFi access.  And TTH does indeed have a WiFi access electronic ticketing system good for 3 hours at a time.

So...five and a half hours later, having listened to EIB  via TuneIn this time, and watching the "Biggest Warship" episode of "Build It Bigger," and an episode of "MythBusters" ("Barrel of Bricks") via TTH's DirecTV, they came to me again to tell me they're done...for the day.  Again, except for feeling like I sat in a walk-in refrigerator, passing the time there was fine because I wasn't doing anything particularly different than I would have been doing anyway...that is to say, EIB, Web browsing, or watching something on my MythTV.  In fact it's arguably better spending TV watching time there, because they get channels (like Science that I watched) that I don't get at home.  The news isn't as perfect as everyone had hoped though.  They told me in order for the fob to work, they need to order an ignition lock cylinder.

The next surprise in this (hopefully compelling) tale is there were two keys resting in one of the center console cup holders.  Huh..."came with the new trunk cylinder no doubt" I thought.  I inserted one into the ignition; it will not rotate.  I get out, and sure enough, yes, it will rotate in (and actuate) the trunk release.  So I talked about this with the TTH people, and also asked them if, while they were at it, they could make the ignition cylinder keyed the same as the trunk.  Although of course this would be perfectly workable, if Hyundai shipped a cylinder which matched my VIN (ergo my door too), as discussed with the TTH folks, this would be unusual for something other than one key for the whole vehicle.  I would have hoped TTH would have passed along to the Hyundai parts folks some sort of specifications (oh, like perhaps VIN) such that the trunk lock assembly would be keyed the same as the original, but I guess that was a bit too much anticipation.

Now, of course, I will likely never know for sure...did I really need a new BCM?  I don't think so.  So far, seems to me my original diagnosis holds, that something is wrong with the sensor which determines whether there is a key in the ignition cylinder.  Based upon TTH telling me a new ignition lock cylinder is the needed fix for the fob to work, I'd say they should have tested that first, especially since I suggested it might be the problem.  I also think this is an implicit acknowledgement that the Hyundai documentation is correct, and that they didn't exactly know what they were talking about when they told me the opposite of what the docs say.

So what can I say, third time's a charm?  Indeed.  It was only a within a couple of days, and TTH called me to say the (second) lock cylinder had arrived, and to ask when would be a good time to return.  Once again, I asked about late morning on their next free day, which was 30-Jul; we agree on 10:50.  And once again this was merely a mythical time.

With an interesting yin/yang sort of reversal of fate, TTH actually called me twice to tell me the lock cylinder arrived.  Hey, as I said to them on that second call, far better to call twice than not to call at all, and I firmly believe that.

I realize it could take quite a lot of labor when dealing with either the steering column or the dash due to the number of gizmos in each.  Mechanics most certainly have to follow the Hippocratic Oath, at least the part paraphrased as "first, do no harm."  Yanking something the wrong way thus disabling the air bag for example could have catastrophic consequences, so being careful takes time.  However...it was somewhere around three and a half hours before they came looking for me to ask where my car was parked!!  This says to me they weren't even ready to start repairs until then.  The point is, why schedule someone to arrive in the morning when you can't even begin until mid afternoon?  To give them at least some fair treatment, it should be noted that TTH did not do the final lock work themselves, they farmed it out to a nearby locksmith.  However, one would at least hope that this would have been arranged ahead of time, and a locksmith who can keep his or her commitments would be chosen (as in, agree to be there around say eleven and actually be there).

Now that it looks like we're done, what do we have?  Let's take a look at the invoice.

Item A mentions the key fob inoperability.  It says (paraphrasing) that TTH performed a diagnostic, traced wires (which I would have hoped somehow they would find the wiring for the ignition switch, hopefully with a harness somewhere, and check the key insert/removal sensor).  They called Hyundai tech support, and Hyundai told them to replace the BCM assembly.  I'd hate to think they had unnecessarily replaced the BCM, but given that at least one of the TTH service people thought the documention vis a vis the key being in the lock and the remote control was incorrect, and the fact that the lock cylinder was eventually replaced, It kind of looks like it.  Again, I stress that I was not privy to the entire methodology and conversations, and can only comment as I see it, and it could have been bad.

Item B dealt with the trunk lock, which was swapped on the 2nd visit.  It's here that TTH chose to inject Bob's Lock and Key.  Heck, I don't know what keys they handed me, whether it was the ones handed to me on the second visit, ones that may have come with the ignition lock, or whatnot.  The end result is the same key rotates in the door, the ignition, and the trunk.

Item C talks about the driver door unlocking after hitting the lock button.  It says "No problems found."  Well, duh.  It's easy to find no problem, given the right conditions.  Either close the door or remove the key from the ignition.  But in my estimation, as related before, it was impossible for the BCM to sense key removal previous to the cylinder replacement.  If you're reporting "no problem" after all the other repairs were finished, yeah....I guess that's accurate.  Either I should have been more explicit and reported door unlocks right away if it's still swung open, or the report could more accurately reflect "issue resolved by other items."  It's just one of those niggling little things that the issue was dismissed, that the more prudent handling would probably be to ask, "really?  so show me what you mean, and we can look at it further."

So caveat emptor.  Consider carefully whether you really want to go to TTH, and I can at least partly recommend West Herr Used Car Outlet.  If you're intending to trade, it would be really convenient to ask next door at Auction Direct USA for an appraisal so you have at least another reference point rather than just West Herr's judgement.

Direct all comments to Google+, preferably under the post about this blog entry.

English is a difficult enough language to interpret correctly when its rules are followed, let alone when the speaker or writer chooses not to follow those rules.

"Jeopardy!" replies and randomcaps really suck!

Please join one of the fastest growing social networks, Google+!

21 June, 2012

Deconstructing Yet Another Ridiculous EULA (YARE?)

Ever since I've used it on Palms, I have been a fan of Graffiti, the input method for these devices.  Briefly, it's not full handwriting recognition; it's more like a standard set of gestures, but those gestures make sense because they're usually the upper case of letters, mostly the shape of digits (except "4," where it's just the left part), and "escapes" (tap, and stroke from upper left to lower right) for punctuation.  Since tablets are larger, it's actually practical to draw a QWERTY (or other) keyboard on the screen, which is what most Android input method editors (IMEs) do.  But honestly, this is fraught with difficulties and lots of typos.  The GO Keyboard makes things arguably much better, as every key has a press-n-hold punctuation mark on it, obviating the need in most cases for hitting the numeric shift key.  Still, I missed my usually quicker and less effort Graffiti from Palm.

(A short aside here: the Graffiti 2 on my Palm T|X really sucks compared to my Palm Vx's (original) Graffiti.  The original expresses everything pretty much unambiguously, but 2 makes many glyphs double strokes...such as "K" is basically lowercase ell (a vertical, downward stroke) and less than.  Similarly, "T" is ell/dash.  This has the effect of delaying input because the device does not know whether I am meaning "L," "K," or "T," and will time out, or worse yet, if not done very precisely (such as not crossing the ell with the dash, thus interpreting it as ell-space) it is recognized wrong.  Unfortunately, I think there was some sort of IP legal problem in being able to use the original Graffiti in the T|X.)

So I have been fervently searching for Graffiti for Android for the past few days.  Unfortunately, searches for that were mired in results with various doodling or painting programs.  Switching tack from "graffiti" to "handwriting IME" was not so helpful either, as there are many, many IMEs specializing in Asian inputs (Chinese, Pinyin, Hangul, Japanese...you name it, none of which which I understand of course).  Understandably, this is much more vital, as Asian scripts are much more like drawings than Latin ones.  The search was rather disappointing...until today.

Imagine my excitement when I found there was someone who has already implemented a Graffiti-like IME for Android, ACCESS Company.  The first disappointment was the original link I found was to Play (formerly Market).  Unfortunately, my Android tablet didn't come with Play, and it is problematic to install.  (Updated 2013-Sep-30:  I have since gotten the original 16GB Nexus 7, and I have put Graffiti on there too.)  Even more unfortunately, "everyone" would rather put something on "the Market" rather than handling hosting, payments, etc. themselves, so it's really, really popular.  Also, many if not most Android devices ship "locked to" Play for support liability reasons, especially phones.  Thankfully, this Graffiti IME package was also noted as being available in the Amazon Appstore too, which I went and fetched it from there.

(Another aside: I know that Amazon are just using the same methodology and programming for paid and free apps.  But gosh dangit, if it's free, do you really have to email me about every "purchase?")

The first thing that made me go "whoa!  Hang on there, buckaroo!" about this package is its declaration of needed capabilities: "full access to the network."  Every time one activates an IME into Android in the language settings, the system warns you about the fact that IMEs could be mere keystroke loggers, sending your credentials for who-knows-what back to IME Author Central.  However, it is extremely commonplace for free apps to have Internet-served ads.  Still...I've been generally trusting with this sort of thing.  I have GO Keyboard, which has the absolutely essential inclusion of arrow keys, because precise cursor positioning with the default IME is very frustrating to say the least, especially on a resistive touchscreen.  So much of the free software is also ad supported, and the ads come from Internet connections, so many free packages will declare the need for network access.

Not surprisingly, they're a Japanese company, probably using one of the aforementioned Asian scripts in their daily lives, so they're naturally a good candidate for making a handwriting/stroke/gesture IME.  However, they seem to have some folks in the company who understand English, at least its form (but not precise meaning, as we shall see).  Many help files, manuals, and yes, sometimes end-user license agreements (EULAs) written by Asians are choppy and hard to understand...kind of like the dialog in many Jackie Chan movies.  Thankfully, this EULA is very understandable English.

Let's just start with the fact that the vast majority of EULAs are exceedingly long.  I believe this length is the primary reason people extremely rarely actually read them before agreeing to them.  That's why when I authored Tk Web Form Buddy and I wanted to host it on SourceForge, and therefore had to choose an approved open source license, I chose the shortest one I could find at the time, the MIT license.  We humans are an impatient lot.  "Let's just get to the fscking software already; I'll basically behave" most people think.  If we weren't such a litigious society, I'm sure EULAs would boil down to the ten words, "Play nice.  You basically know how.  Now go do it."  Cheerful ones would also include the imperative "Enjoy!"  But instead we are faced with pages and pages or screens and screens of mind-numbing, sleep-inducing language.  And yes, there is a certain amount of irony here in that I tend to be wordy too, and this piece is on the long side.  But basically it is for information and, particularly, entertainment.  Actually, that's why it's here on the IHeartLibertarianism blog instead of directly on Google+.

In the first paragraph, they talk about "concluding the said Agreement" with them.  "Conclude" in this context more means "terminate" or "end" in the sense of be over and no longer in effect, except I guess they mean something more like "complete."  It's subtle, but I think a poor choice of words.

Next, we have the last sentence of that paragraph:
If You do not agree with all the provisions of the License Agreement, You will not be able to use the Software.
 It's a clear confusion between ability and permission, much like people seem to confuse "can" with "may" a lot.
The Software is confidential
Huh?  It's hardly confidential.  I basically didn't have to do anything except provide an email address to Amazon; there was no vetting process per-se.  If you really wanted it to be "confidential," you'd be very careful about to whom you give the software.

Next the EULA talks about using the software on only one device.  Hmmmm...it's fine to use the software, and it's no charge, but if I had multiple tablets/phones/whatever Android devices, I can't use it on more than one?  In that paragraph, it also talks about personal, noncommercial use.  OK, so I am not entitled to use this software provided I'm using my tablet in conjunction with running a business?  I think that is kind of absurd, especially for a no-charge product.

Let's see...what other crockery do we have?  Under "prohibitions," I apparently can't copy the software, despite it being no charge and the fact that I will back up my tablet (thank you, Titanium).  We also have the usual crap about reverse engineering (decompiling, etc.), which in many jurisdictions, if I'm not mistaken, can't be prohibited.  In #4, we finally get to not including it "into a hardware product."  Again, we have usual stuff about other expropriations, modifying it to remove notices and such (which is likely illegal anyway under copyright law), and not leasing and such.

And of course, we have the usual, shouting, ALL CAPITALS paragraph or two about we're not responsible, no matter what, if your Android device happens to turn into a pile of unusable slag.  This is also pretty much untrue; if their product really does do something nasty, they deserve to make it right.  But I thoroughly understand (again, in this litigious world) they must have this "pushback."

Next we have the absurdity that since Software accesses the Internet, I am to accept some nonspecific additional terms and conditions of other Web sites (presumably their ad engine backend).  Piffle.  If I get cheesed enough, they will get iptables'ed and ip6tables'ed essentially out of existence.  I shouldn't have to agree to terms and conditions recursively without end.

If I thought I was foolish for actually taking the time to go through these things to become cognizant of what rights I have, what rights I'm giving up, and any responsibilities I may have due to my actions, I can barely imagine what these poor sots who just handwave it away by checking "I agree" and getting on with life, are in for.

Thankfully, there is an acknowledgement that they absolutely cannot limit the GPLed/FLOSS parts of their software (such as libraries linked to and such).  Prima facie, if that weren't there, I'd think that'd be grounds for invalidating large portions of the agreement anyway.  Unfortunately, I would say it looks like they're also in violation of the GPL by not including the GPL/LGPL nor links/references to it/an offer to provide it.

Next, they talk about their advertisers.  Sure, we'll stick these advertisers in your face, but we disclaim all liability in conjunction with them.  In other words, you're lazy and don't feel like vetting the ads that your software puts on my device.  And once again, they're saying I have to agree to whatever terms, conditions, privacy policies, etc. of these unspecified third (fourth?) parties.  Meh...just like mentioned before, if motivated enough, you will get firewalled.  If it somehow stops working, you gain very bad karma, and I will toss your software on the electronic trash heap.

Oddly enough, there doesn't seem to be any language in here that would prohibit me from doing such firewalling.  It's not modification of their product.  It's not subverting their copyright notices (I don't think).

Next, we have rather unnecessary inclusion of language about not complying with other laws...specifically export laws.  Duh.  It's illegal for me to do these things anyway; it's just filler to include this in your agreement.  It also seems kind of silly too to include countries by name in this document.  Those countries to which exportation would be illegal may change.

Tell me, ACCESS...why is it you have put "Agree Disagree" in the license?  You know, oddly enough, I tried for about five minutes or so to find an EULA (at least one specific to Graffiti) on your Web site, and I'd expect that text to appear on some Web form buttons, but this is text in a piece of software.  Also oddly enough, the actual buttons in this portion of the app are "I agree" and "I do not agree."

Well...despite some rather poor word choices and ridiculous statements, at least for now I'm jamming my index finger on "I agree."

P.S.-- I've been intrigued by Quikwriting too.  Maybe someday I will find and use a Quikwriting IME for Android.  Hopefully it will have less onerous and and easier to read (shorter) terms for its EULA :-) .  UPDATE: Apparently there is a Slovakian hacker  who has implemented it.  However, it's pretty much unusable because it lacks punctuation.  I couldn't find any number or punctuation "escape" gestures.  And it's not documented.  The original Perlin and friends implementation has such things.  ANOTHER UPDATE: The author wrote me an email to explain it's in there, just not documented.  It's true; if you run down where the author started (an Openmoko implementation, qwo), that project has more documentation on how punctuation and such is done.

Direct all comments to Google+, preferably under the post about this blog entry.

English is a difficult enough language to interpret correctly when its rules are followed, let alone when the speaker or writer chooses not to follow those rules.

"Jeopardy!" replies and randomcaps really suck!

Please join one of the fastest growing social networks, Google+!

15 June, 2012

A Tale of Two Stupidities

UPDATE from 21-Jun-2012 below.

Last week (on Wed., 06-Jun) I went to a regional retailer, Ollie's Bargain Outlet, for some miscellaneous items--socks, black landscaping cloth, maybe some grass seed.  This place has many "regular" items, but they sort of specialize (mostly) in buying out overstock of other retailers, and being an outlet for manufacturers' reconditioned/refurbished items.  One of the latter items is a Pandigital Nova, which they call a "Media Tablet" (and I call an Android tablet).  It's only been a week, and already it has urged me to spend insane amounts of time researching about, and hacking on, this thing.  In one instance I was up until about 0430 hours local time (Eastern Time).  But on Thursday this week I executed two stupidities.

If you recall biff(1), it "makes noise" when new mail arrives.  One myth (and it is an untrue myth) is that one Berkeley student's dog, named Biff, barked at the postal carrier.  I wrote my own to watch $MAIL because the standard biff behavior is to "bark" only once.  If I'm not around to hear it, it could be many hours before I even know I have new mail to read, let alone actually read it.  So my version checks $MAIL at (approximately) the top of every minute from 0800 to 2200 hours, and it barks every minute until the file's "last read" time is later than its "last write" time.  (There are a number of noises which could be similar to my original biff occuring at the top of some minutes, such as the top and bottom of hour markers broadcast on WBEN-AM, so it actually targets one second after.)  So this is one of the first things I usually hear in the morning, because there is usually at least one cron job which emails its results to me which ran overnight.

Previous to Thursday morning, I had set up email fetching on the tablet, and had seen it work.  So imagine my surprise when I get the tablet's swirl animation which putting "Syncing" on the screen, and up pops on the screen that the OS had to force close the app.  I tried it a few times to find out if this was some quirk, and it was insanity (doing something over and over and expecting a different result).  OK, so putting on my computer engineer's thinking cap for a second, the usual first thing to consider when something was previously working, and now is not working, is what changed.  The major change was installing the excellent (although Chinese and therefore difficult to understand at times) GO Launcher EX (available on Play, Amazon Appstore for Android, and where I got it, the Opera Mobile Store).  So recalling there are a lot of rather nasty folks overseas, I kind of felt I was duped into compromising my tablet, so I uninstalled GO Launcher EX.  That was no help.  I rebooted (powercycled) the tablet.  That wasn't any help either.  This was the first stupidity, assuming the newfangled (to me) tablet had to be at fault just because of that being the current hacking target, and its newness to me.  I even went through a factory defaulting wipe of the system, and a re-setup.  This of course, as we shall see, was no help at all either.

By now biff had barked at me about 20 or 25 times, and I was getting miffed that I could not pick up my email on the tablet, and I'd have to revert to using the SSH client on my Palm T|X.  So I pulled that out, logged in, and pulled up Mutt (my favorite ncurses-based MUA).

It turns out, as usual, the only thing waiting was the report of the spam messages cleaned up daily (retains 7 days for inspection and possible "rescue.").  But then after dismissing that, I started looking at the messages and maillog logs.  Much to my amazement, the  spawned IMAP daemons were not only exiting with SIGSEGV, but before they did exit, they were consuming all idle CPU cycles according to top(1).  And that, as we shall find out, was one of the keys to unraveling the mystery.

I thought, "that's kind of odd."  Although I didn't change anything relevant on the IMAP server side of things, and the uptime was only 7 days, I thought that every once in a blue moon things do go screwey on Linux, and so despite not wanting to lose my place on several open browser pages, I shut down and rebooted my workstation.  And that of course was no help at all.  This was the second of the two stupidities.

By this time I was a little worried that I had a fancy paperweight which also happens to be capable of playing Angry Birds intead of having an Android tablet.  One of the main reasons I got this thing is not to have to deal with basic email and such on a tiny T|X screen.

The key to solving the issue was to start dropping assumptions, and this is really plan B (and sometimes plan C) when the usual suspects in computer and general problem solving aren't getting oneself anywhere.  And admittedly, all too frequently plan B is rebooting.  That should really be plan C at soonest, and more appropriately plan D or E.

The fatal misunderstanding was that Dovecot automatically stores and subsequently retrieves a user's email "folders" rooted at the user's $HOME/Mail/.  Wrong!  That's not necessarily the case.  I had always assumed that since I had set up so many other IMAP clients before (Mutt, Thunderbird, maybe a few others) and leaving the optional server side parts at the MUAs' default that it was Dovecot doing that.  However, I think it's probably closer to the truth that at one time an MUA I used, probably ElM, set up ~/Mail and it had somehow been found ever since.  And I still don't know what the heck happend, why all the sudden the Gingerbread default "Email" app didn't work like that.

But looking at this in hindsight, I will show you my best guess at what was throwing a monkeywrench into the entire works:

20:30:04 rchandra@sal9000:~ 0> du -sk
11457296            .
20:30:14 rchandra@sal9000:~ 0> du -sh
11G          .
20:30:19 rchandra@sal9000:~ 0>

My best guess is that both the IMAP daemon and the poor, limited RAM tablet were trying to deal with 11GB of "mail" in my home directory.  They were both likely choking rather mightily on the multi-gigabyte virtual machine hard disk image which is in the QEmu subdirectory, among other reasons.

This was an extraordinarily easy fix.  I went into the tablet's incoming server settings for sal9000, specified "Mail" as "IMAP prefix path," and the IMAP client worked fine.  So take a slightly painful lesson from me, and work with fewer assumptions instead of more when computer problem solving.

UPDATE from 21-Jun-2012:  I really didn't want to do without my folders for filing away my email, and none were showing up by specifying the prefix.  So I decided I would snoop in on an IMAP session to see why imapd was chewing CPU and K-9 Mail was crashing.  Actually, I found out it's decidedly worse.

At one time, I was experimenting with delivery to maildirs.  As those in the know know, there are three subdirectories in that format: new, cur, and tmp.  I didn't want a whole new tree, so I decided to make some symlinks, all to "."  So...imapd told K-9 (in essence) "there appears to be a folder here, not with email, but with a bunch of subfolders, named 'new.'"  K-9 faithfully said, "OK, whatcha got?"  Imapd faithfully replied, "well, seems inside 'new' there are more folders, at least one of them which is named 'new.'"  And K-9 asked, "well, what's inside new/new then?" wherein imapd replied, "seems there's a new/new/new there."  And so on went the conversation, basically ending when K-9 filled up my poor tablet's RAM, and imapd probably filled up nearly 2.5GB of RAM and 1GB of swap, and probably also eventually died...but not before really messing with my computer.  Yesterday, it locked up hard, requiring not the three finger salute, but a holding of the power button.  As best as I can figure, this unusual taxing of the system was its demise.

Direct all comments to Google+, preferably under the post about this blog entry.

English is a difficult enough language to interpret correctly when its rules are followed, let alone when the speaker or writer chooses not to follow those rules.

"Jeopardy!" replies and randomcaps really suck!

Please join one of the fastest growing social networks, Google+!

01 January, 2012

Getting to Soar Over Your Own Home

About noon today Eastern Time, I finished a "Discovery Flight" offered by Bob Miller Flight Training (BMFT). It's kind of on the expensive side, but it's really, really, really neat-o. Still...for ~$100, it was very much worth it for me. Think of it as somewhat extravagant entertainment.   A lot of my experience was like a first-person video game, basically with a goal and a challenge of how to accomplish it.  It just so happens though that the stakes are a lot higher!  Let me back up a bit so you, the reader, can appreciate the entire story.

It's unfortunate that I procrastinated at doing this for such a long time.  My mom got me a gift certificate for this flight for Christmas 2010.  Bob's rules are that one must schedule one's flight before or in the calendar year following, which meant I had a 31-Dec-2011 deadline.  Stupid me, seeing in the literature that it was advisable to schedule at least two weeks in advance, I thought part of the reason for that was that one needs to file a flight plan and have it approved before taking to the air.  Part of my procrastination was that I only had one goal in mind: get an updated snapshot of my neighborhood.  Our family has a black-and-white photo showing what it was like just after the houses had been built in the mid 1950s, and I thought it would be great to update that.  Other than that, I thought I should have some secondary goal in mind, such as the Buffalo waterfront, Niagara Falls, Ralph Wilson Stadium, or something like that.  As it turns out, I only accomplished the primary objective.

Another part of procrastination was I wanted to fly during temperate times, either spring or fall.  Well, western New York State ("WNY") springs being what they usually are, that window was relatively short, and filled with a lot of rainy days (being on the downwind side of Lake Erie and all).  And late this past summer, I was told of a work opportunity by my good friend Andreas.  I had been without a job and living on NY Unemployment benefits and savings since 21-May-2010, so when opportunity came a-knockin', I wasn't about to stay away from the door; I was going to remain ready to answer the call when it came.  I wasn't about to tell Andreas (who would be my supervisor), "hey, you know how you wanted me to start on 'X?'  Well, I can't, because I scheduled my Discovery Flight then."  I wanted the least possible resistance to hiring or to contracting me as possible.  Most WNY falls are not all that different than springs: not all that long in the temperate zone, and usually plenty of cloudy days, a few of which are rainy.

So, that brings us in this tale to mid-November.  It actually took until the last week in October to get all the metaphorical wheels lined up and spinning in synchronization; that is to say, reporting to work to the Corporate Parkway office complex in Amherst, NY.  This was greatly delayed (months) by uncertainty caused by the acquisition of the company employing Andreas by a rather large, international company.  All the rules surrounding contractors and new hires were being upset, redefined, and solidified.  So, corporations being the beasts that they are, all Andreas and I could do is wait for the rest of the company to make up its mind how to proceed.  Meanwhile, poor Andreas was suffering somewhat all the time from not having the extra help.  But once I had a chance to settle in for a couple weeks, I asked him if I might be allowed to take off a weekday so that I might go flying.  He thankfully agreed, just that I would need to provide at least a week's notice (so of course that fit well with Bob Miller's requirement of two).

Well...at that time, two weeks would be right around the US Thanksgiving holiday.  I didn't think that'd be the best of ideas.  The whole idea of asking for a day off was that it was unlikely to be others' day off.  And again, it was indecision on my part of a route plan which led me to delay until it was rather close to the certificate's deadline.  Besides...I was actually having a good time at my job.  I really liked the new challenges and was spending considerable time and energy (very much the latter) getting to know the new "environment" thoroughly.  Consequently, often there was little time or energy left for planning the flight and actually calling to make it happen.  It's the unfortunate human condition of some (like me), that we don't do something until we have to deal with it.  (In this case, it was the expiration of my certificate.)

Two weeks out, noone can predict the weather with any appreciable certainty or accuracy at all.  So although I had high hopes of flying on Fri., 30-Dec-2011, I got a call in the morning on that day.  It was an instructor of BMFT asking to reschedule due to low clouds.  Oh, well...these sorts of things happen.  I'm not a morning person, so asking for 9 Saturday did not appeal to me.  As it appeared to me, at least in my nonprofessional opinion, Saturday wasn't any better anyway.  So I basically asked for a 48 hour delay, which was midday today, New Year's Day 2012.

Oddly enough, on the night of 29-Dec, or perhaps very early morning 30-Dec, I had what turned out to be a somewhat prophetic dream.  I dreamt that although I was going to have the whole day off on 30-Dec, I still went to the office, ostensibly to do something or other before my flight; maybe it was to help fix something which went down is my vague recollection, or to go fetch the BlackBerry (BB) I was going to take with me for the electronic camera.  Nonetheless, I figured I might as well go to the office after the cancellation that day to earn some more money.  As a contractor, I don't get paid for days I don't go there, and poor Andreas was going to be there as the lone Telecom person.  Thankfully, it was a "slow" day anyway, and we spent our time getting a better handle on our Verizon Wireless/BB configurations, both on the BES and Verizon's Web site.

Yesterday evening though, in order to get a "flavor" for conditions today, I checked the Web page for the National Weather Service forecast for my area.  And after seeing a high wind watch for late morning 1-Jan through the morning of Mon., 2-Jan, I thoroughly expected to get another morning call asking to reschedule for another day.

Actually, I wasn't that far off the mark.  I did get a call, except asking for moving the appointment sooner.  The watch had turned into a warning, and that's exactly why my flight instructor was so suggesting.  We agreed on 10:30, which was an hour and a quarter away.  Having planned the drive both on my TomTom and on Google Maps, I knew it would take considerable time to get there.  I had planned on 45 minutes, which is the 1/2 hour (approximately) TomTom was predicting plus plenty of slack time for the nearly inevitable missing of the depature goal time.  I was almost done eating breakfast, and was pretty sure I could shower and otherwise get ready in around a half hour, so I said "yes."

As it turns out, indeed I did not leave until about 0950 ET.  But I still arrived on the flight school grounds at 1015 ET.  Someone in an SUV had been waiting there, and left as I arrived.  From the brief look at the driver, compared to a photo I had seen on the Web site, it looked like none other than Bob Miller himself.  He waved to me while leaving, and I waved back while parking.  Idunno...it was one of those intangible things of dreading that things were not going to go well that day, kind of like, I just arrived and the person who was supposed to take me up is just leaving.  It turns out that logistically, things did not go well.  Mind you, it was not horribly wrong, just mildly bad.

I sat listening to Wait, Wait, Don't Tell Me for a while.  I didn't need to listen intensely, because I had already heard most of it yesterday.  (I was unusually tired yesterday for some reason, so I was drifting in and out of sleep during the program.)  Well...10:25 rolled by, and I went to the door.  The deadbold was locked, and there were no other vehicles in the parking lot.  Hmmm....no bell switch either.  So I waited another five minutes...still, no substantial change.  Figuring there could have been someone who parked behind the garage door, I also knocked; no answer.  So, I got out the ole company BB and look up the incoming call history on my Google Voice.  And I called back the number which called me earlier that morning.  I talked to my flight instructor, and he was confident someone named Matt would be there any minute now.

It turns out Matt was thought to have been flying from another airport (I forget; Batavia or Rochester) to Buffalo-Lancaster Regional Airport with the plane in which I was supposed to fly.  It caused a bit of concern when my flight instructor could not contact Matt directly, as if he were overdue.  I likewise started to feel concern for Matt.  But, as it happened, it was just a little communication misunderstanding, in that Matt thought it was a flight tomorrow at noon which was being moved to 10:30. I was relieved to hear this when my flight instructor called again at about 1100 explaining that.  He said if I could just hang tight for about 15 minutes, we could get it in today.  At that point, I have to say I expected my flight instructor to get there and say the weather once again was going to be unfavorable, as the mostly sunny skies had turned to mostly cloudy and downright dark, and it was getting close to the time when the high winds were expected.

But as it is, a little less than 15 minutes later, a pickup pulled up, and out hopped a little girl, maybe 8-10 years old, as well as flight instructor and dad Dave (I think).  We shook hands, and went into the office.  Dave asked if I'd mind if daughter Jess would come along; I didn't mind at all.  I filled out a standard release form, we fetched three headsets, and headed next door to the airport in Dave's truck.

What I can tell you is a Cessna 172 Skyhawk SP is a really space-constrained aircraft laterally.  One is seated really close to the door, and  there's not a whole bunch of room from one's right shoulder to the left one of the flight instructor.  There is a heckuva lot more room front to back.  The physics of flight, and I'm relatively certain the constraints of materials cost, really don't lend themselves well to having it any other way however.  What I was thinking to myself as I was standing right in front of the port wing was, one, this is small, and two, there is such a miniscule percentage of people who get to see any aircraft this close-up first hand.  Most people's closest encounter would be a jetway at a commercial airport.

After getting out of the hangar, we taxied to the (roughly) east end of the runway.  When we got there, another aircraft was on what I guess would be called final approach.  We were facing east on the north edge of the runway as this plane was flying west, so we would be on what sailors would call the starboard side of the landing aircraft.  Dave remarked he hoped they didn't miss, and I remarked, at least not to starboard.  Nope.  Pilots I guess don't necessarily say "starboard" and "port;" it's just plain left and right.  I have always liked the less ambiguity of starboard and port, as it is a relative description independent of the observer's location and orientation.  I was sort of surprised aviators wouldn't use that.

Considering our "mission," the protocol and procedure called for us going slightly east then north of the BNIA.  While enroute, the view was amazing.  I was thinking to myself that it was kind of foggy down there.  Well...it wasn't so much fog as it was raindrops.  Soon droplets were impinging upon our windscreen.  Dave had said on the ground something about the view being different in the rain, and I could understand (as one's view is different driving a car without using wipers during rain).  But thankfully, it was but drizzle, and the view still very good.  It is one thing to see rain coming down from overhead, another to see rain falling fom clouds in the distance, but  altogether quite spectacular to see it from the side in an aircraft.  (Well, admittedly, it looks a bit like watching rain falling from clouds in the distance...but still, just about everything looks better when closer.)

We then made two passes over my neighborhood, both from north to south.   This was nothing short of absolutely great.  The first time, I was getting my bearings.  As anyone who navigates in the northern Cheektowaga/southern Amherst area can attest, the landmark which was most identifiable was "the big blue water tower" right near the intersection of I-90 and I-290.  It took me a minute and some questions to Dave to get my orientation straight.  Sure, one of those three major roads is I-290, and the other two I-90, but the key is...which one is which?  I wish I would have paid more attention to orientation all the time, and I suppose I would have to if I were to continue on and earn a pilot's license.  After making out the I-90/Route 33 interchange was, I was then able to realize our heading was roughly 180, at about 300-500m north of my house (not leaving a whole lot of time to get the BB camera ready/aimed).

It definitely was great to go around twice though.  I also got to see Maryvale High and North Hill Elementary like I'd never seen it before.  It's just not nearly the same seeing it from the ground as it is from the air.  I mean, not even Google Earth or Google Maps satellite view is quite the same as flying over it in a Cessna; it's just lots better.

We then circled around, and this time I was able to get a better photo of the neighborhood.  I was able to point out to my flight instructor the north-south Lochland, the east-west Huth, and my street.  I do have one slight regret, not asking Dave to fly more west.  We really flew further east than I thought would have made a good photo.  But...there's always the possibility of a next time.  I think I might want to do this again.

Well....I must say, then came the really exciting part, in a good way.  As you can imagine, with a high wind warning on the way, it wasn't exactly smooth sailing.   My flight instructor pointed us back towards the BLRA, and as we had discussed on the ground, we executed a protocol not too unlike the TCP SYN, SYN-ACK, ACK handshake, something like, you take the controls, I have the controls, you have the controls.

As many would expect, rotating the top part of the yoke counterclockwise banks port (or left), rotating clockwise banks starboard (or right), pulling back on the yoke raises the nose (gaining altitude, at least in the short term), and pushing dives.  Having the rudder on pedals I guess completes your complement of basic aircraft control.  I'm going to guess the rudder is the most complicated part, because Dave took care of that.

It's at that point it seemed to turn into an amazing video game.  Dave states simply, see that building over there in front of us?  We want to fly towards that.  In the winds and turbulence we were experiencing, that was fine; I really liked the challenge, even though it was simple.  I can tell you in a 172 Skyhawk, the controls are really sensitive.  It doesn't take much rotation, push, or pull on the yoke to do a lot.  And that's good; it was really necessary to have quick correction to keep us on course.  I can't tell you enough: try it.  As I wrote, even though it was simple, it was just a BLAST!!

Some distance out, Dave told me, I don't remember exactly...but the gist is, it would be best to have him fly now.  I decided it was probably best to execute the same aural protocol in reverse, and asked "you have the controls?"  to which he of course responded "I have the controls."

It was then a bit puzzling.  Not being that aware of our orientation (I was concentrating quite a bit on flying towards that large roofed building), we actually passed over the BLRA roughly perpendicular to the runway.  I kept hunting visually for something like a landing strip in front of us and not seeing it.  When we were about half a minute or so out, it finally dawned on me the strip was oriented left to right.  Dave said something about judging the winds for landing; that was cool, because it didn't make sense at the time to be heading that way.

So we banked port and circled around.  I remember distinctly maybe a km to a km and a half out that we seemed to be oriented in roughly the correct heading, maybe 10 or so degrees south, but we were considerably north of the strip.  I guess that's once again the Joe Ordinary Citizen's concept of flying, that coming out of a turn like that you'll be oriented straight towards the landing strip.  It's sort of ingrained into our brains from movies, TV, and maybe once in a while during commercial flights we take.  In retrospect, it seemed something like getting the clock on the PBX at work to sync up.  I'm guessing we had to aim north of the air strip while "up there" in order to be positioned parallel with the air strip by the time we actually got to the air strip.

Based on watching the landing of one plane up close and personal, I was a little surprised at us.  It looked to me like the plane we watched at taxi time came down almost right in front of us.  I remember it was quite a few seconds and distance after clearing the end of the runway that the landing gear wheel only (say) 3 meters away from me touched runway.  Then about a second or two later, I could feel the one by Dave hit.  (BTW...despite all the weather going on around us, the touchdown was quite gentle...kudos to Dave for that.)  But as it is, I had absolutely nothing to worry about; there was "tons" of runway ahead of us before we started heading for the hangar again.

One thing I will say for flight instructor Dave: he's raising his kids right.  Jess actually said thanks for letting her come along.  Just as Dave had promised, she was quiet and just enjoying the whole experience along with us.  As I was standing on the passenger side of Dave's pickup, really just waiting for Dave's cue to get it, Jess opened up the door for me and encouraged me to get in and out of the weather.

I'm really quite jazzed by all this.  I'm thinking I definitely have to set aside some time and money to go do this again.  I'd really like to study, which is made a lot easier by this Web site set up specifically to teach the novice how to fly, and do more than just practice straight flight (although it was a thrilling challenge as-is today).  But this time, I'll know more what the program is like, and can choose a lot of things more intelligently (as well as picking a warmer time of year!).

UPDATE 07-Jan-2012: I have put together a very simple Web page with in-flight pictures.

English is a difficult enough language to interpret correctly when its rules are followed, let alone when the speaker or writer chooses not to follow those rules.

"Jeopardy!" replies and randomcaps really suck!

Please join me on Google+!