Being User-Centered When Implementing a UCD Process
Grok Headline matches for Being User-Centered When Implementing a UCD Process
Review - The Elements of User
Experience: User-Centered Design for the
Web
Review - The Elements of User
Experience: User-Centered Design for the
Web
12/08/2002 10:04 PMWebmasterBase Dec 8 2002 8:41PM ET
User-Centered URL Design
User-Centered URL Design
09/26/2002 04:23 AMUser-Centered Design
User-Centered Design
03/11/2003 09:43 AMDec 14. An Integrated Approach. 2001
Formal Definitions of User-Centered
Design
Formal Definitions of User-Centered
Design
07/01/2002 03:39 PM"When rigorously applied, a UCD approach meets both user needs and the
business objectives of the sponsoring organization." (Charles L. Mauro
-
TaskZ)
INUSE 6.2: Handbook of User-Centered
Design
INUSE 6.2: Handbook of User-Centered
Design
11/01/2002 07:40 AMImproving Business Through User-Centered
Design
Improving Business Through User-Centered
Design
08/13/2002 02:06 PMUser-Centered Design for Large
Government Portals
User-Centered Design for Large
Government Portals
01/23/2003 05:55 AM12-March-2003 -- Notes: The Future:
User-Centered Design Goes Mainstream
12-March-2003 -- Notes: The Future:
User-Centered Design Goes Mainstream
03/13/2003 12:21 AMNotes: The Future: User-Centered Design Goes Mainstream -- "These are
the notes I took, it’s a cross between transcription, commentary,...
An Interview with Peter Merholz and
Nathan Shedroff on User-Centered Design
An Interview with Peter Merholz and
Nathan Shedroff on User-Centered Design
10/09/2002 03:40 AMReducing user input during the Sysprep
process
Reducing user input during the Sysprep
process
04/29/2004 10:46 AMLondon bus ticket machine, plus bus and
bus user (to help explain the whole
arcane process) [Flickr]
London bus ticket machine, plus bus and
bus user (to help explain the whole
arcane process) [Flickr]
09/26/2004 06:36 PMBusy Process Engineers Invited to
No-Cost Technical WebCast Seminars on
Semiconductor Manufacturing Process–
Series Is Presented by Speedline
Technologies –
Busy Process Engineers Invited to
No-Cost Technical WebCast Seminars on
Semiconductor Manufacturing Process–
Series Is Presented by Speedline
Technologies –
07/01/2004 02:15 AMBusy process engineers are invited to gain in-depth information and
how-to insight about the semiconductor manufacturing process in a
series of no-cost technical webcast seminars, starting July 22 and
running monthly through December. The free seminars are being
presented by Speedline Technologies, Inc. (www.speedlinetech.com), the
world leader for single-source process solutions for the PCB assembly
and semiconductor packaging industries. [PRWEB Jul 1, 2004]
Free Semiconductor Manufacturing Process
Seminar Webcast, “Lead Free Process
Overview,”: Thursday, July 22, 2004
Free Semiconductor Manufacturing Process
Seminar Webcast, “Lead Free Process
Overview,”: Thursday, July 22, 2004
07/07/2004 02:38 AMFree Semiconductor Manufacturing Process Seminar Webcast, “Lead Free
Process Overview,” Thursday, July 22, 2004, 11 AM to Noon & 2 PM to 3
PM, Eastern Time.Presented by Speedline Technologies. [PRWEB Jul 7,
2004]
Due Process, or No Process: Rule of Law
at Stake
Due Process, or No Process: Rule of Law
at Stake
04/20/2004 09:57 AMOur government insists that it can kidnap a foreign national overseas
and hold him forever in a Guantanamo jail, or put him through a
military trial and even execute him. Oh, the government has made a few
cosmetic concessions to law in its plans for military tribunals. But
note that these are unilateral changes and can be withdrawn at any
time.
Our government also insists that U.S. citizens can be declared enemy
combatants and tossed into jail forever, or tried by military
tribunals (and maybe executed), without access to a lawyer or the
courts. If the court endorses this, it's endorsing despotism.
Designing customer-centered
organizations
Designing customer-centered
organizations
11/11/2003 04:46 AMBlogHer: Woman-centered bl0gger con, Sta
Clara, Jul 30
BlogHer: Woman-centered bl0gger con, Sta
Clara, Jul 30
04/13/2005 03:52 AMCory Doctorow:
The BlogHer conference is a woman-centric conference on blogging to be
held on July 30 in Santa Clara, CA:
BlogHer Conference '05 will provide an open, inclusive forum to:
1. Discuss the role of women within the larger blog community
2. Examine the developing (and debatable) code of blogging ethics
3. Discover how blogging is shrinking the world and amplifying the
voices of women worldwide
Link
(
Thanks, Suzy!)

New version of Microsoft Office for Mac
is well-Centered (USATODAY.com)
New version of Microsoft Office for Mac
is well-Centered (USATODAY.com)
05/19/2004 05:52 AMUSATODAY.com - Office 2004 for Mac, which goes on sale today in
Standard and Student/Teacher editions, is Microsoft's best effort yet
to let everyone from Mac-centric corporate suits to students create
documents, crunch numbers and design presentations that can be
exchanged with folks in the Windows world. Beyond that, Office 2004
includes powerful new collaboration features that let teams work more
productively – if they're all using Macs.
Centered Communication: Webl0gs and
Aggregation in the Organization
Centered Communication: Webl0gs and
Aggregation in the Organization
04/06/2005 06:45 AM
Centered Communication: Weblogs and Aggregation in the
Organizationhttp://incsub.org/blog/?p=336
James Farmer has posted a draft version as well as a
summary of his
Centered Communication: Weblogs and Aggregation in
the Organization. A very interesting read and well worth a visit.
Blogs are now being felt worldwide and business as well as the non for
profit service sectors are beginning to feel the affects generated by
this communication medium and what displacements will be happening as
it takes off! This will be mentioned in my
Bots, Blogs and News Aggregators
presentation.
Pope denounces ``self-centered demands''
for abortion and same-sex unions
Pope denounces ``self-centered demands''
for abortion and same-sex unions
06/05/2004 04:33 AMPOPE BLASTS 'SELF-CENTERED' AMERICAN SOCIETY ANEW .. bottom of that
question .. The Pope has spoken ..
railing
sfgate.com/cgi-bin/article.cgi?file=/news/a/2004/06/04/inter
national1058EDT0538.DTL&type=printable
track this
site | 5 links
Business-Centered Design: The Fusion of
Usability and Marketing
Business-Centered Design: The Fusion of
Usability and Marketing
01/03/2003 06:52 AMCreating patient-centered healthcare
through ambient experience design
Creating patient-centered healthcare
through ambient experience design
12/12/2003 05:37 AMImplementing CSS (Part 1)
Implementing CSS (Part 1)
06/05/2005 11:17 PMOne of the most interesting problems (to me at least) in browser
layout engines is how to implement a style system that can determine
the style information for elements on a page efficiently. I worked on
this extensively in the Gecko layout engine during my time at AOL and
I've also done a lot of work on it for WebCore at Apple. My ideal
implementation would actually be a hybrid of the two systems, since
some of the optimizations I've done exist only in one engine or the
other.
When dealing with style information like font size or text color,
you have both the concept of back end information, what was specified
in the style rule, and the concept of front end information, the
computed result that you'll actually use when rendering. The
interesting problem is how to compute this front end information for a
given element efficiently.
Back end information can be specified in two different ways. It
can either be specified using CSS syntax, whether in a stylesheet or
in an inline style attribute on the element itself, or it is
implicitly present because another attribute on the element specified
presentational information. An example of such an attribute would be
the color attribute on the font tag. Both WebCore and
Gecko use the term mapped attribute to describe an attribute
whose value (or even mere presence) maps to some implicit style
declaration.
A rule in CSS consists of two pieces. There is the
selector, that bit of information that says under what
conditions the rule should match a given element, and there is the
declaration, a list of property/value pairs that should be
applied to the element should the selector be matched.
All back end information can ultimately be thought of as supplying
a declaration. A normal rule in a stylesheet that is matched has the
declaration specified as part of the rule. An inline style attribute
on an element has no selector and is simply a declaration that always
applies to that element. Similarly each individual mapped attribute
(like the color and face attributes on the font
tag) can be thought of as supplying a declaration as well.
Therefore the process of computing the style information for an
element can be broken down into two phases. The first phase is to
determine what set of declarations apply to an element. Once that
back end information has been determined, the second phase is to take
that back end information and quickly determine the information that
should be used when rendering.
WebCore (in upcoming Safari releases) has a really cool
optimization that I came up with to avoid even having to compute the
set of declarations that apply to an element. This optimization in
practice results in not even having to match style for about 60% of
the elements on your page.
The idea behind the optimization is to recognize when two elements
in a page are going to have the same style through DOM (and other
state) inspection and to simply share the front end style information
between those two elements whenever possible.
There are a number of conditions that must be met in order for this
sharing to be possible:
(1) The elements must be in the same mouse state (e.g., one can't be
in :hover while the other isn't)
(2) Neither element should have an id
(3) The tag names should match
(4) The class attributes should match
(5) The set of mapped attributes must be identical
(6) The link states must match
(7) The focus states must match
(8) Neither element should be affected by attribute selectors, where
affected is defined as having any selector match that uses an
attribute selector in any position within the selector at all
(9) There must be no inline style attribute on the elements
(10) There must be no sibling selectors in use at all. WebCore simply
throws a global switch when any sibling selector is encountered and
disables style sharing for the entire document when they are present.
This includes the + selector and selectors like :first-child and
:last-child.
The algorithm to locate a shared style then goes something like
this. You walk through your previous siblings and for each one see if
the above 10 conditions are met. If you find a match, then simply
share your style information with the other element. Such a system
obviously assumes a reference counting model for your front end style
information.
Where this optimization kicks into high gear, however, is that it
doesn't have to give up if no siblings can be located. Because the
detection of identical style contexts is essentially O(1), nothing
more than a straight pointer comparison, you can easily look for
cousins of your element and still share style with those
elements.
The way this works is that if you can't locate a sibling, you can
go up to a parent element and attempt to find a sibling or cousin of
the parent element that has the same style pointer. If you find such
an element, you can then drill back down into its children and attempt
to find a match.
This means that for HTML like the following:
<table>
<tr class='row'>
<td class='cell' width=300 nowrap>Cell One</td>
</tr>
<tr class='row'>
<td class='cell' width=300 nowrap>Cell Two</td>
</tr>
In the above example, not only do the two rows share the same style
information, but the two cells do as well. This optimization works
extremely well for both old-school HTML (in which many deprecated
presentational tags are used) and newer HTML (in which class
attributes might figure more prominently).
Once the engine determines that a style can't be shared, i.e., that
no pre-existing front end style pointer is available, then it's time
to figure out the set of declarations that match a given element. It
is obvious that for inline style attributes and mapped attributes that
you can find the corresponding declaration quickly. The inline style
declaration can be owned by the element, and the mapped attributes can
be kept in a document-level hash. WebCore has a bit of an edge over
Gecko here in that it treats each individual mapped attribute on an
element as a separate declaration, whereas Gecko hashes all of the
mapped attributes on an element as a single "rule." This means that
Gecko will not be able to share the mapped attribute declaration for
the following two elements:
<img width=300 border=0>
<img width=500 border=0>
WebCore creates three unique declarations and hashes them, one for
a width of 300, one for a width of 500, and one for a border of 0.
Gecko creates two different "rules," one for (width=300,border=0) and
another for (width=500,border=0). As you can see in such a system,
you will frequently not be able to treat the identical border
attributes as the same.
Aside from this difference in mapped attribute handling, the two
engines employ a similar optimization for quickly determining matching
stylesheet rules called rule filtering. All rules that are
potentially matchable by any element (i.e., that have the correct
media type) are hashed based on the contents of the rightmost simple
selector in the rule.
A selector in CSS can be either simple (meaning that all of the
contents of that selector apply only to a single element) or compound
(meaning that you may examine multiple elements like parents or
siblings of that element). A compound selector is essentially a chain
of simple selectors, so the following rule:
tr > td { color: blue }
has two simple selectors, tr and td. The
rightmost simple selector in the rule is the one that we will use for
the rule filtering optimization.
The rightmost simple selector falls into four categories.
(1) The selector uses an ID. (Example: #foo)
(2) The selector doesn't have an ID but uses a class. (Example:
.foo)
(3) The selector has no class or ID but specifies a tag name.
(Example: div)
(4) The selector specifies none of these things. (Example:
*[disabled])
The rule is placed into one of four hashtables depending on which
category it falls into. The idea behind these categorizations is to
always filter out more specific information first. For example, if an
element has a specific ID, then obviously any rules whose rightmost
selector uses a different ID cannot match. Technically the last
category can just be a list and not a hashtable, since those rules
must always be examined by all elements.
Each hashtable, therefore, consists of a mapping from a given
atomic string to a set of rules that match. The class attribute is
exceptional in that you must put the rule into the hashtable multiple
times if multiple class attributes are used.
When determining the set of rules that match a given element, you
only examine rules that correspond to the correct hash entry based off
your ID, classes and tag name. This optimization basically eliminates
95+% of the rules up front so that they need not even be considered
during the matching process.
Each rule is then examined in detail, with all selectors being
checked, to determine if it is a match, and the set of matches is
collected. The set of matches can then be sorted by priority and
specificity such that all the declarations are in the proper
application order.
This brings us to the final phase of the style computation, which
is taking the set of matches and quickly computing the appropriate
front end style information. It is here that Gecko really shines.
What I implemented in Gecko was a data structure called the rule
tree for efficient storing of cached style information that can be
shared *even when* two elements are not necessarily the same.
The idea behind the rule tree is as follows. You can think of the
universe of possible rules in your document as an alphabet and the set
of rules that are matched by an element as a given input word. For
example, imagine that you had 26 rules in a stylesheet and you labeled
them A-Z. One element might match three rules in the sheet, thus
forming the input word "C-A-T" or another might form the input word
"D-O-G."
There are several important observations one can make once you
formulate the problem this way. The first is that words that are
prefixes of a larger word will end up applying the same set of rules.
All additional letters in the word do is result in the application of
more declarations. Thus the rule tree is effectively a lexicographic
tree of nodes, with each node in a tree being created lazily as you
walk the tree spelling out a given word.
This system allows you to cache style information at each node in
the tree. This means that once you've looked up the word
"C-A-T-E-R-W-A-U-L", and cached information at all of the nodes, then
looking up the word "C-A-T" becomes more efficient.
In order to make the caching efficient, properties can be grouped
into categories, with the primary criterion for categorization being
whether the property inherits by default. It's also important to
group properties together that would logically be specified together,
so that when a fault occurs and you have to make a copy of a given
struct, you do so knowing that the other values in the struct were
probably going to be different anyway.
Once you have the properties grouped into categories like the
border struct or the background struct, then you can either store
these structs in the rule tree or as part of a style tree that more or
less matches the structure of the document. Inheritance has to apply
down the style tree and tends to force a fault, whereas non-inherited
properties can usually be cached in the rule tree for easy access.
WebCore doesn't contain a rule tree, but it is smart enough to
refcount the structs and share them as long as no properties have been
set in the struct. In practice this works pretty well but is not as
ideal as the rule tree solution.
Implementing XHTML 2.0
Implementing XHTML 2.0
07/27/2004 08:02 PMWell, I slept off most of my desire to blog about XHTML 2.0, but
here's a post anyway. The thing is, I don't think implementing
elements using behaviors is really a good idea, although I feel bad
saying it while the W3C is linking to my test implementation. ?
Implementing Flood Control
Implementing Flood Control
12/19/2004 03:27 PMIf the load of application relies on incoming events, you may
eventually face the happy curse of popularity: too much work to do
with your available resources. If you set a limit on how many events
you can process within a time period, you can avoid the flood. Vladi
Belperchinov-Shabanski explains the algorithm and demonstrates working
code.
Implementing filesystems in Python
Implementing filesystems in Python
12/10/2003 06:35 PMLUFS-Python
provides a relatively simple API for implementing new Linux filesystems in
pure Python. You install the package, write a class implementing
methods for handling filesystem operations such as creating a
directory, opening/reading/writing/closing a file, creating symlinks
etc and finally mount your new filesystem with some special arguments
to the mount command.
At first glance, this is a bit of a gimmick - why would you want to
write your own filesystem in the first place? We've been talking about
this at work and came up with a few ideas. How about a filesystem
where HTML files
saved in a certain directory were instantly run through HTMLTidy and converted in to
valid XHTML ? Or a custom network filesystem that saves
files on a remote server using GnuPG to encrypt them before transfer?
How about a read-only filesystem that lets you browse the contents of
a MySQL database? Just imagine being able to use tools such as
grep and find to search your database. A
module that maps someone elses public web server to your own
filesystem, making mirroring as easy as running a recursive
cp command. A filesystem that updates a swish-e full-text index every time a
file is saved to it - years before Microsoft release Longhorn. The
possibilities are endless.
Here's a really fun idea: a filesystem that implements a dynamic
website. Instead of using tools like mod_python to dynamically create
pages, implement a filesystem that dynamically creates HTML files as they are
requested and set up a stock Apache install with the dynamic
filesystem as the document root. Then point ProFTPD at it so you can log in
via FTP and mess
with your content dynamically. We're thinking about bulding an
FTP interface to our
new database driven CMS, but we could just build a filesystem interface
and point our FTP
server straight at it.
I'm sure there are performance and stability issues that make most
of the above more trouble than it's worth, but I think you'll agree
it's a pretty exciting technology.
Implementing An ADO Data Control With
VB6
Implementing An ADO Data Control With
VB6
06/18/2002 10:19 AMThe ADO data control can save Visual Basic developers hours of time.
In this article Susan shows us exactly how to go about implementing an
ADO control. 5 Free Bonuses!!! "Attention All Web Developers" Now
includes 5 FREE eBooks to help you promote your ConMan website! "This
is one of the best pieces of software that we have ever used. It's
quick, streamlined, and allowed us to have a fully working site packed
with articles in just 3 hours" Ever wanted to run your own content
driven web site? Well now you can with ConMan: the fast, flexible and
secure web site + admin suite. Try it for free!Click here. Get
notified when we post new content: New Forum Threads 1. How do i do
this? 2. C# editor of your choice? 3. Article Added Date 4. ASP
Developer Seeking Employment 5. Hlp pls. - 1 record per page, refresh
through records problem 6. your site was down :( 7. Can't get html
editor to work properly 8. New website & advice 9. mysql tables 10.
Article Type More Forum Threads... Other Recent Articles An
Introduction To The Bulk Copy Utility // by Mitchell Harper - 12th Jun
2002
"Code snippets for implementing tags
with SQL"
"Code snippets for implementing tags
with SQL"
04/11/2005 11:43 PMImplementing a relational database using
MySQL
Implementing a relational database using
MySQL
04/06/2005 12:17 PMWhen properly implemented, a relational database can greatly enhance
the availability of data and information for an enterprise's decision
makers. However, deploying a relational database on almost any scale
requires a thorough understanding of the fundamental concepts and
rules that govern their behavior.
ICANN To Begin Implementing IPv6
ICANN To Begin Implementing IPv6
07/22/2004 02:58 PMWebProNews Jul 22 2004 6:18PM GMT
Gov't could raise P20B by implementing
IP law
Gov't could raise P20B by implementing
IP law
09/14/2004 04:18 PMSun Star Network Sep 14 2004 7:26PM GMT
Hands On: Implementing OS X 10.3
(Panther) Server
Hands On: Implementing OS X 10.3
(Panther) Server
02/10/2004 02:43 AMI can tell you now that everything Apple promised is indeed in there
-- and it works! By Yuval Kossovsky (Computerworld via MyAppleMenu)
Implementing client-side code for SSL in
JDK 1.3
Implementing client-side code for SSL in
JDK 1.3
01/23/2003 02:47 AMCNET Jan 23 2003 1:24AM ET
Implementing XPath for Wireless Devices
Implementing XPath for Wireless Devices
06/06/2002 05:37 PMIn the first of a two-part series, we explore the implementation of
XPath on wireless devices using the WAP family of standards.
Implementing Linux emulation on NetBSD
Implementing Linux emulation on NetBSD
05/13/2004 03:28 AMNetBSD's Linux emulation doesn't run a Linux kernel on a virtual
machine; it runs Linux binaries on a NetBSD kernel. Linux emulation
let you run plenty of useful programs that won't run natively under
NetBSD, such as Sun's 1.4 Java Runtime Environment and JDK.
Poll Position: Implementing Identity
Poll Position: Implementing Identity
04/04/2005 06:03 AMQ: How do you best build a brand?
Implementing XPath for wireless devices
(XML.org)
Implementing XPath for wireless devices
(XML.org)
06/07/2002 08:34 AMHotFix Watch: Programs that are
advertised to a user run when another
user logs on to an SMS 2.0 client
computer
HotFix Watch: Programs that are
advertised to a user run when another
user logs on to an SMS 2.0 client
computer
08/30/2004 05:24 PMRevenge of the User: Lessons from
Creator/User Battles ETCON talk notes
Revenge of the User: Lessons from
Creator/User Battles ETCON talk notes
02/11/2004 04:31 PMHere're my running notes from danah boyd's
Re
venge of the User: Lessons from Creator/User Battles at the
O'Reilly Emerging
Technology Conference in San Diego.
The response is an attempt to "configure the users" -- constrain
behavior to acceptable behavior with messaaging, kicking people
off, etc.
This won't work: you can't tell a hacker not to hack. These kids
are social hackers. You can stop some bad behavior, but you chase
off your best users, too.
Dating doesn't happen because you're in a dating context. Dating
arises out of real contexts.
Taking away fakesters didn't make Frienster more real. Friendster
is unreal because people never remove their friends, even if they
never see them (the exception is when you break up, ironic,
because ex-lovers are strong ties!).
Link
How to deal with packages where user
specific data configuration has to be
user portable
How to deal with packages where user
specific data configuration has to be
user portable
09/11/2004 11:26 PMGrok Description matches for Being User-Centered When Implementing a UCD Process
GrokA matches for Being User-Centered When Implementing a UCD Process
Being User-Centered When Implementing a UCD Process