August 2009

Health Care

During my trip to Toronto this summer I was struck by the nature of the health care debate there. Well, there were two debates – the one that a cab driver wanted to stage with me comparing the Canadian system to the US system, and the one I read about in their newspapers. In the latter, health care news centered around issues like citizens who wanted to opt for private insurance and doctors who wanted to conduct more screening not approved for coverage by the government. Conspicuously absent was any angst about anyone not receiving any coverage at all or anyone not receiving routine or preventative care. This is markedly different from the debate about the US system. Or at least, it should be. I used to watch discussions on health care on CNBC and they were pretty aggravating. One group discussion included a bunch of big-time CEO’s and they all just talked about free market and choice. When Starbucks Howard Schultz (who grew up in a housing project) expressed the need for making sure everyone has health care, the others just gave him a blank look. During the CNBC special on Walmart, the interviewer grilled Lee Scott on how Walmart ruthlessly drives supplier prices down, but didn’t ask why Walmart couldn’t do that with potential employee health benefit providers (at the time, Walmart expected employees to just go out and get it themselves, citing free market and choice, again)

For people who just take health care for granted, e.g. the wealthy, those in government or academic or otherwise secure employment with established health care benefits, it’s hard to imagine not having health insurance (I certainly never worried about it while I was working for big companies). But it is an employer-based health insurance system, after all, so draw the logical conclusion. Just try quitting your job (or losing it involuntarily). When I went freelance, it turned out my employer had never offered COBRA coverage to exiting employees before (not the first such employer I encountered, either). Fortunately, I had no preexisting condition, so I ended up picking the lowest-cost, high deductible insurance I could find (which by the way was the same provider as my previous employer, so I figured there’d be some continuity and familiarity with my history), never exceeded the deductible, and yet my premiums quadrupled in five years. And I’m single and healthy!

But availability of coverage is only part of the story. Even if you have coverage, you can never be really sure you’re covered. Again, my own story – my coverage was abruptly terminated when my provider said I hadn’t paid my premium, even though my check was cashed. It took a few months, an email stating I was going to the police to find out who cashed my check, and a letter to the California consumer insurance agency to get an “apology” that effectively put the blame on me.

Here’s an OC Register story that recounts how a woman lost her COBRA coverage, retroactively, because her first premium check was off by six cents. Or rather, it was correct, but the “computer” read it incorrectly. So on the next bill they showed she was behind by six cents, she paid it, and then they cancelled her coverage. The story didn’t go much further into the issue, but it seems to me there are some obvious questions – why didn’t they contact her immediately if it looked like her coverage was in jeopardy, instead of billing her again and then cancelling it. You’d think a company wouldn’t want to arbitrarily lose customers, but her family was incurring signficant medical bills at the time, so you’ve got to wonder if maybe once the claim forms were submitted they automatically look for some way to dump her (I recall there were some recent California state lawsuits against insurers who did just that). And the story doesn’t say anything about whether they refunded the COBRA premiums when they retroactivally cancelled her policy. If they’re going to say you were never really covered, they should return the money. After all, you’re gonna need it.

Consumer
Politics

Comments Off

Permalink

8-bit Trip

I recommend turning down the sound before playing this video, but aside from that, it’s amazing.

Games/Graphics
YouTube

Comments Off

Permalink

iPhone Aquariums

Someone pointed out this Koi Pond app to me. It’s pretty nice – tapping the screen gets you a nice ripple effect and chases away the fish. And it’s neat to have an app that you can hold in any orientation (look Ma, no HUD!)

IMG_0163

I decided to check for fish-screensaverish apps based on the Unity engine. I think this was the first one, Artifishal Life (points for the name!)

IMG_0161

And a more recent, more deluxe one, 3D Fish Tank (and it’s apparently more resource-intensive – I had to reboot my iPod touch to get this one started)

IMG_0162

Apple
Games/Graphics

Comments Off

Permalink

Awesomium

Here’s an intriguing in-game web browser from Prince of Code:

Games/Graphics
Programming

Comments Off

Permalink

Resident Evil on the iPhone

Resident Evil. Love the game, hate the controls. Who would have thought that the best RE control would be on the iPhone?

IMG_0114

Apple
Games/Graphics

Comments Off

Permalink

The Case for Collada

I’ve heard a lot of programmers complain about Collada. Generally, the complaints are the same I hear of XML – awkward syntax, too verbose, other formats are good enough. I have to disagree, at least to the last point. Until XML appeared on the seen (and for some time after), I worked on a lot of projects that had a file format without a precise specification, unless you count the one reader and writer that existed. That’s what happens when someone who hasn’t taken a compiler class (and I have to admit that somehow I got through my undergrad years without one) writes a spec. Little details like what whitespace is allowed (if you think that’s obvious, look at Make and Python), where you can insert linebreaks (and is that a Unix, Mac or Windows linebreak?), and can these sections be in a different order are typically left to the imagination, or the first implementation that breaks.

A format called Game Exchange, developed by Nichimen Graphics back in the mid-nineties, had a defined grammar and even generated the parser using the grammar (with a commercial tool in the vein of lex/yacc). (It probably only had a grammar because it was left in the hands of a summer intern, Aaron Kennington, who working toward his CS degree. He soon joined the company full time). I always felt uncomfortable with Game Exchange since it wasn’t clear to me whether it was an SDK or a file format. I think the official line was that it was both, but I felt somehow the two were not compatible, and we were in the business of trying to sell the SDK. There were some customers who bought the SDK to write their own converters and some who just wanted to support or work with the file format. Among the latter, Maya had some support for a while, Okino bought the SDK to include it in their converter package Polytrans, and HyperEntertainment uused Game Exchange as a format for their HyperBowl game because they used Nichimen content creation software. But the HyperBowl folks elected to write a custom Game Exchange reader instead of buying the SDK, and of course, that broke as soon as Game Exchange was upgraded and the upgrade came with a new file format, which I think vindicated my concerns about it’s split personality (and fixing the reader was my first task on the project).

I revisited Game Exchange when I saw that the home version of HyperBowl was no longer supported after the advent of Windows Vista and I asked my old bosses at HyperEntertainment for a license to port it to the Unity engine so I could run it on the latest platforms and with the latest graphics technology. To my surprise, they assented with very reasonable terms (which shows you the importance of not burning bridges), and started on Plan A, which consisted of using Polytrans to convert the assets from Game Exchange to something that Unity could accept, e.g. OBJ files. This failed miserably – Polytrans would hang during some of the Game Exchange import and Unity would hang on all of the OBJ import. An email to Polytrans support elicited the assertions that the Game Exchange libraries were at fault and the OBJ files were the best in existence, so Unity was also at fault, and I really should have talked to the guy about my needs before buying Polytrans.

He was right about the OBJ files – I surmised that Unity’s preferred import format was FBX and it was using the the OBJ importer that is included with the FBX SDK. And indeed there was an OBJ reader bug reported on the FBX forum and those OBJ files also hung standalone the FBX converter from Autodesk. The Polytrans guy also heaped scorn on FBX (“wouldn’t touch it with a ten foot pole”) and stated his preference for Collada. Both FBX and Collada were add-ons to Polytrans but that didn’t solve the problem of reading the Game Exchange files, so I decided time to move on to Plan B – write my own FBX exporter in the original game code (which shows the importance of obtaining all the original assets, including the source code).

But once I started writing the FBX exporter, I understood the ten-foot-pole comment. For starters, FBX, which was created by MotionBuilder and then acquired by Autodesk, encompassed my fundamental objection to Game Exchange, but with a vengeance. Although FBX is the interchange format among Autodesk products, the file format is explicitly undocumented. The manual in fact states that it is undocumented and you should not try to write your own reader or writer – always use the FBX SDK. Reinforcing that, it seems they update the SDK and format almost yearly. A new SDK was released just before I started writing the exporter, and Unity couldn’t recognize the exported files, as surely it was using an earlier SDK. I found that if I converted my exported file using the FBX standalone converter to an older version of FBX then Unity could read it. So you’d think that in the SDK, they would make it easy to select which version of the format you want to use, but no, you can specify general attributes like whether you want binary or ascii, but aside from that you’ll get a list of string names of format versions, and those names are not documented. I added some code to print out all those names and still didn’t find the one I was looking for! Fortunately, a new version of Unity was released about that time with the latest FBX SDK (not the iPhone version, but I could import into Unity desktop first and then copy the already-imported project to the iPhone. Whew!)

Being forced to use the SDK wouldn’t be so bad if it was a thing of beauty, but it isn’t. Aside from the weirdness with accessing format names, it’s just hard to figure out what order to set things up in, the documentation has a lot more API than examples, and there are things that just don’t make sense to me, like you can specify a different material per polygon in a mesh but only one shading model for the whole mesh, which doesn’t translate well to Unity. Even textures didn’t show up in their respective materials on Unity import, even though that’s supposed to work, but was able to hand attach the textures by referring to the material and texture names in the FBX files, even given the undocumented status of the format. That also shows the importance of having a text file format.

Which brings us to Collada – a well-defined, standardized, text format. The “official” Collada book mentions reviving legacy games as one application of Collada, which sounds like exactly what I need. In an ideal world, the original HyperBowl files would have been Collada, and Unity would import Collada. But of course, Collada, didn’t even exist when HyperBowl was originally developed. And Unity does have a Collada importer, but I hear that it’s not that great, and I assume it suffers the same problem as the OBJ support – it’s based on a reader in the FBX SDK (the FBX SDK doesn’t support alternative formats well? What a surprise). Nevertheless, at one point when I couldn’t figure out what I was doing wrong with the FBX exporter, I stopped work on that and started writing a Collada exporter. I didn’t finish it, since I thought the chances of Unity reading it were pretty low, and setting up the material definitions lookedt like a huge pain (I’ll go with the critics on that one), but after exporting mesh vertices, normals and uv’s, I could see from the resulting Collada files where I went wrong in the FBX export.

I’d like to think the future is Collada. But the present is Autodesk. And now I feel bad about Game Exchange – if Nichimen had been acquired by Autodesk, Game Exchange could have been the FBX of today, and maybe that would be an improvement.

Games/Graphics
HyperBowl
Programming

Comments Off

Permalink

Wrong Word of the Day

I’m used to seeing big words misused on ESPN, but on C-SPAN last week I saw one member of the Center for Immigration Studies (apparently better named as the Center for Anti-Immigration Studies, and the use of “Studies” is questionable, too), while commenting on the uneducated nature of Mexican immigrants, use the word “misnomer” in place of “misconception”. (I wonder if I should create a new blog category titled “Irony”)

A misnomer is a misapplied term. For example,

It’s a misconception to think that “misnomer” has the same meaning as “misconception”.

“Misnomer”  is a misnomer when used to indicate a misconception.

Diversity
Politics

Comments Off

Permalink

The Cable Man Always Rings Twice

A while ago I complained to Time-Warner about a salesman coming to my door in the evening trying to get me to buy their TV and phone package,  and otherwise just irritating the hell out of me. I guess my complaint wasn’t specific enough – last night they called me on my cell phone instead, again pushing their TV and phone package. Ironically, a big reason I got rid of my home phone was to avoid telemarketing calls.

Consumer

Comments Off

Permalink

Oregon Trail

Imagine my dismay when a younger cousin asked me (in all apparent seriousness) if there was a Silicon Valley, back when I was in Silicon Valley. But to my surprise, we both played Oregon Trail as kids. And it’s still around, now on the iPhone:

IMG_0124

IMG_0127

Apple
Games/Graphics

Comments Off

Permalink

ParaPanic

Here’s another iPhone app with a nice hand-drawn look. ParaPanic (in this case, ParaPanic Lite) has really simple gameplay, just tap on the screen to open a parachute, but it’s fun (and a little gory, if the shark gets you!).

IMG_0130

IMG_0131

IMG_0132

IMG_0133

Apple
Games/Graphics

Comments Off

Permalink