Archive for January, 2009

Some more utterly blue-sky long term goals for the app. Some of them depend entirely on what the phone can do, and I don’t know if it can or not yet.

  • Attach a photo from the library as an icon for the aircraft. Maybe for locations as well, and/or a link to the Maps application. Link people (other crew and passengers) to Contact app, so you can display a picture, and even look up a phone number to call them to go flying!
  • Import from google docs – or a server to do it if the phone can’t. Or maybe direct import from a SQLite database through iTunes? Don’t know – just need a way to get hundreds of records from a previous log book like AvLogBook.
  • Carry forward totals from previous log books.
  • Checkpoint and export – everything before a certain date is exported and deleted, and running totals (ie carry forward) updated.

My employer forces me to use Windows XP and Internet Explorer on my desktop at work. This is more than just “our internal apps are only supported on IE”, they’ve somehow locked things down. I tried to install Google Chrome, but it complains about a missing DLL when I fire it up. And Safari, which got dragged in when I installed QuickTime, can’t seem to handle our automatic proxy configuration. One of my cow orkers says he has Firefox installed, so I guess I’ll have to try that next.

This came to a head today because yesterday StackOverflow rolled out some awesome new functionality for tracking your reputation, responses to questions and comments. Yesterday it worked great, both at work with IE and at home with Safari. This morning there was a date rollover that Safari had no problems with, but going to any of the new tracking pages in IE crashes the browser. It’s completely consistent – it happens everytime in exactly the same way.

Ok the plus side, they’ve moved the bug reporting and feature requesting site from stackoverflow.uservoice.com to uservoice.stackoverflow.com, which means it isn’t blocked by the web filters at work anymore. Which means I can see that I’m not the only one having this problem.

So now it’s time to do battle with the corporate filters to see of I can get Firefox installed and working.

Thanks to the reading I’ve been doing, and the source code that fellow pilot-geek Kris Johnson sent me, I think I’m starting to get my head around Objective C, if not the iPhone development environment. I answered my first Objective C question on Stack Overflow, and got over 12 upvotes and an accepted answer. Too bad I hit my daily reputation cap. But Kris saw my post almost immediately and commented on my new-found knowledge of Objective C.

The iPhone part is coming along nicely. I’m about halfway through the iPhone Application Programming Guide, and after that there are a couple more papers on the iPhone developer site to read. It might soon be time to start writing some test apps.

After work, I went to the gym and did Dan’s recommended light weights but more sets workout on the machines. The gym is a lot more crowded than it was in December – I wonder if this is just the New Years Resolution crowd, or just that there weren’t a lot of students around in December because of exams and end of quarter work-loads?

And in between, work sucked less than it had been. I got assigned a bug from the “BAU” (which I’m told stands for “Business As Usual”) group, which unlike the “Maintenance group”, actually seems to have some standing in the company.

In the Maintenance group, if you wanted help from somebody in charge of a design document, you had to preface your request with an explanation that you were only Maintenance, so they didn’t have to interrupt anything important to answer you. 50% of the bugs assigned to me are unreproducible, either because they were fixed under different report numbers, or I don’t know enough about some areas of the product to figure out how to reproduce the bug and can’t bother people who do know because I’m just “Maintenance”. Another 25% get put on hold after I figure out the fix because the fix involves a view change, which requires a review from the DBA group, and the DBA group aren’t going to give any priority to reviewing it because I’m just “Maintenance”. And have I mentioned that the bugs I fixed in the first two weeks are finally getting code reviewed on Thursday, 2.5 months after they were fixed? With any luck, they might even get checked into the code for the April release. (And no, I’m not kidding – that’s where I’m told they’re going to go if I can get them approved by code freeze in March.)

Now compare that to my first BAU bug. The bug report had some conflicting information, so I did some research in the design documents. That also had conflicting information, so I was able to have a meeting with one of the designers, and exchange some email with the “owner” of some other part of the functionality. From that, I was able to resolve some of the ambiguity, and decide on a plan of action. There are both GUI and back-end issues in this bug, and I’ve told them I want to fix both sets of issues instead of just the actual “headline” issue, and they agreed. And I get the feeling that there will be more help if I run into other obstacles. I feel positively giddy.

Check out this utterly awesome picture taken of a Yak aerobatic trainer taken with a iPhone:

Airplane Prop + CMOS Rolling Shutter = WTF on Flickr – Photo Sharing!.

The combination of the slow scan speed of the camera and the movement of the prop has done something fascinating to the image. In the old days, some cameras had moving slits for shutters and they did similar effects to propellors, but usually the props just looked a little bent, rather than discombobulated.

Ok, so what do I want from an iPhone App? How about I list the requirements as I see them, and order them from highest to lowest? I have an idea that I can then choose a bunch at the top of the list and say “this will be the first release”, then a bunch below that to say “this will be the next release”, and so on down the list.

The perfect iPhone logbook app:

  • Must not require an internet connection!
  • User must be able to enter a new flight.
  • User must be able to browse existing flights.
  • User must be able to total up existing flights
  • A flight consists of a brief description, a series of one or more locations, the aircraft that was taken, and the number of hours spent in certain activities such as “Pilot in Command”, “Cross Country”, “Dual Instruction” as well as counts of other non-timed activities like “Day Landings” or “Precision Approaches”.
  • A particular aircraft should be known by its capabilities so that the user can get totals of time spent in those capabilities, such as single engine or multi engine, land plane or sea plane, complex, high performance, turbo prop, jet, etc.
  • User should be able to filter on date ranges, capabilities, aircraft flown, activities logged, etc, in both the browse and total functions, so, for example, you can total up how many flights you took where you made a night landing in a complex aircraft while pilot in command, or see all the flights where you landed in Syracuse (KSYR).
  • User should be given warnings of “currency” items, based either on recently logged flights, like if you’ve gone 90 days without 3 day or night landings, of for calendar items like when your medical expires.
  • User could track other things in the flight, such as who else flew with you or flight number that would be filter-able
  • User could have an unstructured note field to note down other facts about the flight that are not filter-able.
  • User could export the flight log to a Google Docs spreadsheet. (Some other iPhone apps do this – I wonder if there is an API?) (Obviously an internet connection would be required during this operation)
  • User could import the flight log from a Google Docs spreadsheet. (I have no idea if that’s even possible!)
  • User could customize the duration and count fields for flights.
  • User could customize the rules for currency, even combining several factors.
  • Application could publish an interface so that other apps (like CoPilot, for example), could transfer information from a flight that was planned or flown into the logbook.

That should keep me busy for a while, eh? Any additions?

I’m going to document what I’m doing on this iPhone development project, and it’s going to be in a separate category. If you want to follow just this without following anything else, you can point your browser at http://blog.xcski.com/category/activites/geekery/iphone, and if you want to follow it on RSS, http://blog.xcski.com/category/activites/geekery/iphone/feed

Here’s what I’ve done so far, since signing up as an iPhone developer 4 days ago:

  • Watched the introductory iPhone developer videos available from the Apple Developer Connection
  • Read up to page 91 of 133 of “The Objective-C 2.0 Programming Language” (should finish soon). Decided that Objective-C is pretty weird looking, but it might have some merit. It appears like the bulk of “learning the language” isn’t going to be in the language syntax itself, but in learning the frameworks and libraries – sort of like Java, but much more so.
  • Downloaded the iPhone SDK. Fired up XCode and loaded one of the default app frameworks and ran it in the simulator. Decided that XCode is quite different from Eclipse, but if I learned to like Eclipse, I can probably learn XCode as well.
  • Started defining the requirements for the application. Haven’t decided if I’m going to do multiple posts about that, or just have one post and keep coming back to edit it.
  • Decided that I should do the design and development as openly as possible – yes, I’d love for my app to get on the App Store and make lots of money, but I think it’s probably more important to have something I can show prospective employers to prove that I’m not letting my skills atrophy just because I’m working as low man on the totem pole at a multi-layered bureaucracy instead of being top dog on a small team like I was for the last 6 years.

Next up, after finishing the Objective C document is probably to read the iPhone Application Programming Guide and maybe to work on a few small examples. And also to sketch out some ideas for the user interface. I really want something that looks good, and my past performance in that area hasn’t been the greatest. Maybe I can use that 99designs site that StackOverflow used for their icon to design an icon set?

I won’t bore you with the whole thing. Instead I’ll bore you with short excerpts from the workout. This was last Thursday. I’m still having problems with my left shoulder, seemingly a problem with the trapezius muscle, hopefully nothing more permanent than that. So Dan’s been playing around with the format of the work out a bit to get me working up a sweat and improving and reinforcing good technique.

This video is fairly early in the work-out. It looks like my forward hand is dropping too early, and we worked on that later in the work-out.

This video is late in the work-out. I felt more warmed up than tired out, and I think it was going very well. I do notice I’m not opening my left hand at all, though, which is bad. But I don’t think I’m dropping my forward hand as much, and I think I’ve got a decent catch going on.

The Prius beeps and displays a large “Add Fuel” banner on the display. Vicki always starts looking for a gas station almost immediately after it beeps on her car. But with my older cars, I always knew how far I could go after the low fuel warning – on both of my Corollas, it was about 100 km or more. I never ran a car out of gas.

And so I decided to test it. I read on-line that the Prius tank is 12.5 gallons, but I’ve never put more than 9.6 gallons in it. So the last time the low fuel warning came on, I drove 50 miles before filling up. That got me 9.879 gallons. So this time, I figured I’d go 100 miles. After all, the display was showing that I was averaging 40 mph (it’s been really cold and my trip to work is too short for the car to warm up properly) so 11 gallons would be 440 miles, and the warning went off at around 325 miles, so it should have worked out.

So imagine my surprise when I was driving home tonight, and at 75 miles from the low fuel warning almost exactly, this big red warning icon came up on the dash, and the gas engine cut out. I quickly hit the “nearest gas station” button on the GPS, and put on the emergency flashers. I was able to drive on electric only for nearly a mile. Unfortunately the gas station was a mile and a half away. And these days, gas stations don’t carry gas cans. So I walked all that way for nothing.

Fortunately Vicki came to my rescue. Between the gas can and the fill up afterwards, I put in 9.92 gallons. While I was waiting for her, I googled and discovered that the Prius tank might be 12.5 gallons, it has a bladder inside that restricts the capacity to somewhere between 9 and 11 gallons, depending on the temperature. So I guess I was lucky to get nearly 10 out of it. And I guess I’ll start looking for gas 25-50 miles after the warning, rather than 75.

Update: It’s worse than I thought. I assumed that there was a vulnerability in html2text.php that allowed them to send email, but no, they used a vulnerability in html2text.php to download malicious code, and install something called “mock” in /tmp/.m and a script called “c” in /tmp/send. There were several copies of “c” running just now, when I ssh’ed in from my Treo to delete the files, kill the processes, and restart Apache. This is the first time I’d had malicious code installed on my system in over 15 years of running Linux. I feel so dirty.

As I was getting ready for bed, I chanced to look at my mail queue on munin, only to discover that some time yesterday, my outgoing mail queue was up to over 2500 messages, which is 10 times higher than I’ve ever seen it before. Oh oh, must be a spam run, I thought. It was worse than I thought – it wasn’t blowback from spam being sent out in my name, it was OUTGOING.

It took the last half an hour to find the culprit – RoundCube web mail that I installed soon after I started work at Paychex because I couldn’t ssh home to read my mail with mutt. I don’t know if I missed a patch or what, but there were a whole bunch of hits on “POST /webmail//bin/html2text.php”. I’ve removed it. I guess I’m in the market for a good secure web mail system again.

Hopefully I didn’t get marked as a spammer on too many sites.

I’ve been looking for an aviation logbook for the iPod Touch, and not finding anything that is both suitable and inexpensive. Searching the app store for “aviation logbook” or “pilot logbook” finds one that’s $40, and meant as a companion (not a replacement) for a desktop program that costs twice as much, and another one that was about $5 which, after I bought it, turned out to be useless for general aviation. The Palm one I’ve been using for years and years, cost about $12 and does almost everything I could possibly need. I wish it could keep track of my IFR currency automatically, but other than that, it’s pretty nifty.

So unable to find what I wanted, I took the precipitous step and signed up as a registered iPhone developer. I’d been holding off on doing this, because I’ve always thought that my next smart-phone was going to be either an Android (Google) phone or a Palm Pre, and developing for those is a completely different kettle of fish than developing for the iPhone. On the other hand, the Apple Application store is well developed and seems to work well. Now to teach myself Objective C. From what I’ve read so far, it looks like a horrible language – sort of what C++ would have been if it had taken a wrong turn down an alley and gotten mugged by tcl.

I was up to 2:30am last night, and up again at 8:30, working on a problem with PostgreSQL. I spent a week and a half consolidating the data that comes from OurAirports.com and my existing data, and trying to figure out who was right when they disagree. I finally got that finished up at around 8pm last night, but didn’t load it on the production machine until after I got back from a party around midnight.
Continue reading ‘PostgreSQL woes’ »

When I was on the cross country ski team at University of Waterloo, we had our own temperature scale. From warmest to coldest, it was

  • Cold
  • Damn Cold
  • God Damned Cold
  • God Damned Fucking Cold
  • Harsh

Back then, because we spent so much time out in the cold and were pretty damn fit, I think “Harsh” was around -40, which is the temperature we experienced for the entire week of our first Christmas Ski Camp. That’s where future Olympic silver medalist and future several time wearer of the Malliot Jaune and Malliot Blanc in the Tour de France, Steve Bauer, showed me how to put a plastic bag down my shorts to prevent a painful frostbite.

These days in my aged and infirm state, “Harsh” is what we have been experiencing the last couple of days. It was 7°F when I drove home tonight, and in the cold today I broke my new snow brush and my very fancy and expensive sunglasses that I bought in Oshkosh last year. Plus my gas mileage is in the pits because the engine has to run to keep the owner warm.

Man this off-line blogging is a blessing and a curse, isn’t it?

Now that Amazon Honor System has gone away, what other options do I have for soliciting donations on my navaid.com website? I get most of my donations through PayPal, but some people preferred to stay away from PayPal for some reason. Amazon has a donation service, but only for registered charities.

We’re only talking about $5 or $10 a month, so it’s not like I need a full ecommerce solution.

I discovered the secret to getting Eclipse debugging to not be painfully slow. The secret is to reboot (or possibly just log off and on again) and then make sure you don’t start IE or Outlook or anything else except Oracle, jboss and the app. At that point I’m using just a hair over 2Gb of memory and it’s hardly swapping at all.

I’m sure it would be a huge violation of their security policies, but I’d love to bring in my laptop to see how of does at this. Not only does it have a faster processor and twice as much ram, but it also would allow me to have only Oracle, jboss and the app running on the desktop box while Eclipse ran on the laptop, freeing up half a gig of ram on the desktop.

I’m looking for recommendations for the following apps for my iPod Touch:

1. A good aviation logbook. When my flightbag was stolen, my bacon was saved by the fact that every flight I’ve ever made is on my Treo. The ability to import and export to CSV would be a huge plus.

2. I use a spreadsheet on my Treo for two reasons: to track my hours at work and to record the mileage on my car. I’m looking for either a simple cheap spreadsheet or separate apps for each of those. Actually if there were a google gear for iPod so I could use Google Doc even when I’m offline, that would be ideal.

At Mark and Kris’s urging, I’m giving two thumb typing another try. It seems to be getting better and i’m more impressed with the quality of the auto-correct now that I’m purposely making more mistakes. And Andy’s mention of the hold-drag for minor punctuation is a big time saver too.