sources

456 Berea Street

FileVault can cause default applications to reset in Mac OS X 10.5

Thu, 2009-03-12 14:39

For quite some time I’ve had this very annoying bug on my office Mac. Every time I rebooted, all default applications were reset. Text files would open with TextEdit, HTML files with Safari, .aspx files with iCab (yes, really), and so on. Extremely annoying.

Well, it took me a while but I finally figured out that the problem was caused by FileVault. In case you’re having the same problem, here’s more detailed info:

It seems like there are two workarounds until Apple fixes this bug – disable FileVault or run a shell command that does some magic to Launch Services at startup. Check the discussions I linked to for the command.

Posted in .

Categories: Mac

Screen reader testing

Tue, 2009-03-10 13:47

Though as a sighted user I find it very difficult to fully grasp what it’s like for a blind or severly vision impaired person to browse the Web with a screen reader, I still think it’s quite useful to spend some time with a few screen readers.

If nothing else it gives you some kind of idea of the kinds of problems you run into when you can’t see the website you’re visiting. Having access to screen readers is also important for testing that the sites you build don’t create unnecessary obstacles.

Installing and setting up screen readers can be a bit tricky though, so the instructions Todd Kloots provides in Configuring Your Machine For Testing With A Screen Reader will come in handy for many.

As long as you have access to some kind of virtual machine software (Virtual PC, VMWare Fusion, Parallels Desktop and Virtual Box are a few options) and Windows, following the steps in the article will help you get the JAWS, Window-Eyes, and NVDA screen readers set up and ready for testing.

An article with similar tips is Henny Swan’s Setting up a screen reader test enviroment.

Posted in .

Categories: Accessibility

European Accessibility Forum Frankfurt

Mon, 2009-03-09 14:56

An interesting conference that is coming up soon is the European Accessibility Forum Frankfurt that will take place in Frankfurt, Germany on 27 March 2009.

There are many well-known accessibility names among the speakers who will discuss the following topics:

  • Accessible Web Applications
  • Mobile Access – Device-independent or Accessible?
  • Comparison of National Accessibility Guidelines
  • Accessible Rich Internet Applications (ARIA)
  • Web Standards and Accessibility in Higher Education
  • Harmonising European Accessibility Guidelines
  • The Business Value of Accessibility

If you can make it to Frankfurt on 27 March, register while there are tickets left.

Posted in .

Categories: Accessibility

A List Apart

The Elements of Social Architecture

Sat, 2009-02-28 19:15
While our designs can never control people, they can encourage good behavior and discourage bad. In this excerpt from Information Architecture: Blueprints for the Web 2nd Edition, Christina Wodtke tells us how to make products that delight people and change their lives by remembering the social in social architecture.

Fluid Grids

Sat, 2009-02-28 07:02
How awesome would it be if you could combine the aesthetic rigor and clarity of fixed-width, grid-based layouts with the device- and screen size independence and user-focused flexibility of fluid layouts? Completely awesome, that's how awesome. And with a little cunning and a tad of easy math, ALA's Ethan Marcotte gets it done. We smell a trend in the offing.
Categories: css

In Defense of Readers

Sun, 2009-02-15 13:42
As web designers, we concern ourselves with how users move from page to page, but forget the needs of those whose purpose is to be still. Learn the design techniques that create a mental space for reading. Use typographic signals to help users shift from looking to reading, from skimming along to concentrating. Limit distractions; pay attention to the details that make text readable; and consider chronology by providing transitions for each of the three phases of the online reading experience.
Categories: Community

A Test Guy

CubicTest, with pictures

Sun, 2009-02-08 20:19
In a recent post, I mentioned that I was planning on writing a test in CubicTest to help refactor an IP address validator web page. I finished the test, and fixed the script. My overall impression is that CubicTest is fairly straightforward, and I have not yet used it to its strengths. I still want to [...]
Categories: testing

OSTATLI a success, and a lot of fun

Fri, 2009-02-06 13:49
Yesterday, I was one of the attendees at the Open Source Test Automation Tool Love-In, hosted by Elisabeth Hendrickson at the QualityTree offices here in the Bay Area. Other attendees included Dale Emery, Chris Sims, Jeffrey Frederick, Ken Pier, and Kevin Lawrence. We chatted a bit about test automation philosophy, told war stories, and played [...]
Categories: testing

Test Data Management

Wed, 2009-02-04 17:08
A quick hint about managing test data for “enterprise” applications. Does the application under test rely on a large central database? If so, is that large central database backed up on a regular basis? If so, can you get access to the backup files? For some testing tasks, it might be easier to just load a new database instance [...]
Categories: Uncategorized

Airbag Presents: Longboard

Ego.

Wed, 2009-03-11 16:21
It needs a mirror option.
Categories: Apple

PeopleBrowser should be called StalkerBrowser.

Wed, 2009-03-11 16:15
Please don't let me see you using anything like this or I'll have to take your laptop away from you.
Categories: Previously

Alazanto

Fragment 1

Tue, 2005-12-20 01:15
My steps followed smatterings of heating oil in the corridor: the knee-jerk pulse of hanging lamps lifted those smatterings' scent to me.
Categories: Fragments, Literature

Compatible

Tue, 2005-12-13 09:33
The site should finally display correctly in IE6 for windows. IE5 support is strong, but has some very odd rendering issues in the comments area that I will deal with at a later time.
Categories: Points of Novelty

Together We Sit

Sun, 2005-12-11 23:49
Overhead the sunlight glitters through playful pines.

alex.polvi.net

Free Culture Conference in Berkeley, Oct 11th & 12th

Fri, 2008-09-26 14:35
Mozilla’s own John Lilly will be teaming up with Prof. Lawrence Lessig and Prof. Pam Samuelson to key-note (yep, 3 different keynotes) at the first ever Free Culture Conference. If you’re available October 11th and/or 12th, I would highly recommend you check it out! Should be a great conference. I’m particularly excited to meet up [...]
Categories: Mozilla

10 years of Hampster Dance + 10 years of Mozilla

Fri, 2008-08-22 17:35
As a parting contribution to Mozilla, I offer you this! http://foxkehdance.com/ Thanks to Robert Hrdinsky (his idea!) and Ulili Onovakpuri for making this happen. God speed, Hampton.
Categories: Mozilla

Polvi.next

Fri, 2008-08-08 02:35
In a weird mix of sorrow and excitement, I’d like to announce that I have chosen August 22nd as my last day with the Mozilla Corporation. While you may not have to deal with me in the office anymore, you’ll still have to deal with me in the community! :) Shipping Firefox 3, 2, and 1.5 [...]
Categories: Mozilla

all in the head

Supersleight jQuery Plugin for Transparent PNGs in IE6

Thu, 2009-03-12 12:48

I never meant to become obsessive about getting PNG transparency working nicely in IE6. In the summer of 2003, I hit across a situation on a client project where what the designer wanted required the use of PNG transparency. The script that came to hand to get this working in IE6 at the time was called Sleight, but that only dealt with applying the filter to IMG elements. My design needed to do the same for CSS background images, so I hacked up a different version of the script for that purpose, called it bgSleight, and occasionally updated it.

Back in late 2007, I gathered up the work I’d been doing on bgSleight along with updates from Aaron Boodman’s original Sleight script and wrote Transparent PNGs in Internet Explorer 6 over at 24ways. In the article I go into some depth about the issues and the pitfalls of using an IE filter, so it’s a useful background read. Included with the article was a script I called SuperSleight which attempted to wrap up both my work and Aaron’s into a single script that made PNGs work in IE6, regardless of them being applied with CSS or HTML IMG tags.

Despite some efforts to make my script play nice and integrate with other JavaScript that may be in use on the page, a lot of users still found the script problematic. Whilst I was checking for existing onload event handlers in the page before adding mine, other scripts don’t necessarily do that and so could overwrite my event handler causing the script not to work. Not my fault, but still not good for those with the problem.

With the rise of JavaScript libraries over the last couple of years, the ecosystem has got a lot more friendly. Rather than having a page running a mishmash of different scripts running in different methodologies, the adoption of a library brings with it shared methodology and infrastructure. That means you can do things like set an onload handler and not worry that your code will not get executed – the library is managing that across all the JavaScript that may be on the page. This also means that there’s a lot less code that needs to be written per-script, as you can tap into what the library already has on offer. So it made sense to me to re-implement SuperSleight using a common JavaScript library.

The Plugin

I personally use jQuery in my work, and its widespread use and solid plugin architecture made it a good choice.

Download SuperSleight for jQuery (current status: beta)

You apply it to a section of the page like this:

$('#content').supersleight();

Of course, if you wanted to fix PNGs for the entire page, you can just apply it to the body element. For all sorts of reasons, it’s better to be specific if you can.

$('body').supersleight();

This can be safely reapplied after importing a chunk of HTML via an Ajax request (something I end up doing a lot), and it uses jQuery’s browser detection to only apply it to the appropriate versions of IE, so it’s safe to deploy for everything, or to include inside some Conditional Comments as you prefer.

As always, the script requires the path to a transparent GIF shim image. By default, and almost by tradition with this script, that’s x.gif, but you can specify any image you like:

$('body').supersleight({shim: '/img/transparent.gif'});

Other possible configuration values are imgs and backgrounds (both boolean, default true) to tell the script which PNGs to fix up, and apply_positioning (boolean, default true) to tell the script not to try and fix up some of the bugs around unclickable links. (See the 24ways article for more info on that).

As always, this is a work in progress, and I value any feedback on technical issues, ease of use or style. I’ve labelled the plugin as beta, because although it’s tested it could always use more. I need to thank Brad Wright for his valuable input so far. I welcome yours.

The Cost of Accessibility

Wed, 2009-02-25 11:57

As a web developer, there’s little I dislike more than building sites to be accessible. Making sure we don’t build dependancies on JavaScript, making every widget work with a keyboard and not just a mouse, making sure that everything can resize without the layout breaking; it’s all a royal pain in the backside. Get it wrong and make a mistake and a whole bunch of ‘experts’ (who don’t even rely on the technology themselves) will whinge at you something awful.

We still do it, however, and we do it because it’s the right thing to do. Like paying taxes or putting the trash out, there are things we do in life that aren’t much fun but are incredibly important. Fail to do them and our collective quality of life is diminished. So as much as I find it an unpleasant chore, I’m firmly committed to building sites that can be accessible as I can make them.

The cost of this can be high, however, and the source of the cost is twofold. Firstly we need to consider the time it takes to thorough implement and test features in an accessible way. Whilst it’s true that a straightforward site build shouldn’t (and if done well, doesn’t) take any longer to do well than do badly, when we get into more complex UI territory with web apps there is certainly an overhead involved. But that’s fine, it takes time to do a high quality job in any field of work.

The other cost is the cost of progress or the cost of our resistance to progress. In our effort to provide an equivalent experience to all of our audience and to not build dependancies on JavaScript in particular, we have made the implicit decision to limit ourselves to a fairly basic set of technologies and working methods. Shed this requirement, and a whole world of possibilities opens up.

The Magical World of JavaScript

A big challenge we face as web developers is dealing with unknown variables. We don’t know what sort of browser is being used, what its CSS capabilities are, how big the window is, what size the fonts are set at and so forth. Further to this, many of those variables can change once the page has already been rendered – the window can be resized, the font sizes changed and so on.

As neither HTML nor CSS is a programming (or scripting) language, we lack the basic principal of conditionals. In all but the most basic of scripting languages a construct is available to say if this condition is met, do this. We can’t do that in HTML or CSS, despite having many ifs, whys and whats to contend with. As such we have to build very defensively, with a very basic set of options available to us.

Once we’re happy to depend on JavaScript, all this is no longer a problem. Most of the challenges we face working in a browser environment with CSS are trivial to solve because we can measure what’s happening on the page and with the window and manipulate both our markup and styling to respond to the situation. Centre in the browser window? No problem! Equal height columns? Easy!

Of course, there are still differences with how the situation is tested, measured and corrected between different browsers, but these are fewer with each new browser release, and can be centrally addressed and abstracted by JavaScript libraries. After some work, this leaves us with a web environment more akin to that of a predictable and capable desktop application.

Enter Cappuccino and Atlas

This is the space that the Cappuccino framework operates in. The team behind Cappuccino, 280 North bill it as a framework for building “desktop-caliber applications that run in a web browser”. They certainly seem to deliver on that promise, too. Just take a look at their demonstration 280 Slides product – an amazingly desktop-like tool in the style of Apple Keynote. This stuff is mind-blowingly cool.

By deciding to remove the constraint and build with a dependancy on JavaScript, along with doubtless hard work, creativity and programming skills, the 280 North guys have been able to push the technology way beyond what everyone else is able to do day-to-day on the web. They’ve built something that is more like a desktop app than we’ve yet seen on the web. But view source and you’ll see that this really is more than a change in conceptual approach, it’s quite a departure on a technical front, too.

Yesterday at the Future of Web Apps in Miami, 280 North announced and demonstrated their upcoming drag and drop IDE for the Cappuccino framework, called Atlas. It’s worth spending a few moments viewing the preview video over at their site – this really is an amazing piece of work. Just like using Interface Builder or Visual Studio to create the UI for a desktop app, users can drag and drop components into place in a window, set how they behave and bind data and interactions to them. It’s all very cool.

The resulting application is a real departure from what we know today as a web app. View source and you’ll find that the entire thing is generated with that dependancy on JavaScript.

A Different Environment

Let’s say we were to make the decision that’s it’s ok to depend on JavaScript for all the advantages that brings. The few users who have JavaScript disabled will have to enable it, and those who don’t have the option to enable it, well they can’t ride. You could then go ahead and build a really nice interface with all the bells and whistles required.

The important thing to understand about desktop software is that when you place a button on the screen in Interface Builder, the operating system knows it has a button. It has predefined behaviours, it responds to the keyboard and mouse, and there are underlying APIs for assistive technologies to hook into to read and activate the button. On the web we have none of that available for free. If we build a custom widget, even something as simple as a button, we might use a few images for the visual representation and then hook up an onclick event to catch the user clicking on it. If we’re being thorough, we’d also set the mouse over, mouse out, key down, key up and hover states too. What we’d have, however, would still just be some images with events on them, causing them to behave like buttons. The crucial missing part is that nothing else knows they’re buttons. That includes the browser and any assistive technology. Whilst the page might look right, it’s not going to work well outside mainstream use-cases.

A big advantage of using a framework, of course, is that you can solve all these problems once. Desktop software developers don’t need to care about how to build a button because the operating system has figured that out for them. So it must be for the web. If a framework like Cappuccino or any other is to implement its interfaces using none standard, JavaScript-dependant techniques, then it must ensure that those interfaces are fully accessible when JavaScript is available. If we want to use this stuff, we – and I do consider this a collective responsibility – have to figure out how to make it work properly, for everyone. Before we can do that, the guys at 280 North need to accept that this is a necessity.

Shortly after the announcement of Atlas at FOWA, Ryan Carson tweeted that it was going to change the web industry forever. Atlas could, in fact, change the way we develop web apps. 280 North currently have the rare opportunity of determining whether that change is for the better or for the worse.

HTML and Web Standards Training

Mon, 2009-01-12 10:31

Since we began running our CSS beginners course last year, we’ve had a number of requests for an entry-level course on using HTML and web standards principals in general. It makes sense, as a working knowledge of basic HTML is really needed to take full advantage of the instruction we offer on CSS. So we’ve put one together.

It’s a one-day course in which we’ll be covering all the basics of HTML 4, XHTML and briefly looking forward at the upcoming HTML 5. We’ll cover the principals of semantic markup, the separation of content, structure and presentation, the fundamentals of progressive enhancement and even microformats. Delegates will discover the impact of markup on SEO and Accessibility, and learn how best to work in order to benefit both.

It’s actually a beginners course I’ve always wanted to see: Learn How to Do It Properly From the Start. If you’re not the sort of person who learns well from The School of View Source, then I think this would be a day well spent. I think it’s going to be perfect for those who have to use HTML as part of their job (like site managers, content editors or even clients!) as well as those wanting to take some initial steps into building for the web.

We’ve scheduled the first one back to back with our CSS beginners course next month, and are offering a good discount to those who book on both days.

And all that Malarkey

tweetCC is Wired

Fri, 2009-02-20 18:55

I'm sorry for posting twice on the same day about tweetCC, but it's not everyday that something that I have worked on and feel super passionate about is picked up by, and hits the homepage of Wired. (More at For A Beautiful Web)

Designing tweetCC

Fri, 2009-02-20 10:28

This week Brian Suda and I launched tweetCC, a Twitter micro-app that allows Twitter users to declare a Creative Commons license for their tweeted content. I'll be writing more about why we decided to make tweetCC and why licensing you tweets is important in a future entry, but as several people have commented on my design and CSS implementation, first a few words about them. (Comments are open at For A Beautiful Web.

Do UK government web sites need to look exactly the same in every browser?

Tue, 2009-01-20 06:27

No, they don't. As Jeremy Keith so kindly pointed out, it's a subject that I have been banging on about for quite a while now. Comments are open at For A Beautiful Web

Andy Budd::Blogography

Why Friends Reunited Failed

Mon, 2009-03-02 09:39

I was recently interviewed by the Independent on Sunday to get a design perspective on why Friends Reunited ultimately failed. However rather than the design of the site, I think the design of the system was ultimately to blame.

Friends Reunited was one of the first “Social Networks” in the UK, long before the term had even been coined. Like all good web applications it made something that was difficult to do in the real world, incredibly easy. You could now re-connect with people from your past and spark up new friendships. It also tapped into two basic human traits; curiosity and gloating. Whether this was through design or by pure accident, the desire to see what had become of your childhood sweetheart or your school bully proved impossible to resist.

Like all social sites, Friends Reunited relied on the network affect, so when membership reached its tipping point the whole site went viral. However a lot of viruses burn through their fuel so quickly they die almost as fast as they grow, stifled by their own success. So with Friends Reunited once you’d registered, seen what your old friends were doing, connected with the ones you’d wanted to and had a laugh at the (hopefully) tragic lives of your childhood tormentors, there was very little reason to stick around.

The design of the site was delightfully amateurish, which was no surprise considering the background of the creators. However it had a low-fi aesthetic that made it feel genuine; something it shares with it’s later contemporaries like MySpace. The truth is, while a better design would almost certainly helped its fortunes, people are willing to ignore bad design and usability if the perceived value is great. With Friends Reunited there were no credible alternatives or competition so people were happy to make do.

I think one big problem was the business model itself. With so many users, Friends Reunited wanted to capitalise on this by charging a membership fee. Now this was during a time when Internet business models were still being tested, so it’s impressive that they managed to charge for the service at all. However charging for a service changes the whole dynamic of a site and causes people to game the system in order to get the maximum return on their investment. So it becomes less of a community and more of a commercial relationship. Like a lot of commercial relationships, once the value runs out, people will stop paying and leave.

Modern social networks do a much better job at keeping their members engaged than Friends Reunited. So Facebook quickly expanded from a way of getting to know people on campus into a way of connecting with old friend and managing new ones. In fact you can now use Facebook in numerous ways, be that chatting with friends, playing games, managing your social life, flirting or micro blogging. Facebook has managed to create a whole ecosystem and become an essential part of peoples social lives. What’s more, rather than charging for this privilege, they give it away for free and make their money from additional services.

Conversely LinkedIn started life as a generic social networking site but quickly specialised in the field of professional reputation management and recruitment. This model has much more longevity than simply “getting in touch with friends from school” and allows LinkedIn to charge for professional services that help their users solve a real world problem.

Product design and business model speculations aside, I think there is also a big element of timeliness and zeitgeist. Friends Reunited managed to capture the attention of millions of people and was very successful in it’s day. However human attention is fleeting and you can only maintain this until the next cool meme comes along. Because of this I’m unsure if any of the big social networks have much longevity and if we’ll be having the same conversation in 10 years time. Is social networking here to stay or is it just a blip on the evolutionary path of the Internet?

Categories: business

9 Ways to Stop Your SXSW Panel From Sucking

Tue, 2009-02-24 18:53

Each year, hundreds of assorted geeks will get the chance to speak on a panel at SXSW, many for the first time. I’ve witnesses some truly inspiring and thought provoking sessions at SXSW. However I’ve also had to sit through my share of turkeys, from the mind numbingly boring to the painfully embarrassing. So here are my top 9 ways to stop your panel sucking.

  1. Keep your introductions short and sweet. Nobody wants to hear your life story.
  2. Create drama. Panels suck if everybody agrees, so don’t be afraid to argue.
  3. Plan your panels in advance. Don’t tell your audience you met for the first time that morning.
  4. Alternatively keep it spontaneous. Don’t tell your audience about the great discussion you had over breakfast.
  5. Make your responses snappy. Don’t hog the mic and don’t waffle.
  6. Don’t try to be be smart, cute or wacky if you’re none of those things.
  7. Be interesting. Try to entertain and inspire as much as educate.
  8. Keep the pace going. A good panel will live and die by it’s moderator.
  9. Audience questions need to be short and to the point. Cut people off if you need to.

As I’m on a panel for the first time this year (I normally do presentations) hopefully I’ll heed my own advice and manage not to suck.

Is your website like a leaky bucket?

Wed, 2009-02-18 10:54

A lot of companies make money by driving traffic to their sites through marketing or SEO campaigns in the hope that some of their visitors will turn into customers. This makes sense when attention is plentiful and online marketing is cheap. However as marketing costs rise and attention becomes increasingly scarce, companies need to look outside of the traditional marketing funnel. Rather than simply increasing traffic, companies need to start focussing on conversions. After all there’s no point spending large sums of money pushing people to your site if they leave when they get there.

I call this the “leaky bucket” approach to product design and marketing. When water is cheap and plentiful, you don’t mind spilling most of it on the ground as long as you capture enough to quench your thirst. If you need more water you simply open the tap faster. You’ll end up spilling more but it doesn’t matter as you’ll catch more as a result. However as water supplies start to dwindle and costs begin to rise you’ll eventually reach a point when you can no longer afford to be wasting so much water. Instead it become much cheaper and more efficient to repair your bucket. As it currently stands most websites are literally leaking customers. These are people that actively want to use your product or service but can’t due to poor organisation or design.

This is where usability and user experience comes to the rescue. By ensuring visitors can find what they are looking for when they reach your site, you can plug some of the bigger holes. However the biggest holes are usually core processes like registration or check-out. A badly designed check-out process could literally be costing your company millions in lost revenue. In fact it’s not uncommon to see shopping cart abandonment rates as high as 95% on some sites.

Some of this can be put down to people window shopping, but a lot of this is due to bad process design. Shoppers with money in their hands getting frustrated by badly designed forms, or blocked by requirements to register before purchasing. For instance we came across a site the other day that prevented customers outside the US making purchases because State was mandatory and zip code was limited to 5 characters. We’ve even seen situations where customers think they have made a purchase but haven’t due to poor feedback design. All these issues are simple to discover and simple to fix.

So as attention starts to dry up, website owners need to start looking at plugging the holes in their system or risk losing out on business. After all it’s been known for a long time in marketing circles that it’s much cheaper to keep existing customers than it is to find new ones.

Categories: User Experience

as days pass by

Roman dates in Wordpress

Thu, 2009-03-12 20:46
In honour of Tom’s migration from Blosxom to Wordpress (thus joining the rest of us here in the twenty-first century), and in recognition of how I owe him a present and all, I’ve decided to alleviate his pain. You see, because Tom’s a nutcase, he had all the dates displayed on his previous Blosxom weblog in [...]
Categories: Software

Updates on the “ARIA stylesheet” hack

Wed, 2009-02-25 06:51
My ARIA “stylesheet” hack came up on the WAI-XTech mailing list. Some of my commenters here, and some of the people on the list, seem to have misapprehended what the proposal was designed to do; I’ve mailed the list, but it seems useful to post these clarifications here too. I am not proposing adding ARIA to [...]
Categories: Web

Jif Lemon Day

Wed, 2009-02-25 04:10
Don’t forget the pancakes on Jif Lemon Day, they say. Some days I really miss Sam.
Categories: Musings

Asa Dotzler - Firefox and more

firefox 3.1 beta 3

Thu, 2009-03-12 16:06

The third beta of Firefox 3.1 (soon to be renamed to Firefox 3.5) is now available. You can read all about it at Mozilla Developer News

not the only one

Wed, 2009-03-11 16:33

I'm glad that I'm not the only one that's annoyed by this.

firefox add-on developer guide

Wed, 2009-03-11 13:18

If you're an add-on developer or want to become one, the just now published draft of the Firefox Add-ons Developer Guide is for you. Go check it out and if you're so inclined, help make it better.

Asterisk

New Site!

Thu, 2006-08-31 16:27
Hey everybody! I’ve got a new site and I’ll be blogging over there from now on. Come on over! Update you bookmarks! Grab the new feed! Site: dkeithrobinson.com Feed: http://feeds.feedburner.com/DKeithRobinson...
Categories: Life

The Creative License

Thu, 2006-08-03 16:05
The Creative License by Danny Gregory is a really fun read. It’s a beautifully illustrated and highly entertaining book that’ll dip you head first into a world of creative expression, art and fun. The book starts of with some...
Categories: Books

Closing Comments For a Bit

Wed, 2006-08-02 00:16
I’ve been having some problems with MT, namely spam and some sort of rebuild problem, so I’m going to be closing comments here until I can get it sorted. My goal is to hopefully get a new CMS running sometime...
Categories: News

Authentic Boredom

The 5 P's of Twitter's runaway success

Thu, 2009-03-05 12:12

Hi there, respected Twitterer. Follow me at @cameronmoll.

Twitter, the social ______ application for which no one can accurately describe its purpose (except this video), became a runaway success last year. The San Francisco-based startup added 70% of its subscriber base in 2008 and is steadily growing in 2009, with an estimated 5,000 to 10,000 new accounts opened every day (source).

Actually, I think we enjoy claiming we can't describe what Twitter is, yet a closer inspection of it yields not only a better understanding of it but also why it's become so prevalent in the media lately. And when that kind of inspection occurs, it's not surprising to the inspector why Twitter is where it's at today.

1. Prudence. Twitter is solid proof that there is undeniable merit in doing just one thing -- as a business, as a strategy, as both -- and doing it really well. Users have 140 characters or less to share a thought, link up a URL, post a status update, or ask a question. That's it. Brilliant.

If Twitter lies at one end of the spectrum doing one thing really well, Facebook lies at the opposite end attempting to do all things well: status updates, networking, photos, videos, groups, etc. In terms of subscribers, Twitter's 6 million unique visitors lag far behind Facebook's 68 million (source). These numbers clearly indicate many web users currently prefer the everything-but-the-kitchen-sink utility offered by Facebook, but I suspect Twitter has the potential to not only narrow the gap but even outlast its Palo Alto neighbor by merely doing one thing superbly well.

...until, of course, we're over Twitter too and we move on to the next technology. See #3.

2. Pulse. I know of no more immediate way of gathering, monitoring, or responding to feedback about/for an idea, a question, a company, or an industry. Want to know what Twitter consumers are saying about Nike right now? How about the Lakers? Or photos for breaking news before any of the major media sources can report it? Or which shoes to purchase?

In fact, AdAge reports that Twitter is exploring even more ways of leveraging the Twitterverse for immediate feedback, enabling (from what I can gather) search.twitter.com to not only search previous tweets but also to generate new ones based on the search query.

3. Proximity. It seems with every new web trend or technology we gradually draw closer in virtual proximity to persons we admire and to the authors of the content we consume. First, it was the personal or corporate website with its distant, one-way consumption of information. Then came blogs and the ability to generate two-way conversation with the author by commenting on content. And now we have Twitter, enabling one to engage in tweets with Dave Matthews or to track down Shaq at a local diner.

4. Promotion. I've heard enough people complain there's no point to Twitter to come to this conclusion: You get back from Twitter what you put into it. Spend time and effort growing a network of followers, and soon enough you'll find Twitter to be a powerful promotion tool. For example, many of my initial letterpress poster sales back in December came as a result of my tweet, not so much because of my blog post. Additionally, I use automated tweets for Authentic Jobs as another means of fostering business.

Follow a regimen akin to Jack Humphrey's 90-10 rule, or whatever works for you, and you'll likely cultivate a valuable marketing resource.

5. Prominence. I'm certain I'll get flak for this, but it's worth not beating around the bush to just come out and say it. Twitter puts one's ego follower count front and center. In the heyday of blogging, one could quickly estimate and deduce -- whether accurately or not, foolishly or prudently -- the prominence and traffic of a blog based on the average number of comments on articles or the FeedBurner reader tally. These days it's follower count. It's unsurprising so many individuals and companies are sponsoring contests to drive follower count upward, whether for intrinsic gratification or for promotional purposes. See #4.

Granted, certain individuals such as celebrities will garner large quantities of followers regardless of what they tweet about, but for many Twitterers, it remains a challenge to constantly be acquiring new followers.

So, when scrutinized as we've done here, Twitter really isn't such a mystery after all, is it?

Recent job listings (and job search data)

Wed, 2009-02-25 12:17

I was reviewing analytics data for Authentic Jobs this morning, and some figures emerged that are remarkable, but also somewhat unsurprising:

  • For the same monthly period one year ago, visits to the site have increased by 45.9% and average time on the site has increased by 22.9%.
  • For the same annual period one year ago (technically two years ago), visits to the site have increased by 76.0% and average time on the site has decreased by 5.1%.

I say somewhat unsurprising because given the current economic climate, one can assume traffic to online job boards has increased in the last 6-12 months. Indeed, a recent report from comScore confirms this assumption: Job search ranked as the fastest growing U.S. online category in 2008. Had comScore's study included other countries, the same trend would likely have emerged.

Of course, Authentic Jobs welcomes any and all increases in traffic, and the site will continue to connect talented creative and web professionals with great work opportunities -- as it's been doing for nearly four years strong.

Some recent listings are highlighted below.

Full-time (U.S.)

Freelance

Post a job or find one at Authentic Jobs.

Speaking at HOW Design Conference in June

Thu, 2009-02-19 11:51
Screen grab of HOW Conference website

I've been reading HOW magazine on and off almost since I began my career as a designer 11 years ago. Every issue seems chock full of inspiring design, interviews with other designers I admire, and the like. Most issues land a permanent spot on my bookshelf.

For almost as long as I've associated myself with the magazine, I've had two wishes. These were never written down on paper. They existed only as an aspiration in the back of mind. The first was to have my work featured in a HOW design annual. The second was to speak at a HOW conference.

I have no idea the stars have aligned so perfectly in my favor, but this year I will fulfill both of those wishes. At the start of this year, one of my letterpress posters was recognized in the 2009 HOW In-House Design Annual.

In June, I will be speaking at the HOW Conference in Austin, Texas for the first time. The event will run from June 24–27 and will be held in the same venue as SXSW, the Austin Convention Center.

Highlights include sessions and speakers such as:

  • Print to Web Breakthrough
  • The Secret of Project Management for In-House Designers
  • Keeping Creative Control with Difficult Clients
  • Communicating Up, Down and All Around the Organization
  • 10 Things You Didn't Know Fonts Could Do
  • Craft + Activism = Craftivism
  • Studio tours (frog design, Olive Interactive Design & Marketing, others) for pre-conference attendees
  • DJ Stout (Pentagram), Thomas Phinney (Adobe), Cynthia Rapp (Cartoon Network), Lia Braaten Hager (Proctor & Gamble), and nearly 50 other speakers

I'm incredibly excited. Register by April 1 and save $100. Hope to see you there!

Bartelme Design | Journal

Colorsplash Wallpaper

Sat, 2009-02-14 11:36
Those of you following me on Twitter or Flickr might have already seen a preview of “Colorsplash”. Now it’s available as a free download. Happy Valentines Day and enjoy your new wallpaper!
Categories: design, wallpaper

Flux iPhone Wallpaper

Fri, 2009-01-09 12:19
I recently played around in Photoshop and came up with a combination of colors and shapes I really liked. So here is the brand new “Flux” wallpaper set for your iPhone and iPod touch. Enjoy!
Categories: iphone, wallpaper

Flux iPhone Wallpaper

Fri, 2009-01-09 11:19
I recently played around in Photoshop and came up with a combination of colors and shapes I really liked… So here is the brand new “Flux” wallpaper set for your iPhone and iPod touch. Enjoy!
Categories: iPhone, Wallpaper

bc

7

Sat, 2009-01-31 11:19
I was tagged by Benjamin and Marcio. Rules Link back to your original tagger and list the rules in your post. Share seven facts about yourself. Tag some people by leaving names and links to their blogs. Let them know they’ve been tagged. 7 bc I am 50 years old. To put it in perspective for all of you young [...]
Categories: Mozilla

Dell Precision 650, October 2003 - January 2008

Mon, 2008-02-04 03:09
After a great week in Mountain View with the rest of team I returned to find that not all was well. When I tried to boot my trusty Dell Precision, nothing happened. Upon inspection, I found the video card had been pushed in and “bent”. I have been assured that no unauthorized vacuuming occurred during [...]
Categories: General

Are Macs a ripoff ?

Sat, 2007-12-22 14:34
I sit here typing this on a 4+ year old Dell Precision while my trusty 3+ year old IBM Thinkpad stands by waiting for me to hit the road. The Dell has never needed a repair while the Thinkpad has been to the shop once. I like the Thinkpad so much, I even went for [...]
Categories: General

BeatnikPad

Things I will not miss at all come this Saturday

Tue, 2009-03-10 00:13
…when I finally complete nine months of slowly coming off a very high, prolonged dosage of prednisone, which was prescribed to beat down sarcoidosis, which was diagnosed back in 2001 and decided to come out of remission and kick the mother-trucking shit out of my kidneys last summer: Feeling completely and utterly exhausted nearly all the time, contrasted with… … bursts of manic energy that seemingly came out of nowhere, most often in the middle of the night, resulting in hour upon hour doing something completely ridiculous like organizing my CD collection based on genre, in alphabetical order by composer, by the colour of the spine, etc. Dealing with the jaunty show tune called “systemic fat redistribution”, where all of the fat from all over my body decide to migrate to and hold some kind of lipids-only Burning Man in my stomach region Massive, uncontrollable mood swings that would last for hours, which would find me one moment sitting at my desk feeling like I just swallowed a dozen “I’m so freaking happy” pills, the next hiding in a washroom stall bawling my eyes out for absolutely no reason whatsoever, the next utterly depressed and despondent, then OMG I’M SO HAPPY again, etc. Prolonged, intense crankiness and anger, probably caused in part by the above and by insomnia that would last for days Not feeling in control of myself whatsoever, and isolating myself from others to avoid unleashing a mood on an innocent bystander Being on a sodium-free, fat-free, seemingly flavour-free diet to stave off prednisone’s legendary ability to cause shocking weight gain (successful, thank jersey) Gut issues. The less said, the better. A skin complexion that looked like I had been dropped in a deep fryer filled with five-week old lard Countless visits to multiple doctors, tests out the wazoo (thankfully not IN the wazoo), enduring the WTF experience of being dipped into an MRI machine and massive complications from a seemingly botched biopsy, etc. Subjecting my family to all of the above Things that this experience makes me thankful for: Getting sick finally got me off my ass and exercising (again, to try and prevent major weight gain) Learning to eat healthy, and actually starting to enjoy aspects of the ascetic diet Having the love and seemingly endless patience of a damn fine woman who was on the receiving end of much of the crankiness and mood swings and frothing at the mouth For the most part avoiding most of the worst side effects of prednisone (especially the weight gain, and the infamous moon face, cf. Jerry Lewis) It’s been a rough nine months, but so far (crosses fingers, toes, antenna) it looks like my sarcoidosis is in remission again, which is probably the thing I’m the most thankful for at the moment. The crankiness and moodiness is starting to (finally) abate, and I’m slowly starting to feel like myself again. More importantly, I’m starting to feel like I’m in control of myself again, both physically and emotionally, which feels like, no shit, a kind of freedom. I look forward to eating potato chips again, socializing with other human beings like a regular, non-sociopathic person does, and treating my family to extended periods of me being happy.

Things I will not miss at all come this Saturday

Tue, 2009-03-10 00:13
…when I finally complete nine months of slowly coming off a very high, prolonged dosage of prednisone, which was prescribed to beat down sarcoidosis, which was diagnosed back in 2001 and decided to come out of remission and kick the mother-trucking shit out of my kidneys last summer: Feeling completely and utterly exhausted nearly all the time, contrasted with… … bursts of manic energy that seemingly came out of nowhere, most often in the middle of the night, resulting in hour upon hour doing something completely ridiculous like organizing my CD collection based on genre, in alphabetical order by composer, by the colour of the spine, etc. Dealing with the jaunty show tune called “systemic fat redistribution”, where all of the fat from all over my body decide to migrate to and hold some kind of lipids-only Burning Man in my stomach region Massive, uncontrollable mood swings that would last for hours, which would find me one moment sitting at my desk feeling like I just swallowed a dozen “I’m so freaking happy” pills, the next hiding in a washroom stall bawling my eyes out for absolutely no reason whatsoever, the next utterly depressed and despondent, then OMG I’M SO HAPPY again, etc. Prolonged, intense crankiness and anger, probably caused in part by the above and by insomnia that would last for days Not feeling in control of myself whatsoever, and isolating myself from others to avoid unleashing a mood on an innocent bystander Being on a sodium-free, fat-free, seemingly flavour-free diet to stave off prednisone’s legendary ability to cause shocking weight gain (successful, thank jersey) Gut issues. The less said, the better. A skin complexion that looked like I had been dropped in a deep fryer filled with five-week old lard Countless visits to multiple doctors, tests out the wazoo (thankfully not IN the wazoo), enduring the WTF experience of being dipped into an MRI machine and massive complications from a seemingly botched biopsy, etc. Subjecting my family to all of the above Things that this experience makes me thankful for: Getting sick finally got me off my ass and exercising (again, to try and prevent major weight gain) Learning to eat healthy, and actually starting to enjoy aspects of the ascetic diet Having the love and seemingly endless patience of a damn fine woman who was on the receiving end of much of the crankiness and mood swings and frothing at the mouth For the most part avoiding most of the worst side effects of prednisone (especially the weight gain, and the infamous moon face, cf. Jerry Lewis) It’s been a rough nine months, but so far (crosses fingers, toes, antenna) it looks like my sarcoidosis is in remission again, which is probably the thing I’m the most thankful for at the moment. The crankiness and moodiness is starting to (finally) abate, and I’m slowly starting to feel like myself again. More importantly, I’m starting to feel like I’m in control of myself again, both physically and emotionally, which feels like, no shit, a kind of freedom. I look forward to eating potato chips again, socializing with other human beings like a regular, non-sociopathic person does, and treating my family to extended periods of me being happy.

How to run Safari 4 beta and Safari 3 on the same mac

Tue, 2009-02-24 12:40
Apple dropped the first public beta release of Safari 4 today, and installing it overwrites the old version of Safari as well as the system Webkit frameworks. This means it’s not possible to run the current Safari 3 release and the beta on the same system. That is, not possible without some fiddling. Here’s a quick how-to get both Safari 3 and 4 beta running on the same system. You will need to use the terminal for part of this, and we will download an older copy of Webkit, which is Apple’s development builds of Safari. (It’s a bit confusing, but there are Webkit frameworks, which Safari uses to render web pages, and a Webkit application, which is what Apple uses to test development versions of the Webkit frameworks.) I am not responsible if this blows up your computer, causes your pants to spontaneously fall to your ankles causing you to flash your junk to the world, provokes fire to shoot out of your fingertips, etc.. Caveat nerd! Download and install the Safari 4 beta. You’ll need to reboot after the install because of the system framework changes. After rebooting, rename the new Safari.app in your Applications folder to Safari4.app. Download the Webkit build from 11/22/2008.Safari 3.2.1 was released on 11/24/2008 so I’m guessing this build is very close to that version. Mount the Webkit disk image and copy the Webkit.app application to your desktop. Rename Webkit.app to Safari3.app and move it to your Applications folder. In your Applications folder you should now have Safari3.app and Safari4.app.The Safari 4 installer backs up the previous version as an invisible file located at /Library/Application Support/Apple/.Safari4PreviewArchive.tar.gz. We need the original Safari.app bundle as the old version of Webkit we downloaded will not work with the new Safari 4 bundle. Launch the terminal and change directories:cd "/Library/Application Support/Apple/" Expand the backed up archive: tar -zxvf .Safari4PreviewArchive.tar.gz. This creates a few new folders in the current directory: Applications, System, and usr. You can now copy the old Safari.app which is now available the the newly created Applications folder to the top-level /Applications folder. You can either use the terminal (running the command cp -R "/Library/Application Support/Apple/Applications/Safari.app" /Applications/) or by navigating to Library » Application Support » Apple » Applications in the Finder and copying the Safari application bundle that way. After all of this, you should have Safari.app, Safari3.app, and Safari4.app in your top-level Applications folder. To run the Safari 4 beta launch Safari4.app, and to run the original Safari 3 launch Safari3.app. You may be able to run Safari.app as well (I was able to launch it and it identifies itself as Safari 3.2.1) but I wouldn’t recommend this as it uses the system webkit frameworks, which were replaced when Safari 4 was installed.

Berkun blog

A lesson in customer service (why my site was down today)

Fri, 2009-03-13 20:45
I was out and about today, and got home to find email from a friend telling me my site was down (Thx Livia). Hmmm. Ok. Checked it out, and they’re right. So I check the dreamhost status site, and there’s nothing for today. Ok, so I contact dreamhost directly. I hear back quickly. I’m told they suspect [...]
Categories: rant

Live webcast: How progress happens, Free! March 19th

Fri, 2009-03-13 12:42
Next week I’m doing a fun, live, one hour webcast on my latest thinking about progress and innovation. The best part is, if you’ve got a question you want me to answer, read below and I’ll work it into the presentation. Description: Talking about innovation is easy - but making change happen in organizations is ridiculously [...]
Categories: Innovation

How project managers establish power

Thu, 2009-03-12 15:12
I remember the day I started working as a program manager on the Internet explorer team. On my second day, Joe Belfiore, my boss, came to my office, closed the door, and told me two things: 1. Your relationship with programmers is everything 2. There are only two teams at Microsoft to care about, Windows and Office. Forget [...]
Categories: management

Binary Bonsai

Raiders of the Lost Ark - Story Conference Transcript

Mon, 2009-03-09 05:31
This is too good to leave on my shared Google reader items. Somehow, through some obscure channel, obtained from the final resting place of some Sumerian God by the man in the hat himself, a full 125-page story conference transcript between Lucas, Spielberg and Lawrence Kasdan from Raiders of the Lost Ark has surfaced as [...]
Categories: Journal

SK

Sat, 2009-03-07 14:56
Stanley Kubrick died today, 10 years ago, on March 7th, 1999 at the age of 70. It’s a strange tradition, to remember someone on the anniversary of their death, but it beats not remembering them at all. Luckily, Kubrick is most certainly worth remembering. On my desktop I have an entry-draft of considerable length concerning Kubrick, which [...]
Categories: Journal

Stanley Kubrick and the Bad Films

Tue, 2009-03-03 10:00
‘I used to want to see almost anything. In fact, the bad films were what really encouraged me to start out on my own. I’d keep seeing lousy films and saying to myself, “I don’t know anything about moviemaking but I couldn’t do anything worse than this.”’ - Stanley Kubrick, Stanley Kubrick: Interviews, softcover edn., Mississippi, p. 103.
Categories: Journal

Bit Stampede

A bigger-than-expected project

Fri, 2009-03-13 16:09
The more I work on this MDC menu hierarchy, the more I realize this is a bigger job than I originally expected.  MDC badly needs to be better organized.  The mockups I’ve been posting about are just the beginning. If you keep your eye on the proposed main page, you’ll find that I’m working on an [...]
Categories: mdc

More MDC mockups

Thu, 2009-03-12 16:03
I’ve got a couple new mockups now.  The “Developing Mozilla” page offers links to information about working with the code, Mozilla platform documentation, and subjects including localization, security, and mobile. Because it’s of keen interest to some of you, I’ve also put together the proposed new “The Mozilla platform” page.  This page offers the links that [...]
Categories: mdc

New mockup: Supported technologies

Thu, 2009-03-12 11:34
I’ve put together a “Supported technologies” page, which lists out the key technologies we support.  This is a slightly truncated version of the list currently on our main page, but with a quick summary of what each is used for. This is linked to from the proposed new main page. Let me know what you think!
Categories: mdc

Blake Ross on Firefox

Temptations

Thu, 2008-02-21 14:58
I find that the best way to overcome a destructive temptation is to stare it in the face, which is usually by the barcode if it’s an object. Some people find this approach crazy, even tortuous. They’d rather throw away the carrot*—the Blackberry, the chocolate, the pornography—than throw on the chastity belt and sleep with [...]
Categories: Blog

Scythe

Thu, 2008-02-14 14:42
I like to take walks at night through the backroads. I take my iPod and play some song I’ve heard a million times before, there are no surprises in the chords anymore, and that’s okay: it’s just the elevator music. I confess I sing out loud, almost involuntarily and without recourse, because there’s nobody else [...]
Categories: Blog

N-Ball

Tue, 2008-01-15 15:05
So many people spend so much of their energy trying to be perfect. It’s a fruitless goal. For one thing, perfect people are hated way more than imperfect people. If people don’t like you, odds are that it’s because you’re striving for perfection rather than lacking it—and in your pursuit, you’re systematically weeding out all [...]
Categories: Blog

Blog by Kveton

Why I’m running for the OpenID Foundation BOD

Mon, 2008-12-15 20:30
I’ve been on the OpenID Foundation (OIDF) board of directors since the organization was founded. I was also lucky enough to serve as the Chair over that time and I would love to continue to serve the community in some fashion on the board of directors again. There have been several questions asked to the [...]
Categories: openid

Announcing the Open Web Foundation

Thu, 2008-07-24 12:42
This morning on stage at OSCON, David Recordon announced the formation of the Open Web Foundation (OWF). I wanted to take a few minutes to say congrats to a fantastically diverse and committed bunch of people that have made this possible and tell a little bit about how it came to be. In May 2008, [...]
Categories: open web

Congrats to Chris Messina

Wed, 2008-07-23 00:24
Tonight Chris Messina won a Google Open Source Award as “Best Community Amplifier” for his tireless work spreading “open” everywhere. I’ve known Chris for several years now and its been an absolute pleasure not only to be in the same space but now I get to work with him at Vidoop on a daily basis. [...]
Categories: chris messina

blogfour

IE and Flash parameters on redirects

Thu, 2008-12-04 07:01

Man, just stumbled over this little gem about Flash and IE:

If you embed Flash, and on the server side use a redirect to point at the .swf real location, including some query parameters all works fine. That is, until you also pass parameters in them html code. I.e. so if you embed “/foo/bar/loco.swf?foo=bar”, and want you redirect to “/foo/bar/chupito.swf?other=bother”, Flash will get “foo=bar” by IE. Nice :(

Christmas is getting near...

Tue, 2008-12-02 18:31

… and then we all know that it is time for this song:

(or the other way around: You know that Christmas is near when you hear it :) )

It is that time of year

Mon, 2008-12-01 05:07

Send your own ElfYourself eCards

Blogzilla - a weblog about Mozilla

IE7 RSS icon to use Firefox RSS icon

Wed, 2005-12-14 19:48
The Microsoft Team RSS Blog announced today that to encourage consistency between browsers, IE7 will be using the Firefox RSS icon to represent RSS and RSS-related features.
Categories: RSS / Livemarks

FirefoxView: 'View This Page in Firefox' Extension for IE

Wed, 2005-12-07 14:01
IE View is a useful extension for web developers that launches IE and lets you view what the page looks like in IE. FirefoxView is the opposite of IE View, it lets you complete the round trip and view what a page looks like in Firefox from IE. Kind of a strange extension install; it's an extension you install in Firefox, which installs "View This Page in Firefox" item to the context menu in IE. Windows only, and doesn't work with Norton Antivirus 2004 with script blocking enabled.
Categories: Extensions

View Source Choice

Sun, 2005-12-04 01:22
In response to an entry discussing view source in Firefox, Brian King created the View Source Choice extension with the exact feature we were looking for. The ability to: [r]edirect View Source to current window (current default in Firefox), new tab, or new window. Thanks Brian — I've installed the extension, and it works great! The planned ability to override the view source keyboard shortcut already has me anticipating version 0.2. Update 2006-01-20: View Source Choice has been updated and now features an optional override.
Categories: Addons

Brendan's Roadmap Updates

TraceMonkey Update

Wed, 2008-09-03 05:45
We have been busy, mostly fixing bugs for stability, but also winning a bit more performance, since TraceMonkey landed on mozilla-central, from which Firefox 3.1 alpha-stage nightly builds are built. Tonight's builds include a fix for the bug that ilooped a SunSpider test (my apologies to those of you who suffered that bug's bite).

But what I'm sure everyone wants to know is: how do we compare to V8?

Here are the results from head-to-head SunSpider on Windows XP on a Mac Mini and Windows Vista on a MacBook Pro, testing against last night's Firefox automated build and yesterday's Chrome beta:
tm-v8-sunspider-totals.png

We win by 1.28x and 1.19x, respectively. Maybe we should rename TraceMonkey "V10" ;-).

Ok, it's only SunSpider, one popular yet arguably non-representative benchmark suite. We are not about to be braggy. ("Don't be braggy" is our motto here at Mozilla ;-).)

But it's worth digging deeper into the results. Let's look at the ratios by test:
tm-v8-sunspider-detail.png

We win on the bit-banging, string, and regular expression benchmarks. We are around 4x faster at the SunSpider micro-benchmarks than V8.

This graph does show V8 cleaning our clock on a couple of recursion-heavy tests. We have a plan, to trace recursion (not just tail recursion). We simply haven't had enough hours in the day to get to it, but it's "next".

This reminds me: TraceMonkey is only a few months old, excluding the Tamarin Tracing Nanojit contributed by Adobe (thanks again, Ed and co.!), which we've built on and enhanced with x86-64 support and other fixes. We've developed TraceMonkey in the open the whole way. And we're as fast as V8 on SunSpider!

This is not a trivial feat. As we continue to trace unrecorded bytecode and operand combinations, we will only get faster. As we add recursion, trace-wise register allocation, and other optimizations, we will eliminate the losses shown above and improve our ratios linearly across the board, probably by 2 or greater.

I'll keep updating the blog every week, as we do this work. Your comments are welcome as always.

V8 is great work, very well-engineered, with room to speed up too. (And Chrome looks good to great -- the multi-process architecture is righteous, but you expected no less praise from an old Unix hacker like me.)

What spectators have to realize is that this contest is not a playoff where each contending VM is eliminated at any given hype-event point. We believe that Franz&Gal-style tracing has more "headroom" than less aggressively speculative approaches, due to its ability to specialize code, making variables constant and eliminating dead code and conditions at runtime, based on the latent types inherent in almost all JavaScript programs. If we are right, we'll find out over the next weeks and months, and so will you all.

Anyway, we're very much in the game and moving fast -- "reports of our death are greatly exaggerated." Stay tuned!

TraceMonkey: JavaScript Lightspeed

Fri, 2008-08-22 18:45
I'm extremely pleased to announce the launch of TraceMonkey, an evolution of Firefox's SpiderMonkey JavaScript engine for Firefox 3.1 that uses a new kind of Just-In-Time (JIT) compiler to boost JS performance by an order of magnitude or more. Results Let's cut straight to the charts. Here are the popular SunSpider macro- and micro-benchmarks average scores, plus results for an image manipulation benchmark and a test using the Sylvester 3D JS library's matrix multiplication methods:

assorted-benchmarks.png

Here are some select SunSpider micro-benchmarks, to show some near-term upper bounds on performance:

micro-benchmarks.png

This chart shows speedup ratios over the SpiderMonkey interpreter, which is why "empty loop with globals" (a loop using global loop control and accumulator variables) shows a greater speedup -- global variables in JavaScript, especially if undeclared by var, can be harder to optimize in an interpreter than local variables in a function.

Here are the fastest test-by-test SunSpider results, sorted from greatest speedup to least:

sunspider-part-1.png

The lesser speedups need their own chart, or they would be dwarfed by the above results:

sunspider-part-2.png

(Any slowdown is a bug we will fix; we're in hot pursuit of the one biting binary-trees, which is heavily recursive -- it will be fixed.)

With SunSpider, some of the longest-running tests are string and regular-expression monsters, and since like most JS engines, we use native (compiled C++) code for most of the work, there's not as much speedup. Amdahl's Law predicts that this will bound the weighted-average total Sunspider score, probably to around 2. No matter how fast we JIT the rest of the code, the total score will be... 2.

But this is only a start. With tracing, performance will keep going up. We have easy small linear speedup tasks remaining (better register allocation, spill reduction around built-in calls). We will trace string and regular expression code and break through the "2" barrier. We will even trace into DOM methods. The tracing JIT approach scales as you move more code into JS, or otherwise into view of the tracing machinery.

Finally, schrep created a screencast that visually demonstrates the speedup gained by TraceMonkey. These speedups are not just for micro-benchmarks. You can see and feel them. How We Did It We've been working with Andreas Gal of UC Irvine on TraceMonkey, and it has been a blast. We started a little over sixty days (and nights ;-) ago, and just yesterday, shaver pushed the results of our work into the mozilla-central Hg repository for inclusion in Firefox 3.1. The JIT is currently pref'ed off, but you can enable it via about:config -- just search for "jit" and, if you are willing to report any bugs you find, toggle the javascript.options.jit.content preference (there's a jit.chrome pref too, for the truly adventurous).

Before TraceMonkey, for Firefox 3, we made serious performance improvements to SpiderMonkey, both to its Array code and to its interpreter. The interpreter speedups entailed two major pieces of work:

  • Making bytecode cases in the threaded interpreter even fatter, so the fast cases can stay in the interpreter function.
  • Adding a polymorphic property cache, for addressing properties found in prototype and scope objects quickly, without having to look in each object along the chain.
I will talk about the property cache and the "shape inference" it is based on in another post.

By the way, we are not letting moss grow under our interpreter's feet. Dave Mandelin is working on a combination of inline-threading and call-threading that will take interpreter performance up another notch.

While doing this Firefox 3 work, I was reminded again of the adage: Neurosis is doing the same thing over and over again, expecting to get a different result each time. But this is exactly what dynamically typed language interpreters must do. Consider the + operator: a = b + c; Is this string concatenation, or number addition? Without static analysis (generally too costly), we can't know ahead of time. For SpiderMonkey, we have to ask further: if number, can we keep the operands and result in machine integers of some kind?

Any interpreter will have to cope with unlikely (but allowed) overflow from int to double precision binary floating point, or even change of variable type from number to string. But this is neurotic, because for the vast majority of JS code, in spite of the freedom to mutate type of variable, types are stable. (This stability holds for other dynamic languages including Python.)

Another insight, which is key to the tracing JIT approach: if you are spending much time in JS, you are probably looping. There's simply not enough straight line code in Firefox's JS, or in a web app, to take that much runtime. Native code may go out to lunch, of course, but if you are spending time in JS, you're either looping or doing recursion.

The Trace Trees approach to tracing JIT compilation that Andreas pioneered can handle loops and recursion. Everything starts in the interpreter, when TraceMonkey notices a hot loop by keeping cheap count of how often a particular backward jump (or any backward jump) has happened. for (var i = 0; i < BIG; i++) { // Loop header starts here: if (usuallyTrue()) commonPath(); else uncommonPath(); }

Once a hot loop has been detected, TraceMonkey starts recording a trace. We use the Tamarin Tracing Nanojit to generate low-level intermediate representation instructions specialized from the SpiderMonkey bytecodes, their immediate and incoming stack operands, and the property cache "hit" case fast-lookup information.

The trace recorder completes when the loop header (see the comment in the code above) is reached by a backward jump. If the trace does not complete this way, the recorder aborts and the interpreter resumes without recording traces.

Let's suppose the usuallyTrue() function returns true (it could return any truthy, e.g. 1 or "non-empty" -- we can cope). The trace recorder emits a special guard instruction to check that the truthy condition matches, allowing native machine-code trace execution to continue if so. If the condition does not match, the guard exits (so-called "side-exits") the trace, returning to the interpreter at the exact point in the bytecode where the guard was recorded, with all the necessary interpreter state restored.

If the interpreter sees usuallyTrue() return true, then the commonPath(); case will be traced. After that function has been traced comes the loop update part i++ (which might or might not stay in SpiderMonkey's integer representation depending on the value of BIG -- again we guard). Finally, the condition i will be recorded as a guard. // Loop header starts here: inlined usuallyTrue() call, with guards guard on truthy return value guard that the function being invoked at this point is commonPath inlined commonPath() call, with any calls it makes inlined, guarded i++ code, with overflow to double guard i < BIG condition and loop-edge guard jump back to loop header

Thus tracing is all about speculating that what the interpreter sees is what will happen next time -- that the virtual machine can stop being neurotic.

And as you can see, tracing JITs can inline method calls easily -- just record the interpreter as it follows a JSOP_CALL instruction into an interpreted function.

One point about Trace Trees (as opposed to less structured kinds of tracing): you get function inlining without having to build interpreter frames at all, because the trace recording must reach the loop header in the outer function in order to complete. Therefore, so long as the JITted code stays "on trace", no interpreter frames need to be built.

If the commonPath function itself contains a guard that side-exits at runtime, then (and only then) will one or more interpreter frames need to be reconstructed.

Let's say after some number of iterations, the loop shown above side-exits at the guard for usuallyTrue() because that function returns a falsy value. We abort correctly back to the interpreter, but keep recording in case we can complete another trace back to the same loop header, and extend the first into a trace tree. This allows us to handle different paths through the control flow graph (including inlined functions) under a hot loop. What It All Means

Pulling back from the details, a few points deserve to be called out:

  • We have, right now, x86, x86-64, and ARM support in TraceMonkey. This means we are ready for mobile and desktop target platforms out of the box.
  • As the performance keeps going up, people will write and transport code that was "too slow" to run in the browser as JS. This means the web can accomodate workloads that right now require a proprietary plugin.
  • As we trace more of the DOM and our other native code, we increase the memory-safe codebase that must be trusted not to have an exploitable bug.
  • Tracing follows only the hot paths, and builds a trace-tree cache. Cold code never gets traced or JITted, avoiding the memory bloat that whole-method JITs incur. Tracing is mobile-friendly.
  • JS-driven <canvas> rendering, with toolkits, scene graphs, game logic, etc. all in JS, are one wave of the future that is about to crest.
TraceMonkey advances us toward the Mozilla 2 future where even more Firefox code is written in JS. Firefox gets faster and safer as this process unfolds.

I believe that other browsers will follow our lead and take JS performance through current interpreter speed barriers, using just-in-time native code compilation. Beyond what TraceMonkey means for Firefox and other Mozilla projects, it heralds the JavaScript Lightspeed future we've all been anticipating. We are moving the goal posts and changing the game, for the benefit of all web developers. Acknowledgments I would like to thank Michael Franz and the rest of his group at UC Irvine, especially Michael Bebenita, Mason Chang, and Gregor Wagner; also the National Science Foundation for supporting Andreas Gal's thesis. I'm also grateful to Ed Smith and the Tamarin Tracing team at Adobe for the TT Nanojit, which was a huge boost to developing TraceMonkey.

And of course, mad props and late night thanks to Team TraceMonkey: Andreas, Shaver, David Anderson, with valuable assists from Bob Clary, Rob Sayre, Blake Kaplan, Boris Zbarsky, and Vladimir Vukićević.

Popularity

Thu, 2008-04-03 23:56

It seems (according to one guru, but coming from this source, it's a left-handed compliment) that JavaScript is finally popular.

To me, a nerd from a tender age, this is something between a curse and a joke. (See if you are in my camp: isn't the green chick hotter?)

Brendan Eich convinced his pointy-haired boss at Netscape that the Navigator browser should have its own scripting language, and that only a new language would do, a new language designed and implemented in big hurry, and that no existing language should be considered for that role.

I don't know why Doug is making up stories. He wasn't at Netscape. He has heard my recollections about JavaScript's birth directly, told in my keynotes at Ajax conferences. Revisionist shenanigans to advance a Microhoo C# agenda among Web developers?

Who knows, and it's hard to care, but in this week of the tenth anniversary of mozilla.org, a project I co-founded, I mean to tell some history.

As I've often said, and as others at Netscape can confirm, I was recruited to Netscape with the promise of "doing Scheme" in the browser. At least client engineering management including Tom Paquin, Michael Toy, and Rick Schell, along with some guy named Marc Andreessen, were convinced that Netscape should embed a programming language, in source form, in HTML. So it was hardly a case of me selling a "pointy-haired boss" -- more the reverse.

Whether that language should be Scheme was an open question, but Scheme was the bait I went for in joining Netscape. Previously, at SGI, Nick Thompson had turned me on to SICP.

What was needed was a convincing proof of concept, AKA a demo. That, I delivered, and in too-short order it was a fait accompli.

Of course, by the time I joined Netscape, and then transferred out of the server group where I had been hired based on short-term requisition scarcity games (and where I had the pleasure of working briefly with the McCool twins and Ari Luotonen; later in 1995, Ari and I would create PAC), the Oak language had been renamed Java, and Netscape was negotiating with Sun to include it in Navigator.

The big debate inside Netscape therefore became "why two languages? why not just Java?" The answer was that two languages were required to serve the two mostly-disjoint audiences in the programming ziggurat who most deserved dedicated programming languages: the component authors, who wrote in C++ or (we hoped) Java; and the "scripters", amateur or pro, who would write code directly embedded in HTML.

Whether any existing language could be used, instead of inventing a new one, was also not something I decided. The diktat from upper engineering management was that the language must "look like Java". That ruled out Perl, Python, and Tcl, along with Scheme. Later, in 1996, John Ousterhout came by to pitch Tk and lament the missed opportunity for Tcl.

I'm not proud, but I'm happy that I chose Scheme-ish first-class functions and Self-ish (albeit singular) prototypes as the main ingredients. The Java influences, especially y2k Date bugs but also the primitive vs. object distinction (e.g., string vs. String), were unfortunate.

Back to spring of 1995: I remember meeting Bill Joy during this period, and discussing fine points of garbage collection (card marking for efficient write barriers) with him. From the beginning, Bill grokked the idea of an easy-to-use "scripting language" as a companion to Java, analogous to VB's relationship to C++ in Microsoft's platform of the mid-nineties. He was, as far as I can tell, our champion at Sun.

Kipp Hickman and I had been studying Java in April and May 1995, and Kipp had started writing his own JVM. Kipp and I wrote the first version of NSPR as a portability layer underlying his JVM, and I used it for the same purpose when prototyping "Mocha" in early-to-mid-May.

Bill convinced us to drop Kipp's JVM because it would lack bug-for-bug compatibility with Sun's JVM (a wise observation in those early days). By this point "Mocha" had proven itself via rapid prototyping and embedding in Netscape Navigator 2.0 , which was in its pre-alpha development phase.

The rest is perverse, merciless history. JS beat Java on the client, rivaled only by Flash, which supports an offspring of JS, ActionScript.

So back to popularity. I can take it or leave it. Nevertheless, popular Ajax libraries, often crunched and minified and link-culled into different plaintext source forms, are schlepped around the Internet constantly. Can we not share?

One idea, mooted by many folks, most recently here by Doug, entails embedding crypto-hashes in potentially very long-lived script tag attributes. Is this a good idea?

Probably not, based both on theoretical soundness concerns about crypto-hash algorithms, and on well-known poisoning attacks.

A better idea, which I heard first from Rob Sayre: support an optional "canonical URL" for the script source, via a share attribute on HTML5 <script>: If the browser has already downloaded the shared URL, and it still is valid according to HTTP caching rules, then it can use the cached (and pre-compiled!) script instead of downloading the src URL.

This avoids hash poisoning concerns. It requires only that the content author ensure that the src attribute name a file identical to the canonical ("popular") version of the library named by the shared attribute. And of course, it requires that we trust the DNS. (Ulp.)

This scheme also avoids embedding inscrutable hashcodes in script tag attribute values.

Your comments are welcome.

Ok, back to JavaScript popularity. We know certain Ajax libraries are popular. Is JavaScript popular? It's hard to say. Some Ajax developers profess (and demonstrate) love for it. Yet many curse it, including me. I still think of it as a quickie love-child of C and Self. Dr. Johnson's words come to mind: "the part that is good is not original, and the part that is original is not good."

Yet here we are. The web must evolve, or die. So too with JS, wherefore ES4. About which, more anon.

Firefox 3 looks like it will be popular too, based on space and time performance metrics. More on that soon, too.

BSBlog

Performance and Pymake

Thu, 2009-02-26 23:18
pymake runs correctly now. With some Mozilla patches, I can get it to recurse through most of the tree within a single process, doing parallel builds correctly, on Windows, Linux, and Mac, python 2.4 and 2.5. 6x as slow Performance is bad. On a benchmark of a do-nothing rebuild of make tier_xpcom, which is about 40 recursive [...]
Categories: performance, pymake, python

Sanity and Testcases for pymake

Mon, 2009-02-23 12:56
Testcases kept me sane writing (and rewriting) pymake. This shouldn’t be a surprise to experienced developers: most developers agree that that test-driven development is good. Often, however, beginning programmers don’t know how to start a project with adequate testing. This post attempts to describe the pymake test environment and give examples of pymake tests. I [...]
Categories: make, pymake, python, testing

pymake: A Mostly GNU-compatible `make`, Written in Python

Fri, 2009-02-13 15:57
Mozilla has a lot of Makefiles, and although we’re not completely happy with our current recursive-make build system, converting to something else is a very difficult task. In order to consider other solutions, we have to have a seamless migration path from our existing infrastructure. Unfortunately for any potential migration, Mozilla uses pretty much every [...]
Categories: make, pymake, python

Burning Chrome

A Scrollable Grid With Headers, part 1

Sun, 2009-02-08 01:36

Recently, I discovered XUL trees will let you select individual cells with a single attribute, seltype="cell":

treecell-select.png

This gave me a few ideas - most notably about my regular expression grid, which takes up an awful lot of space on the screen. If I could use the tree to simulate a smaller grid, preferably with scrollbars, I could use much less real estate. After a quick newsgroup posting, Mark Finkle and Neil Deakin set me straight - the grid was probably better and more flexible.

Still, trees do one thing grids don't - they have a fixed header row. You can scroll the main body all you want - the header row will stay where it is. Doing the same for a grid was impossible - but if I combined three grids into a single XBL binding...

grid-navigable.png

Note this demo won't fully work without Mozilla Firefox 3.1 beta 2. (It might work on earlier 3.1 builds, but this was the base.) I combined the scrollable content object model with a healthy dose of CSS styling and new bindings. In Firefox 3.0.6, it will partially render, but the headers won't appear.

This opens up a number of possibilities for new widgets. From the newsgroup:

  • Menulist editor: Label, value, description
  • Entity localizations: Entity name, English, other language
  • Regular Expression testing grid
  • A menu list containing namespace URI-prefix pairs
  • A spreadsheet with header rows & columns
  • Logic grid puzzles

With all this said, I think I need your help. Although I wrote this as a general-purpose binding, I hardly think it's ready for adding to the XUL toolkit. This is proof of concept code, and it has a few shortcomings:

  • Navigation by cells - not by rows or by columns. (Suppose you want to select a whole row? I didn't implement that.)
  • No specification. No rules on how it's supposed to behave other than, "Does it look right when I move it?"
  • No tests. I wouldn't want to check this into Mozilla without some regression tests to make sure it works.
  • Performance. In loading the test page, I noticed today that my more recent changes causes the CPU to spike for a couple seconds. That's bad, and I don't know where the bug is.
  • The accessibility people will probably want to add some useful support roles.
  • Selecting a cell throws off the header rows' & columns' scrolling.
  • A really bad binding name: gridbox. It was the best I could come up with.

I filed bug 477446 for this. I'd like to see if anyone's interested in working on this binding, cleaning it up, writing tests for it, and generally making it Toolkit-ready. I think it's potentially very useful.

Comments are open!

I have a scrollable content object model... too late

Sun, 2009-01-18 04:15

Several years ago, I griped (unsuccessfully) about the need for a scrollable content object model. I remember someone mentioning on planet.mozilla.org that this would not be a problem going forward, but I couldn't find the entry. So today, I was exploring another user-interface concept, and it led me back again to scrollable content. (As you read this, my context is the XULRunner 1.9.0.x code base.)

Ahh, I remember the frustrations well. It took me several hours (and a few blind alleys), but I actually hit on a really simple way to tell where a XUL box with scrollbars has scrolled to. Though the XUL box itself has to use my particular XBL binding and CSS styling, it's still a nice starting point.

Here's the binding, stylesheet, and a demonstration all in one. Note that it's a lot cleaner than my previous attempt, and it works.

I realize the scrollX and scrollY properties are read-only. I don't see a way around that for this approach. If you really want it, you'll probably have to implement a native-code, C++-based component.

Or, you could wait for Firefox 3.1 / XULRunner 1.9.1, which now has scrollLeft and scrollTop for all DOM elements - and it's settable there, too. (This makes the third big improvement I'm looking for in XR 1.9.1 that isn't in 1.9.0.x, which means it's time to seriously think about moving forward... The other two are new drag and drop features, and a DOM Range fix I pulled in from very early in the 1.9.1 cycle.)

Note I groaned very audibly when I was writing this article and decided to check what 1.9.1 has. Talk about a feeling of a wasted day!

Twenty minutes a day

Mon, 2009-01-12 12:28

Sometimes, that's all it really takes, when you're hacking code. You know how I know? I tried it last week without even intending to.

In my case, I commute from San Jose to Mountain View every day. On the CalTrain, that takes twenty minutes. I also commute back on the CalTrain - another twenty minutes. That's enough time to pick up where I left off, fix a little bug in my code, rerun the test, try to fix another little bug, and power down the laptop. I'm just fixing bugs at the lowest level of complexity - one component, one interface, one test case. For a twenty-minute session, that's about all I need to think about debugging.

Now, of course, I spend a lot more than twenty minutes a day working on projects for the office. I'm also (I hope!) more efficient with my time at work - I can juggle a lot more files in my head at the same time when I have more time. For the really small stuff, you can achieve a lot in twenty minutes a day.

One other benefit, and I believe I've said this before: When you're working with test cases, those test cases later become examples you can reuse in your actual production code. More importantly, they should produce code you can cut-and-paste into your real program, with only variable name changes. That greatly increases the chances your code will work as you intend it to - if you test code one way and it passes, use that way to implement your real work. (Or, just write your test to emulate how you'd really use your component.)

Categories: Technobabble

Calendar Weblog

Lightning is an unusual Mozilla application

Wed, 2009-03-11 10:03

Since the start of February, the statistics capabilities of addons.mozilla.org have been upgraded. It is now possible to see the number of active users on a daily basis, where before it was only shown on a monthly basis. This shows some interesting facts about Lightning.

What is pretty apparent from the stats is that Lightning's usage is much higher during the week than on the weekend. This is a stark contrast to Mozilla's main application Firefox, which is usually used by more people on the weekend than during the week.

On Windows the usage numbers during the week are about twice as high as on the weekends, while on the other operating systems (Linux, MacOS X, Solaris, *BSD, OS/2) the usage numbers are just about 30% - 40% lower on the weekends.

This seems to indicate that we have a lot of business users out there using Lightning and that most of these business users use Windows as their platform of choice.

What we also see is that roughly 87.5% - 89.1% of our users are on the Windows platform, 7.6% - 8.6% use Linux and 3.1% - 3.8% are MacOS X users. Users of other operating systems range between 0.13% and 0.16%.

Those of you, that want to play more with our download numbers, can do this on the Lightning Statistics Dashboard, where you can find much more data to play with.

PS: Don't ask me about the low numbers on five days in early February. These are clearly incorrect and probably a result of an addons.mozilla.org bug, that was fixed later on.

Categories: Lightning

[February 25, 2009] Lightning/Sunbird Status Update

Wed, 2009-02-25 09:20

After all the bad news in the last few days, here are some good news at last: Our recent bugfixes. Everything considered, the last 28 days were pretty good in terms of the number of bugfixes. Hopefully we can keep this up as more people will step up and help us with bringing the Calendar Project forward.

Here's the list of the 47 bugfixes in the last 28 days:

  • Bug 345607: Copy recurring event and paste to another day appears to work but event is not saved
  • Bug 357332: Holidays in Chile
  • Bug 358217: Catalan holiday calendar
  • Bug 379097: Export should default to ics
  • Bug 405033: Remember last selected task when sorting list in Task mode
  • Bug 421329: Freebusy information is not loaded for multiday events beginning previous to look-up date
  • Bug 429126: Infinite loop at refresh when a calendar is deleted from the server outside of Lightning
  • Bug 449567: 'Dismiss all' alarms of recurring events -> error console output
  • Bug 457823: Mini-month vs datepicker on calendar pane
  • Bug 463273: Error: Failed to read 'repeatDetailsOrdinal0'
  • Bug 463679: Two email notifications sent for cached CalDAV calendar
  • Bug 463960: Cannot refresh cached CalDAV calendars
  • Bug 463961: Unnecessary fetch of all etags for cached calendars
  • Bug 468723: Incorrect doModifyItem for CalDAV servers where the inbox matches the calendar uri
  • Bug 469605: Incorrect handling of mBatchCount
  • Bug 469767: Very slow etags parsing
  • Bug 472314: Add some documentation to calendar code
  • Bug 474361: Remove and rename calendar-decorated panes
  • Bug 474630: Alarms don't work for recurring events
  • Bug 474632: Update internal timezone database to version 2009a
  • Bug 475170: LDAP Lookup broken in Invite Attendees dialog
  • Bug 475549: ICS file for Norwegian holidays 2009-2013
  • Bug 475599: Create the backup files in calendar-data folder instead of the backupData folder
  • Bug 475745: Updated English Holidays calendar
  • Bug 475803: Cal.fromRFC3339 matches fails to set timezone correctly
  • Bug 475887: ${BrandFullName} needs to be quoted in shared.nsh
  • Bug 476219: Drag and drop of event works but MODIFICATION_FAILED dialog is shown
  • Bug 476262: alarms don't fire/show up/no reminder (alarmDate is not defined)
  • Bug 476331: Replace InfoText with Info in updater.ini using sed in locales Makefile.in
  • Bug 476518: Sunbird debug symbols for crash reports seem to be missing
  • Bug 476867: Download links for Sunbird 0.7 and older releases do not work
  • Bug 477009: Unable to get directory path for directories immediately under some symlinks
  • Bug 477064: Recurrence description for weekly event uses repeatDetailsOrdinal* where should be weekday
  • Bug 477207: Remove installer code that adds unused registry key values
  • Bug 477445: What is this "orientation" of which you speak?
  • Bug 477474: Remove searchplugins occurrences from locales/Makefile.in
  • Bug 477664: No vertical space between label and underline indicating accesskey
  • Bug 479327: On startup, icon in statusbar shows offline mode
  • Bug 479513: task description box vanishes when dragging scrollbar in task list
  • Bug 479577: Creating event/task with alarm on end/due date throws exception NS_ERROR_OBJECT_IS_IMMUTABLE
  • Bug 479578: Creating task with alarm doesn't automatically enable the required start or due date anymore
  • Bug 479599: Bugs.html: request review from module owner
  • Bug 479605: FAQ: local file steps are out of date
  • Bug 479606: FAQ: how to tinker: change "cvs" to comm-central
  • Bug 479610: FAQ: netscape server -> sun server
  • Bug 479695: Canceling Custom Reminder dialog trows error "customItem.reminders is undefined"
  • Bug 479707: Error notification dialog: "Error number" should be "Error code"
Many thanks go to all developers, contributors, localizers, testers, and supporters that have made this possible.
Categories: Lightning

Even more on the Sunbird/Lightning decision

Tue, 2009-02-24 17:42
There have been a lot of questions asked since our announcement, that we're discontinuing Sunbird, because several main contributors can no longer work full-time on the project. I want to use this post to try to answer as many questions as I can.
  • Various people have asked for the Mozilla Foundation or Mozilla Messaging to step in and help us out.
    Short answer: They already are helping us out.
    Long answer: Mozilla Messaging is already helping us out on the build engineering side and the Mozilla Foundation is actively working with us to make it possible for people to donate to the Calendar Project via the Mozilla Foundation.
  • Raffael asked: "How close are you working together with Spicebird? Are there other projects like Spicebird that could contribute code to Lightning?
    We are working together with the Spicebird people. Their calendar code is mostly based on our code. We are also working closely together with the folks from SoGo.
  • Dave asked: "What happened to the guys at Sun? I was under the impression that there was a small team of developers at Sun working on Lightning specifically. Has Sun stopped their involvement?
    We covered this issue in Philipp's original announcement. Here's the relevant paragraphRecently, several contributors who were working on the project full-time have left the project or have shifted to free-time contributor status due to other obligations. This means their contributions will be limited to their spare time, which is quite sparse given a full-time job and family.
  • Sunbirduser said: "The most important question is not whether sunbird or lightning will be stopped, but how to get new interesting people into the project and how to get more developers. This is the work of the project leader!
    Like Philipp said in his original announcementOur next release will include Sunbird, but subsequent releases won't unless new contributors take on the work. and This is really a tremendous opportunity for anyone who is interested and willing to help make a difference here for the project and its hundreds of thousands of users -- get involved! Things will happen if someone actually steps up and makes them happen. That is how it works in the open source space. Philipp is very important as the project's lead developer, but he's not anyone's boss and can't command anyone to do something. Interested people will need to step up and do something, then Sunbird can live on.
I hope this answers most questions. Let me know if you have more.
Categories: Lightning

Call Me Al

Firefox in Cats

Sat, 2009-01-03 21:55
You know you've spent too long with your web browser when you see a picture of a cat and think of Firefox.

Does this blog still work?

Thu, 2008-12-04 19:46
I've been told that Tim Berners-Lee wishes that he could go back and make URLS be com.yahoo.www instead of www.yahoo.com. Is it too late for that? How about a Firefox addon to do that? It would help detect phishing faster, right?

Portable Firefox

Thu, 2007-12-20 16:04
Since Mozilla Firefox 3 is still in beta, I wanted to test it out without it potentially destroying my existing profile. Also, if there is anything that would block my everyday usage, I wanted my old profile to still work. So today I downloaded Mozilla Firefox, Portable Edition 3 Beta 2. The first thing that jumped out at me was that since I was copied over my profile and I'm using Personas, things mostly look the same. The URL bar is a little bothersome when I'm typing in a URL, but I think that will just take some getting used-to. The tab-bar has a thick gray line under it so I will probably have to play with my userChrome.css again.

I have 9 extensions which are not yet compatible, though I know that several of them were tagged as ok for previous alpha and beta versions of Firefox 3. Unfortunately one of the disabled addons on Nightly Tester Tools, so I can't mark the others as compatible.

I can live without the other extensions for a short time, but before I can switch to Firefox 3, I need IE tab to be updated. I have to use IE for several intranet sites at work and this provides them seamlessly (except for the one website that seems to detect Firefox before IE Tag kicks in).

I haven't really been bothered by Firefox's memory usage, but I'm happy to see the recent progress.

Camino Update

Checkins Between July 11, 2006 and December 31, 2006

Sat, 2007-03-31 21:10
Camino "1.1" is just a few short weeks away as we wrap up some final changes and fixes. Below is the first half of a list of all the bugs that have been fixed since last time we gave a list of fixed bugs. Be careful though, it's a long one...

(Also note: any bugs that were fixed as a result of regressions from new features probably aren't listed.)
  • Bug 151093 - Move tab-set bookmarking UI to Bookmarks menu
  • Bug 152147 - Ability to save session state
  • Bug 155956 - Zoom command is "maximizing to fill screen" instead of to fit contents
  • Bug 159337 - Disable "View Source" from menu/key command when source is in view
  • Bug 164733 - Multiple tabs painted redundantly on background tab load/reload
  • Bug 179041 - Audit click-through state of toolbar buttons
  • Bug 181712 - Menu item for "default font size" (also indicate current text/font zoom value/size?)
  • Bug 181721 - Disable menus commands when sheets or dialogs are frontmost
  • Bug 188679 - Enhanced tooltips with URL for some Toolbar icons
  • Bug 202337 - Make Camino use the same passwords in the Keychain as Safari
  • Bug 235863 - Show/Hide Bookmarks toolbar button does not indicate state
  • Bug 236674 - Separator appearance should be that of a separator in bookmark manager.
  • Bug 240760 - cmd-F (find dialog) should focus quicksearch when organizing bookmarks
  • Bug 244116 - Unable to delete bookmark folder that is flagged as Dock Menu + cannot remove from Dock
  • Bug 247837 - Trigger autocomplete options for url using down arrow key.
  • Bug 271943 - "Show History" should be in "Go" menu
  • Bug 275170 - Change "Go" menu to "History"
  • Bug 277706 - Need pref UI to control tabbing navigation between form elements and web page links
  • Bug 280827 - Preferences toolbar needs help tags (tooltips)
  • Bug 285531 - Pressing the Escape key does not close the preferences window
  • Bug 288814 - Need to disable the "+" button/menu items in History/Top10/etc.
  • Bug 288980 - Add "View (reveal) in Bookmark Manager" contextual menu item for folders in the Bookmark Bar.
  • Bug 290212 - Implement bookmark folders' "Open in Tabs"/"Open in New Tabs" with alternate menu items
  • Bug 295165 - 32x32 versions of fileHtml.icns and fileBookmark.icns (icons) have a stray white pixel in the upper-right.
  • Bug 298932 - cmd-shift-d should both open and close (toggle) the Download Manager window
  • Bug 300304 - Bookmarks Bar buttons should darken text on mousesdown
  • Bug 300905 - Send "en-US" if "en" is first in language list and no other English dialects present
  • Bug 303193 - Make error pages look less like Windows and more like Camino/Aqua
  • Bug 303628 - Bookmark keywords with spaces gives "Invalid URL" error if entered in address bar (do input validation on keyword entry)
  • Bug 304061 - Refresh (reload) button disabled while page is loading
  • Bug 306396 - Don't show wyciwyg URLs in location bar
  • Bug 308062 - Trust CA dialogue: "trust this certif for" options text is cut off
  • Bug 310395 - Open Link in New Window - new background windows open with Address bar focused
  • Bug 313027 - Can't drag plain text url to tab bar
  • Bug 313740 - Dragging bookmark from Safari to Camino removes bookmark rather than copies
  • Bug 316232 - Add ability to pass RSS/Atom feeds detected on a page to a helper app
  • Bug 317952 - When downloads window is active, bookmarks in folders in bookmarks bar ignore tabbed browsing prefs
  • Bug 318888 - Color of download icon in prefs should match toolbar icon
  • Bug 319408 - "Page Info" should be in the View menu
  • Bug 319746 - Bookmark info panel's minimum size is too small.
  • Bug 319879 - Loading bookmarks with keywords doesn't allow popups
  • Bug 320668 - Dragging a bookmark into the tab bar creates a background tab, regardless of pref
  • Bug 322093 - Camino initial bookmark import APPEARS to hang and stall w/ large bookmark imports
  • Bug 323718 - Crash in [FindDlgController getSearchText:]
  • Bug 324306 - No interface for allowing a user to manually specify which cert to log in with
  • Bug 324907 - scrollbars=no ignored in window.open() (again!)
  • Bug 325845 - Esc should cancel incomplete edit, not commit it, when closing Bookmark Info panel
  • Bug 327203 - First item in pref pane gets focus even when OS pref says not to
  • Bug 327488 - [10.4] Can't drag page proxy to mail.app compose window
  • Bug 327966 - disable Bigger/Smaller Text in about:bookmarks/about:history
  • Bug 328737 - Destination should be consistently remembered when saving bookmarks
  • Bug 330534 - In Cookies list, session cookies show as expiring on current date
  • Bug 331331 - Change popup blocker's color
  • Bug 331576 - "Dynamic" determination of locale string for UA
  • Bug 331670 - "Search" CM item needs to respect new & background keys/toggles
  • Bug 331745 - "Email This Link…" doesn't appear for links whose "content" is an image
  • Bug 331839 - View Source menu command does not respect shift modifier
  • Bug 332542 - Bookmarking a tab group uses frontmost page title, confusing users
  • Bug 333222 - Buttons not disabled when they should, if toolbar buttons are text-only
  • Bug 335637 - "Backup" and "Backup all" should be "Back Up" in the Certificate action menu
  • Bug 336017 - keyword.enabled doesn't work in Camino (1.8branch and trunk)
  • Bug 336216 - Tabs don't do mouse tracking correctly across key window changes
  • Bug 337570 - Description field in BookmarksInfoPanel.nib has no focus ring when active
  • Bug 337958 - Dragging folder/tab group from Bookmark Bar to tab strip should respect shift toggle
  • Bug 338694 - clarify and improve the behaviour of keyboard shortcuts for the bookmark bar (cmd-1..cmd-9 doesn't match safari)
  • Bug 340099 - Give bookmark "mouse down" appearance when using cmd-1 through 9
  • Bug 340273 - Can't drag proxy icons from tabs to location bar if focus is outside location bar
  • Bug 341278 - Status bar priority
  • Bug 341897 - Show bookmarks/history should make a new window when window is minimized
  • Bug 341967 - Popup blocker notification text doesn't wrap properly
  • Bug 341974 - pop-up blocker's close button has no mouseover feedback
  • Bug 342097 - Replace _LSCopyApplicationURLsForItemURL with LSCopyApplicationURLsForURL when we move to the 10.3 SDK
  • Bug 342232 - Disable various menu items when window/tab contains binary content
  • Bug 342237 - disable view-source contextual menu item when viewing binary content
  • Bug 342594 - Reload button and menu-item should be disabled when about:blank page is loaded
  • Bug 342624 - Change phrasing of "Advanced" button tip in Appearance/Fonts
  • Bug 342780 - Cmd and Shift modifiers for "View Image" don't work when pushing command after opening context menu
  • Bug 342951 - "Warn me when" is not in the keyboard loop in General prefPane
  • Bug 342956 - [ad-blocking] Block some common/repeat offender imdb flash ads
  • Bug 342995 - "Auto fill password in web forms" in Privacy prefpane isn't validated/invalidated on prefpane open
  • Bug 343046 - Fix cosmetic issues with the Downloads prefPane
  • Bug 343070 - Correct margins in history preference pane
  • Bug 343299 - Spell-check context menu missing Ignore and Learn Spelling entries
  • Bug 343762 - Zoom All zooms downloads window (even when it's not visible)
  • Bug 343767 - Implement Force Reload and Force Reload all in Contextual Menus
  • Bug 343837 - SSL2/weak ciphers disabled messages contain "(null)" instead of "Camino"
  • Bug 343852 - Host verification dialog has button "Stop"
  • Bug 343941 - Audit Localizable.strings (and other .strings files) for typos/style guide and clarity
  • Bug 344036 - Give certain pref checkboxes 'mixed state' look when neither on nor off
  • Bug 344328 - Cosmetic Polish for Privacy Preference Pane
  • Bug 344356 - Autofill username/password only fills the first form
  • Bug 344958 - Add hidden preference for turning off tab jumpback
  • Bug 345419 - "Use as Dock Menu" menu item for the current dock menu folder should reset Dock Menu to default folder
  • Bug 345552 - Remove a pre-panther check
  • Bug 345657 - Syncronize cmd= and cmd+
  • Bug 346111 - [10.4] javascript:alert() typed in location bar doesn't close if loaded from autocomplete drop-down
  • Bug 346130 - "Reuse the frontmost window" is dangerous
  • Bug 346132 - Block Popup Windows By Default
  • Bug 346135 - Use icons only on toolbar by default
  • Bug 346228 - Use file's actual icon for site icon (favicon) for local files
  • Bug 346492 - Preferences toolbar state (icons and text, icons only, etc) not remembered across launches
  • Bug 346772 - First item in History search results has all disabled items in context menu
  • Bug 346782 - Bookmark toggle behavior is broken
  • Bug 346792 - Omnibus ad-blocking bug for August
  • Bug 347111 - Bookmarks Manager prevents bookmarking of other tabs
  • Bug 347211 - Jumpback doesn't work with "Open link in new tab" from link contextual menu
  • Bug 347498 - Disable Email Page Location for all about:URIs
  • Bug 348160 - Ad-blocking blocks attachments in Gmail
  • Bug 348423 - Camino fails to honor the pref for redirecting window.open links
  • Bug 348695 - No spelling items in context menu in Midas iframes
  • Bug 350482 - Make bookmarks bar the default collection selection on add bookmark dialog
  • Bug 350806 - Make Go menu history items respect the cmd/shift modifiers properly
  • Bug 351124 - Omnibus ad-blocking bug for September
  • Bug 351373 - Can't use keywords with "Open URL in Camino" Service
  • Bug 352078 - RSS selection menu looks weird when there's no default feed app inserted
  • Bug 352265 - Streamline tab prefs
  • Bug 352293 - Should show standard mouse cursor instead of text cursor when hovering over RSS icon
  • Bug 352448 - "Feed Preferences..." menu item does not activate General prefs pane
  • Bug 352827 - Appearance pref pane leaks font mapping table on every load
  • Bug 352922 - Override some generic strings in netError.dtd and config.dtd with "Camino"
  • Bug 353221 - "Don't warn again" checkboxes can become polluted
  • Bug 353391 - Camino ships 2 copies of the table images
  • Bug 353433 - Preference window slow to open
  • Bug 353753 - Remove MoCo from EULA
  • Bug 353920 - Add about:license to About Camino
  • Bug 353964 - Popup menu for select widgets appears too far up.
  • Bug 354002 - [l10n] Missing string for FeedAppDoesNotExistExplanation
  • Bug 354701 - MS Exchange Web Access kills window upon download finish with SWM set to "reuse"
  • Bug 355033 - Keychain password prefs need clarification
  • Bug 355037 - drag a file with a .URL extension.
  • Bug 355073 - Omnibus ad-blocking bug for October
  • Bug 355080 - prettify about:config warning
  • Bug 355204 - Add Bookmark Sheet's "Bookmark All Tabs" Checkbox should read "Bookmark Current Tabs as Tab Group"
  • Bug 355714 - Optimize tab close button hover tracking
  • Bug 355808 - Popup suppressed silently
  • Bug 355851 - Bookmark bar separator shows title during drag
  • Bug 355912 - Camino hangs when doing "Clean Up" on a big list of downloads
  • Bug 356100 - Location/Search split view doesn't enforce min widths during window resize
  • Bug 356166 - Remove 10.2 runtime checks/fallbacks
  • Bug 356480 - Enable spell-checking by default for all text fields
  • Bug 356708 - Implement automatic bookmarks backup for 1.1
  • Bug 357080 - Camino perf is very slow when deleting a large number of bookmarks
  • Bug 357597 - Popup blocking preferences allow input when no data is in whitelist URL field
  • Bug 358472 - Search field should not allow control characters
  • Bug 358620 - Switch to use native NSSearchField widget in Bookmark Manager
  • Bug 358686 - pop-up blocker message text is confusing
  • Bug 359218 - Make Camino use 10.3.9 SDK
  • Bug 359334 - Download language is confusing
  • Bug 359557 - Omnibus ad-blocking bug for November
  • Bug 359826 - Relocate "Block Web Advertising" checkbox to prevent confusion with pop-up exceptions list
  • Bug 359907 - Bookmarks Aren't Deleted from Bookmarks Menu After Deletion from Bookmarks Manager
  • Bug 360644 - Rename Show/hide bookmarks button and manager
  • Bug 360779 - Drag n drop links to open tab causes leftmost tab to load link
  • Bug 361001 - Bookmarks import only imports iCab 2 bookmarks, not iCab 3 bookmarks
  • Bug 361016 - Needed an alternate command to zoom to "maximize to fill screen"
  • Bug 361017 - Remove compile-time 10.2 cruft
  • Bug 361049 - Zooming to fit contents fails miserably
  • Bug 361163 - Remove window state on quit when save pref is off
  • Bug 361838 - Some valid .url files fail to open properly
  • Bug 362067 - Tab groups in bookmark menus need alternates
  • Bug 362541 - Tooltips for Download toolbar buttons should update to reflect the number of items selected
  • Bug 362543 - Keyboard shortcut for "Clear History…" doesn't work until after menu is shown
  • Bug 362609 - Change font of example label to match default proportional font type
  • Bug 363435 - bookmark keywords are case sensitive
  • Bug 363600 - Periodically auto-save window state for crash recovery
  • Bug 363680 - Bookmark Info should be disabled for menu spacers
  • Bug 364075 - Separator sometimes is sometimes displayed as generic bookmark in bookmarks bar

All of the above changes should be in today's branch nightly and in all branch nightlies after December 31, 2006.

Camino 1.1 Beta Released

Sat, 2007-02-24 01:31
We've just released Camino 1.1 Beta.

While we consider this beta release feature complete, there still might be issues which could hamper day-to-day browsing (though the new, built-in session saving will largely help with any crashes that may happen).

As always, please report any bugs you find.

Pending our remaining bugs and any new issues, Camino 1.1 is right around the corner.

Camino 1.1 Alpha 2 Released

Wed, 2007-01-10 18:59
We've just released Camino 1.1 Alpha 2.

This release (along with 1.1a1) is the culmination of months of work and is a good indicator of where we are in our work toward Camino 1.1.

The beta page has been updated with information on the release.

Please note that this release is not our stable version; please download Camino 1.0.3 if you want our stable version. As such, make sure to backup your profile before using this release and report any bugs you find, specifically those in new features or those that are regressed from Camino 1.0.3.

Also, because this isn't a final release, please don't submit this release to MacUpdate, VersionTracker, or other such software trackers. We want our users using the stable version of Camino.

(This was going to be up yesterday morning, but, well…. It's flu season.)

cbeard's mozilla blog

Toward Multitudes

Tue, 2008-08-05 11:04
As discussed during the Summit last week, Mozilla Labs is now reaching out and calling for participation in exploring possible future directions for the Web. In particular, we're hoping to engage the wider design community who have not traditionally been involved in open source projects or design. The first iteration of the concept series will hopefully provide additional ways for designers and other non-programmers to participate and become part of the Mozilla community. Our hope is that new voices, ideas and concepts will challenge our collective thinking, facilitate discussion and provide inspiration. Learn more about the concept series at: http://labs.mozilla.com/2008/08/introducing-the-concept-series-call-for-participation/
Categories: Mozilla

Quick Update on What's New in Labs

Sat, 2008-04-05 14:59
Last week we launched major updates to a number of Mozilla Labs projects, including Weave and Personas. We also introduced a new project, Test Pilot, to propose a new user testing framework and community. Please do check them out and let us know what you think! In less than six months, with little to no marketing or promotion, Personas has already gained a significant following with more than 200,000 unique users and growing daily. We're now working toward having a 1.0 release ready for the launch of Firefox 3. Thousands of people are also helping with the early testing of Weave. The core data synchronization components are becoming increasingly solid, with bookmarks and browsing history securely reflected into the cloud and seamlessly synchronized across all of your devices. We're aiming for a beta release of this base functionality (along with support for additional browser metadata) in time for Firefox 3 while work continues on building out the platform and its data sharing capabilities. We also had an opportunity to speak with some bloggers recently, and you can see some of the coverage here: Firefox 4 will push out the edges of the browser (Rafe Needleman, Webware|cnet) Mozilla wants to put a Firefox in the cloud and your pocket (Ryan Paul, Ars Technica) Special thanks to Dan Mills and his tireless efforts to advance Weave, Myk Melez for helping to take Personas to another level and one step closer to a production release, Atul Varma for putting together the glue that binds the Personas back-end together, and to everyone who has submitted bug reports, feature requests, and has helped with the testing so far.

Welcome to Jono DiCarlo, Aza Raskin and Atul Varma

Mon, 2008-03-31 11:23
As previously announced we've made some additions to the Mozilla Labs staff. Today marks the first official day with Jono, Aza and Atul working full-time for Mozilla. They are now based out of the Mozilla Labs compound in Mountain View, Calif. Please joining me in welcoming them to the team! We're looking forward to moving even faster as we roll out new programs and continue to build out a virtual labs where people can come together to create, experiment and play with new ideas.
Categories: Mozilla

chase&apos;s blog

The endtimes patch for Tinderbox has landed

Thu, 2006-07-13 16:12
Over in bug 334592, justdave and morgamic were to address the patchy nature of the tinderbox.mozilla.org install. The bug had slipped by me when it was originally filed and I discovered it only a couple of weeks ago. Based on LOC I'm the biggest transgressor, so last week I finished up (or at least pushed along) the project I started last year of updating the Tinderbox waterfall display for accuracy's sake. I tossed the current Tinderbox install into my brushed nickel patch collander and out came 10 patches, each now attached to the bug. The biggest of these was my "new fangled display/endtimes" patch which cls and bear have already got checked into Tinderbox's CVS home. Doing the original work in June 2005 took much effort and it's great to see that work through so others can have access to this code for their Tinderbox installs....
Categories: Mozilla

The 2nd National Summit for CWNs

Fri, 2006-03-31 02:42
The Second National Summit for Community Wireless Networks will be held this weekend in St. Charles, Missouri and I'll be speaking during the Open Source Wireless session. If you're suitably interested and in the area over the weekend, check it out!...
Categories: Mozilla

ISO The Mozilla Project's Identity

Sun, 2006-03-26 21:46
At the Firefox Summit in December 2005 during the Mozilla Project Dynamics talk, Mitchell posed the question of what concerns we had as changes occurred within the Mozilla ecosystem. The concern I mentioned was that as the changes happened, we may forget who we were. It was a concern of an identity crisis. But as I vocalized my concern, I realized (and spoke) that I wasn't sure the community was even conscious of its own identity. Those present nodded in agreement. How could this problem come about? I don't believe it's the result of anyone's miscalculation. It likely stems from an informal group dynamic. The project is open source. One can get at the code without signing documents, or agreeing to the project's mission. The project is what people make of it. When people become a part of the community, prove themselves, and move into positions of responsibility throughout the project, no one's required to state an oath to selected principles. The "shared knowledge" in our community is a common phenomenon among projects of all sizes. But as we've grown from small to large, shared knowledge that's not written down has become a detriment. These are a few things that lead to a big problem: No one knows why the other is here. So what unites us? Are we united by a cool app? By many cool apps or the prospect of a cool app? Are we united by purpose of freedom? By community? Are we here for what could come? Is the process part of the reward? Or do we exist in a vacuum of values, where utility derived from the code is irrelevant to our communal interactions? We are a bohemian collective of tech rebels and stalwarts. Sometimes we are our own producers and our own consumers. We are for our users. We are for open source projects. We are strong and unsure. Weak and wise. We provide a means for others' expression (such as Flickr, IBM, and Google on the web and with email). We can be method without soul, or soul without expression. Can we simply be what we choose to be? What do you think Mozilla is all about? I welcome you to offer your views for what you see as the Mozilla project's identity in comments below....
Categories: Mozilla

chofmann&apos;s weblog

7 Things

Fri, 2009-01-16 00:26
Axel tagged me. I'll get even with him some how, some way. seems like planet is already way overloaded and now this. oh well, I can't resist testing the power of the network that is the firefox/mozilla nation. The *one*...

New PC Retailer Gives Discount to FireFox Users

Fri, 2008-01-04 14:10
Cool! http://www.prweb.com/releases/2008/1/prweb601572.htm...

Active X Migration Guides?

Fri, 2007-05-18 12:30
Doron and others have produced a great guides that help in migrating away from proprietary IE features that aren't available in browsers that support and are compliant with web standards. Stuff like http://developer.mozilla.org/en/docs/index.php?title=Migrate_apps_from_Internet_Explorer_to_Mozillahttp://developer.mozilla.org/en/docs/index.php?title=Migrate_apps_from_Internet_Explorer_to_Mozilla Does anyone know if similar guides, case...

Chris Ilias' Blog

7 Things

Sat, 2009-01-24 18:48
  The Swedish rockstar David Tenser tagged me. Rules: Link to your original tagger(s) and list these rules in your post. Share seven facts about yourself in the post. Tag seven people at the end of your post by leaving their names and the links to their blogs. Let them know they’ve been tagged. Things: I used to work as an audio engineer [...]
Categories: Personal

Everything is just a few hundred clicks away

Tue, 2009-01-06 23:08
   Apple Introduces Revolutionary New Laptop With No Keyboard Hilarious!
Categories: Personal

Canada wins Gold!

Tue, 2009-01-06 16:10
  Look at the score and the time left in the game… Canada vs Russia 2009 WJHC last seconds WPvideo 1.10 Download!
Categories: Personal

Christopher Blizzard

watching the firefox 3.1 beta 3 release on social media networks

Fri, 2009-03-13 14:06
At Mozilla we do a lot of releases. Every few weeks, we’ll do a minor release to fix security issues and improve the reliability of the browser. On the 3.0 branch, for example, we’re up to Firefox 3.0.7.  7 releases in 9 months is a pretty blistering pace.  For a long time we [...]
Categories: Communities

quick tip: open web video and mime types

Mon, 2009-03-09 17:59
A quick note if you’re going to be using OGG open web video hosted on web servers.  There’s an important configuration change that you should make so that Firefox recognizes it as video.  In my Apache configuration I’ve added this directive: AddType application/ogg .ogg AddType application/ogg .ogx AddType video/ogg .ogv AddType audio/ogg .oga Most web servers are likely to return [...]
Categories: ogg

yeah, this is worth a post

Sun, 2009-03-01 22:57
Thanks to Sarah and iPhoto ‘09 for this one.  I’m told that you can still buy these shirts at Xiph’s t-shirt store. Pretty awesome.
Categories: humor

Coop

Kutiman

Thu, 2009-03-12 20:22
So apparently I’ve been living in a cave, but at least now my cave has streaming Kutiman in it. The music reminds me of Digable Planets meets DJ Shadow, but the youtube mashup videos take it to another level. This stuff is too awesome to not get sued out of existence.
Categories: Music

The Whedonite’s Dilemma

Tue, 2009-03-03 11:56
Damn you, Tycho, for being right. I understand that to survive past 4 or 5 episodes, new shows on Fox need to be front-loaded with sex and violence, but in its current form, Dollhouse is not a particularly enjoyable show. I’m waiting for Once More, With Feeling, but all I’m getting so far is War Stories. [...]
Categories: TV

Buffy, Abridged

Mon, 2009-02-23 17:58
Kev posted this link this morning: 7 Years of Buffy in Under 4 Minutes Needless to say, I think it’s awesome. I can’t believe how many times I caught myself thinking “oh, i can’t wait until they show *that*” while watching it.
Categories: Pop Culture

craigslist | internet engineering jobs in boston

student for contract web-site development

Fri, 2009-03-13 11:23
Student experienced in web site creation sought to help create
web sites for small business. Contract position, students only
please. send along samples of your work.

Portuguese Web designer/builder (Framingham)

Thu, 2009-03-12 13:17
Our client seeks a Web designer/builder who is fluent in Brazilian Portuguese to design and build a Portuguese language Website targeted to the Brazilian communities in the US. Terms, conditions and pay rates are negotiable. This will not be a permanent position but may have on-going maintenance involvement.

Rakuten USA, Jr. Ruby Developer (Prudential Building, Boston)

Wed, 2009-03-11 09:56
Rakuten USA – Junior Ruby on Rails Web Developer

Prudential Building, Boston, MA

Are you a Web Developer with experience working on Consumer Websites? Do you like the idea of working for a company that isn’t a non-profit, but works to help others? Are you dedicated to working with the most cutting-edge technology? If so, now is the time to learn more about Rakuten USA!

Rakuten USA is a division of Rakuten, one of the largest Internet service companies in Japan. Although Rakuten is a large company, Rakuten USA has a small, laser focused team with a startup vibe. The current focus of Rakuten USA is the OneCause website.
OneCause is a web community providing simple ways to turn thousands of consumers' everyday purchases into much-needed contributions to more than 30,000 causes and schools nationwide. OneCause empowers consumers who care about doing good to improve their world by making their everyday purchases make a difference.
Junior Web Developer

Under the direction of our Director of Technology, our new Developer will be responsible for application system design and development in Ruby using Rails and other Ruby based frameworks.


Required Skills and Experience:
• Bachelor's degree in Computer Science or related field.
• Experience with MySQL or Oracle, or other compatible SQL and PL/SQL.
• Solid experience designing and programming in Ruby on Rails in an Agile Development environment.
• Experience or familiarity with Unix/Linux, REST, Web Services, XML/XSL, AJAX, Ruby on Rails, JavaScript, HTML, CSS, Mac OS.
• Experience with Test::Unit, RSpec, and Shoulda
• Strong verbal & written communication skills. “Team Player” mentality is a must.
• Excellent problem-solving skills.
• Ability to work in a fast-paced results-driven environment.
• A Fascination with technology and a drive to succeed.
• Experience with, and interest in; social networking, social shopping, e-commerce, affiliate marketing, ad networks and/or consumer websites.
• Aptitude for standard project lifecycle practices including source code versioning control and maintenance.
• Experience with open source projects, involvement in development community a plus.

To Apply, Please Click Below:
http://tbe.taleo.net/NA11/ats/careers/requisition.jsp?org=LINKSHARE&cws=3&rid=60

Creating Passionate Users

My Favorite Graphs... and the future

Fri, 2007-04-06 15:00
This blog has always been about optimism, creating better user experiences, helping users spend more time in flow, and learning. There are 405 posts here. More importantly, there are nearly 10,000 comments from y'all that add so much more to...

My Favorite Graphs... and the future

Fri, 2007-04-06 15:00
This blog has always been about optimism, creating better user experiences, helping users spend more time in flow, and learning. There are 405 posts here. More importantly, there are nearly 10,000 comments from y'all that add so much more to...

My Favorite Graphs... and the future

Fri, 2007-04-06 15:00
This blog has always been about optimism, creating better user experiences, helping users spend more time in flow, and learning. There are 405 posts here. More importantly, there are nearly 10,000 comments from y'all that add so much more to...

croczilla/blog

Cross-Browser Oni

Thu, 2009-02-26 20:25
var Print = SLift(function(mes) { document.write(mes); }); Print("Hello, cross-browser world!").run(); One piece of feeback I took away from my recent FOSDEM talk was that Oni should really be made cross-browser. So after spending some time weeding o...

Oni@FOSDEM2009

Fri, 2009-02-13 19:05
The slides from my FOSDEM talk on the structured concurrency framework Oni are now available online here (pdf). 30 minutes before I was due to give my talk I discovered to my horror that I forgot to bring along a mini DVI to VGA adapter to connect my...

Taming concurrency with Oni

Mon, 2008-12-15 20:08
Here is something that we're trialing in Zap to tame the rat's nest of callbacks that highly concurrent JavaScript tends to evolve into: Oni is a framework for managing the control flow of concurrent applications. There are two central ideas to Oni: ...

CSS Beauty News Feed

Headed to SXSW

Wed, 2009-03-11 12:39
Headed to SXSW. I'll be heading to SXSW once more this year, so if you see me come say hello. I'll be carrying around a few buttons to give away as well.

Conditional-CSS

Tue, 2009-03-10 22:19
Conditional-CSS . Allows you to write maintainable CSS with conditional logic to target specific CSS statements at both individual browsers and groups of browsers.

Farewell Digital Web Magazine

Sun, 2009-03-08 13:19
Farewell Digital Web Magazine. As of today Digital Web Magazine has officially ceased publication. Thanks Nick & team for being an inspiration for these many years.

css thesis

Playground Blues

Tue, 2007-05-22 03:00

Coda

Tue, 2007-04-24 03:00

electric pulp

Sat, 2007-03-24 03:00

CSS Vault Gallery

Groove Commerce

Sat, 2009-03-14 03:00

Groove Commerce

Groove Commerce has been designing beautiful web pages for our clients for 2 years now, and our site needed a redesign. So we took time out of our schedule of client work to develop and design the current site. It is a wordpress site with brilliant call to actions, and is xHTML and CSS valid (besides that pesky thickbox.css!)

CSSVault brought to you by HostGator

Categories: Gallery

Insight Studios

Fri, 2009-03-13 03:00

Insight Studios

This is our portfolio site for our design & development studio... we redesigned it this past summer and just found out about his great site. See what you think!

CSSVault brought to you by HostGator

Categories: Gallery

Viewsonic

Thu, 2009-03-12 03:00

Viewsonic

ViewSonic's 2008 redesign combines YUI, CSS Sprites and fleXcroll among other lovely JavaScript goodies that make each page fun to navigate.

CSSVault brought to you by HostGator

Categories: Gallery

CSS Vault Resources

Web Hosting Pages

Tue, 2008-10-21 03:00
Categories: Web Hosting

Web Hosting Pages

Tue, 2008-10-21 03:00
Categories: Web Hosting

MaKo 4 CSS

Mon, 2008-06-16 03:00
Categories: CSS+Javascript

Dan Rubin's SuperfluousBanter

The Final Word on IE6

Wed, 2008-09-03 11:19
A friend of mine recently asked the question "Why the Hate on Internet Explorer 6?" He explains some very logical reasons why it doesn't make sense to be so negative about IE6, and as I agree with him on just about all points, I thought I'd give the clearest answer I could.
Categories: css

Regex Patterns for Single Line CSS

Fri, 2008-08-29 09:30
Single-line CSS formatting has its uses (and plenty of pros and cons), but if you've been staying away from it for fear of the time-consuming conversion process from your normal multi-line formatting, here are some regular expressions you can use to make the conversion easy.
Categories: css

Simple CSS Hover Tab Thingy

Tue, 2008-08-19 10:52
Ok, so the name won't win any awards, but let's be honest: neither will this mini-tutorial, or the idea itself (nothing groundbreaking here, move along...). But after throwing together a quick little (you guessed it) hover/tab/thingy for my previous article, I thought I was fun enough to share, in case you find a need for it someday.
Categories: css

Dave Shea's mezzoblue

Sprite Optimization

Tue, 2009-01-27 19:35
Maybe I haven't been paying close enough attention, but over the past few years an interesting variation of CSS Sprites has been getting a lot of play on large web sites that serve millions of users.

Graceful Blame

Tue, 2009-01-06 16:14
Yes, it's bothersome when my work is ripped off. I spend a lot of time crafting custom code, designing what I think are great layouts, illustrating or writing copy. And then some random person out there on the internet grabs...

Not a Test

Sun, 2009-01-04 02:41
It's a new year, so it's time for a slight change of direction. I've come to realize that my content-creating has become a lot more distributed, which means the long-form post format of this site has been seeing less and less love in recent years. So for the past month I've been working on a way of piecing together content I produce on other sites and funnel relevant bits into a stream that I could present on this site. You're now seeing the result.

del.icio.us/anthony_park

Human Behaviour

Thu, 2009-03-05 06:17
Signage makes all the difference in how we make simple decisions.
Categories: Usability

Readability

Tue, 2009-03-03 13:45
Cunning bookmarklet which aims to strip down a web page to the basic content, nicely styled based on a few user-set options. Very useful.

TinySong

Wed, 2009-02-25 06:41
A pretty nifty way of sending someone a link to listen to pretty much any track.
Categories: music web-service

del.icio.us/oeschger/mozilla

Monkey Bites

Sun, 2006-10-15 08:48
Categories: mozilla opensource

Design by Fire

This page intentionally left blank

Fri, 2008-10-31 04:09
While it's been forever and a year since I've written a new blog post, I do want to let folks know I have been writing. In case you've missed it, I'm the new Desktop columnist for PRINT Magazine. You can always find my articles at their website or better yet, go buy the magazine since it's one of the few design publications that's worth paying a subscription for in my humble opinion. My most recent articles: Open Range Click to Run Coming Interactions (Dec 2008) I'll update this list as articles are published. And while I'm proud of the final results, I can't take all of ...
Categories: design

Keeping up with the Joneses

Thu, 2007-08-16 23:59
Interface designers are limited by the constraints of technology even more so than other design disciplines at this point in time. That is to say, what is possible to design in today's software is not nearly as far advanced as what other designers achieve in other design disciplines. Architecture and print have had hundreds of years to evolve their core design principles and the technology used to produce their work. Automobile designers are now enjoying a level of technological progress in their field that enables them to achieve amazing feats at a lower cost that still yields great design these ...
Categories: design

Introducing Spivot

Mon, 2007-03-05 13:34
Well, the downtime on Design by Fire was unexpected. I have been wanting to post this particular message for quite some time, but have had to hold off due to a number of delays that simply couldn't be avoided. But that's all done now. I can now announce the latest project myself and other folks at Involution Studios have been working on recently. What is Spivot? Simply put, its an RSS reader at its core. But don't let that part fool you. It's also much more. My hope is that with the design and implementation we chose, Spivot will actually wind up ...
Categories: design

dive into mark / planetmozilla

Immersed in the Googleplex ball pit

Sun, 2009-01-11 17:28
Michael and Mark in ball pit in Googleplex building 42
Categories: Personal, unfiled

A gentle introduction to video encoding, part 5: constraints

Thu, 2009-01-08 22:11
There is no right or wrong. There is only what works and what doesn't.
Categories: encoding, GIVE, unfiled, video

A gentle introduction to video encoding: the slides

Thu, 2009-01-08 18:27
My tech talk went extremely well. I can't share the video because we talked about some internal Youtube stuff, but here are the slides.

dmose&apos;s blog

design of BCC functionality

Wed, 2009-02-18 16:52
@TwitterHR For Future Reference, Use BCC When Rejecting Applicants is an unfortunate story with some design implications.  In Thunderbird and many other messaging clients, BCC is framed in the UI as "just another header", which seems like an invitation to unintentionally confuse it with CC.  Given the relative (in)frequency of its use, how should BCC functionality be designed?  I've heard a good argument made that the way email works today (just adding a header) is inherently poor UI, because it doesn't provide necessary context to the blindly copied recipient about why they were copied and what action, if any, is expected of them.  Of course, for cases where communicating those things is necessary, users presumably "should" be forwarding the message instead of using BCC....

Spammers Are Such Nice People

Fri, 2009-01-23 23:20
Some fine netizen has been splattering the Mozilla mailing lists with hateful political spam using my name and email address over the last several days. Enough folks have sent me "Hey, that wasn't really you, was it?" messages that I figured it would be worth making a public statement: No, I categorically don't do that sort of thing. At all. Ever. From the backscatter I've been getting, I know that spammers have been forging my email address forever. This is the first time it's been plastered all over mailing lists that co-workers and I use, however. Hopefully, it won't be too long before bugs 356704 and 240169 add some SPF and/or SRS love to the picture so that this stops happening....

Thunderbird 3.0b1 renamed to 3.0a3

Tue, 2008-09-30 13:38
After talking with a bunch of folks in the last couple of days, we (thunderbird-drivers, in concert with the folks on our weekly status call) have decided to rename our immediately forthcoming milestone from 3.0 beta 1 to 3.0 Alpha 3.  A number of things have led us to this conclusion:* we ended up not landing a bunch of stuff for this milestone that we had initially hoped to (AutoConfig, GloDa w/full-text search, STEEL)* there is still a lot of highly user-visible feature work left to do (the above stuff, tab model overhaul, significant message view work, global Inbox, search bar stuff, calendar integration, ...).* calling something a beta is likely to trigger a bunch of extra press attention that we're not yet in a position to deal with -- some number reviews that will be inappropriately pre-judging Tb3 based on its current state. In the best case, this would be a distraction.While we've been pretty clear for a while that calling something a beta doesn't mean that we're feature complete, what we've got now feels like it's pretty far from being representative (from a user-experience and user-visible-change point of view) of what Thunderbird 3 is going to feel like.The confluence of these things together makes us think that we'll do better to ship this as an alpha and not call down the extra attention that a beta will bring just yet....

doron&apos;s blaahg: Mozilla Posts

Why Auto Updating Browsers Matter

Tue, 2009-01-27 16:41
Good article at Ars about a browser updating study. No surprise, Firefox users got security fixes first (obviously this applies to all Moz apps that have auto update). Another reason why plugins-as-extensions is such a good idea - plugin updates...
Categories: Firefox

Opera: only 4.13% of the web is standards compliant

Wed, 2008-10-15 22:51
Ars reports on an Opera study that only 4.13% of websites are standards compliant. While it is no surprise that very few websites are completely standards compliant, their methodology seems flawed. Websites are doing more and more dynamic javascript stuff...
Categories: Firefox

IE8 And XSS Protection

Thu, 2008-07-03 00:17
The IEBlog talks about a new IE8 feature that helps prevent some XSS attacks.. While quite interesting, I do wonder if the algorithm should be released as an W3C standard so that browser vendors and others can improve on it...
Categories: Firefox

DougT&apos;s Ramblings

Site Moved

Tue, 2007-12-11 11:38

I am moving this site. stay tuned for details.

Tinderbox for 1.9-browser-chinook-armel

Thu, 2007-11-15 13:34

http://tinderbox.mozilla.org/showbuilds.cgi?tree=Testing

The first arm linux build of firefox. ever.

Lots of stuff to do, but this is a great start.

push out builds
run tests (emulated)
move to different tree
build xulrunner instead of browser

Minimo and Mobile.

Tue, 2007-11-13 12:33

Over the past few years the Minimo project has provided (1) a set of build and runtime options optimized for resource constrained devices, and (2) A XUL-based UI for prototyping and experimenting with new user interfaces for navigating and viewing web content and general browsing on mobile devices.

Recently you have probably read that the Mozilla Corporation is building the embeddable version of Mozilla and a mobile Firefox. In the new and expanded mobile effort the project will create a standards-based open-source browser engine and full open source development stack based on Mozilla technology, optimized for mobile devices, and embeddable on a variety of device targets. This new work will replace the Minimo project.

If you are a developer using Minimo as the basis for your embedding needs, this new effort will help you. This is picking up where Minimo’s build configure left off, and further squeezing and optimizing Mozilla.

Although we haven’t committed to specific platforms, all of the effort that was focused on the Minimo front end will be refocused on this new project. This new browser product will take advantage of lessons learned in minimo UI prototyping and experimentation. It will also include support for XUL-based add-ons, and deliver on Firefox's key principles of ease-of-use and accessibility.

We hope you can join the conversation. Most of the developers and interested people hang out on irc.mozilla.org #mobile. If you have questions, or need clarification, please drop by.

dria.org

Towards a new about:mozilla newsletter format

Wed, 2009-02-25 10:56
The about:mozilla newsletter needs to evolve. It launched about 14 months ago and hasn’t changed at all in that time while the Mozilla project has continued to grow and expand. Based on the feedback I’ve received from a few people, I’m proposing that the newsletter morph from a “light and quick overview of [...]
Categories: Devrel

Dear lazyweb, trying to find a discussion system…

Sat, 2009-02-21 00:34
I’m trying to find a web-based discussion system that has the following features: 1) Web feeds 2) Email gateway for reading/replying 3) Threaded discussions Partial points for two out of three.
Categories: Work

Mozilla Labs website redesign project

Fri, 2009-02-13 10:40
The Mozilla Labs team is launching a grand experiment towards rethinking, redesigning, and redeploying the Labs website, and we need your help. All the details are over on the Labs weblog, and you can join the discussion in the Labs forums. This is going to be a fun and crazy project, and everyone is welcome [...]
Categories: Mozilla

Dunstan&#8217;s blog

A short film of the puppies in the garden

Wed, 1969-12-31 20:00
Video footage of the puppies playing in the garden.

Another short film of the puppies in the garden

Wed, 1969-12-31 20:00
More video footage of the puppies.

A hello-and-goodbye kind of post

Wed, 1969-12-31 20:00
The Girlfriend gets a new job, and Dunstan calls it a day.

Dunstan&#8217;s blogmarks

Mobile web tools

Wed, 2004-08-04 12:00

DWBlog

Inquisitor for iPhone launched

Thu, 2009-03-05 16:10
It took far too long for reasons I’ll never know, but Apple has finally approved the Inquisitor app for the iPhone. Late last year, I released my first iPhone app, Ski Lodge, which brought a unique experience to skiers and snowboarders with the iPhone’s combination of GPS, 3G, and rich user experience. While Ski Lodge [...]
Categories: Inquisitor

NewsFire 1.6 Beta 1

Tue, 2009-02-17 04:26
Hot on the heels of the release of Safari140, I’m pleased to release the first beta of NewsFire 1.6. Similar to Safari140, NewsFire now supports direct posting to Twitter, using the same hotkey shortcut and interface. In addition, NewsFire 1.6 has an updated visual design and now has built in auto-updater support (via Sparkle) [...]
Categories: NewsFire

Safari140 - a Twitter extension for Safari

Sat, 2009-02-14 04:33
Categories: Safari140

eris designs

Frames Per Second Magazine

Wonder Woman Blu-ray Review

Sun, 2009-03-08 18:25


Wonder Woman (2009 - Blu-ray)

The Story:

Pretty good. Exactly what I was expecting. Not as focussed, structurally sound or iconic as i'd hoped but completely serviceable. To be fair, nearly every single criticism I can throw at producer Bruce Timm, director Lauren Montgomery and crew's animated Wonder Woman film can be explained away by it's two most villainous foes - budget and running time.

Read more after the jump:



Scribe Michael Jelenic by way of Gail Simone's story makes a grand effort of attempting to tell the definitive origin of DC Comics' Amazonian princess by amalgamating and slightly reshaping the best and most iconic elements found in the comic book series and on television. This Wonder Woman can't fly like the comics or Justice League cartoon incarnations and won't fight in heels like Linda Carter but is steeped in the Greek mythological background stuff that makes the modern DC version of the character feel timeless. In fact, the film skews heavily toward the sword and sandal tone, only allowing a hint of what Princess Diana's adventures in "Man's World" might feel like. And I think that's where it fails for me.

This fable feels most at home when exploring the lives, characters and mythology of the Amazonian world. It spends a glorious amount of its brief seventy-odd minute run-time focused on the toga/sandal crew and reasonably little on our protagonist's fish-out-of-water, island girl in NYC arc. A grave mistake, if you ask me, as that's where the character really shines, where she becomes the Wonder Woman that we all know and love. That version, the ideal status quo for the character is what the whole narrative leads us to in a denouement which really pays off. But along the way, the rush to explore every nook and cranny of the Amazonian plight leads to a juxtaposition of tone and style that doesn't always work, as if the climax of of Frank Miller's 300 was randomly staged in downtown Washington DC without much explanation. In fact, a lot of things get glossed over or unexplained in this story. Like the Invisible Jet that suddenly appears on the primitive Amazon island, for instance.

And, if the production team's comments are to be believed that sloppiness comes as necessitated by restricted budget and time. Sadly, it seems this vision for Wonder Woman was simply too epic to be contained in a short DTV feature. This is meant to be storytelling writ large and long. The music cues, riffing heavily on Shore's Lord of the Rings (with a little of Kilar's Bram Stokers Dracula thrown in for good measure) tell us as much right off the top. But you can feel the edits, the glossed over details, the deleted dialogue and scenes, the moments you were meant to love that ended up on the cutting room floor or the directors storyboard pages, as it were. I mean, this thing works well and looks good for a short, modestly budgeted video project. But ultimately, it serves best as a blueprint for Hollywood to follow and expand upon as they bring Wonder Woman to life, live-action on the big screen.


The Animation:

Compromise. That's the key word here. Director Montgomery talks often about it in the excellent and fairly candid commentary track on the disc. While this film looks and moves extremely well for a direct-to-video offering, sometimes expertly managing armies on screen, it can't compete with bigger budget films, where movement is perpetually fluid, dynamic and engaging and designs are kept strictly on model. Everything about the animation here is simply serviceable, with a small handful of action scenes being afforded extra attention - notably a beautiful sparring scene between Diana and Artemis early in film, boarded by the talented Brandon Vietti (The Batman, Superman: Doomsday) and the incredible call-to-action denouement by Dave Bullock (Kim Possible, Justice League).

Montgomery's character designs skew slightly toward her Disney influences, a welcome departure from Timm's previous 'house' style. Her large eyed, thin nose faces often look fantastic but are unforgiving and crash hard when Moi Animation Studio gets them even slightly off model. Character shading has a heavy anime influence, with more articulated shadows than previous efforts that, along with nice gradients and diffusion filters give the film depth with a more detailed look than WB animation is usually capable of. Add the occasional visceral, hand-held moving camera, common in modern action films and you have a look and feel appropriate to a PG-13 film.


The Final Word:

I really love that Warner is putting it's muscle behind these DTV releases. Despite any criticisms that I might have, i really enjoy the DC heroes in their various animated incarnations. And I can count this Wonder Woman film among my favourites. With a decent transfer and a handful of compelling features I can't help but give this disc a recommendation. As a PG-13 film, it's clearly focussed at fans and certainly not made for children but most viewers who enjoy animated adventure films will get a kick out of it.

Learn more about the Blu-ray and it's special features in my review over at TheBlurayBlog.com.

New Trailer For Pixar's &quot;Up&quot;

Fri, 2009-03-06 19:19


I'm getting really excited to see Up! I finally watched Wall-E a few days ago and was struck yet again by how brilliant Pixar can be. They so rarely disappoint, knowing exactly how to paint a scene to render it most affecting. I'm expecting the dog with the talking collar in the new Up trailer above to affect my laugh-hard-wet-pants centre quite a bit when the film hits theatres on May 29th.

Click on over to Yahoo Movies for links to the HD versions of the trailer.

Saturday Morning Style Watchmen Animation

Fri, 2009-03-06 15:24


For all five of you who haven't seen this yet, here it is: Happy Harry's "reanimation" of the Watchmen in a classic, Saturday morning animation style, complete with cheese-bag (read: awesome) theme song.

"Strong together, united forever"

For the record, I saw the feature film last night and I'm fairly conflicted. The music is terrible, the acting a mixed bag and the editing questionable but...

...sigh...

...it's kind of sticking with me. Every scene with Billy Crudup's Dr. Manhattan is damn-near pure gold. Almost makes me forget how wooden and stale the rest of the non-action scenes play.

My capsule review (for those who care): Watchmen needed the "Do Androids Dream..." to "Blade Runner" treatment, in favour of the literal "Sin City" approach. Maybe the "Animated" motion comic Blu-ray will get it right?

Frank Hecker - Mozilla

Switching to a new blog

Mon, 2008-02-04 17:06

I'm moving my personal blog to http://blog.hecker.org/; this is the last post in the Mozilla category of this blog (http://hecker.org/mozilla/). My future Mozilla-related blog posts will be published at http://blog.hecker.org/category/mozilla/. If you use a feed reader (which I recommend) please subscribe to http://blog.hecker.org/category/mozilla/feed/ instead of the previous feed URL (http://hecker.org/mozilla/index.atom).

I'll keep the old blog online for the foreseeable future, so that old posts will still be available; over time I hope to migrate that old content to the new blog and set redirects from the old URLs. However I cannot guarantee that I'll keep old content available forever or that old links will always work.

Categories: Mozilla

Mozilla Foundation activities, week ending 2008/02/01

Mon, 2008-02-04 15:30

This is my report on activities related to the Mozilla Foundation for the week ending February 1, 2008.

Projects for the week

Here's a summary of what Foundation-related activities went on last week; for more information about others' activities please see the weekly status reports published by David Boswell, Gerv Markham, and Zak Greant.

  • CAs and related issues

  • Public communications

    • Among other things, David worked on improvements to www.mozilla.org, including updating the Projects page with two new Featured Mozilla-Based Applications, submitting a patch to replace the Products section with Projects (bug 325485), and coordinating with fantasai concerning the About page content (bug 231131 and bug 414439).
  • Conferences and events

    • Zak worked on preparations for several upcoming events in which the Mozilla Foundation might participate, including OSCON.
Upcoming trips and events

A reminder: We're still accepting donations to the Mozilla Foundation through our directed giving program. Help support Bugzilla, Camino, SeaMonkey, and the Mozilla accessibility project, as well as general Foundation activities for the coming year.

Categories: Mozilla

Mozilla Foundation activities, week ending 2008/01/25

Mon, 2008-01-28 12:28

This is my report on activities related to the Mozilla Foundation for the week ending January 25, 2008.

Projects for the week

Here's a summary of what Foundation-related activities went on last week; for more information about others' activities please see the weekly status reports published by David Boswell, Gerv Markham, and Zak Greant.

  • CAs and related issues

  • Public communications

    • David Boswell participated in a planning meeting for improvements to www.mozilla.org.
  • Other

    • David is now in California and will be working out of the Mozilla office in Mountain View (once he gets settled).
Upcoming trips and events

A reminder: We're still accepting donations to the Mozilla Foundation through our directed giving program. Help support Bugzilla, Camino, SeaMonkey, and the Mozilla accessibility project, as well as general Foundation activities for the coming year.

Categories: Mozilla

Fried Fish

meer.net followup

Sun, 2006-11-05 19:59
Once I contacted them, the folks over at meer.net were able to quickly re-enable my email account. Yay! (They blamed the problem on a glitch in the script that checks for inactive accounts.) Anyways, I'll probably continue to use my...
Categories: Mozilla

What happened to meer.net

Fri, 2006-10-27 13:52
For some reason, I can no longer login to my meer.net email account, and it sounds like people who send me email there are getting bounces. I'm not sure what happened, so I've setup a new email address for my...
Categories: Mozilla

AdWords Editor

Fri, 2006-06-02 16:07
If you have a Google AdWords account, then you might want to check out this editor. It's built using a very familiar technology ;-)...
Categories: google

GarrettDimon.com

Independent Software Development

Wed, 2009-03-11 00:18

In January of ‘08, I woke up to the first day on the job. I was free of the daily grind. I could work anywhere and anytime I wanted. I could attend any web conference without seeking approval. I could write and share to my heart’s content. But most importantly, I could spend every single day working on things that I loved.

As it turns out, only the last one is 100% true. In retrospect, I wouldn’t trade it for the world, but making ends meet and building a software empire, err, uhh, village, can be quite the juggling act.

The Daily Grind

I didn’t have to commute or work set hours, but being highly self-motivated and loving what I was doing led to a self-imposed grind where I felt guilty about every moment that wasn’t paying the bills or finishing Sifter. By blogging so openly about our plans, I had unintentionally created some expectations that loomed over me. Combine that with loving what you’re doing, and it was, and still is, hard to put the mouse down so to speak.

The really daily grind for me was making time for friends and family. Working was easy. It was fun. And, unfortunately, it can be pretty addictive as well. I’d like to think I kept a reasonable balance, but I probably averaged 60 hour weeks. That may not seem like a lot, but one of my goals in becoming self-employed was to find more time away from the desk. It hasn’t exactly worked out that way, but it’s getting closer.

Working Anywhere and Anytime

In theory, this is attractive, and it was until Sifter launched. Now, with customers all over the world representing different time zones, the reality is that I’ve always got an eye on Sifter and support. Instead of working a boxed in 8 hour day, I’m regularly working a bunch of separate 2-4 hour shifts. I don’t mind so much, but Lauren, my fiancée, is, quite simply, over it. I can’t say I blame her, and one of my highest priorities is to bring in some backup for support.

Working anywhere is another thing that sounds great. I’ve romanticized about working on coffee shops or coworking spots for as long I’ve seen others doing it, but it turns out that I’m not too effective in that environment. At home, I have a meticulously crafted setup that includes a desk and chair high enough and large enough for someone that’s 6’6” and 225 lbs. I also have a printer/scanner, large monitor and various other amenities. Most importantly, it’s quiet, and there aren’t any distractions. (Yet.)

It turns out that I’m most productive from home, but there is a huge drawback in that I don’t have anyone to spin around in my chair and bounce ideas off of. That’s really tough at times. I blast friends with mockups over IM or call them up to make them listen to my new ideas, but it’s not the same. Frankly, it gets a bit lonely at times.

Web Conferences

I don’t need approval or justification to attend web conferences, but I’m too heads down to jet set from conference to conference like some people. Switching from a full-time job to part-time consulting constrains the cash-flow considerably. So, while I have been able to attend a handful of conferences, it hasn’t been the free-for-all that I had hoped. The most significant challenge is that it’s hard for me to justify work time that isn’t paying the bills or improving Sifter.

Writing, Blogging, and Sharing

This was probably one of the most exciting facets of being self-employed and building my own web applications. I’d finally have more than enough material to update the blog regularly and share ideas free of NDA coverage. Unfortunately, it turns out that the amount of time one has for blogging is inversely proportional to the amount of fun cool things that you’re working on and able to discuss publicly.

I’ve learned more in the last year than I have in probably the last 3 years, and none of that new knowledge is under NDA. (Well, some of the client work is, but it’s a very small amount.) I have a backlog of ideas that I want to share and talk about so that you don’t trip over the same silly mistakes that I made. Lessons about the business, interface design, development, customer support, and more are all there with rough drafts that I just haven’t made time to finish.

I’m dying to sit down and type it all up, but improving Sifter wins out every time. For every new paying customer that spends their hard-earned money on our application, I feel even more obligation to make sure that Sifter makes them happy. So blogging loses out, for now.

Loving What You Do

Despite all of the challenges, there’s something to be said for waking up every morning and pouring your heart into work that you love. I consider myself incredibly lucky to have that opportunity, and I consider myself even luckier that it seems to be working out financially as well. I’ve always believed that work and passion should go hand in hand. That is, we should all want to work to find a way to pursue our passions rather than just trudging through another 8 hour day just so we can pay the bills.

It’s not easy, but nothing worth doing ever is. So, if there’s anything I’ve learned this last 14 months, it’s that it’s definitely worth it. Whether it’s web development, music, writing, tight-rope walking, or creating and marketing your own BBQ sauce, being able to spend your work hours doing something that you enjoy makes all of the difference in the world.

Smart Return in Sifter

Mon, 2008-12-08 10:27

Just in case you missed it, Sifter launched last week. With all of the new material, I wanted to get back to sharing some of the behind the scenes details about designing Sifter.

Today, I wanted to focus on a feature that exists almost entirely behind the scenes. It’s more about interaction design than tangible aspects like visual or interface design, but it’s just as relevant to creating a good user experience. Just because a feature isn’t visible, doesn’t mean that it’s not valuable.

The Feature

I have been calling the feature “Smart Return”. The idea is simple. Whenever you’re viewing a list of issues, it’s possible, and likely, that you’ve sorted it a certain way or filtered the page so that you only see the issues that you care about right now.

The problem is that when you leave the page to create an issue or update an issue, we need to make sure return you to the page you originally came from as well as remember the state of the page so you don’t have to reapply your sort and filters.

A Real World Example

For instance, let’s say that I have a dozen issues that are assigned to me. Of those, I decide to focus exclusively on the critical and high priority issues. Since the list is short, I go ahead and sort them by when they were created. That way, I can make sure to address the oldest issues first. So, at this point, my page is filtered and sorted on several different parameters. (Figure 1)

Screenshots showing the issue listing page before and after being filtered and sorted. Figure 1 One of the key ways to interact with issue lists is to filter and sort them into a list off issues that you can work through.

Now, when I click on an issue, I’m taken to the issue details page. After I take some action on this issue, it would be annoying to have to sort and filter my issue list every time. So, regardless of what I do next, I’d ultimately like to return to my issue listing sorted and filtered the way that I left it. (Figure 2)

On the surface, this seems like an almost trivial problem. Capture the referrer, and send you back there after you’re done. Unfortunately, it wasn’t that simple.

The Curveballs No Sessions

The initial idea for all of this was to simply capture the value in the session and hold on to it until we were ready to use it. Unfortunately, we’d need to clear that session variable whenever we finally did use the value. Otherwise, the return value could very easily be incorrect if you follow a different course of action and we didn’t reset it. This seemingly small limitation led to a much more advanced, but ultimately elegant solution.

A screenshot of the link for returning to the issue listing. Figure 2 From every issue detail page, you can easily return to the issue listing page and rest assured that it’s still sorted and filtered the way you left it. Entry and Exit Points

From the issue detail page, there are actually multiple different actions you could pursue, and each complicates matters in its own unique way. Without going into the boring detail, there are 7 relevant courses of action that we need to consider. (Figure 3)

  1. Create a New Issue - It gets really hairy here because you can ultimately end up creating and adding another issue countless times, and we need to constantly keep track of your issue listing and sorting conditions.
  2. Return to Issue Listing - While this is conceptually simple, it presents a challenge in that it’s possible to arrive on the issue listing from the Dashboard. As a result “Return to Issue Listing” isn’t always accurate, and we need to dynamically check and see if the text should be “Return to Dashboard”.
  3. Edit the Issue - Editing the issue takes you to a different page, so we end up losing the value of our referrer. As a result, we have to make sure that we pass the referrer along to the edit page so that it knows where to send you after you’re finished editing.
  4. Delete the Issue - This is fairly straightforward. We need to delete the issue and send you back to your list.
  5. Delete a Comment - Thankfully, this is handled in almost exactly the same way as deleting the issue.
  6. Follow a link to a different issue - Of course, issues can link to each other, so it’s entirely possible that you might go off and look at another issue. If you do, we still need to be able to bring you back to your list.
  7. Update the Issue/Add a Comment - This is similar to deleting the issue, however, because we’re using a web form, we have to remember the URI with a hidden form field instead of passing it in the address bar.
A screenshot showing all of the relevant exit points from the issue detail page. Figure 3 There are several exit points on the issue detail page where we need to make sure that we maintain the original referring page so that we can return there. Minimizing the Use of the Querystring

A small, but very subtle point is that we need to do all of this while relying on the query string as little as possible. Many people copy the issue link and paste it into their commit messages for source control. (Figure 4) If a query string value is used to remember the original starting point, then the link becomes cumbersome to use in a commit message.

A screenshot of a normal issue detail URL. Figure 4 Generally, the issue detail URLs are concise, but if we attached a query string value on there all of the time, they would become unwieldy.

We weren’t able to do all of this without leaning on the query string a little, but we definitely made a conscious effort to rely on it as little as possible. This definitely presented some small issues that weren’t trivial to work around.

In some cases, this may seem trivial, but it’s a crucial part of the interface design. Being able to access and share issues by copying and pasting links is going to happen. In fact, it’s going to happen a lot. So that means that clean URLs, while not always possible, are a high prioiity.

A screenshot of an example issue listing URL. Figure 5 All of the filtering and sorting is maintained via the URL. This enables you to easily share the URL with others and rest assured they will see the same thing. It also enables us to return to this page and reapply the same filters and sort.

Similarly, all of the issue listing pages are handled within the query string (Figure 5) so that they can easily be shared with other team members or bookmarked in your browser.

Missing Referrers

Finally, while we initially grab the referrer from the environment, there’s no guarantee that we’ll have a referrer. If you visit a link directly, we have to fall back on a default. So, we had to be able to specify default locations to send you if you arrived from an external link.

A photo of the sketchbook showing the quick and dirty process flows I sketched out. Figure 6 I’ve found that it’s almost always easier to solve a complex problem by starting off with a sketch of the solution. Designing the Solution

Now that we have a firm grasp of the problem, we can dive into the steps we took to design a solution. This solution is actually the second version of “Smart Return”. The first version evolved over time as we began to recognize the edge cases, and as a result, it had plenty of room for improvement. With this version, we were able to design the solution from the ground up after we had an intimate understanding of the problem, and that was key to creating a cleaner and more maintainable solution for the future.

Some zoomed out examples of the redirects and linking scenarios. Figure 7 I created more detailed versions of the sketches in Omnigraffle where different color lines represent different relationships between the pages. Recognizing a Pattern

This time around, I wanted to build a reusable framework that would be easy to understand and reuse throughout Sifter. So, I went through the page flows so that I could build an understanding of the entire scenario.

I started off with some quick sketches (Figure 6) of the page flows. Then, I migrated the sketches into Omnigraffle (Figure 7) for a more detailed view of the concepts and challenges.

Designing a Framework

At this point, I began to understand and see how the different pages interacted with each other. I made sure to cover all of the different scenarios and set out to describe how each page would share the return URL with the other pages. (Figure 8)

A screenshot of the key for the relationship diagrams. Figure 8 By mapping the page relationships to a key, I was able to create a simple and memorable way for the pages to communicate the return URL between themselves.

This laid out the vision of how these pages would work together, and I had a language to describe the relationships. At this point, it became almost trivial to implement the code necessary for making it happen. More importantly, it became incredibly easy to apply this logic at other points within Sifter.

Summary

One of the most significant pieces of creating a web application is understanding the interaction design. This almost invisible, yet critical piece of the design process is easily overlooked. If done correctly, it’s invisible and taken for granted. However, if handled poorly, it’s the difference between a clunky vs. a seamless experience.

Long story short, some of the most valuable elements of design are the ones that you don’t see. Just because there isn’t a visible manifestation of a decision doesn’t mean that it’s any less important.

Categories: design

Smart Return in Sifter

Mon, 2008-12-08 10:27

Just in case you missed it, Sifter launched last week. With all of the new material, I wanted to get back to sharing some of the behind the scenes details about designing Sifter.

Today, I wanted to focus on a feature that exists almost entirely behind the scenes. It’s more about interaction design than tangible aspects like visual or interface design, but it’s just as relevant to creating a good user experience. Just because a feature isn’t visible, doesn’t mean that it’s not valuable.

The Feature

I have been calling the feature “Smart Return”. The idea is simple. Whenever you’re viewing a list of issues, it’s possible, and likely, that you’ve sorted it a certain way or filtered the page so that you only see the issues that you care about right now.

The problem is that when you leave the page to create an issue or update an issue, we need to make sure return you to the page you originally came from as well as remember the state of the page so you don’t have to reapply your sort and filters.

A Real World Example

For instance, let’s say that I have a dozen issues that are assigned to me. Of those, I decide to focus exclusively on the critical and high priority issues. Since the list is short, I go ahead and sort them by when they were created. That way, I can make sure to address the oldest issues first. So, at this point, my page is filtered and sorted on several different parameters. (Figure 1)

Screenshots showing the issue listing page before and after being filtered and sorted. Figure 1 One of the key ways to interact with issue lists is to filter and sort them into a list off issues that you can work through.

Now, when I click on an issue, I’m taken to the issue details page. After I take some action on this issue, it would be annoying to have to sort and filter my issue list every time. So, regardless of what I do next, I’d ultimately like to return to my issue listing sorted and filtered the way that I left it. (Figure 2)

On the surface, this seems like an almost trivial problem. Capture the referrer, and send you back there after you’re done. Unfortunately, it wasn’t that simple.

The Curveballs No Sessions

The initial idea for all of this was to simply capture the value in the session and hold on to it until we were ready to use it. Unfortunately, we’d need to clear that session variable whenever we finally did use the value. Otherwise, the return value could very easily be incorrect if you follow a different course of action and we didn’t reset it. This seemingly small limitation led to a much more advanced, but ultimately elegant solution.

A screenshot of the link for returning to the issue listing. Figure 2 From every issue detail page, you can easily return to the issue listing page and rest assured that it’s still sorted and filtered the way you left it. Entry and Exit Points

From the issue detail page, there are actually multiple different actions you could pursue, and each complicates matters in its own unique way. Without going into the boring detail, there are 7 relevant courses of action that we need to consider. (Figure 3)

  1. Create a New Issue - It gets really hairy here because you can ultimately end up creating and adding another issue countless times, and we need to constantly keep track of your issue listing and sorting conditions.
  2. Return to Issue Listing - While this is conceptually simple, it presents a challenge in that it’s possible to arrive on the issue listing from the Dashboard. As a result “Return to Issue Listing” isn’t always accurate, and we need to dynamically check and see if the text should be “Return to Dashboard”.
  3. Edit the Issue - Editing the issue takes you to a different page, so we end up losing the value of our referrer. As a result, we have to make sure that we pass the referrer along to the edit page so that it knows where to send you after you’re finished editing.
  4. Delete the Issue - This is fairly straightforward. We need to delete the issue and send you back to your list.
  5. Delete a Comment - Thankfully, this is handled in almost exactly the same way as deleting the issue.
  6. Follow a link to a different issue - Of course, issues can link to each other, so it’s entirely possible that you might go off and look at another issue. If you do, we still need to be able to bring you back to your list.
  7. Update the Issue/Add a Comment - This is similar to deleting the issue, however, because we’re using a web form, we have to remember the URI with a hidden form field instead of passing it in the address bar.
A screenshot showing all of the relevant exit points from the issue detail page. Figure 3 There are several exit points on the issue detail page where we need to make sure that we maintain the original referring page so that we can return there. Minimizing the Use of the Querystring

A small, but very subtle point is that we need to do all of this while relying on the query string as little as possible. Many people copy the issue link and paste it into their commit messages for source control. (Figure 4) If a query string value is used to remember the original starting point, then the link becomes cumbersome to use in a commit message.

A screenshot of a normal issue detail URL. Figure 4 Generally, the issue detail URLs are concise, but if we attached a query string value on there all of the time, they would become unwieldy.

We weren’t able to do all of this without leaning on the query string a little, but we definitely made a conscious effort to rely on it as little as possible. This definitely presented some small issues that weren’t trivial to work around.

In some cases, this may seem trivial, but it’s a crucial part of the interface design. Being able to access and share issues by copying and pasting links is going to happen. In fact, it’s going to happen a lot. So that means that clean URLs, while not always possible, are a high prioiity.

A screenshot of an example issue listing URL. Figure 5 All of the filtering and sorting is maintained via the URL. This enables you to easily share the URL with others and rest assured they will see the same thing. It also enables us to return to this page and reapply the same filters and sort.

Similarly, all of the issue listing pages are handled within the query string (Figure 5) so that they can easily be shared with other team members or bookmarked in your browser.

Missing Referrers

Finally, while we initially grab the referrer from the environment, there’s no guarantee that we’ll have a referrer. If you visit a link directly, we have to fall back on a default. So, we had to be able to specify default locations to send you if you arrived from an external link.

A photo of the sketchbook showing the quick and dirty process flows I sketched out. Figure 6 I’ve found that it’s almost always easier to solve a complex problem by starting off with a sketch of the solution. Designing the Solution

Now that we have a firm grasp of the problem, we can dive into the steps we took to design a solution. This solution is actually the second version of “Smart Return”. The first version evolved over time as we began to recognize the edge cases, and as a result, it had plenty of room for improvement. With this version, we were able to design the solution from the ground up after we had an intimate understanding of the problem, and that was key to creating a cleaner and more maintainable solution for the future.

Some zoomed out examples of the redirects and linking scenarios. Figure 7 I created more detailed versions of the sketches in Omnigraffle where different color lines represent different relationships between the pages. Recognizing a Pattern

This time around, I wanted to build a reusable framework that would be easy to understand and reuse throughout Sifter. So, I went through the page flows so that I could build an understanding of the entire scenario.

I started off with some quick sketches (Figure 6) of the page flows. Then, I migrated the sketches into Omnigraffle (Figure 7) for a more detailed view of the concepts and challenges.

Designing a Framework

At this point, I began to understand and see how the different pages interacted with each other. I made sure to cover all of the different scenarios and set out to describe how each page would share the return URL with the other pages. (Figure 8)

A screenshot of the key for the relationship diagrams. Figure 8 By mapping the page relationships to a key, I was able to create a simple and memorable way for the pages to communicate the return URL between themselves.

This laid out the vision of how these pages would work together, and I had a language to describe the relationships. At this point, it became almost trivial to implement the code necessary for making it happen. More importantly, it became incredibly easy to apply this logic at other points within Sifter.

Summary

One of the most significant pieces of creating a web application is understanding the interaction design. This almost invisible, yet critical piece of the design process is easily overlooked. If done correctly, it’s invisible and taken for granted. However, if handled poorly, it’s the difference between a clunky vs. a seamless experience.

Long story short, some of the most valuable elements of design are the ones that you don’t see. Just because there isn’t a visible manifestation of a decision doesn’t mean that it’s any less important.

Categories: design

Gemal&apos;s Psyched Blog: Mozilla

JPEG decoding will be 15% faster on x86_64

Wed, 2009-01-28 17:48

Just a quick note about a cool improvement that is gonna hit x86_64 builds of Mozilla Firefox soon:

"Currently, JPEG SSE2 code is only Windows x86. I will add it for x86_64 platform. After adding it, JPEG decoding is 15% faster."

More information in bug 475225

Categories: Mozilla

7 untold secrets about me

Fri, 2009-01-16 15:44

Henrik GemalThe seven, perhaps unknown, things about Henrik Gemal.

I was tagged by Fabien Cazenave who started to learn XUL by tweaking my Launchy extension. Cool!

So here are the rules to this:
1. Link to your original tagger(s) and list these rules in your post.
2. Share seven facts about yourself in the post.
3. Tag seven people at the end of your post by leaving their names and the links to their blogs.
4. Let them know they’ve been tagged.

Here we go:

1: I've been charged with importing pornography into India
When I worked in India I was contacted by a Danish company that sold CD-ROMs (back in the days) and they asked me if I wanted to help them get into the Indian marked. No problem. Send me some CD's and I see what I can do. Unfortunately there were some porn CDs among the CDs they sent. Don't know if I can return to India...

2: I was the top Bugzilla bug reporter
When Bugzilla was at 100.000 bugs Asa Dotzler pulled some data out of Bugzilla. We were 10 people that filled over 700 bugs each and I was at the top with 1764 bugs and Seth Spitzer was second. Read the article.

3: I played a lot of AD&D when I was younger
I loved playing Advanced Dungeon & Dragons. Still dream about creating another adventure and play again.

4: I played soccer for almost 20 years
We were once at the Danish national championship and became number 7. We also had a cool sponsor so I meet a lot of the top soccer people from the 90' like Ruud Gullit, Frank Rijkaard and most of the Danish stars like Preben Elkjær, Frank Arnesen and Morten Olsen.

5: I lived in India for more than a year working for a Indian advertising company
IndiaWhat an experience! Quite amazing. I saw things that you can only dream about. Everything for dead poor people and filty rich people like I never seen before. Read my Indian story.

6: I have visited 35 countries or 15% of all countries
I love traveling. My wife and I did a lot of backpack traveling before we got our first child. Backpacked around in Thailand, Laos, Peru and Bolivia. See my map.

7: I have a road named after me
GemalvejIn the town of Kirkeby on Fyen in Denmark there is a road called Gemalvej. My ancestors come from around there. We traced the name Gemal back to around 1600. In Danish Gemal means spouse/partner/wife/husband.

I tag:
- Asa Dotzler
- Christian Sejersen
- Allan Beaufour
- William Quiviger

Categories: Mozilla

Early adopter of Mozilla Firefox

Mon, 2008-12-15 17:10

Early adopter of Mozilla FirefoxMy son Mads is a early adopter of Mozilla Firefox.

The other day he got a Firefox tattoo on his left arm and was very proud of it. Showing it to everybody. And yes, it's washable.

So now whenever he sees a Mozilla Firefox logo he points to it. So when he sits next to my computer he has to point out all the time that he can see a Firefox logo.

Perhaps I can teach him to cry when he sees a Internet Explorer logo?

Categories: Mozilla

Glazblog

ParisWeb 2007

Fri, 2007-08-17 15:28
Ce sera les 15, 16 et 17 novembre prochains à Paris. Réservez vos journées, parce que cela promet d'être aussi fabuleux que l'année dernière !...
Categories: standards

Fixing the Web

Tue, 2007-08-07 04:50
I was recently interviewed by Vlad Alexander about "Fixing the Web", along with a few old mates like Chris Wilson, Jeff Veen and Dave Raggett. You can find the article here....
Categories: standards

Ducks and Ducklings : ROTFL

Tue, 2007-07-24 08:35
A reader of this blog just sent me the following link :-)...
Categories: standards

Hacking for Christ

GSoC Ideas

Thu, 2009-03-12 18:59
Another call for GSoC ideas. If you're an active Mozilla hacker, and have been so for a little while, perhaps you can mentor your pet idea that you don't have time to implement yourself ;-) So put it up on the page. If your put an idea up but it hasn't made it off the Brainstorming page and onto the official page, then it's probably because I need more info or it doesn't have a mentor. If you can find one for it, its chances of migrating across are significantly increased :-)...

CyberMentors

Thu, 2009-03-12 18:15
To my UK readers: Mozilla is a partner in the CyberMentors anti-online-bullying project which launched last week. Patrick Finch is the lead man on our side. Patrick looking for a handful (5 or so) of volunteers who would like to be CyberMentors. The expectations are a couple of hours / week for 4 months. Mozilla is sponsoring the training and Criminal Records Bureau check (mandatory, I am afraid). We are specifically looking for volunteers in the London area. If that could be you, see his blog post for more details. :-)...
Categories: Mozilla

Information, Free To Good Home

Wed, 2009-03-11 06:29
Via an old post on BoingBoing, I just came across the AirPower wiki, which lists the locations of power outlets in airports. Very handy. However, the wiki software used doesn't require logins, so it has been vandalised hundreds of times over the past few years. I've restored one of the last known good versions, but I don't expect it to last. Does anyone know anywhere appropriate that this information could live where it would be protected, loved, cherished and maintained?...
Categories: Miscellaneous

hicksdesign - journal

Playstation 3 Media Centre

Sun, 2009-02-15 18:03

So, in what may be my last ‘media centre’ post, here’s a solution that I’ve finally found to work for me: a Playstation 3. This wasn’t in consideration until recently – I already have a Wii, which suits gaming on a family level really well. The Wii is small, white, minimal, fun and child friendly. The PS3 is a large high definition console for the serious gamers (which I am not). I’d thought of it as a nasty, evil console for violent, bloodthirsty shoot-em-ups. At least, until I saw LittleBigPlanet on my brother-in-law’s PS3 and realised how it good it was. I also realised how capable it was a media centre.

Here was one machine (resembling the monolith from 2001 I grant you), that could do all of this:

  • Play DVDs
  • Play CDs (and get track information from the internets)
  • Play Blu-Ray discs. I don’t own any yet, but we subscribe to LoveFilm (Best UK equivalent of Netflix) and get BR discs through that
  • Play Media (Music, Video and Photo) stored on a USB Stick or drive
  • Streams Media via UPnP server. I use Medialink for OS X
  • Plays and records freeview TV with the PlayTV add-on box, which by extension, includes Radio too. More on this below.
  • With the built-in browser, and BBC iPlayer’s Big Screen Version, I have access to the one online video source I really care about. Quality is surprisingly good (perhaps some sort of upscaling happening?), and I’ve never seen the buffering spinner.
  • Oh, it also plays games.

It replaces the DVD player, CD player, Mac Mini and Eyetv in one go. Also, compared to a Mac Mini, it’s made to be controlled by remote, so it’s very easy to control and administer.

The Sony XMB interface is themable, and there is a Windows based compiler available to create a theme from your PNG files. I’m considering making a theme, but in the meantime I’m using the Leopard v2 theme, which looks great:

To be fair, I’ve encountered a few drawbacks, and feel I should point these out before waxing lyrical further:

  • It’s fussy about drive and file formats. USB drives must be formatted as FAT32 (which feels a bit primitive somehow), and files need to be arranged in ‘VIDEO’, ‘PHOTO’ and ‘MUSIC’ folders (yes with caps!) in the root of the drive. Using FAT32 also imposes a maximum 4gb file limit, so large HD rips may be out of the question.
  • It doesn’t support as wide a variety of codecs as the Popcorn Hour or WDTV, but you’re generally good to go with .mp4s, and that suits me fine.
  • Arranging video into folders and sub-folders is a clunky. It works better when using an external drive, or streaming, where you can arrange media exactly how you like it. Photos and Music are straightforward however, as arranging them by date and ID3 tag (such as Artist) respectively, makes sense.
  • The latest PS3 consoles come with only 2 USB ports, whereas previously they came with 4. When you’ve got a PlayTV in one, and a USB drive in the other, you’re full up. Also, they’re both on the front – my ideal would be 2 ports at the back for the permanently attached devices, and at least two at the front for the occasional USB stick and charging the controller.
  • Medialink works really, really well, with the exception of stuttering video, which I suspect is due to my home wireless network.

Also, not really a drawback as such, but I would love music playback to just show the album artwork, rather than a visualizer. If any PS3 users have found a way to do this, please let me know!

Despite these niggles, the PS3 has won me over as the solution I’ve been looking for – it suits my needs perfectly. Part of that is the PVR functionality from the PlayTV add on:

PlayTV

Play TV comes with just a USB box, cable and installer disc, giving your PS3 the ability to watch and record Freeview digital channels.

The USB plugin box rather feels large and hollow for what it does. Compare with an Elgato device, and you can’t help wonder why they couldn’t have just made it smaller. It really does feel as if it’s full of air. No matter, as once it’s in, it’s forgotten about, and everything happens smoothly from there. You insert the disc, install the PlayTV software, and once it’s scanned for channels, a TV icon appears in your XMB. I found everything about PlayTV to be smooth and easy, and the interface is very pleasing to the eye:

If you google for PlayTV information, you’ll find 2 common links: old press releases announcing that it will record using a non-drm format (like mpeg), and slightly later ones explaining that it’s actually going to use .m2ts (a sony-specific video format). There’s precious little information after that, but to clear this up: you can get your recordings off your PS3. Just copy them to the XMB, and from there to an external USB drive. You can then convert the .m2ts file easily using Handbrake. (Handbrake even has a ‘PS3’ output preset, which is also handy for your DVD backups!)

Recordings take roughly 1gb for every hour, but you can upgrade the internal HDD using just about any 2.5” SATA disk. Currently you pick up a 500GB Western Digital for about £84.

While not as feature-filled as EyeTV, I did find it easier to control, and much quicker to browse the EPG. While it doesn’t have a one-button ‘record series’ ability, you can choose a programme and ask it to repeat that recording to a pattern, such as weekly. So far, that’s working just fine for me.

Also, if you happen to own a PSP, you can use it to watch live TV or recordings in your library. If your PSP is a slim & lite version or newer, you can connect it to a TV. Having borrowed Mr Oxton’s PSP, I can confirm this works really well, at least on an internal wifi network.

So to quickly sum up, with perhaps the addition of a NAS in the future, I feel like I’m finally done here. The Mac Mini and WDTV have been sold to make way for this, and while separate components (such as a dedicated DVD player) may ultimately offer more features, I love the one-box does all approach.

Boxee and Plex

Mon, 2009-02-09 16:14

My journey to find the ideal Media Centre has brought me via Plex and Boxee. Both are media center applications based on the popular open source XBox Media Center (XBMC), with Boxee focussing on the social network slant, and Plex solely on OS X integration.

Plex has a very slick interface, and everytime I mention Boxee, there is the inevitable “Why not Plex?’ cry from other Mac users. At the moment, the answer is that Plex doesn’t yet offer me much over just using Front Row. The slick interface has more character than Front Row though, particularly in it’s use of online databases to provide metadata and large format photographs:

It doesn’t always get the show/movie right however. The Secret Show recordings were believed to be ‘Victoria’s Secret Fashion Show’, and this couldn’t be manually removed.

The main appeal of Plex is that it’s built for OS X only, so you’re getting the best integration – no pandering to cross platform needs. In particular iTunes library scanning works really well, and plays iTunes store DRM’s material, an area where Boxee failed (see below).

What I miss from Plex are services like BBC iPlayer and EyeTV integration, which I believe are planned. That’s where Boxee comes in.

Boxee, on the face of it, doesn’t have quite as much UI sexiness as Plex, but I think it’s more thoughtfully laid out. For example, when you log in, the home screen shows you not only what you and your friends have been watching/listening to, but what you’ve recently added. Here is your new content – go straight to it.

The social network side is intriguing, but the integration of internet services (too numerous to mention) is it’s forté. In particular, the one that interests me the most, is that the latest release supports BBC iPlayer, and does it rather well, using the Beeb’s Big Screen Interface :

There are only two downsides I’ve experienced so far: Firstly, it doesn’t show all of my Music (around 800 non-DRM albums are just missing), despite leaving it overnight to process the collection. After digging around on forums, this seemed to be caused by scraping Last.fm for information, and that a different source was intended for future releases. That doesn’t explain why random songs are missing from albums though. Until then, I have to browse the folder structure to find what I want to play.

The biggie is stability. In the middle of watching a movie with the family it crashed. I installed the EyeTV plugin from XBMC and it crashed. I asked it to look for a SMB share and it crashed. When it crashes on the Mac Mini the only solution is turn it off and restart it. It feels churlish mentioning this when Boxee is in Alpha, and if you follow Team Boxee on their blog and twitter, you’ll know it’s progressing at a good pace. It just means it’s not that usable for me at the moment.

While playing with Boxee, I found a few useful tricks and add-ons, such as:

  • You can also get a Front Row appliance to put a Boxee entry into the Front Row Menu, making it easy to launch with the Apple Remote
  • If you have problems (like I did) getting TV Shows to show up in the TV Show menu, editing the filename does the trick, but obviously that’s a bit tedious.
  • To stream from your Mac, you can set up an SMB share, which will then show up as a media source in Boxee:
  • The snappily title XBMCEyeTVParser will allow you to watch EyeTV recordings in Boxee. Oddly, it places it in Videos > Internet, rather than TV Shows. As mentioned above, it did cause crashes for me, but your mileage may vary.

Ultimately, Boxee is geared up for the US market – Hulu, ABC, Netflix and such, some of which can be accessed in the UK via VPN trickery. You would then have to disable that in order to watch BBC iPlayer, which I’m more likely to watch. Not a big deal on your laptop, but when you’re trying to control a Mac Mini with a little remote, it’s going to require clever scripts and patience.

Despite stability and iTunes library niggles, I prefer Boxee over Plex. In fact, Boxee instills feelings of love and devotion in me for it’s online services, recommendations and layout. However, I’ve come to realise that the problem for me isn’t ‘Boxee or Plex’, it’s that controlling a Mac Mini remotely can be a pain in the arse. I haven’t tried Boxee on AppleTV though, which may well be the answer, but the hacky nature of it put me off.

Neither Boxee or Plex have ended up being my ideal solution, which is in fact a Playstation 3 with PlayTV. That’s for another post!

Designing for the Web

Sun, 2009-02-01 18:19

Five Simple StepsEver feel that the web design market is over-saturated by books, both coffee-table and technical? There’s too much choice, and “What books would you recommend?” is the top (non cheese related) question I get asked. Depending on the topic required, there are various degrees of ‘hmmm well…you could try…” that’s replied.

This is where Mark Boulton’s new PDF book A Practical Guide to Designing for the Web comes in. I’ve been watching the previews on Flickr and now that I’ve actually had the chance to read the full book, I can declare it a triumph. It doesn’t feel preachy or stodgy, or conversely, too light and insubstantial. Mark’s tone strikes the right balance, and is engaging from the start.

To those who don’t know, I’m not a trained designer – my background is firmly in illustration. As part of my 5 years studying illustration, we covered some graphic design, but it was about 20% or less of the curriculum. Since leaving college, and getting my first job as a Junior Designer for Coventry City Council, I’ve been ‘picking up’ the elements of design ever since, but have never had the benefit of formal training.

For me, this book is the equivalent of ‘Zeldmans Orange book’, taking those bits and pieces I’ve learnt over the years and filling in the gaps, finally creating an overall understanding.
However, it doesn’t just cover design theory, as practical business advice is given to complete the picture. Something that I’m sure all those people who ask me for recommendations will love.

It’s left me wanting the physical book, which if I have understood correctly, is on the cards. Yippee!

hicksdesign - sidenotes

Xtorrent site

Sat, 2007-03-10 04:08
While a lot of developers use a standard “This is a Mac App” template design, David Watanabe has set a style for stylish, fluid layouts. Gorgeous!

Lego CEO speaks

Fri, 2007-03-09 10:52
Americans please note: the CEO says “Lego” not “Legos”. ;o)

Flat Hicks

Fri, 2007-03-09 05:23
Appearing at a SXSW party near you

I really hate the kitchen sink

Use cases for a calendar extension in Firefox

Thu, 2005-12-29 18:10
dmose has written a good article on the Calendar Weblog about the possible future of calendaring in Firefox.

He especially wants to know why people use a calendar integrated into a browser instead of other options (standalone application ala Sunbird OR integration into a mail client ala Lightning or Microsoft Outlook). If you want good calendar integration in Firefox or are a (former) user of the calendar extension in Firefox, then please head over to the blog article and tell us why.

Releasing is hard

Sun, 2005-11-06 11:49
Crossposted from the Calendar Weblog (please post your comments there):

You might have noticed some delay in releasing Sunbird 0.3 alpha1. There were some problems on the road, like lack of time, the tree being broken at the wrong moment, cvs acting weird, last-minute bugs etc. But it's done now. Builds are up at http://ftp.mozilla.org/pub/mozilla.org/calendar/sunbird/releases/0.3a1/, there are release notes and there even is a cvs tag (SUNBIRD_0_3a1_RELEASE)

Of course this is still an alpha build. There are problems, lots of them. We know about that. But we also have more changes ahead, and didn't want to delay the release any further. Please take that into account when testing and using 0.3 alpha1.

The biggest change since 0.2 is a complete rewrite of the backend. It is now possible to plug in new calendar providers (code that stores the calendar data in some file or database). We already have an ICS provider, a SQLite provider, and the beginnings of a CalDAV provider, and we expect others will come with time (let us know if you want to implement one). Writing a new backend isn't easy, so it took some time. But we think it was worth it. It gives the possibilty to do real cool things.

The upcoming changes include a rewrite of the calendar views, improved performance, backend improvements and much more. Stay tuned!

So long and thanks for all the fish...

Wed, 2005-11-02 10:50
Hi guys, I have great news. Thanks to kerz we now have an official Calendar blog over at Mozillazine.

This new blog will be hosted by many of the developers, that are currently working on calendar-related code: mostafah, dmose, mvl, jminta and me (I'm the only non-developer on board). So from now on all the latest news, interesting stuff or brainstorming will take place there.

For this blog, that means, that the time has come to retire it. I will move my regular status updates to the new blog. I just want to say thanks to all my readers. I hope you had as much fun with reading this as I had with writing it. See you on the Calendar Weblog!

IEBlog

Site Compatibility and IE8

Thu, 2009-03-12 21:58

Reports of broken sites are an important part of the feedback the IE team receives from the community. When we receive a report of a broken site, we take it and identify the core issue causing the problem. A number of these issues end up being side effects of changes we deliberately made in IE8, but even these are useful. They help us identify which IE8 changes have the broadest compatibility impact. In this post I'll share some of these issues with you so you can quickly identify problems affecting your site when migrating from IE7 to IE8.

Differences between IE8 Compatibility View and IE7

We strive to make Compatibility View behave as much like IE7 as possible, but we do make exceptions. Many of these exceptions enable improved security and accessibility features immediately, even for sites that have not yet migrated to IE8 Standards Mode.

Cross Document Communication

Hacks enabling cross-domain, cross-document communication have been disabled for security reasons. SOLUTION: Use Cross Document Messaging (XDM) to work around this change.

Extending the Event Object

IE exposes new properties for certain AJAX features such as Cross Document Messaging (XDM), even in Compatibility View. Adding custom properties to the Event object can conflict with these new properties, such as "source". SOLUTION: Change the names of conflicting custom properties to avoid collision.

event.source = myObject; // Read-only in IE8

event.mySource = myObject;

Attribute Ordering

The ordering of attributes has changed, affecting the attributes collection as well as the values of innerHTML and outerHTML. Pages depending on a specific attribute ordering may break. SOLUTION: Reference attributes by name as opposed to their position within the attributes collection.

attr = elm.attributes[1]; // May differ in IE8

attr = elm.attributes["id"];

Setting Unsupported CSS Values

Assigning CSS values that were unsupported in IE7 but are supported in IE8 Standards Mode will not generate exceptions in IE8 Compatibility View. Some sites use these exceptions to determine if a particular value for a CSS property is supported or not. SOLUTION: Short of version detection, this is a difficult issue to work around. If this behavior is essential to a page, updating the page to run in IE8 Standards Mode may be the best approach.

try {
    elm.style.display = "table-cell";
} catch(e) {
    // This executes in IE7,
    // but not IE8, regardless of mode
}

Differences Between IE8 Standards Mode and IE8 Compatibility View

We see the majority of compatibility issues in IE8 Standards Mode. Most of these occur when sites expect legacy behavior that no longer exists in IE8 Standards Mode. Upgrading your site to run in IE8 Standards Mode is the best option in the long run, but in the interim you can quickly fix these types of issues by running your site in Compatibility Mode. This is described in Jefferson's post on the EmulateIE7 meta tag. In addition to the issues mentioned above, here's what you should be aware of.

Version Detection

While other changes are typically the root cause, version detection is where pages often go wrong. This is largely because making the right decision before a browser exists can be next to impossible. Nevertheless, incorrect version detection in conditional comments, script, and on the server side can easily break a page in IE8. This is especially true for conditional comments. They are used by a number of pages to apply fix-up CSS that IE8 no longer needs. SOLUTION: Update pages to make appropriate version decisions. When possible, use object detection instead.

<!--[if IE]
    <link rel="stylesheet" type="text/css" src="ie.css" />
[endif]-->

<!--[if lte IE 7]
    <link rel="stylesheet" type="text/css" src="ie.css" />
[endif]-->

Object Detection

Object detection works great when used correctly. However some pages assume the existence of one feature based upon the presence of another, leading to problems when both features are not implemented in the same release. SOLUTION: Perform proper object-detection for each feature used.

if(window.postMessage) {
    window.addEventListener(
        "load",
        myHandler,
        false
    );
}

if(window.addEventListener) {
    window.addEventListener(
        "load",
        myHandler,
        false
    );
}

Malformed HTML

Parser error correction for malformed HTML has changed in IE8 Standards Mode. Pages depending on the way IE7 performs error correction may encounter issues as a result. SOLUTION: Ensure your markup is well-formed and valid.

<ul>
    <li>1.1
        <ul>
            <li>1.1.1</li>
    </li> <!-- Closes 1.1 in IE8, but not IE7 -->
            <li>1.1.2</li>
        </ul>
    </li>
</ul>

<ul>
    <li>1.1
        <ul>
            <li>1.1.1</li>
    <!-- </li> -->
            <li>1.1.2</li>
        </ul>
    </li>
</ul>

Working with an Element’s Class

In IE7, "className" had to be used as the attribute name to set and retrieve the class of an element. This has been fixed for standards-compliance in IE8 Standards Mode. Using the old approach will create an attribute named "className" that has no affect on the actual class assigned to an element. SOLUTION: Use the standardized name, "class", instead of "className".

return elm.getAttribute("className");

return elm.getAttribute("class");

GetElementById

The method getElementById is now case-sensitive and no longer searches name attributes. SOLUTION: Ensure case-correctness and use getElementsByName when searching name attributes.

<div></div>
<script type="text/javascript">
    // No element is found because of case difference
    var test = document.getElementById("test");
</script>

<div></div>
<script type="text/javascript">
    // Element Test is found
    var test = document.getElementById("Test")
</script>

Generic CSS Prefix Selectors

Generic CSS prefix selectors are no longer supported in IE8 Standards Mode in order to provide standards-compliant CSS parsing. Most often, this affects pages trying to use CSS to attach behaviors to VML elements. This can cause a script error if set dynamically, or a silent failure when hard-coded into the CSS of a page. Ultimately the rule is not applied, leading to effects such as VML not displaying on a page. SOLUTION: Explicitly specify each tag name you want to match when using CSS prefix selectors.

v\:* {
    behavior: url(#default#VML);
}

v\:polyline,
v\:line {
    behavior: url(#default#VML);
}

CSS Expressions

Support for CSS Expressions has been removed in IE8 Standards Mode. SOLUTION: Refactor to utilize either improved CSS support or DHTML logic.

/* CSS */
#main {
    background-color: expression(
        (new Date()).getHours()%2 ? "#000" : "#fff"
    );
}

/* Script */
var elm = document.getElementById("main");
if((new Date()).getHours()%2) {
    elm.style.backgroundColor = "#000";
} else {
    elm.style.backgroundColor = "#fff";
}

Native JSON Object

IE8 now has a native JSON object, compliant with the JSON support described in the ES3.1 Proposal Working Draft. Some pages detect the native JSON object, then use it in a non-standard way. This typically results in a script error and breaks handling of AJAX requests. SOLUTION: Define a custom JSON object when using a non-standard syntax or alter the rest of the code to use the standardized syntax.

if(!window.JSON) JSON = myJSON;
JSON.encode(obj); // Not part of the standard

JSON = myJSON;
JSON.encode(obj);

Initial CSS Property Values

Unset properties on the currentStyle object now return their initial value. Relying on the old initial values for CSS properties such as z-index can cause problems. This is the root cause of issues with the ASP.NET menu control. SOLUTION: Perform a check for both the backwards compatible value and the standardized initial value.

var zIndex = elm.currentStyle.zIndex;
if(zIndex == 0) {
    // custom code
}

var zIndex = elm.currentStyle.zIndex;
if(zIndex == 0 || zIndex == "auto") {
    // custom code
}

Unspecified CSS Property Values

Unset properties on the style object now return the empty string for improved compliance with the DOM Level 2 Style Specification. Expecting CSS properties such as z-index to have a value when they have not been explicitly set can lead to problems. SOLUTION: Perform a check for both the backwards compatible value and the empty string.

var zIndex = elm.style.zIndex;
if(zIndex === 0) {
    // custom code
}

var zIndex = elm.style.zIndex;
if(zIndex === 0 || zIndex === "") {
    // custom code
}

Attributes Collection

The attributes collection no longer contains all possible attributes recognized by IE, but only those that have been explicitly set. Scripts can fail if they depend on natively supported attributes always being present as they were in IE7. SOLUTION: Do not assume an attribute will be in the attributes collection. Check for existence first.

var attr = elm.attributes["checked"];
// Potential script error in IE8
return attr.specified;

var attr = elm.attributes["checked"];
if(attr) return attr.specified;
else return false;

That's all I have for now. If you encounter anything else you feel should be on the list, please add it to the comments to help others out.

Tony Ross
Program Manager

Categories: Developers

Web Slice and Feed Authentication – Developer Guidelines

Wed, 2009-03-11 20:31

Hello, my name is Amy Placzkiewicz and I’m a Lead Software Design Engineer in Test on Internet Explorer’s Web Service Integration team.  I wanted to take this opportunity to talk about the different mechanisms for providing a great and secure experience for Web Slices and feeds.  We first described Web Slices when we launched them in IE8 beta 1, and also talked about the improvements we made to Web Slices and RSS in IE8 beta 2 as well as the post Ritika recently made about Dynamic Web Slices.  

Now available in IE8 RC1 is HTTP authentication support for feeds and Web Slices.  And cookie/forms based authentication that is persisted‘just works’.  There are multiple ways for publishers to implement authenticated Web Slices and feeds.  The 4 options I’ll be discussing are:

  1. Persistent login cookies (“remember me”) 
  2. Web Slice specific auth cookie
  3. Unique subscription URLs
  4. HTTP Authentication

Each of these options has benefits and tradeoffs that can help you determine which solution (or combination of solutions) works best for your needs.  Ask yourself, is the content in the Web Slice PII that must be protected by cookie authentication, or is it content that can afford “less protection?”   Knowing the answer to this question will help you choose the best option (or combination of).

There are many other authentication schemes, but four these are the most prevalent on the web today.  Other authentication mechanisms are also in the process of becoming popular.  We are continuously looking at the developments in the authentication space to if it makes sense to support those for feeds and Web Slices.

Let’s get into detail…

1. Persistent login cookie (“remember me”)

Web Slices will get cookie support for free because the browser will send cookies, when present, along with HTTP requests for a particular URL. 

How it works:

Many sites already allow users to “remember me,” or persist login credentials that are stored in a cookie on the user’s machine.  The site usually sets a persistent cookie with a future expiration date of, for example, 2 weeks from the time of login.  During this time, the site will allow access without the user having to log in.  IE will send up user cookies with every URL request assuming the cookie exists.  Feed and Web Slice download requests are no exception to that.  Note that session cookies will NOT work for receiving updates to feeds and Web Slices.  This is because, due to Protected Mode work implemented in IE7, session cookies are not shared between cross integrity level processes (in this case msfeedsync.exe runs at medium and iexplore.exe runs at low). So, if a user logs out of the site, they will no longer be able to receive updates to the Web Slice.

Example

Consider the following scenario.  A banking site requires a user to log in to their site.  The user logs in and chooses to save their username and password by checking the ‘remember me’ box on the site (not to be confused with IE’s built in password auto complete feature).  The site creates a cookie on the user’s machine that will expire in 2 weeks.  Future updates to the Web Slice will just work until the cookie has expired.  When the cookie expires, the site shows a custom crafted login form that fits nicely into the 320x240 pixel preview window of the Web Slice.

Here’s an example of how a tailored 320x240 login form could look in this scenario when the cookie has expired or there is some other type of error logging into the site.  

a login form within a Web Slice.

If you don’t like the idea of creating a custom login form in the 320x240 window, then you can simply add a link (use target=_blank) to login at the site. 

Design considerations:

  • Recommended for Dynamic Slices only - This method is only recommended for Dynamic Web Slices, not feeds or the other types of Web Slices.  The reason being that there is no friendly way to display a login form within a feed.  Form controls in normal RSS feeds and non-Dynamic Update Source Web Slices are disabled for security reasons.
  • Users logging out will cause updates to stop working – As mentioned above, users might not realize that logging out of the web site also prohibits the Web Slice from updating in the background.  Also, “Remember me” is not traditionally checked by default, which means publishers need to communicate to users that the user should “check remember me” in order for the Web Slice to work the best.  You will need to provide a login mechanism within the preview window, like the one above.
  • Server responses need to be understandable to the Windows RSS Platform – Depending on how you decide to implement the Web Slice to get updates, make sure when auth fails due to no cookie, the response returned is in a format that the Windows RSS Platform can understand (either a Web Slice or feed).  Returning an unrecognized response code or other type of error will cause an error to appear in the Web Slice UI. 
  • Use SSL - It is strongly recommended that you configure the server to require SSL in this scenario.  This will add extra protection and avoid credentials being sent in the clear over the wire.
  • Get Phishing and Certificate Validation for free - It should be noted that full certificate validation and SmartScreen support has been implemented for Dynamic Web Slice urls.  So, users will get an extra layer of protection against Phishing attacks and identity theft.  If a Phishing URL is detected, a block page is displayed in the 320x240 preview window.  And, the certificate assurance badge is displayed for SSL sites (examples shown below).

The Suggested Sites Web Slice that ships out of box with IE8 is a good example of certification validation experience:

The Suggested Sites Webslice has a button at the bottom of the slice which enables the user to examine the site certificate.

2. Web Slice specific authentication cookie

This option is applicable only for Dynamic Web Slices or slices using an Alternative Update/Display Source or feedurl.  Given the pervasiveness of cross site request forgery vulnerabilities (CSRF), this may be a more secure option than relying on persistent cookies for Web Slice authentication.  With this option, the user doesn’t have to choose between Web Slice functionality and the security of “signing out of sites”.  Here, a Web Slice publisher will use a separate persistent cookie just for the Web Slice entry-content href or feedurl.  This cookie permits just the download of the Web Slice content (which usually is read-only). 

How it works

When the user subscribes to the Web Slice, the server sets a persistent cookie for the URL that contains updates to be synced.  By default, cookies are set for a particular domain.  To set a cookie for just the update url, depending on how your server is implemented, you can scope the cookie to a particular folder on the site OR to a particular sub domain.  Or, you can do server side plumbing to validate that the cookie (e.g. via unique name/value pairs or other extra data within the cookie) contains “login credentials” that are just-enough to identify the user to the server and provide access to only the data in the Web Slice.  In other words the cookie should only work on the particular Web Slice URL, but not anywhere else on the domain. 

Design considerations:

  • Extra cookies means extra work - Publishers will have to deal with a second kind of authentication cookie, validating it, expiring it, etc. which is more work.  
  • Should get user’s consent - It is recommended you put specific notice on the subscribe page to inform the user that a cookie is being set on their machine to sync updates.
  • It should also be mentioned that the tradeoffs discussed in section 1 still apply here too.

Example:

Let’s say you’re the publisher of a social music site and users have to login to see the content.  When they subscribe to a Web Slice to keep track of the top 20 songs, instead of using the site domain cookie, you generate a persistent read-only cookie scoped for a subfolder on the domain which contains just the Web Slice or feed of the top 20 songs.  If the cookie expires or the user deletes it, then the Web Slice preview could display a custom form (if Dynamic) or a link to go login somewhere.  Or you could just re-generate the cookie when they sync updates (depending on the scenario).  Here’s how the code could look for this:

<div class="hslice" id="top20"> <h2 class="entry-title">Top 20 Downloaded Songs</h2> <a rel="feedurl" href="../SyncUpdatesFolder/default.aspx#top20" style="display:none;"></a> </div> .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

 

Here the cookie would only apply to content under the SyncUpdatesFolder (using the Path cookie attribute while setting the cookie).  Then, the code for default.aspx (in C#) could look like:

<%@ Page Language="C#" %> <% if (Request.Cookies["username"] != null) { //cookie exists display content HttpCookie aCookie = Request.Cookies["username"]; //write out Web Slice with updates Response.Write("<div's the top 20 songs, and more…</p></div>"); } else { //no cookie, write out error message with link to login Response.Write("<div"); } %> .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

 

Or, you could just have all your Web Slices exist on subfolders or domains on the site and avoid putting them on the main site, then you don’t have to worry about having an extra feedurl to sync updates from. 

3. Unique Web Slice URLs

A variation of #2 is the use of unique Web Slice URLs which would be unique to the user but could be used without cookies.  When used without cookies, this is a not secure method, but it might be sufficient depending on the information provided in the particular Web Slice. 

How it works:

Consider the following scenario: a Web Slice contains public information but is scoped to a particular user.  Think of a scenario where you want to track new albums created by certain artists.  Although public information, it is content tailored to a user’s query.  Instead of having the user authenticate, you can have code that runs on the server to dynamically generate the entry-content href or feedurl.  Note that generating this content using AJAX will not work, but instead it must be server side code to generate the unique URLs (see example below). 

Design considerations:

  • More server side plumbing required – this method requires a unique URL for each Web Slice and could actually be more work on the server side.   
  • Not a secure option when used without authentication - Unique URL approach shouldn’t be used for Web Slice that contain sensitive information (unless you have the capacity to generate unique cookies for these URLs and can do this over SSL)
  • Must generate unique URLs using server side code – As mentioned above, you must generate the unique URLs using server side code.  Ajax will not work because the Windows RSS sync engine can only check for updates on the HTML/xml returned from the server.  It can’t simulate what a user would do to dynamically change the page after it’s loaded.

Alternative Update Source example:

In the code below, the asp server side code in <% … %> is used to generate the unique URL for the user.

<div class="hslice" id="<%=id%>"> <h2 class="entry-title">Unique URL Slice</h2> <a rel="entry-content" href="../display.aspx?userid=<%=guid%>"></a> </div>

 

4) HTTP Authenticated Web Slices and Feeds

The IE8 Windows RSS Platform now has support for HTTPS BASIC and HTTP/S DIGEST authentication.  This option is the only supported option for setting credentials for a feed or Web Slice via our new RSS authentication APIs.  

This table describes the supported HTTP authentication schemes in IE8:

Authentication

HTTP

HTTPS

BASIC

Not supported

ok

DIGEST

ok

ok

 

Aside from cookie/forms based authentication, these are the most prevalent HTTP authentication schemes on the internet today.  Other authentication schemes (e.g. Kerberos and NTLM) should typically ‘just work’ as the operating system will already handle these schemes outside the Windows RSS platform and users will already be authenticated to these servers (e.g. by joining a computer to a domain over NTLM) and will only access those Web Slices or feeds when within that realm.  Also, other HTTP authentication schemes that require prompting outside the context of the RSS platform (e.g. Certificate picker for client auth certificates) are specifically not supported because the Windows RSS Platform cannot simulate user actions in these scenarios.  And, even more importantly, this is a poor experience for users as they will be shown a dialog out of context and may not know what they are being prompted for.

How it works

When any supported HTTP authentication method is used, the user experience will be as follows.  If users are subscribing to an authenticated Web Slice and/or feed and has not already been authenticated to the server, then they will get prompted for credentials during subscription.  However in many cases, they navigate to the authenticated server first, log in, and then subscribe to a Web Slice or feed.  Since the users are already authenticated during time of subscribe, the initial download just works.  On the next feed and Web Slice sync, users will see an error indicating that a username and password is required.  Clicking the error, will launch the feed and/or Web Slice properties dialog where they can enter these credentials.  After this, future syncs to the data will work as long as the server accepts those credentials.   

Here’s a screenshot of the Web Slice error to enter credentials. 

A Web Slice with an authentication error button displaying at the bottom.

Clicking the error button will bring up the feed property dialog to enter credentials:

The feed properties dialog enables users to enter their credentials.

Design Considerations:

  • Not recommended for Dynamic Web Slices - This option is not recommended for Dynamic Web Slices because the user experience is not ideal and because we are subscribed to a different url than what is shown to the user in the Preview window..  What happens is after download of the Web Slice, the first time the user clicks to view the content, they will be prompted for credentials with the Windows Credential Manager dialog.  This may be a confusing experience since the dialog will show out of context and the user may not realize who/what is prompting for credentials.  Also, it can be deceiving since the user may not realize they are entering credentials for a different url than what is shown to them in the Web Slice.
  • Not supported for enclosures - Feed enclosures cannot be authenticated at this time
  • Server response codes -  It is required that the server challenge the requests to the Web Slice or feed with a regular HTTP auth challenge (HTTP 401 Auth required response).  This will produce the experience mentioned above and the user will be prompted to enter credentials
  • Why BASIC Auth only via SSL?  We must not send out user credentials in the clear in a background process, in this case the Windows RSS sync engine process.  The user is “somewhat” in control when s/he chooses for their credentials to be sent in the clear (e.g. by logging into a non SSL site).  But for subscribed content s/he won’t know when the credentials will be sent.  Imagine the scenario of going to free Internet café and having your credentials being sent in the clear over a non-secure wireless connection when IE downloads your feeds in the background. 
  • Using an alternate feedurl to subscribe to for authenticated Web Slice: Similar to option 2, instead of requiring that the Web Slice is only reachable via HTTPS, it’s possible to make the Web Slice reachable via http and https.  Then have the Web Slice include the <a rel="feedurl" href="https://...."> construct to point to an alternate URL to subscribe to for the Web Slice.  In this case the “feedurl” should point to the same Web Slice but instead of http it should be https so that the user will be subscribed to the SSL version.  This approach has the additional potential benefit of allowing the regular http Web Slice to use cookie authentication, but the https version to use HTTP Authentication. This means that HTTP Authentication is only used when the user is actually subscribing to a Web Slice and not when just browsing to pages with Web Slices. 

There are other options for authentication, but these are the main four we recommend and support.  In summary, the following table describes the authentication support in IE8 for feeds and Web Slices.

Type/Option

1) Persistent cookies

2) Web Slice specific cookie

3) Unique Urls

4) HTTP auth

Regular Web Slices

(The slice does not use an Alternate Display/Update source.)

Ok1

Ok1

Ok

Ok

Dynamic Web Slice

(The slice uses an Alternate Display Source.)

Ok

Ok

Ok

Not recommended2

Alternate Update source

(The slice uses a feedurl to get updates.)

Not recommended3

Not recommended3

Ok

Ok

RSS feeds

Ok

Ok

Ok

Ok

1 This is ok, but you will have to create a web slice or single item feed response containing login information that will be shown when the cookie is not present.  This may not be possible depending on how you’ve implemented the Web Slice or feed.

2Not recommended because the user will get a confusing auth prompt when opening the web slice after subscription.  And, the user may not be aware of what they are entering credentials for.

3 Not recommended because you’re syncing updates from a different place than what is shown to the user.  To make this work, you’d have to somehow figure out that the feedurl sync failed and generate a new slice on the main page to display to the user that auth is required.  It is possible but extra work.

Thank you and I hope you have fun developing secure Web Slices!

Amy Placzkiewicz
Lead Software Design Engineer in Test
Web Service Integration Team

Categories: Developers

More IE8 Extensibility Improvements

Tue, 2009-03-10 19:46

We’ve made a few improvements to our extensibility model in IE8 RC1 based on feedback we’ve received both internally and externally.

WebBrowser (WebOC) Rendering Mode Changes

About a year ago, I posted an entry talking about WebBrowser Control Rendering Modes in IE8. You may recall that applications using the WebBrowser Control (also known as the WebOC, or Trident hosts) can use a Feature Control Key to select the default rendering mode of webpages they load.

Since our release of IE8 Beta 1, we’ve changed the name of the Feature Control Key that is used to toggle that behavior. The key was previously called FEATURE_NATIVE_DOCUMENT_MODE. IE8 now refers to it by the key FEATURE_BROWSER_EMULATION, and the values for both IE7 Standards Mode and IE8 Standards Mode have changed.

For compatibility purposes, the WebBrowser control will run in IE7 Standards Mode by default if no Feature Control Key value is defined for an application.

To run a WebBrowser control in IE8 Standards Mode, use the following new value into the registry:

[(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
"MyApplication.exe" = dword 8000 (Hex: 0x1F40)

To run in IE7 Standards Mode, use the following registry value:

[(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
"MyApplication.exe" = dword 7000 (Hex: 0x1B58)

For IE8 RTM, we’ve added a new “forced” IE8 Standards Mode value. When an application opts into this mode, the Web Browser control will use the IE8 User-Agent string and Browser Emulation mode strictly. It will also ignore fallback features such as the built-in Compatibility View list and the user-generated Compatibility View list when loading pages. To run in “forced” IE8 Standards Mode, use the following registry value:

[(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
"MyApplication.exe" = dword 8888 (Hex: 0x22B8)

In all of these examples, “MyApplication.exe” refers to the name of your application.

Besides the control key name update for RTM, you may have noticed that these values differ from our Beta 1 release. If you are migrating your application from a Beta or RC1 build of IE to RTM, this value chart will help you replace old rendering mode settings:

  IE8 Beta 1 IE8 Beta 2 IE8 RC IE8 RTM

Feature Control Key

FEATURE_NATIVE
_DOCUMENT_MODE
FEATURE_BROWSER_EMULATION

IE8 Standards Mode

80000 (0x13880) 8 8

8000 (0x1F40)

IE7 Standards Mode

70000 (0x11170) 7 7

7000 (0x1B58)

IE8 Standards Mode (Forced)

- - - 8888 (0x22B8)

For more information on how this will affect the way your application renders webpages, please refer to my older post, disregarding the old Feature Control Key information. If you would like to learn more about compatibility view and the differences between IE7 and IE8 modes, check out Scott’s post on Compatibility View.

ActiveX Logging Using the Application Compatibility Toolkit

The Application Compatibility Toolkit (ACT) helps customers understand their application compatibility situation by identifying which applications are compatible with Vista, IE7, and IE8, and which require further testing. To aid developers and IT Pros with ActiveX installations, we’ve added logging points for installation, instantiation, and loading of ActiveX controls. This data may help in determining whether or not a control is working properly, and may indicate if Line-of-Business applications need to be updated before IE8 is rolled out in enterprise scenarios.

For more information about how to use the Application Compatibility Toolkit, check out Jatinder’s post here. You can also take the toolkit out for a spin yourself by downloading it from Microsoft.com

Deprecation of activex.microsoft.com

A few years back, when ActiveX controls were first emerging as a web technology, Microsoft set up activex.microsoft.com to allow for the distribution of popular controls.

As of IE8, Internet Explorer will no longer check activex.microsoft.com for control installations and updates. From a technical standpoint, this means that the domain was removed from our default CODEBASE lookup locations; when attempting to download a control from webpages, this domain will no longer act as a fallback when no control location is provided or when a provided location fails.

Enterprises using their own codebase download paths will not be affected by this change.

Feedback and Suggestions

I love to hear from developers, IT Pros, and users about feature suggestions, comments, complaints, etc. As always, feel free to email me (mattcrow@microsoft.com) with your thoughts on how we can improve.

Matthew David Crowley
Program Manager
Internet Explorer Extensibility

Update 3/11: Added a sentence indicating that the WebBrowser control runs in IE7 Standards mode by default when there is no Feature Control Key defined.  Also, updated the registry values to indicate they apply in either HKCU or HKLM.

Categories: Developers

ill communication

10 Years Ago...

Mon, 2008-03-31 19:33
...I was sitting in my computer science class in high school trying to figure out how the heck to build...

Netscape 9 Released!

Mon, 2007-10-15 23:22
Good times. They managed to get it out the door, before they have to follow after it. Christmas comes early...

Mac Firefox UI Disaster, v2.0

Tue, 2007-10-02 14:58
If I wanted to use Safari, I'd use Safari. Someone needs to smack whoever keeps screwing with the mac themes...

Indistinguishable from Jesse

TidyBug

Fri, 2009-02-27 01:27
My newest Greasemonkey script, TidyBug, cleans up the show-bug page on bugzilla.mozilla.org. Old and busted: Bugzilla screenshot New hotness: Bugzilla screenshot with TidyBug TidyBug hides empty fields, making it easier to see the fields that are populated and reducing the amount of scrolling needed to see the comments. In the example above, TidyBug removed 61% of the [...]
Categories: Mozilla

Continuous integration at Mozilla

Thu, 2009-02-19 04:42
Mozilla's poor continuous-integration story is a major source of stress and wasted time for Mozilla developers. Andreas Gal, for example, recently lost two consecutive weekends tracking down test failures. The story is all too common: Numb to everyday "random orange" from intermittent failures, nobody noticed the new test failures until there were multiple new [...]
Categories: Mozilla

An open letter to my email inbox

Tue, 2009-02-17 20:01
Your days of making me feel overwhelmed are numbered. "1713 messages, 221 unread" doesn't intimidate me any more. I am armed and I know enough to be dangerous. Gigantic todo-list text file: Processed. Desktop: Cleared. Bookmarks toolbar: Reclaimed*. Stacks of snail mail: Dealt with. Inbox: You're next. *Thanks to bug 477751 for forcing me to go through dozens of [...]
Categories: Mozilla

inessential.com

Pixie

Tue, 2009-03-10 21:57

Here’s Pixie looking at my source code. Whenever I use it, it distracts me. I especially like turning it on itself.

Pixie screen shot

Software + zealots + personalities

Mon, 2009-03-09 20:22

One of the things that kept me away from Git for a while was the evangelical stuff — and that Linus Torvalds is its daddy.

I don’t mind advocacy, and I absolutely, completely love it when people write with passion about cool stuff — but there’s a border. On the other side of that border are the zealots.

Git, like Linux, has more than its share of zealots, and I’ve always had the impression that Torvalds is not someone I would like very much in real life. (I’m probably wrong — I tend to like most everybody I meet, and I’d probably like him tons.)

I hate that personalities can get in the way of looking at technology. I admit, I had to make myself take a look at Git. That’s a shameful thing on my part. (But at least I did it!)

Thought experiment

I’ve been using Apple computers for 29 years. But what if I hadn’t? What would I think?

I’d probably look at Steve Jobs and think he was precious and over-rated. Arrogant and fiddly. The kind of guy who’s so lonely because he’s the only person in the world who’s always right.

I would have to make myself take a look at Macs and iPhones, the way I had to make myself look at Git, despite not wanting to be in that guy’s world.

I’m not saying I actually do think that of Steve Jobs. I’m imagining an alternate universe.

But it points out the trouble of taking personalities into account too much when considering technology. It would be a shame to miss out on iPhones and Macs just because of that stuff — and it would be a shame to miss out on Git for those kinds of reasons too.

Cool stuff is cool, despite the source, despite the behavior of some of the people who like it.

Theory: zealotry == nil

I’ll try this out: The absence or presence of zealots indicates absolutely nothing about the quality or lack of quality of a piece of technology.

It’s like weather. Not random, but close enough. You can ignore it completely. Zealots are wasting their time.

Similarly: the perceived arrogance of a leader indicates nothing about quality.

However, there does seem to be a correlation between certain types of leaders and the presence of zealots.

What’s a zealot?

A fanboy is somebody who really, really, really likes something.

A zealot is somebody who really, really, really likes something — and thinks it will change the world, and that everybody who doesn’t like it is living their lives wrong and hurting everybody.

Zealots like to apply the phrase “just doesn’t get it” to people who differ. (Beware that phrase! But beware even more when people say of you that you “get it.”)

How to develop a cult of personality

If you want your own corps of zealots, first you need some truly great technology. Don’t skip this part.

Then you need a philosophy that people adopt as a cause.

Then you need to state your opinions boldly. Make them as simple and direct and uncompromising as possible. The impressions of deep intelligence, candor, and certitude are key.

Your goal is to turn off the skeptical and analytical gears and ignite the pack-following engines.

It’s nice, but not essential, to actually be right, or partly right, much of the time.

(I think that’s it, but I might be missing something.)

Beta dogs

The ambition of every pack follower is to be the beta dog. They can’t be alpha, because fearless leader is alpha — but they can be second-in-command.

The surest route to beta-dog-status, our instincts wrongly tell us, is to be the best zealot.

(I want to get in a literary reference here about Paradise Lost and Lucifer saying it’s better to rule in hell than serve in heaven. But, of course, I’m slightly afraid that religious zealots will take it the wrong way. So I’ll skip it — I’ll just stick it in this parenthetical note, knowing full well that while parentheses look like shields, they’re really not.)

None of the above matters

I could go on and on. But the thing is, none of it says anything about how good is any given piece of technology. I still have to look and decide for myself.

It’s tough, because my personal tendency is always to hate Top 40. I’m always suspicious of the song that’s rising up the charts with a bullet.

Cable news channels complaint

Sat, 2009-03-07 17:32

The cable news channels are obsessed with Twitter these days. And of course they read feedback from Facebook and email too.

I wish they wouldn’t. I hate it. It wastes my time.

This on-air stuff proves that people have strong opinions that they can express succinctly — and that contribute nothing to the dialog or understanding of an issue. Nothing new there.

And it shows how desperate the news channels are to appear young, or plugged-in, or open, or whatever. I’d rather they did a better job of news reporting.

inside aebrahim&apos;s head

Enterprise Deployment of Firefox

Wed, 2008-12-17 05:23
I am responsible for overseeing the IT infrastructure of an office with about 40 Windows-based computers. We always keep the OS and relevant software patched, though sometimes even keeping Windows/Office/IE patched to the most current level is not enough. The workarounds provided by Microsoft for this issue are frankly, not acceptable because website functionality with security [...]
Categories: Mozilla

Google Munging Search Result URIs

Tue, 2008-07-01 10:13
I just noticed that Google is munging search result URIs. For example, if you run a search on “mozilla”, the first result is http://www.mozilla.org/. However, the URI that they link to on the search results page is: http://www.google.com/url?sa=U&start=1&q=http://www.mozilla.org/&usg=AFQjCNGjMwD4PF4GezESBBRN2It3HBj5Qg I suspect that the usg parameter is probably one used to prevent bots from gaming whatever results they’re trying [...]
Categories: google

Mozilla Digital Memory Bank

Sun, 2008-06-22 09:57
The folks over at the Mozilla Digital Memory Bank kindly took the time to interview me last November. I just noticed that the interview transcript has been posted online last month.
Categories: Mozilla

Inside Firefox

Jason Santa Maria | Articles

In Person

Wed, 2009-02-18 14:25

I’m trying to cut back on travel and speaking dates this year, but I’ll be out and about a few times. If you happen to be attending any of these events, be sure to say hello!

Not the Same Old Story, SXSW Interactive, March 14, 11:30am

I’ll be moderating a panel exploring how people from different backgrounds tackle the problem of design and storytelling online. From the description:

If the web provides so many ways to connect with audiences, why are we all stuck telling the same story with our designs? Hear from a panel of storytelling experts on the importance of narrative and art direction online to break away from static and boring experiences.

I’m honored to be joined on the panel by some very talented folks:

  • Nicholas Felton, feltron.com
  • Daniel Burka, Creative Director, Digg/Pownce
  • Emily Gordon, Editor-in-Chief, Print Magazine, Emdashes.com
  • Ian Adelman, Design Director, NYMag.com
The Influencers, DOT DOT DOT, April 15

The upcoming Interaction Design Masters program at SVA is really building steam, and they’ve been giving back to the community with a free monthly lecture series called DOT DOT DOT. I’ll be giving a 10-minute talk on the night’s theme of “The Influencers” alongside Steve Heller and Hillman Curtis. Get details and RSVP for free here.

An Event Apart, Boston, June 22-23

I’ll only be at one An Event Apart this year, and luckily it’s during my birthday. I expect everyone in the audience to bring presents. Register with the promo code “AEAHCC” and save $100.

@media09, London, June 25-26

Later the same week as An Event Apart, I’ll be jetting over to London for @media and the need to fulfill some serious bangers and mash cravings.

Layer Tennis, February 27, 3pm NY time

Next week I’ll once again jump onto the tennis court to do battle. Last time was a wonderfully macabre Halloween-themed match, this time it’s just straight up pixels and brain cells against none other than Derek Powazek (commentator TBD). I’m definitely going to need to get lucky on this one.

What the World Needs

Tue, 2009-02-03 16:40

My first job was as a dishwasher, a job title I’ve had at three separate times in my life. During high school I worked at a local restaurant where I washed dishes and did some light cooking. When I quit to attend college, the head cook lashed out with his wisdom, “Art?! As soon as there’s a war or recession, art will be the first thing to go. And when that happens, you’ll be right back here washing dishes. People will always need cooks.” The restaurant folded while I was away at college.

I’ve always wanted to be an artist. I drew constantly in my youth and quickly became one of those kids that was “good at art”. It was firmly planted in my head that I would go on to be a famous illustrator, probably drawing some of the most badass comic books around.

My family was nothing but supportive, regardless if they understood just what kind of things I wanted to create, they always conjured up interminable pride. I focused on doodling and pushed off the idea of how I’d actually make a living. I just kept telling myself that if I achieved a high enough level of skill, people would beat a path to my door.

The notion of being an illustrator stayed with me through most of my schooling, only to fade and finally die out in college. Sometimes I pinpoint that moment as the time I was sitting in life drawing class next to Kevin (who I didn’t know at the time). I had just finished what I thought to be a decent likeness of the reclining model in front of me when I glanced over at Kevin’s work. My jaw hit the floor, followed closely by the tiny jaw of the figure in my drawing. His perfectly shaded rendering mocked me from the easel with vivid photographic precision. It was good, like crazy fucking good.

Kevin’s drawing was a wake up call, but it wasn’t the only reason for my dread. The real fact was my grades were in the toilet because my heart just wasn’t in it anymore. Around then I discovered I had a strong connection with graphic design and a dormant love for typography—probably a leftover from years of filling my brain with meticulously hand-rendered comic book sound effects. I continued to take a full roster of illustration courses, but threw myself into my design classes with newfound resolve. I didn’t know it at the time, but this was a huge mile marker in my life. It didn’t matter what I thought I wanted to be, the real point was finding someplace to direct all of my creative energy.

It’s often interesting to see what paths life will drag you down. Before college, I had only a few brief encounters with a computer, and the majority of those were to play video games. Now I spend much of my day in front of a computer. I may not pick up a pencil or brush as often anymore, but I’m still creating things and trying to be good at art.

Simple.

Mon, 2009-01-19 16:46

Simplicity is not the goal. It is the by-product of a good idea and modest expectations.

Paul Rand

Jason Santa Maria | Oddities &amp; Diversions

Drag Me to Hell

Thu, 2009-03-12 04:33
Drag Me to Hell, Sam Raimi plunges back into the horror genre, which means I will be there with bells on. #

Redesign Mozilla

Thu, 2009-03-12 04:31
Redesign Mozilla, Happy Cog’s latest project to redesign Mozilla’s site. The catch is, the designs are up for public critique and input. Beautiful first round of design. #

Comics Archetype Times Table

Wed, 2009-03-11 18:59
Comics Archetype Times Table, Zombie Robot and Astronaut Lincoln might be my favorites. #

Jeffrey Veen

Conference hack: Embracing the backchannel at Start

Fri, 2008-07-25 13:29

I had a very interesting experience a few months ago while participating in a panel discussion. Once again, I realized that the content on stage is merely the spark of a broader conversation, and that the backchannel is rapidly becoming the whole point. So we've decided to try an experiment at the Start Conference in a couple weeks to see how we might hack traditional presentations.

But let me back up a bit first. I was on a panel at this year's South by Southwest talking about the role of analytics in design. With me were two veterans of the advertising industry who's work included some of the biggest ad campaigns of the past few years - some really amazing stuff. I started the conversation by saying how the remarkable amount of audience data available to us gives designers tremendous power to affect user experiences. My collegues suggested my approach sucked the creativity out of design. I countered that they were mistaking preferential research from behavioral. The argument heated up.

While this was happening, my phone was buzzing non-stop. I slipped it out of my pocket to discretely turn it off, but noticed a stream of Twitters going by - many from audience members in the room. So I set the phone down on the table in front of me and kept an eye on it. I'm so glad I did.

As the conversation on stage continued, the stream of questions and comments from the audience intensified. I changed my tactics based on what I saw. I asked questions the audience was asking, and I immediately felt the tenor of the room shift towards my favor. It felt a bit like cheating on an exam.

I guess it really wasn't cheating, but it does illustrate one of the frustrations I've had at conferences lately. Most of the events I attend have a rich conversation happening in the room, yet the only people not able to participate are those on stage. A couple times, I've seen organizers project a live IRC channel, but that usually bring out the worst in people ("First!!!111") - and is terribly distracting. So I've been wondering for a while if there was something smart we could do at our conference.

Apparently, Bryan had the same idea. As we were planning Start, he said, "We should have someone onstage the whole time to represent the audience. Like an ombudsman does for a newspaper."

So we decided to put a desk on stage and have our friend George Oates fill that roll. She'll be on Twitter, IM, and email listening to what people are talking about. (We'll also have volunteers collecting index cards for those not wanting to be online during the sessions.) And she'll synthesize questions, interrupt us if we get boring, and call bullshit if something sounds like it. George has been the designer at Flickr since it started; her personality has always shown through there, and will be a great fit for what we're trying to do.

What do you think? I've never really seen a conference do something like this before. Have you?

Categories: Personal

Conference hack: Embracing the backchannel at Start

Fri, 2008-07-25 13:29

I had a very interesting experience a few months ago while participating in a panel discussion. Once again, I realized that the content on stage is merely the spark of a broader conversation, and that the backchannel is rapidly becoming the whole point. So we've decided to try an experiment at the Start Conference in a couple weeks to see how we might hack traditional presentations.

But let me back up a bit first. I was on a panel at this year's South by Southwest talking about the role of analytics in design. With me were two veterans of the advertising industry who's work included some of the biggest ad campaigns of the past few years - some really amazing stuff. I started the conversation by saying how the remarkable amount of audience data available to us gives designers tremendous power to affect user experiences. My collegues suggested my approach sucked the creativity out of design. I countered that they were mistaking preferential research from behavioral. The argument heated up.

While this was happening, my phone was buzzing non-stop. I slipped it out of my pocket to discretely turn it off, but noticed a stream of Twitters going by - many from audience members in the room. So I set the phone down on the table in front of me and kept an eye on it. I'm so glad I did.

As the conversation on stage continued, the stream of questions and comments from the audience intensified. I changed my tactics based on what I saw. I asked questions the audience was asking, and I immediately felt the tenor of the room shift towards my favor. It felt a bit like cheating on an exam.

I guess it really wasn't cheating, but it does illustrate one of the frustrations I've had at conferences lately. Most of the events I attend have a rich conversation happening in the room, yet the only people not able to participate are those on stage. A couple times, I've seen organizers project a live IRC channel, but that usually bring out the worst in people ("First!!!111") - and is terribly distracting. So I've been wondering for a while if there was something smart we could do at our conference.

Apparently, Bryan had the same idea. As we were planning Start, he said, "We should have someone onstage the whole time to represent the audience. Like an ombudsman does for a newspaper."

So we decided to put a desk on stage and have our friend George Oates fill that roll. She'll be on Twitter, IM, and email listening to what people are talking about. (We'll also have volunteers collecting index cards for those not wanting to be online during the sessions.) And she'll synthesize questions, interrupt us if we get boring, and call bullshit if something sounds like it. George has been the designer at Flickr since it started; her personality has always shown through there, and will be a great fit for what we're trying to do.

What do you think? I've never really seen a conference do something like this before. Have you?

A quick plug: The Start Conference is coming up in two weeks: August 7 in San Francisco. And it's still only $200. Check it out...

Categories: Personal

Robot Cross Stitch

Tue, 2008-07-22 12:04

robot crossstitch

This was a project I started a couple years back that I lost between moving, packing and unpacking. I found it a few days ago and finished stitching it over the weekend. It was inspired by my favorite t-shirt back then.

I like cross stitching for it's obvious connection to pixelated icons and images from the web. I made the pattern by grabbing a picture of the shirt, knocking out the background, and posterizing the colors down to just red, yellow, and black. Then I blew up the image 400% and added a grid to show each stitch. Now, you can just upload an image here and have it spit out a pattern. You'll still need to spend time simplifying and sizing the source file, though.

I've always liked images of robots - especially mid-20th Century anthropomorphic representations. I like that style, but I also like the metaphor. Robots represent our approach to technology and, frankly, how wrong we usually are. We had hoped to create tech in our own image, like Rosie, the Jetson's maid who zipped around the house cleaning and cooking. We hoped that robots would enable a life of pure leisure - walking, talking butlers that do our bidding.

Our present reality is far from those idealistic days, but in a way I'm grateful for that. Instead of technology serving us, we've created powerful tools that amplify our abilities. We use computers to make us smarter, the web as an outboard brain, networks to stay connected. Rather than building robots as better humans, we've used technology to become better ourselves.

But that's just me at my most optimistic. The truth is I like to stitch things like this to get me away from the damn computer. I think I'll start another project...

Categories: Technology

Justdave's Blog

Replacing Google Groups for Mozilla Newsgroups?

Wed, 2009-03-04 00:41
This article is a repost of a previous article, but since I didn’t get very many responses, I figured I’d try again with a more attention-grabbing headline. Does anyone know of any decent web interfaces for NNTP out there? Preferably open source that we could host ourselves. There appear to be a [...]
Categories: Work

Web interfaces for NNTP

Tue, 2009-02-24 08:11
Does anyone know of any decent web interfaces for NNTP out there?  Preferably open source that we could host ourselves.  There appear to be a LOT of them, so what I’m really asking is, which of all of those are actually any good, and would work for what we need? :)  (or be close enough [...]
Categories: Work

Girl Scout Cookies

Mon, 2009-02-23 16:37
My daughter Makenzie is a Brownie Girl Scout and gets to sell cookies this year for the first time.  Since the delivery date for the local cookie sale this year happens to coincidentally be three days before the Mozilla Corporation all-hands meeting in April I figured I would advertise it to any Mozilla folks who [...]
Categories: Personal

Justdave's Blog

Bugzilla news feed now available

Sun, 2008-12-07 04:49
So, thanks to Fowl’s comment in my previous entry, I tried out setting up the Google news/blogsearch keyword feeds for Bugzilla in Google Reader, and then individually sharing each of the entries that were actually about Bugzilla, and then using the shared items feed from Google Reader as the newsfeed.  It turns out to work [...]
Categories: Bugzilla

Bugzilla in the news

Mon, 2008-12-01 22:00
Dear LazyWeb…   I like to know how Bugzilla’s being talked about out in the world, so I subscribe to Google’s handy news and blog alert services where you can put in keywords and they’ll send you an email every time a new blog or news article shows up containing that/those keywords.  This works really [...]
Categories: Bugzilla

bugzilla.mozilla.org update

Tue, 2008-09-02 10:32
On Friday, I pushed a small update to bugzilla.mozilla.org that fixed bug 452799, where users who didn’t have ‘canconfirm’ privs in Bugzilla were posting bugs that had a status of NEW rather than UNCONFIRMED. This morning, I pushed an update to bugzilla.mozilla.org containing a plethora of additional fixes to address concerns raised since the Bugzilla upgrade.  [...]
Categories: Bugzilla

Lair of the Wolf: Mozilla Posts

Egos and Stupidities....

Tue, 2006-10-17 15:08

Yes, I know, I'm late to the game.. and out of practice at blogging these days. Just wanted to get my own opinion out, since self-expression makes me feel all fuzzy....

So, yay, now we apparently have Icedove and IceWeasel (which for the sake of being anal and annoying must have a capital W in it. otherwise, hey, somebody might not realize what they're reading.) Sure, its completely free, as in freedom software. but then again, so is Bon Echo. (Firefox without the --enable-official-branding switch, you know, the thing Debian broke to make their problem worse).
The big problem here, isn't trademarks or patches, its a battle of egos. Mozilla (the Corporation, enforcer of all things trademarked.) is certainly taking a hard line stance. (To use the Firefox name (and its logo) you must be releasing something that we can certify meets the quality of "Firefox", which is an official designation for the software.) Other distros apparently do this successfully, but they aren't concerned about protecting themselves from every straw-man and mythical big-bad corporation beast that's (supposedly) determined to make their life harder.

Debian of course, is too good to have to ask permission for anything, or even make their patch set readable or answer straight questions about what the patches are they really are applying, avoiding it with (they came from bugzilla. and no more details about why.) and try to make it all about the evils of wanting patches included in something named Firefox approved.

I think its probably more about wanting to know why Debian builds with their included patchset, are far more buggy and cause users of them way more headaches than the Mozilla-released equivilent. Its those problems that led Mozilla to push Debian, to give details of those patches, or stop using the Firefox name, since it makes users think that Firefox itself, sucks, and not the distro provided packages.
So, let them rebrand IceWeasel, and include those patches, IceWeasel will of course suck as bad as the current Debian Fox builds do. Hopefully, somebody else will step-up and provide a base unbranded (or branded even, it shouldn't be hard.) Bon Echo or Deer Park build for Debian distros so that its users, (who aren't all FS zealots, i'm sure.) have an option to vote no to IceWeasel, and Ubuntu finds a better way independently of all this mess, like actually working with Mozilla and finding common ground and understanding. Instead of snobbish elitism and a nice big fork.
Oh, and the Mozilla side, should just let it go. If Debian wants to fork, let them, Firefox itself was a fork. As-is Flock, and Netscape 8. So what's one more, ignoring the politics?

And yes, Stephen Colbert is in the Firefox 2 credits.. Policital play? PR move? Nah, just a joke.. (I don't think its funny, but then again, I might if I actually /liked/ him.) Go find the name and tell your friends or something.

Oh yeah, Firefox 2 RC3 was released, go download it, poke at it and give feedback.

Categories: Mozilla

SpreadFirefox Spam

Mon, 2006-02-06 13:51

From the SpreadFirefox Account page:
"The e-mail address is not made public and will only be used if you wish to receive a new password or wish to receive certain news or notifications by e-mail."

So, how then, did I get an e-mail from "Spread Firefox team [asa@mozilla.org]" that had nothing to do with any of the above? This email is about the Firefox Flicks campaign. This is spam.

Echoing some of the points made here. http://nitin.wlkr.net/mozings/2006/02/spreadfirefox_spams.html

· There's no options in SpreadFirefox's e-mail options that deal with promotional e-mail.
· There's no way to cancel a SFX account, still.
· The unsubscribe link points to http://mozilla.cmail1.com, and not anything @spreadfirefox. Who I might (kinda) trust.

And two new points:
· The message has a bad plain text-component so that you have to follow a link to read it.
· The email contains a webbug at the end of it:

<img src="http://mozilla.cmail1.com/.aspx/o/----------unique id ------------/o.gif" width="1" height="1" border="0">

Both techniques are usually emplyed only by spammers. (In fact, Thunderbird even flagged the message as an e-mail scam. Ironic?)

I'd like to call on the Mozilla Foundation (which, to my knowledge is who provides support for SpreadFirefox and not the Corporation) as well as Asa Dotzler who's email address is personally on the spam in question, to take responsibility for spamming SpreadFirefox members.

Categories: Mozilla

SpreadFirefox Hacked Again...

Tue, 2005-10-04 15:42

From http://www.mozillazine.org/talkback.html?article=7479:

"The Mozilla Foundation's community marketing site Spread Firefox has been hacked for the second time in less than three months. According to an email sent to registered users of the site, unknown remote attackers exploited a vulnerability in the TWiki wiki software, which was installed on the server but not actually used by the public website. The TWiki software has now been disabled. The Spread Firefox Team does not believe that any sensitive data was taken but they have shut down the site as a precaution. Only Spread Firefox was affected by the security breach; no other Mozilla Foundation or Mozilla Corporation sites have been hacked and the flaw does not affect users of Mozilla software."

This is what happens when you have a website run by people who do their own thing entirely, who obviously don't pay enough attention to keeping things up to date, without keeping the mozilla system administrators in the loop, and to think, the new version of SFX is being done behind closed doors with limited community interaction. This should send plenty of messages of safety about a site that's already been hacked twice, that they're still not being open, and as a result, its the only mozilla site to be hacked. I think its time that the Mozilla Foundation/Corporation take some responsibility for what happens with SpreadFirefox.com.

Personally, I'm no longer comfortable with the way SpreadFirefox is maintained. I don't believe its admins are doing an acceptable job. (This is seperate from the Mozilla Sysadmins, who are doing the best they can) I'd like to see SFX have the ability for users to delete their account. Since obviously they're not safe. Might also make the number of accounts more realistic.

I also find it interesting, that Asa, spreadfirefox admin and frequent mozilla blogger, fails to mention on his blog at all either hacking. :-) Guess the only mozilla news is good news.

Categories: Mozilla

Le «blog personnel» de Joe Clark

New podcast appearance

Thu, 2009-03-12 16:51
My appearance on the World in Words podcast is finally up
Categories: OOMN

Shortchangers

Tue, 2009-03-10 15:32
How to ruin the typography of a novel in verse about L.A. lycanthropes
Categories: Typography

Three remixen that teach you how to remix

Sat, 2009-03-07 15:52
U2, Coldplay (MORRISSEY: Oldplay), Lady Gaga
Categories: Music

Left Justified

SitePoint Raising Funds for Bushfire Victims

Wed, 2009-02-11 01:00
You’d have to be living under a rock to not know that Victoria (where I live) has been decimated by bush fires in the past week. The worst natural disaster in Australia’s recorded history. Such events spark a feeling of shock, horror and utter helplessness in me. So many deaths, so much destruction, and it’s [...]
Categories: 1, sitepoint

New Project Added - &#8220;The Big Amp&#8221;

Mon, 2009-01-26 07:27
If I wait until finishing this one before adding it to The Lab I may never get around to it, so here it is - KT[XX] - The Big Amp.
Categories: 1, audio, guitar, Music, tubes

Back From The Dead

Mon, 2009-01-19 04:43
After almost 2 years without activity this site has received a facelift and some new direction.
Categories: 1, Site News

Marcia&apos;s Tirade of the Day

Mozilla EU Camp Video now available on Air Mozilla &quot;On demand&quot;

Thu, 2008-11-13 20:35
I was fortunate to be able to attend this year's Mozilla EU Camp in Barcelona, and I took advantage of the opportunity to shoot some footage while I was there. I was able to get a few of the participants...

Leopard falls short in the file uploading department

Sun, 2007-10-28 22:11
Anyone who manages online portfolios will be a bit disappointed if they are using Leopard. As I continue to take various portfolio sites for a test spin, I find I cannot upload photos to many of these sites. The ones...

My weather survey needs responses

Tue, 2007-10-23 18:26
I am currently taking a project management class at UCSC Extension. Part of our final team project was to create a survey of some sort and then present our findings during the final class. If you have a moment and...

MDC Webwatch

Mozilla 24: 24-hour worldwide community event

Tue, 2007-08-14 11:41
We’re hosting a conference on September 15 - 16th, taking place online and at locations in Japan, Europe and the San Francisco Bay Area. Mozilla 24 will feature industry and community leaders who will present on Web trends and technologies that will help shape the future of the Web. Current speakers include: Dr. Vint Cerf, Vice [...]
Categories: General

Competitive Tracking - Weekly Roundup: 8/10/07

Fri, 2007-08-10 18:33
New Training and Whitepaper on IE 7 Security Now Available Companies have had many questions about deploying and securing IE7 on the desktop Microsoft released an Internet Explorer Desktop Security Guide that discusses many of the new security features along with recommended settings PithHelmet 2.7 beta released PithHelmet adds content filtering (ads, flash, shockwave, midi loops, etc.) to the [...]
Categories: General

Competitive Tracking - Weekly Roundup: 8/3/07

Fri, 2007-08-03 14:06
Windows Vienna and IE 8 features leaked IE 8 - Undo close tab (like Firefox) - Saving and restoring sessions (like Firefox) Windows Vienna - Virtual desktops (like Linux) - Ability to rearrange items on the task bar - Customizable themes - Windows Core: the ability to separate GUI and console from each other as in Windows Server 2008 - All applications not [...]
Categories: General

Mike Davidson

Shared: Ever wonder why animal crackers are classified as crackers…

Tue, 2009-03-10 01:02
Ever wonder why animal crackers are classified as crackers instead of cookies? Or what the difference between cookies and crackers are? Professor of Biology Mark Eberle unlocks the secrets of the Animalum Cookium.Comments
Categories: Shared

Shared: Ever wonder why animal crackers are classified as crackers…

Tue, 2009-03-10 01:02
Ever wonder why animal crackers are classified as crackers instead of cookies? Or what the difference between cookies and crackers are? Professor of Biology Mark Eberle unlocks the secrets of the Animalum Cookium.Comments
Categories: Shared

Shared: Making The Simplest Investing Rule Even More Simple ⇗

Fri, 2009-03-06 03:35
I hate technicals and trend analysis more than broccoli, but the 50/20 rule seems worth paying attention to.Comments
Categories: delicious

mitchell&apos;s blog

EC: Principle 1: Respecting Previous Choice

Fri, 2009-02-27 18:27
In the last post I listed potential principles and noted I’d try to say a bit more about each. Here’s the first principle. Principle: Microsoft must not undermine consumer selection of non-Microsoft browsers. Rationale: Once a person has chosen Firefox or Opera or another browser this choice should be respected.  Neither Windows nor IE should [...]
Categories: Mozilla

EC: List of Potential Principles

Tue, 2009-02-24 13:50
This post is a list of potential principles derived from the various discussions so far, plus a clarifying example or two for some of the principles.   In subsequent posts I’ll say a bit more about each potential principle and how it might be accomplished, though I’ll be equally happy if this post is enough to [...]
Categories: Mozilla

EC: Let’s Talk Principles

Tue, 2009-02-24 13:43
We’ve had a reasonably full discussion of the harm to browser innovation and competition caused by Microsoft’s activities. It’s time to turn to the question of an effective response from the EC. There’s already been a lot of back and forth on possible remedies, but I’d like to start from a different [...]
Categories: Mozilla

molly.com

Web Standards for Web Applications

Thu, 2009-01-08 16:34
At the upcoming Web App Summit 2009, I’ll be presenting an all new workshop, “Web Standards for Web Applications.” The fabulous and ever-smooth Jared Spool interviewed me recently about the topic, covering issues such as HTML5, The rise of JavaScript, the integration of proprietary and standardized technologies and of course, browsers. We also had a [...]
Categories: standards

W3C Validators in Jeopardy

Thu, 2008-12-11 15:37
As many folks who follow the W3C are aware, financial and bureaucratic issues have challenged the organization for many years. But one thing the W3C has held steady with is its validators, which are regularly and freely utilized by Web designers and developers world over. It’s come to pass that the funding necessary to maintain and [...]
Categories: professional

Registration for January HTML Course Open

Tue, 2008-12-09 17:03
The HTML 4.01 Foundations course is available in a new format for January! Read all about it and get signed up at WebWithMolly. If you have any questions or concerns you can ask them here or at the email provided on the sign-up page. New year, new fun
Categories: professional

morgamic.com

Tabbing Through Elements in Firefox on Mac

Mon, 2008-10-13 19:00
This weekend my laptop decided to die after the latest batch of Apple system updates. Not sure why, but on the first startup after the update, it wanted to randomly shut off (hard power-down) and could not get out of that cycle. Thanks, Apple. So I did my first successful restore from a Time [...]
Categories: Technology

Firefox Keeps You Safe In Ways Other Browsers Don’t

Fri, 2008-06-20 23:41
You might know about some of the more glamorous Firefox 3 security features, but behind the scenes Firefox is protecting you from malicious extensions and plugins through its blocklisting service. Depicted below is a diagram of how Firefox talks to its blocklist service. This is how it works: Every day Firefox downloads an XML document from [...]
Categories: Mozilla

Profiling PHP with Xdebug and Webgrind

Thu, 2008-06-12 14:02
Using Webgrind and Xdebug, you to tack on ?XDEBUG_PROFILE=true to any URL and view profiling information for that particular URL instantly. One of the main criticisms of profiling PHP applications has been how difficult it is to manage different kcachegrind or wincachegrind windows — assuming you’re a pro at pointing them to your Xdebug output directory [...]
Categories: Technology

Mozilla Developer News

Firefox 3.1 Beta 3 now available for download

Thu, 2009-03-12 16:11
Please note: Firefox 3.1 Beta 3 is a public preview release intended for developer testing and community feedback. It includes many new features as well as improvements to performance, web compatibility, and speed. We recommend that you read the release notes and known issues before installing this beta. Firefox 3.1 Beta 3 is now available for [...]
Categories: Releases

about:mozilla - Firefox, security metrics, trademarks, Shiretoko, localization, prototypes, Ubiquity, Bespin, Weave, and more…

Tue, 2009-03-10 10:42
In this issue… Firefox 3.0.7 released Beware the security metric Mozilla trademark abuse reporting Shiretoko to be named Firefox 3.5 not 3.1 Mozilla localization documentation New tab page prototype Ubiquity user testing news Paris Mozilla Labs Cafe, March 27 Bespin project updates Weave M4 development milestone Developer calendar About about:mozilla Firefox 3.0.7 released As part of the Mozilla Corporation’s ongoing security and stability update process, Firefox 3.0.7 is now [...]
Categories: about-mozilla

Shiretoko to be named Firefox 3.5

Fri, 2009-03-06 16:03
As recently proposed, the version number of the Shiretoko project will be changed to Firefox 3.5 before the upcoming fourth beta release. The process of changing the version number will have an effect on many systems, and will be co-ordinated by Sam Sidler (ss on irc.mozilla.org). Add-On developers should stay tuned for announcements about what this [...]
Categories: Releases

Mozilla Digital Memory Bank - Blog

Do You

Tue, 2008-06-17 14:57
We recently went out and interviewed George Mason University students who were Firefox users, to get their impressions of the FF user experience. We hadn’t been received any video submissions, yet, so it seemed a good way to show off our capacity to host video. Check out a few examples here, here, and here. Looking through [...]
Categories: Uncategorized

Do You

Tue, 2008-06-17 14:57
We recently went out and interviewed George Mason University students who were Firefox users, to get their impressions of the FF user experience. We hadn’t been received any video submissions, yet, so it seemed a good way to show off our capacity to host video. Check out a few examples here, here, and here. Looking through [...]
Categories: Uncategorized

Do You

Tue, 2008-06-17 14:57
We recently went out and interviewed George Mason University students who were Firefox users, to get their impressions of the FF user experience. We hadn’t been received any video submissions, yet, so it seemed a good way to show off our capacity to host video. Check out a few examples here, here, and here. Looking through [...]
Categories: Uncategorized

Mozilla IT

Mozilla Scheduled Maintenance - 4/8/2008, 7pm - 9pm PDT (0200 - 0400 UTC)

Tue, 2008-04-08 16:23

We will have a scheduled maintenance window tonight from 7pm to 9pm PDT. The following changes will take place:
* 7pm PDT (0200 UTC) - MXR software upgrade. We'll be updating MXR to add new functionality around Hg & SVN. 5 minutes of downtime is expected.
* 7pm PDT (0200 UTC) - people.mozilla.com OS upgrade. people.mozilla.com will be upgraded to RHEL 5. 2 hours of downtime is expected.

Please let me know if you have any reason why we should not proceed with the planned maintenance. As always, we aim to keep downtime to as little as possible, but unexpected complications can arise causing longer downtime periods than expected. All systems should be operational by the end of the maintenance window. Feel free to email infra at mozilla.com if you see issues past the planned downtime.

Thanks,
-Justin

Mozilla Scheduled Maintenance - 1/22/2008, 7pm - 8pm PST (0300 - 0400 1/23/2007 UTC)

Tue, 2008-01-22 15:13

Mozilla Scheduled Maintenance - 1/22/2008, 7pm - 8pm PST (0300 - 0400 1/23/2007 UTC)

We will have a scheduled maintenance window tonight from 7pm to 8pm PST. The following changes will take place:

* 7pm PST (0300 UTC) - addons.mozilla.org update. We'll be updating addons.mozilla.org to pick up recent API updates. No downtime is expected.

Please let me know if you have any reason why we should not proceed with the planned maintenance. As always, we aim to keep downtime to as little as possible, but unexpected complications can arise causing longer downtime periods than expected. All systems should be operational by the end of the maintenance window. Feel free to email infra at mozilla.com if you see issues past the planned downtime.

Mozilla Scheduled Maintenance - 12/18/2007, 7pm - 10pm PST (0300 - 0600 12/19/2007 UTC)

Tue, 2007-12-18 00:39

We will have a scheduled maintenance window tomorrow night from 7pm to 10pm PST. The following changes will take place:

* 7pm PST (0300 UTC) - *.mozilla.org, *.add-ons.mozilla.org cert renewal. We'll be installing a new certificate for *.mozilla.org and *.add-ons.mozilla.org. No downtime is expected.
* 7pm PST (0300 UTC) - Geo-load balancing configuration chance. We'll be changing the configuration of our load balancers to help reduce the number of RTT pings and more effectively route users to the correct data center. No downtime is expected.

Please let me know if you have any reason why we should not proceed with the planned maintenance. As always, we aim to keep downtime to as little as possible, but unexpected complications can arise causing longer downtime periods than expected. All systems should be operational by the end of the maintenance window. Feel free to email infra at mozilla.com if you see issues past the planned downtime.

Thanks,
-Justin

Mozilla Quality

The Mozilla Quality Blog has moved...

Fri, 2007-09-21 17:35

As you may have noticed, the Mozilla QA team has not written much here for quite a while! That's because we've been using QMO (http://quality.mozilla.org) for everything related to the Mozilla QA Community.

Please update your bookmarks and join us at QMO going forward. You will be redirected there shortly. Thanks!
- Jay & the Mozilla QA team

Categories: QMO

MozQA Execution team meeting - Thursday, June 14th @ 1pm PDT

Tue, 2007-06-12 12:28

Mozilla QA community,

The MozQA team will be having our QA Execution team meeting this thursday, at 1pm PDT. All are welcomed to join us.

**To accomodate those unable to dial in, we will also be taking notes in real-time via irc #qa.**


Call Info:
*********
Thursday, June 14th, 1:00pm PDT
1) California: 650-903-0800 or Toronto: 416-848-3114 then extension 91
or
Toll-free: 800-707-2533 then password 369
2) Dial conference number: 8601#
3) IRC: #qa on irc.mozilla.org

Agenda items:
*************
- FF2.0.0.5 - updates, assignments (juanb)
- TB 2.0.0.4 RC1 - shipping this week. http://wiki.mozilla.org/Thunderbird:2.0.0.4:Test_Plan (marcia)
- FF 3.0a6 - round table status, better tracking feature testing for alpha results? (tchung / marcia)
- Test days - why was the showing low? Did we need more advertising? (tomcat / marcia)
- Litmus Test Result tracking. Spreadsheet at:
http://spreadsheets.google.com/pub?key=pSSnvsWI9ercRTmK4QS6hSQ (ashughes)
- QA Test environments - updates, assignments? (marcia)
- QMO - status, updates, logo? (jay)
- Anything else?

Categories: Meetings

Firefox 3 MozQA Tracking document

Wed, 2007-05-30 16:02

For those interested, Mozilla QA now has a tracking document for testing Firefox 3 features. Here you can find a working document that tracks contacts, specs, bugs, and links to relevant docs.

Working feature document (in HTML format): http://tinyurl.com/yu8p7r

Firefox 3 Test Plan Wiki: http://wiki.mozilla.org/MozillaQualityAssurance:Home_Page:Firefox_3.0_TestPlan

Thanks,
Tony

Categories: Feature Testing

Mozilla SVG Update

Please test your SVG with Firefox 3 Beta 3

Mon, 2008-02-18 18:51

As some of you will have noticed, the third beta of Firefox 3 was released earlier this week.

Things are now getting pretty solid so now would be a great time for people to try it out and test it on their SVG. At this late state of development the emphasis is firmly on regressions -- please report any SVG that works fine in Firefox 2, but seems broken in some way in this latest Firefox 3 beta. The more eyes we have on this the better.

For anyone interested in testing, I'd suggest reading the release notes, at least from the Download section through the Known Issues section.

If you do find any SVG issues, the preferred method of reporting them is to file them in the SVG component of Mozilla's bugzilla.

If that seems too much trouble then please do mention them here rather than let them slip through the net. :-)

Mozilla SVG speed and cairo

Mon, 2007-11-12 19:41

When using Mozilla SVG, you might have encountered cases where we are quite slow. While there have been great strides in fixing these in both the mozilla codebase and cairo between Firefox 1.5/2.0 and Firefox 3.0, we still see performance problems appearing.

When we profile these slow cases using tool like sysprof, cairo (or what it cause the X server to do in the case of unix/X11) usually makes up the majority of the time spent. If you're interested in helping with Mozilla SVG but don't feel like diving into the thick of Mozilla's flavor of C++, contributing to cairo would a great choice. It's a smaller, simpler codebase in straight C, has a responsive developer list, and improvements you make will help a large world of software beyond Mozilla.

Specific areas of interest to Mozilla SVG are:

Hit detection.
Currently, cairo_in_fill() and cairo_in_stroke() are implemented by tessellating the path and tests against the generated trapezoids. There are a number of other point in polygon testing methods which would be more efficient for implementing cairo_in_fill(). cairo_in_stroke() might be implementable by doing distance to line/curve tests for the path segments, along with some extra tests for the segment joins. Both of these hit detection functions are important to SVG as we are continually checking for objects underneath the pointer for event delivery. We do perform an early reject test against a cached bounding rectangle, but for complex geometry the time spent in cairo can become significant.
Track down overuse of *CompositeGeneral.
Many profiles we've run of slow SVG testcases show lots of cputime disappearing into this method, both on the client (named pixman_compositeGeneral or pixman_compsite_rect_general* depending on the version of cairo you're looking at) and in the copy inside the X server (fbCompositeGeneral). While ideally we'd like to avoid cairo's software renderer completely (as in Michael Dominic's work), it would be good to track down why rendering operations often end up there. My guess is that the frequent use of clipping in SVG (for inner <svg>, <image>, <marker>) is the cause of this.
Server side gradients.
Cairo does not use RENDER's gradients with the xlib backend. Since gradients are a frequently used SVG feature, speeding them up seems like a good thing to do, and if we can keep work on the server side it could be a win (might need work the server side to get the performance and fix possible problems with a currently unused server feature).
Extents.
Right now cairo implements extent calculation for both fill and stroke by tessellating the path in question. This is straightforward and allows cairo to reuse code needed for rendering, but it uses more memory and cpu time that is necessary for the query operation. SVG calculates the coverage information of an object each time a presentation attribute or property changes, so this can add up for complex geometry. Mozilla's SVG code can be changed in the post Firefox 3 world to work better with Gecko to avoid unnecessary calculations for changes that don't change geometry, but for now we need to assume the worst case.
Path extents.
This is a specification conformance issue rather than performance - the SVG IDL allows the bounding box of geometry (without stroke or mask effects) to be queried, and cairo_fill_extents() is both wasteful performance/memory-wise (see previous item) and doesn't give the answer we want for degenerate geometry.
Filters.
Mozilla SVG implements a full SVG pixel filter set (two of which, feImage and feDisplacementMap, unfortunately will not make Firefox 3) by hand as cairo has no native filters. It would nice to have filters in cairo; for the additional functionality it would provide to other users, the ability to hardware accelerate through OpenGL and pixel shaders, and to get more developers looking at speeding up the code.

If any of this sparks an interest, join the cairo mailing list and let people know. You'll be in touch with others working on cairo and get feedback on your ideas.

Drowning in UI

Thu, 2007-08-16 11:13

If you download a recent build and happen to visit a https site with an RSS feed, you'll encounter a urlbar which looks something like this:

busy-urlbar.png

In there we have one drag source (favicon), five buttons, and the original purpose of the urlbar, the URL itself. Surely there are more creative ways of adding functionality than just tossing more features into what should be a simple portion of the browser UI?

At the very least, the spacing/style of the buttons should be normalized to give a more professional finish.

MozillaNews.org

MozillaNews is on Hiatus

Sun, 2005-10-09 14:58
Four years ago, when MozillaNews.org started the community suffered from a lack of sources for timely news. In that time, MozillaZine has become a powerhouse with news, forums, weblogs, the FeedHouse, and the wiki-based Knowledge Base. Also, we now have the RSS-aggregator Planet Mozilla for world-wide Mozilla related blogs, and even Gemal's Blogupdates. This past year, we here at MozillaNews have found out personal lives a lot busier, and we've had less time to devote to MozNews. We still love MozNews, but for now, we're putting it into hibernation mode. New comments are closed to prevent comment spam, but all the stories are still here, and we'll be back. Thanks for reading, folks.

Interview with Daniel Glazman, Head NVu Developer

Wed, 2005-06-29 04:42
Now that NVu 1.0 has been officially released, we asked Daniel Glazman to take some time to give us another interview to book-end our first interview with him, early in NVu's development. He was gracious as always, and fast! Click our Read More link for unavoidable laws, plans for the future of NVu and Daniel, and even news about his company's upcoming release.

Opera NOT Best Web Browser

Wed, 2005-06-08 01:18
Mozilla.org's very own Asa Dotzler caught everyone's second favorite browser, Opera, in another marketing mishap. He notblogged about Opera misunderstanding that coming in 88th in The 100 Best Products of 2005 as rated by PCWorld, behind the #1 product Firefox, the #12 product Maxthon (an IE-based browser), and without any other browser products in the list is not the equivalent of being "The Best Browser of 2005". They are one of the top 100 products of 2005, but is clearly the third best browser of the year. Screenshot of opera.com

mozillaZine.org

Mozilla Firefox 3.0.6 Released

Wed, 2009-02-04 15:32

The sixth minor update to Mozilla Firefox 3 has been released. Firefox 3.0.6 fixes security vulnerabilities, improves stability, improves the ability for scripted commands to work properly with plugins and resolves a handful of other small bugs. The security fixes are detailed in the Firefox 3.0.6 section of the Security Advisories for Firefox 3.0.

The Firefox 3.0.6 Release Notes have more details about the fixes in this minor upgrade. Existing Firefox 3 users are expected to get it via the software update feature built in to the browser or their own operating system's update facility.

As a reminder, Firefox 2.0.0.x is no longer supported and contains known security vulnerabilities. Users should upgrade to Firefox 3 by downloading it from the Firefox product page

Talkback

Mozilla Firefox 3 .1 Beta 2 Released

Mon, 2008-12-08 21:40

Mozilla Firefox 3.1 Beta 2 has been released. This milestone is a public preview release intended for developer testing and community feedback. New features include a private browsing mode, new functions that make it easy to remove specific portions of web history, a new javascript engine enabled by default, and several other developer features.

Firefox 3.1 Beta 2 can be downloaded from the Firefox beta page. The Firefox 3.1 Beta 2 Release Notes have more details, including information about what's new in Firefox 3.1 and what's been improved in this specific milestone. The Mozilla Developer News weblog's announcement of Firefox 3.1 Beta 2 includes more details of interest to developers.

Talkback

Security Updates for Mozilla Firefox and SeaMonkey Released

Thu, 2008-11-13 03:15

Mozilla Firefox 3.0.4, Mozilla Firefox 2.0.0.18 and SeaMonkey 1.1.13 have been released. These releases contain several critical security updates, which include patches for crashes and remote code execution. All users are encouraged to update to the latest versions.

For more details, please refer to Mozilla Firefox 3.0.4 Release Notes, Mozilla Firefox 2.0.0.18 Release Notes and SeaMonkey 1.1.13 Release Notes

Talkback

mykzilla

A XULRunner-Based Unit Test Harness

Wed, 2009-02-04 21:48
PrologueAfter finding a couple bugs in the Observers JS module recently, I looked around for a simple test harness to exercise it and other JS modules. Weave's (based on Mozilla's xpcshell harness) seemed promising, although it has to hack around various limitations of xpcshell.

Atul Varma had suggested some time ago that a XULRunner-based harness might make sense, so I decided to see if I could modify Weave's harness to run JS module tests using XULRunner instead of xpcshell.
Act 1That proved doable, although some details were tricky. Sometimes I wondered whether I wouldn't have been better off reusing MochiTest, although it's heavier weight. Other times I wondered why I didn't find this bug about XULRunner-based unit tests sooner, although it's not clear that reusing the attachment in that bug would have been faster.

In any case, I got the harness working with XULRunner and wrote an initial set of tests of the Observers module. To run them, pull the jsmodules repository, change to its test/unit/ subdirectory, and run make with the location of your XULRunner executable (or set the XULRUNNER_BIN environment variable to its location):

hg clone https://hg.mozdev.org/jsmodules
cd jsmodules/test/unit/
make xulrunner_bin=/usr/bin/xulrunner
Since Firefox 3.0 comes with XULRunner, you can use any Firefox 3.0 (or newer) executable instead (except on Linux distros that ship Firefox as a XULRunner app--you have to use the XULRunner executable on those), like /Applications/Firefox.app/Contents/MacOS/firefox-bin on Mac and /c/Program\ Files/Mozilla\ Firefox/firefox.exe on Windows.
EpilogueOnce I got the harness working for jsmodules, I backported it to Weave, where it mostly works, except that IWeaveCrypto.generateKeypair (which calls PK11_GenerateKeyPair) fails, apparently because of SEC_ERROR_TOKEN_NOT_LOGGED_IN.

I have no idea why, but if you do, comment here or in bug 476539, since that's the last blocker to Weave using this harness.

Observers JS Module Improvements

Wed, 2009-02-04 21:44
I've updated the Observers JS module with a number of changes. In particular, it's now possible to specify a this object when adding an observer that is a method, so instead of doing this:

let MyObserver = {
onFoo: function(subject) {...},
onBar: function(subject) {...},
onBaz: function(subject) {...},
QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver]),
observe: function(subject, topic, data) {
switch(topic) {
case "foo":
this.onFoo(subject);
break;
case "bar":
this.onBar(subject);
break;
case "baz":
this.onBaz(subject);
break;
}
}
}

Observers.add("foo", MyObserver);
Observers.add("bar", MyObserver);
Observers.add("baz", MyObserver);
You can do this:

let MyObserver = {
onFoo: function(subject) {...},
onBar: function(subject) {...},
onBaz: function(subject) {...}
}

Observers.add("foo", MyObserver.onFoo, MyObserver);
Observers.add("bar", MyObserver.onBar, MyObserver);
Observers.add("baz", MyObserver.onBaz, MyObserver);
Other changes include a couple of bug fixes and some backwards-incompatible API improvements. See the documentation for all the details (including steps to update from the previous version of the module).

Snowl Roadmap

Fri, 2009-01-09 21:55
Based on Snowl's potential futures, and in line with its principles, I've put together a roadmap for its next three releases (beyond the imminent 0.2 release).

Generally, I'm aiming for six week development cycles that are that ambiguous mixture of date-, feature set-, and quality-driven, so the goal is to hit the target date with high quality implementations of the specified set of features. But work may be pushed to later releases or the schedule extended as appropriate.

Each cycle has a theme on which I'll focus my efforts, and I'll publish regular preview releases, which will be numbered with consecutive "pre[n]" suffixes (f.e. 0.3pre1, 0.3pre2).

Most of the work on the roadmap is stuff I'm planning to do myself, although it also lists tasks that other developers have expressed an interest in tackling. And it's ambitious, so I probably won't get to all of these tasks (although I'll probably do other things that come up along the way).

If you want to do something with Snowl, whether or not it's on the roadmap, check out the source code and go for it! (And let us know what you're doing so others don't duplicate your work.)

Caveat: nothing is written in stone, it's the best laid plans of mice and men, take it with a grain of salt, etc. Among other things, this roadmap doesn't account for time I may spend working on other projects, nor am I any better than other hackers at estimating the time it takes to do work I haven't already done. And the farther out the roadmap goes, the fuzzier its plans.

Also, your suggestions are welcome. Are you missing something from the roadmap? Is there something on it that shouldn't be there? Let us know!

The latest version lives on the Mozilla wiki at https://wiki.mozilla.org/Labs/Snowl/Roadmap. Currently, it looks like this:

Priorities
As with Firefox development (f.e. with Firefox 3.1 features), Snowl tasks are prioritized. For Snowl, the fuzzy prioritization scheme is:
  • P1: really want
  • P2: want
  • P3: nice to have

ReleasesThese are the target release dates for the imminent 0.2 release and the three releases after that:
  • 0.2: Monday, January 12
  • 0.3: Monday, March 9
  • 0.4: Monday, April 20
  • 0.5: Tuesday, May 26
(Note: The 0.3 cycle is eight weeks long to accommodate twoish weeks of vacation I have planned in January and February.)

0.3: simpler and smarter
Feeds
  • P1 expose feeds from frecent (frequent + recent) websites [atul]
  • P1 pick a feed automatically from among feeds with equivalent content
  • P1 let users subscribe to feeds by entering the location of a website
  • P2 automatically subscribe to feeds in live bookmarks [atul]
  • P2 automatically discard old feed items and tweets
  • P2 automatically determine how often to refresh feeds
  • P2 let users specify how long to retain feed items and tweets

Twitter
  • P1 support replying to messages
  • P2 support direct messages (private messages to specific users)
  • P2 automatically subscribe to Twitter account in browser history
  • P3 shorten long URLs when composing messages

Architecture/Extensibility
  • P1 simplify composition of messaging service implementations from Source and Target prototypes

Misc
  • P1 split collections view into resizable accounts/people sections [alta88]
  • P1 support email protocols [alta88]
  • P2 integrate Snowl into Thunderbird
  • P2 organize river view into editions
  • P3 use JS templates to build stream, river views

0.4: people and extensibility
People
  • P1 add a person-centric view
  • P1 automatically associate identities that represent the same person
  • P1 let users associate identities that represent the same person

Extensibility
  • P1 optimize database schema for sparse/custom attributes (f.e. username for Twitter, website URI for feeds)
  • P2 move OPML import/export processing into messaging service connectors so they can provide custom attributes (f.e. username for Twitter)
  • P2 compose subscription dialog from messaging service connector-specific overlays
  • P3 factor out common functionality from Feed and Twitter implementations into Source and Target prototypes

Conversations
  • P2 derive conversations from message metadata
  • P2 display messages in the contexts of the conversations to which they belong

Misc
  • P2 add a wordle-like view of messages

0.5: broader horizons
Feed Conversations
  • P1 retrieve comments on feed items automatically
  • P2 enable users to post comments on feed items

People
  • P1 consume contact info from Portable Contacts service providers
  • P2 provide contact info to Portable Contacts consumers

Misc
  • P1 support several additional messaging services/social networks
  • P2 support categorization of accounts and messages via tagging
  • P2 synchronize subscriptions to a cloud datastore
  • P3 synchronize all message data to a cloud datastore

Neil's Place

Focus…

Tue, 2008-12-30 15:27
I mentioned recently that I was working on some significant focus-related changes. I’ve just posted the patch into bug 178324. Test builds are available here. Some tests fail. Help with testing is very appreciated. The basic idea is that focus can only be in one place at one time. Thus, the currently focused element is only [...]
Categories: Uncategorized

Ode to Focus Code

Sat, 2008-12-20 23:07
O, focus code, focus code, How much do I love tree? Why store focus in one place, When you can store it in three? O, focus code, focus code, You seem twisted and bent, You know that no-one would mind, A lost or extra event. O, focus code, focus code, What fun games you do play, When you’ve got A calling B, Who says B shouldn’t [...]
Categories: Uncategorized

Possibilities for XUL Transitions and Animation

Thu, 2008-09-25 01:44
Aaron’s recent comments about problems a particular user was having with the sliding effect that the Firefox notification bar uses made me think again about how incorporating a easy means of doing transition and animtion-type effects in XUL and in the browser UI is needed. Naturally, if there’s an accessibility problem, a global preference to [...]
Categories: Mozilla

nundroo

Thesis Proposal

Wed, 2005-09-14 16:58
I will start my last year at Interaction Design Institute Ivrea. A year that is dedicated to a master thesis, including an end of year exhibition. So right now I am mostly doing research and defining what will be the subject I will work with for the next 9 months or so. Not an easy task to get it right. What would you do if given the opportunity?

I Hate iChat

Wed, 2005-08-24 11:46
Yes that small application shipped with every Apple computer and Mac OS X. But this is not only about iChat, I am talking about instant messaging, social networks and why technology is destroying physical communication rather than supporting existing social connections. If you want your life to be fake, keep chatting away!

IDII Summer Camp 2005

Sun, 2005-03-27 11:32
Learn about creativity, innovation and technology. Summer Camp is an educational initiative aimed at the discovery of interaction design. Ten days of lessons, creative workshops, prototyping, videos, photography, exhibitions and group work, having fun with design. The workshop will end with a final exhibition of all the projects and the delivery of a diploma. Candidates are 18 years and older students. Each Summer Camp can hold 24 participants. What are you waiting for?

Ordered List by Steve Smith - Home

Harmony Update

Tue, 2009-03-03 00:25

Things have been silent on this here blog because Steve and I have been making ridiculously awesome progress on Harmony. We are actually less than a week away from our first deploy and only a few weeks away from running OrderedList.com in Harmony.

Categories: harmony

Is The Web Recession Proof?

Mon, 2009-03-02 23:42

Economy, economy, economy. I swear it is all you hear about these days. Turn on the news. Go to a cafe. Doesn’t matter where you are, someone mentions how bad the economy is. Because Steve and I left extremely stable and secure jobs, we often get asked, “Are you feeling the hurt?”

Categories: business

Another Blawg Enters The Sphere

Mon, 2009-01-12 11:38

I have spent a lot of time over the past few months growing RailsTips, a Ruby and Rails programming blog. All the tweaks I have been doing over there, have left me wanting an outlet to share.

Categories: blogging, launch

pavlov.net

Fennec Alpha 2

Tue, 2008-12-23 01:53
We’re happy to announce that our second alpha release of Fennec has come together.  While we focused much of the previous alpha on getting the user experience how we wanted, we’ve spent much of the time since focused on improving performance.  We’ve made major strides improving startup performance, panning and zooming performance, and responsiveness while [...]
Categories: Mozilla

Ten Years

Thu, 2008-10-23 09:26
It was 10 years ago today that I first got involved with the Mozilla project. As I once said: “I did, like, some random, like, little basic things.“ In the beginning… It all started sometime in 1995 when I started running Linux.  Sometime over the next couple of years I decided to write a GUI email client.  Ironically, [...]
Categories: Mozilla

Fennec Alpha 1

Fri, 2008-10-17 15:43
I’m excited to say that yesterday we pushed out our first alpha release of Fennec.  I suggest checking our Madhava’s great video showing Fennec in action.  The team has been working very hard for a while and it is great to get our first big milestone in front of people.  We’ve still got a lot [...]
Categories: Mozilla

Penny-Arcade

News: Tweet Tweet

Fri, 2009-03-13 13:03
Gabe : I've started using Ustream again to broadcast myself drawing the strip. It took me a while to gather the right combination of software for the mac to get the video and audio streaming correctly. It's working great now thanks to Camtwist, Audio Hijack Pro and Soundflowerbed. If you're interested in watching one of these live shows the best thing to do is follow me on Twitter. I should warn you that I don't actually Twitter all that much. You won't see updates when I make a sandwich or stub my toe. I do send out a Tweet before every live show though. ...

News: The Nature of Man

Fri, 2009-03-13 03:00
Tycho : Every now and then, in Blood on the Sand, 50 Cent or another member of "G-Unit" will make an offhand comment about the architecture.  I doubt very seriously that "strong characterization" was in the product's charter, but these occasional flashes of context made me wonder what kinds of exploration the man could actually sustain. Man, I would love a crack at that.   Here is some reading that may enrich you over the weekend: - The name David Sirlin might not be immediately familiar to you, but you almost certainly know his work: he toiled to rebalance both Super Puzzle ...

Comic: The Nature Of Man

Fri, 2009-03-13 03:00
New Comic : The Nature Of Man

persistent.info

HTML Color OneBox

Tue, 2009-03-03 21:07

Work is the sort of place that cares about specific colors, so HTML color hex triplets come up in conversation quite often. Neil suggested that this should be a OneBox in search results. It occurred to me that this could done via the Subscribed Link feature that we offer for search results. It turned out that subscribed links can use gadgets, which meant that an inline preview of colors was even possible. Regular expression matching also meant that I didn't have to list out every color by hand. This page has more information on the OneBox, or you can subscribe directly.

Color OneBox preview

Once you have installed this, you can search for things like #fafafa or #ccc and get an immediate preview (in fact, the # can be omitted).

Porting Twitter Digest to Google App Engine

Sun, 2008-05-11 20:26

I've been meaning to play around with Google App Engine for a while, and as a quick project, I decided to port Twitter Digest to it (not as exciting as Kushal's Millidunst Calculator). This looked to be pretty straightforward: the original version was already in Python, and wasn't very complicated (just a single CGI script). It did indeed end up pretty easy; the whole process took a couple of hours.

The first step was to port the script from CGI-style invocation to the App Engine webapp framework. Then I looked into what it would take to get Python Twitter (the library I used for fetching data from Twitter) running. Switching it from urllib2 to urlfetch was pretty painless (though I don't use the posting parts of the API, so I didn't check if those work too). The other part of the library that I was relying on was its caching mechanism (since the digests are daily, there's no point in querying Twitter more often). DeWitt (the library's author) had thoughtfully put the caching functionality into a separate class, so it was easy to replace it with another one that implemented the same interface but was backed by App Engine's datastore.

The result (complete with App Gallery entry) is not that exciting, in the sense that it functions identically to the original. The only issue that I've run into so far is that when there are several cache misses, the URL fetches can take long enough that the request hits App Engine's deadline. However, since the successful fetches are cached, repeating the request will eventually succeed (so if consuming the digest via a feed, this shouldn't be a big deal). Ideally the urlfetch functionality would also support asynchronous fetches, since it would be easy to adapt the code to fetch all user timelines in parallel.

Update on 11/23/2008: Since I've gotten some requests for the modifications to twitter-digest that I made to get it to run on App Engine, here's a patch.

Porting Twitter Digest to Google App Engine

Sun, 2008-05-11 20:26

I've been meaning to play around with Google App Engine for a while, and as a quick project, I decided to port Twitter Digest to it (not as exciting as Kushal's Millidunst Calculator). This looked to be pretty straightforward: the original version was already in Python, and wasn't very complicated (just a single CGI script). It did indeed end up pretty easy; the whole process took a couple of hours.

The first step was to port the script from CGI-style invocation to the App Engine webapp framework. Then I looked into what it would take to get Python Twitter (the library I used for fetching data from Twitter) running. Switching it from urllib2 to urlfetch was pretty painless (though I don't use the posting parts of the API, so I didn't check if those work too). The other part of the library that I was relying on was its caching mechanism (since the digests are daily, there's no point in querying Twitter more often). DeWitt (the library's author) had thoughtfully put the caching functionality into a separate class, so it was easy to replace it with another one that implemented the same interface but was backed by App Engine's datastore.

The result (complete with App Gallery entry) is not that exciting, in the sense that it functions identically to the original. The only issue that I've run into so far is that when there are several cache misses, the URL fetches can take long enough that the request hits App Engine's deadline. However, since the successful fetches are cached, repeating the request will eventually succeed (so if consuming the digest via a feed, this shouldn't be a big deal). Ideally the urlfetch functionality would also support asynchronous fetches, since it would be easy to adapt the code to fetch all user timelines in parallel.

phil ringnalda

pink and repink

Sat, 2007-02-24 01:57
Since Pinkerton got kicked off the planet(.mozilla.org), somebody's got to keep people up to date with him, don't they?

Where&#8217;s Mama Bear&#8217;s update notification?

Sun, 2006-02-05 00:24
Baby Bear's update notification, a red Christmas tree by the throbber, was too little to be seen. Papa Bear's update notification, a dialog that interrupts you until you let it interrupt you by restarting your browser, is annoying. What does Mama Bear's just right notification look like?

Don&#8217;t (server)push me

Thu, 2005-12-08 02:57
Turn off Bugzilla's annoying "Please stand by," "here's some of your results," "here's the whole list" use of multipart/x-mixed-replace by just adding a query param.

Pixelsurgeon Interviews

PKB

three, is a magic number

Fri, 2009-03-06 01:48
Summer 2009 is just around the corner, and with it the third year of Mozilla’s intern program. This year, the marketing and PR team has three US-based internships available: Community Marketing Internship I - Spread Firefox and Creative Collective projects Community Marketing Internship II - Events and Campus Reps Public Relations Internship If you’re working towards an undergraduate degree [...]
Categories: Mozilla

three years

Sat, 2008-10-18 20:49
Just realized tonight at dinner that today is my three year anniversary with Mozilla. It’s been a life-changing experience, for the good, to be a part of this band apart. Still so much to do, and I’m happy to be right where I am now. Thanks Mozilla!       
Categories: Mozilla

three years

Sat, 2008-10-18 20:49
Just realized tonight at dinner that today is my three year anniversary with Mozilla. It’s been a life-changing experience, for the good, to be a part of this band apart. Still so much to do, and I’m happy to be right where I am now. Thanks Mozilla!
Categories: Mozilla

Planet Mozilla: Mike Beltzner

Flagging down the future

Fri, 2009-02-06 02:39

I don’t know if my brain can handle two awesome Mozilla developer tool improvements in one week. First, we had tinderbox+pushlog given to us by Markus. Now, Reed has given us a way to simplify blocking flags.


old and busted

Blocking flags are used to indicate if a resolution for the bug in question is required in order to release some specific milestone (ex: Firefox 3.1 Beta 3, Firefox 3.0.7, Fennec 1.0 Alpha 3, etc.) Anyone can “nominate” a bug for blocking status by setting the appropriate flag to “?”, at which point a driver will make a decision and either agree that the bug blocks by marking it “+” or deny the bug blocking status by marking it “-“.

The problem with this approach is that when you have multiple milestones for a product (alphas, betas, final) you need to combine the binary blocking status (yes/no) with some other indicator of which specific milestone it blocks. For a while we tried using the target milestone field, but developers were using that for other reasons, and there wasn’t the same degree of control. We currently use priorities (P1 = blocks next beta, P2 = blocks final release) but there are limitations to that mechanism as well.


new hotness

The mobile team will be trying out a new multi-state flag (well, it’s actually a custom field that’s hacked together to behave like a flag) which will allow them to respond to a blocking request (“?”) by either denying blocking (“-“) or by indicating the milestone which the bug blocks. This should make it much easier to construct specific queries for blocker bugs, as well as clarify when the fix is required in terms of upcomign milestones.

We’ll see how things go, and based on learnings, will look to make similar changes to flags used to indicate blocking on Gecko, Firefox and branch releases.

Categories: Mozilla

A small change to tab ordering coming soon to trunk

Sun, 2009-01-11 16:13

A small change to the way in which new tabs are opened in Firefox is coming, in hopes of better meeting the needs and expectations of users. The change will be:

  • tabs that are opened from links will open to the immediate right of the current tab
  • new tabs created by the New Tab button or keyboard shortcut will open at the end of the tab strip
  • if multiple tabs are opened (in the backgound) from links, they will open sequentially to the right of each other; as soon as focus changes, this sequential opening behaviour will stop, and tabs will go back to opening immediately to the right or at the end of the tab strip as per the above

The goal is to have tabs that are related - in terms of the user’s interaction - grouped together on the tab strip automatically. This supports a common case where a user is interacting with a webpage and opens one or many web pages from links; those tabs will now be adjacent to the initial tab. When the user explicitly asks for a new tab, it’s impossible to tell if it’s for a task that’s related to the current activity or for a new task; as such, we place it at the end of the tabstrip.

The change should be landing on trunk shortly, at which point we’ll have to make a decision about whether or not to take it in Firefox 3.1.

Some background, for those who are interested…

When we released Firefox 2, we changed the default behaviour of the browser so that links which would normally open a new window would, instead, open a new tab. Many proposals were presented about how to handle the opening and closing behaviour, with complex ideas around preserving the parenting relationships between tabs (so that when tab A opens tab B, closing tab B always returns to tab A no matter what’s happened in between). Many debates ensued, with hard-to-follow explanations that looked like:

A
A b
A b c
a B c
A b
a D b

We quickly realized that if these things were hard to follow when explaining them to each other, they would be impossible for a user to intuit. At that time, we chose to always follow a guideline which stated: “do not to try to be more clever than the user.” Put another way, if we can’t be confident that the heuristics governing automatic behaviour matches the user’s intent, we shouldn’t try to automate the behaviour.

This is what led to our current tab-close behaviour, which takes the user back to the opening tab if and only if they haven’t changed tabs or re-ordered tabs between opening and closing. The heuristic being used for tab opening position - in addition to achieving behavioural parity with Internet Explorer, Chrome and Opera - follows the guideline as well.

Categories: Mozilla

Meme too

Sat, 2009-01-10 02:49

Apparently I have been tagged and must, by The Laws of The Internet, participate in the latest meme to sweep Planet Mozilla. Since my blog seems to be turning into 100% meme by volume, it works out well.

The Rules for This Particular Meme
  • Link to your original tagger(s) and list these rules in your post. (see above)
  • Share seven facts about yourself in the post. (see below)
  • Tag seven people at the end of your post by leaving their names and the links to their blogs. (see below)
  • Let them know they’ve been tagged. (you’ll just have to trust me)
The Content for This Particular Meme

Without further ado, here are seven things about me. Please note that I fully acknowledge that you may already know, not know, not want to know, or have no interest in knowing these things. It is not my wish to force them upon you - I do merely what the Internet tells me to do. Though, there will be a test, so pay attention.

  1. I hold a Bachelor of Education degree, did half a year of practice teaching in a Kingston-area high-school, and but for an overly militant union would have ended up teaching children about math, computer science and media.
  2. I have been arrested (see Sec. 88), but never convicted.
  3. I have jumped out of a perfectly good airplane more than once.
  4. I have been without toenails on either of my big toes for more than half of my life, having lost them in a series of botched ingrown toenail repair procedures at age 15. Yes, it hurt (a lot) to lose them. No, I don’t wear flip-flops, or really any form of open-toed sandal.
  5. My last name can be used as a verb.
  6. In university I was an early riser, usually out and about by 6:45am, even though I routinely stayed up until 1 or 2 in the morning. Nowadays I keep the late night hours, but don’t get out of the house until closer to 9am.
  7. I am a credited voice-over actor.
The Seven Other People Who Must Now Comply, According to Internet Law

As per the instructions that I dare not disobey, these people will also be notified by email, Facebook message, direct Tweet, carrier pigeon, singing telegram, and registered mail:

  1. Chelsea, who is a closet meme-lover anyway.
  2. John, who is perhaps the best storyteller I know.
  3. Dave, who never hesitates to share facts about himself … in a good way.
  4. Johnathan, who I can’t believe has not yet been tagged, as he sits very close to the roots of the Internet Crap Backbone.
  5. Rob Campbell, who I hope will tell us seven things about his ability to grow 18th century facial hair.
  6. David Tenser, who I know will always support the Internet in any way it demands.
  7. Dietrich Ayala, as it seems like a good as excuse as any for him to return to the habit of writing blog posts.

There, Internet. I hope you’re satisfied.

Categories: Mozilla

preed&apos;s blah-blah-blahg

Back the change out... and nobody gets hurt

Thu, 2009-02-19 02:33

Remember what Preed The Build Engineer says:
"Bad Checkins Hold
Everyone Hostage!" This Valentine's Day1, the boyfriend and I bucked convention and took the opportunity to do something we had both randomly expressed interest in some weeks earlier, but neither of us had done before: learn how to shoot a gun.

We found a shooting range2, which offered a package deal that included a twenty minute how-to course4 followed by an hour on the range, to practice shooting a .22 caliber pistol at various things5.

(Interesting sociological note 1: a shooting range is a fascinating place to people watch while you're waiting for your class to start.)

(Interesting sociological note 2: apparently, shooting with your significant other on Valentine's Day is more common than one might think: we were joined by no less than six couples making use of an assortment of firearms.)

This particular range happened to be near KSFO, so afterward, we spent a few minutes watching planes land on the southeast plan, followed by a video game-related Fry's run and (altogether too much, but oh-so-tasty) thai food.

All in all, it was a pretty awesome way to spend a day with my Valentine.

*** When I got back to the office this week, I brought one of the targets in to show off my mad, GTA-honed6 aiming skillz.7

After joking around for a bit, it became clear that this particular target could be used as a visual aid in imparting a much more important lesson.

Because as we all should know: the sooner a sad, frowny build is fixed, the sooner we can douer it.8,10

_____________________
1 Or, depending on status, location, local restriction, and phase of moon, "Singles Awareness Day"
2 Ironically3 in the South Bay; south city to be exact
3 Or not?
4 Apparently, actually discharging a firearm pales in comparison to the moral, circumstantial, and legal issues often associated with doing so?
5 Ok, just one thing.
6 Interesting sociological (or maybe merely generational) note 3: of the five people in the class, more people had played GTA than had shot a gun
7 Why yes, that is a bullet hole in the center of his forehead; there's also one in his left eye and three centered squarely on the chest!
8 Where "douer it" is defined as "release the product"9
9 A complex, three step process that involves four steps
10 Is this a sufficient number of footnotes, Mr. Dolske?

Categories: blahblahblah

Sieben Dinge

Fri, 2009-01-16 07:27

Ack! I got tagged!

Planet has been awash in this meme the last few days, so I'll try to make mine short. Or interesting. Well... one of those, at least.

In roughly chronological order:

  1. I was born without a hip socket, a congenital birth defect that wasn't diagnosed until I was 17 months old and everyone started wondering why I hadn't started walking.

    They fixed it by breaking the hip bone—no high-impact plastics or metal here!— and letting the socket create itself as it healed. The body cast I was in for four months was a "minor" side-effect. Good times!

    I do have a scar; my mother was relieved that it started out about an inch long, but it grew along with my leg.

    No, you can't see it.


  2. As a junior and senior in high school, I was a reporter and columnist for the local newspaper.

    I wrote about a number of things which made me a class and high school administration favorite, including articles on unconstitutional searches, district-wide attendance rules which were not in accordance with state education law, and asking my girlfiend-of-the-time to prom.

    (That last one got the most reader feedback of all of my columns.)

  3. I spent the last three years of college on disciplinary probation.

    To make a long story short: When asked for it, I gave some not-so-glowing feedback on a new set of "responsible use" policies the campus IT department was drafting. Unrelated to this, I ran a port scan (woo nmap!) from my dorm to locate a company server I was working on at the time (I was scanning for an open ssh port).

    The IT department used this event to put my tits in the proverbial ringer (in the parlance of our times). And unrelated to that, the experience uncovered a lot of illegal behavior by the University's Judicial Affairs.

    I was eventually "convicted" in a campus kangaroo court where the "judge" conveniently turned out to be the same professor who had written the exact policy I had been charged with breaking.

    There's an [embarrassingly] dated website chronicling the whole event, including MP3s from the all judicial hearings (holy crap did they hate when I posted those!) I was also on the news a couple of times.

    I still get emails every so often from current students who find the website and want to tell me about how they're being railroaded by Judicial Affairs.

  4. The same year I was "convicted," I wrote a web application that over 40% of the 15,000+ students at my university ended up using to get slots in perpetually impacted courses.

    The system was called CRASH: Cal-Poly Robot-Assisted Scheduling Helper.

    My bachelor's thesis covered the history of the application. The university ran the service using my code for a couple quarters, the [awful, but functional] code was then open sourced, and about a year after I left, the University implemented the features directly within their registration system, due to outcry from students and professors.

  5. Like a few others apparently, I am a licensed pilot: airplane single engine land (ASEL) type rating with a high performance endorsement (but sadly, no instrument rating... yet).

    A lot of people know that; what you may not know is that I got interested in it because I originally wanted to be an air-traffic controller. I didn't go that route because I became interested in it during my last year in college and couldn't justify wasting a perfectly fine computer science degree to go push tin.

    I also couldn't justify the federal government dictating where I'd be living based upon its opaque staffing needs.

  6. I got started in Mozilla (and coincidentally my career path) in a pretty random way: I was 17 and perusing photos posted from the first Mozilla party and I kept seeing a person in these photos that looked interesting.

    I randomly started conversing with them via email. As we chatted more about what I was doing—sysadmin at an ISP and a contractor—they offered me an internship at Netscape over that summer. It was on the client product engineering build team.

    I learned a ton of lessons while I was there about life, love, and the pursuit of a repeatable, sustainable build and release engineering process. I know a lot of software engineers find it perverse, but I feel in love.

    Searching Bonsai with a regular expression of "preed" is imminently embarrassing.

  7. I have a guilty little pleasure that when people hear it, they tend to think "Wow... this guy is super nerdy and quite possibly somewhat insane..."

    Mixing—ha ha—two skills in life I wish I had, but don't, I blend electronica music air traffic control to make... interesting music.

    I enjoy it for a bunch of reasons, not the least of which that as a pilot, it's good practice to listen to (and decode) that stuff. Electronica tends to ebb and flow, so it lends itself well to what you find in air traffic control transmissions as well.

    I also find it great music when I need to multitask and do a lot of [typically build-related] work simultaneously: I find it easy to work to, I find myself working faster, and it puts me in the right mindset to complete tasks succinctly and correctly, lest I smack packets carrying precious bits into each other.

    You may think it's weird, but I have a few fans on the Internet who've discovered it and pester me for more mixes; one of them is a Mozilla Corp. QA'er.

    If you're curious, listening to the first ten minutes of this will give you a pretty good idea.


Since this has been bouncing around PMO for awhile now, I'm going to point the finger at other people, many of whom work on Mozilla-related apps and technology, but some of whom who don't and are just awesome people:

  1. John Gaunt: He used to have my job, but he got promoted to Bugzilla Janitor and Programmer Lie Detector
  2. Ali Rayl: I can't seem to find her blog, so maybe she'll tweet seven things we don't know; but she spends her days making sure the Bird doesn't suck and letting us know when it does...
  3. Nick Kreeger - Just call him "DJ Fail"
  4. Rob Lord: Chief Birder; beyond his eclectic decorating tastes (which I'm more-than-slightly jealous of), I know I know 7 things about him, but I also know there are way more than 7 things I don't know about him.
  5. Adam Fritzler: Adam does a lot of things (great photography among them) but will never be able to escape what he did first (if you're chatting on AIM using anything but AOL's client right now, you owe him).
  6. James Castañeda: James taught me that urban planning is a lot like programming, except it uses heavier things (like steel and concrete) and "refactoring" is slightly more "involved."
  7. Mark Chen: Mark (via the FDA) [among other things] makes sure your spinach isn't covered in poo. (He's also a first-class recycler!)
Categories: Community

&quot;Speedbird eight-six-zero-heavy, runway one-right: Cleared. For. Takeoff.&quot;

Tue, 2008-12-02 13:12

At 9:15 PST this morning, Songbird 1.0 executed a beautiful takeoff.

Being a die-hard Linux user, I didn't think anything would pull me away from my PDP8-era ncurses-based music player.

But the difficult (often behind-the-scenes) work done since in the 0.71 timeframe and leading up to the 1.0 release transformed the Bird into an imminently capable player, even for my admittedly somewhat-unorthodox uses2.

To boot, I've actually "lived the marketing materials" and found a bunch of music that I can't get out of my head3 that I otherwise would have missed. Coming from that ncurses-based player, it's quite a paradigm shift, and with extensions like mashTape, I don't think I'll be able to go back (even if they did stuff links into that old ncurses-based player ;-)

*** This is the first time in my career that I've shipped a "one-dot-oh" product.

I was expecting it to be a bit more hectic than it turned out to be, but... I'd like to think "a boring, predictable release" translates to "I'm doing my job well." Then again, I'm also working with a great team, who make large parts of my job pretty easy (and enjoyable, to boot).

I'm really pleased by the way my first 1-dot-oh turned out.

And while there's lots of work to do, lots of features to add, and, sure, probably a couple of bugs to fix, Songbird is a pretty awesome application, one all of us should be proud to have among Mozilla's ranks, showcasing the power of the platform's technology.

You can grab your copy at getsongbird.com.

The real question now: is 10 am too early for scotch?6

_________________
1 Seems so long ago...
2 Lots of FLAC content and a lot of streaming...
3 ... some of it somewhat... embarrassing to actually admit I like...4
4 <cough>Rihanna's Don't Stop the Music</cough>5
5 If you had been reading this blog post in Songbird, you could have clicked on that link and gotten that song stuck in your head too!
6 Alright, alright, maybe I'll wait until lunch...

Categories: Releases

pretty widgets