Archive for July, 2008

Layout Changes, JavaScript

Been playing with a few layout changes this evening. Cleaned up the sidebar a lot, added some good blogs, and changed the post font from Georgia back to Arial.

I’m proud to say that my knowledge of JavaScript is no longer merely theoretical: behold. I know, I know, I’ll be on my way to a wildly successful web app in no time ;)

Actually… the current plan is to build a complete web site so that I can learn Zend Framework and Prototype. Not going to go into a lot of details right now, but the web site will be a new take on an old idea plus it has the potential to actually make money (!).

Quotable Roosevelt

Found this particularly inspiring:

It is not the critic who counts: not the man who points out how the strong man stumbles or where the doer of deeds could have done better. The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood, who strives valiantly, who errs and comes up short again and again, because there is no effort without error or shortcoming, but who knows the great enthusiasms, the great devotions, who spends himself for a worthy cause; who, at the best, knows, in the end, the triumph of high achievement, and who, at the worst, if he fails, at least he fails while daring greatly, so that his place shall never be with those cold and timid souls who knew neither victory nor defeat.

Citizenship in a Republic
Speech at the Sorbonne, Paris, April 23, 1910

David Hansson on Startups

I highly recommend this talk by David Hansson of 37Signals and Ruby on Rails fame. To sum it up: Have realistic goals for your startup; you don’t need to be the next Facebook or YouTube to have a successful business.

Here are some quotes (his Danish accent is awesome):

“I think there’s too little talk among startups about just making money on their own.”

“1. Great application, 2. ??? Price!, 3. Profit”

“But somehow I think that notion got lost in the web world. The funny thing is we played this game before. We played it back in 2000. It was all about the eye balls, it was all about the VCs and then getting bought out and IPOs and whatever. It didn’t really work then and now we’re playing another round because there’s money again to be invested. Money ready to be bought out on social network media networking things.”

“Lots of ways to have a price”

“The really cool thing about all of this is you don’t need to be a fucking genius to make any of this work! It’s not rocket surgery.”

“Here’s the kicker. Just because you slap a price on something, doesn’t mean it you’ll have a successful business. Most business fail.”

“You can be pretty happy on just a million dollars. Most people would be. I think we lose sight of that because we get this image pumped up of a billion dollar company.”

“I encourage a lot of people to take the better odds at a smaller reward and perhaps worry about the billion dollars next time.”

“You just have to solve a problem a little bit better than the other guy.”

“I think there’s just too few people trying to make a nice Italian restaurant in the web space.”

“Getting consumer to pay you for something – that’s pretty hard.”

“There’s a lot of room in between to just enjoy life.”

“Calling your own shots, running at your own pace – that’s pretty alright. Once you get to that point where the financials are fine. If you’re making $1m a year you’re doing pretty alright. You’re doing better than most people out there. And when you get that portion of your life taken care of, there’s a whole lot of other things that start mattering a ton more, like not being in meetings freaking all day, like not being told what to do by other people, being able to set your own pace, call your own shots, is immensely powerful motivator for just enjoying your life.”

Craig Newmark: “We both know some people who own more than a billion (dollars) and they’re not any happier.”

“I think that’s exactly how the money game is. Once you reach a certain point, nothing else beyond that really matters.”

“Where are all the people saying ‘I just want to build a business and enjoy it over the next 20 years’?”

“Are you willing to trade being a passionate developer for a little bit of moola? To get into that hell hole? I don’t think so.”

“No need to dominate the box office, lots of winners possible.”

“But where’s the network effect? How are you going to be viral?” … “How are you going to infect the entire population?” “You know what’s viral? Shoes. Shoes are viral.” “Great service, a great business. It doesn’t have to be this ingenious idea. Often the simplest ideas int he world like treating your customers nicely while still asking your customers for money — it works! And you can build great businesses like that.”

“A side business is really not that bad. Having a limited amount of time everyday to work on something or even just having a few days a week to work on something really focuses your energy.”

“I had 10 hours per week to develop base camp. Not 10 hours per day… 10 hours per week. That was the bill I sent to 37Signals. When I had 10 hours per week, you couldn’t screw around. Having less time is really a benefit to most people because if you have all the time in the world you’re probably going to yank it off anyway and its not going to be… yank it off in the business sense of the word… you’re going to yank or waste your time on frivolous features that you don’t really need anyway.”

“People are in too much of a hurry. You don’t really need to build a huge company overnight.”

“Take it easy. This whole startup thing. This whole rush thing. You’re thinking about it ‘I can put all this work right now and coast from there.’ It’s never going to be less work.” … “In some ways its just going to be more work.” “The practices you choose to adopt when you are a startup will stick with you.”

“Great achievement comes from trying to solve simple problems.”

“Good innovation comes from just solving simple problems that you’re intimately involved with.”

“Solving your own problems – great advice. I think its the easiest way to get somewhere. Just realize you’re not unique, you’ll probably find 2000 other people out there with the same problem that are willing to pay you for it.”

“Who the hell gets anything productive done for 14 hours/day? Try working 5 hours per day. If you only have 5 hours/day to spend on something you’d focus your time a lot better.”

A Personal Roadmap

In four years I’d like to be in a position where I can either found or work at a tech startup.

I’ve got a few big things working against me. The first, by far, is a lack of time. After that, my programming skills have until recently focused almost exclusively on Visual Basic, an older language with limited applicability to internet programming. My business knowledge is, well, crap. I couldn’t tell you the first thing about starting or running a business, let alone the internet startup world where important things like revenue are seem to be optional. Also, I have a beautiful, loving wife who I have to carefully balance all of this with.

On my side of the ring, I’ve got ambition, maybe some good ideas, a passion to learn, and a strong desire to do something new and exciting for a living.

The current plan to entrepreneurship goes something like this:

1. Learn new programming languages by reading books and programming web apps

2. Become knowledgable about finance and business by reading, researching, and doing

3. Keep up with and learn from the tech world via blogs like TechCrunch, Hacker News, and the like

4. And this is a bit more abstract: a general sense of personal development. Hacker News’s wallflower said it well, but Marc Andreessen said it best: “… it’s now critically important to get into the real world and really challenge yourself — expose yourself to risk — put yourself in situations where you will succeed or fail by your own decisions and actions, and where that success or failure will be highly visible.”

5. And most importantly, do all of this while enjoying life and maintaining my health, sanity, and relationship

Should be easy, right?

Zend_Loader

My ZF adventures take me to the Zend_Loader class today.

What is that, you ask? Zend_Loader provides methods for um, loading, files and classes in your web application. Delving into Zend/Loader.php reveals the following methods:

loadFile() – this is basically a fancy include statement. it takes in three parameters: a filename, directories to search (one or multiple — if blank, will search include path), and once, which tells it whether to do an include() or include_once(). the difference in those is that include_once() will only let you load a file once on a page, regardless of how many times it is called.

isReadable()
– determines whether a file can be read or not. this uses the fopen() function with a read parameter to get its answer

_securityCheck – this is a protected class, which means that only this class and ones that extend from it can access it. this method determines whether a filename is legit. it uses a fancy regular expression to check this: '/[^a-z0-9\\/\\\\_.-]/i', which I’d like to come back to eventually and make sure I follow

_includeFile – this is also a protected class and is similar to loadFile(), but, this doesn’t allow a directory to be set. it does, like loadFile(), let you specify once.

loadClass() and autoload() – loads a specific class. it looks like autoload() calls loadClass() and thats about it, so not sure what the difference is.

registerAutoload() – automatically loads a class when it is called in the code (so you don’t have to).

So for example:

At the beginning of the bootstrapper file, we have the code:

require_once('Zend/Loader.php');
Zend_Loader::registerAutoload();

$config = new Zend_Config_Ini('settings.ini', 'development');

By using registerAutoload(), I avoid having to write

Zend_Loader::loadClass('Zend_Config_Ini'); prior to using Zend_Config_Ini.

What happens if you leave this out? Chaos:

Fatal error: Class 'Zend_Config_Ini' not found in /home/content/.../html/indextest.php on line 14

Link@Startup Business Models

Interesting article about getting value from your customers:

“It costs less and less for us to get up and running. Still, sooner or later – you need to make money. By not getting value back from users, we’re increasing the failure rate of our businesses.”

It still boggles my mind when I read about a company with $0 in revenue getting a muiltimillion dollar valuation. I can see indirect value, as in Google News bringing more people to Google, which makes Google more money in the long run. But for something like Twitter to be valued at… what? $75m? I can’t fathom that.

One day this’ll all make sense.

Update: This article by Greg Sterling, an eBusiness guru, expresses similar concern:

Stepping back, it strikes me that there’s something quite “dysfunctional” going on in the way that many entrepreneurs and funders think about building online businesses. Historically people in the real world who start businesses have not gone in with the attitude: in three years someone will buy me and I’ll never work again or maybe I’ll go start another business that will be acquired in another three years.

Google Should Do This

(if they don’t already)

TechCrunch recently had an article on how Google is experimenting with a Digg-like voting system for search results. The idea is that next to each search result you’d have the option to vote the site up or down based on your opinion of it. Google would then save your results so that the next time you search for the same thing, your changes would be reflected in the results.

Presumably, Google will eventually factor our votes into its ranking algorithm, which would have an effect on a site’s overall ranking. For example, IconArchive.com is currently the third highest ranking site when you search for free icons. If enough people voted for it with the new system, the search algorithm would nudge it into the number two position.

Manual feedback, if done correctly, could be a useful improvement to Google’s search algorithm. However, there are some significant problems with it. First, it would clutter Google’s search results, which might drive more people away than it would bring in. Second, and most important, it would be difficult to interpret the results. If I vote on a site before I visit it, my vote is irrelevant. If I’ve already been to the site, I’ll probably get to it by typing it in directly or by going through my bookmarks, so I’ll never get the opportunity to vote on it. The ideal result would be if I returned to Google after I visited the site so I could vote on it, which I probably wouldn’t do. Plus, if I returned to the search results, I probably didn’t find what I was looking for anyway.

Here’s a better, simpler way: When I search for something, keep track of which search results I click on. Next time someone makes the same search, Google should give more weight to the last site I visited. Why? I probably found what I was looking for on the last site, so it should be ranked higher in the search results.

Back to the example. I search for “free icons”, click the first site. Not a big fan of the layout, can’t find what I’m looking for, whatever. Same with the second site. Next, I get to IconArchive and voila, I find what I’m looking for – no more clicking search results. Google automatically tracks this and if enough people follow a similar pattern, IconArchive is promoted to the number two position.

This method is not without its own problems. The major problem is that people often stop searching because they can’t find what they’re looking for; they abandon their search. It might be difficult to distinguish between people who give up and people who find what they’re looking for because to Google, they probably look very similar. Google employs some smart folks, I’m sure they could figure out clever ways to analyze the data to distinguish hits from misses with a high probability. Even if they can’t, and they can, the results would still be better than the current results.

With millions of people searching Google each day, there is an enormous amount of untapped data which could reshape Google’s search results, providing more relevant information to people faster. Best of all, no annoying extra buttons on the results page.

Progress

I’ve been making my way through several books and wanted to provide an update.

Web 2.0: A Strategy Guide – I made it about 75% of the way through, and put it down for good. I found it very repetitive and suspect I’m the wrong audience for the book. This Slashdot review summed it up pretty well for me:

Web 2.0 is so much more than a technology.” Priceless. I can sum up the entirety of this book quite simply: If you want to be “Web 2.0″, develop a web application that is social-based, use plenty of Flash or Ajax (Ajax preferable), and create an API that allows script kiddies everywhere to fashion useless add-ons (preferably that involve cute icons of small furry animals or various celebratory trinkets). That’s the Foreword, Prologue, and Chapters 1-5. Chapters 6-10, Epilogue, and Appendices are as follows: The magic behind the Web 2.0 movement is this: the generation of kids nowadays have grown up using computers, are computer savvy, and are used to being online. So websites have become portals for social interactivity. The more interactive you can make the sites, the more “social” they become. So ends the mystery of Web 2.0.

Practical Web 2.0 Applications with PHP is coming along well — I’m about a third of the way through the book. The fifth chapter, An Introduction to Prototype and Scriptaculous, was a relief from the confusing Model-View-Controller. Now when I do a View-Source, I see links to those libraries and proudly say to myself I know what those do. For now, my knowledge is entirely theoretical.

Designing the Obvious – This is the fourth book on web usability I’ve read in the last few months, and one of the best so far. Robert Hoekman’s writing style is the same as his preferred design style: simple, clean, and to the point.

Also came up with a web application idea while reading an article in the WSJ this weekend. A quick internet search reveals there isn’t much competition, and this is something I would use and think others would too. Its perfect for a freemium business model. Best of all, I even got the usually difficult “Thats not a bad idea” from my wife, so it must have potential. Once I get through the PHP Web 2.0 book, I’ll start on it, unless another, better idea comes along.

I must admit, after taking a break for the last few weeks to get education about this stuff, I’m anxious to start hacking away at a new project.

I recently started posting on Hacker News (see here) and have been immensely impressed with the feedback my posts have received. I haven’t commented much on other peoples’ posts, mostly out of a lack of insight/knowledge, but I’d like to give back one day. Actually there’s another site idea brewing, where I might be able to do just that.

Peace -

Horizons

From Google’s blog.

Management guru Peter Drucker noted that companies attracting the best knowledge workers will “secure the single biggest factor for competitive advantage.” We and other forward-looking companies put a lot of effort into hiring such people. What are we looking for?

At the highest level, we are looking for non-routine problem-solving skills. We expect applicants to be able to solve routine problems as a matter of course. After all, that’s what most education is concerned with. But the non-routine problems offer the opportunity to create competitive advantage, and solving those problems requires creative thought and tenacity.

Here’s a real-life example, a challenge a team of our engineers once faced: designing a spell-checker for the Google search engine. The routine solution would be to run queries through a dictionary. The non-routine, creative solution is to use the query corrections and refinements that other users have made in the past to offer spelling suggestions for new queries. This approach enables us to correct all the words that aren’t in the dictionary, helping many more users in the process.

How do we find these non-routine savants? There are many factors, of course, but we primarily look for …

… analytical reasoning. Google is a data-driven, analytic company. When an issue arises or a decision needs to be made, we start with data. That means we can talk about what we know, instead of what we think we know.

… communication skills. Marshalling and understanding the available evidence isn’t useful unless you can effectively communicate your conclusions.

… a willingness to experiment. Non-routine problems call for non-routine solutions and there is no formula for success. A well-designed experiment calls for a range of treatments, explicit control groups, and careful post-treatment analysis. Sometimes an experiment kills off a pet theory, so you need a willingness to accept the evidence even if you don’t like it.

… team players. Virtually every project at Google is run by a small team. People need to work well together and perform up to the team’s expectations.

… passion and leadership. This could be professional or in other life experiences: learning languages or saving forests, for example. The main thing, to paraphrase Mr. Drucker, is to be motivated by a sense of importance about what you do.

These characteristics are not just important in our business, but in every business, as well as in government, philanthropy, and academia. The challenge for the up-and-coming generation is how to acquire them. It’s easy to educate for the routine, and hard to educate for the novel. Keep in mind that many required skills will change: developers today code in something called Python, but when I was in school C was all the rage. The need for reasoning, though, remains constant, so we believe in taking the most challenging courses in core disciplines: math, sciences, humanities.

And then keep on challenging yourself, because learning doesn’t end with graduation. In fact, in the real world, while the answers to the odd-numbered problems are not in the back of the textbook, the tests are all open book, and your success is inexorably determined by the lessons you glean from the free market. Learning, it turns out, is a lifelong major.

Posted by Jonathan Rosenberg, Senior VP, Product Management

Knowledge Connects Everything.

I came across this article by Marc Andreessen a few weeks ago titled The Psychology of Entrepreneurial Misjudgment. (Yes, I really like Andreessen’s articles). The article, which explains how psychological biases affect business decisions, is based on a speech given by Warren Buffet’s partner, Charlie Munger. Interested, I purchased Poor Charlie’s Almanac, a collection of Munger’s speeches and thoughts, which contains the speech Andreessen alluded to.

I’m not very far through it, but it has me thinking a lot about the importance seeing relationships in seemingly unrelated things and more specifically, how to do it. He graduated Harvard Law in ’48, which is likely a symptom of his intelligence, not the cause of it. So he’s very well educated, but not just in the formal sense. He reads everything he can get his hands on, from daily newspapers to scientific articles to random ingredient labels. Why? He makes use of this broad range of knowledge to make these connections, which enables him to make better life and investing decisions.

Our ability to see these relationships will be determined a lot on our genes, but it’s not the only factor. Our breadth of knowledge is what we draw the connections from. Some people know a lot of information – dates, names, facts, etc – but don’t know how any of it is relevant to their daily lives. Others don’t know much at all, but are brilliant because they can make better connections with the limited things they do know. Regardless, the more knowledgeable you are, the more connections you will be able to make. It’s somewhat similar to fishing. No matter how good a fisherman you are, if you’re fishing in an empty pond, you won’t catch anything. On the other hand, you might be the worst fisherman in the world, but if your pond is overflowing with fish, you’ll catch plenty.

I wish they had made this clearer to us in school. If you really want to be successful, it is not enough to just be good at computer science or politics or biology. What makes you really valuable is your ability to see how computer science and politics and biology are related. Unfortunately, if you’re a computer science guru but never paid attention in biology class, you won’t have the tools necessary to make those connections. You won’t know what you don’t know.

Next time you’re stuck wondering “How the hell am I ever going to use this?” just think of the fish.

Next Page »