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.