"Try to learn something about everything and everything about something." -Thomas H. Huxley

In our company book club, we have read a few books with focuses on usability. These include Don't Make Me Think: A Common Sense Approach to Web Usability, and Seductive Interaction Design: Creating Playful, Fun, and Effective User Experiences. They are both excellent books and have slightly different focuses. Don't Make Me Think includes a lot of simple principles that can help developers understand the fundamentals of web usability. While there is nothing groundbreaking there, it's a great starting point for those that have never thought too hard about usability in their own apps or websites. Seductive Interaction Design discusses techniques by which you can "seduce" users to achieve certain goals using techniques that map to psychological principals. While there is a usability component to this, it's actually a much higher level function. However, it's a lot more fun to use. Implementations include elements of gamification and aesthetics, which are just plain fun for a developer to design. But therein lies the rub:

Building a seductive interface is meaningless, unless basic usability issues have been addressed.

Back in the 90's, there was a sketch comedy troupe on MTV called The State. And they had a sketch called Taco Man. The crux of the dialog is that the postal customer is upset that he is not getting his mail, despite getting fabulous tacos in his mailbox. It's not that he doesn't want the tacos, but that he needs his mail. Without the mail, he can't pay his bills, and would lose his house, making the tacos irrelevant.

Just like Maslow's hierarchy of needs, which theorizes that higher level psychological needs (love, self-actualization) cannot be met before basic ones (physical needs, safety), I propose that there is a similar hiearchy for features and usability in apps:

Works as designed - The app is able to perform as advertised

Works as expected - The app has basic usability and a user doesn't need to refer to a manual.

Flow - The app has advanced usability and a user is able to "autopilot" through tasks efficiently.

Seduction - The user desires to use the application. They use it, even when not necessary.

Now, the hierarchy could be broken down differently, so I'm not going to contend that I have the best model. The point of this is that there are levels that must be achieved, and you are not able to skip over a level. You cannot build a seductive app out of one that is fundamentally unusable. It's not that the tacos (seduction) are not important, it's just that the mail (usability) is a higher priority. So while it may seem like fun to invest in designing and implementing seductive interfaces, developers and product managers should be conscious of the basic needs that preceded it.

If you're like me, then you find yourself in too many meetings which you need to ask "what is the purpose of this meeting?" partway through it.

Every meeting should start with the phrase "The purpose of this meeting is...". Even better, every meeting invitation should include that statment.

To be clear, a good description doesn't fit in a meeting title field, like "Customer Issues". It's a full sentence that says something like "The purpose of this meeting is to review the list of active customer issues, assign relative priorities, and use the remaining time to discuss solutions to the highest prioritiy issues." The same goes for periodic meetings. Instead of just "Monthly staff meeting", include a description like "The purpose of this meeting is to discuss progress on long term priorities, review the schedule, and present the latest prototype of the product."

Why?

Meetings are expensive. Rather, gathering a group of resources together in a forum that really only allows one of them to actively particpate at a time is a hell of a way to spend salaries.

If someone has nothing to do with the purpose, it gives them the chance to opt out. It's like getting on a plane and the pilot saying "This flight goes to Dallas." If you're not sure why you're there, then ask the organizer why you were invited.

It keeps the meeting on task. Again, these things are expensive. If you have a bunch of people in a room for one purpose and you tangent, you're potentially wasting the time of a fraction of that group. Being able to suggest that the tangental discussion be noted and brought "offline" to focus on the purpose is a valuable tool.

It helps people focus on the most important thing. Going into a meeting where people just start talking and eventually indicate their question or problem causes people to have to go back and rethink about what they heard. Being able to state the purpose upfront allows people to take in all information in the correct context.

By stating it ahead of time, it lets people collect their thoughts and resources to be prepared for the discussion.

It's a courtesy. Depending on your situation, you may or may not be able to opt out of certain meetings. If you are, woudn't it be nice to have the information about whether you can contribute before you book the time? If you can't wouldn't you expect that the organizer at least takes the time to clue you in on the purpose, rather than just demanding that you appear?

It forces the organizer to... organize. Why am I having this meeting? Do all invitiees need to be there? Can I achieve the same results asyncronously, like over email?

This is something that I try to practice regularly and hope that other people catch on. It's a small habit that can make a major impact.

Envisioning change, whether it is in our personal or business plans, is often the first step to making it happen. But what I find is that many changes don't materialize because we fail to go beyond that. Many significant changes, whether tangible, like banking $4 mil., or intangible, like changing a company culture, need to be broken down into smaller discrete steps. This seems totally obvious when we talk about it outside the context of a problem, but how many times have you tried to implement change simply by building a vision, possibly sharing it, and then "working hard" at it without direct and measurable plans?

The concept of Five Whys has been popularized as a problem solving technique used by lean processes. If you have not heard of this, it essentially involves asking why a problem exists, which derives a new problem, and repeating that process 5 times. The theoretical advantage of this is that it helps persons determine the root cause of an issue, so that it can be dealt with, rather than just the symptom.

But what if we were to use this for planning? What if we made it the Five Hows? Let's take an example from above. How am I going to make $4 mil.? Well, I might decide that I am going to make it through investing. How? Well, I need to learn a whole lot about investing. How? Well, you get the idea.

Now, this brings to light a couple issues. First, do I even have a good plan here, since I don't even know enough about investing to know whether my plan is reasonable. Well great. it's better to acknowledge and address these issues before you spend time going down a path with no map. Second, there is a major problem with the Five Whys that also applies to the Five Hows. It doesn't address the complex nature of the problem at hand. Just as you cannot predictably cause a tsunami by flapping a butterfly wing, an effect rarely boils down to a single cause.

There is a solution. Instead of looking at the Five Whys or the Five Hows as a chain relationship (one-to-one), look at them as a tree (one to many). There is one trunk (the problem), that leads up to many branches (hows), and each branch has many sub branches, etc. The same is true with the roots (whys). Again, this seems obvious, but how many times, when problem solving, do you just take the first solution and run with it. So, the technique I use is to simply say "Okay, we have one solution, but what if that wasn't an option. What would we do then?" For each Why or How, expect to come up with three to five answers before moving on. Don't discount options that seem less valuable at that point in time, because you may find out, further down the chain, that your preferred option may not be as feasible as you think.

The Windows Azure Platform is Microsoft's cloud computing platform. The goal of this article is to give a basic familiarity with this platform, what it can be used for, and some of the benifits and risks. In order to explain Windows Azure, one must understand the concept of cloud computing. Cloud computing is the concept of hosting technology applications and data on the internet, AKA "the cloud". It is characterized by:

Shared resources - Multiple applications and data reside on the same hardware (and often redundantly across multiple pieces of hardware). They are logically isolated from other customers' data.

Scalability - The ability to acquire as many resources of a virtually unlimited size as one might require. This may be measured in terms of CPU cores, RAM, storage space, or databases.

Rapid provisioning - Resources can be added dynamically, often through an API, as additional capacity is needed. The same is true in reverse, that capacity can be taken offline as demand decreases.

Utility Service - Consumers pay for the resources they consume. Different vendors have different metrics, but you are paying for small units of computing power, rather than the cost of capital to build out a server farm that will never reach 100% efficiency due to peaks and valleys in demand.

Typically, this is achieved through the use of virtualization on commodity hardware. As a caveat to the concept of internet based computing in the public cloud, there is also the concept of private clouds, which are virtualization farms hosted in a private data center. These clouds can often interoperate with the public cloud to supplement their own capacity as needed.There are three primary categories of cloud computing services available:

Software as a Service (SAAS) – Software built on a cloud computing platform. This includes some free services, such as Gmail, and paid services such as Mozy or Adobe Photoshop Express. Customers are often billed on a subscription or by use basis, rather than a onetime software license cost.

Platform as a Service (PAAS) - Software development platforms hosted in the cloud. This includes Windows Azure, Google App Engine, SalesForce.com, and Engine Yard. Developers may build applications using and SDK which they can deploy, manage and access natively in a cloud platform.

Infrastructure as a Service (IAAS) – A cloud based infrastructure. In the case that computing power is required, but the PAAS model does not provide the required flexibility. IAAS is offered by a few vendors, including Amazon AWS and Rackspace.

As we have said, the Windows Azure Platform is a PAAS. The Windows Azure Platform consists of:

AppFabric – The management tools for Azure based applications, Service Bus, and Access Control Service

VS 2010 SDK – The toolkit for building Azure applications.

(Note: the MS Marketing team seems to be having a field day with the nomenclature. There used to be entities like ‘.NET Services’, which has now become AppFabric.)Using the SDK, Windows Azure allows the deployment of 4 types of solutions; ASP.NET Web Role, WCF Service Web Role, Worker Role, and CGI Web Role. Not all .NET functionality is available, but the feature set is extensive and pretty well documented on MSDN. When deploying applications, the management interface forces the deployment to a “staging” environment, where you can test your application before swapping to production. The changeover is almost instantaneous in that it changes the DNS records to point to the new app, and limits based on propagation and caching may apply.Windows Azure Storage Services is the storage solution. There are three types of entities that can be stores and retrieved. The Blob Service handles entities such as binary and text files, much what you would traditionally store on disk. The Queue Service allows for the use of messaging between services, to enable a persistent connection, even if services become backlogged or shut down. The Table Service stored named pairs and is not related to SQL tables as one might think.SQL Azure allows you to host SQL databases on the cloud using most features available in a Standard SQL 2008 license. You may connect using SQL authentication only, but you will be able to use SQL management studio, ODBC, ADO.NET, etc. It has a SQL firewall that denies all connection by default, and can be configured to allow as small of a surface area as required. This makes SQL Azure something that might be useful not only for cloud applications, but as a standalone service for hosting SQL databases in the cloud.The service bus is a toolkit/service for allowing more seamless connectivity between applications and data stores between the cloud and your LAN. There are all sorts of demons between you and the cloud (firewalls, proxy servers, routers). The service bus is a way of simplifying those connections (without VPN) and seems especially useful if you’re utilizing storage or SQL in the cloud, when connecting from an application hosted locally.The Access Control Service (ACS) is a way to provide cross domain authentication of users without a federated identity service. Mind you, it is not limited to Windows domains. A pretty quick and dirty video explaining the Service Bus and ACS can be found here.Analysis

The following are some common uses for Windows Azure:

The obvious; Platform for SAAS solutions

Running batch processes which require a large amount of resources for a limited duration

Hosting commodity processes, which may require a frequently changing number of users or resources based on a changing demand. For example, a university bookstore “used book website” will see massive spikes in its use just before and during the first week of each semester, and minimal use otherwise. Alternately, build your own Amazon Mechanical Turk.

There are several advantages to cloud computing with Windows Azure:

High Availability (HA) – Without any effort on your behalf, if you provision a SQL database in SQL Azure, it automatically takes advantage of the HA features in SQL. It is promised that your database is replicated to at least 2 datacenters within a specified region, and will failover automatically if something faults on the primary. In the meantime, it will begin replicating to another server to become the new failover.

Scalability – If you’re building out your own datacenter, you must build for peak demand plus a safety factor. This can be costly and creating a accurate estimate can be like trying to catch a cat in the dark. PAAS allows for commissioning and decommissioning of resources in near real time as needed.

Pay per use – You only pay for what you use, and since the use is often coupled directly with the number of users or subscribers, you can then much more easily put a “per-head” cost on the application. This makes calculating and achieving your ROI that much easier.

Lower Total Cost of Operations – Beyond the cost of acquiring hardware and software licenses, there are the costs of commissioning, operating, patching, maintaining, upgrading, backing up, replacing, recycling, and securing them. There are the costs for maintaining the supporting services (network, power, cooling). There are the indirect costs of benefits for those people that perform this work. The total cost associated with running a datacenter can be incredible for a small organization. Using Azure can mitigate those costs.

And there are several risks:

Security/Privacy – Some organizations will simply never put their data in another vendor’s data center. Vendors can be certified under industry standard certifications, but my feeling is that you can never completely preclude a data compromise. Out of sight is not out of mind in this case. You’re putting a lot of trust in your vendor and every one of its employees to do no harm.

Latency/Throughput – Although there are a number of options available to build fast connections to your datacenter, they come with and additional cost and can never reach the same performance as having your application server right next to your database server on the same LAN as your users.

Connectivity – You now rely very heavily on your internet connection. Although the datacenters will have backups for everything, how reliable is your connection? Can you deal without your application if the internet is not available?

Infrastructure Surface Area – Albeit a minimal change, you are increasing the surface area of your infrastructure, and thereby increasing the potential that it may be a target and a victim of hackers.

Pricing for the service can be found at Pricing. Note that the compute time is CPU running time, not CPU/proccess time.

"Sen. John McCain, the Arizona Republican, introduced a bill late Thursday that would short-circuit the FCC's ability to enforce its proposed open Internet rules. In a press release, McCain said the new rules will "stifle innovation, in turn slowing our economic turnaround and further depressing an already anemic job market." McCain is particularly opposed to extending net neutrality to the wireless space, and his bill, the Internet Freedom Act of 2009, comes as opponents of net neutrality launched a furious attack on the FCC and the Obama administration."

"I read my e-mails, but I don't write any. I'm a Neanderthal -- I don't even type. I do have the rudimentary capability of calling up some Web sites, like the New York Times online, that sort of stuff. No laptop. No PalmPilot. I prefer my schedule on notecards, which I keep in my jacket pocket. But my wife has enormous capability. Whenever I want something I ask her to do it. She's just a wizard. She even does my boarding passes -- people can do that now. When we go to the movies, she gets the tickets ahead of time. It's incredible."

...or in a more abstract form, energy storage devices. The United States has a big problem. As do some other nations, but I'm speaking to ours in particular. We have such a terrible dependency on oil, that those who possess it are able exercise some control over our actions in order for us to obtain it. We're even able to ignore the increasingly clear negative side affects of our use of this stuff, ala global warming, because we don't seem to have any viable alternative. But let's not just talk about the problem, let's talk about the solution.

In our current pursuit of alternatives, we speak regularly about the collection of energy via alternative sources including solar, wind, hydro, the aggregation in solar arrays, dams, and wind farms, and the transmission. However, we have pretty much maxed out the potential of those methods and need to focus on the current weakest link, storage.

One of the major problems with these alternative energy sources, particular those based on solar or wind, is the variability in the rate of production. A cloud or calm sky can vary a energy production rate by up to 95% percent, unpredictably to boot. A redundant system is not enough to assure a reliable supply of energy, so we must depend on a reliable backup supply of energy.

Additionally, current implementations of batteries within hybrid vehicles prove to be heavy,of low capacity, volatile, and even harmful to then environment. The weight and size of these devices severely limit the performance and range of the vehicles. The chemical composition of them make them prone to fires and explosions. They are typically made of either lithium-ion or nickel-metal hydride type cells. You may be familiar with lithium-ion batteries as those that had a stent of exploding and creating uncontrollable fires in laptop and cellphone batteries. Nickel-metal hydride batteries present their own volatilities. Both types also present a major environmental impact in terms of their production and disposal, although much less so than other types of batteries.

We must develop a more practical means for the storage of energy. This will have major applications to both vehicle and utility industries. Rather than spending money to "bail out" our automotive industry... rather than spend money on a war to preserve our oil interests int he middle East... rather than worry about Mr. Putin being able to proactive war games in our back-yard via the funds he has been able to marshal via oil interests in his country... we should be allocating money towards research of energy storage devices. Once developed (and yes, this is thinking optimistically), not only will we have eliminated a major hurdle, but we will have the option to sell the products or license the technology to other nations. That, or we can sit on the sidelines and wait for another country to develop and license it to us...