Phoenix is moving quickly

Wow! The latest Phoenix nightly builds have some terrific improvements (I played with 2002-09-29-15 windows):

  • Customize the toolbars by dragging and dropping the buttons directly on the toolbar (no dialog necessary)
  • Ability to add new toolbars (create a separate one for URL, for example)
  • History, bookmarks, and downloads can now be sidebars (and you can add toolbar buttons to toggle them on and off)
  • In-form field autocompletion as with IE (start typing in a field and it gives you suggestions from previous things you’ve typed)
  • An interesting search box to add to the toolbar (I think I’d rather have a Find button.)
  • Drag and drop bookmarks to the bookmarks menu (This may have been there for a while, but I just noticed it)
  • Did I mention that it’s fast?

Find a saint by name bookmarklet

Chris asked me for a bookmarklet that searches the OCA website for a saint by name. I wrote one and added it to my bookmarklets page. This returns much nicer results than the one Basil wrote. Looks like he didn’t find the search box on the OCA Feast and Saints of the Church Year page, which is more difficult to find than it should be. It appears that his just does an OCA site search, which may be more generally useful.

The Phoenix as Christian Symbol

I’ve enjoyed that the phoenix was chosen as the name for the new browser project. The phoenix myth and the whole “rising from the ashes” idea is fairly commonly used as a metaphor for bringing new life or rejuvenation. Did you know that the phoenix has been used as a Christian symbol of the resurrection since the first century?

In a typical version of the myth, the phoenix is said to have been an eagle-like bird with beautiful red and gold plummage that lived in Arabia. Only one phoenix existed at a time. Every 500 years, as it felt its life drawing to an end, the phoenix would build a nest of frankincense, myrrh, and other sweet smelling woods. When its time was completed, it would set its nest on fire (or the sun’s rays would ignite it) and the bird would be consumed in the flames. Three days later, the phoenix would rise again from the ashes, restored to youth to live out another 500 years.

In another version of the legend, a worm crawls from the ashes and matures into a phoenix. The phoenix’s first task is to embalm the bones of its parent in a ball of myrrh and then carry this to the temple in Heliopolis (the City of the Sun) in Egypt to be buried.

In ancient Egypt, the phoenix, or bennu, was associated with the daily cycle of the Sun and the annual flooding of the Nile. The Romans used the phoenix symbol on their coins to represent both rebirth and the imperishable existence of the empire.

Clement of Rome in the First Epistle of Clement to the Corinthians makes the earliest known connection of the tale of the phoenix to the fact of the resurrection. Clement writes:

Do we then think it great and remarkable for the Maker of all things to raise up again those that have piously served him in the assurance of a good faith, when even by a bird he shows us the mightiness of his promises? For he says in a certain place, “Thou shalt raise me up, and I shall confess unto Thee;” and again, “I laid me down, and slept; I awaked, because Thou art with me;” and again, Job says, “Thou shalt raise up this flesh of mine, which has suffered all these things.”

After Clement of Rome’s epistle, the phoenix story was widely applied in the church as a symbol of apotheosis. Think about the story as you hear the baptismal hymn:

Awake, awake O sleeper,
Arise from the dead,
and Christ will shine on you. (Ephesians 5:14)

Phoenix, Minotaur, and Mozilla

I’ve gotten some questions about how Phoenix relates to Mozilla. Here’s how I see things as an interested bystander that doesn’t have any inside knowledge about the project. (David Hyatt’s quiz may also help you understand the differences between Phoenix and Mozilla.)

The Phoenix Project’s goal is to build the best web browser for most people. The Phoenix readme says “the interface will not be ‛geeky’ nor will it have a ‛hacker-focus’. Nor will it be ‛minimal’.” The project was started and is run by some of the core Mozilla developers that were frustrated by the restrictions and pressures placed on the Mozilla browser. They didn’t like the compromises forced on Mozilla due to marketing and other pressures within Netscape/AOL. They also wanted to work more quickly and with fewer check-in restrictions. In some cases they wanted to experiment with optimizations that may also be applied to the Mozilla code.

Will Phoenix replace Mozilla? Well, I suppose that depends upon what Mozilla means to you. Phoenix currently builds on top of Mozilla and shares a bunch of the code. Most of the changes in Phoenix are related to the user interface (UI), which is the part of the browser that you see and interact with (menus, toolbars, buttons, dialogs, etc.) Phoenix is going to be just a browser, not an entire suite of applications (email, address book, news reader, irc client, HTML editor, slicer-dicer, julienne fry maker). Don’t let that disappoint you, though. The Minotaur Project is working on a standalone mail client. Other Mozilla components will likely be available as add-on extensions.

The developers hope that if they focus on a particular application they will be able to build it better and make better decisions. They recognize the importance of being able extend the application and are planning for it.

Saints and Feasts of the day

Basil asked me for some ideas about how to write a bookmarklet to find today’s saints and feasts on the Orthodox Church in America website. I gave him a few suggestions and then wrote a bookmarklet so he could “check his work”. I simplified and improved the Saints of a Day bookmarklet after he posted about it in his blog. The major change was to make it more robust. It does some minimal input checking and makes sure that the numbers the user entered are zero padded if necessary.

I also created what may be a more helpful bookmarklet: it gets Today’s Readings (also from the OCA website). This gives you the scripture readings and hymns for the day and conveniently provides a link to the synaxarion for the day.

This is a 0.1 release?

On Monday the Mozilla Phoenix project released its first milestone, version 0.1. Download it and try it out. This is a terrific first milestone. Because of its heavy use of Mozilla, this browser behaves more like a 1.0 release in terms of the quality and capabilities of its page layout and rendering. Yes, there are many parts that still need polish, but this is awesome. Keep up the good work, guys.

Of all the things the Phoenix developers are doing, I believe the plug-in/add-on manager is one of the most important. It is getting more difficult for add-ons to integrate into Mozilla, let alone the Gecko-based browsers that they should also work with. In most cases, the add-ons make assumptions about what menus are available and add overlays. I was thinking the other day, what if Windows 95 had included a generic program installer. Every program does similar things when installing. It would have made more sense to just have a standard package format and script for the installer to run. Of course then InstallShield would be out of business and Microsoft would be charging for installs of everyone’s apps. In any case, it would be nice if Phoenix could set up well-defined hooks into the application that mean that the add-on doesn’t need to know much about the menu structure. Microsoft products, especially Word, have had this kind of extensibility for years.

Off the top of my head, here’s a few application hooks that I believe will be important for add-on creators. I’m thinking new menus, new toolbars, and new buttons for specific toolbars will be heavily used, particularly now that toolbar customization is a reality. Event hooks to support things like mouse gestures and context menu changes also need to be considered. I suspect there are more exotic kinds of hooks that haven’t even been considered because nobody’s invented useful things for them yet. For example, I can imagine automatic spell checking of textareas and inputs or adding user page load filters. I’m hoping that Phoenix will provide an elegant mechanism for adding on to the application and managing these add-ons. If they do this right, I hope it can become a part of all Mozilla-based browsers.

The joys of unicode, UTF-8, and form internationalization

I’ve been working on a web app that uses UTF-8 encoding and have been surprised at how little information is available about how to do internationalization that works with all browsers. (A.J. Flavell’s “FORM submission and i18n” article and related charset issues site were quite helpful.) Consider this my small contribution. Here’s the scenario for my app: users can enter a search string and it will search a database for matching entries. The search form includes a few other contols so there are a number of variations and potentially 20 named fields. I only want to show the relevant name/value pairs on the URL if possible. If I submit the form with the GET method, all fields are shown on the URL, even if their values are null, which is fairly ugly. I could use a POST, but then the URL can’t be sent to others and generate the same result. The search is also an idempotent transaction (it is just retrieving data and has no side-effects), so I’d prefer to use GET.

When I submit the form, the search field is properly encoded according to RFC 2279 (which obsoletes RFC 2044). That means that non-US-ASCII characters are converted into a %nn format, where n is a hexadecimal digit. For example, α would be converted into %CE%B1. Since I want control of the resulting URL, I thought I’d use JavaScript’s location.href to set the URL explicitly. I then ran into the problem of how to properly URL-encode the strings. I’d used the JavaScript escape() function in the past to fix up ASCII characters that are not URL safe, but escape() does not handle unicode characters well. In IE, unicode characters are suported, but the function generates a %unnnn format which is not well understood by servers. It would give %u03B1 for the previous example. What to do?

I found the encodeURI() and encodeURIComponent() functions that are new to IE5.5, Netscape 6+, and Mozilla. Thankfully, they do exactly what I want. Now I just need to figure what to do with older browsers such as IE5 and Netscape 4 (forgetting them is not yet an option). I wonder if anyone has written JavaScript code that does this encoding. I suppose I could submit the form and just live with the long URL.

I just happened to think that all my mozilla and IE5.5 bookmarklets should probably be converted to using encodeURIComponent() instead of escape(). That would allow searching for non-ASCII characters.

Is it a Phoenix bug?

I’ve been trying out the latest nightly of Phoenix and was about to complain that form scrollbars were broken. Turns out that bug 170184 is undoubtably the cause. Sharing most of the codebase with the Mozilla trunk has many advantages, but running into this kind of problem when you’re trying to release a milestone has got to be frustrating. Since Phoenix contains so much of Mozilla, determining where a bug is may be challenging. At least they’re in the same bug tracking system so it will be easy to move them if they’re incorrectly classified.

Even with CSS, frames suck

Asa has apparently decided it is a good idea to ignore or downplay complaints about the usability of his blog. He writes:

Some folks are complaining that my site doesn’t provide the same experience for folks on low-resolution systems. They’re right…. If … you can’t cope with the links over to the left not all showing up in your browser because your resolution is archaic then you’re in luck. I’ve constructed a special version of this site just for you.

[He then provides a link to view the source of the page.]

What he describes is a common problem with framed pages: web designers will set frames to have no scrollbars and just pretend that everyone uses the exact same screen resolution and font sizes that they do. This frequently causes inaccessible content just like that seen in Asa’s blog. But Asa isn’t using frames, he’s using the shiny new CSS (validated no less!) that is supposed to cure world hunger and bring world peace. Or something like that.

The problem is that CSS position: fixed elements (those blocks that act like frames) get overflow: visible by default. If they had overflow: auto they would get scrollbars when necessary. Asa could easily fix his blog by adding overflow: auto to the .leftcontent class in his style sheet. I hope he does. I understand people blog for the fun of it and that you can’t please everyone, but this is a trivial change that doesn’t fundamentally change his design.

It troubled me that at least with old framesets, if you didn’t do anything special, the default was to get scrollbars automatically if they were necessary. With the CSS replacement, you now need to add both position: fixed and overflow: auto to get the same behavior. I suspect that many designers using position: fixed will, because of ignorance, arrogance, forgetfulness, or by design, omit the overflow: auto and therefore create sites that have accessibility problems. This prompted me to file bug 164983. Too bad this isn’t a technically feasible solution. In bug 105796 mpt made a similar suggestion which would also help with frames.

I find it ironic that because IE doesn’t apparently support position: fixed, Asa’s blog is more usable in IE.

High Bridge walking tour

I found a terrific article describing High Bridge in 1940. The article takes you on a “walking tour” around the village and tells you about the people and places you’d have seen at the time. The map related to the article is apparently missing, but even without it you can generally find your way around. The article is from the April 2000 issue of Kentucky Explorer magazine. As I continue to work on the rail-trail, I love finding out more about the history of the area.