User Interfaces: What Does the Customer Really Want?
This article discusses usability issues in the design
of embedded products, and also addresses the engineers role
in the process of making a product usable.
Usability Standards for Medical Devices
bodies look for evidence that the development of medical devices
followed a usability program. This article discusses that
standards that can be used to show that you are following
Systems Through Better User Interfaces
article discussed the tradeoffs between safety and usability
when designing the interactions between user and machine.
Of User Interface Design
Usability improvement can be achieved by constant reviewing
and tweaking of a design, but this articles describes principles
you can chose to apply right from the first incarnation of
for Graphical User Interfaces
Adding a Graphical User Interface to your product will allow
you to add a lot of functionality, but it also raises usability
It's Worse on a Browser
User interfaces are always less usable when they're served
up via HTTP. But there are ways of improving the user's
So that button must
Niall vents some anguish about frustrating
and misleading user interfaces. Readers'
|Interfacing the User
This column looks at factors in the mindset of the engineer
that make them less suitable as user interface designers.
If you are aware of these issues, it is easy to avoid the
common pitfalls. Readers'
Good - A Lesson in Layout
Programmers need to learn a few graphic design principles
to make the best of their GUI. Readers'
Another attack on the engineering mindset and why you have
to think different when it comes to usability. Readers'
The text our applications display to the user has a huge impact
on usability, and so deserves close scrutiny during development.
and the User Interface
Software engineers should not fall into the trap of assuming
the general population is as comfortable with modes as the
typical engineer. Readers'
Err is Human
Handling user errors is a tricky business. In this piece we
look at how to let the user off the hook, and how to design
good error responses.
Secret of Good Timing
Timing responses to the user can be the difference between
a good user experience and a great one. The speed of response,
the feedback during a delay, and the timing of changing elements
such as flashing lights go under the microscope here.
the User in the Driver's Seat
Designing user interfaces
means striking a tricky balance between being helpful, being
too helpful, or getting in the way. Here are some examples
to guide you through these treacherous waters.
Parlez Vous Franšias?
Examine translation issues, dealing with translation
houses, managing code files and translation files.
More translation issues and a look at double-byte
|User Interface Prototypes
Niall uses Borland C++ Builder to implement PC based prototypes
of user interfaces. Readers'
A continuation of last months piece where
we look at some more examples built with Borland C++ Builder
and we discuss graphics prototypes.
Graphics Part 1: Bitmaps and Fonts
article discussed the use of graphics in embedded systems,
and in particular methods for converting bitmaps and fonts
from a PC to a form suitable for compiling into an embedded
system. The companion page for
this article contains downloadable code and executables.
Graphics Part 2: Objects and Refreshing the Display
discusses structures that can be used to control objects on
the display to allow interactive interfaces to be built. Different
refresh policies are examined, which provide varying amounts
of control over the objects on the display.
Embedded GUIs are growing more elaborate day by day. Developers
now have to contend with such arcana as a color palette. We
also look at the Palm Pilot and discuss anti-aliasing. Readers'
Comments and further comment from Niall
This month we look at how we can take advantage of diasplays
with a large color range to produce shading effects for buttons
Discussion of the Amulet serial GUI and the Segger graphics
|Dealing with touch sensitive areas of graphical objects
piece explores various algorithms for establishing the exact point of
intended touch on an GUI and whether those touches should be applied to
an object at or near that location.
purpose allocation mechanism, malloc(), can suffer from fragmentation,
regardless of how carefully it is used. Also, a general purpose
allocation scheme usually has undeterministic real-time properties
as it may have to perform a search for memory of the appropriate
size. This paper examines how to manage memory and looks at
some alternatives that eliminate fragmentation and searches,
such as fixed size pools.
Corner: Watchdog Timers
An introduction to watchdog timers. Niall Murphy co-authored
this piece with Michael Barr.
advanced use of a watchdog timer as a safety check to make
sure your software has not hung. The second half of this
article deals with RTOS integration.
Lock Up Your Software
Interlocks providing mechanical limitations on software.
The key to preventing software catastrophe is outthinking
an imaginary malicious programmer.
Lock Up Your Software
Further discussion of interlocks and dead man controls.
We also look at how the user interacts with such protection
mechanisms. Readers' Comments
I look at when and why to use the assert() macro. Readers'
Comments and Errata
More discussion of the assert() macro, with a look at how
to define it in a style suitable for embedded systems.
|Forget Me Not
If using EEPROM or NVRAM, you need to take precautions such
as checksums and double-buffering if you want to detect or
fix corrupt data. Readers
|A Version Therapy
A follow-on from last month. If you upgrade your software,
but you want your persistent storage to remain valid then
you need to plan for it in advance. Readers'
|Flushing Out Memory Leaks
First of two parts on memory leaks. This month discusses the
challenges of measuring usage and leaks, and the shortcomings
of the tools available.
|More on Memory Leaks
This month we look at some extra code that can be added to
malloc() and free() to let you know if memory is being wasted.
Curious bugs can creep in if you do not give sufficient
attention to the initialisation of variables. Readers'
Comments and Errata
We all learn from our mistakes, but it's less painful to learn
from the mistakes of others. This list of bugs shows some
dangers that lurk within subtlties of the compiler.
|What have the Romans Ever
Done for Us?
Niall muses about the real advantages of objects, and some
of the hidden drawbacks. Readers
A Question of Quality
Can quality be generalized across multiple industries? ISO
9000 and its promoters claim it can. Here's a look at the
|ISO 9000 Backlash
Since the last ISO article generated so much reader feedback,
I decided that it was worth another look. Readers'
Training for the Long Run
A discussion of the pains and gains of technical training
in the embedded world.
|A Short Message about Short
Mobile phone text messaging opens some interesting doors for
the embedded designer, and when it moves to fixed lines it
will open even more.
A look at SPI and CAN as design options for getting your processors
talking to each other.
Linux Worth the Effort?
A look at the ups and downs of embedded Linux.
Readers' Comments and
further comment from Niall
Short Trip on the CAN Bus
A look at the hardware robustness of CAN and a discussion
of how to program it. Readers'
A look at how to protect your design from reverse engineering,
and a discussion of the viruses and hacks that may threaten
embedded systems in the future.
In this piece I discuss a few examples of lateral thinking
when it comes to challanging design issues in embedded software
Niall discusses some fun reads he had over the years.