Archive for April, 2009

Get Inspired – “Stand by Me” Playing for Change

Let’s start the weekend on a really high note. A family member forwarded this video over to me the other day:

Love what you saw? Then check out the Playing for Change website to see more videos, show support, and/or get involved.

Still not feeling up? This should finish off your blues.

Happy Friday everyone!


Entrepreneurs Unplugged: Boris Silver

Last night I attended the first Entrepreneur Unplugged event sponsored by Philly Startup Leaders. I think it’s a great idea; people from the front lines sharing war stories. Insights and advice abounds. From their description of the event:

Entrepreneur Unplugged will extend the spirit of Founder Factory by bringing successful Entrepreneurs “on stage” to share their personal stories of risk taking and decision making. The format will be a 30 minute presentation followed by question and answer. The series will be streamed live, recorded and distributed online.

The first presenter was Boris Silver who, along with a partner, built a series of fantasy sports Facebook apps under the banner Sport Interactiva. Their apps grew to over 1 million users, had ad deals with big names like Adidas and Time Warner, and sold it off 9 months after quitting school to work on it full time. His blog title says it all: “20 year old, sold a company, and now an undergraduate student re-enrolled at The Wharton School.” Helluva resume for not even being old enough to have a Bachelor’s.

Boris provided a very insightful hour and a half, and was open to just about any question on his experience (he couldn’t comment on the financial details of the sale). Some of the key ideas I jotted down from his talk and Q&A time…

  • Surround yourself with people who are “genuine, honest, and long-term.”
  • Stay fanatically focused on your product, to the point of ignoring related opportunities. A startup demands all your attention, and it’s easy to over-leverage yourself.
  • Really know your working partners. Boris didn’t do adequate upfront investigation into his partner. Later on, he realized how lucky he got, as the entire business could have tanked had their relationship gone sour.
  • Avoid the all-star CEO, CTO, etc. You got into your business because you really understand it and see an opportunity. There’s no one out there who will know your business better or do a better job running it. Seek advice, but never release the reigns due to a perceived lack of ability.
  • Contrary to the stories out of Silicon Valley, being an entrepreneur is not a glitzy job. It’s a huge amount of time and work. Your friends don’t get it, and you don’t have time to spend with them anyway, so it’s lonely. Startup ideas naturally go against accepted trends in an industry, so you are typically your only source of confidence, making for an emotional rollercoaster. To top it off, there’s absolutely no guarantee of financial success; you could be left with nothing to show for the effort.
  • Commitment to starting a business must be a “binary decision:” success or failure. Take it all the way until one or the other manifests itself. Halfway isn’t good enough.
  • When dealing with advertisers and the inevitable back-and-forth push, at the end of the day you get their money, making them the customer. All the usual rules for treating customers properly apply.

For my part, it was great to see concrete proof that age means absolutely nothing in business. Here I felt wary of my chances starting out at 27! If you know enough to get started, that’s good enough. It’s obvious from Boris’ extremely intelligent responses to detailed business questions that you can learn a lot as you go.

The only point of contention I had — if you can call it that — was in Boris’ evaluation of what happens if and when a business fails. He seemed to be of the opinion that you walk away completely empty-handed. Financially speaking that may be true, however the experiences gained are often worth their weight in gold. A failed business teaches a lot about what doesn’t work on a plethora of levels: expansion, hiring, capital, customer service, delivery, internal structure, the list goes on. And unless you were completely incompetent, you probably picked up a few things that worked really well too. You also cannot discount the new contacts and networking, which often lead directly to the next opportunity. Again I’m not sure Boris discounted these ideas entirely, I simply would have mentioned them.

So hats off to Boris for providing an example of success, we all need them to keep going. Overall it was a very informative evening, and I’m looking forward to the next one.


How to nail an interview

One of the best sites I’ve come across in a while that wasn’t in StumbleUpon (but is now).

http://www.howtonailaninterview.com

If you’re looking for really good interview advice coupled with hidden video of people absolutely botching them, this site is for you.


Opera hanging on page load on your site? Check for missing files.

I recently discovered an issue with the mailing list signup on the Fwd:Vault placeholder site. [Aside: It was perfect when I set it up, I swear there are gremlins in my code sometimes. If you tried to sign up and were unable to, I apologize, try it one more time.] After fixing the issue, I naturally tested it in every browser, and Opera was simply hanging at the page load. The page would visually come up fully, but the Javascript effects wouldn’t fire, making the signup form unresponsive.

To start figuring it out, I enabled the Progress Bar to check out when/where the problem occurred. The bar contains a bunch of useful stats while the page is loading. To see the bar yourself:

Shift-F12 > "Toolbars" tab > choose "Pop-up at bottom" from dropdown.

Here’s a screenshot of the menu:

opera-appearance-menu

Then I refreshed the pageload and saw this…

opera-pageload-hang

Note the “Elements” load is off by one, yet the request is listed as “completed.” Keep in mind that the browser is still acting like it’s loading at this point: hourglass cursor, and I couldn’t interact with the page. To make matters worse, you can’t click through to see any further details on any of these stats, which is really dumb since this summary information is coming from somewhere.

Opera’s Developer Tools, Error Console, and Java Console interfaces showed nothing. I probed the rest of Opera’s menu’s and output options, and couldn’t find anything to support remedying the situation. I could be wrong of course, so if you have more Opera experience, please let me know where to look.

Instead, I used Firebug to discover a missing Javascript file, as the title suggests. I had a standard <script src=[...]></script> block, but the target file wasn’t in place. Now every other browser had handled this situation just fine, they timed out on the missing file and moved on. Opera is apparently more insistent, which wouldn’t be a problem if they provided the information necessary to diagnose the situation or manually override the hanging pageload.

This behavior is simply idiotic planning on Opera’s part: end users see a finished page that doesn’t allow interaction, and webmasters get zero clue to the cause of the hangup.

Expounding, this seeming lack of user focus likely contributes to Opera’s weak market position. With all the free choices out there, they have to be the most appealing in one or more categories to one or more demographics, and I never saw anything Opera that differentiated it significantly from the pack. That seems like a “Business 101″ observation to me, but they certainly aren’t the first netcom to come along without a clearly defined path to market and profit.


Where is the Google Analytics code block?

This is the kind of “usability fail” that drives me nuts, especially from a company of Google’s caliber. When you add a new site to Google Analytics, they present you with the Javascript code block you need during the setup process. But what if you need to look up that code block again? What if Google updates the Analytics code block (they just did it in Dec 2008)? Naturally you go back to the Analytics site to get the code…
Analytics Screenshot
Where’s the code block at? Anyone else stumped? Keep in mind that I limited this puzzle to just a single page; I scoured the whole site before finding the link on this page. As it turns out, the code block is hiding in the Check Status link in the top right corner of the main column.
Analytics Tracking Code Link
It’s not part of any of the standardized navigation — the header, the breadcrumbs, the sidebar — and the link text is not at all indicative of what the resulting page contains. Speaking of which, the page that actually houses the code is even more incriminating.
Analytics code page
The “status” information appears at least in part on the previous page, so the overt purpose of this page is pretty worthless. To make matters worse, the breadcrumb actually says “Tracking Code.” So someone got the right idea when they put this page together, but didn’t follow through when hooking it up to the rest of the site navigation.

Everyone (and so every company) makes mistakes. However Analytics is an offshoot of the Google AdWords service, which is their bread and butter. This kind of oversight on a flagship product is simply sloppy.

Make sure that you spend all the necessary time on the key “touch points” of your site/service to ensure they are operating at their maximum.


The fastest customer satisfaction gauge

Want to know how well your software is doing? Look for the absence of complaints. Compliments are always fantastic to receive, but are not consistently delivered, and hence not representative of your software’s ecosystem. Things working great is status quo; it’s expected.

On the other hand, people are negative by nature — Murphy’s Law comes to mind — which means that a good percentage of your users won’t hesitate to complain when things do not go as expected. Other upset users who do not complain will simply find an alternative solution, so a shrinking user base is another good indicator (but a growing user base could be the result of numerous factors).


New Fwd:Vault homepage

The Fwd:Vault website has a new placeholder page! With Fwd:Vault claiming victory in the Elevator Pitch Contest, and thus imminent global domination, I thought it was high time we give that dusty old page a major tune-up.

The new look represents how the site will look and feel when we launch later this year, and was put together by Kim over at Stranger Studios. I simply love it, and I hope you all do as well.

Whatever your feeling, I would love to hear what you think, so please feel free to post any feedback.

And if you’re in the market for any graphic work or intranet development (i.e. custom PHP/ASP websites), I can’t recommend Stranger Studios more highly. They exceed expectation.


Fwd:Vault selected as winner in StartupNation contest

The winners for StartupNation’s 2009 Elevator Pitch Competition were announced today, and no one was more surprised than I to find out that Fwd:Vault was selected as one of them! That link will take you to a page showing the top 5, along with 10 runner-ups.

There were some really great ideas submitted — just look at the other four winners — so to be selected is simply mind-blowing. I may have to check the results later to make sure there wasn’t a mistake.

So, what happens now? I don’t know, to be really honest, I haven’t even been contacted by the contest organizers yet. But at some point, a big presentation will take place with some big-time decision makers. I’ll be sure to post back with whatever details I can provide.

Aside from pure exuberance, my heartfelt thanks goes out to all my friends, family, former co-workers, and professional colleagues for all those votes. I had to get into the top 100 to be considered, but you guys made sure I was front and center with a #9 slot. Thank you so much.


Fixing Firefox Gmail 400 Bad request

I posted a few weeks back describing an issue I was experiencing with logging into Gmail from Firefox. Firefox was corrupting Gmail cookies whenever the browser started, so I had to clear cookies each time I started up in order to use Gmail. Today I found the full solution, and it ain’t pretty.

The problem is somewhere in the Firefox profile, and you have to blow the whole thing away to get it running normal again. Unfortunately, that means extensions and bookmarks go bye-bye as well, so you essentially have to approach the process as if you were restoring your browser after a reformat. No worries, here’s what you do…

Back up your bookmarks
We could yank the bookmarks.htm out of the profile folder, but again with a corruption specific to the profile, it’s far better to export them cleanly. From the menu bar choose Bookmarks > Organize Bookmarks. Click the Import and Backup button along the top, and chose Backup.... Follow the save file prompt, tucking the file away for safe keeping.

You can do the same for passwords if you’d like, though I don’t recommend it for security reasons. Even if you save passwords, wiping them out from time to time will clear out any old data you haven’t accessed in a while. The less secure data you have floating on your computer, the better.

Get a list of your extensions
For the same reason as bookmarks, we are not going to save the extensions. Fortunately, it’s super-easy to make a list of installed extensions. Install another extension called Extension List Dumper. This simple add on outputs a list of all your extensions in text, html, or CSV format. It can even include links to the author pages. I really only install from the Firefox add-ons site, so all I needed were the names. Use it to save a copy of the add-ons somewhere safe.

Remove that profile
You should never delete something outright until you are sure you no longer need it, so we are going to move the necessary files out of their usual place to make Firefox think they are gone. My problem and solution were in Windows XP, so Vista and Mac users will have to find their equivalent directories. This MozillaZine article will tell you where to find Firefox’s profile folder on just about any system.

Close Firefox, then open Windows Explorer (i.e. My Computer), and browse here (or your system’s equivalent)…

C:\Documents and Settings\[USER NAME]\Application Data\Mozilla\Firefox

[USERNAME] will usually correspond with your Windows user name. Once you have found the directory, move the profiles.ini file to the desktop – make sure you don’t just make a copy!

Then go into the profiles folder, and you’ll find a folder with a gobbledygook name ending in .default. For instance, mine was called 572p4a0j.default. Grab that entire folder and move it to the desktop. Again, make sure you don’t just make a copy; we want the original location to be empty.

Now restart Firefox, and it should behave as if you did a fresh install. This is what we want. Restore your bookmarks — Bookmarks > Organize Bookmarks > Import and Backup > Restore > Choose File... — and then hit up the Firefox Add-Ons page armed with your list of extensions you made earlier and reload those suckers.

Enjoy no more bad requests! Make sure you mention your experiences in the Mozilla Support Forums to ensure this gets fixed in the future — I’ve responded to threads on the matter here and here. Feel free to post success stories or additional issues in the comments.


Circumvent PHP errors with define_once()

Core PHP does not include a define_once() function to complement functions like require_once() and include_once(), which is pretty silly in my opinion. While I am generally not a fan of using *_once statements due to the performance penalty (and incurred laziness), define_once is the exception. There are ways to look for a loaded/missing file, but a define is not a define until you define it, so you really have no choice.

So in situations where you have to blindly load defines — I do it to build language defines in a cascading templating system — use this function to achieve the proper results:

function define_once($define, $value) {
  if (!defined((string)$define)) {
    define($define, $value);
    return true;
  }
  return false;
}


Next Page »