Monday, December 9, 2013

Annual Timelord Update!

I'm from the planet Gallifrey in the constellation of Kasterborous. - The Doctor
My Timelord app has had two updates in the past two years. Last year when I switched jobs, got a new MacBook Pro Retina, and I realized that Timelord wasn't retina. UNACCEPTABLE. Staring at non-retina text was like applying sandpaper to my eyes. Then I learned there is a simple flag that makes Swing use Retina. Why is that not default? I don't know, but I fixed the build process to add it.
I haven't been actively time tracking for the past six months, so no big deal. A week ago I went to run Timelord and it wouldn't launch. Huh? Further investigation showed that the JavaApplicationStub bundling method only worked on Apple's version of Java, and since Oracle has taken over with updates, the program wouldn't launch anymore. One fix is to install the old Apple Java Runtime. Oracle to the rescue... sort of. There is a new version of the bundler from Oracle.
My build process uses Maven, because Maven is the cat's pajamas, but Oracle's bundler is an Ant Task. (grumble grumble).
After fumbling around for a while trying to get it working in Maven I gave up and just wrote an old-fashioned Ant build script. Works like a charm.
  <taskdef name="bundleapp"
         classname="com.oracle.appbundler.AppBundlerTask"
         classpath="src/lib/appbundler-1.0.jar" />

    <bundleapp outputdirectory="target"
        name="${app.name}"
        displayname="${app.name}"
        identifier="${app.mainclass}"
        icon="${app.icons}"
        mainclassname="${app.mainclass}" >

        <classpath dir="target/lib" />
        <option value="-Dapple.laf.useScreenMenuBar=true"/>
        <option value="-Dapple.awt.brushMetalLook=true"/>
    </bundleapp>

    <!-- Make Retina! -->
    <replaceregexp file="target/${app.name}.app/Contents/Info.plist"
               match="</dict>"
               replace="<key>NSHighResolutionCapable</key><true/></dict>"
               byline="true"
    />

See you next year when I need to update Timelord again for OSX Snow Mavericks

Wednesday, December 4, 2013

The Problem Is, I Need to Drive a Truck

PCs are going to be like trucks. They are still going to be around. However only one out of x people will need them. - Steve Jobs

Somewhere around a year ago I decided to see if I could do the majority of my personal computing on an iPad. It's okay - but required a decent amount of shennanigans. Eventually I got a Compass Stand, Apple Bluetooth keyboard, and lap desk and I had basically designed a laptop except I could just carry around the iPad when I wanted. I kept the iPad in a cute cloth case my wife sewed for me, but I would always loose track of that case when the iPad was out of it. The keyboard is also annoying, how do you pack the keyboard? I've upgraded!

I got a new iPad Mini Retina. The old iPad was nice, but I really didn't need that size. So to get a smaller iPad with the exact same screen resolution is great. I also got the T-Mobile Cellular version which gives me 200MB of data a month for FREE (as in beer) for the life of the device. That's pretty awesome too - as I am often on Amtrak or BART and want to do more work than I am able to using my phone.

The new setup is sweet! Instead of the sewn cloth case, my wife got me an Apple Smart Case. There are probably cheaper cases from third parties that work the same, but don't you just feel classier knowing your using an Apple-designed product? My in-laws got me the Oragami Case for the keyboard and it's sweet! It solves the problem of carrying around the keyboard AND I don't need to carry around another thing.

The problem is - part of my personal relax time is developing applications - and the iPad just isn't right for that. I could sure get close for the types of Web Apps that I usually build - but I still need a real computer to get that done. So for now - the iPad still isn't enough to replace my computer - but gosh it's close!

The Cost of a Baby

But we have to pass the [health care] bill so that you can find out what’s in it. - Nancy Pelosi

American health insurance is frustrating. Historically, whenever I get a bill I make sure that it shows some amount of insurance coverage (to make sure they billed my insurance) and then I pay the remainder. I've always had a slightly more expensive PPO, so I'm used to $40 copays on blood work and that sort of thing. I had exciting copays back when I got my 20+ cavities filled.

Now a baby is really exciting thing from a medical bill and insurance standpoint. We got sent an initial hospital bill and after insurance adjustments it was quite reasonable. I'm not going to say cheap, but at least it was close to what our insurance said it would be. Then we got a second bill for the anesthesiologist and it was expensive. Insurance had only covered about 20% of the bill. That made me sad, but we begrudgingly paid. Then we an updated will for the delivery and the price we had to pay showed four times higher than the first one. It moved it out of the reasonable realm.

So for once, I decided that I shouldn't just blindly pay things, and I gave insurance a call to check it out. Both bills had mistakes. Awesome!

The anesthesiologist? There is a contractual obligation from the hospital that there is a maximum cost. So insurance covered that maximum cost. The hospital than incorrectly billed us for the rest of it.

The delivery? When the hospital sent the updated bill to insurance, insurance incorrectly marked the entire bill as "already paid" and didn't cover any of the new items. The hospital than billed us for the full price of all the additional procedures.

Here, at least, is the good part. Insurance apologies and said they would follow up with hospital to have it fixed and should be getting an updated bill. Was I going to trust insurance to do this? Nope. After I hung up with insurance, I started gathering paperwork together so that I could repeat this conversation with hospital just to let them know why were late on all these bills and to see if they wanted to do anything. Before I had a chance to call, my phone rang again. Insurance called me back! They said they had talked with hospital and both bills would be updated and re-issued and there was a credit that hospital would reimburse us. Awesome.

Anyway - that was Blue of California. Good job guys, you impressed me! You get a thank you letter written to you!

Monday, December 2, 2013

Code Names are for Hiding Meaning

If you tell the truth, you don't have to remember anything. - Mark Twain
I've sure been posting a lot of 'nerd' updates lately. When Mini-Chaos was born, one of my coworkers told me to put all of my hobbies on hold for the next few years. There is a decent amount of truth to that - but I manage to sneak in nerd work from time to time, which is half hobby and half job-training.
What I find interesting in the technology development world is the amount of "code names" that people like to use. Code names exist for a very specific purpose: to keep people without context from knowing what things are. Time and time again in my history building software apps, I've seen engineering teams come up with clever code names for engineering systems: "Jefferson Airplane," "Messina," "Mountains of Madness," "Kafka." Each of these has a clever reason behind the name that allowed the team to pat themselves on the back.
The problem is these names persevere from the time something is in "secret planning" to the time is a live and running production system. That means when new people join the team - they need to understand the code name insanity and it makes your system immensely harder to understand, harder to train new people on, and potentially embarrassing to talk about with other people.
My advice for code names? Don't.