Saturday, August 19, 2017

Simple Design Innovations

Shopping cart is one design that has not evolved since its introduction in 1937.  The major development came in 1946 with the nesting carts.  After that, the only advances have been in minor tweaks like steerable rear wheels, adjustable height/volume, etc.

Of late, with the advent of digital technology, the cart is getting a fresh look.  IDEO is a design firm that looked at reinventing the shopping cart and came up with this design:

Several other companies are incorporating a digital display into the shopping cart to enhance the user experience.  Some of these displays show the store planogram whereas some display coupons or both.

These are slow evolutions of the shopping cart and taking it over the digital hump.  For all we know, the innovations will halt abruptly because online shopping and home deliveries are taking over al over the world.

Here is a minor design change I noticed.  I was at a shopping mall in Copenhagen recently and saw that it had sloped flat escalators taking visitors from the underground parking garages into the mall upstairs.  They were pretty steep.  I noticed several shoppers taking their shopping cart (the usual big ones) filled with goods down the escalator.  The carts were standing on the inclined escalator without slipping.  My first thought was that there must be a brake that the user applies to hold it in place.  Then, it would be a bad and dangerous design: what if the user forgot to apply the brakes?  what is the brakes failed?  What if the user accidentally released the brakes?  All of this would lead to serious repercussions.  Imagine a fully loaded shopping cart racing towards you on an inclined escalator.  You wouldn't be a happy customer.

Upon closer scrutiny, I noticed the clever design that held the carts in place and stopped them from rolling.  The design of the shopping cart used the escalator design to its advantage.  It was a very simple design change to the wheels that accomplished the task automatically and without failure.

Below is a drawing depicting the wheel design.  Instead of a flat wheel, these wheels had a straight groove tread.  Beside the wheels were pads that were affixed to the shopping cart frame.  Whenever the cart was rolled on a flat floor, the wheels would be in contact of the floor and hence they would roll.  But, whenever the cart was rolled onto an elevator, the wheel treads would fall into the elevator grooves and the pads would grab hold of the 'floor' (elevator floor) thereby arresting the cart since the pads were flat and non-rotating.  Clever way to solve the problem.

The beauty of the design was the simplicity.  This design requires no moving parts and it is fail safe and idiot proof..  Based on the design, irrespective of how you place the cart on the escalator, at least three of the wheels would lock.  Note that the arts were wide enough that you could not turn them sideways on the narrow escalators.

Reminds me that great designs are always simple designs.  

Monday, June 19, 2017

The driverless World is here (almost)!

I recently visited a city with completely autonomous vehicles and no drivers at all and it was a delight to see the way the automobiles (including trains and planes) moved about without an adverse incident.  All vehicles moved around within the limits of the law and were aware of each other (as long as they were in close proximity).  It was a wonderful sight to behold.  Vehicles of all sizes varying from a small car all the way to a 18-wheeler moved around the city and in between cities, with ease.  Trains were, of course, on a schedule and followed it like clockwork as they moved in and out of stations.  The airport was the icing on the cake.  All the vehicles, including planes and ground support vehicles, were autonomous and they all went about their job effortlessly.

Now, you are wondering where this futuristic city is.

It is the Miniature Wunderland in Hamburg, Germany.  Everything I explained was in place but what was missing was the variability and chaos caused by humans.  This was an autonomous world with no people.  Hence the clockwork precision in its operation.  The only humans in sight were the spectators visiting the Wunderland.

I do think there is a lesson to learn here.  One of the biggest challenges facing the technologists is to blend self-driving vehicles with human drivers.  This interaction is complex and can lead to confusion and unnecessary traffic congestion.  As long as we have everything automated, there is a high probability that things will work well.  The key information that is needed is about the surroundings (static as well as dynamic) and the road rules that govern the vehicles.  The roads can be made smarter so they can transmit information about their conditions to a central location and it could be made available to anyone interested.  The vehicles could also be made smarter and they can identify, collect and transmit information to a central location for consumption.  We are partly there already with roads transmitting traffic as well as condition information and vehicles transmitting their location information to start with.

The autonomous technology has matured and costs have come down drastically,  Even with a completely autonomous world there will still be challenges to overcome.  From hacking of the system/vehicles, economic impact, regulatory hurdles and liability are a few issues that need to be still sorted out.  The good news is that a lot of heavy weight companies are after these issues and we are sure to see them resolved in the very near future.

Anyone interested in model vehicles would love this museum.  It uses state-of-art technology in each of its displays.  It even simulates 24 hours of the day every 15 minutes.

For the road vehicles, they use the Faller Car System and have customized it to their needs.  They have created their own custom software to operate the airport.  For light control, they developed their own system called MiWuLight.

They have even partnered with Google to create street views of the Wunderland.  Check it out on Google Maps here.

Wednesday, January 11, 2017

Design Inconsistency

Consistency makes life easy.  Consistency makes sense.  Consistency in design reduces learning curve and eliminates confusion.  We subconsciously expect consistency and harmony around us.

Consistency has always been important in design of everyday things.  It is especially important when it comes to human machine interfaces.  Consistency makes everything seem normal and we feel at ease as we can operate in auto-pilot.  Imagine if the location of the accelerator and brake pedals were switched based on the brand of the car.  Every time you rent a car, you need to retrain your brain to this new interface.  This inconsistency is not only frustrating but can also be dangerous.  I remember a friend getting into a serious accident while riding another friend's bike in which the brake and gear levers were reversed (non-standard).  It was part of the design of the bike but in critical situations, the brain goes into auto mode and just does what it has always been doing.  He ended up frantically pressing the gear lever instead of hitting the brakes.

Another example is the riser of a staircase.  The designer can pick any height for the riser, BUT, it has to be consistent across the whole staircase.  Once a user starts climbing the stairs, the human mind programs itself to the height of the riser and we go into autopilot.  The user no longer has to look at the steps in order to continue.  The moment a riser is different (either shorter or higher), the user is guaranteed to trip.  Inconsistency is dangerous here.

We take notice when things are inconsistent.  Because inconsistency confuses us and throws us off.  It also frustrates us.  Here is an example I noticed recently at a Sheraton hotel in Vancouver.

During all my travel, I have always noticed that the elevator design is very consistent (but for some special cases like this) so as to provide the user with a familiar feel.  The 'door close' button is always on the right hand side and the 'door open' button is on the left hand side (Whether the door close button is a placebo button or if it actually works is a topic for another blog.  Let's stick to the design topic for now).  Once you hit the floor button, you subconsciously reach for the button on the right side to close the door.  I did exactly that and the door kept reopening.  I was distracted by my phone and did not notice why this was happening until, out of frustration, I 'looked' at the button to discover that it was reversed and I was hitting the 'door open' button.  Duh.

This case was not a 'designed inconsistency'.  It was an 'inconsistent inconsistency' because the other three elevators were all consistent and standard.

Inconsistency can be refreshing in some cases and can be an advantage.  An example is a web site (or a mobile app) design that is not consistent and does not follow the norms of design will always stand apart and draw the user's attention.  And, user attention is what everyone is craving for.  Again, the inconsistency should be subtle and not all over the place.  If it is extensive, it tends to drive the user away.

It is OK to be inconsistent when you want to draw attention, when you want to surprise (pleasantly) the user or when it is dictated by the design.  Designers have to make a conscious choice when to apply inconsistency to their design and what it would mean.  A thorough analysis should be undertaken before introducing inconsistency.  

Sunday, December 18, 2016

Here come the drones!

Amazon Prime Air announced this week that they successfully delivered a package to a customer in the UK.

This is exciting news for the package delivery industry.  Drones have already made a mark in other industries like agriculture, construction, oil and gas.  They are very efficient in inspecting power lines or oil and gas lines and even oil tanks.  Those are niche usecases where a drone is perfectly suited. Delivery of goods is one area where lots of companies are trying to make headway.  Drones have been used to deliver medicine, blood, etc.  Healthcare can benefit from drones immensely when it comes to delivering care packages to remote areas.

Possibilities are endless with drones due to their VTOL (Vertical Take Off and Landing) capability as well as stability.  Equipped with a HD camera and a GPS, drones are basically robots on a mission.

Some think that drones are going to replace UPS/Fedex, but that is not going to happen.  Drone delivery is one of the delivery channels for a specific niche. It will never become mainstream and replace USPS or UPS or Fedex, due to its limitations.  Payload is one of the key limitations followed closely by range.

Payload is a limitation that will continue to keep drones to their niche.  But, range limitation can be overcome by several means.

Due to the limited range, drones can only deliver within a small radius from the distribution center (DC).  One way to solve this is by having a mobile DC that moves the products close to the delivery site and uses drones to dispatch the goods.  Imagine a small truck driving into a neighborhood, parking itself and dispatching as many as a dozen drones to deliver a dozen packages in one shot.  The drones will fly line of sight, thus reducing the distance to the target and the time for delivery.  Once the delivery is complete, the drones return back to the truck (mobile DC) and get recharged while the truck moves to another location.  The traveling salesman problem is simplified by a hub and spoke design for the last mile (the truck still needs to solve the TSP).  The hub being the mobile DC and drones making up the spokes.  Large number of deliveries (albeit, small) can quickly be achieved this way.

The next stage of this mobile DC would be larger drones replacing the trucks.  Imagine a large drone (mother ship) carrying the goods as well as smaller drones flying into a neighborhood and landing atop a 'perch'.  The perch could be a flat rooftop or a light pole.  People could rent their rooftops as perches for these mother ships.  The mother ship drone would land and dispatch individual smaller drones to the end point delivery.  Once the deliveries are complete, the drones will return back to the mother ship for recharging and their next assignment.

The beauty of this model is that the mother ships can recharge while waiting for the smaller drones to complete their delivery.  Imagine a rooftop drone perch with a power outlet.  If the perch is on a light pole, a power outlet can be created atop the pole.  This extends the range of the mother ship as well as the drones on board.  The only reason for the mother ship to return to a DC is to gather the next shipment of goods.  Remember, this DC that the mother ship returns to, could be a mobile DC itself!

The research that companies like Amazon are doing in the area of drone delivery can benefit other areas like healthcare, agriculture, power, oil & gas as well.  

Saturday, December 17, 2016

Programming Projects for Beginners - Bubble Sort

This exercise will introduce you to sorting and specifically Bubble Sort.  There are several methods for sorting and bubble sort is one of them.

Note: If you stumbled upon this post and are wondering what this is about, start here.

Bubble Sort makes multiple passes through the list, while comparing adjacent elements.  It compares adjacent elements and swaps them if they are out of order.

Here is how it works:
Input list = [23, 4, 55, 12, 76, 3,41]
First pass:
[4,23,55,12,76,3,41] - Swap
[4,23,55,12,76,3,41] - No swap
[4,23,12,55,76,3,41] - Swap
[4,23,12,55,76,3,41] - No swap
[4,23,12,55,3,76,41] - Swap
[4,23,12,55,3,41,76] - Swap
Note that at the end of the first pass, the largest number is in its final place.  It has 'bubbled' up to its final location.

For the second pass, we can ignore the last element and sort the rest.  At the end of the second pass, the penultimate item will be in its final position.  This way, we keep shrinking the list until there is nothing else to sort.

Here is the usecase:
- Program displays a list of randomly ordered integers
- Program sorts the list using bubble sort
- Program displays the sorted list

Programming constructs used:
- Comparison
- Looping
- Conditional statements

Here is what the output would look like:

Note that I am printing the list at the end of each pass, but you don't need to do that.

You will also note that the sorting algorithm continues with the passes even though there is nothing to sort after the 6th pass.  This is because the algorithm is blindly running through the list once for every item in the list.

Improve the algorithm in such a way that it stops soon after the list is completely sorted.  The output should look like this:

Happy coding!

Programming Projects for Beginners - Hangman

This is the classic hangman game where the user guesses the chosen word in a given number of tries.

Note: If you stumbled upon this post and are wondering what this is about, start here.

Here is the usecase:
- Program asks user to guess a letter that makes up the chosen word
- User enters a letter
- Program checks if that letter is part of the word
- If the letter is not part of the word, the program starts drawing the hangman
- If the letter is part of the word, the program displays that part of the word and asks for the next letter
- If user keeps making guessing incorrect letters, the program continues to draw the hangman
- After several bad guesses, once the hangman drawing is complete, the user loses
- If the user guesses the word, the user wins

Programming constructs used:
- User input
- Comparison
- Looping
- Conditional statements
- Error handling
- Exception handling

Here is what a sample output would look like:

Another sample execution:

For the hangman, create a list of the ASCII pictures with increasing degree of completion, and display them accordingly.

Read the list of words from a local file on disk.
Account for words with repeated letters.
Account for user typing an already found letter.

Happy coding!

Programming Projects for Beginners - Email Validator

We have all filled out forms where your email is requested.  In most advanced forms, as soon as you type your email, in case you made a mistake, the form would indicate that something is wrong.  This program does exactly that.  It checks the input text to ensure it is a valid email address.

Note: If you stumbled upon this post and are wondering what this is about, start here.

Here is the usecase:
- Program asks user for email address
- User enters email address
- Program checks validity and tells user if something is incorrect and asks user for the email address once more

Assume valid email addresses look like this:
'abc' and 'cde' are alphanumeric text of any length (no special characters or spaces though)
'com' is either a two char or three char alpha string

Programming constructs used:
- User input
- String comparison
- Looping
- Conditional statements
- Error handling
- Exception handling

Here is what a sample output would look like:

Happy coding!