For service in gopher, dial 70.

September 23, 2007

Startup thoughts I

Filed under: misc, programming, ideas — Dave @ 4:37 pm

For reasons I’ll never understand, people ask me for startup ideas. I work at a company that’s over 30 years old, forever in software company terms, so I have to assume it’s because I spend part of my day worrying about other people’s startups.

Making a Profit is Nice but…

The classic startup doesn’t need to be profitable really — not in the short term, at least. what you really want is profitability to scale better than linearly.

Consider coffee shops, if you build 2 coffee shops rather than one you’ll make twice as much money (roughly) and spend twice as much to get it, so your profits will be twice as much. The profit scales with the investment — yuck, you’ll never get rich that way. Even worse, you need to be profitable from the beginning to make any money too.

Linear Profit

With chains though, there’s a reason that there are 32 768 billion Starbucks. Things are cheaper in bulk, not only ingredients but advertising and design. You also get a little bonus from people being more comfortable with your brand. So in the case of chains you get something like this:

Better Linear

Certainly better. But if the first one’s not profitable, you probably won’t build 20 more.

Software makes people rich because the first copy costs a million dollars, but the next million cost a dollar and sell for the same price:

Software

So you don’t need to make a profit at the beginning to make a billion dollars in a few years.

linear4profit.png

But that’s so 1976, it’s the WEB 2.0 and since it’s not a point release we’re breaking backwards compatability with old business models.

Metcalfe’s Law states that the value of a network scales with the square of the number of participants. So let’s run these numbers; say you spend $1000 to develop something, and each user on the system gets one thousandth of a cent of value (on average) from every other user of the system. When we’re talking about tens of users, I have to add a glow to the Value line so you can tell it’s not zero.
networkprofit.png
With hundreds of users, it still isn’t making financial sense:
network100sprofit.png

But with thousands or tens of thousands of users we’re actually creating some value here:
network1000sprofit.png

It’s worth mentioning this is value we’re creating for the users, we haven’t made any money yet. It’s not hard to make something useful for other people, the hard part is getting them to give you more money for it than you spent making it. But when we get in to hundreds of thousands of users, there’s so much value being created that it becomes a lot easier to shave off enough of that value to create a profit:
network100000sprofit.png
Maybe we’ll sell ads, maybe our users will baffle me by spending $1 to send tiny pictures to each other. But most likely at this point we’d sell the company to another company that has a proven track record of making money and let them worry about it.

July 16, 2007

Cut and paste

Filed under: programming, javascript — Dave @ 3:27 pm

Here’s a nice little demo:
http://rayozzie.spaces.live.com/editorial/rayozzie/demo/liveclip/liveclipsample/clipboardexample.html
of cutting and pasting objects between different browsers (IR/Firefox)

April 17, 2007

Overlooked reasons women avoid Computer Science

Filed under: programming, education — Dave @ 5:53 pm

It seems every month or so, I read about some new plan to get more women into computer science. And there’s always a lof of ensuing discussion about why they tend to avoid CS.

Firstly, a lot of the oft-repeated reasons probably do contribute: Math and Computer Science are more competitive (the first day of frosh week we were literally comparing penis size math contest marks). They’re considered geeky and anti-social, although I think the people opening sockets, tracing physical location by looking at the binary and machine coding matrices on 24 are supposed to be CS types.

I’m going to propose another explanation: Women are more trusting and egalitarian when they choose their degrees.

Case in point, a friend of mine is changing her degree from philosophy to computer science. She’s smart, and she wants to make new things.

So why did she go into philosophy?

I think of philosophy as a backwater degree that you get to drink, meet girls and do twenty minutes of work a week for a few years because you aren’t ready to grow up.

Coming out of high school, however, she thought that philosophy was about thinking, understanding and digesting tough unsolved problems about the universe and the human condition — that there would be spirited debates running late into the night where great young minds would come to grips with great problems old and new.

She trusted a philosophy degree to live up to its impressive pedigree and the marketing material that universities provide.

In reality, over the millennia, the scientists left, the mathematicians left, the historians left, even the sociologists left. The philosophy degree that you’re left with is an attempt to cobble together a discipline without having to do anything difficult.

The other problem is that women are more inclined to believe that all degrees are equally valid (or at least to believe this idea is more true); that sociology students study equally difficult problems from a sociological perspective, for instance.

The egalitarian approach becomes problematic when you look at the different disciplines as being equals because you can be swayed more easily by prejudices about them. The stereotypical picture of a hacker staying up all night working on code becomes “a different way of solving problems” not a reflection of the difficulty involved.

If you thought you could solve problems sitting in couches at a coffee shop talking about them instead of by unit testing and stepping through a debugger, which would you choose? Thinking that deciding “we need to make the product more responsive” and implementing a caching mechanism are both equivalent contributions is a deceptively tantalizing and strangely common but ridiculous mentality.

I’m hesitant to propose somehow making high school students less naive and trusting. Although being more honest about how degrees really differ would probably be helpful, a school gets just as much tuition from a student studying basket-weaving as biology so I can’t figure out who would benefit enough to actually do this. So I have nothing in terms of a solution.

There probably are some residual elements of an old boys club, but I suspect they’re fading away (my highschool CS teacher was a woman). I suspect that the percentages of females in CS will stabilize in the 25-35% range and the calls for something to be done about that will stabilize in the noise-from-groups-that-are-upset-about-everything range.

Discalimer: I’m gender agnostic when it comes to people’s skills, this is only one of thousands of possible explanations to this gender imbalance. I reserve the right to change my mind to better suit the evidence.

postscript:

There’s a third reason which might affect the gender balance: many CS courses are awful.

Computer science teachers have the benefit that their students are often excited, involved and learning the material on their own.

The fact that many computer science students can already program and that the serious ones will apply the theory on their own lets the faculty be lazy.

How often do you hear about a physics dropout that made millions in applied acoustics, or the first year sociology project that brought file-sharing to the masses? Computer Science students doing cool stuff before they graduate is such a cliche that I’ve known second year students to bemoan not having hit it big yet.

If the best reason to study CS is that you would’ve anyway, you’re appealing to a somewhat limited demographic.

April 12, 2007

Everyone on the internet lies

Filed under: jobs, programming — Dave @ 12:47 pm

Actually, it’s a little worse than that — some people don’t. Which means you can’t jst assume the opposite of everything you read.

As a programmer, this is hard to get used to. We have a pretty effective mthod for sepearting wheat from chaff — does the code/idea/algorithm/bugfix work? — so the internet is a great place for finding out anything code related.

It’s a bloody awful place for finding out the answer to “What is a reasonable starting salary for a software developer?” Which, despite the fact it involves numbers and programmers, is impossible to solve.

I’ve discovered the following facts thus far:
-There are, like, a billion awesome programmers out there that can’t find jobs
-There is a shortage of programmers
-A reasonable expectation for a starting salary is between 0 and 200 000 a year
-Whoever is posting the message is a super-awesome programmer
-The author works at a startup and makes *a lot* of money
-big companies pay way more than startups
-Google is overvalued
-Google is undervalued
-I should start my own company
-nine out of ten of companies fail
-etc…

Basically 90% of the content is opinions, and even worse, most of it is what the author wants to believe or is just grabage to attract clicks.

Outliers are too noisy, the average joe doesn’t get excitied enough to post so most of the noise comes from people seeking pity (and lying) or people bragging (and lying).

Self reporting is unreliable, to be generous to the point of decpetion.

Priority one is selling ads, in this case I was lucky that there are sites that actually sell this information so they have a vested interest in it being correct. In most cases they just sell ads, and real information is expensive to produce and so bland — you don’t get to the front page of digg saying water is wet.

/ranting

The best 100% free resource I found was this post from Joel on Software. Even then it’s clear many of the posts are grandstanding (”Sr Unix Admin, No college, 92K yr plus 10K bonus” really needs some mention of experience) or optimistic (”$500,000+ from part time Internet Business” but no URL to plug?).

Here is my conclusion:
Software jobs with CS start at 50-80k out of school and then rise to 70-120k over the next 15 years.

Honestly I would’ve settled for confirmation of things I already believed:
-Big company == more money
-Longer hours == more money
-Higher cost of living == more money
-If people get excited about a job as children you get less money for it (see video games and saving the world)

April 7, 2007

Awksomeness (part 2)

Filed under: awk, programming, statistics, R — Dave @ 8:39 pm

I expanded the program from earlier to include special cases related to the data at Rate My Prof:

BEGIN {
 s=""; FS="n";
 print ("last,first,department,votes,quality,ease");
}
/<td/ {
 str = $1;
 gsub(/<[^>]*>/, "",  str);
 gsub(/[t ]/, "", str);
 if( length(str)<40 && length(str)>0 )s=(s str ",");
}
/<tr|<TR/ {
 sub(/,$/, "", s);
 gsub(/&nbsp;/, "0", s);
 gsub(/,,/, ",", s);
 if(length(s)>0) print s; s=""
}

In R:

> uw<-read.csv("c:/newsite/articles/ratemyprof/marksuw.txt")
> plot(uw$ease,uw$quality, xlim=c(1,5), ylim=c(1,5))

Quality vs Easiness

And the first result is that a professor’s quality and easiness aren’t strongly correlated.

Actually, here’s a more honest graph:

> uw$quality2<-uw$quality+runif(length(uw$quality), min=-.05, max = .05)
> uw$ease2<-uw$ease+runif(length(uw$ease), min=-.05, max = .05)
> plot(uw$ease2,uw$quality2, xlim=c(1,5), ylim=c(1,5))

Quality vs Easiness 2

Looking at the distribution of “quality” marks:

Original Quality Distribution
The data isn’t normally distributed — not even close (the average is 3.4), and if a prof has only one vote then that vote really skews them far more than it should (a prof with 50 votes averaging 4.5 is probably better than a prof with a single 5). So I’m going to multiply the distance from the mean by the root of the number of votes:

> qual<-mean(uw$quality)+((uw$quality-mean(uw$quality))*(uw$votes/10)^.5)
> hist(uw$qual,breaks=c(20))

Modified Quality Distribution

Much nicer. Except there’s still one prof originally rated 2.3 — but 198 times who gets slaughtered down to a -1.5. Maybe we don’t need to worry about a few edge conditions.

April 2, 2007

Awk is Awksome

Filed under: awk, data, programming — Dave @ 8:28 pm

I wanted to analyse some of the data from Rate my Professor, and there’s no easy “download as CSV button” so I was going to have to screen scrape.

Awk to the rescue

I use Gawk for Windows and Wget. The awk code to turn a HTML table into a comma seperated file is (1.awk):

BEGIN {s=""; FS="n"}
/<td/ { gsub(/<[^>]*>/, ""); s=(s ", " $1);}
/<tr|<TR/ { print s; s="" }

And then you execute it as: gawk -f 1.awk *.jsp > marks.csv

That’s it, well almost. As always border cases take up most of the code, I’ll post the longer version, and the R-code later.

April 1, 2007

It’s (computer) science!

Filed under: programming — Dave @ 2:40 am

At work this week, I got to do real programming. Usually it’s all about keeping the interfaces straight and handling the border cases.

We need a speedy cache for a specific struct, so I’m hashing, linking lists, binary searching and juggling pointers.

I’m embarrased about how much fun it is.

« Previous Page