Latte art, part two
Grok Headline matches for Latte art, part two
Latte art
Latte art
04/25/2004 11:07 AM
Cool blog about the designs
baristas
can make in the foamy milk that sits on top of your caffe latte. My
favorite coffee hang in Los Angeles is
Urth (even though I can
never get a table), in part because their coffee is dark, sweet,
earthy, and delicious -- and in part because the guys who make it draw
little hearts and zigzags in the foam.
Link (
Thanks,
Jean-Luc!)
A Face in your Latte
A Face in your Latte
04/27/2004 04:44 AManother
heraldsun.news.com.au/common/story_page/0,5478,9301012%255E2
862,00.html
track this
site | 4 links
Double Choco Latte XSS
Double Choco Latte XSS
08/05/2002 10:44 PMDouble Choco Latte 0.9.4
Double Choco Latte 0.9.4
12/14/2003 02:47 PMSoftware Configuration Management/Bug/Enhancement Tracking Software
Double Choco Latte
Double Choco Latte
12/14/2003 01:15 AMDouble Choco Latte 0.9.4 Released
"latte art - a photoset on Flickr"
"latte art - a photoset on Flickr"
03/25/2005 11:35 AMDouble Choco Latte 0.9.4.1
Double Choco Latte 0.9.4.1
01/02/2004 12:02 AMSoftware Configuration Management/Bug/Enhancement Tracking Software
Latte foam art snapshots
Latte foam art snapshots
03/17/2005 03:55 AMXeni Jardin:

A most excellent gallery: designs in the milk foam on top of espresso
drinks.
Link
(
Thanks, glady).
Previously: Latte
art, and La
tte art part 2.
latte art - a photoset on Flickr
latte art - a photoset on Flickr
03/19/2005 02:18 AMlatte art images
flickr.com/photos/tonx/sets/48921
track this
site | 6 links
Summa Cum Latte at Starbucks
Summa Cum Latte at Starbucks
06/22/2005 01:49 AMA law school tries to warn its legion of student Starbucks fans to
back away from the coffee.
Andrew Stopford's the man for Rotor
latte
Andrew Stopford's the man for Rotor
latte
12/15/2003 11:44 PMAndrew Stopford wrote a book on PHP on Windows, but he's addicted to
Rotor latte nowadays. He's sipping on hot .NET and CLR expresso on his
blog. I read it to find out what's happening in the .NET world. Great
brewing, Andrew!

Latte art, decorated cappuccinos,
cappuccino
Latte art, decorated cappuccinos,
cappuccino
04/25/2004 03:17 PMpour good latte art .. l'Art du lait
latteart.org/latteart.htm
track
this site | 3 links
While Sipping a Latte, Lap Up Your
Favorite Show
While Sipping a Latte, Lap Up Your
Favorite Show
06/17/2004 01:05 PMA tuner that picks up broadcast signals and plugs into the
CompactFlash slot of compatible Pocket PC's allows users to watch
local broadcast programming on the small screen.
Double Choco Latte 0.9.4.3 (Default
branch)
Double Choco Latte 0.9.4.3 (Default
branch)
03/24/2005 05:24 AM

Double Choco Latte is a system for tracking bugs, changes,
enhancements, requests for software. The system is suited for multiple
products and multiple accounts (clients). It is also known to handle
call center activity, although this will evolve into a separate
module.
Changes:
An arbitrary PHP code execution vulnerability was
reported and fixed. All users are urged to upgrade
to this version.
A Tempest in a Latte: Starbucks Too
Opinionated for Some Wingers 3/26
A Tempest in a Latte: Starbucks Too
Opinionated for Some Wingers 3/26
03/27/2005 04:56 AMConservatives protest "liberal" Starbucks coffee cup sayings .. St.
Petersburg
Times
sptimes.com/2005/03/25/Business/Coffee_with_steam.shtml
track
this site | 4 links
Delonghi Magnifica
Espresso/Cappuccino/Latte Machine
Delonghi Magnifica
Espresso/Cappuccino/Latte Machine
04/12/2005 07:44 AM
Gizmodo is powered more by
coffee than any other (non-Class 2) narcotic, so we have a vested
interest in any gadgets that can bring a better cup to our lips each
morning. Enter the Delonghi Magnifica: Simply pour some fresh coffee
beans into the machine, add your water and your milk and press the
button and you're off to the espresso, cappuccino or latté
races. It has a sleek, austere design and will make a welcome addition
to any kitchen counter. It's available for $900, but with this level
of convenience and versatility, some may find it a worthwhile
investment indeed.
Product/Catalog Page ($900, in stock) [Delonghi
via CoolHunting]
Double Choco Latte Remote Code Execution
Double Choco Latte Remote Code Execution
04/09/2005 05:51 PMPosted by JeiAr, Apr 08 2005
John Lautner's Chemosphere: part
Jetsons, part Bond and vintage L.A.
Modern.
John Lautner's Chemosphere: part
Jetsons, part Bond and vintage L.A.
Modern.
04/07/2005 12:53 PM
The most modern home built in the
world. "From the outside it looks
like a spaceship you cannot enter. But if
you go inside, it feels very cozy… very Zen and calming. Maybe
because you are
floating
above the city, in the sky".
John Lautner's
Chemosphere residence is the product of a
fortuitous union of
architect, client, time and place.
Leonard Malin was a young
aerospace engineer in late-1950s L.A. whose father-in-law had just
given him a plot north of Mulholland Drive, near Laurel Canyon. The
only catch: at roughly 45 degrees, the slope was all but unbuildable.
Lautner sketched a bold vertical line, a cross, and a curve above it.
"Draw it up," he told his assistant.
Now publisher
Benedik
t Taschen owns Chemosphere (NSFW), and after 20
years of neglect the house has been beautifully
restored
(.pdf) by
Frank
Escher.
New Form of Internet Fiction is Part
Story, Part Game
New Form of Internet Fiction is Part
Story, Part Game
06/05/2005 10:52 PMInternet startup City of IF today launched a web site dedicated to
“storygaming” – a new form of storytelling over the Web. Storygaming
is a unique combination of storytelling and computer games in which
players cooperatively play characters in a story guided by a human
author. [PRWEB Jun 2, 2005]
Part Butler and Part Buddy, Aide Keeps
Kerry Running
Part Butler and Part Buddy, Aide Keeps
Kerry Running
04/28/2004 12:17 AMMarvin Nicholson Jr. is the man literally behind Senator John Kerry,
ready with an uncapped bottle of water whenever Mr. Kerry's throat
runs dry.
Into the Itanium, Part 2
http://www.devhardware.com/c/a/Computer-
Processors/Into-the-Itanium-Part-2/ In
our la
Into the Itanium, Part 2
http://www.devhardware.com/c/a/Computer-
Processors/Into-the-Itanium-Part-2/ In
our la
12/27/2004 01:08 PMDevHardware Dec 27 2004 4:25PM GMT
Do your part
Do your part
12/02/2003 01:09 AM Fight AIDS @home is
a valuable resource for your "wasted" computer cycles.
Instead of search the universe for
extraterrestrial life,
shouldn't we be searching our world for cures to our own diseases?
Ask EA Part 4
Ask EA Part 4
07/11/2004 06:34 AMshacknews.com/onearticle.x/32582
track this
site | 3 links
part one
part one
09/24/2004 03:06 AMgoldsteinhowe.com/blog/files/VFPart1.pdf
track this
site | 3 links
"37 CFR Part 201"
"37 CFR Part 201"
10/30/2003 03:49 PMGrr, part II
Grr, part II
12/30/2003 06:26 PMHa! Two more victories today! Five wins out of six games... One more
win and I might get a prize!
And by the way - if it's dangerous to go into a DVD sale in Anttila,
it is twice as much dangerous to go to a DVD sale in Tower Records in
London... I was seriously tempted to buy the entire Fawlty Towers,
but managed to resist the tempation after picking up some interesting
bargain stuff like both Tetsuos and Holy Grail (and what do you mean
by "odd combination"?)
"Part 1"
"Part 1"
02/14/2004 03:42 AMYou are who you know: Part 2
You are who you know: Part 2
06/16/2004 12:23 AMSalon Jun 16 2004 4:11AM GMT
Grr, part III
Grr, part III
12/31/2003 06:11 PMWhee! Seven wins out of eight games - I even beat a dan-grade player.
I got a certificate and a prize and everything :).
This was a good way to end the year. See you in 2004.
(And yeah, it's really 2003 as I'm writing this. Timezone differences
schmisserences)
Implementing 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.
Zap Annoyances on the Web, Part II
Zap Annoyances on the Web, Part II
04/30/2004 05:05 AMUsing AdZapper to block many ads and Web bugs.
All I want for Christmas is... part I
All I want for Christmas is... part I
12/23/2003 11:46 AMComputer Shopper Dec 23 2003 10:31AM ET
Normalizing XML, Part 1
Normalizing XML, Part 1
11/13/2002 08:10 PMWill Provost's XML Schema Clinic series takes a look at the relational
features of W3C XML Schema, applying the concepts of relational
normalization to schema design.
The Best of 2004: Part 1
The Best of 2004: Part 1
01/04/2005 01:08 PMTechTree Jan 4 2005 5:07PM GMT
XML canonicalization, part 2 (XML.com)
XML canonicalization, part 2 (XML.com)
10/11/2002 07:56 AMZPT Basics (part 4)
ZPT Basics (part 4)
10/31/2002 06:32 PMIn this concluding article, get up close and personal with
METAL, the macro language that allows you to add reusability to your
Zope templates.
Photoshop FAQ -- Part Two
Photoshop FAQ -- Part Two
09/08/2004 02:39 PMG4 Tech TV Sep 8 2004 7:12PM GMT
OLAP and DW (Part 4)
OLAP and DW (Part 4)
01/06/2005 11:36 AMZap Annoyances on the Web, Part I
Zap Annoyances on the Web, Part I
04/29/2004 06:32 AMGet rid of annoying Web marketing and protect your privacy, using both
the browser and a proxy server.
Grok Description matches for Latte art, part two
GrokA matches for Latte art, part two
Latte art, part two