Bad Science review
Mood: busy
Posted on 2011-09-29 11:31:00
Tags: reviews books
Words: 312

Bad ScienceBad Science by Ben Goldacre

My rating: 2 of 5 stars

Bad Science is a book that I should have liked more than I did. He basically looks at a bunch of different pseudo-medical fads (detox baths, homeopathy, etc.) and explains that there's no real science to back them up by looking at the studies they cite and tearing them apart. He also writes a bit about the placebo effect, which is often not corrected for in said studies. Then he goes on to discuss more ways that studies are poorly conducted, and takes the media to task (rightfully so) for their coverage of the MMR vaccine (which does not cause autism).

Another interesting part was the section on antioxidants (especially because I had bought into the fact that they're good) - they do counteract free radicals when they come into direct contact with them, but there's no proof that a) free radicals are responsible for aging and various diseases b) eating more antioxidants will help, since the body already has a system for counteracting free radicals; maybe eating more antioxidants will cause the body to produce less, or something. Anyway, it goes to show that the body is complicated and really a reasonable-sounding biological theory isn't enough to prove that something is helpful - you need to do a real randomized placebo-controlled study. And in this case, there was a study done over a decade ago showing that people taking beta-carotene (an antioxidant) pills were more likely to die of lung cancer and other causes. So...yeah.

Another neat thing I learned was about the Cochrane Collaboration which focuses on evidence-based medicine and doing meta-studies of all the available literature.

I totally agree with the message here, but I think the book was a bit meandering which may be why I didn't enjoy it as much as I should have.

View all my reviews


Lying (Kindle single) review
Posted on 2011-09-28 13:01:00
Tags: reviews books
Words: 363

LyingLying by Sam Harris

My rating: 3 of 5 stars

Lying is a Kindle single whose thesis is simple: lying is (almost always) bad. In general I agree, but the book takes it to extremes where the argument is more interesting and harder to get behind:

- White lies (when getting a gift, for example). The example they give is for an ugly piece of clothing: you could say that you're touched the gifter thought of you, but "I don't think I can pull this off" or something. This sounds very hard to do in real life. The authors explain that you're eroding trust and integrity even if the gifter never discovers that you lied. Another example: if somebody asks "Do I look fat in this?" you can try to judge if they're actually asking or just seeking reassurance. A friend recently asked this and he responded "You're not fat, but you could probably stand to lose twenty-five pounds", which led to the friend going on a diet. This seems extremely situational and depends a lot on how close the friend is. They also give some horrific (to me) examples of lying to a family member about what their prognosis is. Don't do that!

- If someone asks for an opinion about a project they're working on, again it's best to be honest. If they've been working on a script and it's terrible, best to tell them early than have them waste more time on it. I agree with the principle here, but my conflict-avoiding nature would make it very hard to do this in practice.

- Lying to the enemy during wartime or as a spy is OK, but these are so far out of normal circumstances for most people that we shouldn't use them as the basis to draw conclusions for ourselves. (although it has the weird aside "that is, if we grant that espionage is necessary in today's world", which I think it pretty clearly is...)

Anyway, even though I don't agree with all of the conclusions, it was an interesting book and I'm going to try to be more honest in everyday life. We'll see how it goes!

View all my reviews


Exciting thing #1! and lots of links
Mood: nervous
Posted on 2011-09-27 11:24:00
Tags: links
Words: 203

As promised: exciting thing #1 is my first An Engineering Mind video! I thought it went decently, but watching myself on video is really hard...

Now, a bunch of links:
- A rational theory behind the Netflix/Qwikster split is that it helps Netflix in negotiations with content providers (a similar Wired article). This makes more sense than anything I've read so far, and the link to an explanation of affiliate fees was very helpful.

- An article showing that salt probably isn't linked to heart disease unless you're hypersensitive to it.

- A good description of why teenagers are so reckless - their brains are still forming in various ways. (thanks David!)

- The MOB makes the New York Times! (although the article is pretty short)

- An example of a particular highway in Massachusetts whose speed limit is artificially low so the police can write more tickets. I think that Texas has a law saying that towns can get no more than a fixed percentage of their budget from traffic tickets, and that's helped similar shenanigans from taking place down here. (thanks David!)

- Don't shine laser pointers at airplane/helicopter pilots - worth it for the video of a guy doing it being arrested.

- A good logic joke (thanks David!)


recruiting trip, excitement to come!
Mood: relaxed
Posted on 2011-09-25 21:12:00
Tags: travel work
Words: 274

I just got back from recruiting at Penn State, and boy are my arms tired! Wait...that's not right. Anyway, I'm exhausted, and hopefully recording my itinerary will make me think twice next time I volunteer for a trip:

- 2 PM: leave for airport. Realize flight is delayed and am probably going to miss connection in DC. Hang out at Austin airport for a good while.
- 11:30 PM: arrive in DC. Get hotel and taxi vouchers from United. Take taxi to hotel. Order 5:45 wakeup call.

- 5:45 AM: wake up, be unhappy, go to airport
- 9:30 AM: arrive in State College
- 11 AM-4 PM: career fair day #1 (interns). 5 hours standing and most of that talking.
- 6 PM: Eat dinner, look at giant stack of resumes, drink beer, chat about NI.

- 9 AM: Wake up with throat dry and feet sore. (but glad for the extra sleep)
- 11 AM-4 PM: career fair day #2 (full-time). 5 more hours of standing and talking.
- 4 PM-7 PM: finish info session presentation, look at some resumes, order pizza & drinks for info session.
- 7 PM-10 PM: hold highly engaging, but long, info session.
- 10 PM-12:30 AM: finish looking at resumes, call people to set up interviews.

- 7 AM: wake up with worse throat and feet. Curse the early hour.
- 8:30 AM-5 PM: survive interviews somehow
- etc.: drink beer, finish paperwork, collapse.


On the whole, I still enjoyed myself, and enjoy finding good candidates to work at NI. But, man, it's really tiring.


In unrelated news, I think two exciting things will happen this week, but don't want to jinx them. So, watch this space!


Happy DADT Repeal Day!
Mood: happy
Posted on 2011-09-20 11:20:00
Tags: gay
Words: 86

The repeal of Don't Ask Don't Tell goes into effect today. Hooray!

On that topic: The Last Closet is a good overview of where we are in terms of gay athletes in professional sports. There are still no openly gay people in the major pro sports leagues in the US, but it sounds like things are much friendlier than they used to be, and things are changing quickly. (and the implication is that there are people that are out to their team but not the world)

1 comment

jumping on the complaining bandwagon (re Netflix)
Mood: irritated
Posted on 2011-09-19 10:50:00
Tags: rant essay
Words: 243

I woke up this morning and got this email from Netflix. I rubbed my eyes and wondered if I had forgotten about April Fools Day or something.

But no - apparently Netflix is splitting the DVD by mail business into "Qwikster" (note that they don't own the twitter handle, although there is a "coming soon" page at, and the queues between the two services will be totally separate.

This is INSANE. What problem is this solving? The blog post goes on about how businesses are unlikely to move into new markets successfully, and splitting into two companies will help this. But Reed Hastings, the author of the blog post, is the flippin' CEO of Netflix! Is it really so impossible that he couldn't make it happen?

And besides, people were complaining because the price went up, not because you had to pay "extra" for streaming - if they had managed to keep the total price the same, I doubt many people would have complained. I understand that it's harder for them to get good deals on streaming and such, so the price increase didn't bother me that much.

But now I have to manage two different services, and it will cost the same as the new plan that people complained about, and (because I don't care enough to rate movies on both services) my ratings will suffer, and I'll have to check two different places to see if a movie's available. WHO WANTS THIS??


a few nifty links
Mood: okay
Posted on 2011-09-16 14:22:00
Tags: links
Words: 155

- Meet James Wilkinson! This Commanding General of the US Army has the following to his credit:
- Allegedly was part of a conspiracy to depose George Washington as Commander in Chief
- Conspired with Spain for a brief while
- Allegedly plotted with Aaron Burr to start an independent nation in the west, who he later betrayed
- Blundered away the Battle of Crysler's Farm (which led to a court-martial, although he was cleared of all charges)
- Bravely ran away at the Battle of Lacolle Mills

- In the recent Republican presidential debates, the Tea Party audience has cheered Rick Perry's 234 executions as governor of Texas and a moderator's suggestion of letting a sick person with no insurance die.

- Why I Try Not To Do Things For Others, But Instead, Do Them For Myself - an interesting philosophy. I think it's good to do things for others sometimes, but doing household chores "for someone else" can definitely lead to resentment.


usual friday links
Mood: busy
Posted on 2011-09-09 13:04:00
Tags: links
Words: 111

- Guys, we did it! Texas had the hottest June-August of any state, ever. So...can we get some rain now, please?

- Americans Should Be Able to Sell Stuff Without a Permit - well-said. (thanks, djedi!)

- Views Differ on Shape of Earth, Climate Edition - sigh. 98% of climate scientists think that manmade global warming is happening, but most Americans think that the number is closer to 50%. This is the sign of a successful disinformation campaign.

- Long article on why Finland's schools are successful. Their schools sound almost KIPP-ish...

- Did the CIA Do Enough to Protect Bin Laden's Hunter? - these days it's harder and harder to protect identities.

- The MOB mocks Rick Perry


Software development tools I'm grateful for
Mood: grateful
Posted on 2011-09-06 16:42:00
Tags: essay programming
Words: 577

This morning I tracked down a bug with a data breakpoint. Turns out, it was a very stupid bug that I introduced myself last week, so it was a bit like cutting a piece of paper with a chainsaw. But it got me to thinking - I'm really glad we have a full shed of chainsaws when we need them! Here are the tools I use when developing software that I'm most grateful for, with brief descriptions:

- Breakpoints: OK, this is pretty basic, but many of the later things are built on this. Being able to say "stop on this line of code and let me see the values of stuff", as well as single-stepping through code, is good enough to track down most of the easy bugs I come across.

- Conditional breakpoints: Like breakpoints, but you can set a condition that gets evaluated each time and only stops if it's true. Very useful if you have to set a breakpoint in high-traffic areas of code, but you only care about a particular VI that's being processed.

- Data breakpoints: Like breakpoints but more awesomer! Seriously: you give it an address and the program will stop immediately when that value is changed. Very useful for tracking down memory corruptions, or just "what stupid code is stomping on my variable?" type situations. Slows down execution a bit, but it's irreplaceable when you need it.

- Tracepoints: Something I only learned about last month, but in Visual Studio you can configure a breakpoint to output something to the debug window instead of actually stopping. This is invaluable in tracking down weird race conditions and tricky timing problems where actually breaking into the debugger will stop it from happening.

- Source control: Pretty fundamental, but being able to see when a line of code was last changed is occasionally very helpful. (plus, of course, being able to undo whole checkins at once, etc., etc.)

- Remote debugging: This still seems magical to me: you can copy over a small program to any machine, then from my computer I can attach to it and debug it as if it was running on my machine! Great for when a bug requires a bunch of other stuff installed to happen. Made even better by:

- Symbol server/pdb files: We archive all of our official build symbols. So, that means, as long as a remote computer is using an official version of LabVIEW, I can debug it and get symbols to see what function we're broken into, etc. Not always perfect (it can be annoying if your source isn't the same as when the executable was built), but makes my life much much easier.

- VMWare images: a great alternative to needing a physical machine to reproduce a problem on, in case you need a bunch of extra stuff installed. Even better in that it makes possible:

- Replay debugging: This is seriously amazeballs. On a VMWare image, you can try to reproduce a problem. When you succeed, you've basically recorded everything that's happened up to that point, and so you can essentially step back in time to see what went wrong. Think Prince of Persia, but without needing that pesky sand. (also: apparently it makes things kinda slow) I have not had the opportunity to use replay debugging, but I hope I do some day because: wow!

Being grateful for things makes you happy. I'm pretty happy now. What are you grateful for? (or, what did I miss in my list?)


sort of links, without many actual links
Mood: busy
Posted on 2011-09-02 15:07:00
Tags: projects programming links
Words: 477

I watched two excellent movies this week: The Hunt for Red October, and Clue. Both included Tim Curry. Make of that what you will. (I forgot he was in Red October!)

I also went to a podiatrist and got some orthotics which I've probably needed for the last 10 years or so. (thanks Dr. Newman!) Apparently my feet are as flat as a pancake. It amuses me when I stand barefoot in front of podiatrists and they flinch...

An iOS Developer Takes on Android - I haven't developed in iOS, but I am also new to Android development and sympathize sooo hard! Especially:

"You’re going to just hate Eclipse. You’re going to hate it with the heat of a thousand suns. It’s going to feel slow and bloated and it won’t taste like real food."
It takes the Android Emulator ~2 minutes to boot up on my perfectly-modern machine. But what really hurts is the edit/debug cycle. Every time I change a bit of Java and need to rerun the app, it takes about 30 seconds to redeploy and start up in the Emulator. Compare that to 5 seconds on the iOS Simulator. It may not sound like much but remember you’ll be doing this hundreds of times throughout your day.

Fortunately, it turns out to be much quicker to deploy and boot up your app on a physical device over USB.
But the reality is, it’s not HTML and CSS and so it’s another thick layer of stuff that you have to learn and understand and fight with when things don’t work like you expect.
So here’s the catch with the wonderful flexible layout system in Android: You must be very careful. If you animate certain kinds of properties, you can easily force the CPU to do all that fancy, expensive layout on each animation frame. And the CPU is very busy right now parsing some JSON from a web API or something, OK?
Anyway, I'm considering getting a real version of Eclipse and just installing the standard Android extensions. And maybe buying a Nexus S to get a better feel for the phone (and make debugging easier), but I haven't decided whether I'm that dedicated to finishing the FlightPredictor port yet.

Samsung basically says they're not going to use webOS (although they left the door a tiny bit open, I guess) - after HTC said a similar thing, this is very very bad news. Maybe someone will license webOS but the future is looking pretty grim. More likely (it seems to me) is that someone will buy the patents off of HP and call it a day. And then I will be sad.

Cool stop-motion ad, which made me eat at the place that made the ad. (stating obliquely so as not to "spoil" much as you can spoil an ad, anyway. Nevermind.)

1 comment

Farewell review
Mood: hungry
Posted on 2011-09-01 11:48:00
Tags: reviews books
Words: 150

FarewellFarewell by Sergei Kostin

My rating: 2 of 5 stars

This is a book about the Farewell Dossier. Unfortunately, the part that I was most interested in was how we planted fake designs for technology that the Russians were trying to steal, including computer programs with hidden viruses that culminated in a giant explosion in a gas pipeline.

The book is all about Vladimir Vetrov, the KGB defector who provided the French a giant list of KGB spies as well as all the technology they were trying to steal and from where. It goes deeply into his life, eventual motivations for betraying Russia (mostly anger at the KGB over corruption and not getting promoted), and how he conducted his spying and was eventually caught.

The book was kinda long and vaguely interesting, but ultimately disappointing. If you're interested in Vetrov's life, though, I'd definitely recommend it.

View all my reviews


Ghost in the Wires review
Mood: hungry
Posted on 2011-09-01 11:47:00
Tags: reviews books
Words: 147

Ghost in the Wires: My Adventures as the World's Most Wanted HackerGhost in the Wires: My Adventures as the World's Most Wanted Hacker by Kevin D. Mitnick

My rating: 4 of 5 stars

This book is Kevin Mitnick telling his story. Mitnick is probably the world's most infamous hacker, or at least he was until he was caught, served jail time, and reformed.

He's an expert on social engineering, and he talks at length about the techniques he'd use. Reading the book, you can't help but sympathize with his victims, and it's easy to see how a friendly request for information for someone who sounds like a fellow employee can both sound entirely reasonable, but lead to a security breakdown.

The book was entertaining but a bit repetitive. Also, he only alludes to this, but it's pretty clear he was addicting to hacking and having power, even if he never did any real damage.

View all my reviews


following through on a promise: links!
Mood: feisty
Posted on 2011-08-31 14:00:00
Tags: links
Words: 199

- Why Summer Vacations (and the Internet) Make You More Productive - especially, I'm guessing, for creative-type jobs.

- Do property rights increase freedom? (Japan edition) - interesting story of a "libertarian's paradise" in Tokyo, where taxes are (presumably?) lower but there are few free roads, parks, and benches. While this might sound more fair in theory, having to constantly decide whether it's worth buying a coffee you don't really want to sit down is exhausting. This reminds me a lot of the ice cream book and how making choices is mentally taxing.

- Van Gogh's Paintings Get Tilt-Shifted - a very cool way of changing the focus of paintings! (b/w/o @hujhax)

- The Future of webOS: What it Could Have Been... - juicy details about, among other things, slab-style phones that were cancelled because they took too long.

- Why most people don't finish video games - short version: as gamers get older, they have less time. So publishers are shrinking the size of single-player campaigns, which is fine with me. If I get as much enjoyment out of a 10 hour game than a 20 hour one, hooray!

- A Super Mario Bros version of Portal?! - it's Mario with a portal gun! And it's going to be playable!


What do I want out of app development?
Mood: pensive
Posted on 2011-08-30 23:10:00
Tags: essay palmpre projects
Words: 443

As I mentioned happily, FlightPredictor HD was chosen in the latest six-pack of free webOS apps. So when I looked at the sales reports for that day, the results were...impressive. I feel weird throwing out numbers, but the total I got from that promo is more than I've earned, total, since I started webOS app development in 2009. It's nowhere near life-changing money but it's more than I expected, especially since I didn't have an inkling on Sunday that it would be featured at all!

Anyway, it's a good opportunity to step back a little and remind myself why I'm doing app development and what my goals are.
- Money: Well, the money's definitely nice. I have no illusions about making enough to replace my day job - even on iOS it's tough to do, and requires a lot of luck (as I understand it). I'm pretty happy as long as I'm making enough to subsidize purchases of webOS hardware, accessories, and the occasional trip to meet webOS folks and learn stuff. With this latest boost, I'm set on that front for a good while.
- Satisfaction: I still get a jolt when I think about people deciding to spend their own money on one of my apps...especially if they like it afterwards! 5 star app reviews and especially emails are very very fulfilling to me. Obviously this promo didn't do a whole lot to further this since the purchases were on HP's dime, but I did get a few good reviews and nice emails.
- Craftsmanship: I like creating things that are high-quality, and that I enjoy using myself. Almost all of my apps fall into this category for me, and most of them were created to "scratch my own itch".
- Programming: Closely related: I like programming, as you can see by the list of random stuff I've done. Some days the high I get from creating something and turning an idea into reality is almost intoxicating.

I like my day job a lot, and I think writing apps full-time would be exciting at first, but after a while I'd be about as happy as I am now - certainly the novelty would wear off! (and not having a fixed salary would stress me out, I'd imagine)

Anyway, that's been on my mind, and I find that writing up my thoughts usually helps organize and clarify them. So...there you go!

(programming note: I actually have some links queued up, but it felt like that was all I posted to LJ, so I wanted to back off a bit. And then this webOS thing blew up and now _that's_ all I post about. So...links tomorrow, unless I forget :-) )


FlightPredictor HD in the latest webOS app pack!
Mood: excited
Posted on 2011-08-29 13:52:00
Tags: palm palmpre projects
Words: 51

There's a new pack of free webOS apps, and I was pleasantly elated to find that FlightPredictor HD is one of them!

I somewhat jokingly suggested it after the last pack of free apps, but I had no idea they'd consider it and it would make the cut! happy happy happy


Developing for webOS versus Android
Mood: determined
Posted on 2011-08-29 13:20:00
Tags: essay palmpre projects programming android
Words: 544

Over the weekend, I spent some time working on porting LJ for WebOS to Enyo, and after I got stuck there, I worked on porting FlightPredictor to Android. Since I was developing in both environments, I thought I'd give some more thoughts on Android (here's part 1):

I'm definitely learning more as I go, but there are still some areas (well, most areas) that developing for webOS is way easier than Android. I admit I'm biased in the matter since I've done a ton of webOS development, but sheesh:
- The Eclipse I'm using is decent in some ways and really frustrating in others. (I'm using MOTODEV Studio, because...well, I had an email from them and I just picked something) Keep in mind I'm used to developing in a text editor so the bar's pretty low here. It took me a while to realize that when you start debugging something you then have to switch to the "Debug" perspective to actually see what's going on. And 90% of the time when the app crashes, the only info I can see is that a RuntimeException was thrown, somewhere. (even when it's something easy, like a NullPointerException in my code!) Worse is when none of my code is on the call stack and I don't have the Android source code, so it gives me very little idea of where to start looking.

Honestly, the Intellisense is nice, but it just doesn't feel quite right, and often gets in my way. Hopefully as I get used to it I'll stop fighting with it so much. And the emulator is slow - it takes 15-20 seconds to get from pressing "Debug" to the app actually starting, and given the limited information I get back from the debugger it's almost not worth doing. (although if I know where the problem is, I can set breakpoints, etc., which is nice)

- To include a big list of structured data (i.e. a list of airlines), for webOS I just have to include a simple .js file assigning a big JSON array to a variable. For Android I have to generate an XML file (or a JSON file, I guess? Didn't try that...), and write initialization code to parse the XML file and store it.

- In webOS, doing an asynchronous web request is drop-dead simple - just use an XmlHttpRequest! Yay! In Android you have to spin up a new thread and post messages back and forth and such. Just reading that section of the book I'm borrowing depressed me, and I'm sure when I get to that it will suck.

- I wanted to have a Spinner (a list selector) that displayed a string and would return the associated value if it was selected. You know, like EVERY LIST SELECTOR EVER. Except, no - you can easily display a Spinner with a list of strings, but if you want to do something crazy like associate a value with it, you have to implement some interface and things generally get more complicated. What's so hard about a freaking templatized value type?? This makes me angry.

Anyway, nothing so terrible that I'm giving up, but a lot of annoyances and I really have to be in a tolerant frame of mind or I will start throwing things and cursing.


401's, why have you forsaken me? (adventures in #webOS)
Mood: frustrated
Posted on 2011-08-28 12:33:00
Tags: essay palmpre programming
Words: 671

TL;DR - 401 errors are important! Handle them correctly!

I've started work on porting LJ for WebOS (LiveJournal client) to Enyo and the TouchPad...and it is not going well.

A little background: An XmlHttpRequest is a neat Javascript feature that let's you fetch web pages or other URLs in the background without requiring a page reload. (it's the "X" in "AJAX") Key to the whole app working is being able to access protected posts, and to do this, I have to use an XmlHttpRequest to fetch a post's webpage while adding "auth=digest" to it, saying I want to see the page as a logged-in user sees it. The dance continues with LJ returning a 401 Unauthorized HTTP error, but this has the necessary information to do another request with the proper authentication. (see the Digest authentication section of RFC 2617)

This is all a bit clumsy, but worked great in the existing LJ for WebOS. Last night I got to the point where I was actually trying to get posts in the new version. First up was developing in Chrome - one of the nicest part of the new webOS framework is that it's easy to test most things in Chrome instead of having to fire up the emulator and install it, etc. I noticed that when I tried this code for the first time, I got a bunch of popups in the browser asking for a username and password for various LJ sites. If I hit Cancel on all of them, things seemed to work - the code then saw the 401 error and proceeded to authenticate normally.

This seemed odd, to say the least, so I did a quick search which led me to this StackOverflow page (yay StackOverflow!), which says that's it's a known issue in Chrome and the only way to work around it doesn't work in my case (because I need to know what the headers on the 401 error are).

Well, that's pretty annoying, and seems clearly wrong to me - the user didn't go to this page, so why is she being asked for a username/password? I could see that you might want the option to do this in some cases, but the default should be off.

So I was already a bit irritated and, after a little bit more work, decided to try it in the webOS TouchPad emulator. I watched the logs scroll by as it got to the point that it did the first request for the post pages and then...nothing. Only when I quit the app by throwing the card away did I get some not-really-sensical error indications in the log.

I rebooted the emulator (as it seems to have a problem once you do too many HTTP requests or something), and the same thing happened. I was a bit at a loss - since I wasn't getting any of my log messages I couldn't see at all what was going on. Finally I fired up Wireshark to see the HTTP requests that the emulator was making to see if there was a clue there.

Much to my surprise, I saw it requesting the same pages over and over again! It would do a request, get back a 401 Unauthorized response, and then do a request again, seemingly trying to authenticate with an empty username and who knows what password.

I looked through my code and tried a few things to make sure that I wasn't causing this, but after some more searching I found a private thread confirming this behavior and that it was a bug.

*sigh* I can't make any more progress while this bug exists, and who knows when (or if?) it will be fixed in the OS. So, if anyone asks, this is why LJ for WebOS isn't on the TouchPad, and I guess I'll move on to other projects for now...

(this probably also mean that running the phone-sized version on the TouchPad won't work either, so...sorry about that. I don't have the heart to try it out right now.)


Marriage Map: cartogram, more crazy reviews
Mood: cheerful
Posted on 2011-08-27 13:54:00
Tags: palmpre projects
Words: 207

I added a new feature to the same-sex marriage map (and corresponding webOS version) - a cartogram! It weights each state by population (roughly) so you have a better view as to what percentage of the population lives under what laws. (and it's easier to see what a big deal New York is!)

Since the last crazy webOS app review, I've gotten a few more! The first one is responding to that last reviewer:

To (the negative reviewer):I pray that you die in a fiery car crash. JUST KIDDING! I don't pray. But I'm hoping for that crash. :-)
and today I woke up to a new one star review:
Men who say they are gay are basically telling you they like another man's pen1s up their butt... That's freaking disgusting! Y wud I want to know tht?! How wud you like it if i came up to you and told you I liked to swallow d1cks? Don't you all get it? May the lord Jesus Christ have mercy on these wretched sinners, or may he smite them for their Satanous ways... I love God & he protects the holy, I am at peace.

Sigh. I think my next app is going to be about puppies; everyone likes puppies, right?


choosing a phone
Mood: conflicted
Posted on 2011-08-25 14:53:00
Tags: essay palmpre
Words: 598

(an aside: my apologies to people reading this who couldn't care less about webOS, etc. The last week has been somewhat traumatic, but my obsession is waning and I'm about ready to move on...)

Well, I've got at least a flavor of my three choices for my next phone's OS. So, let's break this down list-style!

Availability: bad Were I in a perfect world and I could get my hands on a US Pre3, I would do that. However, that doesn't seem to be an option unless HP has a developer program for them (hmm, this hadn't occurred to me...need to check into). One option is to buy a Pre3 from Europe and use it on AT&T, but according to Engadget I will get very little 3G coverage due to frequency differences. Another option is to use the developer Pre 2 I have with AT&T (or get one on Verizon), but the phone isn't that exciting and I'm not sure the status on OS updates, etc.

Phone quality: very good if I can get a Pre3, OK with a Pre 2.

Development environment: very good At least, once the phones get Enyo. Which I still think is going to happen but is kinda risky to plan around.

App catalog opportunities: good Obviously I'm established here, and I have ideas for more apps.

Availability: very good Everyone and their dog has Android phones, including Sprint.

Phone quality: OK The UI is acceptable, but not very exciting to me. Plus there's the fact that phones seem to get OS updates in the "late to never" timeframe.

Development environment: OK Eclipse is fine enough, but I got pretty frustrated doing simple things. I'm borrowing a book which I hope will help, or at least make it clear if things really are that hard...

App catalog opportunities: OK Android is probably the second-biggest app catalog, but there doesn't seem to be a FlightCaster app, which is surprising to say the least. Anecdotally, I've heard that Android users are less likely to pay for apps, but I don't know if that's true.

Windows Phone
Availability: good There's a good selection of phones, although I'd likely wait until the Mango OS update is out (next weekish?) and see if Sprint has any new good phones.

Phone quality: good I really like the Metro interface (it was inspired by airport/subway could I not like it? :-) ), and the live tiles stuff is kinda neat. I am kinda surprised that copy-paste isn't available yet (coming in Mango) and background tasks (coming in Mango) have pretty draconian limitations on memory usage, etc.

Development environment: good Visual Studio, as always, is a nice environment to work in, and I'm already familiar with the basics of C# and Silverlight. Not only did I get set up and get a list working in one night, I also finished a port of PasswordHash. (not pretty, but it works) It is annoying that I'd have to use my Windows laptop to do it, though.

App Catalog opportunities: OK Irritatingly, there's already a FlightCaster client for Windows Phone, although I think the additions I've made plus updating in the background would make my app better. But that is a bit of a downer.


So I haven't made my decision yet, but I'm currently leaning towards Windows Phone. As I've stated before, I still plan to work on webOS apps as I wait and see what lies ahead for it. (it doesn't hurt that I'm still making good money off of webOS, although the firesale/HP promo halo is starting to fade away)

1 comment

webOS app sales: after the TouchPad firesale
Mood: busy
Posted on 2011-08-23 13:15:00
Tags: palm essay palmpre projects
Words: 137

Well, the last time I did one of these they announced no more webOS hardware from HP, so maybe if I do another one something really really good will happen?

Anyway, the fire sale basically started on Friday. Here are daily numbers for my most popular apps since then - two free, two paid:

FlightPredictor HD827192341
Simple Alarms615181228
Marriage Map162532162179

So things are still going strong! Interestingly, FlightPredictor HD sales are still driven strongly by HP's promo codes (36 of the 41 on Mon), while Simple Alarms is the opposite (only 6 of the 28 on Mon). So I'm curious to see if FlightPredictor HD sales drop off faster than Simple Alarms...


trying to learn Android and missing webOS
Mood: angry
Posted on 2011-08-22 21:53:00
Tags: rant essay programming android
Words: 596

So, here's my plan: try to port FlightPredictor to Android and Windows Phone 7. Hopefully this will lead me toward which platform I'd rather own. Note: I am definitely not abandoning webOS, but I need a new phone and since the Pre3 is only being released in Europe and the European Pre3's will work on AT&T or T-Mobile but won't get 3G service, that's not gonna work.

So! First up is Android, mostly because I can develop for it on Linux. But it's not off to a good start. I'm reading through the mounds of documentation and not getting much of anywhere.

The very first screen in FlightPredictor shows a list of flights with their status and such. So I need to define a list in the UI and each list item I want to display certain properties of the Flight object.

In Enyo (the newest webOS framework), this is pretty easy. My list item code looks like:

{kind: 'HFlexBox', name: 'downTarget', components: [
{kind: 'VFlexBox', components: [
{kind: 'HFlexBox', className: 'flightsList info', components: [
{name: 'flightAirlineNameAndNum', allowHtml: true, content: ''},
{name: 'flightSummary', allowHtml: true, className: 'summary', content: ''},
{kind: 'HFlexBox', name: 'cities', className: 'flightsList cities', components: [
{name: 'flightOriginCity', allowHtml: true, content: ''},
{allowHtml: true, content: ' to '},
{name: 'flightDestinationCity', allowHtml: true, content: ''},
{kind: 'HFlexBox', name: 'times', className: 'flightsList cities', components: [
{name: 'departureTime', allowHtml: true, content: ''},
{allowHtml: true, content: ' - '},
{name: 'arrivalTime', allowHtml: true, content: ''},
and so on, and the code to display it looks something like:
    this.$.flightAirlineNameAndNum.setContent( + ' ' + flight.num + ' ');
if (flight.category == FlightPredictor.FlightCategories.Current) {
this.$.flightSummary.setClassName('summary ' + flight.summaryClass);
if (this.showCities && flight.category == FlightPredictor.FlightCategories.Current) {
} else {
and so forth.

So, I thought a good first step for tonight would be getting something like this to work in Android.

First of all, the tutorial for ListView seems to assume that you want the list to take up the whole screen. (I want buttons at the bottom for adding a new flight, etc.) Digging around a little more, I found a page that says how to make the list coexist with other controls, and it says to do so I just make a ListView with id "@android:id/list". This is already a bad sign: what if I (gasp!) want two lists in a screen?

But, OK, I'll use your magic id. Some ids look like "@android:id/list" and the rest look like "@+id/flightsHeader" when I'm defining them and "@id/flightsHeader" when I'm referring to them. (why? I have no idea)

So then I have to define my Flight class, with annoying getters and setters that aren't necessary in JavaScript. After another hour of searching and getting frustrated, do I use the ArrayAdapter or a SimpleAdapter? (I'm just trying to define my flights in code - storing them in a database or whatever is for another day) ArrayAdapter lets me pass in an array of them, which I need, but it doesn't let me map the object fields to id's in the list template like SimpleAdapter does. But SimpleAdapter seems to only work on XML objects, or something?

Lists are important. I'm frustrated that the ListView tutorial is so drop-dead simple that it only touches the very simplest use case for a list (yay, a list of strings!) It looks like what I want is something like this list example except
- that's an awful lot of code
- it still doesn't show me how to set values into things in a resource file, which is supposed to be how all non-trivial views are done! Arrrrrrrrgh.

Anyway. Not a productive night. I want to stick it out and accomplish something before giving up, because that seems like the right thing to do, right?


59 Seconds review
Mood: relaxed
Posted on 2011-08-19 23:30:00
Tags: reviews books
Words: 427

59 Seconds: Think a Little, Change a Lot59 Seconds: Think a Little, Change a Lot by Richard Wiseman

My rating: 5 of 5 stars

59 Seconds is a self-help book with a twist - it talks about being happy, etc. but it does so based on a bunch of studies, kinda like Poor Economics. (liking these kinds of books is like liking science!) It covers a lot of different areas - here are the most interesting things I found:

- After experiencing a traumatic event, talking about it doesn't generally help, but writing about it does. (possibly because writing lets you organize your thoughts and create a narrative)

- As an exercise, writing down five things a day you're grateful for makes you a happier, more optimistic, and healthier person.

- Not exactly new news, but buying experiences makes you happier than buying things, possibly because looking back you tend to remember them fondly, as opposed to things which you get used to and decay over time.

- In children, low self-esteem tends to cause materialism.

- If you're presenting good news and bad news (or, in the case of lawyers, a strong argument and a weak argument), it's better to present the bad news before the good news.

- Favors are most effective (in affecting moods and establishing friendships) when they're small but thoughtful. If the favor is too big, it can create uncomfortable pressure to reciprocate.

- Convincing yourself to work on something for "just a few minutes" is a good technique for beating procrastination.

- Eating half a meal at normal speed and then slowing down to half speed can dramatically reduce your appetite, crazily enough!

- Having shrubs and trees around seems to reduce crime in an area. (yes, the study was properly controlled)

- Going on a date? Choose an activity that's exciting and causes your date's heart rate to rise, and he/she'll think it's because he/she likes you. (I believe this falls under the "slightly evil" category of tips)

- To make a complicated choice, it's best to think about it for a while and then switch to another mentally-intensive activity, like working on anagrams or something. Apparently this is a good way to get your subconscious to do your work for you!

- Praise children for trying hard, not for being smart, lest they get demotivated whenever they run into something tough.

- Putting a mirror in front of someone when presenting him/her with different food choices results in a 32% reduction in unhealthy food consumption.

Anyway, the book was good and dense, but I think I'm ready to move on from the self-help genre for a while.

View all my reviews


webOS: the day after - on to anger!
Mood: angry
Posted on 2011-08-19 09:55:00
Tags: palm essay palmpre
Words: 248

I think I'm working my way through the five stages of grief here. Today I'm angry at HP for repeatedly saying that it was a marathon not a sprint, etc., and then deciding to kill the TouchPad less than 50 days after it launched. And the Pre3 launched like two days ago in Europe!

(to be clear, no anger at Palm GBU employees - they've been great and it sounds like everyone was blindsided yesterday...and obviously there's a lot of uncertainty for them. Good luck, guys and gals!)

My plans for now are this: keep working on apps, because it sounds like they really do want to license webOS even though the rational thing to do would be to line up a suitor before announcing they're shutting down webOS hardware. This is not rocket science. I'm guessing Apotheker wanted to announce the shutdown during the conference call to convince shareholders things will get better, but man, talk about the worst thing possible for the platform.

So I'll keep at it, with a bit less fervor than before. If I look at mobile OS's that I would want to develop for and can on a Linux machine, that narrows it down to...Android and QNX as far as I can tell. QNX seems to have very little future, and Android doesn't really excite me that much. So, who knows!

I'm not sure what to do about my next phone, given that I don't know what's going to happen with the Pre3.


webOS woes
Mood: sad
Posted on 2011-08-18 17:03:00
Tags: palm essay palmpre
Words: 124

So! HP just announced they're not making any more webOS devices. Maybe webOS will be licensed, maybe not. Signs from inside indicate webOS isn't dead and might be licensed out to other hardware manufacturers, but clearly no such deal is in place yet.

I am: sad (and not sure what to get for my next phone - had my Sprint Pre for over two years and it's not gonna last too much longer), but hopeful that webOS isn't going away for good. I'll probably take a few days off, try not to read too much news, and come back and decide how much effort to spend developing apps. I still enjoy writing apps, and enjoy using them myself, so I'll keep doing that at least...


webOS app sales: how are my apps doing?
Mood: cheerful
Posted on 2011-08-17 20:30:00
Tags: palm essay palmpre projects
Words: 541

After seeing this post about webOS app sales on PreCentral, I thought it would be a good time to look back at my apps' sales. And in this post, you get real numbers, because...why not? :-)

Summary: App sales since the TouchPad release have been impressive. My numbers are a little weird because my paid apps have separate versions for phones (i.e. Mojo) and the TouchPad (i.e. Enyo).

I have four paid apps for the TouchPad, and here are their approximate sales (by number - all apps are 99 cents except FlightPredictor HD, which is $1.99) in July and August:

JulyAugust (as of today)
FlightPredictor HD155180
Simple Alarms165130
We the People HD8565
Private Browser HD5535

A few interesting things:So obviously I find it impossible to say how well the TouchPad is selling, but people are definitely buying apps (myself included!), and for that I am thankful. Here's to webOS's continued success!


Go earlier/later

This backup was done by LJBackup.