It’s interesting to watch how the accepted standard for User Experience (UX) evolves over time. It’s like there is a universal “vocabulary” of actions and gestures. We intuitively understand them and also expect them to be implemented in every app we use.
Continue readingHow much code is enough code? Does the phrase “less is more” apply here? Some people take pride in condensing their code into “one-liners,” but the reality is that makes for obtuse, unmaintainable code where defects love to hide. Sure, there are some cases where gaining performance or some other type of efficiency justifies writing code that’s a little hard to follow, but as a general rule I avoid this kind of code whenever possible.
Continue readingI was listening to a recent Hanselminutes podcast where Scott Hanselman speaks with Natasha Irizarry about User Experience (UX) (you can find the podcast episode here), and a very interesting debate got started in my head.
Continue reading
Recently, a friend of mine asked me what I thought of the “horizontal lines” symbol that is being used more and more frequently to indicate where to click or tap to get to a navigation menu. I really had to take some time to think about it, because I realized I don’t usually pay very close attention to the symbols used on buttons in the apps that I use.
Continue reading
On May 12, 2010, Valve made its Steam platform available on the Mac. There are a few key points of the way Valve chose to do this that show design decisions which support the needs and desires of the customer base. All too often, software companies do things the way that is easiest for them, at the expense of end user satisfaction. The Steam platform has grown in a way that exhibits the exact opposite: Valve gave themselves extra work, and sacrificed some potential revenue, to build a platform that caters to the users.
Continue readingSoftware Patterns are very useful. They provide us with common solutions to related, but distinct, problems.
Continue readingAnalogies are often used when building or discussing the architecture and design of a system. I think there are two main benefits to this.
Continue readingAnalogies are an effective way of communicating knowledge of one domain by mapping the domain’s concepts to another similar domain that is known by that person. In this way, a person can gain understanding of domain B through their existing knowledge of domain A.
Continue readingOne of the important parts of the essence of software architecture is that it is an abstraction of the actual code of the software system. What’s interesting about that is that it means software architecture is an abstraction of an abstraction, since the code we write using modern programming languages is just an abstraction on top of machine code. Just how many layers of abstraction have we accrued over the years that Software Engineering has been growing up?
Continue readingIf the mean time to failure is an important statistic, why only measure it during development and testing? Building a small, anonymous crash reporting tool into your application can provide you with a wealth of information and can help you to improve your overall quality. Of course it would be wise to make sure the users are aware of this tool, wiser to give them the ability to enable and disable it as they see fit, and wisest to leave it disabled by default.
Continue readingWhen you build an application backed by a database, one of the things you want to minimize is the amount of data transfer between the application and the database. There are, of course, two types of data transfer: the application retrieving data from the database, and the application sending data to the database. In this post, I want to focus on the former type.
Continue reading