I just finished reading an article on Tech Crunch, and felt the need to comment. It is "They Ain't Making Any More of Them: The Great Engineering Shortage of 2012".

If you didn't read the article, how dare you, the basic gist is that there is a great need for engineers and computer science majors, yet we graduated fewer this year than we did in 1984. In fact, we graduated more visual and performing arts majors than computer science, math, and chemical engineering majors combined. The author hilariously dubs this the generation of "American Idols and So You Think You Can Dancers".

At first I couldn't believe it. I thought there were more computer science majors than before, but then I remembered that 2011 was the first year that the number of computer science incoming freshman at Georgia Tech was greater than the year before. Ever since the dot-com bust, enrollment had been at a steady decline. This should surprise anyone, because technology is literally the future. Every day we see more and more people worldwide on the internet. Every day more and more phones are sold. In many developing countries, more people have smartphones than computers. They manage their entire lives through them, even their banking.

In recent years it has seemed as though the United States has gravitated towards easy fame. The abundance of reality tv and stars famous only for how rich they are has pervaded the media. Kim Kardashian, Paris Hilton, Snooki, etc are all examples of misplaced fame and reverence. Not to mention the belief in instant wealth and fame that can be had on American Idol, The Voice, So You Think You Can Dance, The X Factor, America's Got Talent, etc.

Oddly, technology has the stories of fame and fortune, but they seem to be ignored. Bill Gates, Steve Jobs, Steve Wozniak, Mark Zuckerburg, Larry Page, Sergey Brin, and more. Perhaps these just aren't as appealing. They weren't overnight successes (neither are the singers or dancers), but they appear (whether true or not) to require more work than getting on a tv show and being told how great you are.

I agree with the John Bischke, 20-somethings have either lost or don't have the concept of long term value. I think the idea should be taken a step further and extended to all people. Studies show that when given the choice between a short term gain, and a long term gain that is unequivocally worth more, people choose the short term gain. We evolved to prefer short term gains. As a society, we have to overcome this.

The big question is how to move past the instinct of short term gains. I think the only way is education. We have to start educating our children to analyze two options effectively. The long term gain is not always the best choice, but it almost always is. By doing so, we will raise a generation of people that make better decisions. Then they will raise a generation that makes even better decisions. The goal is growth and perpetual motion towards our ideals.

Bischke seems to come to a similar conclusion, but thinks that sites like Code Academy and Code Lesson are enough for people to learn the skills needed. Yet earlier in his article, he says that our current education system leaves holes in knowledge that compound upon themselves. If you have such a scattering of missing knowledge, how can you teach yourself skills relying on that knowledge. The change has to come earlier and be consistent.

We must focus on making sure all students have a good education. One without the missing fundamentals we get now. We need to stop discouraging female students from the STEM (Science, Technology, Engineering, Math) disciplines. There is a wealth of research on how women are discouraged from a young age through college. We're losing half of the population to baseless gender claims. Beyond that, the only way we even measure students is through testing.

Testing is pointless. You can teach someone to pass a test. If you have the money Kaplan can teach your high school student how to do better on the SAT. They don't make the student any smarter, they just help them understand how to beat the test. Further, by having funding based on the tests, you just end up with cheating scandals. Just look at the Atlanta Public School system. It's not just there either. There are confirmed cheating cases in 30 states and DC.

The answer has to be better education. We can do this through teaching problem solving instead of test taking. Critical thinking instead of rote memorization. Creativity instead of conformity. Children want to learn, it's only when adults tell them to sit down and do as they're told that they stop.
AuthorMichael Cantrell
CategoriesRandom Thoughts
I remind young people everywhere I go, one of the worst things the older generation did was to tell them for twenty-five years “Be successful, be successful, be successful” as opposed to “Be great, be great, be great”. There’s a qualitative difference.

- Cornel West

The first time I read the above quote, I felt some deep stirring in myself. I knew I agreed, but I didn't know what to do. Over time I have realized that I always focused on being successful. I was never focusing on being great. Once I came to full realization, I decided to do something about it. I decided I wanted to be great.

I have found the transition from a focus on success to a focus on greatness is difficult. I have found myself increasingly frustrated, because I only really know how to be successful. That is what we are training our society to be in our education system. We focus on the short term. Pass the next test. Finish the next assignment. We lose sight of the final goal. I lost sight of all of my goals.

My goal is to be an innovator in my field. My goal is to push the boundaries of the technology I use. My goal is to speak about what I have done and motivate others to be great. I want to create something different. I want to inspire others to create something different.

My goal is to encourage and enhance education. My goal is to make sure every student has access to science, math, art, music, literature, history, and any other subject they are interested in. I want to help students to learn and be great themselves. I want to support a society that supported me.

I think by focusing on these goals, I can be great. I will be great, because I am trying to help others be great.

Whenever I have doubts, I read that quote, and then I watch this:

Carl Sagan is an excellent source for inspiration.
AuthorMichael Cantrell
CategoriesRandom Thoughts
If you haven't seen fab.com, I highly suggest you check it out. Here is my invite link: http://fab.com/n8ozg5

The site is basically a daily deal site focused around design. The typical products are furniture, lighting, art books, clothing, and the occasional trinkets. To date, I have made 5 purchases at Fab and loved every single one of them. I bought Plumen bulbs, signed and numbered lithographs of Lady Gaga and Patton Oswalt, Supernova Lights, a Che-Bart shirt, and finally some Urbanears headphones.

Why am I writing about this? I think they have executed on the daily deals plan properly. I've tried groupon, scoutmob, and livingsocial, but never found anything that was all that interesting. There are the very occasional things that are nice, but you're always buying a coupon for something else. Why not sell me an actual product like Fab? Why not sell me something that is harder to find? Why not sell me something hard to find at a nice discount?

Fab has executed on those "why nots". I bought products. I bought the Plumen bulbs that I had seen before, but never found a way to purchase at the time. I bought the Supernova lights that were hard to find and discounted $120. That's an excellent execution.

Fab has found the key to daily deals. Sell people things that they want, but have a hard time buying. Don't sell services, sell products.
AuthorMichael Cantrell
CategoriesRandom Thoughts
I'm sure everyone has been using the new Facebook layout for a few days now, and I figured I'd write down some of my thoughts on it.

My first impression is that it isn't that different from the old layout. You still have the main feed down the middle, and all kinds of crap on the sides. Nothing new by any means. What does bother me is that they're trying to decide what is important to me automatically. I hate it when someone tries to tell me what I'm interested in.

The old feed allowed you to view what they determined the top stories or you could view everything chronologically. Call me crazy, but I always viewed the chronological "most recent" feed. I didn't want to miss anything important, and that way my way of doing it. Did I see a bunch of things I didn't care about? Sure. There is an easy fix though, usually those people are spammy and annoying, so you can unfriend them or block their updates. I have a few people that I unfriended, and a few that I blocked updates from.

I think Facebook thought they could appease people like me with the box on the right hand side showing everything that's going on. The problem there is that it shows me what songs people are listening to (don't care), anything anywhere that someone liked (don't care), and nothing is grouped (each comment on an item is a separate item). This is too much information.

That means that people like myself that were filtering the feed ourselves are now stuck with either the automated feed or the raw feed. Neither of those options really appeal to me, but I just have to put up with it.

Do I hate the new layout? No. Is it somewhat annoying? Sure. Will I come up with a new "workflow" for getting information? Absolutely.

That's how the world works. Things change. We adjust. The new becomes the old.

At least this time I didn't get invited to any groups that are "1,000,000 strong to change Facebook back". Of course, those groups only have a few thousand people in them.
AuthorMichael Cantrell
CategoriesRandom Thoughts
Recently, the debate around me has been heating up over mobile platforms and their viability. Which platforms should we develop for? Which should we focus on and why? These questions and more are important to answer, because you have to make a decision. I might not have written a post, but then I read this and was taken aback by the writer's lack of knowledge.

As a disclaimer, I should start by saying that I do not personally own a smartphone. I had a Samsung slider for 5 years before I finally had to replace it a few weeks ago. I then promptly bought, another Samsung slider. I want my phone to make calls and send text messages. Plus, I don't feel like paying for the insanely priced data plans. However, I have used an iPhone, Evo, myTouch 4G, G1, and a Galaxy S. I also own an iPad2 now, so I would say that gives me some additional experience similar to an iPhone.

Based purely on my previous sentence, the consensus will be that I like the iPhone because I love Apple. While it is true that I like Apple, that is not the only reason I like the iPhone, as you'll see.

The Hardware

I think the first and most important item to focus on is the hardware. The key here is the more hardware variation you have, the more difficult it is to develop a consistent product for that hardware. Cellphone chargers are a great example in the same domain. It used to be that every company would have their own port, or occasionally multiple ports, for charging their phones. This meant that every time you got a phone, you had to get a new charger, car charger, backup charger, etc. Now however, the standard is the MicroUSB port, and we're all the better for it. The obvious exception being the iPhone, but hey, nobody's perfect.

Now apply the underlying concept to the phone hardware itself. How many variations on the hardware are there for the iPhone? Currently, 3.

  • iPhone 3GS, 3G, and original

  • iPod Touch (however many generations they're at now)

  • iPhone 4

You could even lump the iPhone 3GS and iPod Touch together, but I won't. The only difference from a development standpoint is the screen resolution. The iPhone4 has the retina display while the others don't. There are obviously memory, CPU and camera differences, but we'll leave those alone as they're too complicated to get into here, and surely will be once we get to the Android devices.

So we effectively have 2 or 3 platforms to develop for, where the only difference in resolution. Normally, this would be a problem, but Apple has taken care of this for you. The display is treated as the old non-retina resolution during development, and you just add higher resolution graphics that benefit on the retina display, but display no differently on the old display. The important thing to note is that effectively the following things show no variation:

  • Resolution (Even though they're different, it's not a development burden)

  • Physical device size

  • Input methods (touch screen, buttons)

  • Display capabilities (color, response time, etc)

  • Outputs (headphone jack, apple dock connector)

Now let's move on to the Android phones. The problem here is there are so many variations I probably couldn't even name them all. Here is a basic list I pulled off of just the T-Mobile site.

  • T-Mobile Comet

  • Motorola Charm with MOTOBLUR

  • T-Mobile myTouch 3G

  • Motorola CLIQ XT

  • Motorola DEFY with MOTOBLUR

  • LG Optimus T

  • Samsung Vibrant

  • Motorola CLIQ 2 with MOTOBLUR

  • T-Mobile myTouch 3G Slide

  • Samsung Galaxy S 4G

  • T-Mobile myTouch 4G

  • T-Mobile G2

  • T-Mobile G2x

That's 13 different phones from a single carrier. This doesn't even cover the Evo and Droid with their multiple iterations. The sheer number of devices is insane. Just to test on each of those devices, assuming a $100 unlocked dev model, you're already out $1300, and you haven't even started. As a bonus, the next big Android phone will be out in a week, so once you've bought all of these phones, they're already out of date. Pure madness.

Going beyond the sheer number of devices, each is different. The screen resolutions vary wildly. I know the standard for Android seems to be 480x320, but the Evo has a resolution of 480x800. The Evo was supposed to sell well and be a great phone. How do you account for a difference of 480 vertical pixels? Not to mention, the physical size differences. Touch targets depend on the physical size being big enough, regardless of pixel size. If the pixel density isn't standard, then the physical size isn't standard. What is fine on one phone may be impossible to hit on another.

Moving beyond the displays, each has it's own answer to inputs. Some have 2 hardware buttons, some have 3, some have 4, some have 6, some have directional pads or trackballs, some don't. Not to mention, it is possible to have an Android device without a touchscreen. I don't know of any, and I know the Android Market blocks them, but the Android Market isn't the only game in town.

So what is common hardware-wise between the phones? Honestly, I can't think of anything. The physical size is different, the displays are different, the inputs are different, everything is different.

Winner: iPhone

Operating System

Now we can get into the true guts of this argument. Android evangelists love it because it is open or because it isn't from Apple. Sure, I will grant you that, but you should love software because it is good, not because it is open or not from a certain company.

I think one of the key differences between the two is the ability to upgrade. When an upgrade comes out for the iPhone, no one is concerned that it won't work with their phone. They hook up to their computer and apply the update. Done. When an upgrade comes out for Android, you have to find out if your device is supported. Then you have to check and see that the carrier will allow it. Then you have to get it on to your phone.

Note that for Android, you have to investigate whether you can get the latest and greatest. It isn't a given. That is due to the "openness" causing a proliferation of customizations from the carriers and the hardware manufacturers. This is the same problem that cell phones have always had. No consistency, so they can't be updated. A perfect example of this is MOTOBLUR from Motorola. They skinned Android to make it look a bit prettier and have what they wanted in an interface.

Customizations are a big thing as well. Android is open, so it allows customization. iOS is closed, so it does not. iOS provides a consistent user interface, so the user always knows what a button looks like. Android varies, once again, but carrier and phone manufacturer. Not to mention, custom skins can be added to your phone. For a true look at these abominations, there is a tumblr for that. Here is my personal favorite:

Crime against humanity

Who thought that was a good idea? Who thought that looked good? I see the Gmail and the Phone... fish, I guess, but what are the other two supposed to be?

Winner: iPhone

App Downloads/Piracy

The previous two sections are great to discuss/debate, but the real crux of the argument should always fall on sales/downloads. The key with any app is to make money in some way. For this reason, both have stores where you can purchase apps and both have ad platforms. The best part of this section, is that the only thing that matters are the numbers. The data won't lie, and you can't argue that lower sales are better, so let's jump right in.

Currently, Android has the larger market share. According to this article, Android has 33% and the iPhone has 25.2%. Obviously in the market share category, Android wins. But, you have to look past the surface. Keep in mind, Apple did that selling, effectively, a single piece of hardware. As I showed above, Android has at least 13 different devices (if I had to guess at the total, I would say about 70).

However, let's ignore the explanation above and just make Android the clear market share winner. Because they hold nearly 8% more market share, surely equivalent apps would sell better on Android vs. iOS. If you believe that, you're wrong. Market share does not equal downloads. Case in point. For every copy that was sold on Android, on average, 5 copies sold on iOS.

I think a 5:1 ratio is hard to argue with. You might say that is just a single app. True, so let's add the MLB app to the mix. The MLB CEO Bob Bowman said that sales are the same 5:1 ratio for them. He also said that iOS users are more likely to buy, while Android users are more likely to pirate. That can be tied back to the "open" operating system. On Android it is so much easier to pirate things than on the iPhone.

The culture of the users also plays into this. Android users typically don't want to pay for apps. They think everything should be free. iPhone users are more willing to pay for things. To the Android users I say, that's fine, but remember that you get what you pay for.

Winner: iPhone


I would say it's pretty clear which I think is better. Don't take this as me discounting Android completely. I plan to develop apps for it, but they will always come after iOS apps. They will be an afterthought. If I feel this way, others must as well. I know Rovio has had issues, and Smule has abandoned Android altogether.

Will these things hurt Android in the long run, probably not. The majority of Android users aren't buying the phone because it is an Android phone. They're buying them because they want a smartphone, and other than iOS, Android is the only player. Not exactly a great sign...
AuthorMichael Cantrell
Choosing a voice for your company can be tough. I'm somewhat dealing with that at my current job right now. Not so much in deciding what the voice should be, but becoming a part of the voice.

At work, the developers have been asked if we would like to contribute to the company blog. The conflict of course, is the company message. To date, none of the blog posts have been very technical and have been aimed more at clients. There is nothing wrong with this stance, but it means that the kind of articles developers would write are of no interest to your readers. If you try to jam in the developer articles, they would have to be watered down. This is something I personally wouldn't want, as it can degrade my "stance," as minor as it may be, in the development community. To me, there is nothing worse than a "fluff" piece. If, however, you try to force those articles on your readers, you will alienate those readers. When you do that, you will splinter your company's voice.

A splintered voice is a tough thing to deal with. It confuses clients and possible interested developers. The developers see interesting development articles mixed with what they interpret as "fluff" articles, while the clients see articles they find interesting mixed with articles far beyond their comprehension.

That of course begs the question, which should you choose? I think there are three real options.

The first voice option is to stick with the articles aimed at clients. These are typically focused on marketing and other things that will drive sales to your company. Simple ways of showing value to clients. This is fine, but that means your blog is effectively a sales tool, so make sure you treat it as such. Make sure it stays up to date, which means having at least one post a week. If you can't keep that up, the blog looks like it is abandoned, which might cause you to lose possible sales.

Your second possible voice is to go the develop route. This can help you bring in additional talent, or just get developers interested in what your company is doing. This works well for companies like 37 Signals and Google. They write articles that speak to developers and bring in great talent. It also allows them to be leaders in web development. I personally like is approach, but I am a developer after all.

Your third option, if you don't want to choose or can't choose from the other two options, is to have two separate blogs. They don't necessarily have to be completely segregated from one another, but they should be viewable separately. This gives you a best of both worlds option, and keeps the voice fragmentation to a minimum. It is a way to have your client targeted articles easily available to clients, while keeping them away from the more technical articles that they are most likely not interested in. It also allows you to build a development community around you, that can be leveraged to find new talent, amongst other things. Additionally, if there are people interested in both streams if content, there is nothing stopping them from reading both. This causes some fragmentation of voice, as there could be some opposing views between the two blogs, but it also provides the opportunity to create a real conversation that can open up communication between e two thought processes.
AuthorMichael Cantrell
CategoriesRandom Thoughts
I think it's safe to say most people would agree that a website is an investment. It gives a company or product an additional outlet for advertising or transmission of information.

Why then, do so many companies invest large amounts of time and money into a website, only to let it languish? Why do they treat it as a finished product undeserving of attention. Surely you wouldn't treat your house that way. A house would be maintained and upgraded; interiors would be updated with new styles and decor. A website's code, and in fact any piece of software, is no different.

I'll only be focusing on the code for a website, but many of the things I'm going to discuss apply just as equally to design, content, and information architecture.

The code of a website is the core. Without the code, a website can't do anything. Ecommerce can't happen; tweets can't be sent; databases can't be accessed.

These are the core things your site needs to be useful on the internet. There are perfectly usable sites that may have no backend code at all, but they typically don't provide anything more than information. In all likelihood though, your site has some backend code to it, be it PHP, ASP, Ruby, or any other language. This includes items such as CMSs (Joomla, Drupal, Sitefinity), blogs (wordpress), any forms, and of course any custom pieces developed for you.

The code of the site establishes the foundation that allows your investment to run.

There are two things important to keeping your site up to date: minor maintenance and updates. Minor maintenance would be fixing bugs that may be found or the addition of a piece of content here or there. Updates would be new releases of CMSs you are using, or larger development pieces done for you.

Maintenance is the most basic action that can be taken. Almost all clients will pay to keep their sites running and fix them when problems are found. This is a good thing. The problem is, that oftentimes clients don't want to pay for standard site-wide updates. This allows the code to get old.

As a site grows older, it falls behind on technology. The coding techniques used just 2 years ago are vastly different from the techniques of today. Some of the major languages used today didn't even exist 10 years ago. The web is in a constant state of change, and your website should not be any different.

For instance, just a few days ago PHP 5.2 ended development and PHP 5.3 was made the primary version to use. Just a few years ago PHP 4 was still in use. The new technologies from PHP 4 to 5 were massive. Object oriented programming was probably the single largest change between the versions, and it is an enormous asset to a language. PHP 5.2 to 5.3 doesn't have any shifts as large as the addition of object oriented programming, but it does introduce a number of excellent techniques. These shifts in languages are happening more and more often. Additionally, beyond new things being introduced, certain functionality is deprecated. That means that some functionality used 2 years ago may not be available anymore.

Another example is the introduction of essentially a whole new web programming language. Just a few years ago, Ruby was nothing but a scripting language. It had uses elsewhere, but it was primarily used to write single run scripts. Then, Ruby came in to use as a web language with the introduction of Ruby on Rails, one of the earliest web programming frameworks. Just the introduction of Ruby on Rails caused many of the existing languages to undergo large shifts and introduce their own frameworks. Now PHP has a slew of frameworks that didn't exist a few years ago.

Web languages change quickly. What was written just a year or two ago is now behind the times. Maintaining that code becomes increasingly difficult as certain things are deprecated and made unavailable in the new releases. As that happens, programmers forget how those old functions worked, and the documentation may disappear. What was here two years ago may not be available any more. Also, what can be done with the language now, may not be possible with the old version. By making sure you keep your site up to date, you remove some of the unknowns encountered when something has to be maintained. This makes it cheaper in the long run, and reduces the possibility of something going wrong.

How can this problem be solved? With regular site updates. My personal belief is that a site should undergo a thorough update at least every 2 years. This update should include at the very least a review of all code, and possibly a complete rewrite from the ground up. This shouldn't be hard for a client to agree to, as their website will look and feel old anyway. Huge strides are made in usability and web design every year, so sites should strive to look modern. As a perfect example, let's look at eBay from 2 years ago versus eBay today. The differences in design are huge. The current one looks much better than 2 years ago. I'm not saying designs can't last for years, but most don't.

As I've said, your website is an investment. You have to invest money into it to achieve your goals, just like you invest money into a house to raise its value. Keep spending a little over time, and you'll avoid spending a large amount all at once.
AuthorMichael Cantrell
CategoriesRandom Thoughts