Thursday, November 26, 2009

Testing the updated next feature in Blogger

The little 'Next Button' has been updated.  Or so says the Blogger Buzz blog.

It seems to work with this blog; which either focuses on programming, technology, video-games, or the odd short story.  It tends to stick with technology; and away it goes.  I'll admit I was happily surprised that it picked up something that could potentially be interesting.

Now; the other site I tried was my "5 minute" experiment.  It's a series of short fictional stories (if you can call it that) written in five minutes without any backspacing.  I do correct the language a bit; but the words are as they came to my mind.  This blog, the 'Next Blog' button couldn't figure it out.  It's all over the place; it doesn't attempt to take any topic seriously.  It leads to some interesting places.  Actually, it found one person who seemed to have some creative writing.

The last one is my comic blog.  It's not worth linking to as I can't keep a drawing schedule.  I can't even keep a writing schedule for goodness' sake.  Let's say this one has the least chances of succeeding, and it fails miserably with the 'Next Blog' button.

So here's the conclusion - it's great.  As long as you're grounded on earth with some sort of consistent topic and not all over the place and writing about the non-existent.

I could also conclude that all technology is a work in progress...  no matter how perfect it seems now, something better is bound to arrive too soon...

Sunday, November 15, 2009

First Impression of New Super Mario Bros. Wii

After playing the game until world 4; sometimes I feel this is a great game, other times I feel let down.  I'll start with what the game is, the move on to what's good about it, and leave with what could have been different.  Albeit, I'm sure my opinions will evolve as I continue playing the game.

This is a standard, 2D mario game with 4 simultaneous players who (theoretically) help each other through the levels.  It has everything that's expected, vibrant colourful scenery, a very short story line, goombas, paragoombas, spineys, koopa kids, ghost houses, multi-colored Yoshis, and anything else that has been seen over the years.

The good part - it's Mario's standard tried-tested-true formula.  The levels are designed to reward curiosity (see a block?  what if I hit the block?  what's in that tunnel up there?  can I go to the top of the level?)...  The levels, generally, feel fresh - they have oversized obstacles, gears sending the player every which way, spinning cubes, spinning secret pipes, etc.  The backgrounds look great; and the visuals are excellent (too much flare would have distracted from the game-play; and the screen can get quite busy with enemies which makes the clarity greatly appreciated).  Also certain underground levels are only lit by light-emanating enemies or mario himself which adds a new challenge.  As well; the difficulty level has increased - or so it appears.

The bad is the ease at which I got to world 4.  I'm hoping that the coins will keep me busy; as well as finding any hidden levels.  Fortunately; this game already is more challenging that the DS iteration.

Sunday, October 11, 2009

Stepping Back From Videogames

I've entered a mode that I can't explain.  I used to enjoy games more than this.  Now; they all feel like a series of chores to distract from actual chores.  The fun seems to have seeped out of them, slowly but surely.  The entertainment value is there, but its pull isn't so great.

Then I wonder, why should I do this chore with no tangible benefits compared to that other chore?

This year I've "invested" far fewer hours playing video-games than any previous year.  And I don't miss them at all - it's as though I've been addicted to games, went to rehab, and wondered why I play them in the first place...

Saturday, August 15, 2009

Modern Treasure

Sitting at 1220 Montreal Road was a beautiful house within which, rumors told, the family hid a great treasure.  Secured by multiple security systems, each as difficult to bypass as the previous.  Security so tight that only a team of professionals could get through it safely.

Jane believed her team could pull it off.  She had watched the family for days on end as she moved in next doors, to 1218 Montreal Road.  She befriended the family, and managed to discover the ideal time to strike.  The 25th of June, the day they leave for a long vacation in the Caribbean for over 2 weeks.

On the morning of the 25th, Jane put a small bag filled with flyers on the porch of her victims.  The bag looked identical to the one she distributed to all of the neighbors.  Each neighbor, took the bag into their home.  Her victim threw the bag into their home not caring about it as they were too busy rushing out towards the airport to make their flight.  They wanted to focus on ensuring everything was in order - not a petty bag.

However that bag was no ordinary bag filled with papers and advertisements.  The catalog was hollow, and it contained this small robot in the shape of a fly.  The robot could fly, but fed upon the sun's rays.  Using short-range radio and a miniature camera to maintain communication and visual contact, Jane settled it in the sun on a windowsill, where it's batteries would stay full.

During the nights of absence of her victims, Jane would fly the robot through the house until she felt intimately familiar with it.  She found the entrance to the treasure - obviously blocked off - and obviously too difficult for her little robot to enter as the entrance was sealed off and the little robot couldn't produce enough pressure on the buttons on the control panel beside the entrance to push any button.

However, all of this was part of Jane's plans.  Upon the family's return, she had her fly keep an eye on the individuals.  She noticed the mother go to the entrance of the secret area where the treasure should be kept.  The mother entered a code - <1 2 3 1 0 1> - on the numeric keypad.  She gripped the entrance and slid it aside, the and fly followed her in.

Obstacle after obstacle the mother unlocked, and the fly followed her, and Jane noted each movement and each solution to the ever-more complicated security systems.  The details being irrelevant.

On the last door, the room filled with treasure, was actually quite empty.  It was a barren room, with white walls, white ceilings, and a carpeted floor.  In the middle of the cylindrical room was a small pedestal, upon which there was an urn.  Two lawn chairs faced the urn.  On the pedestal it was written "in memory of Jack".  The pedestal was made of glass, transparent and hiding nothing.  The urn was of clay, but not worth the effort of Jane to break into the house to get.

Shocked, Jane let her fly rest in peace at the foot of the pedestal.  Months of planning, massive sums spent, all to discover that the treasure wasn't there.  That it seemed to have moved.

The next day, Jane asked about the rumors of the treasure to her neighbors.  Openly, they replied: "In this mass-produced world - everything exists in infinite multitudes which drives down value.  The unique objects - the objects that identify us from the sea of duplicates - are what we believe to be of utmost value.  Hiding money would only attract thieves therefore we use the bank, expensive objects are mass produced - we can buy one again as we have the means.  Thoughts can be expressed and transferred into a digital form - duplicated and spread effortlessly.  People are unique."

Saddened and guilt-ridden - Jane moved away.  Her victims continued living, attracting the curiosity of thieves.  None managed to get the treasure, but who would want to go through the effort to get it?

This story is simply a few ideas mixed in together.  It's not really fleshed out - but it describes what I'm thinking about; namely how 'value' is being twisted and can be relevant to specific individuals, not everyone.

Wednesday, August 12, 2009

Information on the Internet

Once upon a time there was this small tidbit of information.  A datum.  Pronounced useful and thrown onto the disarray that is known as the world wide web.  The datum, lonely, remained stationary - lonely - disconnected.

The datum wanted friends, so it tweeted to everyone.  Messages of it's loneliness.  It got a few followers.  They were bots.

The datum remained in obscurity.  It knew it's self worth, but it felt like the web didn't want to mesh to it.  That the spiders never got to it as no-one extended a filament for the spider to traverse.

The datum, lonely, gained a group on Face Book.  No-one joined it's group - who would want to be fans of this small morsel of useful information?  It was as though the datum was banned from the web.  But how could useful information be banned thought the datum.

Until it linked to related datum.  Extending itself for a solitary, useful, datum to an interconnected set of data whose combination is infinitely more useful as the datum now relates itself historically to previously related datum, and to similar datum discussing the same subject at the same time but from different point of views.

The datum, now part of the data that makes up the web, became accepted and linked to.  No longer solitary.

As information - out of context - without any means to learn of the context, is useless to the user, even if it applies to the current situation.

Tuesday, August 4, 2009

Introducing Topics

Each word, carefuly chosen, concisely reflects the material of the main matter without burderning the reader with details while providing a miniature conclusion based on a fraction of the information.  That is the type of introduction I strive to write, however selecting words is a much more laborious process than my imagination would allow me to believe possible.

These missing introductions are the plague of the posts within this blog -- immediate ideas are written ignoring the final structure of the document.  Ignoring the road map that is the introduction.

Once finalized, the introduction will scope the text, keeping it in order and coherent.  Ensuring that minute details are presented in order as defined by the macroscopic view of the topic presented in the introduction.

I need to finalize the introduction to my thesis.

Sunday, August 2, 2009

Opinion of `Harry Potter and the Half Blood Prince' Movie

To be honest, I didn't expect much when I went to see the movie.  From what I heard here and there, however there are many glowing reviews of the movie online.  However, I didn't expect what came out of the movie - as such the following impression could as well be due to missed expectations (which I believed to have kept low) and not to a movie that missed it's mark.

I've read, and enjoyed, all of the Harry Potter books - the first being my favorite.  Each book sets out a puzzle.  May it be finding out who the evil teacher is, discovering who a given person is, finding a specific person, etc.  And once the puzzle is solved -- at the last minute of course -- does the story come to an end, usually through some battle.  As well, the puzzle has plenty of tracks to send the three protagonists off course, and the school-year keeps them occupied.

Upon watching the movie, something didn't feel right.  The characters were there, however there was this 'puzzle' component that was missing.  Of course there was a search for who the `Half Blood Prince' was, and what Malfoy was doing, and the final memory from Slughorn.  There were no false roads - everything was straight-forward and clear.

I understand this movie is supposed to serve as a bridge to the other two, albeit it feels like they simplified it for the sake of making the last two better.  Every major component is there, but not fleshed out.  There are puzzles, but no false paths that can be deciphered until the next movie.

The movie finished off as a bridge to the next, whereas the book went out with a bang aided by a battle at Hogwarts castle between students+teachers versus death eaters with Malfoy and Dumbledore discussing amidst the chaos while Harry is stuck underneath his invisibility cloak immobilized by Dumbledore; this one had Dumbledore die and death eaters proudly running off and only killing Dumbledore.  Maybe my favorite scene in the book - absent in the movie.

The other scene in the book that I can clearly recall - was that of Moaning Myrtle screaming "murder" after Harry hits Draco with the spell 'sectumsempra'.  In the book - there is consequence for Harry - and Snape clearly goes for the book.  In the movie, in practically the next scene Harry resolves to get rid of the book - and he just walks away from a bloodied Draco letting Snape tend to Draco's wounds.

In the end, it wasn't a bad movie, neither was it as good as it's predecessors in my opinion.  My opinion has nothing to do with the quality of the movie's visuals or audio (which are superb - I wouldn't expect anything less from a big budget movie) but the chosen content.  This seems to be because two scenes that I associated as memorable from the book were missing from the movie.

Sunday, July 12, 2009

Perceived Flaw with Java

There are several things that annoy me about Java.  Same goes for C# and similar languages.  Albeit - I do respect the "code-behind" feature of C#.

The flaw is not security, it's not performance, it's not syntax, it's the encouraged methodology.  And I'm not complaining about the inner classes used to implement interfaces to receive events (although that could be a rant on it's own).  It's a philosophy that developers must break out of.

Getters and setters - I'm looking at you!

Nothing wrong with getters and setters?  Hmm - let's delve deeper into the perceived problem.  A getter allows code to extract values from a class, and a setter allows us to set values into a class while performing a bit of error correction.  Sounds good so far.

But there's an ominous problem here - and it appears to affect most OOP languages.  The getters and setters - when used improperly (happens more often than not) - bypasses the elegant concept that a class' public methods are simply a gateway to get something to happen and that the underlying implementation can change at will.

Classes should perform a (limited) set of actions and the getters/setters should reflect not the underlying implementation but what the user of the class is expecting.  So often I've seen getters/setters for questionable things that clearly indicate how the underlying implementation must function.  Functions made public for the sake of having them accessible by any other class (since it was convenient).

And XML serialization is making this worse, using reflection to get at the class internals by assuming variables will each have a "getValue" and a "setValue".  The holy-grail of OOP - modular components that can be changed independent as long as they retain the same behavior diminishes as the getters/setters imply an implementation.

I could argue for C-style header files.  However, that wouldn't make a difference - it's a method that I feel Java makes worse.

For example - for most problems - if posed correctly - can be very simple and elegant.  Composition of this simpler problems using classes that expose simple interfaces can keep the program as a whole simple.  However, in reality at times, it's a free-for-all with overly complex function calls... (a big picture view is required to get anything done)

Maybe I'm ranting for nothing?  Maybe things need to expose their complexity?

Wednesday, June 24, 2009

Taming Time

Tick-tock the clock counted down.  Tick-tock it sounded.  Tick-tock it resonated down the hall.

Workers count the tick-tocks.  Workers know there are a fixed number every day.  Workers eagerly await their freedom.

Time is evil.  Time slows down for people who do not enjoy themselves.  Time lengthens the tick-tocks for the workers.

Supervisor counts the tick-tocks as well.  Supervisor hopes a worker misses a tick-tock.  Supervisor despises time for it's negative effect on people.

And throughout the day, supervisor tries to keep people productive, time attacks the bored workers, all of whom are listening in to the tick-tocks from the clock.

Tuesday, June 16, 2009

Highly Parallel Programming Self Reminders

Threads, that's the topic of the day.  Very simple?  I've been experimenting with ways to distribute my code, and I've come to a few simple conclusions:

Hide Threading:  Threading should be done by the underlying API.  And this underlying API's threads should block so they aren't squandering CPU resources.  This means that whenever the given threaded component is used, it will use CPU resources as needed.

Worker Threads:  Have a few dedicated threads for the heavy lifting - and choose the number of threads based upon the number of cores that are available.  All other threads should be in a nearly permanently blocked state.  This means that your worker threads won't compete with the resources of the other threads.

Document:  Knowing what's thread-safe is critical to writing code that won't fail in the long run.

Queues:  Use a queue structure to send messages between threads.  This means that a thread won't block immediately if another thread doesn't reply immediately.

Cache:  Be aware of it, and code expecting the CPU to have a cache.  Programs written in Java, as well as in C will benefit from being aware of the cache and the underlying structure of the system's memory.  For multi-core processors, this can be the source of a speed boost (eg. L2 cache is shared among cores on Core2Duos).

Compress:  Do you really need all that data to travel across the bus?  Minimize data transfer when possible by reducing the number of bits needed to represent the data.

Benchmark:  You don't know the ultimate gain in speed.  Test your theories -- preemptive optimization may actually hurt the performance of the application.  Overflowing the bus degrades performance, btw.

Use What You Need:  If a single core gets the job done - then use a single core.  Distributing a problem has overhead - programmer wise as well as speed-of-execution wise.

Have a Game Plan:  The most important part.  Know how things will be structured overall.  If you can't see the whole structure in your mind, consider alternatives as it might be too complicated.

Extra thoughts as of February 24, 2015:
Tasks:  Use task managers to handle multi-threading when possible.  For example Grand Central Dispatch in OS X will automatically manage the number of available threads based upon available CPU across all applications.

Task Stealing:  Tasks, described as a series of interdependent operations based on data transformations, allow tasks to focus on recently touched data.  Task stealing, if I recall, is quite optimal and allows another core to steal tasks when it is idle from those assigned to other CPUs.  Look at Cilk and Intel Thread Building Blocks as concrete implementations.

Asynchronous:  I believe the OpenGL API provides an example of what to strive for in terms of APIs.  Writing serial code and logic is easy, parallel is hard.  Shouldn't the API run in parallel while giving the illusion of sequential execution?

Sunday, April 19, 2009

Cocoa Formatters

Every time I play with Cocoa, I'm reminded of how much I enjoy the framework.  It's elegant, easy to use, and usually provides a small, elegant solution to whatever I'm trying to accomplish.

Now here's what I wanted: Something that would only allow numbers to be entered within a text box while retaining compatibility with 10.4 (to code/test on my PowerBook).

My first instinct was to jump to interface builder, and link up a NSNumberFormatter to the NSTextField, launch the app, and watch what happens.  Let's say I wasn't that impressed...  The NSTextField would hog input until the input was valid.  And I didn't want to update a text box like I used to do.  I only wanted valid input as keys were pressed, not something that the user (myself) would have to think twice about as they try to comprehend an error message.

So, trolling the documents I found a nice method "setPartialStringValidationEnabled:". This is nice.  Would do exactly what I wanted with minimal effort - wait, only available in 10.5...

So overloaded NSTextField in objective C, and tried to intercept the keyUp and keyDown messages from NSResponder.  Hoping that if I removed all non-numerical keys from the stream, my little NSTextField would - hopefuly - not get filled with data.  It didn't work.

However, NSTextField is just a front-end to NSTextFieldCell.  So simply replacing the NSTextFieldCell at runtime with my own super-classed machination should work.  Should.  It didn't respond to NSResponder.  A very interesting thing, but where does the input come from.  Cocoa should be easy - there ought to have an easier way to do this - one that wouldn't make the developers from Apple cringe (if ever they were to see it).

So - again another look at NSFormatter.  MacOS, since 10.0, supports a method called 'isPartialStringValid:'  for subclasses of NSFormatter.  After reading the docs a bit, I implemented a simple formatter where this method would only return NO.  And behold, it was impossible to type anything in the NSTextField!  Success!

So here's the complete implementation of my subclass of NSFormatter.  It simply only allows numbers of the form [+,-][0-9]*[.]+[0-9]*.  For rounding reasons, I've limited the number of digits to 12 and used doubles for storage:


@implementation X_NumberFormatter
- (BOOL)isPartialStringValid:(NSString *)partialString newEditingString:(NSString **)newString errorDescription:(NSString **)error
{
int x;
int l = [partialString length];
BOOL foundDecimal = NO;
int curPostDecimal = 0;
for (x=0; x
{
unichar curChar = [partialString characterAtIndex:x];
if (!(curChar >= '0' && curChar <= '9') && curChar != '.' &&
!(x ==0 && (curChar == '+' || curChar == '-')))
return NO;
if (curChar >= '0' && curChar <= '9')
{
curPostDecimal++;
if (curPostDecimal > 12)
return NO;
}
if (curChar == '.')
{
if (foundDecimal)
return NO;
foundDecimal = YES;
}
}
return YES;
}
- (BOOL)getObjectValue:(id *)anObject forString:(NSString *)string errorDescription:(NSString **)error
{
*anObject = [NSNumber numberWithDouble:[string doubleValue]];
return YES;
}
- (NSString *)stringForObjectValue:(id)anObject
{
if (![anObject isKindOfClass:[NSNumber class]])
return nil;
return [NSString stringWithFormat:@"%1.12g", [anObject doubleValue]];
}
@end

Sunday, March 29, 2009

My Issue With Trust

This is something that's been bothering me for quite a while.  What has happened past 2001.  After that time, it's as though the foundation of our society lost its way.

These are words not to be said lightly - so let me step back a few steps and explain my thoughts.

Everything we have is built on trust.  People trust schools to care for their children.  Contracts are just a legal binding to what is trust.  The bigger the project, the more you have to trust the people that build its components.  That the people are competent, and know what they're doing.

Now - let's zoom to the present.  There's fear - and trust.  Fear that we can't trust another person.

Even after that year, security was tightened as the trust was tested.  A normal reaction.  It keeps on tightening.  Yet it does nothing to our current situation...

Supermarkets are still the same.  They trust you will be loyal - and not taint the food as you walk the aisle.  They trust you won't inject something into the food - some of it not even sealed.

What will we do?  Put the food inside of vending machines so that only the employees can touch it?

Can we trust those employees?  We'll they'll need a security clearance to work at the local grocers.

Those employees seem young and untested - they haven't gone through life - why not require older employees to manage the food?  Because we can't trust anyone anymore.

What about the machine that now dispenses the food... it could be injecting poison into the food.  We need a second group to verify them.

And why not put each part of the production underneath the camera.  So that a consumer can verify that things were done proper.  However who set up the camera?  Can they be trusted?  Did they make it loop from another time? It will be very generic, standard, similar work done each time.

And we can continue down this spiral of trust.  See how troublesome it becomes.

Now closer to the heart of the issue - us regular people did not hardly change our habits.  Think of it.  The food is still promoted as it was before - as is most of the goods we purchase.

There are still cameras.  There are still guards - just more of them.

Who has the insane amounts of protection?

I'll propose that there will always be a weak spot.  Things we assume to be always safe will not be so at some point.  I haven't even talked about trusting those that make the food...  (recall the peanut fiasco - thank goodness that wasn't intentional)

Go down the current road - and for whatever we do, we'll need a security clearance.  Because anything can be dangerous in the wrong hands.

Saturday, March 28, 2009

Progression Towards Consciousness

While I'm aware of this, I'll write about it.  I've become more conscious of my surroundings.  I notice more things than before.

Yet, if you asked me a few years ago, I would have been quite content with my ability to assess what was going on around me.  The feeling of being at the top of the world.

However, I'm grateful for this.  Now - if I can see more than before - and before I wasn't willing to acknowledge there was more to see since I couldn't see it - that would mean I still have quite a bit of progress to do.

What type of details you ask?  Simple things that you take for granted I'm sure - at times I feel like my social skills are years behind.  For example, properly detecting another person's mood, reading expressions, and knowing how my current expression affects other people.

The last part is interesting.  I'm able to give the "no" look to others, and they avoid conversation - and by they I mean people trying to sell things at stores.  My parents always get stuck in such conversations.  If I put on my "yes" face - then they'll approach.

Unfortunately, this doesn't work when the store is empty.

Unfortunately as well, I've only discovered the latter recently - all while reading "The Rick Mercer Report: The Paperback Book".  Miracles that a smile can do.

Friday, March 27, 2009

The Selfless

The selfless are normally well regarded in society.  They put others first, and take care of themselves later.  I have no problem with that - it's a great quality.

My topic is the extremely selfless people.  Those that omit the 'take care of themselves' part.  The ones that are lonely and are selfless for attention.  So desperate for attention - and at the bottom of the social pit.  And their lives are too comfortable to leave the confines of their homes.

Then comes my fear - am I becoming one of these people.  Socially isolating myself.  But then another task takes over my thoughts until I'm back to self reflection.  And then I think of fun - it's never in solitude - always among a group.  Either friends or unknowns.  Once things get better financially - I'm going to look for a chess or go club.  My mind could use a bit of tweaking, and my social skills are in need of updating.

But that's the least of my worries for now - I still see other people.  Some people, though, are much further along.  It shows me the path to avoid.  They seem apathetic to suggestion - say they'll resolve the issue while delving further in their ways.  Even worse - the word `I' became unspeakable - replaced with the word `we' bearing more power but skewing reality.  And some things are `because it's who I am'.

Giving up.  Definite failure?  I hope not.  So away from that I steer.

Wednesday, March 18, 2009

The Experiment Thus Far

This small experiment, merging writing with curiosity and whatever comes to my mind has been a success. It's a social network - and this experiment was meant to see what would happen without aid of an existing social network or even minor mentions of it's existence.

And it comes back to the previous post - everything is recursive, cyclical.  Having not entered any cycle - by masking followed blogs and seeming to be alone - it has remained alone.

Exactly like life - do nothing, be nothing.

Wednesday, March 11, 2009

Land of Cycles

My current, ever-changing, opinion of life is getting weirder - however, I'd like to focus today on cycles and dependencies.

The thing that brought this to my attention was game reviews - they're nice, simple, and an easy way to figure out what's potentially interesting.  This works well with my mode of obtaining games, go to the store, browse the shelves, read reviews, watch game-play videos, and ultimately (after quite a bit of research) purchase a new game.  Normally, this system works great - but it's inherently flawed.

The store will pack up on what they believe to be popular.  Not a problem, a wise business decision - I'd do the same in their shoes.  The review sites will focus on reviewing what they believe to be popular games, not a problem - a wise decision - that's what people want.  Game-play videos will focus on popular games, and the more popular a game becomes (before launch or after), the more content it gets...

Let's complicate things - the store must determine what's popular.  An easy way to do this is by looking at trends, and review sites - see how hyped a game is.  The review site will use various arcane factors (I'm guessing popularity, brand-recognition, known people, etc.), and the videos will be either from publishers, users, or critics - the user-videos will only cover the popular...  (would you go out and buy an expensive toy without any assurances that it's good - just looking at a box?  Some would - and I would for certain brands)

With that disclaimer out of the way, I'm free to reveal that I'm preventing innovation.  Simply stated - if it doesn't gain recognition - then it won't be bought.

Now, let's assume some sort of game comes out: it should get reviewed.  If someone wants to verify that review, they just need to rent it - but the rental store will only stock up on what's known to be popular (or the ones near at least).

It's like an infinite circle - if no-one within that circle picks up the product and puts it in the spotlight - it's as though it never existed - I won't know about.

If it appears on shelves - I'll read up about it.  If it appears on a game site - I'll read up about it.  Then I'll do research as normal.  But notice how this limits what I'm willing to try as a game?

Enough of this simple game cycle, let's tackle something for relevant - the economy and recession.  At it's core, the concept is quite simple: people stop buying putting others out of a job.  These people stop buying, and the entire machine comes crashing (why throwing money at the problem - in an intelligent way - is a good idea in my opinion - as more people spend, more people stay with jobs, and the more things float).

This cycle is interesting in that we are stuck based upon what we know.  The only difference being that games are bought based upon what others know for sure, stimulus is given to who is guessed will be useful in the future.

Like the pro gamblers working the stock-market to make money.  Hopefully their magic eight-ball is truthful.  You can say they use logic to determine what to do - however life always throws random events and oddities to spice things up.

Last note: I trust they know what they're doing

Wednesday, February 11, 2009

Review of SimCity for iPod

SimCity, one of my favorite games.  Like Sonic the Hedgehog used to be my favorite game in the old days of the Sega Genesis.  Also, like Sonic, it's quality and fun factor has been steadily going downhill.

First, my assumptions about this game: SimCity 2000 didn't require much in terms of computing power, and was a good game.  I'll use that as a baseline comparison - not SimCity 3000 even though it's the engine that the game is built upon...

Initial impressions you'll be blown away.  The in-game UI works great for laying down zones, dropping down buildings, and generally managing your city.  Like this game was built for a great first impression.

Now, I want to put on an overlay to see what's going on behind the scenes.  There is a noticeable loading time to get to the screen to select an overlay, and getting back to the game.  SimCity 2000 easily wins here with it's speed.  Why are overlays important?  it's the only way to know how the city is doing.  When playing SimCity 4, I normally always play with an overlay that tells me important information, such as pollution levels, desirability, traffic, etc.  Only if I didn't always switch between them.

Next is traffic.  A city isn't alive unless you see the ants walking around.  And it gives a quick way to get traffic data without pulling up an overlay.  If you zoom in close enough, SimCity for iPod will show traffic.  Point goes to SimCity for iPod.  Traffic looks nicer than blue dashes.

Following item is budget.  Anyone who has played SimCity knows that it's not the initial cost that matters but the recurring monthly cost.  The initial cost is usually quite cheap in the long-run.  SimCity iPod refuses to display the recurring cost until you place an item and get billed for it.  Instant win for SimCity 2000 that didn't fear adding in a bit of "complicated" detail.

Graphical presentation.  No way SimCity 2000 could compete with the beauty of the version for iPod.  It looks like a pristine ghost-town.  SimCity with it's limited color palette had it's charm.  With better hardware, SimCity for iPod wins.  Especially with the continuous zoom feature, something that not even SimCity 4 had.  Unfortunately, zooming is a bit difficult as it must be done at a specific angle.

Terraforming.  SimCity for iPod is not supposed to support this, but it does.  You can terraform with bridges.  I was going to leave this out, but insta-win for SimCity 2000.

What's the point I'm trying to make here?  There's more than initial presentation that's important, nor initial ease-of-use.  The developers seem to have forgotten that people want living cities (in the first release on the app store at least) - which is what makes SimCity 4 amazing - it feels alive.  Like humans walking along the side-walk, etc.  The engine doesn't need to be perfect - it's what it presents that's important.  Not to say that the visuals aren't important, but selecting the right ones are.