Monday, September 27, 2010

Windows Phone 7: Dead on Arrival

You know, usually I don't count Microsoft out of any game. A friend of mine once said, rightly, that "you can always count on Microsoft to compete against you." If they're interested in a market, they do a nice job of trying to compete in that market. Key word is "try."

As such, they're trying to revive the Windows Mobile franchise with Windows Phone 7. I don't think anything is wrong with Windows Phone 7 from a consumer standpoint.... it might be a fine user experience. But from a developer's standpoint, or as a platform to develop to, they chose a painful road by forcing the platform to be managed C#.

If you read posts by Paul Thurrott, he wrote this one discussing WP7's huge advantage for developers because they use Silverlight. Paul brought out the "developers, developers, developers" mantra. This mantra works well for businesses who develop internal tools. C# is a very convenient language if you're already programming on Windows and in the Microsoft fold. I know that I just arrived at a decision at work because it is much easier to use Visual Studio a lot of the time. But I don't think it will make a difference for WP7.

The smartphone market is now a consumer market. Businesses don't give a shit about them for anything other than email and calendars. The market for "apps" is decidedly one of consumers -- and this is where developers will be focused.

WP7's decision to force managed-only code is about 4 years too late -- the ship sailed on the mobile market and now you must support native code. It's like trying to use C# to ship a desktop Windows app. Know of many? I don't. Almost all desktop apps people use are in C++. The platform was established to be compiled native C code a long time ago, and that's what made sense.

And now we're in the same boat. Apple has successfully appealed to developers and their platform is native. Even though they're no longer #2 in the US (Android took that spot), the mindshare being put into iPhone OS is still huge. Android lags behind on games... why? Because their native API is limited and a pain to use. I mean, come on... NDK developers suggest using JNI to access functions that aren't exposed in the native SDK. Orly? So to play some audio I should have my C++ call Java which calls C? Efficient!

The developers on iPhone now have (if they were smart) lots of C++ libraries they could potentially reuse on other platforms (Objective-C libraries if they were dumb). What does Microsoft propose they do with all of this logic? Throw that all out and start writing C#. Fat chance. If I was a developer like Ngcomo, I'd tell Microsoft to get 20% marketshare first, then I'll get right on that port.

Many people probably think it's early in the mobile phone wars. It's really not. It's been 3 more than years since the iPhone launched and tech moves at a much faster rate than it did with the early PC. The number of devices shipped with these OSes already is mindboggling. 200K Android devices per day... new activations? Only 17 million Commodore 64s EVER SOLD. Android is on a pace to sell 75 MM IN THE NEXT YEAR. They cannot be compared, as Paul did in his article.

At least Google already has an NDK that's working. All they need to do is expose more to it. If Microsoft doesn't have a plan in store for allowing people to develop native code, I just think they're a dead duck on this one.

Sunday, September 19, 2010

Things you should "never" do (i.e. should do)

One oft-quoted blog piece on the internet is Spolsky's "Things You Should Never Do" post, wherein he explains that Netscape made a major mistake because they rewrote their browser from scratch. [Ten years later, the ultimate result of that rewrite is debatable because Firefox is a great product and the result of that rewrite (I think).]

Either way..

It's not the rewrite that's the problem. That's fine when warranted, and often is as codebases go through decades of writhing around with different technologies, figuring out user requirements ad hoc. Many companies have pulled off the rewrite successfully and for the better. Windows is a very good example. NT was a ground up rewrite. It took about 10 years, but Microsoft successfully moved the world's largest installed base of software over to a complete rewrite. Anyone want to argue that getting off DOS wasn't worth it?

How'd they do it? Good technical management, good product management. Overall, just "good management" of the process.

So why does Spolsky call out the rewrite as being something you should never do? The answer is one of visibility.

A startup with poor management--or even a new product at a large company--does not have the same visibility as the rewrite of an already successful product. A poorly managed rewrite of a successful product has visibility towards success and failure... mostly failure. If the rewrite is successful, no one talks much about it (when's the last time anyone brought up migrating Windows from DOS to NT? 2001?).

This is how people like Spolsky can make statements like "never rewrite" and people believe them. Empirically, it seems like rewrites are prone to failure because we see them.

The problem is, it's not a matter of causation.... rewrites do not evoke failure, or even make failure more likely. It just so happens that those are the most notable failures, and seem to make Spolsky's case (Digg is a recent example that brought this topic up again). Meanwhile, many startups with poor management and poor technical choices are currently sinking, unnoticed, as I write this.

Monday, May 31, 2010

Ubuntu 10.04

I use Windows 7 on all of my PCs, but I always keep a Linux install handy at home. It's great to have when I'm either configuring VMs to be used at work, or just when I was to try something out that isn't normally easy to install on Windows (like, most open source stuff).

So just installed Ubuntu 10.04 in VMWare. Wow, what a slick release! This being X11, there's no possible way I could get past a simple input configuration problem. So I had to deal with that. But otherwise, it's a pretty enjoyable distro.
  • Love the boot speed.
  • IM client built in, plus kinda interesting social network integration with this "me menu"
  • Improvements to the UI shell -- it looks slightly this side of crap. The file explorer is meh, but the overall layout they've made for the shell is cleaner than in the past. As much as I like Windows 7, I am still to this day, not sold on the "dock" interface.
  • I might be dreaming, but the fonts look better.
Biggest downside so far is that it ships with Firefox. I had to fix that quick. Although, I was just playing this Chemical Brothers video at 720P using HTML5 and it was using half of my VM's CPU. Can't have it all.

Well, off to play with Clang now.

Saturday, February 20, 2010

Don't use Picasa

Picasa is a piece of shit.

Not only was it not downloading videos from my wife's camera, it has APPEARED to be downloading them because it grabbed the thumbnails from said videos. And it deleted them all off the drive transparently even though it didn't download them.

Gee -- let's delete .MOV files that haven't been downloaded without any kind of warning. Genius.

I whole-heartedly recommend Windows Live Photo Gallery. Not only is it generally better, but it doesn't lose your data transparently. And it can plug into Smugmug, Facebook and any other service you want to upload to.

Tuesday, February 09, 2010

The "What are you doing?" wars!

Remember the cola wars? Many were left dead and maimed, neither side victorious after nearly a decade of intense fighting over the hearts and minds of consumers' love for sugar high fructose corn syrup water.

Well, 20 years later the wars companies are waging are the ever-so-lucrative "what are you doing?" wars.

We have 165 inane ways to tell our friends and the rest of humanity what we're currently doing. Today Google Buzz was announced (wasn't there already Yahoo Buzz?). And of course we've got Twitter, Facebook, MySpace, Orkut, FriendFeed, Flickr, Yammer, Linked In added it not too long ago, Bebo.

But wait, there's more! Now you can constantly stream your location as well with Google Latitude. Using FourSquare, you can be the mayor of the BK Lounge!

I have no real point to this post other than finding this whole thing ridiculous. Is Twitter so lucrative that there have to be 85 different ripoffs of this idea?

Sunday, January 31, 2010

Trimbo’s Interview and Resume Guide

Now that I just got through interviewing a bunch of candidates and hiring one (finally!) I have some tips for those who are interviewing that I didn't want to give away before.

Never Ever EVER mention something you aren't prepared to answer a question about.

This seems so simple, right? Answering questions about stuff you have on your resume.

And these are not hard questions. Don't tell me that you "know" C++ and C# and not be prepared to compare and contrast the two. If you're just graduating from college, don't tell me about a physics class you enjoyed and then be surprised when I ask you for the standard acceleration of gravity. If you've told me you've programmed object oriented Python, be prepared to tell me the name of the constructor of a Python object.

These are pretty basic questions if you've done the work on these topics. It's forgivable if someone forgets something over time, of course. Just be prepared. In the case of languages, it's best to leave a language off your resume if it's either something you don't want to do or don't want to answer questions about. I leave PERL off my resume because I never, ever want to code PERL again.

I realize that to get through the gauntlet of non-technical recruiters, you often need a bunch of keywords on your resume that they can match up with a job description. Still, be very, very careful about what you decide to put there, even if it helps you get through the first line of recruiters, it could sabotage an interview.

Don't put personal details on your resume

Your marital status and number of kids are protected topics for equal opportunity employment in the United States. Employers can't ask you these questions, so don't offer them up, especially before someone talks to you (i.e. on your resume).

Don’t put an expected salary on the resume

Seriously, don’t.  You limit your negotiation abilities before you even walk in the door. 

Don't list an objective on your resume

It's stupid. I don't know where it started, and it wastes space that could otherwise tell me about what you've done and what you know.

List your academic work and curriculum like you would work experience

A lot of resumes will look like this for someone just coming out of college:

Education: University of Illinois, B.S. Electrical and Computer Engineering 2010 (expected)

Work Experience:

  • Sales Representative, Meijer Produce Department
  • Sales Representative, Green Street Hot Wingz
  • Customer Service Representative, Springfield Shell Gas and Wash

I don't usually look at transcripts, and even if I did, I don’t know what your projects were.  So I don't even know where to start with a resume like this.

Taking the same amount of paper space (these days: screen space), here's what I'd rather see:

Education: University of Illinois, B.S. Electrical and Computer Engineering 2010 (expected)

  • CS 362: Compiler Design. Built my own language and MIPS assembler. Grade: A+
  • Math 375: Differential Equations. Grade: A+
  • CS 319: Advanced Graphics. Wrote a raytracer in COBOL. Grade: A+

Work Experience: Part-time jobs at Meijer, various gas stations and restuarants.

I don’t know where this idea started that work experience >>> education, but I remember doing something like this myself when I was graduating from college.  Take my advice now:  the people who tell you the first example is better (to emphasize irrelevant work experience) are idiots.  You did not go to college just to get a single line on your resume saying you got a bachelor’s degree. 

Sections to include on your resume

  • Contact info, References
  • Education
  • Work Experience
  • Novel idea:  “Side projects”
  • (maybe) “Skills”… only if novel and not illustrated by the above three (e.g. “can break a man in half like Chuck Norris”)

What I don’t want is a list of software taking up a third of the page.  Make it part of the education, work experience or side projects sections.  All that matters is what you’ve done with Maya, not that you have “Maya” under your skills section.  I’m more than happy to read about a project you did on your own.  It doesn’t have to be a business.    

Don’t use stupid fonts and logos on your resume

Some guy sent in a resume with using the chiller font.  Don’t do this, it’s just distracting .  They waste space.  They’re hard to read.  Just use one of the templates in Word and follow my advice above about sections to include.

If you want to get creative, make a nice, clean layout for your resume.  It should be easy to read and clear.  Design your own crisp font if you want.  Send your portfolio or reel along with the resume to show how creative you are.

I don’t ask brainteasers and you shouldn’t tolerate them.

They waste time that could be spent showing your relevant problem solving techniques, or writing kick ass code at the white board.  If a company is going to ask me brainteasers, chances are I’m not going to work there.  Brainteaser believers:  show me that correctly solving brainteasers in interviews correlates to exceptional value as an employee.  A candidate who hears brainteasers are asked at such-and-such a company will study up on them ahead of time… proving nothing.

What I do ask are the relevant, basic questions about whatever it is you might have on your resume.  Got Python?  I might ask you to just define a Python class or a method that takes keyword arguments. 

Reel Tips

Got a demo reel?  Great.

  • Put it on YouTube or Vimeo.  I don’t want to have problems looking at your website that has some Quicktime window that doesn’t work, or a broken link.  Some people think it’s a good idea to have their high def reel on their website.  Only if you have the bandwidth.  If it takes 30 minutes to download a 200 megabyte quicktime movie, I will not watch your reel.  I refuse.  Sorry.  And forget about sending DVDs to people.  These days, a demo reel is  on Youtube or Vimeo not at all.
  • Put your most recent stuff first.  If your most recent stuff sucks, leave it off and put on your second most recent stuff.  Continue on until you eventually get your best stuff first and leave off the rest.  I don’t want to have to watch 5 minutes to see something good, and I don’t want to have to watch sucky stuff at any point.
  • Skip making a flashy montage or including music.  I’m guilty of this and it does nothing unless you’re selling yourself to people who are not technical (i.e. ad agency folks).
  • Always have a detailed list, shot by shot, of what you did right next to the video on YouTube or Vimeo.
  • Did I mention don’t use Quicktime?  If your online demo reel has an MOV extension, then it would be Quicktime.

Respect your academics—find out what you need to be learning

What you did at the last job isn’t always what people want to know about you.  Sometimes you’re going to have to reach back to college to answer a question. 

I, like you, have forgotten a crapload of stuff that I learned in college.  That said, it could be worth brushing up on relevant topics before you go into an interview.  In my most recent case, I was interviewing people about a character TD position.  Chances are, I might ask a question about linear algebra. 

On another note, I also asked every candidate “What’s the last math class you took?”  I was surprised to often hear it was Algebra II.  This tip has advice for those who are in college or soon going to college:  choose your college wisely.   There are many shyster schools like Academy of Art in San Francisco that will very expensively try to sell you the dream of being in film or video games.  They’ll teach you how to use Maya and shove you out in the world with $100K in debt. 

Find out what you need to know at a rudimentary level and go the school that teaches that best.  Want to be an animator?  Cal Arts is a really good school.  Ringling is a really good school.  Can’t get into those?  Maybe you should re-think animation as a career choice… because without a good school under your belt, you are probably counting on luck more than you should be in order to be gainfully employed in your career of choice.

Monday, January 18, 2010

Hand Grenade vs. Droid

A friend recently said something along the lines of "modern phone batteries pack about the same power as a hand grenade."

I did some quick math... 3.7volts * 1400 milliamphours = 18648 joules. A handgrenade is about 700,000 joules. So... not even close.

Now my laptop battery has 7200 mAh @ 7.2 V... almost 100K joules. Now we're getting in the ballpark.

Tuesday, January 05, 2010

No one cares to vote for your Crunchie

Quite possibly the stupidest time of year is when everyone I know who's in any way related to a Dot Bomb starts spamming me to vote for their "Crunchie". If it's not in my mailbox, it's on my mailing lists, and if it's not there, it's coming to me through Twitter or Google Reader. Services that are nice and usually leave me alone suddenly spam me (I'm looking at you Backblaze -- both spammed my reader and my mailbox).

What's a Crunchie? I feel sad having to explain this. It's an award that Tech Crunch gives out to startups in whatever category. It's completely retarded.

In fact, all awards except the Purple Heart are retarded. All awards are a popularity contest except that one. Nobel Prize? So what. Paul Krugman won a Nobel Prize. Oscars? Please. At least with the Purple Heart there's a real measure of deserving the award -- you got your ass shot in the line of duty.

Stop spamming us, we don't care.

Sunday, January 03, 2010

(App Store) Size Doesn't Matter

Every article about iPhone has to contain something about the size of the app store. I've decided it's irrelevant to the strength of the platform.

It's not irrelevant because people don't want apps, or because of the "quality vs. quantity" argument. People want to buy apps, and they will buy crappy apps just as well as they'll buy quality apps.

The reason it doesn't matter is because people don't care about the investment they've made in any app on their iPhone. Chances are someone who loses their iPhone won't even bother restocking the apps they've bought.

People have bought apps on phones for years. The first "VCast" phone I had on Verizon was the Motorola T720 in 2002. A piece of shit, to be sure, but one that offered apps (BREW, to be specific). It had some kind of yellow pages thing, weather radar, a bunch of games, etc. I think I even bought Snood on it, one of my all time favorite games (thanks to Skip and Ken from Ogilvy for pointing the game out to me).

Do you think anyone gives a rat's ass about throwing away their "app" purchases in order to get a new phone? Hells no... they want the cool new phone. I ditched my T720 like a hot potato for a VX6000, then Samsung, then RAZR, then iPhone, now Droid. Along the way I've probably lost access to dozens of apps that I've paid for.

Even on game consoles, where people invest considerably more in software and peripherals, they're more likely than not to buy another console in the future that is completely incompatible with what they've bought.

No one cares about these apps. It's not like they dropped $150 on Microsoft Word or $600 on Photoshop and then decided to switch to a Mac. There's no training involved. There's no legacy to work within or some kind of value-add. We're talking $5 purchases of stuff that's either self-contained, a minor distraction, or just a front end to a server.

On the iPhone (or Android), a huge percentage of the apps that actually do anything remotely interesting have some kind of "cloud" component. Twitter? Facebook? It doesn't matter what you do on your phone -- the phone apps are just portals into what the server offers. They mean nothing.

So let's stop talking about app store size, or even app stores in general. It's completely irrelevant. Let me know when someone comes up with the equivalent of PageMaker or Photoshop that only works on iPhone, then it will be something worth talking about.

Until then, enjoy your I am T-Pain apps. They're fun, sure, but nothing that would keep someone on the platform ad infinitum.