Planet OSL
Firefox 3.5 Released
FLOSS Weekly Interview
Last week I was interviewed on FLOSS Weekly by Leo Laporte, Randal Schwartz. and Jono Bacon. It was a lot of fun to be on a podcast which I've listened to for some time now. The interview focused on the OSU Open Source Lab and our role in hosting open source projects, development work, and our annual GOSCON conference.
You can download the episode (#74) via iTunes, or listen/download directly from the FLOSS Weekly website: http://twit.tv/floss74
shadow boxing with -moz-box-shadow
This is another cross-post of an article I wrote for the hacks.mozilla.org blog. It shows off some of the fun stuff web developers can do with the -moz-box-shadow feature that will be released as part of Firefox 3.5.
Another fun CSS3 feature that’s been implemented in Firefox 3.5 is box shadows. This feature allows the casting of a drop “shadow” from the frame of almost any arbitrary element.
As the CSS3 box shadow property is still a work in progress, however, it’s been implemented as -moz-box-shadow in Firefox. This is how Mozilla tests experimental properties in CSS, with property names prefaced with “-moz-”. When the specification is finalized, the property will be named “box-shadow.”
How it works
Applying a box shadow to an element is straightforward. The CSS3 standard allows as its value:
none | <shadow> [ <shadow> ]*where <shadow> is:
<shadow> = inset? && [ <length>{2,4} && <color>? ]The first two lengths are the horizontal and vertical offset of the shadow, respectively. The third length is the blur radius (compare that to the blur radius in in the text-shadow property). Finally the fourth length is the spread radius, allowing the shadow to grow (positive values) or shrink (negative values) compared to the size of the parent element.
The inset keyword is pretty well explained by the standard itself:
if present, [it] changes the drop shadow from an outer shadow (one that shadows the box onto the canvas, as if it were lifted above the canvas) to an inner shadow (one that shadows the canvas onto the box, as if the box were cut out of the canvas and shifted behind it).
But talk is cheap, let’s look at some examples.
To draw a simple shadow, just define an offset and a color, and off you go:
-moz-box-shadow: 1px 1px 10px #00f;

(Each of the examples in this article are live examples first, followed by a screen shot from Firefox 3.5 on OSX).
Similarly, you can draw an in-set shadow with the aforementioned keyword.
-moz-box-shadow: inset 1px 1px 10px #888;

With the help of a spread radius, you can define smaller (or bigger) shadows than the element it is applied to:
-moz-box-shadow: 0px 20px 10px -10px #888;

If you want, you can also define multiple shadows by defining several shadows, separated by commas (courtesy of Markus Stange):
-moz-box-shadow: 0 0 20px black, 20px 15px 30px yellow, -20px 15px 30px lime, -20px -15px 30px blue, 20px -15px 30px red;

The different shadows blend into each other very smoothly, and as you may have noticed, the order in which they are defined does make a difference. As box-shadow is a CSS3 feature, Firefox 3.5 adheres to the CSS3 painting order. That means, the first specified shadow shows up on top, so keep that in mind when designing multiple shadows.
As a final example, I want to show you the combination of -moz-box-shadow with an RGBA color definition. RGBA is the same as RGB, but it adds an alpha-channel transparency to change the opacity of the color. Let’s make a black, un-blurred box shadow with an opacity of 50 percent, on a yellow background:
-moz-box-shadow: inset 5px 5px 0 rgba(0, 0, 0, .5);

As you can see, the yellow background is visible though the half-transparent shadow without further ado. This feature becomes particularly interesting when background images are involved, as you’ll be able to see them shining through the box shadow.
Cross-Browser Compatibility
As a newer, work-in-progress CSS3 property, box-shadow has not yet been widely adopted by browser makers.
- Firefox 3.5 supports the feature as -moz-box-shadow, as well as multiple shadows, the inset keyword and a spread radius.
- Safari/WebKit has gone down a similar route as Firefox by implementing the feature as -webkit-box-shadow. Multiple shadows are supported since version 4.0, while neither inset shadows nor the spread radius feature are supported yet in WebKit.
- Finally, Opera and Microsoft Internet Explorer have not yet implemented the box shadow property, though in MSIE you may want to check out their proprietary DropShadow filter.
To achieve the biggest possible coverage, it is advisable to define all three, the -moz, -webkit, and standard CSS3 syntax in parallel. Applicable browsers will then pick and adhere to the ones they support. For example:
-moz-box-shadow: 1px 1px 10px #00f; -webkit-box-shadow: 1px 1px 10px #00f; box-shadow: 1px 1px 10px #00f;The good news is that the box-shadow property degrades gracefully on unsupported browsers. For example, all the examples above will look like plain and boring boxes with no shadow in MSIE.
Conclusions
The CSS3 box-shadow property is not yet as widely available in browsers (and therefore, to users) as, for example, the text-shadow property, but with the limited box shadow support of WebKit as well as the full support provided by Firefox 3.5 (as far as the current status of the feature draft is concerned), more and more users will be able to see some level of CSS box shadows.
As a web developer, you can therefore use the feature, confident that you are giving users with modern browsers an improved experience while not turning away users with older browsers.
Further resources
Documentation
- https://developer.mozilla.org/en/CSS/-moz-box-shadow
- http://dev.w3.org/csswg/css3-background/#the-box-shadow
Examples
stylish text with the CSS text-shadow property
This is a cross-post of an article I wrote for the hacks.mozilla.org blog. It shows off some of the fun stuff web developers can do with the text-shadow feature that will be released as part of Firefox 3.5.
The text-shadow CSS property does what the name implies: It lets you create a slightly blurred, slightly moved copy of text, which ends up looking somewhat like a real-world shadow.
The text-shadow property was first introduced in CSS2, but as it was improperly defined at the time, its support was dropped again in CSS2.1. The feature was re-introduced with CSS3 and has now made it into Firefox 3.5.
How it Works
According to the CSS3 specification, the text-shadow property can have the following values:
none | [<shadow>, ] * <shadow>,<shadow> is defined as:
[ <color>? <length> <length> <length>? | <length> <length> <length>? <color>? ],where the first two lengths represent the horizontal and vertical offset and the third an optional blur radius. The best way to describe it is with examples.
We can make a simple shadow like this, for example:
text-shadow: 2px 2px 3px #000; A simple shadow
(All of the examples are a live example first, then a picture of the working feature — so you can compare your browser’s behavior with the one of Firefox 3.5 on OSX)
If you are a fan of hard edges, you can just refrain from using a blur radius altogether:
text-shadow: 2px 2px 0 #888; I don’t like blurs
Glowing text, and multiple shadows
But due to the flexibility of the feature, the fun does not stop here. By varying the text offset, blur radius, and of course the color, you can achieve various effects, a mysterious glow for example:
text-shadow: 1px 1px 5px #fff; Glowing text
or a simple, fuzzy blur:
text-shadow: 0px 0px 5px #000; Blurry text
Finally, you can add ”more than one shadow”, allowing you to create pretty “hot” effects (courtesy of http://www.css3.info/preview/text-shadow/ css3.info):
text-shadow: 0 0 4px white, 0 -5px 4px #FFFF33, 2px -10px 6px #FFDD33, -2px -15px 11px #FF8800, 2px -25px 18px #FF2200 Multiple shadows are hot
The number of text-shadows you can apply at the same time in Firefox 3.5 is — in theory — unlimited, though you may want to stick with a reasonable amount.
Like all CSS properties, you can modify text-shadow on the fly using JavaScript:
Animated shadows with JavaScriptStart/stop animation
Performance, Accessibility and Cross-Browser Compatibility
The times of using pictures (or even worse, Flash) for text shadows on the web are numbered for two reasons:
First, there are significant advantages to using text instead of pictures. Not using pictures saves on bandwidth and HTTP connection overhead. Accessibility, both for people who use screen readers and search engines, is greatly improved. And page zoom will work better because the text can be scaled instead of using pixel interpolation to scale up an image.
Second this feature is largely cross-browser compatible:
- Opera supports text-shadow since version 9.5. According to the Mozilla Developer Center, Opera 9.x supports up to 6 shadows on the same element.
- Safari has had the feature since version 1.1 (and other WebKit-based browsers along with it).
- Internet Explorer does not support the text-shadow property, but the feature degrades gracefully to regular text. In addition, if you want to emulate some of the text-shadow functionality in MSIE, you can use Microsoft’s proprietary ”Shadow” and ”DropShadow” filters.
- Similarly to MSIE, when other, older browsers do not support the feature (including Firefox 3 and older), they will just show the regular text without any shadows.
A caveat worth mentioning is the ”drawing order”: While Opera 9.x adheres to the CSS2 painting order (i.e., the first specified shadow is drawn at the bottom), Firefox 3.5 adheres to the CSS3 painting order (the first specified shadow is on top). Keep this in mind when drawing multiple shadows.
Conclusions
text-shadow is a subtle but powerful CSS feature that is — now that it is supported by Firefox 3.5 — likely to be widely adopted across the web in the foreseeable future. Due to its graceful degradation in older browsers, it can safely be used by developers and will, over time, be seen by more and more users.
Finally, some words of wisdom: Like any eye candy, use it like salt in a soup — with moderation, not by the bucket. If the web developers of the world overdo it, text-shadow may die a short, yet painful death. It would be sad if we make users flinch at the sight of text shadows like typography geeks at the sight of “Papyrus”, and thus needed to bury the feature deeply in our treasure chest.
That being said: Go try it out!
Further resources
Documentation
- https://developer.mozilla.org/en/CSS/text-shadow
- http://www.quirksmode.org/css/textshadow.html
- http://www.w3.org/TR/css3-text/#text-shadow
Examples
Photos of the New Mozilla Headquarters
Today, Mozilla Corporation moved into new headquarters, across town, in Mountain View, California. The new place, which I have only seen as a building site so far, is bound to be awesome, judging by the photos that are slowly showing up on the web.
These and more photos are available on Deb Richardson’s flickr feed (thanks, Deb!):
I can’t wait to go visit!
Update: There are more photos of the new Mozilla office on osunick’s flickr page.
Irssi Notifications Via XMPP
Myself and most others at the OSL use screen+irssi to keep our irssi sessions alive and move between locations and computers. The problem is that we don”t receive notifications of private messages or highlighted messages (messages directed to us in a channel, or keywords) on our remote machines. The solution I came up with was to send the notifications over XMPP to a jabber server which both the irssi client and notification system could connect to.
I was able to get growl-net.pl and mumbles to work using the growl protocol. It had two major flaws, we couldn’t automatically detect the IP for our laptop and it wouldn’t work behind a NAT. Greg Lund-Chaix and myself hacked on different schemes for tunneling IPs using ssh reverse tunneling, and nc to deal with the fact that growl is UDP only. We had some minor successes but the connections using nc would disconnect frequently.
The tunneling just wouldnt work and was too fragile so I changed plans and worked on using XMPP instead. Sending messages via XMPP would not require tunneling at all even if you are behind a NAT. To accomplish this I rewrote growl-net.pl into jabber-notify.pl and hacked up a quick python program that listens for jabber messages and forwards them on to libnotify (via pynotify), the standard notification library for ubuntu.
Install Jabber-Notify.pl- Install Net:Jabber - sudo cpan -i Net:Jabber
- Download jabber-notify.pl
- Deploy it to .irssi/scripts on the server you run irssi on
- Load script /load jabber-notify.pl (You’ll get an error unless your jabber server is localhost)
- Configure settings using /set (option) (value)
- xmpp_notify_server - jabber server to send messages to
- xmpp_notify_user - jabber account to send message from
- xmpp_notify_pass - password for the sending user
- xmpp_notify_recv - jabber account which will receive the messages. This can be the same as the sender.
- xmpp_show_privmsg - notify about private messages
- xmpp_show_hilight - notify when your name is highlighted
- xmpp_show_notify - notify when someone on your away list joins or leaves
- reload script with new settings /load jabber-notify.pl
- Test using /xn-test
- Download jumbles.py
- Edit jumbles.py to set your values
- JABBER_HOST - Hostname/IP for the jabber server
- JABBER_PORT - Port for the jabber server. Default is 5222, 5223 for ssl/tls
- JABBER_USER - User to receive messages
- JABBER_PASS - Password for user
- start jumbles.py
- Jumbles is only going to receive limited support by me for the near future. While i’d like to add things like a tray icon, settings menu, and better reconnection logic, i just don’t have time right now. If you’re interested in any of these things feel free to contribute.
- Jumbles was hacked together fairly quickly from xmppy example code. Its name is a reference to this and mumbles which i was trying to emulate.
- The Sound used for notification is from open office, and can be channged on line 27
- If you dislike sound you can comment out line 75
Webcast | e-Sri Lanka: Transforming Government and Society with ICT
My colleagues at the Global IT Group in DC and the e-Development Thematic Group in Russia at the World Bank are producing another outstanding web cast and I wanted to pass along the news. These are very informative and professionally produced global discussions. Sri Lanka’s expereince is of particular interest to me as they worked to make extensive use of open source software and have one of the highest per-captial ratios of software developers contributing to global open source projects. Drop in on them and see:
e-Sri Lanka: Transforming Government and Society with ICT
When: May 28, 2009, 10:00 a.m. - 12:00 p.m. ET (GMT - 4 hours)
Live webcast: http://vcg01.worldbank.org/eDev
World Bank invites you to this seminar to discuss lessons learned from
implementing an integrated e-government and e-development program in Sri
Lanka and setting up a dedicated government agency to support this agenda.
The E-Sri Lanka initiative, which became effective in January 2005 is one
of the pioneering ICT for Development projects supported by the World
Bank. This ambitious e-development project aims to bring connectivity to
rural populations, improve the way government operates and raise awareness
of the benefits of ICT for remote rural populations as well as support the
development of a vibrant private ICT sector. The leadership team from Sri
Lanka’s ICT Agency will present (i) the original E-Sri Lanka vision and
(ii) emerging lessons and key results after the first four years of
implementation experience. To learn more about e-Sri Lanka program visit:
www.icta.lk
Event details: http://go.worldbank.org/8RRMW83HB0
You can ask questions and post comments via Twitter (#eSL09) which will be
shared live with the speakers and audience in Washington
Why Students should get Involved in Open Source
I'm (obviously?) a big supporter of open source software. I've been contributing back to open source projects -- at least with patches, package building, etc. -- for years, and using it for even longer. As the Operations Manager at the Oregon State University Open Source Lab, I have the opportunity to work closely with many open source projects, and also oversee student employees while they work on various projects both contributing code and helping maintain the hosting infrastructure at the OSL. From my experience, open source experience has given our student employees an enormous boost when looking for their first jobs out of college.
What is it that employers see as a benefit of hiring a student with open source experience? I think that question has many answers that depend on the employer, but there are some general answers that are likely common among most employers. Here are some reasons that I think being involved with one or more open source projects makes you a more desirable employee:
First of all, student employees don't typically have a lot of so called "real world experience": that stuff you learn from working at a job and handling the responsibilities required of you. When you work on an open source project, not only are you getting programming experience, but you're also gaining experience with a number of tools (compilers, version control systems, etc), interacting with people in a professional manner (I hope!), and learning things about whatever project you work on as well as picking up on general best practices for development, testing, and more. All of this experience is very similar to what you would gain at a paying job, and has the added benefit of showing a potential employer how motivated you are that you are willing to spend your free time learning these skills.
Secondly, gaining this experience in an open source setting also means that you can point to publicly available examples of your contributions -- be it code, documentation, testing, or whatever else. That is something unique to open source (paid developers typically can't show off their work!), and very valuable as a way to showcase your work.
Third, you are making a ton of contacts when you work in open source. The open source community model tends to encourage participation in mailing lists, IRC chat rooms, blogs, and other types of online communication. This is a great way to collaborate and, as you spend more time in any open source community, you'll end up seeing the same faces (or names/nicks as the case may be) and building relationships with other developers. Forming this sort of relationship not only may help lead to future opportunities, but you may find you have a group of very strong references to tout to a potential employer.
So, once you've gone out and gained such experience, how do you best represent it on your resume? Gervase Markham has posted (with help from Zak Greant, Luis Villa, and Leslie Hawthorn) a wiki document which outlines some best practices for putting free software experience on your resume. I think its a great document, and it served as my motivation for writing this post.
Mozilla Across the Globe
My colleague Dave made a little Google Maps mashup, illustrating where in the world Mozilla employees are. The result is quite an impressive map:
Over at Dave’s blog, you can actually zoom in to see more closely where people are. The one in Munich, Germany, is yours truly, by the way.
Greasemonkey makes real estate fun!
Nisha and I started seriously looking at getting a house recently. It being the 21st Century means large amounts of our house hunting time will be spent on the Internet; specifically rmlsweb.com a regional real estate listing service.
A huge annoyance with the site is that it uses a pretty lame mapping service called “GeoJet” which generates horrible looking maps.
Naturally, I started Googling for Greasemonkey scripts to find out if someone had fixed this already and sure enough my friend Kees Cook had written a user script in 2006!
With a little modification I got it working great with the new RMLS site. You can find it at git://ifup.org/philips/rmls-mapper.git or install the latest version now!
Government Open Source Conference DC Call for Speakers is open
The June 23, 2009 Government Open Source Conference (GOSCON) DC Call for Speakers is now open!
The conference will include one day of intense GOSCON program content, exciting keynotes, lightening-round sessions, rich opportunities to network with peers. Topics include:
- Open Source in the Enterprise
- Sustainability
- Policy
- Open Collaboration & Federal Grants
- Open Health IT- Vertical Showcase on Public Health
- Effective E-Government - Gov 2.0
Speaker Guideline and online proposal forms are availlable through the conference Call for Speakers page.
addthis_url = 'http%3A%2F%2Fwww.bryantsblog.com%2F%3Fp%3D608'; addthis_title = 'Government+Open+Source+Conference+DC+Call+for+Speakers+is+open'; addthis_pub = '';Hulu to go International. Good for the Customer? Maybe.

photo credit: confusedvisionHulu.com, the on-demand streaming video website established some 18 months ago by the US media companies as a platform for professionally produced content such as documentaries and TV shows, has signed a few contracts for the international market. For the international customers, that would be a good start, but it wouldn’t go far enough. Why is that, you might ask?
What the consumer cares about
When it comes to digital media, there are three major aspects the consumer cares about. They want to have:
- The content they like
- At the place and time they prefer
- in the format they require.
The content they like…
What sounds trivial at first has long been a major problem, both nationally and internationally. As an international consumer, content is often not available at all, available later, or not available in the preferred language. For example, all American TV shows that reach Germany at all (and that’s much fewer than there are on the US market every year) are dubbed to German. This may be pleasant to some, but it also makes it insanely hard to acquire the original language versions, as the original sound track is not broadcast even on digital TV. Buying the DVD is an option, but that can sometimes take several years after the original air date. Some shows don’t make it to DVD at all, either because the media companies don’t deem it profitable, or because the content licensing takes forever (e.g., the first season of Crossing Jordan took over 6 years to be released, the other five are still MIA).
Hulu can help with this. Where it has been impossible for customers to get the TV shows legally that they would like to watch, people started file sharing on the Internet. With projects like hulu.com, the media companies can do what they should have done all along: Offer a legal way for the customers to watch what they like, without being forced to download it elsewhere, with questionable legality.
At the place and time they prefer…
This is another issue that’s long been “built” into TV broadcasts: When a show is gone, it’s gone. And despite the fact that “on demand” has become somewhat of a buzz word lately, it’s been been more pay-per-view movie related and even PVRs aren’t quite the breakthrough yet in this respect: If you forget to plan ahead, your show won’t be recorded, and you are out of luck. Tivo is helpful there, but once again, unavailable internationally.
When it comes to the place, things get even worse: If you want to watch your favorite TV shows on the train or in the car, you are as of yet completely out of luck: I don’t know of a PVR that allows you to easily take its content with you, say, on your iPod. Hulu itself is isn’t very helpful there either: Even with the growing availability of 3G phone networks, the Flash-based hulu player won’t work on the iPhone, for example, leaving you stranded right there and then.
… in the format they require.
… which leads to the last and most severe problem: Even with Hulu offering content more widely than before, customers are still bound to a very limited distribution channel. So far, this means it’s browser-only. For mobile devices without Flash, that’s a bummer, and furthermore there’s no offline viewing, so you are equally left out as before while on the road outside major metropolitan areas. At last, hulu has not made content available any easier even in the living room, by most recently prohibiting its content from being shown through boxee, a free media center software.
It’s long been some sort of crazy “competition” between different content providers to control formats rather than content as strongly as possible, and in effect, they have lobbied many parliaments in the world (including the US and Germany) into laws prohibiting format conversions on grounds of “circumventing encryption”. While audio content is more freely available now (in the DRM-free iTunes, Amazon, and Wal-Mart music stores, for example), video content is still greatly restricted and virtually not convertible to other formats legally. And there is no indication that the video industry makes any effort not to repeat the same mistakes the audio industry already went through.
Long story short
Long story short, the push for international availability of hulu.com is a good start for the consumer. It may soon get the content consumers want to them, almost when and where they want it. Still, the content remains highly restricted and it is not in sight if and when that will change. Until the consumers are able to achieve format transparency through legal channels though, many may keep employing file sharing or DVD copying as their only viable alternatives.
Hackathon @ Open Source Bridge
The Open Source Lab is organizing a Hackathon (code sprint) at the Open Source Bridge conference, June 17-19th at the Oregon Convention Center in Portland. We’re bringing people together to help out Sunlight Lab’s Fifty States Project. If you’re interested in helping promote government openness and transparency, this is your chance.
WhatPart of the non-partisan Sunlight Foundation, Sunlight Labs is an open source development team that builds technology to make government more transparent and accountable. They have been building the Fifty States Project with the help of volunteers around the country. The project aims to provide parsers and an API for legislative data from each of the fifty state governments in the U.S. This is a local version of their already successful OpenCongress.org which provides the same data from the federal government.
WhereThe hackathon will take place at the Open Source Bridge conference. Open Source Bridge is a new conference for developers working with open source technologies and for people interested in learning the open source way. It is an entirely volunteer organized conference. Open Source Bridge is providing a Hacker Lounge, providing a great environment to hack in 24 hours a day during the conference.
The hacker lounge is located at the Hilton Portland & Executive Tower
921 SW Sixth Avenue Portland, Oregon WhenThe hacker lounge opens at 9am on june 17th and is open round the clock until 12am june 19th.
- Project Intro: Anytime between 3pm - 8pm June 17th
- Coding: any time till the end of the conference
We’re looking for any programmers of any level, interested in promoting openness and transparency in government. No prior experience with the project is needed, but feel free to check out the project wiki. Fifty States is written in python but other languages are welcome as well.
RSVPIf you’re interested in attending RSVP at Upcoming
Adding a simple progress bar to dd
I recently ran into an issue where I wanted to move several KVM based virtual machines from one server to another server. There’s several ways you can accomplish this depending on what you want to do. In my case I was using LVM for the disk backend, so simply copying the disk image files wasn’t an option. It boiled down to two basic options.
- Put system in single-user mode, rsync the contents over, and reinstall grub
- Use dd and copy the whole LVM volume over piped through ssh
The advantage using the rsync method is that you’re only copying the files you need over, thus less data transfer happens. But then you run into needing to re-run grub (which generally isn’t a problem). In addition, if you’re using LVM within the LVM volume for the VM and the volume group is named the same, you run into some interesting issues. The advantage for using dd is that you can get a literal copy of the disk image and just start the VM back up without any other steps. Of course, this will only work if the volumes are the same on both ends.
So I decided to go with dd but ran into a problem of seeing the progress of a 15G volume copy. I did some digging around and found a blog post that mentioned using a command line application called ‘bar‘ so I decided to give it a shot! Its a fairly simple application that just creates a basic progress bar based on the data being piped into it. If you’re running Gentoo, the package is called app-admin/bar.
Here’s the command I ended up running:
dd if=/dev/lvm/cholula-disk | bar -s 15g | \ ssh -c arcfour $host "dd of=/dev/lvm/cholula-disk"When ran, it gives you output similar to:
6.0GB at 17.9MB/s eta: 0:08:32 40 [========================= ]The downside is that you need to specify the block device size before hand, but for something simple like this its quite nice. Of course I could just use one of the many dd forks out there which include progress bars but this is quick, dirty, and simple!
I used the arcfour cipher mainly to reduce the CPU overhead and increase the throughput, but you should probably never use this cipher on an untrusted network as it does have weaknesses. I didn’t try doing throughput tests on other ciphers, but it would be interesting. It took me approximately 10-12 minutes to copy a 15G volume over a gigabit network which isn’t too bad.
Another trick you can do is utilitize the LVM snapshot feature and create a snapshot of the running volume. If any data changes on the volume, it won’t be copied over obviously, but it will at least let you do a cold “live” migration of sorts.
Cloudkick takes “Best in Show” at Under the Radar
Last Friday, we presented at the Under the Radar conference. Things went really well, and Cloudkick ended up taking best in show (people’s choice)! Techcrunch did a nice article on our progress. Exciting times!
Red or Green? Accessibility of Lufthansa Seat Selections
Soon, I’ll fly to the US on a business trip, so I checked into my flight with Lufthansa earlier today. As most airlines nowadays, they let you choose where you’d like to sit, which looks something like this:

Sadly, this is hardly accessible for people with “disabilities”: Not only is it a Flash application (which is a pretty bad idea accessibility-wise anyway), but also for people with red-green colorblindness (like myself), it is extremely hard to distinguish occupied seats from empty ones, as they only differ in color, and do not have any additional distinguishing features.
When you look at other airlines’ seat selectors, you’ll notice that Lufthansa has, in comparison, made a particularly bad choice. Northwest Airlines’ seat selector, for instance, looks like this:

The difference is obvious: When a seat is occupied, instead of bothering only with a different color, NWA just puts a little person into the spot. In addition, other meaningful symbols are employed to display other options, such as accessible seating (wheelchair symbol) or seats that can be purchased for an additional fee (the dollar sign).
What’s so bad about Lufthansa’s design choice is that the most central difference in this UI is no different at all when you find yourself among the approx. 6 % of males with deuteranomaly.
What does this mean for developers? It may sound trivial, but: Make similar things similar, and different things different. If you have a very limited set of UI elements for the task at hand, make them sufficiently different for the user to distinguish without guesswork — this won’t only help the “challenged” users, but all of them will need less time and thinking, and thus have a better user experience. There’s more to UI design than color, as Alex Faaborg outlined in this an older blog article about quantitative design.
Google Summer Of Code 2009
Google is going to pay students $4,500 to work on some of the coolest open source projects. The OSU OSL is a organization for Google Summer of Code 2009. After reviewing some great proposals we’ve made our selections. Here are the students and the projects they proposed.
PydraPydra is a distributed computing or cluster computing framework for Python. Pydra seeks to provide a framework that is easy to deploy, manage, use. This is on top of providing standard features such as fault tolerance. There are two students working on Pydra for Summer of Code 2009.
MapReduceJakub Łukasz Gustak is a 5th year student of graduate studies at Wrocław University of Technology (Poland), Computer Science major. Recently interested in concurrent, parallel and distributed programming and languages. Also interested in programming languages design and its expressiveness. His master thesis is addressing problems of parallel and distributed computation (title: Parallelization in Scheme language).
Jakub’s project is to implement MapReduce support for Pydra. MapReduce is a concept for simplifying parallel computing jobs. Jakub will also be implementing input/output helpers, improved WorkUnit Slicing, and other features.
Task Scheduler and ManagementYin Qiu is a first year master student from Nanjing University, China, majoring in software engineering. He interned at IBM China Development Lab for 6 months, and at Microsoft Research Asia for another 4 months. He has over 5 years of experience in Java and 2 years of experience in Python. In 2007. Yin is passionate about building distributed systems.
Yin’s project is to implement a Task Scheduler for assigning workunits to workers and managing workers within a Pydra cluster. He will also be implementing and improving management for task objects.
UnifyLuis Arajo has been a Gentoo developer since the beginning of 2005 , being part of the Haskell and Scheme team. He also cooperates with many packages inside the dev-lang/ category and is the current leader of the Gentoo-GUIs sub-project. Luis also
successfully participated on the Google Summer of Code of 2007 developing a graphical framework for the Gentoo project, and in Google Summer of Code of 2008 designing and implementing the Unify project.
Luis will be continuing his work on the Unify Project. Unify is a tool for creating packages across different distribution formats (deb , rpm, solaris packages) using standard portage Gentoo ebuilds as the specification for building the packages. Luis will be continuing work on features and improving the usability of the application.
Android IRCTianyi Gao is a first-year college student with a 3.94 GPA, triple majoring in Computer Science, Software Engineering, and Mathematics at Rose-Hulman Institute of Technology in Terre Haute, Indiana, and hopefully graduating in three years with the class of 2011. He’s been programming for six years, with three years of Java experience
Tianyi will be implementing an IRC client for the Android mobile operating system. Our IRC client will differ from existing IRC clients for android in that it will utilize a proxy service to keep connections alive even when the client is not running. This model will allow connections to be maintained but preseve battery life by only using data connections while the application is in the foreground.
“We have 20/20 Downside Vision”: Public Domain and the Fear of Openness
This a video of an excellent lecture from Professor James Boyle on the Public Domain: enclosing the commons of the mind. He points out how today’s automatic copyright system (“death plus 70″) is a “cultural disaster of incredible proportions”.
It’s not only highly relevant and insightful even for people slightly less geeky than me, it is also highly entertaining due to his references to Internet realities (“hundreds of thousands of bloggers — several of them sane! — could use it!”), and therefore all of you should watch it — especially if it’s been awhile since you last listened to an interesting lecture
.
(via BB)
Category Plugin For Wordpress
I’ve been working on the layout for the new Open Source Lab Blogs site, and came across a problem. We wanted our front page to be an aggregation of our individual blogs. It was easy to get the articles aggregated using RSS feeds and FeedWordPress Plugin. It even sorted our articles into categories very nicely, but wasn’t compatible with other category listing plugins. We wanted the article linking back to the source blog, an option provided by FeedWordPress.
I built a category plugin that uses the built in query & display functions to list all posts from a category. It should be compatible with any other plugin that modifies the links for articles.
Building the PluginAfter doing some research I found the query_posts() function. This function allows you to query any wordpress articles and then use the standard functions, such as have_posts(), the_post(), and the_title(), to output the articles. 50ish lines of code to generate a sql statement could be reduced to this:
query_posts('cat='.$atts['id'].'&posts_per_page='.$atts['count']);)and since it uses the same functions for outputing the articles, it works with other plugins like FeedWordPress
Plugin Properties- id - id for the category to display
- title - title to display at the beginning of the list, default to “category posts”
- count - how many articles to display, defaults to 5
- href - optionally turn title into a link to this url
- class - optionally set the class attribute, can be multiple classes, defaults to “cat_list”
Here is the plugin: categories.tar.gz
it is free to use and modify.
Working for Mozilla
I am happy to announce that starting this week, April 1, (and no, that’s not an April Fool’s joke) I am working full-time on the Mozilla WebDev team. I have been involved with the Mozilla project since 2006, and I have since been able to experience just how great all of the Mozilla community is. I am looking forward to working with the many awesome people who make Mozilla what it is, and who are as excited about the future of the Open Web as I am.

There is a lot in store for us: Firefox 3.5’s release is rapidly approaching, and the Web is concerning more people in the world than ever before. Though it is not all “smooth sailing”, and there are a lot of dangers for the Open Web and for the people who use and rely on it, I am still, or maybe all the more, excited to make a contribution to the development of the Web landscape, for the good of millions of Firefox users, and 1.5 billion Internet users as a whole.
Let’s do it!








