"Doubt is uncomfortable, certainty is ridiculous." - Voiltaire

GoGrid, doing nothing costs $50 a month.

Update: Just wanted to say that there is nothing wrong with GoGrid or their services. When I evaluated GoGrid and other cloud services I was looking primarily for a service that would offer a “fluid” and frictionless transition from a shared hosting environment to a dedicated environment.

The goal was to develop sites on “shared” hosting like hardware, the bottom of the barrel if you will, and then when I need more power upgrade my virtual instance or spin up more of them. This was all about cost management and not having to spend a lot of time playing “IT Admin”.

The reason for my frustration and anger ( although this has subsided ) was because 1. Yes, I failed to monitor a service I hooked up to my credit card and that was stupid of me. 2. I did not expect a bare bones site to cost $50 of month when it did nothing. and 3. I’m unemployed at the moment so any extra expense’s really hurt.

I’m not going to make any pronouncements regarding cloud services and what they are good for at the moment because maybe I don’t understand something about cloud hosting services. What I have learned from this experience that I’m going to need to actually upload a site to a cloud service and see what real traffic, even a small amount, truly costs. 0.14 per Cpu Hour is deceiving.

****
A couple of months ago I spent some time evaluating a lot of the cloud hosting companies on the Internet. I signed up for the GoGrid.com trial which provided me with a $50 credit.

Even thought their control panel at the time was barely functional I managed to create a single web server in their cloud and I just left it be. I had no site ready to upload at the time so I just kind off let it sit. I figured the $50 of free credit would last a a long time considering I was doing nothing with the service.

Boy was I wrong. With zero files uploaded to the web server, zero pageviews hitting a website that didn’t exist, and zero code that could execute and take up memory I manged to rack up about $100 in fees from the GoGrid service.

Let me reiterate, the cost of opening up a web server on their cloud and doing absolutely NOTHING is $50 a month. Sure, I’m pissed at myself for not checking up on an service that that bills me, but I assumed that $50 credit would go a long way for a server that doesn’t serve a single page. How are these cloud services going to compete when the cost of doing nothing is 500% more than what I would pay for a shared webhost?

Even with the immediately available and immediately scalable architecture that this provides is it really worth paying 500% the going rate of shared webhosting? I’m scared to what a site with actual traffic will cost.

I hope this blog post serves as a warning for those that thinking its cheaper to host a small site on a cloud service. Doing nothing costs big bucks.

Mixing within the margins – Redesigning 1200 square pixels of Mixergy.com

Andrew Warner from Mixery.com asked his site’s fans to help him brainstorm some ideas to spice up a slightly stale part of mixergy.com.

Since I’m a huge fan of mixergy.com and consider myself an ok designer I thought I’d actually mock something up instead of simply responding in the comments. It was a nice way to flex my design muscles. All programming and no design makes John a dull boy.

As you might notice from my previous blog posts I’m a big fan of working within the constrains of an existing project and attempting to give that project a new look. IMHO you can learn a lot more from others than you can yourself and I picked up on Pallian Creative’s mantra of “Simplicity is the Ultimate Sophistication”. Sometimes I look at my designs and think I went a bit to far on contrasting colors or bolded hard lines and I think Pallian Creative really uses subtle contrast and lines nicely.

The Rationale ( More Faces ):

The current Mixergy.com design contains a very cold color scheme with a lot of blues and greys that is offset by the bright and warm human faces throughout the site. What I noticed was that when you start scrolling down a blog entry you lose that human face offset and the coldness of the design starts to take hold. This is especially the case on a single blog entry post without a lot of comments.

My priority was to bring more “human” into the right hand column to get those warm tones moving throughout the site. Also Mixergy.com is itself a hub of communication between different people. Andrew himself, successful entrepreneurs, and guys like me who hope to learn from them all surround the mixergy.com experience with conversation and too me, conversation means human faces.

You’ll notice that the Twitter/Facebook/Upcoming Google Wave is covered in the pictures of people because people are the keystone communication. Therefore my opinion is that if your trying to be a conversation hub, a meeting place for the tribe you sponsor, the more pictures the better.

Another added bonus is that I think people use their amazing facial recognition capabilities to filter web content. So much content is produced that its almost impossible to keep up on everything. So when people see a picture of face they recognize and are interested in hearing from like Seth Godin or Guy Kawasaki they are more likely to follow that link and see what this familiar person is talking about.

Less Comments, More Conversation:

In the new Web Stream.0 world blog comments are just the tip of the iceberg when it comes to the entire communication spectrum surrounding a topic. Usually a single blog post is discussed in 6 different places and its really helpful when I’m able to view an aggregation of the thoughts surrounding that topic.

For the Mixergy design I thought why not combine twitter notifications and blog comments into one section titled “Recent Conversations”? More often than not those tiny twitter messages are packed with expanded info about a the topic at hand. I see a lot more “I read this and it was like this.”, with the second this being a link to separate but related piece of content or blog.

Again this gives another way for Mixergy.com to drive the point home that they are about the conversation. I feel like weaving twitter comments into the mix says: “We are not just a blog”.

Quotes are Key:

I also took a strong stance on the “more popular posts” feature of the site by replacing it with ( more faces ) a selection of Notable Mentor Quotes. I’m not sure if removing the most popular feature is entirely worthwhile but I think short and simple quotes a interviewee said are sometimes more compelling than the title of the interview, however beautiful crafted.

Compare the title for K0things interview:
Watch Live: reddit’s Co-Founder Talks About The Launching And Selling Of A Business

With:
A picture of a young guy and an alien and the text: “Don’t take advice from a dumb 27 year old“. ( I don’t remember the exact quote )

Something about the latter excites you much more, maybe its brashness or sillyness, to me it has more “oomph” than the actual title of the interview. Now the titles aren’t bad but I think memorable quotes and pictures give the right sidebar a little more spice and kick than a listing of popular posts.

A great example is Guy Kawasaki’s “Don’t worry, be crappy”. That almost goes against everything you’ve been taught in life and is a sure conversation starter and interest grabber.

Maybe I’m just biased over popular post listings. Whenever I see listings of popular post or content listings the programmer in me always thinks “I wonder how that is determined because if its just by page hits than the older content will be weighted and this isn’t a true measure of the contents popularity”

Also if you randomized the display of “Notable Mentor Quotes” you give older content a better chance of being viewed. This may be an entire blog post for another day but I think the web has outgrown pagination links and forward and back buttons. To me a site’s content that was published before a person found a site almost doesn’t exist. Navigating through pagination controls to find older content always stinks. Its never easy to get back to where you left off reading because as a site grows the content flows between the pages. What was on page 10 today is not on page 10 another 40 blog posts from now.

Finite
When I started working with the Mixergy.com sidebar I didn’t think it would involve thousand word blog post as on top of the design brain storming but I think this post is a good resource I can use in the future to show that even though I was only working with a tiny 1200 square pixels area a lot of thought and care went into the final output. Hopefully somebody will read this post and think “I like the way he thinks and I want to pay him money for labor”.

Regardless I hope my design and content helps Mixergy.com to come up with something for that sidebar. I feel I owe them something for all the great content they produce that I’m getting for free.

I’ll never stop being amazed that at no cost I can listen to successful entrepreneur interviews and then a few clicks later watch an entire semester of a Stanford’s 107 level programming class.

Sudeced by Elegant Databinding

This question on Stackoverflow.com came up the other day and immediately several answers started churning through my brain. The questioner was basically trying to use Linq to transform a set of nested objects into a flat collection so he could Databind the data to a GridView control. Easy right?

Well it seems easy until you read further into the question and realize that he wants to transform string buckets into a concrete type’s properties. Now this is possible by really bending C# as a language using a Dynamic Linq, using some type of reflection, or emitting your own IL but is it the practical solution?

Other C# bending functionality like Proxies used in NHibernate for lazy loading or mocking frameworks for Unit Testing solves much more complex problems for extremely valuable functionality. In this case we have an extremely complex solution to essentially throw some data into tr tags which to me does not seem worth the time or effort to make this solution viable.

Unless your an IL weaving maniac and wrote the Dynamic Linq library yourself your really marching into unfamiliar territory to make this databinding magic happen. Creating GridView columns dynamically or hand rolling your own HTML is a much more troubleshootable and simple solution.

To me the correct answer to the question wasn’t a “here’s how you do this answer” but more of a “why are you doing this” answer. I feel as though once the questioner actually thought about all the trouble he was going through just to avoid a for loop he would have realized that all the elegant code he was creating was just a huge waste of code and time.

So far is looks like the questioner abandoned his question and oddly no votes have been case for any of the other answers. I’m kinda itching to see what happens here to see which answer wins out; My pragmatic answer or answers by the language twisting enabling answers.

Attack of the Codelosiphers from Planet Yagni

As I’ve argued before in other places I think some people in the programming profession take best patterns and practices a little too far. In my opinion these people and over engineer their code into huge messes that are only understood by programmers of their school of engineering. Codelosiphers is what I like to call them.

Now I love to read about code architectural design and patterning and do implement things I’ve learned from the Codelosiphers when it makes sense. However I’m really skeptical when somebody says “do things x way” without providing any proof or stories about how it helped their application. I think there is real value in SOLID principles and GoF patterns but so far I’ve only had uncomfortable experiences with them.

I’m working on a project now where I personally over-engineered a really simple web application by implemented an entire MVP pattern for a < 10 page website because the Codelosiphers convinced me it was the right thing to do. Now I'm stuck unraveling this highly abstracted presentation framework just to add some new features to the program.

Normally you abstract out your programs and use GoF patterns so you can add remove extensibility very simply by only changing a minimum and isolated amount of code. So far this hasn't worked out for me. Here I'm am slogging though 6 layers just to change the name of a database column and add an new one. Seems like a bit much when my, according to the codelosophers, "bad" code I'm replacing it with allows me to do it in 2.

In another project I worked with the code base was 10x as large and we found situations where these patterns only bloated up our code. We literally ignored a couple of SOLID principles and the project is highly maintainable and making the owners money.

Maybe I'm doing something wrong. However its clear from the conversations about GoF and SOLID principals that if I'm not using them I'm a bad developer. I'm not so sure about if I can trust what these guy say anymore, there are certainly examples of "bad" software that has been really successful.

Take a look at this post about the ineptitude about John Ressig, the original author of the JQuery library. The criticism looks valid and parts of the code may be utter slop and badly architected but you know what? JQuery is used in over 40% of Asp.net developers at this point and who knows how many in the Open Source world. To me its a hugely successful program that could be full of crap code.

Trying to find the real secret sauce of software development has been a true challenge. Being in the ring a little while now has made me question and doubt everything I’ve learned thus far. The real kicker is I’m always wondering if the blog owners, book writers, and bill-by-the-hour freelances are just using these practices as an excuse to sell more books, earn more money from ads, or increase the hours they bill.

Old Cheese and Blood

The best way to describe my web design and physical dress style is “not visually offensive”. I’m aware at best I’m a 7-8 our of 10 on the designer scale but I’m fairly confidant I can make something that looks pleasant enough to look at.

Now this isn’t hard or the result of practice as its usually me finding inspiration in fantastic web designs from smashingmagazine.com or any of the beautiful CSS galleries on the web so I’m a bit surprised when I see something truly ugly.

Of course I’m not going to “out” the website in question but the image in this blog post is a representation of a competitors website’s ( and I use that term loosely because they have other disciplines they market ) entire color palette.

To me that is visually offensive and I always wonder what happened in the creators mind when they designed something like that. Sure art is subjective however I’m not sure who appreciates the “old cheese and blood” look.

The Initiation Ritual

Since I started to become more serious about programming and getting my first full time programming job I’ve never really felt like part of the “tribe” you could say. I always felt like the outsider trying to be part of the game. Besides not getting programming jokes I felt like I didn’t really experience the profession enough to call myself a programmer.

In a lot of tribes one must pass a sort of initiation ritual. These rituals sometimes involve some type of pain endurance, sharp or on fire, the implementation details vary but the result is the same. After surviving the experience your tribe, your new brothers and sisters, welcome you into the tribe and you can now call yourself a member.

Today I went over to worsethanfailure.com to check out the latest IT disaster stories and one really stuck a chord in me, probably some type of major chord actually. The story involves a young and programmer who “had no commercial software experience and had only limited Web development experience” like me, who took a “C# developer job at a well-funded start-up” like me, and worked with code by “developers didn’t seem to know the difference between Cache, ViewState and Session objects” like me, and wondered what the disproportionate amount of managers did all day, like me. Wow, did I write this and not realize it?

There are some differences between the authors experience and mine. For example instead of a comfy Aeron chair I was sitting a vile creation that was probably better defined as a fancy way to store firewood ( pictured, imagine sitting in that for 8 hours ). Regardless of the differences I still connected with the author and knew that I too shared a similar experience in my programming career.

Judging by the comments in this particular article and other bits and pieces on proggit and hackernews.com it seems working in a less than ideal ( to put it lightly ) situation is just par the course.

After reading this article and getting a more solid idea of what to expect in my future programming career I feel like I’ve passed a sort of programmers initial ritual. Now I can pop into threads and discussions like this and say “me too!“. I can share an experience with other members of my tribe and feel confidant I too got the experience necessary to know that if I run into a similar situation again I can just laugh, whine with my fellow programmers, and endure knowing its just what we have to deal with in this profession.

In short I think I passed my initiation ritual, and even though I didn’t stick around a bad experience for long, I still have the burns and scars ( or backache from that chair ) to prove it.

How much can a web developer expect to earn?

An article over at ItManagement compares developer the rise and fall of developer salaries between 2004-2009 and the results just confirm the obvious.

Nobody knows a programmers value.

On one hand you have the increasing utility and ubiquitusness of software in the world always keeping demand steady for IT workers worldwide.  On the other you have the utility and ubiquitusness of developer knowledge making it really easy to get into the software game and start getting paid for it.

You don’t need a college education anymore, you don’t need to live near your clients or customers, and you can find everything you need to know to get started with any language and technology without leaving your computer screen.

7-9 years ago I was considered a savant because I could throw together some HTML pages.  These days I’m competing with kids and developers from countries with lower costs of living on craigslist.org and elance.com willing to make $5 an hour.

When you consider stories like low cost internet starups like Motormouth.com ( built for $9,800 ) and Truemors.com ( built for $12,000 ) I always worry about the future of web development and the salaries it will provide.

Maybe the embedded device / enterprise desktop app markets are different.  However how much harder is a Winforms or WPF app to make than a website or alternatively what kind of app needs a fancy OS gui when a website will do?  Maybe the cobol and assembly programmers deserve such high salaries but it just doesn’t make sense for web developers to get paid in the $70k range anymore.

The web industry is being overtaken by the cheap amateur.  Nothing new to this statement really as web developers have been bitching about the freelance cheapies for ages now.  The difference at this point is now we’ve been watching this happen for 6 years and there is no indication its going to change anytime soon.

What I wonder about is if web developers understand this is happening and trying to improve their skills to adjust or are we resisting change by being oblivious to it like the newspaper industry did?  A post over at reddit.com was about how much Php freelancer should charge for his work.  A lot of people said $40-$100 an hour and I don’t think that makes much sense anymore.

In my opinion over the next 5-6 years its going to be the web developers that bring something special to the table that are successful.  You can’t just be a plain jane web developer and you’ll have to specialize in something like SEO, social media, or high traffic OLTP applications.  Being able to design and slice up a PSD, connect to a database to spit out some rows isn’t going to be enough.

American Airlines Spanked

Dustin Curtus, a UI designer, took constructive criticism to the next level by not only taking American Airlines to task for having a website with a horrible user experience but by designing a great alternative and releasing it into the public

I'm a huge fan of what he's done with his redesign mockup.   Almost any travel website is just this huge clusterfuck of menu options and clutter that don't really help you figure out how to buy the tickets you want.  I can't speak for everybody but when I go to a travel oriented website I'm usually just looking for a baseline price to decide how feasible it is for me to travel.

For example I've been searching for plane/train tickets to Washington, CT to attend the Stackoverflow conference in October.  On almost every site I've gone to to buy tickets I couldn't just type in Hartford, CT to Washington DC and get a list of ticket options for travel.  I always had to learn some airport code or train station name to get a price quote. 

One day website / user experience designers will get over their 2003 "show all the options on the page" type of design and start guiding their users through their complex.  The first travel site that lets me type in really simple information to get a list of stations/airports/prices is going to start getting my business.  KISS/Affordance is in and I'm sure the customers will travel with whoever gets the formula right first.

Posted via email from John’s posterous

RIA Platform Mess

It should be a surprise to nobody that when the New York Times announced it was dropping Silverlight for Adobe Air the internets didn’t spring into action intelligently debating the NYT’s technical decision and arguing the merits of both platforms.  Instead the internets focused on two things:

1. Microsoft is the cause of all suffering of the world.

2. If a technology stack isn’t open source and subscribes to a set of standards it is also the responsible for all the suffering in the world.

In this discussion thread on reddit.com you can clearly see that the entire tech world is mightily confused and mystified by the RIA solutions that exist right now.  Air and Silverlight are bad because they aren’t open source. SVG, Html, Javascript are bad because the implementations of that technology aren’t ubiquitous across all browsers.  So in reality if your developing a RIA application at the moment you can use two relatively new and closed projects by two of the biggest ( and therefore evil ) companies in the world or you can use a wild west of a browser based stack and hope your app doesn’t break between nightly builds.

It seems to me that if your building a RIA application you’ve really got to put a lot of faith in your implemenation provider whether it be the Mozilla or Adobe.  You really risk complete doom for your application no matter which RIA stack your attempting to use.  All of them are unproven, nobody is using them for anything other than YATC ( yet another twitter client ), except for Basalmiq mockups, and your one patch or build away from everything breaking.

It seems the responsible and safe choice for RIA platform development right now is to focus on a stack that can work on an easily deployable like say Silverlight 2.whatever and Google Chrome, of Firefox Nightly 1.2939 and SVG/Html/Javascript and and just take any cross platform compatibility you get as a bonus.

My opinion is that if your attempting for some kind of cross platform magical idealist goals your just going to be fighting the same battles over and over again as the vendor of your RIA application releases patches and such.  For me I’m really fucking tired of fighting this war with Css/Html and I have no intentions of repeating that fight.  Especially since this time I’m dealing with a lot more complexity than making a logo float over there and getting my div’s to clear correctly.

Is that the best you’ve got?

So I'm always taking breaks from writing real code to check out an article ( or twenty ) about Php, seeing some patterns implemented, looking for best practices, etc.  Last night I came across this tip that blew my mind in its complete impracticality. Now most uselsss Php tips and best practices I see have to do with insignificant things like micro optimizations and code commenting ( which I think is bad ) but this one just takes the cake.

In a nutshell the author recommends whipping out archaic instruments of the 20th century called pen and paper while your coding and writing down what the names of classes, variables, variables your using for what piece of functionality. 

To me anyway the article writer completely misses the point of using an IDE with intellsense capabilities and also encapsulating your code into logically structured and named classes.  I can just imagine some guy out there with reams of paper he can't search through hunting for what out if he used the $li variable before or not.  How grossly unproductive can you get?  Stopping every time you add a new variable to scribble its meaning on a piece of paper?  Ick.

There isn't a larger point here although I'm tempted to mock the Php community for its… well…  I'm just not going to go there.  Anybody have any good Php resources they can recommend because I'm not exactly learning a lot with the resources I've found so far.

Posted via email from John’s posterous