Information Technology Dark Side

Struggles of a Self-Taught Coder

Information Technology Dark Side header image 1

An Awesome Response to My Evolution Ponderings

March 2nd, 2010 · 3 Comments

Keith Owens, from East Aurora, NY sent this very intelligent response to my previous post Where are the Smart Caterpillars and Cool Humanoids?. This response came via Dave Harp, a friend and neighbor. Thanks to both Keith and Dave! Here’s Keith’s response in full:

First, taking the big picture, there’s no doubt at all that humans share common ancestors with the great apes, with all mammals farther back, and with all life even farther back. There’s tons of fossil, anatomical, and DNA evidence which proves that conclusively. It is a fact from many lines of evidence that we are descended from ape-like ancestors. All that evidence doesn’t just go away because there are aspects of the development of intelligence that we don’t understand.

Your friend is focusing on one aspect of biology, the development of intelligence in humans, that truly is very poorly understood. His observations are astute and interesting. But in skeleton, organs, immune system, DNA, everything, it is just dead clear that we ARE related to everything else.

So there are many interesting, speculative questions you can ask about human intelligence, but you can’t just say that ignorance of this one area disproves the whole edifice of biological evolution. It’s not completely understood how many features of life, for example, flight in birds, evolved. But that doesn’t negate the fact that the evidence shows, overwhelmingly, that they did. You don’t get to throw out a whole branch of science because there’s one thing you’re puzzled by.

But anyway, suppose your friend is right and human intelligence defies all attempts at understanding. I think that changes very little, actually. Humans are just one species out of millions. As shown by the fossils, and anatomy and DNA, there’s no doubt about the common descent part, so you’re left with supposing that something other than natural selection infused our particular species with intelligence at some point in history.

Maybe God did at some point, as many religious people believe. Or, maybe alien benefactors juiced up our IQ as in “2001: A Space Odyssey.” Whatever. If that makes you feel better, fine (by the way, where did the intelligence of the aliens or of God come from?) It doesn’t change anything about our common descent or about natural selection for the rest of life on Earth.

OK, moving on to some of the details of the writer’s ponderings. Is the existence of humans as the sole intelligent animals really that big a mystery? I suspect not. I would ask whether your friend has looked into the subject at all, being so devoutly curious about it? There’s been TONS written on the subject, and although a lot of it is necessarily speculative, I think that these questions do have at least plausible answers.

Sagan’s “Shadows of Forgotten Ancestors,” which I borrowed from you, is one example. Sagan would argue that the gulf between chimps and bonobos and us is not really all that gigantic. Maybe brains reach a tripping point where if you get so many neurons wired up, you get qualitatively smarter fast. I suspect something like that is true, anyway. Like Skynet from the Terminator movies in computers.

Would elephants benefit from being much more intelligent? That’s not clear, they’re just big herbivores, what do they have to figure out? Dolphins don’t have limbs. Possibly monkeys in trees had a complex environment, there’s a lot of math and physics involved in jumping from branch to branch and judging the distances, maybe that drove brainpower. Brains are “expensive” to develop (Dawkins’ recent book “The Greatest Show on Earth” goes into detail there) so there has to be an immediate, incremental benefit or it won’t happen. Evolution can’t plan ahead for the potential benefit of elephants more than one generation in the future—that’s a misunderstanding.

Why are humans the only sentient species, why don’t we have the Star Wars Cantina Bar scene? It’s a fair question. If you filled a bar with African Pygmies, Swedes, Chinese, Eskimos and Hoosiers, that might begin to look a little funny. We may indeed be on the way to branching, but that takes millions of years and we haven’t been at it that long. Also, like the author notes “perhaps they were the other humanoids and we just took ‘em out.” I think it’s a mainstream theory that there were a number of early human species, Neanderthals and whatnot, and we did just take ‘em out.

Then too, going more into speculation, I suspect that the FIRST species to develop sentience on a particular planet quickly fills the whole planet in a mere few thousand years, and directs resources in various ways to its own needs, thus preventing others from coming along.

And we just happen to be the first, plus we’ve only been this way for an eye blink in geological time. Intelligence may also be a sufficiently rare event that the lightning just doesn’t strike multiple times within millions of years of each other. Somebody had to be first. If the intelligent elephants had beat us to the punch, they’d fix things to their liking, and they sure wouldn’t tolerate primitive humans rising up.

Does Evolution contradict Genesis? Of course it does. Chapters 1 and 2 list how people, animals, plants, the sun, moon, stars, and water came along. It’s all in the wrong order there. Plus, Genesis Chapter 2 blatantly contradicts Genesis Chapter 1! I suppose believers think it is to be taken only figuratively, in which case it can’t contradict anything, after all.

If you enjoyed this post, make sure you subscribe to my RSS feed!

→ 3 CommentsTags: Uncategorized

Where are the Smart Caterpillars and Cool Humanoids?

February 25th, 2010 · 4 Comments

I mentioned a few weeks back that this blog was going to have a broader focus than in the past. Well, this post might suggest that I now have a completely random focus! At any rate, it’s my first attempt at waxing philosophical on these pages.

Disclaimer: Don’t Blame Religion
First off, let me make a disclaimer: I don’t have any religious objection of any kind whatsoever to the theory of evolution. At some other time perhaps I’ll explain why, but for now just accept that I don’t actually see evolution and Genesis as contradicting each other. The reason I say that is because I’m about to dis on evolution a bit and I don’t want to get stupid comments about how I’m biased by my religious views.
Question #1: Why are humans so much awersomer than EVERYTHING else?
There’s something about the idea that humans evolved from other animals on earth that doesn’t jive with the world around me. The thing is, we’re so much more awersome than everything else that is alive on this planet. There’s a huge, miles-wide chasm between us and everything else in terms of brainpower. Even the least intelligent normal human is thousands of times more intelligent than the smartest animal. You put Barney Rubble up against Wilbur the Pig at checkers any day and Barney will win every single time.

There are lots of animals with similarly sized brain cavities, all of which would definitely benefit from a few orders of magnitude leap in intelligence. Take elephants for example – don’t you think they’d be considerably better off if they had a bit of a mental boost? They could store up water for the dry season and avoid all that trek-across-the-summer-desert panic that kills off huge numbers of them every year.

I’m not just being silly here. In every aspect of being human but intelligence we have animal contemporaries. We’re not the only ones with fingers and opposable thumbs, the ability to walk upright, or feel emotions. Other animals have evolved to form social groups, mate for life (not that many humans do anymore), and provide extended care for their young. Why has no other form of life on the whole face of the planet made the same leap to be smart?

Shouldn’t at least one other creature have done it? If you made a bunch of lists along the lines of “Species that fly”, “Species that jump”, “Species that whatever”, every one of those lists would have more than one, usually more than ten, different species in it.

Now make a list of species that can imagine something that doesn’t exist and make it exist.

It’s short.

Question #2: Shouldn’t there be humanoids?

Remember the cantina scene in Star Wars? It was full of humanoids – human-like beings that weren’t Homo sapiens. Why isn’t earth more like that cantina?

I mean, if you had a cantina for squirrels, you’d see multiple species. The same is true of nearly every other type of animal on the planet, except perhaps the platypus and a few others.

Instead, if you go to any bar on earth, every single person there is Homo sapiens, except for those dudes from the Geico commercials. You might question this fact based on appearances, but trust me, blood samples would prove my point.

It seems to me we ought to have more than one species of humanity. This doesn’t make sense to me – if evolution causes branching in human families, why haven’t we done it?

Or did we do it and just kill the other ones off? Maybe that’s where myths of giants, ogres, trolls, etc came from – perhaps they were the other humanoids and we just took em out.

I’m just sayin.

If you enjoyed this post, make sure you subscribe to my RSS feed!

→ 4 CommentsTags: Uncategorized

How to write an effective bug report

February 23rd, 2010 · 3 Comments

This tip is based on my own experiences of late. I’m very curious how other testers/developers feel about this tip.
State the PROBLEM Clearly in a Single Sentence
It’s easy to confuse stating the CONDITION with stating the PROBLEM. Here are two simple examples, one states the condition, the other states the problem:

The Scout rank does not have a Board of Review requirement.

The Scout badge should not have a Board of Review requirement.

The first is what a user sent me. The second is what I entered in PivotalTracker. Why? Because the first one doesn’t actually describe the problem. It simply describes the condition that, in scouting, the Scout badge is earned without holding a board of review. Depending on how you read that, you might have come to the conclusion that, in TroopTrack, the Scout badge is supposed to have that requirement but does not. In fact, the opposite was true – the user was describing the requirement, not the problem.

Bug reports that do this really well are, in my experience, easier to reproduce and fix, but it requires the tester to make a value judgment about the way things should be. I suspect some testers are philosophically opposed to this.

If you enjoyed this post, make sure you subscribe to my RSS feed!

→ 3 CommentsTags: Uncategorized

20/10 Hindsight: 5 Things A Rails Noob Should Do From the Very Beginning of Your Rails Project

February 5th, 2010 · No Comments

Lo-Glo as You Go
Globalizing and localizing a Rails app isn’t hard work, but it’s mind-numbingly tedious if you have to do it all at once. Trust me. You’ll be happier if you lo-glo as you go, so just do it if there is the slightest possibility you’ll need to later on.
REST Along the Way
I’m not talking about naps (never been a fan of those). I’m talking about how you structure your controllers and views. If you don’t understand REST at the beginning of your project, just take a little time to learn it. I wish I had. Now, every time I touch something that’s not RESTful, I re-factor it. I lourve the cleanliness, but I wish I’d just done it this way from the very beginning. Even the mistakes I would have made would be easier to clean up now if I’d used REST.
Get Crazy about Plugins: Don’t re-invent the garbage truck, let alone the wheel. It’s sometimes surprising what has already been done for you, from authentication to calendars, there are Rails plugins galore.
Watch the Freakin’ RailsCasts: I was about a year into TroopTrack before I watched my first RailsCast by Ryan Bates. This is one of the best Rails resources on the web and will open your mind to a lot of stoof you wouldn’t think of on your own.
When in Doubt, Pick the Rails Way: Let’s say you had a choice between using cascade deletes at the DB level and using :dependent => :destroy in the model. You might be tempted by cascade deletes, depending on your back-story as a coder. Don’t do it. GO WITH THE RAILS WAY. Later on, when you’ve been around the block a few dozen times, you might feel comfortable with deviating from the Rails way, but … try the Rails way first.

If you enjoyed this post, make sure you subscribe to my RSS feed!

→ No CommentsTags: Uncategorized

Setting Growth Goals for a SaaS Product Using Agile Principles

February 3rd, 2010 · No Comments

A Goal to Dream On
How do you think a company should set it’s growth goals for a SaaS product prior to its launch? What do you think those goals should be? What criteria might you use to figure it out? Would you look at market size, price point, competition market share, etc?

When I was daydreaming about TroopTrack.com, I did exactly that. After a while, I came up with a goal that was basically enough customers to make $500,000 in revenue after 2 years. Pretty reasonable right?

Wrong

The problem with this sort of goal is that I didn’t have a clue what I was doing. I wasn’t even in the market yet, and here I was prognosticating 2 years into the future.

And I call myself an agilist.

I should be ashamed.

A Series of Goals
Goals should grow incrementally, starting with the first attainable goal, and you should really only work on one goal at a time, the immediate next goal. That way, you can adjust future goals based on what you learn form working on your current goal.

A Goal to Start With
The very first goal you should have is to get a customer. One. This can be harder than you think, but whether you convince someone to pay real money for your product on the same day you launch or the six months later, the first time you get an email from Google Checkout that someone has paid you money you will be elated.

Why start here? It’s simple really. If you are focused on getting that one first customer, you will have a different mindset than if you are focused on getting 10,000. You’ll know their names. You’ll call them when they have problems. You’ll get out of bed in the middle of the night if you have to, just to get them to spend $X a month to use your stuff.

You’ll also be less flippant about cost. You’re only trying to get 1 customer, so why get a huge server? You can support one customer with a free (or practically free) account on Heroku. You’ll try hard to make one customer pay as much of the bills as possible.

You’ll also listen to the prospective customers and incorporate their feedback into your application. You’ll learn how much effort it takes to support one customer, and you’ll start to understand how many prospective customers it takes to create one paying customer.

All of this activity will lay the groundwork for your future business. You’ll develop a business model in your head that takes into account the cost of customer acquisition, support, etc. It will show you how to make your business profitable and sustainable.

Note: One of the things you aren’t thinking about when you’re focused on getting your first customer is expensive or broad advertising campaigns. It’s not time for that yet.

Next Goal: 10 Customers
This is the first big test. Can you repeat what you did to get one customer and have it work? Does your conversion rate (prospective customers to paying customers) hold true or spin off wildly in the wrong direction? Can you scale the interaction intensity up without running yourself dry?

Note: the number 10 is arbitrary if you don’t think about context. For a large, expensive SaaS product, that number should probably be 2. If your product is $35/year, then 10 seems about right. And, by the way, you’re still not thinking about advertising.

Can I get 100 people to give me money?
You’re probably starting to sense a pattern here. I’ve got more than ten paying customers, and I’ve learned a lot about my business. My conversion rate is holding steady at about 40%, up from a dismal 2% when I got my first customer. My revenue and my burn rate are holding steady and breaking even, but I don’t have enough profit to build a reserve.

How do I get to 100 customers? It’s finally time to start thinking about advertising. If I need 70 customers to get to 100, and my conversion rate is about 40%, then I need to convince 175 people to try it. How do I do that?

My thoughts turn to places I can advertise for free and target people who might be interested: Facebook and LinkedIn for instance. I can create a “fan” club in Facebook and advertise on groups in LinkedIn.

I also think about how I can add these customers without spending money. I need to preserve some of that revenue so I can have the money I need for my next goal.

And then: 1000 customers open their wallets
Once I’ve scaled my business to support 100 customers, things are a little bit different. I’ll have some decent cash flow, and since my costs shouldn’t really go up I’ll have a small amount of money to spend on advertising.

I don’t have a lot to say about this yet, cuz I’m not working on this goal just yet, at least not in a focused way. But I can see it coming, cuz it’s in my backlog.

Paradise or Purgatory: 10,000 customers
This is as far in the future as I can see. I don’t even know how I would scale up to that. I would need help.

But it doesn’t matter, because this goal is in the icebox and won’t come out until I get the previous goal.

You see, I’m waiting for the last responsible moment, which has yet to come.

If you enjoyed this post, make sure you subscribe to my RSS feed!

→ No CommentsTags: Uncategorized

Five Signs You Might Not Be a Good Fit for a Work From Home Position

January 29th, 2010 · 3 Comments

  1. You are an extrovert.
  2. You consider drugs, alcohol, porn, food, or video games an adequate substitute for human beings.
  3. You value a clear distinction between work and life.
  4. You already have marginal hygiene.
  5. You can’t afford to buy 7 new pairs of pajamas all at once.

That is all. Happy Friday!

If you enjoyed this post, make sure you subscribe to my RSS feed!

→ 3 CommentsTags: Uncategorized

TechDarkSide 2.0

January 8th, 2010 · 3 Comments

For years, this blog has carried the sub-title “Corporate IT Survival Guide”. It was a testament to my efforts to find success and satisfaction in the oh-so-complicated social nightmare that is the corporate IT cost center.

Over the years, satisfaction became more important than success to me. I realized that hating my job was ruining parts of my life. It was hurting my health, my friendships, and my family relationships. It wasn’t hurting my wallet, and right up until the moment I gave up, I was doing reasonably well at the success side.

I don’t work in Corporate IT anymore. I work at a small software company as a developer. I’m responsible for quality assurance, customer support, and some product development. Yeah, I’m like, 2 1/2 IT departments. I think that’s totally awesome.

I always postulated that the reason corporate IT sucks is because nobody sells what IT builds, thus my quest to work at a software company. Now that literally everything I do is sold, I find I really like it. Everything is different. Sure, there are some of the pressures you’d expect from being so close to the company’s revenue, but it doesn’t bother me.

At any rate, I’ve been doing this for a year now and I find I don’t really care about corporate IT anymore. This makes it increasingly difficult to blog about corporate IT. It’s time for a change.

So, as of now, this blog is no longer Tech Dark Side: A Corporate IT Survival Guide. IT is now Tech Dark Side: Struggles of a Self-Taught Coder.

The content is obviously going to change to reflect this as well. Here are some specific changes you are likely to notice:

  • A lot of talk about ruby and rails
  • More technical content than I’ve had in the past – it will likely include code samples, tutorials, how-to’s, etc
  • Less topical focus. This is becoming more of a personal blog. You might notice that I veer into areas I would have stayed away from in the past.
  • More talk about my side project, TroopTrack.com, and SaaS in general.
  • I hope this change helps keep my blog relevant to me and doesn’t cause all my readers to jump ship. We’ll see.

    Dave

    If you enjoyed this post, make sure you subscribe to my RSS feed!

    → 3 CommentsTags: Uncategorized

    Scars from the Dark Side

    December 29th, 2009 · 2 Comments

    Sometimes I struggle, now that I’ve left the dark side (forever), to remember that the old rules don’t apply anymore. When things are going well, it’s easy, but there are occasions when the scars from my decade of toiling away in dysfunctional work environments makes it hard. Times like yesterday and today.

    What’s weird about yesterday and today is the context. The thing that triggered my dark-side-reflex was not significant. It was a minor misunderstanding. But, somehow, it conjured up images of a former boss, a person I hated, admired, and often colluded with to get things done as a tool of the evil empire. My ability to do the things that make an organization healthy started to evaporate. Here’s what started to get hard:

  • Giving others the benefit of the doubt
  • Admitting culpability in the situation
  • Appreciating the viewpoint of others
  • Focusing on the objective of my employment
  • When we detect ourselves behaving in unhealthy ways emotionally, the secret to getting out of it is simple: Do something healthy about it. So I admitted to those involved (which includes my boss) that I was starting to get cranky about the issue and that, even though it wasn’t exactly right, I might have some difficulty being rational about it.

    What would your organization do in this situation? Your boss? Your co-workers?

    Mine smiled at me and told me to relax. It was all I needed – a nice reminder that I was free from the Dark Side. The context re-focused, the old boss vibes were gone, and everything became easy again. I could be critical of my own work again, and it felt nice.

    It takes extraordinary people to create a healthy work environment. I think I’m the luckiest computer geek alive.

    If you enjoyed this post, make sure you subscribe to my RSS feed!

    → 2 CommentsTags: Uncategorized

    CSI is Hiring

    December 11th, 2009 · No Comments

    Here’s the job description, from Pete Lacey:

    Skills wise, Zend/PHP would be nice, some flavor of agile, plus SQL, Linux, etc. Needs to be someone who’s not afraid of things like Hadoop, graph databases, big-ass search, and the like.

    Drop me an email if I just described you.

    If you enjoyed this post, make sure you subscribe to my RSS feed!

    → No CommentsTags: Uncategorized

    Running a Hobby Startup for Less than You Spend on Coffee Each Month

    December 8th, 2009 · 2 Comments

    Hobby startups don’t have to be expensive. My startup, TroopTrack.com, has a burn rate of $106 each month. All I have to do is add three paying customers every month and I’ll break even (roughly). Guess what? I’ve been breaking even for almost six months now.

    I’ve found that breaking even is very important to Shannon (my wife). She doesn’t mind the time I spend working on TroopTrack most of the time, and she wouldn’t mind investing a little money in a marketing campaign every now and then, but when it comes to every day operating costs, she wants TroopTrack to be self-sufficient, no matter how small it is.

    Honestly, I just kind of fell into my financial strategy for TroopTrack (no use pretending it was part of my original grand strategy). But, now that I’ve been in it for over a year I have a real strategy that guides not just how I spend my money, but also how I spend my time. I want TroopTrack to break even there too (figuratively). In other words, I want to spend my time adding stuff the customer can see, not doing things that make no difference as far as they can tell. So, here’s my strategy in a single sentence:

    Operationalize TroopTrack in a way that optimizes the amount of time and money I can spend adding new features, supporting existing customers, and adding new customers.

    Given that strategy, here are a few of the ways I’ve implemented this.

    Investments to Avoid Until You Need Them

    1. Hardware – Don’t buy hardware, just rent or borrow it. Make sure to choose a host that is inexpensive and has a good reputation. Only get one environment – production. If you REALLY need a test environment run it on an old PC – you probably have six in your closet. Start with the smallest environment you can and only upgrade it when customers complain about performance (or you have some other clearly demonstrable problem requiring an upgrade). I recommend Heroku for Rails apps or SliceHost.
    2. Billing Solutions – Keep this as simple as possible and don’t bother automating it until you really need to. TroopTrack billing still isn’t automated – after a customer makes a payment I have to manually mark their account as paid. Trust me, at three transactions a month I can keep up. Frankly, at 100 tx/mo it wouldn’t be a problem – Shannon would be happy to do it at that point. I recommend Google Checkout – it only took me about ten minutes to add payment through Google Checkout to TroopTrack. Avoid any service with a monthly fee. You don’t need those guys until you need them.
    3. Provisioning- Cell phone companies didn’t start out with phones that provisioned themselves when you turned them on. New customers had to walk through manual steps, usually with the aid of an expert, for YEARS and that industry still took off. In the same vein, don’t go to huge lengths to automate everything related to adding new customers, at least not until you need it and you have enough experience to know what it should be like.

    Investments You Should Make Early

    1. Help Desk- don’t roll your own. It will suck time away from real development. For less than $10/month, you can get a Help Desk with forums, SLAs, single-sign-on and other great features from ZenDesk. Your customers will love your help desk, and it will save you countless hours and help you avoid costly mistakes with your customers.
    2. Source Control - Sure, you can install git or svn on your own computer and keep your code there, but don’t. It’s just another thing you have to maintain yourself that also limits how you work with others. Just buy that private GitHub account (less than $10/month) and let them handle it.
    3. Backups- Your hosting company probably has a backup option for your server. Get it. You don’t want to lose customer data or have to start over. This is usually pretty inexpensive as well.

    Here’s what my monthly burn rate for TroopTrack is:
    - Hosting @ SliceHost: $70
    - Backups @ SliceHost: $20
    - ZenDesk: $9
    - GitHub: $7

    Grand Total: $106 per month

    Many people spend more than that on coffee in a month.

    I am going to add another big expense soon – I’m moving all my email over to RackMail. That’s gonna cost me another $3 each month. So put down that Latte – you just paid for next month’s email server!

    If you enjoyed this post, make sure you subscribe to my RSS feed!

    → 2 CommentsTags: Uncategorized