Finished reading The Inmates Are running the Asylum, by Alan Cooper last night. I was quite surprised at how new this book was. I have always heard it praised beside other books I own that were written twenty years before it. Simply put this book tells developers that they should step aside and let designers create the user interface. This is repeated over and over all in the book. The book does not tell you how to design, although up until the very last page I kept thinking it was but a chapter away. Alas it was not to be. That is for another book on interface design. The book is an easy read and you could read it in a day if you had the time. I do recommend this book for any developer who wants to improve there applications.
One thing that is very true is how much we do appreciate good design. Yes we will suffer with whatever we have, but the moment a really good design comes around you will never go back. A good example is the ipod. Great design. For playing my music it works. You don't need me to convince you, you already know. I really need to stress this:Yes we will suffer with whatever we have, but the moment a really good design comes around you will never go back.
You maintain a kinda ok application design wise? All it will take is for someone to come out with an application with a much better design and half the features for you to loose users.
Another thing that you need to think about is that users have goals and to reach those goals they do some tasks. A user wants to put a CD they just bought onto their iPod. That is their goal. They don't care to organize their music, tag the files, or any of that other things, those just end up being tasks of the goal. When making your application think of what goals your users will have. If you make the goals hard to accomplish then your application isn't that good no matter how much it can do.
Another side note that is brought up in the book. I HATE how Gaim pop ups dialogs all day long. You have been disconnected, now connected, now signed on again, no away, now automatically logged out,.... AHHHHHH When I come in the morning I don't care to see a single one of these pointless messages. When I use iChat it *never* interrupts me with these pointless messages. I am willing to suffer with Gaim only because it works well enough and hasn't segfaulted on me much. The next time I try KOpete (or anything else for that matter) and it is better I will remove Gaim from my system. (See the above section on users will suffer until good design comes along)
One thing to think about when developing your application is to try to think in numbers other then 0, 1, and infinity. For example in KControl right now we have a Tree widget, that is because there are more then one module. After the cleanup there are less then 50 modules. With more then 10 and less then 50 modules there are better ways to display all the modules then in a tree view. With less then ten modules the icon view like in (most kde app) settings dialogs are another good example. A CD album will typically have less then twenty, when editing you will have a few hundred undo's, most folders will have more then five items and either less then 50 or way more.
The book presents the ideas of user personas. I have heard of this idea before, but only from a 10,000 feet view. It is a very interesting idea that can provide value to developers. They are a set of well defined personas that define a realistic set of skills that the user would have. So here are the three personas that I have created for KDE.
-Codes, PHP, Bash, C#
-Works for SciTech Technologies on a Windows project, but maintians a Linux box at work and uses Linux as his primary box at home.
-Has three computer, four if you count the one in pieces
-Involved in two or three sourceforge projects, and submits bug reports to others
-Listens to Korn and Linkin Park, has two mp3 players, and in his spare time hunt for odd cd's in the local CD shop
-Has a personal website (been meaning to update) and a blog
-Drives a Saturn, "moded" it with a new deck and connection for his ipod
-Married to Bob who codes Linux at work
-Uses a laptop
-Lets Bob fix the computer when it "breaks" and to add (install) applications, but only after trying for twenty minutes to do it herself.
-Loves how in Kicker you can change the icon of Konq to a star with a smily face
-E-mails really only five people outside of work and chats with them on aim too.
-Drives a blue car, Honda maybe
-Security Guard at the local Zoo
-Uses windows at work when he needs to
-Doesn't user the computer that much, mainly for writing documents, aim, e-mail and for websites people send him.
-Prints more then Jane and William combined times ten.
-Uses a PII 500Mhz computer his son made him.
-Doesn't use any application that isn't already installed or that doesn't have a shortcut on the desktop.
-Baseball++, Football++, Go Jets!
-Walks to work
When designing something in KDE if it is good enough for William then it probably isn't going to be good enough for Jane or Nick, but if you design for Nick you can make everyone else happy too. Jane is willing to explore the Setting and read the Help to find common features and William, well William is going to enable hidden configs just because he can. If you make Nick happy everyone will use your application. When debating implementing a new feature or design try asking yourself: "Could Nick use this?"
Git hooks are scripts that are run by Git before or after certain commands. Because the hooks are run locally and not on the server it allo...
A little over a year ago on reddit I saw a picture of a guy sitting on the edge of a rock . Not just any rock, but a clip of a rock that je...
For the 2011 Google Ants AI Challenge rather than doing the typical solution of choosing direction for each ant based upon the shortest pa...
Depending on the definition "code review" can mean a wide variety of things such as formal code review or automated code analysis....
I recently put up a new tool on GitHub called git-hooks . This is a tool to manage project, user and global Git hooks for multiple git repo...
SSD's provide significant improvement in disk IO. How well does that translate over when using Git? A lot. After watching prices dro...
Update: See my more recent blog post Git hooks for a more in depth look at Git hooks. The past few weeks I have started learning Git and ...
All through my programming career I have had a whiteboard, but beyond simply making sure I had one I have never thought much more about it. ...
This weekend I created a little application called git achievements . Similar to the XBox360 Achievements you can unlock all sorts of Achie...
I have created a new application called KAudioCreator. It is a front-end tool for ripping and encoding CD's. I am happy to say that KAud...