02 December, 2013

UPS, I Think You Need to Rethink Your Agreement


UPS, I think you need to rethink your end-user agreement.

Every now and then, I order something online and it gets shipped via UPS.  (More often, it gets mailed or sent FedEx, but it depends on the vendor...in this case it's Monoprice.)  In other words, I get maybe 4 or 5 delivered packages per year.  So...you have this wonderful-sounding service where you'll send me an email (or an SMS) when the status of my package changes.  That's a WONDERFUL idea!

But let's see...in order to do that, I must register as a user with your Web site.  That's not so unusual.  A lot of sites want visitors to identify themselves, for all kinds of reasons...in this case, the least of which is so that we don't have 5 different people wanting to know what happens for a specific package so they can go steal it from outside my door :-).  But...in order to do that, I'm supposed to agree to your terms...also not unusual in our litigious society, you folks just want to limit the no doubt steady stream of angry hornets who think they've been somehow harmed by you providing a service which pretty much benefits them, but of course something went awry.  It's just the way things happen these days, because "everyone" always wants someone else to blame, someone else to take the hit, because they want their lives to be a utopia.  They'll find a way to link their misfortune to your big, (theoretically) money-soaked corporation.  I get that, I really do.  But...


I decided to follow the link on your registration page, which goes to another page with a PDF of the agreement text, which I downloaded.  Are you serious?  Seventy-nine pages?  I'm supposed to read through 79 pages in order to receive an email telling me about arrival scans, departure scans, destination scans, out for delivery, and delivered?  I get it, this is to turn the polling (refreshing the page over and over) to push notification when the events are actually posted to your system.

I know I don't have a job right now, but do you honestly think, for a few uses per year, I'm going to read through seventy-nine pages to do this?  Sorry, no, I'm not that bored.  I have better things to do.  I think I'll continue to load down your servers by refreshing the package tracking page.  Even if I refresh 200 or so times, it's likely I'll have spent far less time doing that than reading through your agreement.  Isn't there anything you can do to simplify it?  Please?


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+!

30 September, 2013

New York State Strikes with Stupidity (Again), Moreso Than Just That of the ACA

NYS is ludicrous (well, that's not news, but I digress). I just thought I'd look in on what I theoretically could pay for NYS "marketplace" health insurance, at http://www.nystateofhealth.ny.gov/PremiumEstimator. What do they have there? They have an Excel workbook. So let's see...they were too lazy (or too pressed for time) to put up some HTML forms and have a server give me some answers. No, instead I'm expected to buy proprietary software (or subscribe to Office 365) to find this information. Let's not forget that any time the State wants to update anything in this workbook, a new workbook must be (re)published, thus leaving potentially thousands if not millions of people with outdated information ("well...what are you talking about? I downloaded the file, and running the file told me this is what companies are there and what the premiums will be"). Heck, the file name itself contains "9-23-13 update". OKOKOKOK...don't say, "but Joe, there's ((Star)|(Open)|(Libre))Office."  I know about the free/libre *Office suites.

When I opened this "wonderous" workbook with LibreOffice, it (rightfully so) complained that the file contained macros, and that they would be disabled, and to run them, I had to go into a specific place in the settings.
Are you going to tell me seriously "normals" are going to understand what's going on, let alone how to run these macros appropriately without compromising the security of their LibreOffice installation? Besides, this advice does not completely describe the things which need to be selected (they missed the name of the button "Macro Security"). I mean, being a computing professional, I know exactly how to handle this and remain safe.

OK, take two: I'll just use Google Docs, and import it into a spreadsheet, like I've done on numerous occasions with other workbooks. "This file could not be imported. Supported formats: .xls, .xlsx, .ods, .csv, .txt, .tsv, .tab."  Ummm....OK, so I fibbed a little, and renamed it from a .xlsm file to a .xls file, and retried.  "The uploaded file is password-protected and could not be imported. Please remove the password and try again."  As I didn't put the password there to begin with, I obviously can't remove it.

As if this workbook monstrosity wasn't bad enough, after going into the macro security and setting the level to "medium" (prompt to run macros, but don't turn them off entirely), I discovered I have to enter in my county.  I'm sorry; what's that?  I thought the whole underpinning of a national health care law (combined with Amendment XIV) was that I should be able to get health insurance just the same as someone in LA, CT, CA, MO, MT, NJ, or any other state for that matter, let alone some subdivision of NY such as a county.  I also thought a major principle behind this law was to break down the state border barriers when it comes to selling health insurance.  Why am I going to NYS?  Why am I not going to some federal entity (HHS?) for this?

As I really don't want to spend any money at all on health insurance at this point, but my nation tells me (theoretically) I must, I selected the "Catastrophic" option, figuring that's lowest on the list and will probably have the cheapest premiums.  This "wonderous" workbook then informs me "This plan is only available if every person in the household is under the age of 30."  Again, ummm....sorry, what?  So just because I was born in 1965, I cannot simply insure myself against catastrophic illnesses and injuries?  Hello!  Amendment XIV?  Or how about 10 CFR Part 1040, Subpart E?  As a 48-year-old, I feel denied and limited as an individual for the opportunity to participate in an insurance program which receives federal tax subsidy as financial assistance.

Let's just put all this NYS silliness aside for a moment.  I'd like to know just how our "salescritter" (BHO) could think he was not lying.  (Well, we know now quite well he was, but we're stuck for another 3.5 years or so.)

I want to know, what is the magic pixie dust which is supposed to fix insurance magically?  After all, this law was "sold" to the American public as reducing premiums substantially, while at the same time adding roughly 30 million more people to the health (insurance) system, not all of them necessarily paying people, insuring "kids" until they're 26 years old, total exclusion of denial based on preexisting conditions, with no mention of tort reforms.  I suppose the slice of the American public who supported this law figured it was just the cruel, heartless, greedy insurance companies which could take the money they were all receiving with the system before law enactment and offer these incredibly enhanced services just because they have been so incredibly "greedy."

Look, don't get me wrong.  There are some areas in health insurance which could be improved which would parallel other laws in the respect that noone should be discriminated against based on what they are.  We have many such laws, such as against discrimination based on color/race, gender, age, and so on...what we are, something about which we can't really do anything.

For example, preexisting conditions is a really tough nut.  I'm talking about Crohn's disease, diabetes, lupus...any number of conditions/diseases which are caused totally or partly by genetic factors; again, it's what those affected are, often nothing to do with what they do or did.  If for example one develops adult onset diabetes, as long as one has had insurance, it's covered.  But some poor schlub who, for whatever reasons, has some sort of lapse in insurance coverage is either denied or must pay sky-high premiums?  It makes no rational sense to me.  I'm also not saying they shouldn't pay something additional, just that they shouldn't be denied, and there should be some sort of limit on the premium differential.  I mean, as many have pointed out, making everything the same is unfortunately not a workable solution, because all someone has to do is not buy any insurance at all and then waltz in after something happens and say, "hey, I need this."  A good analogy people often cite is going to buy homeowners' insurance right after one's house burns.  There needs to be some disincentive against doing that sort of thing, so maybe disallowing denial plus some percent cap on premium differential would suffice.

Tort reform could go a long way towards curbing lavish, arguably unjust malpractice awards.  Malpractice premiums could potentially be reduced substantially, therefore prices charged for medical services, therefore the amount insurance companies have to pay out on claims.

Do we really need 50 different health insurance regulatory jurisdictions?  Just like the NYS Do Not Call registry got subsumed by the national DNC, couldn't some laws be passed which trump individual States' insurance laws so that insurance companies can sell in all states and eliminate the compexities of selling in all 50 States?  This is a noted exception to States' rights, simply because the larger the pool of people served, the more inexpensive the system becomes, by combining the risks over a much wider area.

It's all so much hooey. I hope it somehow gets repealed and completely rewritten.  Moreso, I would like to see a NYS law passed which states open standards must be used for all externally accessible media...meaning no Microsoft anything, no Flash, nothing proprietary.


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, 2013

Stealing from YouTube Content Providers? Hardly


I just had another thought which goes out to those folks who state that doing whatever I can to block online ads is somehow immoral or indecent:

So, you think it's reprehensible that I have BIND set up on my Linux router so that it answers authoritatively for domains like doubleclick.net and admob.com with ::1 and 127.0.0.1.  You think it's bad that I would even consider using youtubeskip.com.  You really wish I would take down my Squid or Polipo cache which does URI inspection and substitutes a PNG of Tux the Pengin for certain URIs.  You think that I'm somehow burglarizing the people/orgs/sites who put ads on their site (especially YouTube), and that the people who put up that content will basically refuse to produce more content if those ads don't get viewed.  I see.  So...

Are you going to come to my house, go through my recycling bin (the actual one, not any metaphorical, computer desktop one), and extract all the ads which come via the USPS?  Are you going to insist I need to read each one?  After all, companies have paid to produce those ads, to print those ads, and to deliver those ads, not to mention make the products or do the services they're meant to promote and sell.  Sorry, e.g. ValPak, you aren't my bank, you aren't my credit card company, you aren't the Erie County Water Authority, you aren't the NYS DMV, you aren't my insurer, nor are you any of the other mailers I actually care about.  Unfortunately, in this economic time, I really don't have much spare cash to spend on anything I've seen in your previous mailings, so your envelope goes, unopened, into the recycling bin.

Oh, cruel-hearted me; I just did in the physical world what I do in the virtual world every day.  I examined the envelope (URI), made a judgement based on past experience (found the content at that URI or URI prefix of litte value or outright annoying), and discarded (blocked) the unwanted materials.  Oh, and BTW, especially in mobilespace or certain ISPs (notably in Canada), viewing these ads could actually cost me real money because they could make me go over my monthly quota, so no thank you.

I guess this also means I'm not allowed to reject any emails either based on spam filtering.  It's the same paradigm, really.  It's electronic stuff I do not want.

Again...if you are depending on 100% presentation of ads delivered that way, you're doing it wrong.  Use product placement deals, or, like TWiT does, live reads.  Make deals with another content distributor, such as Amazon or Netflix (I don't know...just not necessarily YouTube).



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+!

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+!