Posts for the month of June 2012

Kayaking: Mohawk River #3

Kayaking yesterday was pretty great, despite weather predictions to the contrary. It was pretty windy, but I managed to get to my goal, and the wind helped me return home. I went to the Mohawk River for the first time this summer.

MyTracs(6_22_2012 10_09 AM.csv)

I think this is actually a record distance for me. My next longest trip was around 18 miles on Harriman Reservoir.

A fire truck was spraying around water at the boat launch.

From Mohawk River - June 23, 2012

I haven't seen this much blue and yellow canal equipment since the Erie Canal, growing up.

From Mohawk River - June 23, 2012

I knew from looking at maps that there was some sort of dam or barrier about ten miles from where I started. That was my goal. I wasn't expecting it to look like this.

From Mohawk River - June 23, 2012

I didn't get much closer to the dam.

From Mohawk River - June 23, 2012

I sat and watched this boat go through the lock.

From Mohawk River - June 23, 2012

Sandpiper piping sand.

From Mohawk River - June 23, 2012

Kayaking: Canada Lake

I have been struggling to find new places to kayak. I was poking around on maps again recently and came across a lake I remember Anton mentioning (though he never went there): Canada Lake. Searching around, I found some evidence that this would be a good place to go. Measuring things on Google Maps, the perimeter looked just a little smaller than that of Harriman Reservoir, which is ideal for me.

I put in at a boat launch on West Lake. There was plenty of parking, and two other vehicles arrived with people putting in boats at about the same time as me.

Take a look at the entrance to the lake:,-74.532906&spn=0.003623,0.008256&t=w&z=18

Do it.

It's only about a quarter of a mile as the crow flies, but paddling through that snaking winding bit was really disorienting and overall quite excellent.

I did a loop around West Lake. The water was really shallow for much of the lake, and I started noticing some bugs harassing me. Both of these observations increased in intensity through the whole trip.

The next part of my plan was to go to the southern end of Lily Lake and Stewart's Landing. I think that's what they were called. It was vaguely river-like, and I learned to stay toward the center to minimize my contact with the bugs. I was quite surprised to find a dam at the end with no warning signs. I got out to take some pictures and then turned around and headed to Canada Lake.

From Canada Lake - June 15, 2012
From Canada Lake - June 15, 2012

Canada Lake was just another lake at this point. The coast was thoroughly populated with summer homes, and many people were out working on them. I made my way to a little unoccupied island, went for a quick swim, and then headed home.

From Canada Lake - June 15, 2012

MyTracs(6_15_2012 10_49 AM.csv)

Spotted this red, white, and blue in CANADA Lake territory:

From Canada Lake - June 15, 2012

Kayaking: Harriman Reservoir #8

I'll admit Harriman Reservoir in Vermont has become my default place to kayak.

The good:

  • The lake is a great size. It takes me all day to do the perimeter.
  • Bald eagles.
  • The water is clear and great for swimming.
  • Mostly undeveloped coast.
  • Parking at either of the boat launches I use is free. I think there are some parks I could be using, too.
  • It's a pretty quiet lake, considering all of that. I've almost had it to myself, some days.

The bad:

  • The drive takes about 1.5 hours.

This time I just did a loop around the top part of the lake. I had lunch (a peanut butter and jelly sandwich) on a little island that I had to myself.

The water level in the reservoir seems to be at a peak. It has been a long time since the level was down to the point that is illustrated in the Google map data, which is where it was the first few times I paddled there. To me that just means that the lake is bigger, and there are fewer places to stop for picnicking.

MyTracs(6_10_2012 12_07 PM.csv)

BlackBerry Apps

I have two free apps in the BlackBerry app world for BlackBerry PlayBooks, now:

"Ukulele Chords" was just posted today. I applied what little music theory I learned from my previous ukulele chord webapp to what little I could learn in a day about QML.

I added both to my project list.

Kayaking: Harriman Reservoir #7

I went back to Harriman Reservoir to try to do a loop of the perimeter, again. This time, the wind was quite calm, and it was a great success.

MyTracs(6_1_2012 11_01 AM.csv)

Setting out:

From Harriman Reservoir 6/1/2012

It looks like some kids were having a boat race. The boats seemed to all be powered by screaming:

From Harriman Reservoir 6/1/2012

Time to turn around:

From Harriman Reservoir 6/1/2012

BlackBerry PlayBook Development

Several months ago, a coworker alerted me to a promotion Research in Motion was having. I believe the original description was essentially, "port an Android app to BlackBerry and receive a free PlayBook tablet." I spent about a day setting up the development environment and configuring Winter Simulator to run on the PlayBook simulator and submitted it for approval. My app was approved quickly, but I had basically given up on the promotion until about a month later, when I received the request for a shipping address which preceded me receiving free hardware.

There are two particular points I find interesting that I want to explore here. BlackBerry development is sort of in an unfortunate transitional state right now, but it looks as though it is quickly improving. Qt Quick, which is the foundation for BlackBerry's Cascades, seems fantastic.

The State of BlackBerry Development

The following is all based on my personal experience in going from zero knowledge of what BlackBerry development is like to picking a path and releasing a few apps. Things are changing quickly, and that is part of the point.

There Are Many Options

The BlackBerry development site highlights choice, in big letters, right up front. My assessment of the choices follows.

C/C++ Native SDK
This is how I ported Winter Simulator. The C API I assume is adopted from previous BlackBerry platforms. This is entirely adequate except for the fact that it provides no facilities for UI. It is delightful to, unlike on Android or iOS, write a simple C program without any surprises.
C++/Qt Cascades
More on Cascades below. This looks like a great approach to UI, but it's not ready to be used until BB10 is released.
HTML5 WebWorks
In combination with something like Apache Cordova, this seems like the best bet for actually making cross-platform iOS+Android+BlackBerry UI-heavy applications. I have CSS nightmares and so I shied away from it.
ActionScript Adobe AIR
I don't know anything about this and don't really care.
Java Android Runtime
The BlackBerry tablet OS includes a runtime for Java Android applications. Many applications can run after just being repackaged. At the time, I only had native applications which this doesn't support. Applications run this way currently run in a shell application which makes them appear slightly as second-class citizens, but the next OS release will apparently improve this situation.
This isn't really documented, but the bbndk includes a script for packaging python scripts as applications. I didn't try more than a "hello world" application, but with the appropriate wrappers, either of BlackBerry's C API or Qt, this would be wonderful.
Qt already includes BlackBerry support. I tried making a C++ Qt PlayBook application, but it seemed like it would take substantial work to make it look and feel right on a tablet.


  • If you're making a game, use the native SDK.
  • If you're making a UI-heavy application, either use WebWorks or wait for BB10.
  • If you already have Android applications, why haven't you already repackaged and published them?

I ended up using QML in Qt, and it make me excited for Cascades. I think the main downside is that I've had to include the Qt libs, which amount to 36M, while my application is honestly just a few k of QML. When BB10 is released, I expect I will be able to convert and republish my app, and its size will shrink appropriately.

Qt Quick

A few months ago I wrote my first real pyqt application, for work, mostly on a whim. It's all procedural code, because that's how I knew to make and manage UI, and I was already embracing enough risk by using Python, Qt, and writing the app I was writing. The first time I got frustrated with the mess I was making, I started to look at my options, got confused, and decided it was correct to return to the path I was taking.

It seems Qt presents three options.

Generate UI in code
It's really not a bad option. For simple UI, I like having things in one place, where "things" include UI layout, declarations and appearance of widgets, application logic, and event handling. This only becomes a mess if there are a lot of things.
Qt Designer
This looks like a great WYSIWYG GUI editor. I didn't see the need for that at the time, so I skipped it. I may go back and convert some UIs to encourage other people to meddle with them visually.
Qt Quick
This appears to be intended for mobile UIs. The most concrete indication of this is that it lacks standard widgets.

When I wanted to make a UI-heavy BlackBerry application, I tried out Qt Quick.

I found that the answer to my first concern, that there are no standard widgets, is mitigated several ways:

  1. BlackBerry provides standard widgets in Cascades.
  2. Many mobile applications prefer to use their own widgets. This annoys me, but it is the way things are.
  3. Qt Quick provides enough to create basic widget types without too much hassle. Scrolling lists are a fundamental type.

A few more thoughts:

  • QML is a declarative language. More things should be declarative. I don't know how put this plainly. It is the Right WayTM.
  • QML integrates JavaScript. This makes it easy to write imperative code for the times that anything else would be too cumbersome. It also is used to support powerful property bindings.
  • QML is part of Qt. Qt signals, types, and the ability to interact seamlessly with C++ code seal the deal.

Much to my surprise, I ended up writing my whole application in QML, rather than following my original plan of writing most of the logic in C++ and only presenting the UI in Qt Quick.

So All Is Great?

Well, Research in Motion has to find a way to be relevant again, but I like their development tools. :)