===[ Don’t Dial Debuts, and GDC | March 24th, 2009 ]===

Wow, arrived back in town to find a flurry of activity: Don’t Dial has hit the app store! So for the last couple of days most of my time at home has been dedicated to spreading the good word. I always prefer coding over PR because at least with programming you can tell instantly if something works or doesn’t work. Most of the time.

I’m missing the GDC. Every year before the GDC I think “yeah, too expensive” and then during GDC week I get all wistful and weepy about not being there for it. This has been occurring now for several years and is occurring yet again this year. And every year, I say this: maybe next year I’ll go back and say hey to all the gamedev.net guys and we can reminisce about how much better the conference was when it was in San Jose (or maybe not). Those halcyon days of the early ’00s!

And yeah, you can say I’m biased, but here’s truth: when it comes to GDC coverage, gamedev.net has consistently blown every other site completely out of the water. Even gamasutra. The gamedev team works their asses off, and I guess that’s my silver lining – all I have to do is sit in front of a browser and refresh obsessively. :)

===[ The Must Install Freeware Short List | February 1st, 2009 ]===

I got a new toy! It’s a netbook, an MSI Wind U100 specifically bought for its dual-boot capabilities. I’ve got it booting the 2 OSes I use, (as well as the Windows 7 beta, but that’s a whole nother post), but setting up all the partitions was a pain, and I ended up having to install Windows a few times.

So I got really good at installing software, and it also helped me separate the software wheat from the software chaff. Here’s the shortlist, the free software I find useful enough to immediately install on a fresh OS:

  • AVG – always the first install.
  • Firefox and Thunderbird – my Internet Explorer history will only ever contain one entry – getfirefox.com.
  • DropBox – my wife and I share a dropbox because hamachi’s mac support is woefully lacking.
  • CDBurnerXP – tiny and handy for when I have to plug in a USB burner…
  • Deamon Tools – … but most of the time I just mount an ISO on the network.
  • Hamachi – so I can get secure access to the contents of my PC anywhere.
  • Evernote – this has gradually overtaken Onenote for my personal datastore.
  • TweakUI Powertoy – mostly for its autologon feature. The cleartype tuner on that same page is also handy.
  • Digsby – facebook chat aside, the feature this has over trillian is that your settings are stored online, so you don’t have to reconfigure anything, just install, login, and you’re done.
  • DOSBox – cause Impulse Tracker won’t run directly under Windows, but runs under here using an emulated gravis just great.
  • FoxIt Reader – this is the PDF reader that acrobat should be. I think the guys who made Acrobat and the guys who made Vista search should get together and build something that doesn’t matter.
  • Launchy – great little app for launching programs via keyboard.
  • Songbird – I hope they put in iPhone sync soon. Death to iTunes!
  • VNC – another tiny tool that lets me remote desktop in (over hamachi!)
  • VLC – the best movie player out there, if you’re cool with your movie files having traffic cone icons.
  • And no, I didn’t forget about chrome. The abridged chrome rant: a) no plugin support, b) UI sucks (we’ve had minimal UI for years now, hit F11), and c) why suckerpunch mozilla?

    Google chrome is like the Ralph Nader of browsers. Ha, well, that’s a far cry from where this post started, so I’m taking that as a sign I should stop. :)

===[ More Android Morsels | January 11th, 2009 ]===

Finishing off my port now! Once it’s done I’ll do the whole “Android vs. iPhone” breakdown, but for now here’s just a few more gotchyas you may hit:

  • If you want to start an activity, remember that you have to add it to your app’s XML manifest file. Don’t worry, it only takes you a few iterations on “run, get exception, wonder why, remember” until you mind remembers to do this. It’s be great if some Java guy could integrate this into Eclipse so that when you created a new class you could have it automatically insert it.
  • URIs are not strings. To get from a URI to a string, use toString(). To go the other way, use parse().
  • Want to pop up a message box? In Android the class you need is AlertDialog. Here’s some sweet sample code:
    new AlertDialog.Builder(this).setTitle("Title").
    setMessage("Yo").setPositiveButton("OK",
    new DialogInterface.OnClickListener()
    { /* whatever */ } ).show();
    

    I found that code on the anddev forums. Message boxes were tricky to figure out because there used to be a different way to show them that was removed as the SDK matured. Also check out how the click listener method is specified via anonymous delegate.

===[ Hello, Android! | January 5th, 2009 ]===

I’ve started porting my iPhone app to Android/G1 in anticipation of Google’s market for paid apps launching later this quarter (I want to be in on the ground floor!) Java is very C# (actually, that’s incorrect, since most of the awesome stuff in C# was blatantly ripped off from Java, which had it years if not decades before but ANYWAY) – Here’s how I’ve started on Android and how others might want to start:

  1. go to code.google.com/android and go through all 4 steps of the getting started. Pay your $25 and if you can stomach it, plop down another $400 for the Android Dev Phone, which is an unlocked G1 with a cool skin.
  2. Download and integrate into Eclipse a package called CDT – C++ Development Tools. It comes with a DevStudio keyboard configuration that’ll save you some sanity; Eclipse is huge, and the keyboard shortcuts aren’t intuitive. For example, Ctrl+Tab and Ctrl+Shift+Tab don’t cycle between windows (which is what finally led me to find out about CDT).
  3. download DroidDraw, which is the best GUI drawing tool (like Interface Builder or the Design View of C#) that I’ve found. That isn’t saying a lot though, this tool is still young and cantankerous, but at least it gives you a graphical view of the XML files that Android uses for UIs.
  4. This site (www.androidph.com) has lots of code snippets to look at. Also check out AndDev, which has some cool tutorials and a good community going.
  5. Tell me about other things you find! :)
===[ XmlInclude getting ignored | December 14th, 2008 ]===

So, when pointing the XmlSerializer at a document that contains a list of abstract base objects, I came across a fairly standard exception:

System.InvalidOperationException: There was an error generating the XML document. System.InvalidOperationException: The type was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically.

But, even after I put in the XmlIncludes, OR when using the serializer constructor overload that takes a list of types, I was still getting the error.

Turns out my problem, strangely, was this line:

[XmlRootAttribute(
  "Document",
  Namespace = "http://www.cuttlefishindustries.com/mycoolnamespace",
  IsNullable = false)]

I didn’t investigate it that much but it appears that if you specify a Namespace, the serializer ignores the additional types you supply (either via XmlInclude or the constructor overload). Once I took out my document’s XML root attribute, my serializer worked. Huh. So, there ya go, hopefully this’ll save someone some time, sometime.

===[ Something is happening! | November 16th, 2008 ]===

I’m working on grand and glorious changes to this site in anticipation of approval of my first iPhone app! Whee!

This post is really just to test something. So yeah not much to see… Yet.

===[ Metrozone | September 27th, 2008 ]===

Question: what do seven friends who work all day making games do when they get home? Answer: Make more games!!

Metrozone is our 2008 Dream Build Play entry. It’s Ikaruga meets Tempest – basically you race down this tube, shooting and dodging things – you collect powerups from killed enemies and try to run over as many power strips as you can (they increase your score multiplier)… so it’s very Tempest in that sense, but also, at any time you can flip to the outside of the tube where there might be easier enemies, more powerups, or death. Survival can only come from knowing when to flip (like Ikaruga).

Metrozone was developed throughout the course of several nights and weekends, and it was just mad amounts of fun to make. Here’s a gameplay video:

<a href="http://video.msn.com/video.aspx?vid=8b276e85-724e-4bd5-a8ab-bba5db0a2ef8" target="_new" title="Metro Zone - Dream Build Play Entry - Microsoft XNA">Video: Metro Zone &#8211; Dream Build Play Entry &#8211; Microsoft XNA</a>

===[ Save Nectarine! | September 13th, 2008 ]===

Up until a few days ago, nectarine.fr streamed demoscene songs (chiptunes: S3M, IT, MOD, etc.) to the world for free. It was driven by undoubtedly the largest database of demoscene music in existence – this database was the result of countless numbers of people contributing, voting for their favorite songs, etc.

Some stupid script kiddie hacked the site and destroyed the database. No viable backups exist (before you cast stones, when was the last time you backed up?), and now the world is faced with two options – attempt restoration of the deleted files off the hard drive, OR lose this piece of history forever.

I don’t usually trumpet causes, especially internet ones, but demoscene music was a big part of my childhood, and this site brought back tons of good memories. So help save it by throwing in a few bucks. Here’s the link:

[Update: I took out the donate button, it's no longer needed. The money was raised, and the drives are getting repaired!]

Here’s the forum with more info:
http://www.atari-forum.com/viewtopic.php?f=28&t=14858&start=0&st=0&sk=t&sd=a

===[ The Weepies – Orbiting | August 27th, 2008 ]===

Man, what an absolutely beautiful song. I’d been hunting for its chords for the last couple days, but couldn’t find anything online, so last night I just buckled down and figured them out myself.

more »

===[ Great Moments in UI Design | July 18th, 2008 ]===

Train the peepers on this little gem, courtesy of Outlook 2007:

Outlook 2007 UI

Check out the Send/Receive option. Initially this caught my eye because it’s the one option that isn’t checked, and I am very aware that yes, I actually do have a send/receive button. My first thought was, “Huh, OK, so a checkmark bug?” Nope, notice immediately below it, the exact same send/receive item, CHECKED, and disabled. But the home run is that if you check the one you can check, you end up with 2 identical send/receive buttons on your toolbar. You can hide every other button, but you can have either 1 or 2 Send/Receives. Wacky! Maybe this is the fault of some add-in? If so, fair enough, but otherwise, come on!

I was crestfallen to see the same crap UI when I fired up Outlook 2007 for the first time. I’ve been using Word’s new ribbon bar (the official name of its “super toolbar”), and I like it, and couldn’t wait to see what they’d done to Outlook, the app that needed the most ribbon bar love. Not much. The ribbon bar is on other windows, but the overhaul of Outlook’s main view that I was hoping for still stands as long overdue.

Also on this same subject, I don’t like how new apps hide the pull down menus completely until you press Alt+F. Windows Media Player did this, but the annoyance was lost in the noise, in that app. But since, I’ve seen it in Live Messenger, and a couple other applications. Why make the menu bar secret? Everyone, and I mean literally “everyone,” as in, most of the people on this PLANET, are now familiar with the concept of a menu at the top of your (app,screen) that you use to access features.

Supposing you buy the argument that we need to replace menu bars because they’re a crap UI construct (and maybe they are, I don’t agree but I see the validity of that argument – hunting for options through them is difficult), there’s still the issue of why, then, the menu bar is there at all. If the menu bar sucks, take it out entirely, and don’t regress – let me do everything I could do with it via some other UI. But it’s incorrect to hide the bar when it contains functionality you can’t get anywhere else.

Maybe you want to phase it out? Fine, but then in that case – it should be a preference: “Use New UI” vs. “Use Classic UI” or something. And again, there should be feature parity between both options.

The “secret” menu bar just teaches people to press Alt+F if they’re stuck.