SIL International has many interesting articles about writing systems. Here are a few:
- Rendering technologies overview
- Complex rendering
- Introduction to Unicode and part 2
- Challenges in publishing non-Roman scripts
- Character encodings
- African characters and variants
I found the site last night while looking for information about Unicode
U+2024 ONE DOT LEADER, which was referenced in an article about mdash, ndash, hyphens, and other typographical characters in HTML. SIL’s site promised me “here is the true story of U+2024.”
- Do It Now: an article about being more productive
- Beautiful Soup: an HTML/XML data extractor (in Python)
- Branch to the Right: an article about writing (one of fifty; I will not read them all this weekend)
- Country Codes used by various organizations; I found this while trying to understand Great Britain (GB) vs. United Kingdom (UK), why ISO assigns the code
GBto the United Kingdom (ick), and why the top level domain for the United Kingdom is
.gb(since it’s supposed to match ISO)
- Getting the most out of water
- Michael Jordan’s choice of shoes
- What ails Viktor Yushchenko: disturbing images (more pictures at the BBC) showing the effects of being poisoned
- Typography on the web: mdash, ndash, ldquo, rdquo, lsquo, rsquo, nbsp, and more
For those of you who aren’t yet scared of Python, maybe these will help:
Recipe 299,777: subclass
self.__dict__to point to
self. I can’t believe this really works. For those of you wondering:
__dict__points to a dictionary that contains the fields of an object. By making a
__dict__point to itself, it exposes all of the dictionary’s mappings as fields of the dictionary itself. Ooh it’s all twisty.
Recipe 66,531: make a Singleton by having all instances share the same
__dict__. Normally you make a Singleton class that constructs only one instance. Here instead you allow lots of instances, but make them share state. Brilliant.
- Recipe 303,057: intercept name lookup in a specially marked method to provide Prolog-like functionality in Python. This uses Python 2.4 decorators to intercept method definition. It inspects the methods, finds out what names it refers to, and points those names at Prolog-like variables. I don’t quite follow everything going on in this recipe, but I like it!
I found these on Oliver Steele’s post about Python becoming Lisp. I studied Scheme, not Lisp, and I have to say that the above examples are not Schemish. Python has its own flavor of demonic insanity.
Computer people like hierarchies. File system folders, HTML/XML/SGML, Java packages, class hierarchies, Usenet groups, the Windows registry, domain names, IP address assignment, software version numbers (1.1.5 comes before 1.10), GUI widget container hierarchies, URL paths, and hierarchal menus are some examples. Hierarchies are expressed using tree data structures, and trees are pretty cool. So we tend to want to use them when we see a new problem. It’s a structure taught to all computer scientists. It’s an old familiar friend.
Sometimes a tree isn’t the best structure for the problem. On the Internet you see some things that are not hierarchies, like email addresses (user@domain), the web (a directed graph structure), and IP routing tables. Sriram’s post got me thinking about overusing tree structures, and in particular, the
A <i> b <b> c </i> d </b> e problem in HTML.
HTML uses a containment model: when you write
xyz is contained “inside” the
abc element. In a containment model,
A <i> b <b> c </i> d </b> e is an error. In contrast, Emacs and XEmacs use an overlay model. Instead of a containment relationship, an overlay is attached to any span of text, and overlays can overlap. In an overlay model,
A <i> b <b> c </i> d </b> e should be rendered A b c d e. There’s no problem. The text selection is also something that is hard to express in a tree structure. It’s just another overlay in Emacs.
But overlays don’t seem to be the right fit for larger structures, like paragraphs, sections, documents. For those containment makes more sense. Within a block however, overlays make sense. I think the difference may be between things that can be nested (a
div can be inside another
div) and things that can’t (it makes no sense to put an
i inside another
i), but I’m not really sure.
An argument can be made that supporting
A <i> b <b> c </i> d </b> e properly at the expense of no longer having a uniform model (which is used by DOM, XSLT, etc.) isn’t worth it, but that argument should be made explicitly. Every use of a tree structure should be justified, because there is a natural bias towards trees among computer folk.
I’ve before never noticed the hidden arrow in the FedEx logo. Now that I’ve seen it, I’ll never forget it.
I am quite impressed that they left it subtle instead of highlighting it. It reduces the short-term impact but is much cooler in the long term. Things that take some effort or luck to notice are the things that people will remember. If it’s easy to see, it’s easy to forget.
- Energy saving ideas
- Anti-Grain Geometry: a high quality 2D graphics library
- Matplotlib: a plotting package that produces incredibly pretty plots
- XmlHttpRequest and REST.
- Get Happy Product: a wonderful film I saw a few years ago. I love the animation, the music, the story, the Happy Product. Go watch it.
For a few years now I’ve been wondering what subjects I would have liked to learn in high school. I got very little out of Literature or History, but I love learning history from The History Channel. Typing was a great class. I hated it at the time but it has been quite a valuable skill. Physical Education (a.k.a. Gym) made me hate exercise. :-( I’m quite happy I took Math and English. Two subjects I wish were mandatory:
- Personal Finance: Balancing your checkbook, keeping out of debt, the value of saving (compound interest!), the cost of borrowing (compound interest!), risk/reward, ways to keep and save your money (checking accounts, savings accounts, brokerage accounts, CDs, money market, stocks, bonds, mutual funds, etc.), ways to pay for things (cash, checks, check cards, debit cards, smart cards, credit cards, paypal), what insurance buys you (reduced risk), and so on. Marginal Revolutions has a post about educating people on these topics.
- Advertising: The power of brands, strategies and tactics used in marketing (celebrity endorsements, infomercials, glamour/macho, misdirection, etc.), analysis of commercials (have the kids watch TV and then discuss the commercials), sales & bargains, price discrimination (name brands vs. generics, for example), fashion, seasonal pricing, sneaky deals (“sign this check for $3.00 and you agree to subscribe to our service ”), bundling, cross-product promotion (American Express promotes MCI, MCI promotes Continental, Continental promotes American Express), sales tactics/psychology, ways to compare products (UL, Consumer Reports, epinions, newsgroups), etc.
I think these two subjects would help people much more than most of the traditional subjects taught in school.
When two prices are charged, people paying the higher price (often in the United States) believe that if the firm were forced to charge one price, it would charge the lower one. Unfortunately, that is not always the case. Sometimes mandating a single price results in just choking off the small market, rather than lowering the price in the large one.
—from Leveling costs worldwide is not cure for drug prices (DemocratAndChronicle.com)
One of the fun things you can do is alter the way Firefox (or Mozilla or Galeon) displays web pages by using custom CSS. Today I changed userContent.css to add these rules:
You can pick lots of fun shapes and symbols from Alan Wood’s Unicode page (note: there are lots more pages on his site with lots more symbols). To use a different symbol, just put in its Unicode hexadecimal value in the CSS, with six hex digits (i.e., use a leading
I don’t know if I will keep these customizations, but it’s fun to play with. You can put any text or the value of any attribute before or after any HTML element. Mix this with hover effects for lots of fun! Opera users can also have fun with generated counters (for example, to number all the links on the page).
- Windows cursors: I like this set because the bright red helps me find the mouse pointer.
- Mood Foods: how foods can affect your mood.
- Laser Pod: looks like a cool toy.
- Time Management: tips for getting more done.
- Vision Research: pattern recognition, Bayes, hierarchies.
- Global Ideas Bank: a site full of ideas.