Recently, my wife and I took a weekend trip to Pentwater, MI. We went cross country skiing at Pentwater Pathways which is a groomed cross country trail comprised of 4 different loops. I had never cross country skiied before. I had no idea what to expect.
At the intersection of each loop (see trail info and map), there was a signpost showing directions. The signs were color coded, some showed arrows, and there were directional indicators on all 4 sides of the signpost. It was slightly confusing (ok, very confusing). After two-thirds of the easy loop, we took the wrong path at one of these signposts. Instead of skiing about a mile back to the trailhead, we went on a 2 mile detour on the “most difficult” loop on the trail. At this point it was getting dark and we had a not-so-wonderful trip back to the trailhead. The signs marking the trails could have been more clear if they only conveyed the information in one way. Instead they used colors, words arrows and the standard “you are here”-type map on each post. It was nearly impossible to tell (especially without a flashlight) where to go.
How do I relate this to programming?
User-interface design: The next time you decide to develop a user interface, don’t merely make the interface so it is possible for the user to get where they want; create an interface that allows the user to naturally go where they want without extra steps or ambiguous decision trees. Adding extra features just because they look cool or involve the newest in Web 2.0 development techniques should not be a goal. Helping the users of your software navigate and get something accomplished should be the main goal.
DRY (Don’t Repeat Yourself): I borrowed this one from Hunt and Thomas (The Pragmatic Programmer). The signs on the cross country trail were confusing because they were trying to convey the same information in multiple ways. If they had a concise way of marking the trails, it would have been much easier to navigate them. In our code, we should strive to keep concepts fully defined in one place and used consistently throughout our code.
In my quest to investigate a better way of tracking issues on software projects, I happened upon the Google Code Issue Tracker (I’m pretty sure that’s not the official name). I was looking to see if checkboxes and radio buttons disappearing in Google Chrome was a common issue, and a Google search landed me on an issue within the Chromium project. It’s hosted at code.google.com. What I noticed most was how simple the issue and the issue list were to understand and read.
Follow this link to see the issue: http://code.google.com/p/chromium/issues/detail?id=3543
What I like about this issue view:
- Everything you need to know about the issue is displayed in the top-left corner.
- The issue is basically a list of comments, starting with the problem reported.
- It seems like the issue tracker has a template that can be used to fill out the initial bug report.
- The UI is fairly simple. There are no complicated groups of settings or different areas to post the same information. The user can post a comment, star an issue to be notified of changes, or give feedback on others’ comments.
The overall list of issues for the Chromium project is fairly straightforward: http://code.google.com/p/chromium/issues/list
- It’s a list…that’s it. You can search, filter and star issues directly from this view. It doesn’t try to be something it’s not.
Overall, I like how the Google Code Issue Tracker is designed. It’s use of AJAX doesn’t seem to overblown. I don’t believe fade-in/fade-out AJAX effects are necessary for a issue tracker, and it is just more code to debug and maintain. It’s awesome that this issue tracker is available when someone hosts their code project on Google’s servers. I like that the links are readable; why isn’t that important for every issue tracker (really, anything that is list-like).
I’ve used two different bug tracking web applications over the past 4 years, FocalPoint and Vision Project. Both of these applications had good features and bad features. When we moved from FocalPoint to Vision Project, I immediately started to plan out my own bug tracking software. It seemed like Vision Project was a great improvement over Focal Point, but still not exactly what we needed.
This brought up an interesting point. Any bug tracking software can’t be perfect for everyone. If they were flexible enough to work for everyone, they would need a lot of customization to work for anyone.
Here’s my humble list of features I would like to implement in a new bug tracking application.
- Base functionality is very simple
- Fields for every issue should be customizable
- Users should be able to create extensions to the software (a SCRUM manager, for instance)
- Communication should be straightforward
As you can see, this is the first post to my blog in a while. I hope to continue updating this more often as I think through the design of a bug tracking tool that is flexible and simple to implement.
I’ve used Linux before, quite a bit actually. During my college studies for Computer Science, I used for Linux exclusively for 2 semesters on my laptop and desktop. After graduation, however, I’ve been working at a company that uses Microsoft operating systems and business software.
My favorite Linux distribution is Ubuntu. It’s easy to install and setup, it’s easy to maintain with apt-get for updates (and a graphical update manager). There’s even tech support if I have issues. There aren’t many distros that will support their OS outside of a forum community. Ubuntu has a document that helps in the transition from Windows to Linux. I’ve decided that I’m going to approach this project from a “new” Linux user perspective to see if I’ve missed anything learning how to use Linux as an everyday OS from just hacking through it before. My wife has never used Linux, so going through this stuff will probably help her get used to it as well.
Here’s where I’ve gotten in my switch:
- I have started working at home on organizing my data so that backing up and transferring it will be quick and (hopefully) painless.
- I don’t think that use any proprietary file formats that are not supported on Linux.
- I use online services like Gmail and Gcal for organization, so Windows applications like Outlook, etc aren’t necessary on Linux.
- I think my biggest concern at this point is getting my photo printer to work.
Something that I would like to do before completely switching is setting up a file server to serve my photos and music through NFS when I’m at home. Setting up automatic backups is another thing that would be nice to figure out before switching completely as well.
I have a goal of switching completely over to Linux before soon after Ubuntu 7.04 “Feisty Fawn” is released sometime in April.
Lifehacker posted their Top 10 Firefox Extensions today. I have used a few of those extensions, and especially like the Foxmarks bookmark synchronizer extension.
Another Firefox extension that I use a lot is the FaviconizeTab extension. It allows for your “favorite” tabs to be shrunk in size, only showing the icon for the site. I typically do this with my Gmail and Google Calendar tabs, so that I can fit more tabs that I need the text for on the tab bar.
Amit Agarwal at DigitalInspiration shared a list of the Top Ten Freeware Applications For Microsoft.
I had never heard of Windows Live Writer until today, so I downloaded it and am presently typing this post in the software. Windows Live Writer (WLW) is a Windows-based, WYSIWYG blog editor that works with most blogging platforms out there. The setup for this WordPress blog was very easy, taking about 30 seconds once I remembered the login information for my account.
As you can see from the screenshot, the interface is reminiscent of Microsoft Word, but is very uncomplicated. I think I’ll try using this tool for a while and continue making comments on it. The ability to work on different blogs with the same tool is very attractive to me.
I saw a new feature on my Google Homepage this morning. They have added themes to the settings. Along with the themes, you can add your location so that the theme can change throughout the day. Right now I’m using the “Beach” theme. I think that this feature doesn’t have much use for productivity other than being a very fuzzy timekeeping device. However, it strikes me as a “cool” feature for Google to have. I’m use to their fairly plain and utilitarian pages. This is a good change for them. You can of course choose not to apply any theme.
For the past 3 months or so, I’ve been using Google Calendar as an informal way of managing my todo list. I would create an appointment for the time when I need to be reminded of the task, and I would get an SMS reminding me of the task. This was nice, I just didn’t have a very good way of pushing back tasks, or hitting a “snooze”, or even showing that the task was complete.
I decided to experiment using Gmail for todo list management. I created a “_todo” label (to keep the label near the top of my list of labels). I created a filter so that all emails coming into my gmail account with a subject starting with “todo – ” would be automatically added to the todo label, archived, and starred. This worked pretty good, but I ran into an almost random dilemma. I received an email from a friend with a subject starting with “todo – “, and it got added to my todo list. That isn’t so good. I added the incoming email address to be my work email address which is where most of my todo list items originate.
After using this system for a few days, I realized that using a special email address for adding todo entries would work well. On my personal website domain, I have Google Apps enabled, so that I can create custom email addresses and using Gmail forwarding for those email addresses. I created a new “todo” email account, that forwards all the email it gets to my Gmail account. On the Gmail side, I have a filter that takes all email sent to the todo account and places it in the todo label, stars and archives it. That way, only someone who knows about the account can send me a todo, and I can send myself a todo through any email account and using SMS on phone. When the todo item is created, it is starred and unread. I then read the todo item, showing that it has been processed. When the item is complete, I unstar the item. I now have a list of completed tasks as well. The included picture shows how it looks.
Now for the HowTo:
- Create a new email address with a service that allows for email forwarding.
- Forward all the email from the new address to your current main Gmail address.
- Create a new label for todo items.
- Create a filter for all items sent to your “todo account” to be added to the todo label; star & archive the new item as well.
- You can now send a new todo item to your “todo account” and have todo items automatically added to your Gmail account.
I like managing my todo list in the same place that I manage my email, although sometimes a reminder is needed when the task has a definite deadline. I still use Google Calendar for reminders to bring something to work in the morning, or perhaps to check a certain website at a certain time during the day.
This past Saturday, I helped my company move to a new office. Our old office was located in a suburban commercial office “park” with a bunch of other offices. Our new office is located in the middle of downtown Grand Rapids, Michigan (Google maps here).
The location is a big advantage for me, being 50% closer to home. The open environment and the fact that I get a window make the new office a big win for me. Parking isn’t too much of a worry, but I’m sure that certains days of the week will be worse than others because our building is located within a block of the Van Andel Arena.
I’ve never worked in a downtown office, so this experience is a new one for me. I hope that during the Spring, Summer and Fall months that I’ll be able to eat lunch by the Grand River and get out of the office a little easier than before. There’s nothing like escaping the office for an hour or so in the middle of the day.
Philipp Lenssen is giving away copies of his book "55 Ways to Have Fun With Google". I've been paging through it the last few minutes and there are some interesting things that can be done with Google.
The book has a good mix of fun stuff to do with Google and some history of search engines mixed in. The section on Egogoogling is hilarious. Type "<your first name> is" into Google Search and it will usually bring up a page with something interesting to say. My first name, Scott has an interesting first search result: ScottIsInnocent.com. While I'm definitely not in support of this cause, I'm sure my wife will finally understand that I can do no wrong (hahaha).
There is also a section on how much time Google saves us. Tasks like opening a coconut are much faster with Google. What can Google not help us with?
The book has sections about Google Sketchup and Google Maps Mashups.
The book has some interesting material, definitely some fun stuff to show people at the office.