Updated every Monday, Wednesday and Friday
5Oct2009

Marketing Awareness

A few summers ago, I worked for a small company that made custom travel guides. They had the traditional information about your destination, but they also had information such as weather and events for the dates you’d be there. All this was packaged into a professionally printed book, which showed up at your door a few days before you left.

It is a great idea, with a great product to back it up- and it showed up on the first page of Google if you search for something like “custom travel guide.” But here’s the problem- who searches for that?

Sure, you can advertise- but what’s the point of buying keywords from Google? You’re still only reaching an audience who’s searching for or reading about travel guides.

That’s a huge problem with start ups- the more clever the idea, the harder it is to advertise. Who knew they needed forecasts for sports and concert tickets, a place to manage and share referrals or even personalized travel guides? All of these, and just about every other start up ever created, is useful. But people don’t know they need them.

Traditionally, marketing has always been based on conditioned reflexes- marketers do their best to associate happiness, trust or other desirable feelings with their products, so we’ll choose their brand when standing in the store looking for detergent.

Products like this aren’t limited to bits and bytes, however- turn on the TV at 3am, and you’ll find a ton of infomercials trying to sell you stuff you never knew you needed. Nobody thinks they need a Snuggie or an Apple Machine Peeler Corer or a Hercules Hook. Every one of these products would come in handy if you had them and used them- but unless the infomercial happens to come on right as you’re doing a task that would be made easier by it, odds of you ever getting the product are low.

With start ups, we aren’t just convincing people that, say, your company is the best “personalized, up to date travel guides” available- you are trying to convince people that “personalized, up to date travel guides” exist, and that they actually need one.

http://www.seatgeek.com/
in Uncategorized — by Gregory
14Sep2009

Blogging is Hard

There is a joke I’ve heard a few times, that says most blogs have only two posts- one introducing the blogger and hyping up the blog, and the second, a few months later, apologizing for not posting more often. At the risk of sounding cliché- this post is the latter.

After all, blogging is hard. It is a lot like working out- you can get as strong as you want, but a few days off is all it takes to start regressing. If you take a few months off, you can easily lose everything you worked for. That is a lot of pressure- knowing you need to post interesting commentaries consistently to avoid slipping into even more into obscurity. Very few bloggers manage to ever write an article with a shelf life longer than a carton of milk- so I really admire the bloggers who stick with it and post constantly.

Like most things, there is a lesson to be learned. Most of us don’t have the stamina to churn out a steady stream of content. So when you start your next company or project, don’t pick something that requires you- you’ll wear yourself out. Very few projects can remain untouched for years and still be relevant, however you should aim for doing something that can survive with no updates for a few months.

If your entire project relies on you to continuously being active, odds are you will not be able to keep up. And it will show. Much like this blog.

in Uncategorized — by Gregory
19Aug2009

The Price Might Not Be Right

My brothers 18th birthday was coming up, and I needed a card. Since Hallmark doesn’t seem to have made it to San Francisco, I went with Papyrus. I found the birthday cards, and spent ten minutes picking one out. None of the cards had prices on them- but it was just a card. How much could it be?

I headed to the counter, where I got my answer- eight dollars. Eight dollars? For a birthday card for my brother? I bought the card (after all, I was invested in it- I had spent some time deciding on it), and left.

If you look at any of the A/B tests I have run on larger commercial sites, you’d see a similar trend. People are much more likely to go through with a purchase if you don’t show them the price until the last possible moment. Why is this? Google Analytics is always a bit fuzzy on the why, but we can guess. Maybe it is because they are already invested in the product? Maybe it is because the more they see, the less they think the price is unreasonable?

There is a time and a place for eight dollar cards- however, my brothers birthday was not one of them. Rather than turning to Papyrus when I do need an expensive card, however, I am now bitter towards them. Had I walked in and saw the cards were a bit pricey, I would have left and made a mental note that it’s a great place for a nice anniversary card. That is one of the problems with A/B tests- you can’t quantify the most important variables. While my purchase shows up as a conversion for the store, they lost me as a future customer. An A/B test would count my visit as a success, and would never have known Papyrus lost out on my yearly Mothers Day business.

Statistics can’t track when people tell their friends “it was a bit expensive for me, but you should check it out.” Statistics can’t track when someone thinks “this isn’t what I’m looking for, but these are reasonably priced- I’ll come back later.”

So, before you take the price off your online products just because they numbers say you should, think about what is more important- your brand, or making a few bucks off a conversion.

And if people are still leaving your site when they see the price- maybe you are charging too much? Lower your price, don’t resort to tricking your potential customers.

in Uncategorized — by Gregory
14Aug2009

Hire Developers

I’m biased. As a developer, of course I am pro-developer. However, I don’t see any reason why you shouldn’t hire a developer for as many positions as possible. They don’t have to be the worlds greatest programmers, they just need a solid understanding of how to do things on their own.

All companies have little (yet important) tasks for developers. Gathering statistics, setting up ads, doing A/B tests. And rather than taking one person X amount of time, it takes two people that same X amount of time. These things are slightly too hard for non developers (HTML? Databases?), but a time-suck for developers working on bigger projects.

With any decent-sized company, everyone has little jobs for the developers. These jobs pile up- the developers have to spend time doing these tasks, while everyone else loses time waiting for them.

So, why not hire a developer to do that sales, project management, analytics, or marketing in the first place?

in Uncategorized — by Gregory
3Aug2009

Don’t Be an Idea Person

Probably the worst thing you can be is an idea person. I constantly meet people who will tell me about their next big thing. So, I ask, how will you implement it? Oh, I’m just the idea person, they smugly reply, I’ll leave that to the programmers. There are humble idea people, no doubt. I’m just yet to meet any. They all seem to treat programmers and designers as lowly tools, waiting for an idea person to save them.

Coming up with ideas is easy- I’ve come up with a good half a dozen ideas today. I’m sure you have, too. And I couldn’t even begin to count how many times I’ve read about a company on TechCrunch or GigaOM, and thought to myself- wow, I thought of that idea a while ago.

But ideas are the easy part- anyone can come up with a few dozen ideas in no time. The impressive part is sticking with the idea. Finding the right people to help with it. Making it. Selling it. Tweaking the little aspects to perfection.

There’s no pride in coming up with an idea. Ideas take a few seconds. Making it happen takes years of hard work.

Don’t be an idea person.

in Uncategorized — by Gregory
27Jul2009

PHP: MVC By Nature?

After spending hours upon hours fighting with frameworks, I got fed up. They are certainly tempting, since they take care of the initial structuring of your program. However, once you get past that- what do they bring to the table? Are they really worth the inevitable aggravation?

Some people will have thought about this thoroughly, and come to a different conclusion than me. Others will have just a gut reaction to me saying that procedural programming still has a place in PHP. Either way, a lot of people are going to disagree.

So, with that, here goes my argument that PHP is already MVC-ready.

Views

PHP is unique from many compiled, desktop-centric languages in that all presentation is done using a separate language (a markup language, but a language none the less). Short of XML output and the like, all PHP needs to be echo‘d and print‘d out among longhand HTML. Even in my earliest, blissfully-ignorant-to-MVC days, it was apparent that it made more sense to separate the HTML from the PHP. (Of course, there is a subtle yet distinct difference between separating the PHP from the HTML, and the logic from the presentation- but remember, I was still MVC-ignorant back then). A simple include does the job. So, why do we need a framework to do this for us?

Of course, you could argue the merits or disadvantages of using a templating engine like Smarty, but the point is moot- none of the major PHP frameworks really have any templating features beyond what an include can do.

Models

Models are covered by objects- they take care of the data. More often than not, the job of the model is to convert raw data (often from a database) into something the controller can work with. Models take care of the tedious business logic, creating a bridge between the data and the code. Writing out SQL statements in the controller quickly gets messy- models make it easy to keep the data all in sync, across the entire program.

One thing that has always bugged me is that in frameworks, you have to load a model before you can use it. Why? With PHP, you can automate this- going through a framework just makes debugging even harder. That’s not to say that extending a generic Model class can’t help your models- however, we don’t need a full framework for that.

Controller

With me so far? Well, here is where I will probably lose you.

First, let’s make something clear. I can’t say enough good things about OOP- so I’m not even going to bother trying. Barring “Hello World,” I can’t think of a single program that would not benefit from OOP.

However, here’s a quote from Rasmus Lerdorf (the creator of PHP):

PHP has traditionally been a procedural language, and OOP features have crept in over the years to the point where PHP can be used as a decent OOP language.

I never understood why we are so fond of using OOP for the controller portion of MVC. I understand the arguments for it- however, given the bland, generic way frameworks currently utilize OOP in controllers, it seems it is used more for the sake of being object oriented than because it is the right tool for the job.

How about this for an alternative: One index.php file, that takes care of routing. It can be more flexible, in my opinion, than the regex-based routing implementations in most frameworks. Yes, I do agree that programming is easier when we can look at a URL and instantly know the class and method the code is in. However, I also feel there’s merit in dropping the “automagic” that happens when a framework handles our routing. (And honestly, I’ve never worked on a framework based project that had a URL structure that mapped directly to the class-defined structure anyway.)

If we do it this way, we can move the structure from the classes to actual folders. We can split the PHP up among a bunch of smaller, procedural files. On top of that, if we commit to mirroring the URL structure, we don’t lose anything in the way of navigating code.

Libraries and Helpers

In the spirit of not reusing code, we can still make liberal use of libraries and helpers- basically, classes or functions that handle any code we may need to use more than once. These would have to be include‘d on a use-by-use basis, of course- but how hard is that?

In my opinion, the biggest problem with frameworks is they’re not very good at letting you do things your way. For a team of inexperienced or lazy programmers? This is great, as it makes sure everyone is on the same page and does things the “right” way. However, more often than not, I find it annoying that I’m suck doing things the frameworks’ way.

JavaScript framework/libraries have it right- you can use them as much as you want, but if for whatever reason you want to use straight JavaScript? They stay out of your way. Why can’t PHP do it this way? We should worth with PHP libraries, not frameworks.

The Benefits

  • Libraries no longer have to be framework-specific. This opens us up to a lot more prewritten code that we can utilize.
  • Faster. No matter how fast frameworks are, they’re still slower than straight PHP.
  • Easier to follow the code, if you don’t have to loop in and out of foreign code to debug it. Using a frameworks loader will often break most PHP IDEs and debuggers.
  • Less things that can go wrong. If something breaks with just PHP, it’s either PHP or you (and, more than likely, it’s you). If you are using a framework, there is a third party that could also be at fault.

Conclusion

Model-View-Controller architectures and Object Oriented programming are fundamental to making intelligent, easy to read applications in PHP. When we start a program, we need to take the time to think about how we can structure the code in a comprehensible way. However, we don’t necessarily need an MVC framework in order to keep our program separated into models, views and controllers. PHP is already MVC-ready- so rather than focus on frameworks (which, in my opinion, tend to be lacking), we should create our own well-thought-out architectures and use libraries for the code we want to outsource to open source.

Sure, it’s not as glamorous or trendy as an MVC PHP framework. But at least one person agrees with me.

http://www.blog.gkoberger.net/2009/07/13/some-codeigniter-gotchas/
in Uncategorized — by Gregory
20Jul2009

What Kind of Company Are You?

The biggest problem inside companies is self interest. The sales team wants to make money, the editorial team wants integrity, the legal team wants to avoid lawsuits, the engineering team wants to use cool technology- the list goes on and on.

Does every company need a little bit of everything? Of course. However, it’s important for companies to decide which is the most important for them. Otherwise, every department is fighting for the spotlight- and they all end up being at odds with each other.

A company needs to pick that one attribute it wants to strive for- and if it’s done well enough, the other qualities will come naturally. And it’s important it only goes for one- trying for numerous of these attributes from the start will result in a company with an unclear direction, which is apparent to consumers.

in Uncategorized — by Gregory
15Jul2009

I’ve Been Had!

After ten years of using the same password, using strange programs and logging in on public computers, it finally happened- someone broke into all my accounts.

It was a long time coming- I started to get a bit cocky about my online security, after all. Same passwords everywhere, no spyware programs running, no encryption anywhere. But hey- ten years without anything going wrong? You let your guard down.

in Uncategorized — by Gregory

Website by Gregory Koberger
518.339.4652 | gkoberger@gmail.com
gkoberger.net | blog | about gregory