Blogs

Brass Band Competition in the morning

I'm in Louisville, KY today and tomorrow (April 3rd and 4th) for the North American Brass Band Association in downtown Louisville in the historic Brown Theater and Brown Hotel. (315 West Broadway, Louisville, 40202).

Today, my father and I drank in about as much brass solos and small ensembles as we could fit in! 8 hours of awesome performers from around the country! (Yes, our Canadian bandmates are always welcome, but this year none of them came!).

In just 13 short hours, my band, Sunshine Brass will take the stage at the Brown Theater, and blow the roof off the place!

I'll post the results at the band's website when I return to the hotel room!

Have you ever crashed Javac?

I did -- tonight...

I didn't know (until Eclipse's QuickFix feature suggested it to me about a week ago) that this is valid:

        for (@SuppressWarnings("unused") String fieldname : fieldnames) {
            // some block where I didn't use 'fieldname' --
            // I was more interested in doing it the right number of times, but without a counter variable
        }

This works on Java 1.6.0_10-b33 as provided by Debian/Ubuntu.


But on Solaris Java 1.5.0_06-b05 (where my product has to be built every night) this was (apparently) an invalid place to put a @SuppressWarnings annotation. Makes the compiler barf:

    [javac] An exception has occurred in the compiler (1.5.0_06). 
            Please file a bug at the Java Developer Connection 
            (http://java.sun.com/webapps/bugreport)  after checking the Bug
            Parade for duplicates. Include your program and the following 
            diagnostic in your report.  Thank you.
    [javac] java.lang.AssertionError: {unused}
    [javac]     at com.sun.tools.javac.tree.TreeMaker$AnnotationBuilder.visitArray(TreeMaker.java:634)
    [javac]     at com.sun.tools.javac.code.Attribute$Array.accept(Attribute.java:124)
    [javac]     at com.sun.tools.javac.tree.TreeMaker$AnnotationBuilder.translate(TreeMaker.java:637)
    [javac]     at com.sun.tools.javac.tree.TreeMaker$AnnotationBuilder.visitCompoundInternal(TreeMaker.java:628)
    [javac]     at com.sun.tools.javac.tree.TreeMaker$AnnotationBuilder.translate(TreeMaker.java:641)
    [javac]     at com.sun.tools.javac.tree.TreeMaker.Annotation(TreeMaker.java:649)
    [javac]     at com.sun.tools.javac.tree.TreeMaker.Annotations(TreeMaker.java:570)
    [javac]     at com.sun.tools.javac.tree.TreeMaker.VarDef(TreeMaker.java:554)
    [javac]     at com.sun.tools.javac.comp.Lower.visitIterableForeachLoop(Lower.java:2892)
    [javac]     at com.sun.tools.javac.comp.Lower.visitForeachLoop(Lower.java:2755)
...etc ...

The bug is described here and it's been fixed in a later version.


This is the fix (since there's no way we're going to push out the fixed compiler on dev/test AND production by March 31, which is when I would need it.

        for ( String fieldname : fieldnames) {
            // same old block
        }

All that over trying to suppress a warning...

Data loss: a universal experience?

Tonight, I was at band practice, working hard on our contest music, and out of the blue, our director Jim called out: "Who here has lost a hard drive?"  He happened to lament on his Facebook page about losing a drive, so I wasn't surprised that it was on his mind.  I was only surprised he chose to bring it up in front of 30 talented musicians during rehearsal.

Jim knows that I work in computers, because I host his personal website, that of the band, and a couple others.  Before anyone could respond, he re-targeted the question at me, personally.  "Tim, have you ever lost a hard drive?".  I immediately blurted out, "No!"  Incredulous, he shot back, "Never, in your whole life?"   The rest of the band started to laugh, and maybe there was a jeer or two.   Normally, most computer users have just one hard drive, and when it fails, they lose stuff.  Tax returns, baby pictures, email, and in Jim's case, maybe painstakingly composed (and really amazing) brass music scores.  I just assumed that I was being asked if I had ever lost any DATA.  But no, Jim had asked if I had ever lost a DRIVE.  "Well, yeah, of course... DRIVES go bad all the time, but I don't lose DATA... Ever."

Another guy called out the name of a widely-advertised remote backup solution that

  1. probably only works under Windows,
  2. definitely costs more than a backup hard drive, and
  3. sprays your data across the internet to a remote datacenter with a bunch of other peoples' backups, where it sits as a very tempting target to all the hackers and business competitors out there,and.
  4. is probably staffed by over-confident twenty-somethings with less than 5 years' experience but somehow have "Senior" in their title).  

I pointed some of these things out, again, to guffaws and more laughter.  I pointed out that losing a hard drive doesn't have to mean losing data, but you have to take charge of your zeroes and ones, install mirrored drives, and take every opportunity to copy stuff around to systems you control (especially when you can automate it with tools like cron). 

I have a whole boatload of little techie rants like this, and I am used to rattling them off as needed, but my bandmates hadn't heard any of them before.  It felt like the most helpful and natural thing in the world to share my experience and knowledge, yet I felt like I made a spectacle of myself in a room where probably a third of the people have AOL email addresses (but are otherwise fun and intelligent human beings). 

Anyway, it was over before I knew it. We got back on task, working on the difficult sections of the music that do need attention.  But I started thinking to myself, "Why were they so unwilling to believe me?"   It is often hard for me to relate to ordinary people's conceptions of computing for (more than) a few reasons.  The most obvious reason is that I don't use Windows, except when I am forced to (and fortunately that only means Outlook/Exchange at work).  Most of the rest of the reasons are because as an applications developer, for all of my adult life (20+ years) and most of my teens, I have used a lot more kinds of systems than even exist today, and I understand what goes on at the very lowest levels of the system. Big surprise, everyone already knows I am a major-league geek.

"Am I really that fanatical about backups?  Why is that?"   When I try to remember what data I have ever lost, I really have to go back to my teenage years (starting at age 11), when my systems were home computers (mostly Ataris) that used the family TV and used audio cassette tapes for  storage.  I didn't own a floppy drive until I was 16, and no hard drives until I was 18.  These cassette tapes, in particular, were extremely unreliable devices, much more so than any hard disk I have ever encountered.  These tape drives basically recorded and reproduced sounds similar to 300-baud modems.  I even remember that the documentation even recommended that the user keep two parallel sets of tapes (always save to two separate tapes).

With that rough sort of initial introduction to early computers, I guess what I am saying is this: As technology improved, I never did develop a trust in a single storage device to hold important data, because of the primitive hardware I started with.  From the very beginning, I saved to parallel sets of audio tapes.  I kept two or mor copies of most of my floppies, and when I got  into PCs with MFM/RLL hard drives, I always had my stuff copied and spread around multiple systems  too. Nowadays, I have remote VPS systems that are redundant hot-backups of each other, multiple mirrored drives under Linux, and lots of external USB drives.

I teach my son the same thing:  he saves all of his important data to a mirrored NFS drive on my main programming server, on the other side of the house from his room.  My wife, fortunately, only does email, and that is all server-based (timjones.com uses Google Apps, which includes GMail For Domains).  Even there, I back up her Google-hosted email to my Linux system using Fetchmail.

SSDs (Solid State Disks) are starting to appear in the stores, and the strongest recommendation from Linus Torvalds is for the SSDs made by Intel.  I don't
own any yet, but when I do, there will be two, set up as a mirrored pair.  Neither will ever be the sole copy of anything, not even with such a great endorsement. Just not gonna happen!

Call me paranoid, sure, but I don't lose data.  You don't have to either.

Feel free to comment below. I read blogs all the time, but I haven't posted a lot yet.

first ipod application: 3 button browser

Last weekend, I spent working through learning the XCode GUI and Apple's Interface builder, but was really helpless with Objective C.   So yesterday, I spent about 10 hours reading through the Objective C documentation, and now I am at the point where the iPhone class reference almost as much sense to me as Java API docs (which I feel very comfortable with, since I have been working with Java for over 10 years). 

So I took a whack at using the UIWebView widget... remarkably easy stuff... too bad Objective C is the only language you can use for the iPod.   I have plenty of C, C++, Java and many other languages from the past 20+ years, so it wasn't at all out of the question to pick up yet another variant.

I have some screenshots and a ZIP file of code to share...

Drupal conversion at last...

Just finished converting from home-grown, lovingly coded HTML using VIM, to Drupal, one of the hottest open source Content Management Systems around!

Why?   First of all, I have a few new mobile devices.  I've been dying to write a blog, but have been putting it off.  My music friends from sunshinebrass.com would like to have online forums (they didn't like punbb much, apparently), and I have volunteered to teach Linux at my son's high school this year (starting August 25, 2008).

Linux Class starting soon at Middleton High School (Mondays at 3pm)

Starting September 8, 2008, in Mr. Grillo's classroom at 3pm, I will start holding Linux workshops after school for all interested students.The requirements are not too high:

  • Some proficiency in keyboarding, email and surfing the internet. 
  • You should know the difference between a local program and a website.
  • Comfortable installing and uninstalling Windows programs (at minimum).  If you are also comfortable administering a system (installing/uninstalling device drivers or even the entire Operating System, even better).

If you have completed the first year of CST, you already meet these requirements.Actual topics will be selected by me as we go along, depending mostly on what you (the students) are interested in pursuing.  There is not a predetermined textbook that I plan to follow, and there is definitely no syllabus!Go here to get started!

Syndicate content