Mobile Apps

June 17, 2009

The U.S mobile apps market is set to reach $9 billion by 2011.


Web Apps

June 17, 2009

By 2010, at least 60 percent of new applications will have web capabilities.


C# String Searcher

June 17, 2009

Below is a little C# program that I wrote which searches all files within a directory for a custom string. Could come in handy nah? :)

If you have any comments regarding the code, feel free to comment.

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace MyProgram
{
    class Program
    {
        static int results = 0;
        static int dirs_searched = 1;
        static int files_searched = 0;

        static void SearchForString(string _dir, string searchstring)
        {
            try
            {
                DirectoryInfo dir = new DirectoryInfo(_dir);

                string[] _files = Directory.GetFiles(_dir);
                int counter=0;

                foreach (string file in _files)
                {
                    files_searched++;

                    if ((counter = ReadIt(file, searchstring)) > 0)
                    {
                        results += counter;
                        Console.WriteLine("Found \"{0}\" in {1} - {2} times.", searchstring, file, counter);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }

            try
            {
                string[] _dirlist = Directory.GetDirectories(_dir);
                foreach (string subdir in _dirlist)
                {
                    dirs_searched++;
                    SearchForString(subdir, searchstring);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
        }

        static int ReadIt(string file, string searchstring)
        {
            string line = "";
            int counter = 0;

                try
                {
                    StreamReader sr = File.OpenText(file);
                    while (!sr.EndOfStream)
                    {
                        line = sr.ReadLine();
                        if (line.Contains(searchstring))
                            counter++;
                    }

                    return counter;
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Error: " + ex.Message);
                }
                return 0;

        }

        static void Main(string[] args)
        {

            string searchstring="";
            string dirstart = "";

            Console.WriteLine("String searcher.\n");

            Console.Write("Enter string to search for: ");
            searchstring = Console.ReadLine();
            Console.Write("Enter directory to search: ");
            dirstart = Console.ReadLine();

            try
            {
                if (Directory.Exists(dirstart))
                {
                    Console.WriteLine("\nSearching {0} for \'{1}\'", dirstart, searchstring);
                    SearchForString(dirstart, searchstring);

                    Console.WriteLine("\n================\nFound {0} results.", results);
                    Console.WriteLine("\n{0} directorie(s)", dirs_searched);
                    Console.WriteLine("\n{0} files.", files_searched);
                    Console.WriteLine("\n================");

                }
                else
                {
                    Console.WriteLine("Path could not be found.");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
        }
    }
}

Compiled version can be found here: Download String Searcher

- Imraan Moosa


Is your website/blog ready to launch?

June 17, 2009

People and customers judge you by your website. It is especially important for a startup company/website/blog to have all the basic information covered. Check your website against the following to make sure you are giving your viewers the things that they require.

  • Contant Information – Do you have all the relevant information on your website/blog for your viewers to contact you? The most frustrating thing for a viewer is not finding the right information in which to contact you.
  • Consistent design – Be sure to have a consistent design throughout your website (if you have one) or your blog. Be sure that menu’s, logos, colours are all in the same place for every page.
  • Search menu – Have a look around the most popular and large websites. They all have a search ability to search for material from within your website/blog.
  • Updates – The most critical thing is for you to consistently update your website or blog. Keep it updated! Post new things all the time. Remember that each day is a new beginning and brings new viewers. You want to keep updating so that you give reason for your viewers to come back.
  • Analytics – What if you built a website and nobody came? Thankfully blogs offer a system in which you can view the number of viewers on a post, the most popular topics etc. Google Analytics ( www.google.com/analytics ) offers such a tool for websites. Another tool that you could use is Woopra ( www.woopra.com ).

Enjoy your day.

- Imraan Moosa


Starting an Import/Explort Business

June 17, 2009
- Imraan Moosa - CrackerSolutions

Hello again :) I recently received a comment asking for some advice on starting an import/export business and so I decided to read up a little on the subject so that I could provide some insight and share what I have learnt. I do not claim to be an expert on this topic, however I am most willing to learn together with you. With that said..let us begin!

The international market is becoming more and more popular as the world progresses. Actually it is becoming hot! Gone are the days were things like flying, sailing across countries were laughable. We live in a world with endless possibilities and it is becoming more and more common for the average person to begin an import/export business.

Take a step back however. International trading is not something new. Remember the old days, when travellers around the world use to set sail in order to barter cotton, spices and other precious stones. We as more technologically-advanced people, have just found easier ways to import/export our products.

Not everybody is cut-out to be an international trader. If you are the type of person who shudders at the thought of making a sales pitch, or you are an organizationally challenged person then I would say that you don’t want to be doing this kind of business. If however, you are a really enthusiastic person- who enjoys tracking receipts, invoices – or if you love the idea of working with people from different cultures, then I would tell you to just keep going! You are on the right track!

Why do we Import/Export?

It comes down to 3 main reasons being:

  1. Availability: There are certain products you just can’t obtain from within your own country and therefore need to import it from another.
  2. Image: Sometimes the ‘image’ of a product from another country just appeals more or has a greater effect even though the same product is available in your country.
  3. Price: The price of a product from another country in comparison to the price in your country being lower – would be profitable to import and sell within your country – at a lower price.

Aside from these things, countries usually export products which they can product inexpensively due to technology and resources and import products which they can not/find difficult to produce. Take for example a country such as Saudi Arabia which is gifted with oil. They contain the resources together with the technology to take advantage of this oil and export it – but they may need to import clothing.

There are different types of Import/Export Businesses niz:

  1. Export Management Company (EMC): An EMC handles the exporting or a product for a domestic company that wants to sell its product internationally, but does not know how to or does not want to know how to. They handle most of everything. They take care of distribution, packing, dealers, arranging shipping and sometimes the EMC takes title to the goods becoming their own distributor.
  2. Export Trading Company (ETC): An ETC focuses on the other side of the coin. They find out what products are in demand from foreign buyers and then find domestic sources that are willing to export. See the difference between an EMC and a ETC?
  3. Import/Export Merchant: This sort of entrepreneur is like a free agent bound to themselves only, taking all the risks – but gaining all the profits too. They specialize in no specific product, nor do they have a permanent client base. They look for whatever is in demand at that moment, import/export it – package and ship it.

Other things that you will need to look into – finding a trade market! Every product needs customers in which to sell to and you will need to research what foreign customers are in demand for and do market research so that you are fully equipped.

I have now come to the end of my mini Import/Export Business guide. What I have written is just the beginning on a major topic of how to start an Import/Export Business. However, I hope that I have hyped you, oh future Importer/Exporter enough to continue reading more on the topic so that you may fulfil your dream.

If you have any furthur questions, comments or suggestions – feel free to comment on my blog or email me: id3ntity@gmail.com

Lunch is ready..and I’m out :)

- Imraan Moos


C# Ebook – Round 2!

June 16, 2009

Hello there. My name is Imraan Moosa and for those of you who do not know me, I am the author of the CrackerSolutions blog.

While browsing the web, I came along an interesting e-book taken from the www.programmersheaven.com

To all those programmers or wanting-to programmers out there, I suggest you take a few minutes to check out that website. It contains alot of programming material and guides that will assist you and help you familiarize yourself with the programming environment.

Now back to the point :)

The e-book that I came across can be found here: Download C# Ebook!

Take your time. Read through it slowly. Follow the examples if any..but most importantly keep programming! The best way to learn programming is to practise. Don’t be afraid. Try things. Programming is all about exploring. Pushing your computer into creating something extraordinary. You will be suprised at how satisfying a working program can be.

Happy programming friend! :

- Imraan Moosa (id3ntity@gmail.com)


PC Hardware Tutorial – Components of a computer

June 16, 2009

Good Evening my fellow friends. I am Imraan Moosa the author or CrackerSolutions.

As computer begin to override and ’simplify’ our lives more and more, it is becoming vital to understand the basics on computer hardware. Below is a basic video that will demonstrate the different components of a PC.

Enjoy :)

Components of a PC


Visual Basic 2005 .NET For Dummies – Ebook

June 16, 2009

Here is a link for all those Visual Basic .NET programmers out there :)

Download Here

Happy Programming.


E-Biz Business Startups

June 16, 2009

Hello there. My name is Imraan Moosa and on this fine afternoon, I would like to share with you a wonderful article I found interesting in a business magazine. If you are amongst the group of people thinking of starting an online enterprise, here are a few business ideas for your startup.

  • Conduct Internet tutor workshops for students or other small business owners who want to become a “webizen” if not a webpreneur.
  • Write articles for companies that need to create material for their websites that change frequently.
  • Launch your own service as a website designer.
  • Sell services and products on your own website.
  • Select a topic that your interested in/talented and launch a blog about it and you can make money by selling ads on it.
  • Put together emailing lists for other small businesses. (Beware that you do not go beyong peoples privacy)
  • Start your own business as an Internet development manager and help other small business owners investigate possible ways of earning money online.
  • Visit existing businesses and check whether they have a website. If not you could offer to design one for them and get them cheap hosting.
  • Sell a product via your online website.
  • Start a website service that contains lists of current events, concerts and other activities that will attract a group of followers.
  • Start your own import shop online - Find a product that you think customers would be interested in from other parts of the world and sell it via your online website. You can specialise in one product or have a variety of different products.
  • Become a web-editor and offer your services of managing and editing the website of a company/individual.
  • Host Q & A and discussion sessions – Banner advertisements that scroll through the conversations could produce income.

These are but a few E-Biz business startup ideas. However, you should always remember that it is not the idea that makes people successful, but the perseverance and folow-through that counts. A million dollar idea could be stuck in your head, but without the effort and the ability to make it a reality, it is worth nothing.

I urge you reader, open up your mind, strive for your dreams and make them a reality.

- Imraan Moosa


Ideas For a Startup Company

June 8, 2009

Imraan Moosa (id3ntity@gmail.com)

(This essay is derived from a talk at the 2005 Startup School.)

How do you get good ideas for startups? That’s probably the number one question people ask me.

I’d like to reply with another question: why do people think it’s hard to come up with ideas for startups?

That might seem a stupid thing to ask. Why do they think it’s hard? If people can’t do it, then it is hard, at least for them. Right?

Well, maybe not. What people usually say is not that they can’t think of ideas, but that they don’t have any. That’s not quite the same thing. It could be the reason they don’t have any is that they haven’t tried to generate them.

I think this is often the case. I think people believe that coming up with ideas for startups is very hard– that it must be very hard– and so they don’t try do to it. They assume ideas are like miracles: they either pop into your head or they don’t.

I also have a theory about why people think this. They overvalue ideas. They think creating a startup is just a matter of implementing some fabulous initial idea. And since a successful startup is worth millions of dollars, a good idea is therefore a million dollar idea.

If coming up with an idea for a startup equals coming up with a million dollar idea, then of course it’s going to seem hard. Too hard to bother trying. Our instincts tell us something so valuable would not be just lying around for anyone to discover.

Actually, startup ideas are not million dollar ideas, and here’s an experiment you can try to prove it: just try to sell one. Nothing evolves faster than markets. The fact that there’s no market for startup ideas suggests there’s no demand. Which means, in the narrow sense of the word, that startup ideas are worthless.

Questions

The fact is, most startups end up nothing like the initial idea. It would be closer to the truth to say the main value of your initial idea is that, in the process of discovering it’s broken, you’ll come up with your real idea.

The initial idea is just a starting point– not a blueprint, but a question. It might help if they were expressed that way. Instead of saying that your idea is to make a collaborative, web-based spreadsheet, say: could one make a collaborative, web-based spreadsheet? A few grammatical tweaks, and a woefully incomplete idea becomes a promising question to explore.

There’s a real difference, because an assertion provokes objections in a way a question doesn’t. If you say: I’m going to build a web-based spreadsheet, then critics– the most dangerous of which are in your own head– will immediately reply that you’d be competing with Microsoft, that you couldn’t give people the kind of UI they expect, that users wouldn’t want to have their data on your servers, and so on.

A question doesn’t seem so challenging. It becomes: let’s try making a web-based spreadsheet and see how far we get. And everyone knows that if you tried this you’d be able to make something useful. Maybe what you’d end up with wouldn’t even be a spreadsheet. Maybe it would be some kind of new spreasheet-like collaboration tool that doesn’t even have a name yet. You wouldn’t have thought of something like that except by implementing your way toward it.

Treating a startup idea as a question changes what you’re looking for. If an idea is a blueprint, it has to be right. But if it’s a question, it can be wrong, so long as it’s wrong in a way that leads to more ideas.

One valuable way for an idea to be wrong is to be only a partial solution. When someone’s working on a problem that seems too big, I always ask: is there some way to bite off some subset of the problem, then gradually expand from there? That will generally work unless you get trapped on a local maximum, like 1980s-style AI, or C.

Upwind

So far, we’ve reduced the problem from thinking of a million dollar idea to thinking of a mistaken question. That doesn’t seem so hard, does it?

To generate such questions you need two things: to be familiar with promising new technologies, and to have the right kind of friends. New technologies are the ingredients startup ideas are made of, and conversations with friends are the kitchen they’re cooked in.

Universities have both, and that’s why so many startups grow out of them. They’re filled with new technologies, because they’re trying to produce research, and only things that are new count as research. And they’re full of exactly the right kind of people to have ideas with: the other students, who will be not only smart but elastic-minded to a fault.

The opposite extreme would be a well-paying but boring job at a big company. Big companies are biased against new technologies, and the people you’d meet there would be wrong too.

In an essay I wrote for high school students, I said a good rule of thumb was to stay upwind– to work on things that maximize your future options. The principle applies for adults too, though perhaps it has to be modified to: stay upwind for as long as you can, then cash in the potential energy you’ve accumulated when you need to pay for kids.

I don’t think people consciously realize this, but one reason downwind jobs like churning out Java for a bank pay so well is precisely that they are downwind. The market price for that kind of work is higher because it gives you fewer options for the future. A job that lets you work on exciting new stuff will tend to pay less, because part of the compensation is in the form of the new skills you’ll learn.

Grad school is the other end of the spectrum from a coding job at a big company: the pay’s low but you spend most of your time working on new stuff. And of course, it’s called “school,” which makes that clear to everyone, though in fact all jobs are some percentage school.

The right environment for having startup ideas need not be a university per se. It just has to be a situation with a large percentage of school.

It’s obvious why you want exposure to new technology, but why do you need other people? Can’t you just think of new ideas yourself? The empirical answer is: no. Even Einstein needed people to bounce ideas off. Ideas get developed in the process of explaining them to the right kind of person. You need that resistance, just as a carver needs the resistance of the wood.

This is one reason Y Combinator has a rule against investing in startups with only one founder. Practically every successful company has at least two. And because startup founders work under great pressure, it’s critical they be friends.

I didn’t realize it till I was writing this, but that may help explain why there are so few female startup founders. I read on the Internet (so it must be true) that only 1.7% of VC-backed startups are founded by women. The percentage of female hackers is small, but not that small. So why the discrepancy?

When you realize that successful startups tend to have multiple founders who were already friends, a possible explanation emerges. People’s best friends are likely to be of the same sex, and if one group is a minority in some population, pairs of them will be a minority squared. [1]

Doodling

What these groups of co-founders do together is more complicated than just sitting down and trying to think of ideas. I suspect the most productive setup is a kind of together-alone-together sandwich. Together you talk about some hard problem, probably getting nowhere. Then, the next morning, one of you has an idea in the shower about how to solve it. He runs eagerly to to tell the others, and together they work out the kinks.

What happens in that shower? It seems to me that ideas just pop into my head. But can we say more than that?

Taking a shower is like a form of meditation. You’re alert, but there’s nothing to distract you. It’s in a situation like this, where your mind is free to roam, that it bumps into new ideas.

What happens when your mind wanders? It may be like doodling. Most people have characteristic ways of doodling. This habit is unconscious, but not random: I found my doodles changed after I started studying painting. I started to make the kind of gestures I’d make if I were drawing from life. They were atoms of drawing, but arranged randomly. [2]

Perhaps letting your mind wander is like doodling with ideas. You have certain mental gestures you’ve learned in your work, and when you’re not paying attention, you keep making these same gestures, but somewhat randomly. In effect, you call the same functions on random arguments. That’s what a metaphor is: a function applied to an argument of the wrong type.

Conveniently, as I was writing this, my mind wandered: would it be useful to have metaphors in a programming language? I don’t know; I don’t have time to think about this. But it’s convenient because this is an example of what I mean by habits of mind. I spend a lot of time thinking about language design, and my habit of always asking “would x be useful in a programming language” just got invoked.

If new ideas arise like doodles, this would explain why you have to work at something for a while before you have any. It’s not just that you can’t judge ideas till you’re an expert in a field. You won’t even generate ideas, because you won’t have any habits of mind to invoke.

Of course the habits of mind you invoke on some field don’t have to be derived from working in that field. In fact, it’s often better if they’re not. You’re not just looking for good ideas, but for good new ideas, and you have a better chance of generating those if you combine stuff from distant fields. As hackers, one of our habits of mind is to ask, could one open-source x? For example, what if you made an open-source operating system? A fine idea, but not very novel. Whereas if you ask, could you make an open-source play? you might be onto something.

Are some kinds of work better sources of habits of mind than others? I suspect harder fields may be better sources, because to attack hard problems you need powerful solvents. I find math is a good source of metaphors– good enough that it’s worth studying just for that. Related fields are also good sources, especially when they’re related in unexpected ways. Everyone knows computer science and electrical engineering are related, but precisely because everyone knows it, importing ideas from one to the other doesn’t yield great profits. It’s like importing something from Wisconsin to Michigan. Whereas (I claim) hacking and painting are also related, in the sense that hackers and painters are both makers, and this source of new ideas is practically virgin territory.

Problems

In theory you could stick together ideas at random and see what you came up with. What if you built a peer-to-peer dating site? Would it be useful to have an automatic book? Could you turn theorems into a commodity? When you assemble ideas at random like this, they may not be just stupid, but semantically ill-formed. What would it even mean to make theorems a commodity? You got me. I didn’t think of that idea, just its name.

You might come up with something useful this way, but I never have. It’s like knowing a fabulous sculpture is hidden inside a block of marble, and all you have to do is remove the marble that isn’t part of it. It’s an encouraging thought, because it reminds you there is an answer, but it’s not much use in practice because the search space is too big.

I find that to have good ideas I need to be working on some problem. You can’t start with randomness. You have to start with a problem, then let your mind wander just far enough for new ideas to form.

In a way, it’s harder to see problems than their solutions. Most people prefer to remain in denial about problems. It’s obvious why: problems are irritating. They’re problems! Imagine if people in 1700 saw their lives the way we’d see them. It would have been unbearable. This denial is such a powerful force that, even when presented with possible solutions, people often prefer to believe they wouldn’t work.

I saw this phenomenon when I worked on spam filters. In 2002, most people preferred to ignore spam, and most of those who didn’t preferred to believe the heuristic filters then available were the best you could do.

I found spam intolerable, and I felt it had to be possible to recognize it statistically. And it turns out that was all you needed to solve the problem. The algorithm I used was ridiculously simple. Anyone who’d really tried to solve the problem would have found it. It was just that no one had really tried to solve the problem. [3]

Let me repeat that recipe: finding the problem intolerable and feeling it must be possible to solve it. Simple as it seems, that’s the recipe for a lot of startup ideas.

Wealth

So far most of what I’ve said applies to ideas in general. What’s special about startup ideas? Startup ideas are ideas for companies, and companies have to make money. And the way to make money is to make something people want.

Wealth is what people want. I don’t mean that as some kind of philosophical statement; I mean it as a tautology.

So an idea for a startup is an idea for something people want. Wouldn’t any good idea be something people want? Unfortunately not. I think new theorems are a fine thing to create, but there is no great demand for them. Whereas there appears to be great demand for celebrity gossip magazines. Wealth is defined democratically. Good ideas and valuable ideas are not quite the same thing; the difference is individual tastes.

But valuable ideas are very close to good ideas, especially in technology. I think they’re so close that you can get away with working as if the goal were to discover good ideas, so long as, in the final stage, you stop and ask: will people actually pay for this? Only a few ideas are likely to make it that far and then get shot down; RPN calculators might be one example.

One way to make something people want is to look at stuff people use now that’s broken. Dating sites are a prime example. They have millions of users, so they must be promising something people want. And yet they work horribly. Just ask anyone who uses them. It’s as if they used the worse-is-better approach but stopped after the first stage and handed the thing over to marketers.

Of course, the most obvious breakage in the average computer user’s life is Windows itself. But this is a special case: you can’t defeat a monopoly by a frontal attack. Windows can and will be overthrown, but not by giving people a better desktop OS. The way to kill it is to redefine the problem as a superset of the current one. The problem is not, what operating system should people use on desktop computers? but how should people use applications? There are answers to that question that don’t even involve desktop computers.

Everyone thinks Google is going to solve this problem, but it is a very subtle one, so subtle that a company as big as Google might well get it wrong. I think the odds are better than 50-50 that the Windows killer– or more accurately, Windows transcender– will come from some little startup.

Another classic way to make something people want is to take a luxury and make it into a commmodity. People must want something if they pay a lot for it. And it is a very rare product that can’t be made dramatically cheaper if you try.

This was Henry Ford’s plan. He made cars, which had been a luxury item, into a commodity. But the idea is much older than Henry Ford. Water mills transformed mechanical power from a luxury into a commodity, and they were used in the Roman empire. Arguably pastoralism transformed a luxury into a commodity.

When you make something cheaper you can sell more of them. But if you make something dramatically cheaper you often get qualitative changes, because people start to use it in different ways. For example, once computers get so cheap that most people can have one of their own, you can use them as communication devices.

Often to make something dramatically cheaper you have to redefine the problem. The Model T didn’t have all the features previous cars did. It only came in black, for example. But it solved the problem people cared most about, which was getting from place to place.

One of the most useful mental habits I know I learned from Michael Rabin: that the best way to solve a problem is often to redefine it. A lot of people use this technique without being consciously aware of it, but Rabin was spectacularly explicit. You need a big prime number? Those are pretty expensive. How about if I give you a big number that only has a 10 to the minus 100 chance of not being prime? Would that do? Well, probably; I mean, that’s probably smaller than the chance that I’m imagining all this anyway.

Redefining the problem is a particularly juicy heuristic when you have competitors, because it’s so hard for rigid-minded people to follow. You can work in plain sight and they don’t realize the danger. Don’t worry about us. We’re just working on search. Do one thing and do it well, that’s our motto.

Making things cheaper is actually a subset of a more general technique: making things easier. For a long time it was most of making things easier, but now that the things we build are so complicated, there’s another rapidly growing subset: making things easier to use.

This is an area where there’s great room for improvement. What you want to be able to say about technology is: it just works. How often do you say that now?

Simplicity takes effort– genius, even. The average programmer seems to produce UI designs that are almost willfully bad. I was trying to use the stove at my mother’s house a couple weeks ago. It was a new one, and instead of physical knobs it had buttons and an LED display. I tried pressing some buttons I thought would cause it to get hot, and you know what it said? “Err.” Not even “Error.” “Err.” You can’t just say “Err” to the user of a stove. You should design the UI so that errors are impossible. And the boneheads who designed this stove even had an example of such a UI to work from: the old one. You turn one knob to set the temperature and another to set the timer. What was wrong with that? It just worked.

It seems that, for the average engineer, more options just means more rope to hang yourself. So if you want to start a startup, you can take almost any existing technology produced by a big company, and assume you could build something way easier to use.

Design for Exit

Success for a startup approximately equals getting bought. You need some kind of exit strategy, because you can’t get the smartest people to work for you without giving them options likely to be worth something. Which means you either have to get bought or go public, and the number of startups that go public is very small.

If success probably means getting bought, should you make that a conscious goal? The old answer was no: you were supposed to pretend that you wanted to create a giant, public company, and act surprised when someone made you an offer. Really, you want to buy us? Well, I suppose we’d consider it, for the right price.

I think things are changing. If 98% of the time success means getting bought, why not be open about it? If 98% of the time you’re doing product development on spec for some big company, why not think of that as your task? One advantage of this approach is that it gives you another source of ideas: look at big companies, think what they should be doing, and do it yourself. Even if they already know it, you’ll probably be done faster.

Just be sure to make something multiple acquirers will want. Don’t fix Windows, because the only potential acquirer is Microsoft, and when there’s only one acquirer, they don’t have to hurry. They can take their time and copy you instead of buying you. If you want to get market price, work on something where there’s competition.

If an increasing number of startups are created to do product development on spec, it will be a natural counterweight to monopolies. Once some type of technology is captured by a monopoly, it will only evolve at big company rates instead of startup rates, whereas alternatives will evolve with especial speed. A free market interprets monopoly as damage and routes around it.

The Woz Route

The most productive way to generate startup ideas is also the most unlikely-sounding: by accident. If you look at how famous startups got started, a lot of them weren’t initially supposed to be startups. Lotus began with a program Mitch Kapor wrote for a friend. Apple got started because Steve Wozniak wanted to build microcomputers, and his employer, Hewlett-Packard, wouldn’t let him do it at work. Yahoo began as David Filo’s personal collection of links.

This is not the only way to start startups. You can sit down and consciously come up with an idea for a company; we did. But measured in total market cap, the build-stuff-for-yourself model might be more fruitful. It certainly has to be the most fun way to come up with startup ideas. And since a startup ought to have multiple founders who were already friends before they decided to start a company, the rather surprising conclusion is that the best way to generate startup ideas is to do what hackers do for fun: cook up amusing hacks with your friends.

It seems like it violates some kind of conservation law, but there it is: the best way to get a “million dollar idea” is just to do what hackers enjoy doing anyway.

Notes

[1] This phenomenon may account for a number of discrepancies currently blamed on various forbidden isms. Never attribute to malice what can be explained by math.

[2] A lot of classic abstract expressionism is doodling of this type: artists trained to paint from life using the same gestures but without using them to represent anything. This explains why such paintings are (slightly) more interesting than random marks would be.

[3] Bill Yerazunis had solved the problem, but he got there by another path. He made a general-purpose file classifier so good that it also worked for spam.