Blur #00007

Even if Bing falls short in my search engine battle to the death with Google, you should check out its map utilities.  Here’s a link to the Empire State Building in Bing’s Maps.  I’ve heard this isometric view described as SimCity-ish.  It’s a fun feature, worth the time required to give it a look.

Bring It On! Bing vs. Google

My wife asked a question the other night after seeing one of Microsoft’s new Bing commercials.  You know the ones; the commercials that really don’t tell us anything useful about Bing, but reflects how awful all other search engines are and how they leave their users interpretting rambling non-sense.

She wondered, “How is it a decision maker? What does it decide for me?”

The question is a valid one.  How is Bing being a “decision maker” any value to me?  What a completely freaking useless description of this new service.  It doesn’t reflect whether the service does anything positive for its users, it just makes decisions; good or bad, useful or not, it decides stuff.  BING!!!

Even though Microsoft’s marketing campaigns continue to bite the big one, Bing still deserves a crack at taking Google down.  Google’s been great, but every champion needs to defend its title against legit challengers in order to retain its status.  So, last week I set Bing as my default Browser in Chrome; you’ve gotta love the irony in that.  I’m going to keep it set this way for the next month or so and then report back on how I feel about Bing compared to Google.

google_vs_bingSince it’s the new guy, Bing will need to prove themselves.  And because of that, Bing gets first crack at each search.  If it can’t supply a result that I’m satisfied with, then I’ll jump over to Google to see what its take is on my query.  It’s Bing’s job to avoid this from happening, not Google’s job to prove that it can match or better every search that Bing gets right.  The number that Bing gets right is not the challenge here; it’s how often Google can successfully swoop in and provide a relatively correct result to my query.   I define correctness as a result that is useful within the top 5 to 10 results.

This isn’t a very scientific approach, but it will surely answer for me whether Bing stands up to what we all know Google can do.  After I’ve reached a personal conclusion, I’ll report back with my findings and opinions.  Let’s get it on!

Blur #00006

The 2009 BlackBerry Developer Challenge has been announced.  Being unable to legally participate myself, I thought I would pass the data along.  There’s a chance to win $100,000 in cash and prizes, and to get your work some exposure at the BlackBerry DevCon in November, certainly seems worth a couple of months of effort if you have the idea and the time.

Blur #00005

I thought about having a full post about the E3 console manufacturers’ press conferences.  I planned to talk about what games looked awesome, what new tech looked interesting, maybe make fun of the unprecedented, historically significant ability for every talking head to monumentally over sell everything.  Hey Don Mattrick, the sequel to World War I is considered historically significant; the sequel to Modern Warfare, another rev of Rock Band, some more use of the Halo property…not so much.

But, after watching them all it just didn’t seem worth it.  Between Natal, which I’m pessimistically optimistic about, Wii Motion Plus and Nintendo’s other interactive gizmos, and Sony’s wand thingy and camera, which looked frustratingly painful to use, all consoles have now officially adopted motion control.  The problem is that the new car smell of what the Wii brought to gaming is gone and copies are not that exciting.

Anyways, this is what you need to know.  There will continue to be awesome games coming out around Christmas.  All consoles will soon allow you to wave uncontrollably at your television.  That’s about it, not worth the five hours of viewing.

Marvel’s Digital Comics Service Reviewed

About a year and a half after its launch, Marvel is graced with a review of its digital comics service from none other than Blurry Words.  The excitement that must be running through the brains of the Marvel execs; to see their company’s name in the dark blue across the top of this post, how exciting for them.  What a thrill!  What a moment!

(the sound of confused crickets chirping)

Anyways, I’ve been playing around with the servicemarvel_dcu_logo for about a month now.  I’ve read through about  40 or 50 books and I have to say that I’m sold.  It’s not a perfect service at this point, the set of tools available need some more work, some additional features, but nothing that can’t be improved over time.

The Basic Parts…

There’s two major parts to the service; the Digital Comic Reader and the Account Manager.  In my opinion both will be equally important to the overall experience and to the overall success of the service.  However, at this point the comic reader is way beyond the manager.  That’s not completely unexpected considering the service is all about reading comics digitally,  but once you get the users in the seats with the glitz of the reader, you need to keep them fulfilled with the entire experience.

So What About The Reader…

The reader is a very robust, easy and intuitive experience.  It provides three different reading modes; the static one and two panel modes, both equipped with zoom capabilities, and the Smart Panel mode, the bread and butter of the service.  Smart Panel mode works by having each book define the optimal viewing position and zoom level for each region of each page.  Using the left and right arrow keys, you seamlessly transition and auto-zoom to each sequential region of the comic you’re reading.  If you want to zoom out and see the full page, hit the down arrow.  To zoom back in to the last viewed region, hit the up arrow.  It’s a great experience.  It stays out of your way and lets you enjoy the book.

The smart panel mode isn’t perfect though.  First, it’s not friendly with all viewing aspect ratios.  The viewer defaults to your screen resolution.  On my machine, with the resolution set at 1920×1200, the bottom of the page’s often get cut off.  This is easily fixed by adjusting the reader window to a more agreeable aspect ratio, but you would hope they could make it so that the default resolution looks at your screen resolution and adjusts its spawn size to the closest resolution that is an appropriate aspect ratio.  Or, do a better job of supporting all screen resolutions…which ever’s easier.

Another issue has to do with the dialog bubbles.  In a lot of the books they aren’t part of the page, they’ve been formatted using vector graphics to overlay the pages.  This is for a separate feature available in the one and two panel modes that allows you to mouse over each dialog bubble to have them zoom in for easier reading.  The problem is that they don’t always align properly, which isn’t usually a problem but in some books the text wasn’t removed from the page.  So when its misaligned you can see both bubbles.  Also, some times, not often, the bubbles are so badly misaligned that it’s hard to tell who is saying what.  This makes reading a little annoying, but not that big of a deal.

civil_war_cover

Finally, it seems to hang a lot when using the reader with Google Chrome; something that will be fixed with time I’m sure, giving how new Chrome is.  Firefox seems to work fine though, no hang ups even after days of having the same instance of the reader open.

All of these issues can be fixed, as long as Marvel is willing to put the money into making a the service better, which you would expect would be the case considering the heavy web-advertisement campaign they have going.  But, even if these issues aren’t addressed, none of it is a big enough deterrent to not praise the overall experience of the reader.

Then There’s The Management Page…

The Account Management functionality on the other hand is passable at best.  It has several different ways of browsing through the collection, you can rate each book you read, and it allows you to mark your favorites (neither from within the reader though), but that’s about it.  My biggest complaint is that there isn’t a way to track what books you’ve read.  I’ve been using the favorites list to accomplish that, but I would love to have both capabilities.  There’s also no way to see your recent reading history, meaning there’s no way other than remembering the last book you read to pick up from where you left off.  I’ve just been leaving the reader open to accomplish this, but that’s not always possible, and it’s certainly not ideal.

Another thing that bothers me about the manager is that when I do rate a book it doesn’t show me what I rated it.  It takes my rating and adds it in to the global score and then just displays that global score.  I’m guessing they’re not even tracking this metadata for each individual user, but I would love to see what my own opinion of the book was, not just what the rest of the world thinks.  Maybe they could show the world’s opinion with yellow stars and then overlay my score with transparent red stars?

What ELSE Would I Like…

I would love to see the listing for the entire series, whether the book has been digitized yet or not.  That way users could use this service as a complete management system not only for their online reading, but also for what hardcopy books they’ve read and own (assuming the missing management features mentioned previously existed).

Also, having a voting system for which books should be digitized next would be fun a community feature, and a useful way 1) for Marvel to know what its paying customers really want the most from the digital service, and 2) empower the subscribers by letting them know that they are molding the content that Marvel is supplying through this service.  Both are vital to the success of a user-centric service such as this.

So, what am I saying…

The reader is great and the account manager is passable but could be a much richer experience for paying subscribers.  With that said, I highly recommend checking it out.  You can read a ton of books for free to give it a try, and after you get hooked, the service is dirt cheap, 10 bucks a month or 5 bucks a month if you pay for the whole year.  Just to be able to read the older issues that would be impossible to find, and impossible to afford if you could find them, makes this service worthwhile.

Blur #00004

If you’re a programmer and you haven’t checked out Stackoverflow yet, you should make it a priority to spend some time on the site.  It’s turned into quite a community for programming knowledge, a invaluable source for any developer.

One thing that drives me crazy though are users that think they can steal some answer points by giving a vague, generalized answer, having never really spent time developing for a platform.  Take mobile application porting for instance.  Just because you ported a C++ application from Windows to Linux does not make you an expert in porting mobile applications.  You haven’t spent hours fighting heap fragmentation or having to streamline your resources for smaller application size limits.  These are things you can’t possibly give a useful answer on without spending a significant time living it.

Plus, it’s the mobile category…like Windows developers really need to be stealing answer points from the small percentage of mobile questions that get asked.

Blur #00003

Finally, Mac is World Champion of the WORLD!!!  The young Mac has dethroned the long time champ, Mr. Sandman, with a shocking Knock Out in the 3rd round.  Mac has a staggering record of 13-39, and even though Mr. Sandman granted him 23 rematches, Mac declined Sandman’s request to step in the ring again.  Instead, a match with the legendary Glass Joe has been scheduled for later this afternoon.

The Mega Man 9 Effect applies to PunchOut!! for me.  I haven’t tried it with Wii motion controls, but why would you want to?  This is pattern recognition and reaction at its best.  Maybe I’ll eventually give the Wii experience a try, but for now I’m happy with nostalgia.

Blur #00002

To show the useless nature of the Blurs, I thought I would express my opinions on the latest Terminator movie, Terminator Salvation.  It’s a movie I was looking forward to for a while, finally a look at the actual war that ensues after Judgment Day.  Unfortunately, it was a bit disappointing.

For one, Christian Bale was not good.  This is something I can’t ever remember saying before, but that damn heavy breathing voice, the voice I refer to as his “Batman” voice, was on overdrive for the entire movie.  It’s distracting, and annoying, stop doing it Bale.

The other disappointing part was the scale.  I wanted to see Lord of Ring size armies of Skynet soldiers hunting the human rebellion.  Instead, we only ever saw two or three Terminators attacking at a time.  The war just felt like a skirmish at best.

There was some good, but it really falls short of my high expectations.

Blur #00001

I came across Mike Gunderloy’s blog, A Fresh Cup, and I liked his formatting.  He has normal posts, but then he also has micro-posts called “Double Shots”.  I’ve called shorter posts “Blurs” since the beginning, but I’m now going to formally define it to be a micro-post.  These will be quick opinions or observations living on the left side of Blurry Words.  They’ll have less than 150 words and usually be useless, but will give me an outlet to keep posts flowing.  Let’s see how it works out.

BlackBerry Java: Arithmetic Comparisons

This investigation took me longer than I had hoped to get to a conclusion, mainly because the results I was getting weren’t matching my expectations.  I started off by comparing the speed of arithmetic calculations between the BlackBerry Java’s native float implementation and its static class implementation for fixed point math, Fixed32.

When first faced with the need to store fractional values, I gravitated towards the Fixed32 class for two reasons; the first being that I’ve always had to use a fixed point implementation when developing mobile application as floats and doubles are not usually available.  The second reason was that I believed the Fixed32 class existed for a reason, that reason being that the float implementation was so horribly slow that this additional fixed point implementation had to exist to compensate.

It turns out that the Fixed32 class is legacy code of the BlackBerry platform, implemented early on before floats and doubles could be properly supported.  And, the truth was that the float multiplication and division implementations are faster than the Fixed32 implementation’s, though float addition and substraction was still slower due to the fact that Fixed32 is developed to use the integer addition and subtraction operators with no other processing.

These were the preconceptions that I had when developing my own test.  The problem that was hanging me up was that I was seeing better performance out of the float’s add and subtract operators than the Fixed32’s use of the integer operators.  I couldn’t figure out how this could be.  Look how simple this code is, what could I be doing wrong?

public class TestConstants {
    // ...
    public final static int X_MUL_DIV_VALUE = Fixed32.parseFixed32("1.84");
}
 
public class Fixed32Add extends CodeBlock {
    // ...
    public void run() {
        int xResult = 0;
        for(int i = 0; i < TestConstants.NUM_OPERATIONS; i++) {
            xResult += TestConstants.ADD_VALUE_X;
        }
    }
}

So I decided to expand the test and cover arithmetic with all native numerical types, the additional types being byte, short, long, and double.  Once I did that, it became clear what the problem was.  Without Fixed32 being involved, the integer addition/subtraction operators were about 3 times faster than the floating point operator.

There was a sneaky little issue that is nearly impossible to see if you’re not looking for it.  Here’s the code change first:

public class TestConstants {
    // ...
    public final static int X_MUL_DIV_VALUE = Fixed32.parseFixed32("1.84");
}
 
public class Fixed32Add extends CodeBlock {
    // ...
    public void run() {
        int xResult = 0;
        int value = TestConstants.ADD_VALUE_X;
        for(int i = 0; i < TestConstants.NUM_OPERATIONS; i++) {
            xResult += value;
        }
    }
}

The compiler handles the final variables, replacing each reference to the final variable with the code on the right of the declaration, resulting in the parse function being called for every iteration of the loop.  As I said, sneaky.  It’s something to be aware of when declaring final variables.  If you have a native value, the inline processing performed on final variables can be quite beneficial.  However, with objects and function calls to generate the value of the final variable, it can result in additional processing  and memory that hides behind a mask that makes it hard to see.  Just keep it in mind.

Anyway, below are the result tables, one for each device (Curve, Bold and Storm, NUM_OPERATIONS = 5000).  As stated at the beginning, float multiplication/division is faster than Fixed32 multiplication/division.

BlackBerry Curve 8320

Variable Type Add/Sub (ms) Mult (ms) Div (ms)
Fixed32 204 1372 1788
float 700 548 1184
double 1104 824 4376
long 260 260 528
int 196 200 248
short 240 220 272
byte 220 232 272

BlackBerry Bold

Variable Type Add/Sub (ms) Mult (ms) Div (ms)
Fixed32 153 597 776
float 317 242 550
double 514 366 1931
long 114 117 225
int 96 90 114
short 102 102 125
byte 104 107 127

BlackBerry Storm

Variable Type Add/Sub (ms) Mult (ms) Div (ms)
Fixed32 135 863 1089
float 379 293 694
double 599 420 2424
long 150 155 284
int 131 137 162
short 150 150 170
byte 146 144 172

To conclude, make conscious choices about which variable types are right for your arithmetic needs.  If you plan to do a lot of addition and subtraction with fractional outcomes, the Fixed32 class may still be your best bet (if accuracy is not all that important).  However, you’re better off using native floats with multiplication and division. Finally, be careful with final variables.  They’re built in a way to cause problems and hide inefficiencies if care isn’t taken.