November 6th, 2008
What is the difference between people who enjoy developing software for the Internet and those who don’t? The ones who constantly come up with good ideas and those just go with the flow? There is clearly a difference between the people who love what they do and the ones who just go to work. At the rate that things change around us, keeping up with the industry seems impossible, though there are some people are doing it. If you are not one of these people, I bet that you know somebody that is always talking about some new gadget or service before David Pogue even had a chance to write a silly review about it. How do they do it? I bet that they also seem a little more enthusiastic about their job. That person is not strange, a genius, or a witch; they are just living the Connected Lifestyle.
Internet Services are not just a new industry. Internet Services that run in your browser or connect devices are a breakthrough in how we connect as people. They enable people to communicate with a massive audience the way that we could only communicate with an intimate few in the past. Wether this is your thing or not, it will keep catching on and the world will never look back. Each generation will build on top of the foundation that is being laid today.
This new way of communicating is so effective that its own remarkable growth can be counted as its own greatest success. Rather then relying on a few computer scientists to design everything, now people of all educational backgrounds are invited to connect and include their ideas and experience. This took the Internet from a collection of research documents to what we have today. It’s an art gallery, a library, a news room, etc…
We have always had a desire to get what we know about our work and interests out there. Historically, the average person would spend years perfecting their skills in what ever job they had. So much knowledge and experience just stayed in their head or was let go as an anecdote during dinner. With the advent of blogs this information that is tedious and boring to your poor family at the table, can delight somebody across the world who is also passionate about what you do. This collective knowledge could eventually accumulate and reshape how we see educate ourselves by letting people design a curriculum for themselves that would make the best possible use of their talents and interests. As you can see, blogging, Twitter, and name your favorite web service; are not gimmicks or kids toys. These services are the first bricks in the foundation of a connected lifestyle that everybody will need to be a part of to survive in the future.
Posted in Inspiration | No Comments »
November 5th, 2008
Looking back at what led to the polarization of American culture in the past 8 years. The media is supposed to be our voice but it seems to have become the voice of advertisers, lead by ratings dollars. We have to subscribe to one that sounds better to us but not much encouragement to hear out the other. This morning I wanted to see how some well known news organizations were covering this election. Here are some samples:
Lets start over-seas:

Now lets get started with the moderate domestic source:

and now the allegedly liberal:

And finally the conservative:

There is no doubt that the economy needs to be fixed but our culture needs some work too. I hope the new administration will be the unifying force that we need.
Posted in Inspiration | No Comments »
November 5th, 2008
I will never forget where I was on November 4th 2008.
Posted in This and that | 1 Comment »
November 4th, 2008
I am optimistic about the future of our country. When I see the pride in which people are wearing this sticker today.
“The vote is the most powerful instrument ever devised by man for breaking down injustice and destroying the terrible walls which imprison men because they are different from other men.”
– Lyndon B. Johnson
Posted in This and that | No Comments »
October 26th, 2008
I see a lot of potential around me. I always want to take apart or tinker with some thing or process to improve it. All of these ideas create a growing inventory of things to do. All of that Getting Things Done (GTD) talk that I started to notice couple years ago, was an eye opener. Suddenly everybody had great ideas to help me organize and plan. Now in 2008, armed with A note pad, an Inbox with 0 items in it, and a Remember the Milk account, I am finally starting to get things done.
In the first few iterations of my GTD approach, I would just keep adding and adding things to my ToDo list. When something was added, I would give it a priority and never look back. Inevitably, I would just start ignoring things and move on to the one that I really needed to do when I would look at my task list. Turns out one important thing about getting things done, is coming to terms with the fact that an idea you had last week may not really make sense this week or a priority from last week may not be the same. Now I have modified my process of adding to my list to also include a quick audit of the items on the list. I always end up removing one or two things.
This lesson should not be lost on those of us that develop software when we are at work. There are a lot of ideas that you can come up with that can be added to the idea inventory for your project. What makes this harder is that you have other groups that are hired to add to your inventory as well. QA will keep your inventory full of bugs to fix, Designers will keep it full of crazy new patentable interfaces, and Product Management will keep coming up with more features that MUST be there. Every time something is added to the mix a full audit and re-prioritization needs to be done to keep the inventory manageable.
PHOTO CREDIT: Uploaded to Flickr on May 26, 2006 by kogakure.
Posted in Agile Development, Inspiration | No Comments »
October 14th, 2008
I am one week into a new iTunes rating campaign. The idea is that I want every song in my library to have a rating which will add another dimension to my smart play lists. The last time I did this was about 3 gb of purchases ago, so I have a long road ahead. The only way this can be successful is if I work the process of rating into my daily routine. This is both because there is no way I am going to convince myself to just sit down and spend hours rating and I don’t want my ratings to be rushed. Luckily with the iPhone at my side, I can easily integrate this process into my commute. The next step is to commit to a flexible and meaningful definition for the each of the 5 stars provided by iTunes. Sometimes I wish there were just 2 options like in the Last-fm interface (love and ban) because it really makes things simple. Most of the time I will use this system:
• 1 Star – Hate
• 2 Star – Palin ( don’t like )
• 3 Star – Meh
• 4 Star – Digg
• 5 Star – Epic
The best part of this is going through some of the lost hits from the past year.
Posted in Inspiration | No Comments »
October 6th, 2008
Heading into San Jose on an early flight along with Dave and Kelly from my team to start the first of the weeks workshops on time. We will be starting on a two day track about site integrity with a focus on client side code. Honestly, I have passed on this class the last few times it came out to my area. I just never thought of Site Integrity being a subject that would be huge concern to GUI types, like me. I expect I will see the error of my ways by lunch time today. Remarkably bad flight aside, I am looking forward to the next few days…
Posted in Inspiration | 1 Comment »
August 20th, 2008
I love the idea of progressive enhancement. If kept in mind throughout design and development, the product will be more accessible to those with disabilities and most of the awkward challenges that the Internet drag in. The fact is that what little work I have done to make a site progressively enhance, has turned out to save me lots of time down the road. You will just have to take my word on the last one.
So how does this relate to some of the fat client style applications that I have been working with lately? If you don’t know, a fat client, in the javascript world, refers to an app that relies mostly on client side code to run and communicates with the back-end through asynchronous data exchanges. These apps are able to use client side technologies to give a similar experience to a desktop application. Lack of proper “low-fi” states, where the app can be useful without javascript enabled, are not generally considered when building fat clients with client side libraries like YUI and SproutCore. The makers of these libraries obviously try to keep their products accessible but it is difficult to keep maintain this accessibility as the fat client features are added. I could not reconcile that I could Both be making progress and ignoring progressive enhancement when working on these types of applications. The truth is that we can’t make an application that can both contain all of the interface convenience features that modern browser users expect and have a low-fi case to fall back on for accessibility.
The best way I have found to get around the gap between accessibility comes in the form of a compromise. There are sites that will redirect a user to a low-fi version, if a browser does not meet the minimum requirements of the fat client. The same approach is often taken to redirect mobile users to mobile versions of an interface. This allows every user to get an ideal experience for their client type as long as their client type matches the requirements. It is very important that if the client does not meet the minimum requirements, is of unknown type, or an error occurs preventing client detection, the page is served in simple HTML, with no JavaScript enhancement.
I do understand that most of us do not have the time to build two or more versions of an application. There are clever ways to organize an app to minimize the amount of duplicate work that needs to be done when building both a low-fi and fat client version of your interface. Ruby on Rails particularly comes to mind so it will be my example. First, you want to create a simple Rails application. This would not need to be much more then a scaffold. Apply some style though the site should be readable without CSS, even if it is not pretty. Make sure that your controllers are set up to return a JSON representation of the rendered data if requested. This JSON output will be the rest service that your fat client will use to communicate with the back-end along with the necessary ability to accept AJAX form posts. This seems to be the least evil way to provide functionality for specific clients.
–EG–
PHOTO CREDIT: Uploaded to Flickr on December 20, 2007 by Paul.c.Redmond
Posted in Web Interface Development | No Comments »
August 15th, 2008
I decided to share the link to the now free online edition of “Getting Real” by 37 Signals with the members of the team that I am on. I don’t expect the sky to clear and a bright light to suddenly sweep over the office, fixing everything. I just hope that it can influence some future decisions. My biggest fear is that nobody will read it because they don’t have enough time.
My hope is that people will find some inspiration in the idea that other people have been where they are and made changes for the better. You don’t have to be in a constant state of having too many requirements to finish. You don’t have to always be late delivering. You don’t always have to be stressed to be a success.
More on this as/if the experiment continues…
Posted in Inspiration | No Comments »
July 31st, 2008
There is a tendency in larger software organizations to value “hard work”. At face value, this makes sense. We all want to be known as hard workers. Some of us love to be known as the hero on the team that can stay up the latest and check in the most code. In truth, a “hard worker” can meet a goals, but this has no reflection on how innovative they are. This is because, we are not factory workers, we are creators.
The process of creating is vastly different from that of working on a production line. Creators bring things into existence that did not exist before. This creative process is important to protect because without having a prior example of what is to be created, time must be invested to dream up every possibility and make sure that the solution that is used is the most appropriate. The need to be seen as a hard worker redefines our idea of a goal from the satisfaction of finding the most appropriate solution, to being the first to make something that is good enough to pass tests. I believe that this is what makes a lot of software from companies more mediocre as time goes by. This is also a reason that a lot of corporations are not inspiring places to work. The book Peopleware goes into greater detail into this subject then I should, so if you have not already, give it a read.
No, I don’t want to sound hopeless. In fact, I am trying to figure out the cure for this tendency. Respecting the fact that software will be less valuable if it is rushed, requires a definition change of the word management. I think that a lot of managers still think that software can be planned beforehand, handed off to be designed, passed to engineering, then put through testing and launched. This is known as the Waterfall approach right? So is Agile the cure? Maybe it is, but unfortunately, a lot of teams have implemented a half-assed Agile process to a team without proper agile training. These teams then get convinced that Agile does not work because it did not work on their team. Unfortunately, Agile has been rendered powerless in some companies for some pretty unfair reasons but powerless just the same.
If you take the time and think back on your career, have you ever had a project that went smoothly? A project that did not go past the deadline? or require a crazy amount of hacks to get it out on time or close? For those of you who would say no, I am sure this was not for lack of hard work and reasonable preparation.
Posted in Agile Development | No Comments »