Instigated by Twitter's fail whale, more and more Web 2.0 companies feel the necessity to add a fail-pet to their "OMG" error pages.

I've been loosely collecting those before, so my friend Tobi was so nice to send this one from Facebook over:

Facebook: Boo Boo

I think it's from an app and not Facebook itself, but I may be wrong. Anyhow, apparently their hampster made a boo boo. That's more information than I needed, but at least it eases the pain of the failed application. And that's gotta count for something, right?

Read more…

For work, I often develop on a remote Linux box that I SSH into. Now, as a web developer, one of the big advantages of interpreted languages is that there are no big compile steps to wait for.

One of the big disadvantages is that nothing exciting is happening when you take a break (no sword fights, for example). The screen is just sitting there. Unfortunately, OpenSSH servers in their default settings take this silence as a perfect excuse to cut the cord after 5 minutes.

If that happens a lot during the day, this can be pretty annoying! But fear not, dear reader. On a Redhat-like system, you want to edit /etc/ssh/sshd_config and add the following line (note: only the second line is needed, read below):

TCPKeepAlive yes ClientAliveInterval 60

Restart the SSH server, and it shall henceforth not punish you for prolonged periods of silence anymore. :)

Update: Two of my readers pointed out interesting things. First, Sancus mentioned that TCPKeepAlive is different from ClientAliveInterval and serves a different purpose. To avoid your connection dropping, the latter is likely to be the better option.

Jeff says, if you set this in the ~/.ssh/config file on your client, you'll achieve the same effect without the need to modify the server settings:

Host * ServerAliveInterval 300

This is obviously a highly charming alternative because more often than not, you are won't have (write) access to your server's sshd_config.

Read more…

Click on the screenshot to see the error message YouTube just gave me when logging in:

Youtube: Shenanigans!

And no, I have no idea what that's supposed to mean...

Read more…

Just a reminder, because I always forget it: When you use git-svn on an svn repository and your code base contains empty directories (say, for temporary files, or log files), they will be ignored by git unless they contain at least one file.

Paradox? Maybe. There's a good reason however: git ignores empty directories because it tracks (file) content, not a bunch of directories some of which happen to contain a file (the concept of tracking files might be the only thing git has remotely in common with good ol' CVS -- though git also does not deeply care about file names, only content).

The "common" way to handle this is by adding a .gitignore file to the repository. This won't harm svn-only clients, but it'll make git-svn clients pick up the (almost) empty directory properly.

This is what you need to do.

mkdir empty_dir echo '*' > empty_dir/.gitignore echo '!.gitignore' >> empty_dir/.gitignore git add empty_dir git commit -m 'adding empty directory' empty_dir

The .gitignore file tells git what file names not to track inside the directory in question. The asterisk means, ignore all files, but the second line makes sure the .gitignore file itself is recognized and added to the repository.

Read more…

Yes, yes it is. Says istwitterdown.com:

istwitterdown?

In fact, it is "too down" even to display the fail-whale. I've not seen that before :)

PS: On an unrelated side note: hasthelargehadroncolliderdestroyedtheworldyet.com?

Read more…

As always, what I am writing here is my own opinion and not a statement on behalf of Mozilla Corporation.

When I was just visiting Wikipedia, I was greeted with this temporary error note (which, luckily, does not happen too often in spite of Wikipedia's huge popularity):

Wikimedia borken

And, even if this marks me as a Web 2.0 geek, I must admit: All I was thinking was -- where's the pet?

The first company to put a recognizable, even likable, "pet" onto their error pages was likely Twitter. And due to the horribly frequent outages associated with Twitter's "growing pain", we got to see the littlehuge fellow quite often. In the mean time, he seems to have swam away, at least I haven't seen him in awhile. Yet, he's not forgotten: the fail whale even has his own fanclub.

Twitter Fail Whale

Another place where I saw a "fail pet" was yelp, whose error page was sporting a picture of an actual dog, apparently the company puppy "Darwin" (sorry for the tiny screenshot):

Yelp Puppy

Now where's yours, Wikipedia?

Of course, considering I so provocatively ask this question, you might respond: Well, where's yours, Mozilla?

Here at Mozilla, we are not particularly proud of software failures, because unlike your regular web 2.0 start-up (think Twitter) where every service failure means more customers than anticipated, failures in Mozilla-land usually mean a crashed browser, (possibly) lost data and certainly frowning users*). So when the Crash Reporter icon was redesigned, we could have gone ahead and hired Foxkeh as our "crash mascot", but that would do the poor little fox wrong -- and at any rate, we prefer associating mascots with good stuff here at Mozilla. So at the time, user experience engineer Alex Faaborg made sure we don't create something too memorable, for example nothing like a second "Blue Screen of Death". Of course, had Microsoft known at the time how appeasing error messages can become with a little help from the animal kingdom, they'd have hired the entire cast of Looney Tunes to show up in their dreaded error messages.

But this might well be one of the few things we have in common with Microsoft: No fail-pets for us, any time soon.

*) On a side note, although it won't make a user fell better whose browser just crashed: When Firefox crashes it is most often due to binary, third-party plug-ins like Flash, Acrobat etc., and not due to a bug in Mozilla software -- as evidenced by the publicly available "top crashes" list and the bugs associated with it.

Read more…

I jus stumbled across this awesome (and huge!) world map that overlays a regular map of the world with the countries' respective top-level domain codes.

Country Chart

Here's an excerpt from the Caribbean:

Caribbean countries, excerpt

The map is a pleasure to look at even on the screen (I love the colors!), and I might even buy one in print and hang it on the wall.

Link

Read more…

Mozilla pins (wallpaper)
Creative Commons License photo credit: flod
In a very well written article that was published in Sunday's New York Times, Miguel Helft explains the post-"browser wars" web, and how Mozilla's mission fits into this increasingly complex setup.

As indicated by the title -- "For Mozilla and Google, Group Hugs are Getting Tricky", the author puts some emphasis onto the Google/Mozilla relationship, which among the community tends to be a big point of interest. Quote:

"In many ways, Google and Mozilla are fighting the same battle, albeit not with the same objectives. They both contend that the Web should be open and based on common standards — Mozilla because it is its mission, Google because it is good for its business."

Highly recommended reading, even for non-geeks, who are interested in Mozilla and the Web as a whole.

Link

Read more…

Firefox 3.5 has officially been released:

Firefox 3.5

What are you waiting for? Go download it! :)

Read more…

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;

 

simple box shadow

(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;

 

inset box shadow

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;

 

box shadow with spread radius

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;

 

multiple box shadows

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);

 

box shadow with RGBA

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

Examples

Read more…