Programming, Policitcs, and uhhh Pineapples.
# Wednesday, April 02, 2008

I Think It's Time For An Upgrade

Wednesday, April 02, 2008 5:33:26 PM UTC

Massive droolage:

4-2-08-nehalem.jpg

Courtesy of engadget.
# Monday, August 06, 2007

And I Thought My Setup Was Badass...

Monday, August 06, 2007 7:07:20 PM UTC

Excessive? Maybe.

Badass? Most definitely.

Now I'd be way more impressed if those monitors were 30-inchers.

# Saturday, February 24, 2007

Ouch!

Saturday, February 24, 2007 5:55:09 PM UTC
That's gotta hurt:
Windows Vista is Windows ME Part 2. It took five years to develop because three of those were spent building a brand new code base that didn't work at all and wound up getting scrapped, and the remaining two were spent just tweaking the XP code base. Almost all the features we were promised early on were discarded and what we end up with is a warmed over Windows XP that doesn't even do us the dignity of working properly out of the box. I think it's particularly telling that they've already announced the next major Windows release for late 2009.

From NotebookReview.com.
# Wednesday, February 07, 2007

The Allure of the WWW

Wednesday, February 07, 2007 3:03:24 PM UTC

Not everyone can appreciate the simple elegance of the ethereal structure that we know as the Internet.  It is not the average person that will sit and contemplate the transmission of data from one node to another, thousands of miles away in mere milliseconds, and be impressed and appreciative of the amazing times we live in (I mean, just 20 years ago, you had to actually walk into a store to buy porn :-) (*aherm*...not that I know anything about that)).

Most people are just happy that they can log on in the morning and get their mail in Outlook or check the weather on their local news sites, never taking a moment to bask in the glory of the immense amount of data that flows through copper, fiberglass, and the very air that we breath (isn't it weird to think that right at this moment, several megabits of data are probably bouncing off of me (or worse, passing through me (and you!))), each picosecond.

But then again, not everyone is a software engineer. 

Via Gizmodo.

# Tuesday, October 10, 2006

Could It Be?

Tuesday, October 10, 2006 11:09:37 PM UTC

After some drama in my life last week, I'm glad to report that things are kinda settled down, although I'm still not right in my heart.

But in any case, back to your regularly scheduled programming (or not).

Could it be? Someone in charge is finally starting to get it:

"So we understand piracy now as a business model," said Sweeney in a recent analyst call. "It exists to serve a need in the marketplace specifically for consumers who want TV content on demand and it competes for consumers the same way we do, through high-quality, price and availability and we don't like the model. But we realize it's effective enough to make piracy a key competitor going forward. And we've created a strategy to address this threat with attractive, easy to use ways to for viewers to get the content they want from us legally; in other words, keeping honest people honest."

When you start thinking this way, the goal becomes offering a more compelling product than file-swapping networks can provide, rather that attempting (for instance) to sue the users who like your content. For ABC, this has meant launching their own streaming media player and providing shows like Lost and Desperate Housewives online only minutes after they air.

Yes!

It's taken the media execs this long to realize that the majority of people do not want to engage in "illegal" behavior? The majority of the people do it because it's convenient and the media is delivered in a format that the masses demand. iTunes proved that people are willing to pay a fair price for content.

Television has been dead to me and most of my friends forever now with only live programming like sports worth bothering plopping down on the sofa for. Everything else? I'd rather just watch the good parts or watch it when I want to watch it. The concept of the timeslot is irrelevant in the 24/7 world of the Internet. Instead, the content itself becomes that much more important as

One thing that I've been contemplating lately is this issue of fan-subs. There is a huge sub-culture of anime/manga fans that work dilligently to translate the latest Japanese anime and manga because there is a huge demand for the product. It's amazing to think that most of these translators and video editors are working without payment to translate and distribute the content just hours after it airs in Japan. 

It's not just Japanese content, however, as Wired touched on this issue a few months back with regards to the American comic book powerhouses Marvel and DC:

within 24 hours of going on sale at the local Android's Dungeon, every new comic is available on BitTorrent, scanned beautifully for your downloading pleasure. Sound familiar? Just like with music, movies, and games, when content companies don't give fans what they want in the format they want it, fans make it available themselves.

Similarly, there is a huge opportunity lost here by networks not picking up the rights to these Japanese anime/manga series and simply paying a relatively small fee to the fan-subbers for their service and adding short commercials or hosting the videos on the company's servers. The point is, with the near unlimited "bandwidth" (used here, not really in terms of bits and bytes) of the Internet, there's no reason not to try to serialize and distribute as much content as possible (compare this to television where your "bandwidth" is limited by the fact that there are only 24 hours in a day, 7 days a week, and only so many channels of programming).

The current model for distribution of tele-media is still very inefficient as shown by the success of YouTube. People want to see the good stuff when they want to where they want to. No one wants to schedule their lives around arbitrary schedules. I'm happy to see that the success of iTunes finally has others in the industry turned around on this issue of online video distribution.

# Tuesday, September 19, 2006

Try OpenDNS

Tuesday, September 19, 2006 1:19:42 PM UTC

So I came across OpenDNS somehow last night and read about the service that they provide.  From my days as a CS major, I was familiar with the high level workings of the DNS infrastructure and OpenDNS's explanation, at least in theory, made sense.  The gist of it is that somewhere out there, there exists a network of DNS (Domain Name Servers) translating the alphanumeric URL that you type into your browser address bar into numeric IP addresses.  This can be a slow process if the initial DNS does not contain a mapping for the URL that you entered as it means that the DNS will have to consult another DNS (and so on) until it is retrieved.

Of course, I was a bit skeptical of just how much performance there was to gain, but I have to say that it is noticeably zippier browsing today.

So I would give it a shot and see if it makes any difference.

# Tuesday, September 12, 2006

Talk About Ridiculous...

Tuesday, September 12, 2006 8:19:56 PM UTC

So it looks like the EU is trying to pick Microsoft's pocket again.  The EU is up in fits about Microsoft's inclusion of security features such as Windows Firewall and warns Microsoft that inclusion of such features would bring further fines against it in the future.

Regarding the new security features in Vista, Jonathon Todd, an EU spokesman said:

"Less diversity and innovation would ultimately harm consumers through reduced choice and higher security risks."

What?  Wait, so having an OS that's, by default, not secured at all, somehow helps consumers?  It's entirely contradictory and the EU has lost all credibility with this move.  The inclusion of default security measures is a gesture to help improve the user experience and make sure that users aren't exposed.  If such features were not included, users would likely not even be aware of the need for security related software until it's too late.

It's not as if Microsoft is blocking others from installing security related software on Vista, it's simply providing some simple functionality out of the box so that there is always protection available to the consumer, whether he or she is aware of the need for such software.

And I'm sure if Microsoft didn't include default security software, the EU would have a different stance and claim Microsoft wasn't protecting consumers by providing a stop-gap solution until third party security solutions were installed.

What a debacle...

# Thursday, August 24, 2006

Innovation, Sony Style

Thursday, August 24, 2006 2:16:29 AM UTC

Last week, I touched upon how Microsoft is innovating with the XBOX360 by opening up the gaming console to small time developers, regular-Joe programmers, and students.

And of course, last year, I was just blown away by the initial peek at Nintendo's new controller and how it literally changes the way we interact with games and adds another level of immersion.

So what about Sony and their PS3 then?

It's hard to say.  For the most part, I don't think that I've really been blown away by anything that has been touted for the PS3.  For one thing, I tend to view it simply as a Trojan Horse for Blu-Ray technology, an inferior technology so far as audio/video quality is concerned compared to Toshiba's HD-DVD, so that Sony can cash in on it and force it down our throats. 

Is Blu-Ray innovative?  I don't think so; it's more of a natural evolution of the DVD format and basically gives us a bigger storage medium.  Aside from that, there's not much that excites about the PS3 from a gaming perspective at all.  Sure, it'll pump out some slick graphics, but is it innovating in any way?  Sony copied Nintendo's montion sensing controller capabilities (half-assedly), so that doesn't count.

To me, the PS3 has been perhaps the least interesting of all the next generation consoles and the one that offered the least amount of innovation.  But today, some news came out that showed some promise: the PS3 will run Folding@Home.  It's not that Microsoft's XBOX360 can't do this as well, but for the first time, someone will be copying Sony this generation.  It seems like a match made in heaven for these compuationally expensive distributed computing projects as both XBOX360 and PS3 have CPUs capable of highly parallel computing (the PS3 features 7 SPEs while the XBOX360 features three, symmetric, dual core processors).

Interesting news to me at least :-)

On a related gaming note, check out this smile inducing clip (via Kotaku) :-D.

# Wednesday, August 16, 2006

Asus W7J Pictorial

Wednesday, August 16, 2006 9:11:18 PM UTC

So I got an Asus W7J via UPS today (joy!) for my sister-in-law, who's attending college as a freshman this upcoming semster.  I had a very good impression of the W5F when I purchased it for my wife in May, so I decided to stick to Asus laptops (I did momentarily, in a haze of insanity, contemplate a Dell as the W7J availability was scarce).

At the time of purchase, the W7J was selling for far less than the W5F (difference of ~$250.00), which made it an awesome deal considering that the W5F is only equipped with integrated video while the W7J has a dedicated video card.  However, as I checked Geared2Play's website, I noticed that the W5F is now retailing for less (@ $1329.00) than the W7J (@$1449.00).  D'oh! 

Unfortunately, the W7J is only available in the US in black.  I guess this is to differentiate it from the W5F a bit?  As with the W5F, you can tell immediately as you pick up the laptop that the W7J is a high quality component; the chasis is very sturdy.  You'll see in the pics just how similar these two notebooks are, at least cosmetically.

Still in the box

Profile shot; not the thinnest I've seen, but very compact considering what's in the package

Touchpad is made of the same material that the handrest is. It's not a very "slick" material, so there is some added resistence when using it

Screen is better than I expected! From what I read, the new "V-Cut" technology was supposed to be a bust, but the screen is extremely bright with good contrast and very good viewing angles

From the other side...

Vertical viewing angle...

Straight on...

Surprisingly, the size is extremely close to that of the W5F; I expected it to be larger (the angle distorts the size in this photo)

About the same height...

Another angle...

Can't see the W7J under the W5F at all!

Another size comparison shot, this time the W5F in front

The W5F and W7J screens, side by side. Both laptops are on AC power and on the second highest brightness setting. My opinion is that the W7J screen is better than the W5F in terms of contrast and brightness. The W5F's screen, compared to the W7J's, looks ever so slightly washed out. In addition, the larger diemensions of the W7J's screen makes things much more legible and reduces eye strain.

The W7J seems to have better vertical viewing angle...one of the best I've seen on a laptop.

Two very nice laptops from Asus

Back to back...

The W7J is indeed a nice laptop.  Knowing that the W5F is cheaper than the W7J now, would I still have picked the W7J?  Well, not for my sister-in-law, who really has no need for the additional processing and graphics capabilities (1.66 Ghz vs. 1.83 Ghz, W5F and W7J respectively).  While $1449.00 is a damn good price for this laptop, it's ultimately more than I would have liked to spend since she'll probably just end up using the office applications and browsing the web.  For any business users and developers, the W7J is a steal.  As for myself, even I'm getting itchy to pull the trigger and forego Merom (so tempting).

As a side note, I find it weird that many developers prefer monster 17" behemoth laptops.  I myself have a 15-incher currently and I find even that to be intolerably cumbersome when I have to travel.  As such, I've made up my mind that I'll likely get a smaller 12"-13.3" laptop the next time I upgrade.  Since I hardly ever use the laptop keyboard or screen, as I am always plugged into a proper LCD screen and I use a wireless USB keyboard, I don't see the need to get a laptop with a big screen.  If I'm travelling, I'm more than willing to give up the screen real estate in exchange for a laptop that's easier to handle. 

But that's just me :-)

If you're interested in a more in depth review, you can check out NotbookReview.com's full length review and also the owner's lounge thread at NotebookReview.com.

# Monday, August 14, 2006

Innovation, Microsoft Style

Monday, August 14, 2006 4:41:26 PM UTC

Compared to all the love that Nintendo has been getting for innovating in terms of how we interact with our games, both Microsoft and Sony have been accused of not innovating enough to provide for a compelling reason to purchase either platform simply to get prettier versions of yesteryear's games.

Certainly, Live is a huge innovation on Microsoft's part, but an old one that has existed since the original XBox (yes, it wansn't the first online console, but it was the best implementation (and still is)).  But it still seemed like it fell short a bit by not allowing for far greater possibilities, namely, user generated content (community created games).  This was the first thing that I thought about when I read about XNA before the XBox 360 launched.

Well it seems like Microsoft is going a step further by releasing a free version of XNA (much like the Express versions of SQL Server and Visual Studio):

Talking on the eve of its Gamefest event in Seattle, Microsoft has revealed XNA Game Studio Express, a new product which will allow indie developers and students to develop simultaneously on Xbox 360 and PC, and share their games to others in a new Xbox 360 'Creators Club'.

The details of the new tech are as follows: XNA Game Studio Express will be available for free to anyone with a Windows XP-based PC, and will provide them with what's described as "Microsoft's next-generation platform for game development." In addition, by joining a "creators club" for an annual subscription fee of $99, users will be able to build, test and share their games on Xbox 360, as well as access a wealth of materials to help speed the game development progress.

Nice!  This is quite awesome as it opens up the home console to anyone with a few dollars and the ability to write code.  In itself, this is quite an innovative concept in the cosole gaming arena (it's been done on the web in the form of Flash games for years now), but it will surely also lead to innovative games and gameplay concepts as it will allow quirky, oddball ideas to flourish which would otherwise flounder in today's mass market games development.

Certainly, my feeling is that the ratio of good games to bad will be very low, but even if 1 in 10 is a keeper, I think it'll be an amazing success and offer a much greater variety of gameplay aside from FPS style games which XBox 360 is known for ("Bald Space Marine" syndrome) at an affordable price which will likely draw in a larger audience.

It will be interesting to see how Microsoft handles the various issues and questions that arise from this and how they build the marketplace to sell these user created games (or are they free?).  Will users be charged for the distribution of the games (to help pay for bandwidth and hosting)?

Regardless of the details, it's a ground breaking innovation in the area of console gaming and hopefully, it'll bring into the fold a new generation of console games developers who have the freedom (not constrained by big budget funding) and desire (not forced to program shitty games to put food on the table) to create new gaming experiences.

# Monday, June 12, 2006

Pure Genious

Monday, June 12, 2006 5:00:40 PM UTC

Pure Genious: http://www.realtechnews.com/posts/3155

Brilliantly simple and intuitive.

I'm a firm believer that the simplest, most obvious ideas are the ones that require the most ingenuity to come up with.


# Tuesday, May 09, 2006

Asus W5F == Hawt!

Tuesday, May 09, 2006 12:50:49 AM UTC

I'm not going to go into a detailed review with performance specs and what not (they're floating around the web already, no?), but just a quick take.

Purchased the notebook last week from Geared2Play (you can find details in this thread: http://forum.notebookreview.com/showthread.php?t=52014).

Price was right and service from G2P was good (wife said the man on the line (Eddie?) was friendly and knowledgeable).

Notebook was shipped Friday and I received it today in the afternoon with a great deal of anticipation.

First of all, the W5F is gorgeous in person. Incredibly sexy and attention grabbing. Coming from an S1A previosly, the W5F is an increase in weight (S1A was incredibly light, though). However, the weight is put to good use; whereas the S1A would creak under torsional stress, the W5F is solid. This is one of the most solid notebooks I've felt in a long time. No creaking; very rigid chasis.

The screen was a big surprise. The S1A really suffered in this respect as the screen was of very poor quality in terms of brightness and dot pitch. The W5F screen is beautiful. Incredibly vivid and sharp. The pictures came out a bit grainy due to the high ISO, but trust me, the screen is incredibly sharp and the contrast is excellent. I have to admit that the widescreen format makes it seem like the screen real estate is much larger than it actually is.

Haven't tried out many of the features yet as it will be wiped and OS reinstalled (wife needs to use it at work (elementary school) on a domain). The bluetooth worked out of the box with a bit of setup (hint: to get the mouse to connect, press and hold the reset button at the bottom). The mouse was a great addition, Bluetooth no less. Unlike the S1A, W5F does not ship with a carrying case. Not a big deal as we have tons at home

Setting up the network was a trial. It was pretty confusing (see the screenshots below) as I could get a signal and an IP from the router, but I couldn't access the network (no ping response from the router even). I had to fiddle around and reboot the machine to get it to work. The Intel software didn't help much (see screen).

(Some shots are grainy from high ISO)

Waited for UPS all day for this!

A box inside the box...

Yet another box....

Finally, the goods!

Size comparison to V3 Razr.

Not as slim as the S1A, but S1A had a modular CD-R/W drive.

Widescreen goodness.

Orange light is badass.

Keyboard has excellent texture and feedback. The touchpad texture is nice too (although it'll probably wear off after a while I assume).

Screen is very nice; much better than anticipated.

Very nice "soft" LED lights. The touchpad is actually textured (those little gray dots are bumps).

Incredibly vivid; the green shows the contrast much better.

Viewing angle is not bad! Much better than S1A and even better than my Chembook (Compal).

From the other side...

Vertical viewing angle suffers a bit, but acceptable.

Uh....what "Wireless On" option???

Widescreen looks good.

Another shot...

Open from the side.

All in all? Better than expected. I had high hopes (rightfully so for a $1700 notebook), but this notebook (so far) has exceeded them. Beautiful looks, snappy performance (primarily office usage and web browsing), decent weight, and great build quality.

# Wednesday, May 03, 2006

Enterprise Library 2.0 Logging Quirks

Wednesday, May 03, 2006 10:35:51 PM UTC

So I've been working with Enterprise Library 2.0 (EL2) Logging Application Block recently and I've come across some quirks that are puzzling me.

First, I've been using log4net for most of my logging in the past.  Recently, I've taken a look at NLog due to the fact that log4net is currently under "incubation" and has been inactive for a loooong time.  The developers are still active as shown by the activity in the the mailing lists, but otherwise, the codebase has been kinda sitting there for quite some time (until recently) with no date on when it'll exit incubation.

Anyways, after checking out some performance numbers on EL2 vs. log4net, I was sold.  Easy configuration via the configuration GUI, easy to understand, tons of documentation, and it's first party Microsoft (easy to get team members and managers to buy into it).

So here I am working with it today and setting up my test code to automatically regenerate the database before each run and my application code crashes when the logging fails (exception).  I had mis-typed the path for one of my SQL files and the database wasn't created for the logging block, but still, I don't think that the right thing for EL2 to do is to allow that logging error to bubble up to the application code.  With log4net, if the connection to the log database is broken, the AdoNetAppender will simply fail but not cause the rest of the application code to fail. [Update: can't reproduce it, but I know this is what cause the error since as soon as the database was there, it was happy, but it's running fine now even without a database. Ugh, totally puzzling...]

Weird design choice.  I guess it's useful to know that your logging block is failing.  But what the heck, isn't that why there are multiple listeners so that if one fails, you have a fallback (i.e. log all critical errors to database, event log, and flat file)?

Secondly, as I'm looking at the database scripts for creating the procedures and database tables for logging included with the EL2 source code, I'm puzzled by the design choice.

Take a look at the code for adding a category:

First of all, why are the categories stored in a seperate table?  My guess is that the designers wanted to save some space in the log entry row by taking out the category from the log entry???  I can't seem to come up with another good reason for it since it's not like the categories in the category table are associated with an application identifier (and they must all be unique category names).  Profiler tells me that it requires at least 14 reads to write one entry into the log.

Not only that, the code to execute adding the category and adding the log entry are two seperate calls from the client since the WriteLog procedure doesn't receive category information.  I'm going to go out on a limb and say that the only reason that EL2 logging is able to outperform log4net is due to .Net 2.0 related optimizations.

So I think it's back to log4net for me.  I don't know how the rest of the team will take it, but it seems to be a better choice.

# Saturday, April 29, 2006

Hole-y Cow....

Saturday, April 29, 2006 3:42:49 PM UTC

Must see.

I think this pretty much speaks for itself....

# Thursday, April 27, 2006

Awesome Defined

Thursday, April 27, 2006 11:06:26 PM UTC

Wow.  Trac just impresses me more each day.

Today, it's the peer review plugin.

If you looked up the definition of awesome in the dictionary, I'm almost positive that you'd find this mentioned somewhere in the entry.

It's a component that plugs into Trac and allows you to start peer reviews on code blocks in your repository.  Users assigned to the peer review can view the source code in the browser and make comments on particular lines of code.  There's also  a pass/fail mechanism to vote on how to proceed with the code.  The truly badass part about it is the GUI implementation.

Here's a screenshot of it in action:

trac-peer-review_t.gif

If this isn't the definition of awesome, I just don't know what is.

Great use of AJAX.  I did something similar for a different app I wrote recently:

arp-comment-screen_t.gif

I love this approach for web application design since it's so much less intrusive than opening a new window and offers far better customization of the look and feel of the overall UI.  The big problem is that it's probably not accessibility standards compliant; many screen readers will not properly pick up the change in the UI and the newly inserted HTML content.  If such domains are not a concern, then such a visual design pattern is definitely the way to go if you're building a web based GUI which requires multiple subscreens.

# Friday, March 17, 2006

Subversion, Apache, Windows, and VS

Friday, March 17, 2006 6:32:59 PM UTC

I've been meaning to try to see if Subversion is a viable version control tool within a group of developers.  I've been using it myself as an alternative to Visual Source Safe about a year ago after stumbling on it while trying to figure out why VSS was killing my projects.

This morning, I finally upgraded my SVN version to the latest release, 1.3, and tried to set up the HTTP access as well.  I had never set up that piece before as no one actually wanted to dip their toes in with me, so there was no need to share access.  After a lot of struggling with Apache 2.2, the latest release, I decided to give up on it.  The current build of the Windows distribution of Subversion 1.3 is incompatible with Apache 2.2 due to the a change in the APR versions (Apache Portable Runtime) from .9 to 1.2.  I was just too damned lazy to figure out how to rebuild the projects :-D Maybe next time.  So I had to settle for Apache 2.0...but all is well now (thanks Nader)!

I plan on putting together a simple workshop for this in the near future as it was terribly difficult to find anything up to date and end-to-end.  Anyways, here are a few good reading points to get started with:

# Monday, November 28, 2005

Speculating on the next Gameboy

Monday, November 28, 2005 5:26:03 AM UTC

As I was laying down to sleep, I started to think about the next generation Gameboy (GBX, Gameboy Next).  Honestly, I don't remember the train of thought that lead me to thinking about it, but I was sooo engrossed, that I had to get out of bed to jot down ideas and what not.

The first thing that came to mind is what type of media would Nintendo choose to use?  I think that any sort of optical or magnetic disk type media would be way too inefficient from a power and loading time perspective.  Clearly, Nintendo has always placed a big emphasis on quick load times, which are essential for portable gaming systems.  In addition, Gameboys have a rich tradition of looong battery life.  Disk based media require spinup time, which negatively affect load times.  So the only thing that comes to my mind is flash media (or small format hard drives, if they're cheap enough and sufficiently durable).  It will likely be a proprietary format (for reasons that will be discussed below). 

But to distribute flash media with each game is inefficient and costly (as was always the main issue with cartridge based systems aside from the size limitation).  We have already been told by Nintendo that the Revolution will offer games for download.  It would seem like this would also be the obvious choice for the GBX, with one radical difference: the games will be download only

Yes, download only.  This may sound bad for stores that sell games, but consider the facts: 1) stores will have an advantage in that they can distribute game related materials (manuals, freebies, etc.), 2) not everyone will have access to an internet connection, so stores will still need to have download kiosks, 3) stores will allow users to validate copies of existing software titles so that users can download.  That last point is of particular interest as it means that the GBX will have backwards compatability by allowing users to download copies of their old games.  We have a precedence for this as Revolution will allow users to download old NES and SNES games (and who knows what else, maybe even Sega Genesis games?!).  On point 1, all manuals will be made available online in PDF format for download.  On point 2, an internet connection will not be required to play the game, only to download the game.

All downloaded games are portable across units, but not across media.  What this means is that you can download a game to a particular media and you can then use that media in another unit to play the game, but you cannot copy the media.

Flash memory is relativley cheap nowadays, with retail prices for 1GB of memory ranging from $40-50.  For comparisons sake, the Gamecube disks are 1.5GB in capacity.  Keeping in mind that this is a portable system meant to be played on a small screen and the fact that flash memory prices will drop significantly in the next 1.5 to 2 years (the timeline for the GBX), we can postulate that a 2-4GB flash unit at $40-50 could hold a good number of games considering that the current DS memory cards are only supported up to 128MB.  Of course, the games themselves will be cheaper as the overhead of distributing the games is significantly reduced.  The cost of printing the games is completely eliminated.

The advantages of using flash media and downloads is easily apparent in the cost savings for Nintendo and the convenience for the user.  Using solid state memory allows for significant power savings and reduced loading times compared to magnetic and optical media.  For game saves, the GBX can either reserve game save space on the download media (for example, if the game is 120MB, 10MB may be reserved for the game saves for a total footprint of 130MB) or perhaps use a seperate, more conventional (non-proprietary) media, for game saves.

So why is a proprietary media required for the downloaded games?  The reason is that it must support certain measures to ensure that games are not duplicated (or at least not easily duplicated) and/or pirated.  More specifically, it must contain a write only section that cannot be altered. How does this all work out?  I'm glad you asked :-)

  • Each media will have a unique identifier (UIDMedia)
  • Each media will have a private key (KV,Media) and a public key (KU,Media)
  • Each GBX unit will have a global public key (KU,Global)
  • Nintendo servers will have a master database that contains the unique ID (UIDMedia) for every media manufactured along with the public key for the media (KU,Media)
  • Nintendo servers will also have a private key (KV,Global)

Certainly, there will be some sort of handshake procedure and what not to setup the connection for browsing game catalogs and initiating the download to ensure that only registered hardware (registered when manufactured) can connect to the servers, but I'm only going to cover how a theoretical download scenario could work after the handshake.

(I aplogize for the unconventional notation, as I'm too lazy to go in and format the HTML properly, so just follow along.  Also bear in mind that this is a very high level overview.)

  1. <Unit> M0 = Encrypt(KU,Global(UIDMedia)).  The first step is to create a message by encrypting the unique ID of the media using the public key of the Nintendo servers.  This ensures that only Nintendo servers, which have the private key, can decrypt the message and map the unique ID of the media to the public key of the media.  The message is sent to a Nintendo server.
  2. <Server> UIDMedia = Decrypt(KV,Global(M0)).  The server decrypts the message from the unit using the server's private key.  This results in the unique ID of the media.  The Nintendo servers contain a key map of media unique ID to media public key.
  3. <Server> M1 = Encrypt(KU,Media(KShared)).  Using the public key of the media, a shared key is encrypted to create one part of a message.
  4. <Server> M2 = Encrypt(KShared(FileGame)).  The game binaries are then encrypted using the shared key.
  5. <Server> MF = M1 + M2.  A final message is created by encapsulating the encrypted shared key and the encrypted game file.  This composite message is then returned to the GBX unit.
  6. <Unit> KShared = Decrypt(KV,Media(M1)).  The GBX unit obtains the shared key by decrypting the first part of the return message using the private key of the media (remember, it was encrypted using the public key of the media which is stored at the server).  The shared key is never stored in an unencrypted form.  Each time a player loads a game, the shared key is decrypted again.  Only the encrypted form of the shared key is stored (perhaps the unique ID of the media is also stored in the message as an added measure).  Because the shared key is encrypted with the public key of the media, only the private key of the media, contained in a read only region of the media, can be used to obtain the shared key.
  7. <Unit> FileGame = Decrypt(KShared(M2)).  The game file is read using the shared key.  Decryption is done in real time using hardware level decryption for performance reasons.

Essentially, this would be a form of DRM where the rights are associated with the media, not with the unit.

Bill Gates was straight on in commenting that the HD-DVD vs Blu-ray format war is insignificant due to the fact that this will be the last significant physical media (from a distribution perspective) for quite a while (at least when it comes to consumer electronics; holographic storage will eventually become the standard in ultra high capacity data storage).  Nintendo, I think, will be the first gaming company to move away from distributing physical media altogether by switching to a download only type of service for its next gen portable console.

Other random thoughts on the console are:

  • The DS screen resolution is currently 256x192 (for each screen).  PSP is 480x272.  I expect that, with the improvements in LCD and processor technology in the next two years, the GBX will have a resolution higher than the PSP (although we all know that Nintendo has a habit of undervaluing graphics capabilities).
  • It will have a 6 button design similar to the DS.  The current GBA has a 4 button design (A,B,L,R).  I picture a setup more like the GCN's, however, in that it will be three smaller buttons surrounding one large action button.
  • The unit will have a built in gyroscope.  This ties into the Revolution and some of the experimental games on the GBA which have built in motion sensors (WarioWare Twisted!).  Racing games, flight sims, etc. will be totally sick on this machine.  In addition, it may also connect to the Revolution as a wireless controller.
  • Following in the vein of the SP and the Micro, it will be slickIt will be sexy.  I picture it somewhat like an iPod Nano in terms of finish (except it'll be more resistent to scratches).
  • It will have built in wireless capabilities.  We see that Nintendo is finally coming around to all of this 'Net gaming and really embracing it (Mario Kart DS).
  • To enforce a kid-safe environment, as each unit will have a unique ID, Nintendo can create an architecture whereby each conversation and each exchange of text is logged and scanned in an asynchronous fashion.  Other users in a conversation may also choose to explicitly tag a conversation as breaching the terms of service.  Essentially, it would require a massive grid of computers to scrub recorded voice and text data for abuse.  In turn, Nintendo can punish those users by disabling voice and text capabilities (on the Nintendo network) for an increasing period of time with each infraction.
  • There is a very distinct possibility that we will be seeing an emergence of large capacity, small format hard drives in the next year.  This is related to the recent developments in storage design.  Specifically, perpendicular storage technology, which promises to increase disk density significantly.  Anywhere I've used "flash memory", it may very well be replaced with a micro harddrive boasting 20-40GB.
  • I think it'll look like the OQO ultraportable in terms of layout (the screen slides up to reveal the input buttons), except not as wide.  This would be inline with the design of the Gameboy Advance SP "clamshell" and would be great for viewing media when not gaming.  Which leads me to...
  • The GBX, contrary to Nintendo's typical stance on building pure gaming machines, will be a multimedia platform as well.  With the emergence of cheap, large capacity storage and the competition (Sony), it will be hard for Nintendo to ignore this functionality.
  • And finally, this being Nintendo, we know that there is going to be some sort of innovation that hasn't been done before on a handheld gaming system.  I predict that this will be stereoscopic 3D.  Yes, you read that correctly.  Sharp has already developed an LCD for cellphones which has this technology.  What's great is that the effect can be turned off in case it causes headaches and what not for certain users.

Okay, that's enough babbling and speculation from me.  Time to sleep damnit!  I dunno, I've somehow managed to hype myself up over my totally fabricated speculation :-D

But mark my words, I think what I've outlined here will come to be in the form of the next generation "Gameboy".

# Saturday, November 26, 2005

The Dangers of Prototyping

Saturday, November 26, 2005 7:02:59 PM UTC

I came across a good article on prototyping as I was reading about some of the reactions to the rumors that the Nintendo Revolution hardware will not be capable of much more than the current Gamecube hardware.

In my senior level software engineering course, my professor discussed that one of the pitfalls that was associated with building prototypes is that different audiences have vastly different expectations and draw different conclusions from prototypes.  For example, an architect that builds a prototype to demonstrate a new portal architecture doesn't necessarily have to make the UI look pretty.  Other developers can appreciate the architectural design elements such as how requests are handled, how state is handled, how communication is handled between different components and so on.  But show it marketing or sales in the same state, and the project could be dead in the water before it even starts, even though it may be the best portal architecture ever designed.

I think Nintendo took a big risk by showing demos of the new controllers in actions so early.  While it was necessary to prove that the new control schemes could work and work well, there is a (mis)perception around the gaming community that the early prototypes represent the final product in terms of graphical quality, even though we currently have no idea what kind of hardware the demos were running on.  The average Joe looks at the graphics of the current gen. hardware and then looks at the demos and will promptly proclaim that the Revolution sucks without realizing the true level of innovation and potential of the Revolution.

The article raises the question: "Is the Prototype the Production System’s Ugly Sister?"  Most of the time, yes.  But in some very special cases, the visual elements of the prototype, while they may have no significant impact from a software engineering perspective, become deal breakers:

The prototype does tend to be pretty ugly, and deliberately so. Absolutely zero time should be spent trying to make it look appealing. There are, however, a few notable exceptions to this:

  • The prototype’s goal is to prove that a particular technology can be made to look good (e.g. writing a GUI client with Java Swing). In this case, the prototype would be more of a proof-of-concept, and would consist primarily of GUI tricks and best practices to get the best out of the platform and widget toolkit being used. In fact, you would spend less time concentrating on actual functionality, because that’s not the point of the prototype!
  • The customer has difficulty distinguishing between form and function. If this is the case, it sometimes pays dividends to spend a little extra time making the prototype look good. Don’t go overboard though—remember what you’re creating is going to be abandoned pretty soon, in favor of a brand spanking new, shiny version with all mistakes learnt (at least that’s the plan!)
  • The prototype will also be used by Sales & Marketing, as an early sales pitch for your upcoming new product. In this case, looks and shininess (the “ooh” factor) probably take priority over real demonstrable functionality. Showing the customer your impressive 20-megabyte auto-generated comma-delimited invoice file might bore them faster than you think.

These are the exceptions, though. Most of the time, the prototype is intended primarily as a means of gaining insight into the ideal architecture, and is written in tandem with the design—before any production code gets written.

I've bolded the portions that I found to apply to Nintendo's current situation.  While I think that most people can understand that those demos were really designed to show off the controller, they have, nonetheless, inadvertantly relegated the Revolution to "has been" in the minds of many gamers that have associated improved visuals with "Next Gen".  So Nintendo has made the unfortunate mistake of not making the demonstrations "pretty" enough, even though they were mainly meant to demonstrate that the control scheme could work.  Of course, Nintendo can still blow us all away with XBox 360 level graphics, but they've already lost the attention of a percentage of hardcore gamers for whom graphical prowess is king.

The one thing to remember is that Nintendo has been working on this next gen. hardware for quite some time now.  There will be a new CPU from IBM and a new GPU from ATI.  I think the reasonable conclusion is that the graphics for the Revolution will be significantly better than those on the Gamecube and first gen. games will likely be on par with first gen. XBox 360 games.

# Tuesday, November 22, 2005

Gaming News Galore

Tuesday, November 22, 2005 1:46:03 PM UTC

Yes, while I have absolutely no time for gaming these days (especially console gaming),  I still constantly trawl through the 'Net looking for news and info on the next gen. consoles.  I don't know why, as I don't seem to have much time to play console games anymore.

But in any case, today marks the official start of the Next Generation in the console wars.  Microsoft's XBox 360 officially releases today.  In addition, Sony announces that the price of the PS3 will debut at about $300-400, contrary to the earlier rumors that the pricepoint would be closer to $500+.  At $500+, I definitely wouldn't get one.  At $300-400, for a Blu-ray player, I'd probably pick one up.

I've been debating on whether it's worth it to get an XBox 360.  I didn't get the first XBox, even though there were some great games on it.  But I've got a nice, big HD set at home just yearning for the Next Gen. systems.  Oh who am I kidding, I don't have the funds for it in any case :P.

Meanwhile, I've also been reading about the poor manufacturing quality control for the first batch of XBox 360's.  Apparently, there have already been some "casualties" with the XBox 360's in circulation.  From what I've read, it's primarily a heat issue.  This makes me worry somewhat as the Nintendo Revolution's CPU is also being produced by IBM and the Rev. will be in a much smaller form factor.  If it's using a similar architecture, then it could be an issue.

Speaking of the Revolution, news on that front has been pretty mum.  My wife was playing Monkey Ball on the GC last night (I dunno what would compel her to suddenly want to play it, but she hooked up the GC and sat there basically all night playing it).  I sat there watching her twisting and turning her whole body (to no avail) as she guided here little monkey around the course.  Man, Rev. is going to rock sooooooooooo hard.

# Monday, November 07, 2005

.Net Roundup

Monday, November 07, 2005 5:35:57 PM UTC

I hate to just link to pages, but there's a lot of stuff to catch up on today, so allow me to indulge myself by placing a little reminder here ;-)

Dino Esposito has a nice little write-up on authoring custom controls in .Net 2.0. Hop on over and check it out.

Jesse Ezell has a post on why Visual Studio Team System is just craziness (in a bad way).

Lance offers a small take on the ever present challenge of staying relevant and educated.

Wally links to a post listing various AJAX frameworks.

That's it for now; got lots of reading to do tonight.

# Friday, October 28, 2005

CS476 Represent!

Friday, October 28, 2005 3:22:03 PM UTC

Heh, this is a Friday shout out to my project group for CS476--Ed (Myung) Kim, Roger Chang, and Craig Lichtenstein.  These guys were a great group to work with as everyone really took responsibility for their parts of the project and helped to deliver, what I felt, was a pretty cool application.

First, a little abstract.  In college computer science courses, even though you're told that you're supposed to work on programming assignments yourself, I think that no one really ever did.  If I may opine, this is a poor idea to begin with as no programmers in the real world work in isolation.  Now keep in mind, there are different working relationships.  In some cases, people are just moochers and just want to copy your code or steal your solution ideas.  In others, it's really a relationship where each of the students feeds off of the others to arrive at the solution together.  I had such a relationship with one Lew Fernandez, a fellow computer science major who was my roommate for half of the semester (a rocky freshman year).  I've always been one of those guys that could figure things out better if I had to discuss and explain different aspects with other people.

At some point, the idea occurred to me that it would be cool if we could work on the same codebase, collaboratively and interactively, even from remote locations (for example, if he was on one campus, and I was in our dorm room) without having to install any software.  Basically, you could work on code collaboratively from anywhere that you had access to a web browser.  Thus was born the idea of what would eventually turn out to be WebEdit, the project I designed for my CS476 Advanced Web Applications course.

This application popped back into my head recently as I was browsing a post on Web 2.0.  I came across the application Writely and it clicked, immediately, that what we had built was eerily similar to the idea behind Writely.  Admittedly, the implemenation and polish is very different (ours was slapped together in what I would say was roughly a week's worth of development time).  But it's nice to know that we had some good ideas back then.

WebEdit (aka JavaCVS3), utilized a Java applet frontend embedded in a web page that could communicate with a central server using Java RMI.  Chat was also in there, but that required a socket connection between the applet and the server, so it was limited somewhat depending on the networks and the firewalls sitting between any given client and the server.  The really cool part was that we didn't explicitly use the file system to manage files; everything was done through CVS.  Projects had to be imported to a CVS repository after which, different group members could check out a working copy by simply selecting the project from a drop down (projects were associated with groups).  As you're working on your working copy, you can update your copy if another user commits (you are notified interactively) and, using CVS merge, we were able to automatically merge your changes to those that were checked in by the other user.

While I'm here, I'd just like to take a moment and thank the guys for doing such a great job on the project and really working like a team (we pulled at least one 10 hour programming session topped off by celebratory coffee and doughnuts from DD).  As I was digging through some of the old documentation while trying to get everything set up again (to be clear, it was lacking in that respect), I was just amazed by the level of detail and attention in the documentation, especially by Ed; it made the process a bit easier for me.

So in any case, all this nostalgia made me want to see it up and running again.  The original application was designed to run on the Unix platform (including all of the sub-systems like CVS, Apache, and MySQL).  I know that at some point, after I graduated, I had tried to port our work over to a Windows platform quite unsuccessfully and gave up.  I was somewhat saddened as it was great work, but just not enough documentation/information to set it up and make it work on a different platform...until today.

After a lot of digging, prodding, and trial and error, I finally got it working again!  I had to substitute CVS with CVSNT, not knowing whether CVSNT would work exactly like the version of CVS we were running at Rutgers (no one ever wrote down the version).  It took me a few tries, but I finally figured out the version of Java that we originally compiled the source with (or at least the highest version without issues).  I also had to reverse engineer the database from the codebase (the database documentation was very high level and I didn't have any sample data to work from) and change the code to work with SQL Server instead of MySQL.  After a whole day of fidgeting, I finally got it working again!  Joy!  Particularly enjoyable since I haven't worked with Java in so long (roughly 2.5 years now).

webedit_capture.jpg

So this post is for you guys, if you should ever happen to stumble across this blog ;-)

# Monday, October 24, 2005

Porn, Hollywood, and Microsoft

Monday, October 24, 2005 6:26:51 PM UTC

It's a wonder why you and I are still viewing movies via physical mediums like DVDs.  To be honest, I'm really not sure why there's even such a huge fuss over BluRay vs. HDDVD.

About three or four years ago, I was working at Dreamzotic (NSFW!!).  First of all, from what I understand, Rob, the founder, was streaming video via Dreamzotic all the ways back in 1996!  Yes, almost a decade ago.  When I worked there, we were streaming up to 300 Kbps.  Today, I don't know the exact number as I no longer work there, but it would seem that Dreamzotic is offering near 1 Gbps!  On top of that, they also have a managed download so that you can grab the movie in its entirety.  The DRM protection prevents the video from being played on any machine other than the original.

I was once told that porn has been one of the largest forces behind innovation in Internet technologies.  To some extent, I think we can all agree that this is very, very true, especially in the case of streaming video.

So what I don't quite understand is what Hollywood doesn't understand about the current state of the movie industry as a whole.  With the introduction of large, high definition televisions and cheap, affordable surround sound systems, the theater going experience is dated.  To be clear, I hate going to the movie theater to see new releases.  Hate it, hate it, hate it.  From the stupid kids with their cell phones to the jokesters that try to be funny during a film to the dirty, dirty floors and restrooms, what is there to like?

For the past 8 months, I've been using Netflix and basically avoiding the movie theater (which is right across the street from our development).  It's quite obvious that the only two downfalls of Netflix is the method of distribution and the fact that no one has the balls (or insight) to do a simultaneous theater + DVD release (well, Mark Cuban has both, but I haven't seen anything major from him yet).

Whereas the porn industry has been chugging along (especially with the introduction of DRM to Microsoft Windows Media Services), you really have to scratch your head at all of the fuss in Hollywood and why it's taken almost a decade to catch up.

Bill Gates gets it right regarding BluRay vs. HDDVD:

"Well, the key issue here is that the protection scheme under Blu-ray is very anti-consumer and there's notmuch visibility of that. The inconvenience is that the [movie] studios got too much protection at the expense consumers and it won't work well on PCs. You won't be able to play movies and do software in a flexible way.

It's not the physical format that we have the issue with, it's that the protection scheme on Blu is very anti-consumer. If [the Blu-ray group] would fix that one thing, you know, that'd be fine.

For us it's not the physical format. Understand that this is the last physical format there will ever be. Everything's going to be streamed directly or on a hard disk. So, in this way, it's even unclear how much this one counts"

# Saturday, October 22, 2005

Thoughts on Microsoft Acrylic

Saturday, October 22, 2005 8:48:18 PM UTC

I started playing with Acrylic a bit today and I'm amazed (bet you didn't see that one coming).

For the purpose of reference, so you know where I'm coming from, here's some background:

  • I started doing graphics work with Paint Shop Pro back in the day and I eventually moved onto Adobe Photoshop 5.5.
  • Since then, I've only upgraded to Photoshop 6.0, so I haven't had much experience with the newer CS versions of PS.
  • I've used Illustrator a bit, but mostly to draw my lineart, and not for any serious graphic design.
  • I have a copy of Corel Painter 8 or 9, but I never got into it because it was sooooo poorly optimized that I'm not sure how anyone seriously used it.  Likewise, doing freehand artwork in Illustrator 9 is insane.  At 300dpi, an 8x10 image takes nearly 5 minutes to save (and I'm on a 2.4 Ghz Pentium IV with 1280 MB of RAM).
  • I've also worked with Corel Draw and Flash.
  • I haven't been doing as much artwork lately.

Okay, with that out of the way, I'd like to say that I'm pleasantly surprised by Acrylic (I remember reading a lot of bad first impressions very early on).  Some observations first:

  • First of all, it seems to combine many of the tools into one as it allows for the creation of pixel (bitmap) and vector layers so that you can work with both types of objects in one document.  Previously, at least with PS6, this was not possible.
  • It's much more finely optimized than Illustrator or Painter.  No slowdown at all (and I'm currently on my laptop).
  • Some of the new UI paradigms are great; I'm quite fond of the "combo-lock" style toggles and the easy to access sliders (in PS6, a lot of the sliders are hidden/context sensitive).
  • To go with the above, many graphic artists are going to have to do a bit of retraining.  I mean, gosh, I feel like the Adobe PS interface is so ingrained in my mind that I find it a bit hard to adjust...I feel kinda lost :-S.
  • Acrylic allows to to completely customize the hotkeys!  Excellent!
  • Unlike the Adobe products I've used in the past, this, even in such an early stage, ships with tons of predefined brushes.
  • Wow, I love the way it allows you to toggle the width of a vector brush stroke.  I think I'm in love.  Illustrator was such a pain in the ass in this respect.
  • There's an XAML exporter as well (as a seperate install).  I'll have to try that out later and see how it works.  I'm actually quite curious how the vector and bitmap objects will map to XAML.
  • I don't know that I'm so fond of the way the layers are represented.  Unlike in PS, where layers are in their own window, the layers are represented with a subwindow of the main document.
  • Where is the history?
  • There is no "Save for Web" option as far as I can tell...

I'll keep updating this post as I play around with it a bit more.  I think I'm going to move one of my current projects into Acrylic instead.  So, my biggest question now is: Microsoft, how much is all this gonna cost?  If they price it around PS, work on a some minor UI oddities (embossed icons? I dunno), and add a web optimization interface, I think they have a winner on their hands as it seems, at least on initial inspection, to be quite a good product.

Now what I really want to get my hands on is Sparkle.

# Friday, October 14, 2005

A Video Card w/ External Power!??

Friday, October 14, 2005 8:47:44 PM UTC

Talk about monstrosities.  Wow.  Check out the Asus N7800GT dual GPU vid card :-o

Got CS?

Friday, October 14, 2005 1:36:22 PM UTC

Good news for us CS (computer science) graduates!  Well, at least according to Mr. Gates:

"Gates addressed University of Michigan students Wednesday in kicking off a three-day college tour aimed at getting young people interested in computer science and related fields.

Gates said the global market has greatly expanded the need for technology and innovations and needs young people to create them. Although many computer science jobs are being created overseas, there still are plenty of opportunities in the United States, Gates said."

For anyone that may be interested in CS, stay tuned.  I composed a little mini-map of the CS field (at least according to my knowledge of it) that I think is helpful for those of you thinking of getting into CS.  I think I'll work on that this weekend (if I can find my map (I have a habit of writing random things on random pieces of scrap paper that either end up being recycled by someone or lost in a pile somewhere)).

On a sidenote, I encountered this lovely error message (twice!) yesterday while working on a project:

catastrophic.gif

Yes, not once, but twice yesterday!  Luckily, my computer didn't explode and, to my amazement, the Earth still exists.  Whew!  Here I was hoping for the worst, too.  I started laughing as soon as I saw it and just had to take a screenshot and share :-D

# Tuesday, October 11, 2005

BizTalk Vs. Windows Workflow Foundation

Tuesday, October 11, 2005 1:08:26 PM UTC

Having worked with BizTalk Server 2004, SQL Server Integration Services (replacement for DTS), and having taken a quick glance at Windows Workflow Foundation, I was kind of confused why Microsoft would create so many competing technologies, especially considering the high license costs of BizTalk Server.

As an aside, during my time with BizTalk, I was thoroughly unimpressed.  To begin with, I hate working with technologies where you can't easily see every piece of the whole.  Too much of the functionality of BizTalk is hidden in property menus and context menus...I can't stand that type of crap.  Even more annoying than that is the dependency on the GAC.  It takes a ridiculous amount of time to build and deploy the assemblies.  Consequently, it's a PITA to test and debug.  I've not found any real scenarios yet where I've felt that I would recommend BizTalk over some other solution, especially considering the insane licensing costs for what amounts to nothing more than an XSLT engine with some workflow and connectors built into it.  People, especially Microsoft, will try to convince customers that it's the solution to everything.  They tried to convince one of our clients to use it for a task that was 10x easier and more efficient (time wise) to do using DTS.  Not to mention the client already had a license for DTS whereas it would have cost them in the neighborhood of $40k just to get a BizTalk server up and running. I dunno, maybe I'll be impressed by the next version.

If you're still interested, there's some discussion about the main differences between Windows Workflow Foundation and BizTalk on the web today, so I'd thought I'd share with anyone else that's interested:

The short answer is that WWF (no, not the one with big men in spandex) is a framework to be used to develop intra-application workflow whereas BizTalk is aimed at inter-application workflow and [buzzword alert] "business process management".

WWF looks promising.  Without realizing it, I actually built a mini workflow framework for a recent project I worked on which required automating the UI of Microsoft Project Pro 2003.  It allowed developers to program against an API to create "Steps" and "Actions" whose results could be linked to and iterated over by subsequent Steps and Actions.  Very cool stuff.

# Thursday, October 06, 2005

Miyamoto Interview at Engadget

Thursday, October 06, 2005 2:08:56 AM UTC

Engadget is featuring an interview with Shigeru Miyamoto

In commenting on the Revolution controller, Miyamoto says:

"Personally, I feel that first-person shooters are really well-suited for this controller. I’ve worked on them in the past in the Metroid Prime Series. And to be honest, I felt that first-person shooter controls on a classic controller were kind of clunky. They didn’t feel very—they didn’t feel very right. Whereas with this controller, with the nunchuck-style of controller it’s extremely natural and extremely intuitive. First-person shooters are a genre that are very popular in the United States, and I think that when gamers get their hands on this controller and start playing first-person shooters with it they’re going to find it’s probably the best way to play that kind of game."

Yeah, I can recall when I first made the leap from console gaming to PC gaming.  I had been playing way too much Goldeneye on the N64 (possibly the single best console shooter, ever) for months during my freshman year of college.  At some point, I started playing Rainbow 6: Rogue Spear, a very fun tactical shooter.  It was hard to play Goldeneye after that since FPS controls on a console just seem weird.  To date, I haven't purchased a single FPS (MGS3 (check out my review on Amazon) doesn't count) on console systems for the specific reason that there's no reason for me to do so.

As has been iterated by others, this will be a huge selling point for Nintendo: they will offer all games and non-gamers an entirely unique experience that cannot be had on any other platforms, including PC.  So far, the Revolution is the only "must have" on my list of next-gen consoles.

On a related note, there's a nice discussion regarding the Revolution hardware at Arstechnica.  I, along with some other Nintendo fanbois, make some good arguments for the plausibility of the "leaked" hardware specs.  Let's hope that Nintendo pulls through ;-)

Man, I'm just salivating for more info!

# Monday, September 26, 2005

ASP.Net Cost of Entry

Monday, September 26, 2005 1:59:33 PM UTC

Over the weekend, I was looking for some nice .Net based, open source web based photo gallery applications.

There are only a small handful of such products, including nGallery and Community Server (which uses nGallery).

On the other hand, one of the slickest and most feature rich web based photo management apps, Alex King's Photos 4.1, is built on PHP and MySQL.  While Alex mentions that it's not a gallery app, it's simple to imagine that it could be with only a few small modifications.

In general, the entire .Net culture of create-and-profit is disheartening, considering the wide open community built around alternative technologies like PHP, MySQL, Perl, and so on.  Part of this is Microsoft's fault for not releasing free, full featured tools necessary to build the applications.  Yes, you could build ASP.Net web apps using only the SDK and command line tools, but then you increase the barrier of entry by relegating the technology to only the diehard nerds.

My hope is that, with the release of the Express line of tools and new development frameworks (like Atlas), we will see more open source tools that don't suck in the next .Net generation.

I'm currently debating on whether it's worth my time creating a web based photo management/gallery application (that doesn't suck) using .Net 2.0 and Atlas or WPF/E, which would limit the availability.  Any votes?

On a related note, this month's Wired mag contains an interview with Tim O'Reilly (of O'Reilly publishing fame).  As summarized by Stephen Levy, the "new Net" is built upon "a philosophy of participation and sharing and a sense that collective action will inevitabley accrue to the greater good." 

When asked to identify his passion with only three words, O'Reilly responded: "Harnessing collective intelligence."  I like to think that Microsoft is catching on and will truly lead us into the pack rather than away from the pack like the lone wolf that is sure to struggle without the support of his pack.  The vision that I see coming out of Redmond with this new generation of technologies is very promising in that respect.  And for that, we should be greatful and excited.  I hope that many of the incredibly talented developers out there who've traditionally shunned Microsoft technologies will give them a shot this time around.  There's just some really incredible free tools on the horizon that will enable developers to create the next generation of web based tools.

# Friday, September 23, 2005

Hideo Kojima: Pragmatic Programmer

Friday, September 23, 2005 5:03:20 PM UTC

"Kojima: - I'm not a game producer because I want to make money - I just want to MAKE something. There weren't any good producers at the time I was looking for one, so I did it myself. I live and breathe for gaming, and if my job was just to lead a company meeting or something, I would never ever do it."

I am often asked, when I go in for interviews, what my goals are for the next 5, next 10 years. I think what these interviewers are really looking for is a reply like:

"Well, I hope to work on some certifications, continue my education as a developer, and work on project management at some point, blah, blah..."

Oddly, working as a project manager has never crossed my mind as a serious possibility. I can't even fathom the idea (at least at this point in my career) that I'd move away from the code, away from the act of creation.

My mother always asks why I'm crazy and don't go to/stick with big companies like JPMorganChase or Merrill Lynch, where I can make almost double what I'm making now. I think part of that is because I like to create things. When you go to companies like that, you don't create so much as do things. Yeah, I guess I could always satisfy my Lego-maniac side on my own time, but when you work in NYC, the commute really eats into your free time.

As Robin James Adams once wrote in his excellent blog post/essay:

"Programming is, above all, a creation act. In this sense, writing a good program is not so very different from designing a usable interface, or producing an aesthetic work of art, or writing a clearly articulated essay, or any of the other myriad creation acts humans delight in...For the programmer essentially works with concepts alone, he builds abstractions that have no real basis in reality."

And that is truly what I enjoy about programming and software development: the idea that I am creating some piece of code that someone finds useful. It is for this reason that I find that it is not nearly as satsifying working in the product space (i.e. working with SharePoint, Plumtree Portal, etc.).

"Kojima: - The technological development is also going so fast now. If you keep away from the development team for a period of time, you can't just pop back in. You just don't know what they're talking about. That's why I can never leave the development phase of games."

When I first arrived here at Immedient, I had a talk with one of my then co-workers, Kent Brown, about his design philosophy and his approach to software. It had arisen out of a discussion about Rockford Lhotka's CSLA framework, which he chose to build upon for a project that I was shadowing on. Kent explained to me that he had chosen this framework to build from because Rocky seemed like he was very close to the code; Rocky had an understanding of the real problems and challenges that developers face when building applications. I had just come from my horrible experience at Factiva where I had to deal with a so-called "architect" who was, to me, no more than a one time developer who now focused more on the business than on the technology, essentially, a manager. It was refreshing to hear Kent's perspective, though, on the subject of being an architect.

His sentiment mirrored the words of Mr. Kojima: you must always be deep in the code and the technologies with which you choose to build your creations with. Otherwise, you risk losing touch with the act of building, the act of creation and all of the difficulties and joy that go along with it. Kent also emphasized that he felt that one could not be a successful architect without knowing the technology inside and out since then there would be no base from which to design; any design born of such circumstances is doomed to failure. Such was the case with John, the self proclaimed "architect" at Factiva who had never in his days developed a single ASP.Net application and somehow ended up as our architect on this project, responsible for making technical design decisions regarding a technology with which he had no foundation in apart from a few introductory classes.

In The Pragmatic Programmer, Hunt and Thomas offer this as tip #8:

"Invest Regularly in Your Knowledge Portfolio"

Extrapolating on this, they add that, as developers, we should always try to:

  • Learn at least one new language every year.
  • Read a technical book each quarter.
  • Read nontechnical books, too.
  • Take classes.
  • ...
  • Stay current.
  • Get wired.

ASP.Net is not even 4 years old yet and we are on the verge of an entirely new paradigm in developing web based applications with ASP.Net 2.0 (re:Atlas; okay, not entirely new, but just incredibly painstaking and difficult before). Just as Kojima points out in the game development space, in the web/desktop applications space, the technologies change so rapidly nowadays that, as developers, we really have to keep our nose to the grindestones and hold close to ourselves the passion for creation and self improvement.

I think Kojima's words and my recent work with the beta bits of .Net 2.0 and VS2005 have helped reinforce in my mind that it's okay to not want to head towards a management career path :-)

# Thursday, September 22, 2005

Of Katamaris and Revolutions

Thursday, September 22, 2005 12:52:31 PM UTC

I came across a link this morning (via Ars) to a forum where Chris Kohler of Wired News does an impromptu Q&A on his exeprience with the Revolution controller at TGS.

Kohler echoes some of the same sentiments that I had when I first read about this.

"The Revolution controller, much like the DS touch screen, takes away a barrier between people and machines. People loved to post that Minority Report screen as a joke, but that's pretty damn close to at least the thought pattern behind the controller -- you just reach out with your hand and start manipulating things on-screen.

For some people, a DualShock controller is just that sort of extension of their person. But it takes a lot -- some would say a lifetime -- of practice to get there."

There are some memorable posts in this thread; this one being perhaps one of the top 10 funniest I've read all year:

"Let me say this again.

I took the controller and pointed it at the screen. This moved a cursor around wherever I pointed my hand.

AND FUCK ALL IF I KNOW HOW IT WORKS.

Nintendo could have engineered a little tiny hamster that runs inside a ball that tilts around when you spin the thing, for all I know. When you press the A button he gets an electric shock and pees."

I also like this one from Ars:

"A friend of mine told me a few years ago that he didn't expect video games to get any better in the future. Everything's been done, and only the graphics improve now. I told him then that the reason for this was the level of precision in control. You simply cannot control a ninja with 10 buttons and feel like you're *really* a ninja.

The revolution controller, if it is precise and fast, provides a quantum leap in the level of control you can have over games. In my book, Nintendo will win the next-gen console wars, because the Revolution is the only next-gen console being made."

On a related note, I just got my copy of We (Love) Katamari last night (via the bestest wife in the whole wide world) and I can't help but think how awesome this type of controller would be with a game like Katamari. When my wife first started playing it, it was quite humorous watching her shift her whole body around as if it would help her roll the Katamari in a different direction.

While the game doesn't break any new ground like it's predecessor, it is, nonetheless, a cute, quirky, and entertaining game.

I only have a few gripes about this version:

  • The new soundtrack isn't as solid as the one from the first. It seems more electronic...not really my style.
  • There are now, somewhat craftily disguised, loading screens during the middle of a level as a new area is opened up. This was somewhat annoying as this was non-existent in the first version.
  • The "storyline" isn't quite as quirky and WTF-inducing as the first one. Although it's cute that you bump into some of the characters from the first one once in a while.
  • Royal Rainbow is not nearly as badass as the original.

On the plus side:

  • You can now select your background music for each level, which is cool.
  • I haven't tried, but I think you can play as any of the cousins.
  • You can accessorize the Prince with multiple presents now.
  • There's tons more new stuff to pick up and new environments.
  • The gameplay mechanics are improved slightly, especially the camera.

For $30, it's not a bad pickup. The original gets a 9.5/10. This one gets an 8/10. This one just doesn't quite floor you like the first one did, but it's still a fun and enjoyable way to kick back and unwind at the end of the day.

Katamari only serves to reinforce the point that games need not be graphically/visually extravagent or realistic to be enjoyable. In fact, part of the charm of Katamari is the quirky, colorful, blocky character design. To this end, I think Nintendo has chosen the right path. Of course, the Revolution will offer superior graphics to say Resident Evil 4 on the Gamecube, but the point is that this won't be it's only selling point.

# Monday, September 19, 2005

The Unexpected Gamer

Monday, September 19, 2005 5:53:26 PM UTC

(Random) It has a similar consonance to The Constant Gardner.

Anyways, after watching Mr. Iwata's keynote speech, I'm more convinced than ever that Nintendo is going in the right direction and is going to change the way we, as a society, view gaming.

The key point that Mr. Iwata makes is that the human-machine interface for consoles, the controller, has never been fully accepted.  In fact, non-gamers probably find them daunting and quite alien.  Truth be told, one of the most tedious parts of starting any new game is learning the control scheme.  Memorizing button combos and what not has never been a strength of mine, even after years of gaming.

Mr. Iwata states that while even your grandmother would pick up a remote control to interact with a television, many parents that grew up before the video game generation are turned off to the games before even playing them because they're intimidated and/or confused by the interface. 

Making games more complex and more difficult (the route that Microsoft and Sony are taking), simply alienates more users by making the barrier of entry more difficult to surmount.  A big part of that barrier is the modern controller and the fact that as games become more complex, the only way to add new control schemes is to add new buttons or utilize more combinations of buttons.  Neither of those options is optimal nor are they intuitive/easy to use.

On the other hand, as I was explaining to my wife how utterly badass it would be to play Katamari Damacy with this new controller, even she was getting excited about it (and she's as anti-gamer as they come).

Mr. Iwata emphasizes an important point that I find myself agreeing with more and more: games today fail to stimulate me.  You can only go so far with graphics and immersion before it becomes the same-old, same-old.  We can clearly see how this has failed the movie industry as CG is so common nowadays, that even the definition of what is visually inconceivable is radically different from what it was only a decade ago (or even half a decade ago for that matter); at some bifurcation point, people just don't care about how pretty or how realistic it looks.  Badass CG just doesn't cut it nowadays.  The studios that "get it" smartly allot small budgets to promising stories while the others throw big money to create a grand visual experience (some studios are just dumb and continue to build stupid rehashes).  The latter works increasingly rarely nowadays.

I only own four games for the PlayStation 2: Dance Dance Revolution, Metal Gear Solid 3 (I wrote a nice Amazon.com review for it), Katamari Damacy, and We (Love) Katamari.  Part of the problem is the time commitment.  As I've grown up, I find myself with an ever increasing number of primary responsibilities and gaming is becoming a hobby that I enjoy when I have free time.  As such, I don't want to invest a huge amount of time playing long games (MGS3 being an exception).  As great as Resident Evil 4 is, I still haven't finished it, months after I purchased it.  The other part is that there aren't games that I want to play.  I mean, how different can MGS4 be from MGS3?  What new gaming experiences can I expect?  None.
 
That's the most disappointing part of this: game developers have resigned themselves to rehashing proven formulas rather than innovate and create new expriences.  As we will see with the introduction of Atlas and WPF/E, innovation in the UI can change the way we build and think about software.  Similarly, Nintendo has proven, with the success of the DS, that changing the way we interact with game devices can spur innovation in developing new gaming experiences.  Most importantly, and Mr. Iwata repeatedly emphasizes this, Nintendo is aiming to generalize the definition of a "gamer" by making the human-machine interface intuitive to everyone.

Without question, of all of the next-gen consoles that are coming out, the only one that I'm even remotely excited about is the Nintendo Revolution.  And perhaps more importantly, even my wife is excited to try it out.

# Friday, September 16, 2005

Wow.

Friday, September 16, 2005 3:47:34 PM UTC

It's been a while since I've been this giddy in one day. 

But I can't help it.  I don't even feel like working on any of the stuff that I'm supposed to be working on. 

A video posted at channel9 demonstrates what Microsoft has been craftily hiding with "Sparkle". 

Wow.

It's really hard to describe my internal feeling at the moment; it's a childish giddy-ness.  I started jumping around, trying to tell people about how awesome this really is and the implications it has for software development.  No longer are we constrained to plain-Jane UIs!

In addition, it's also incredibly impressive that they've basically integrated a 2D design environment, a 3D design environment, and animation tool, and VisualStudio in one.  It's quite a task to surmount and I'm really, really juiced about getting my hand on this.

Revolution Controller Revealed?

Friday, September 16, 2005 12:33:29 PM UTC

Engadget has a purported sneak peak at the Nintendo Revolution controller.

This is perhaps the most important point:

"The controller part acts like a mouse as you move it around in 3D space."

I've recently been talking with Igor, one of my co-workers, about the human-machine interface and this was one of the points that he made.  He wasn't really that impressed with the Windows Vista UI improvements since it really doesn't change the way we interact with the programs.

As the discussion continued, I started forming a mental picture in my head of what it would be like if we interacted with our programs in a 3D manner.  Imagine that each application is a room floating in space.  If you want to use an application, you summon the room and walk into it (my mental picture is of a room moving towards a person while the person is also moving towards the room).  Inside the room, the interfaces are the surfaces of the objects in the room.  If you need to use two applications at once, you kinda wave your hand and a wall opens up into another room which serves as the context of the second application.  So for example, a user using Excel might have a different spreadsheet on each wall (it may not be a four-sided room).  Now the user wants to load a graph into a Word document.  The user would "extrude" the wall and kinda create another room which would be the context for Word.  The graph would be a painting or a wall poster which I could just move into the Word "room" and put it on a wall where I have a document loaded.

Then it hit me.  It's not that it's impossible to do this now.  We can easily create highly detailed 3D worlds and render them on mid-high end PCs (Doom III, Halo, Battlefield 2), it's that the primary human-machine interface, the mouse and keyboard, were not designed to interact with a 3D world. 

I mentioned this to Igor and he said "Yah, that's exactly the problem" (or something along that line) and started to move his hand around as if he were controlling a mouse in 3D space instead of a 2D plane.  It's a catch-22 situation since no one will make a fully 3D interface until there is a proper interface and no one will waste time developing this interface unless there is some application for it.

So, to me at least, this controller could really be "revolutionary".  The first mouse came into existence in 1964 and has remained pretty much the same since.  Yeah, it may be wireless and use lasers now, but the mouse is a limiting factor in the ways we design our software interfaces because it only understands 2D space.

After reading more about the controller at IGN, I've come to the conclusion that this is totally badass.  I mean, think about having two of these controllers in a fighting game (DoA, Soul Caliber, etc.).  One controller would be used for attacking.  You can slash, jab, and punch by moving the controller in 3D space.  With the second controller, you control the viewport; if you move the controller forward very quickly, you dash in that direction.  Move it to the right, and you turn.  Hold down a button on the controller and move it to the right, and you strafe.  The possibilities are mind-numbing and if Nintendo can pull this off (get lots of 3rd party developer support), it would truly revolutionize the way we interface with our machines.

RSS 2.0 Atom 1.0 CDF