The Good Life... a weblog about life, technology, and the Opera Web browser

Posts from 2006

Tim's Opera Bits v1.1

Update (July 17, 2006 3:00PM): Right, so the day after I wrote about widget auto-discovery, we go and release a new service to make any newsfeed into a widget. Details below. I knew I used version numbers instead of simple integers for a reason.

Back in March, Opera Software launched a monthly newsletter called Opera Bits. Some times I run across bits of information that don't quite make a full blog post, but certainly deserve a mention. So, I'll be running my own semi-monthly Opera Bits. And it's time for the first issue:

  1. First, if you haven't already heard about Greased Lightbox, you should check it out. It's a user script "designed to enhance browsing on websites that link to images such as Google Image Search, Flickr, Wikipedia, Facebook, MySpace, and deviantART." After it's installed, you just click on an image and the full-sized version loads on screen. Press ESC or click the page and you'll get back to the original page.

    Here's how to get it working:

    Note: You'll need Opera 8.0 or later.

    1. Create a folder on your hard drive where you'll save the script. I usually have lots of Opera installs, so I have an "Opera" folder ("C:\Program Files\Opera\" on Windows and "/Applications/Opera/" on Mac) and I place a "User JS" folder inside that folder. This is simple way to collect all your Opera-related stuff in a single place.
    2. Go to Tools > Preferences > Advanced > Contents > JavaScript options in Opera and set "User JavaScript files" to the folder you created in the previous step.
    3. Download/save the script to that folder.
    4. Now, go back to the Greased Lightbox page (it may be necessary to reload the page) and click on one of the example images at the bottom.

    Neat, huh? For more user scripts, check out userjs.org. The only other one I'm currently using is Stop form focus.

  2. Web-based e-mail accounts are all the rage these days; everyone seems to be using Gmail, Yahoo! Mail, SquirrelMail, etc. Unfortunately, it's not clear how get to your webmail account when you click on a "mailto" link on the Web in Opera. Rijk has put together a guide you can use to get your favorite webmail account working with Opera. Further instructions are on Rijk's page.
  3. Since Opera 9.0 passed the Acid2 test back in March, there's been a sprinkling of reports from users that their version of Opera didn't pass. This has been widely publicized recently by The WaSP, as well as various blogs.

    After analyzing the problem reports, we've found no reason to believe that our claim was incorrect. Mark Wilton-Jones (a Technical Writer at Opera Software) has put together a comprehensive guide to the Acid2 test, which includes detailed information refutting the problem reports. In all reported cases we've analyzed, the observed failures were related to non-default preferences—which invalidate the test—or misconceptions about the way the test works.

    While not (currently) specifically stated in the Acid2 guide, the Acid2 test is meant to be tested using a browser's default settings. The following preferences are the most common causes of apparent failure:

    • View > Fit to width. This is an advanced rendering mode that purposefully breaks standards to allow Web pages to remain usable at various screen widths. This includes ignoring or changing some styles defined for a page, which invalidates the test.
    • View > Small screen. As with "Fit to width", this is an advanced rendering mode that purposefully breaks standards to make Web pages work better on small screens. This includes ignoring or changing some styles defined for a page, which invalidates the test.
    • View > Full screen. Opera's full screen mode uses styles written for "projection" media types (such as slide shows) by default, though it does fall back to styles written for "screen" media types (such as Desktop computers) if no "projection" media types are found. While this does not seem to adversely affect the Acid2 test, the test is meant for user agents that support the "screen" media type.
    • View > Images > Cached images or View > Images > No images. The Acid2 test uses images to represent the eyes, thus if they are disabled, the test is invalid. Opera has a bug that is visible in the test when re-enabling images or showing only cached images, but that in no way means Opera does not pass the test. Remember, the test is only valid when used with a browser's default preferences.
    • View > Zoom. Zooming a Web page changes the way that text and images interact. When the Acid2 test is zoomed in Opera, some red artifacts may appear around the eyes. This is a bug in the way that Opera handles rounding of values while zooming, but it in no way means that Opera does not pass the test. Again, changing the zoom preference to anything other than 100% invalidates the test as it changes the browser's default parameters.
    • Preferences > Advanced > Fonts > Minimum font size. The Acid2 test specifies certain elements using pixel units. If the minimum font size is raised from its default, the pixel-unit elements are too large compared to other elements, making the test distorted and invalid. Default preferences....
    • View > Style. Using any setting other than "Author mode" or applying your fonts, colors, styles, etc. in "Author mode" changes the style cascade used in the test, thus invalidating the test.

    Other reported problems with the Acid2 test in Opera have to do with misconceptions about how the test works:

    • Some people believe that the Acid2 test shouldn't scroll when you use a mouse scroll wheel, keyboard arrows, or other scrolling mechanisms because the test doesn't have a scroll bar. If the test is scrolled, parts of the face fall apart. Mark Wilton-Jones has already done all the necessary research about this and published it in his comprehensive Acid2 guide. The gist is that the test should not show a scroll bar, but whether the test should scroll when using one of the above methods is not defined in the W3C CSS specification and is not part of the test.
    • Some people believe that changing the browser screen width should not change the test. When you make your screen smaller after the test is rendered, two pieces of the face detach (the same pieces that detach when scrolling). This behavior is not defined in any W3C specification. Changing the screen width changes the width of certain elements, which can cause the page to scroll, leading to the same problem mentioned above.
  4. The last two Opera 9.01 weekly builds have included a bunch of nice IMAP fixes that weren't fully described in the changelogs. First, we did some major optimizations when changing the flags (Read, Deleted, etc.) of multiple messages. Previously, we would send two commands to the server for every message we wanted to mark as read, unread, deleted, or undeleted. Now, we send one command for all messages. So, if you were changing 200 messages before, we'd send 400 commands to the server. Now, we send just 1.

    Additionally, we fixed some bugs related to randomly redownloading groups of messages, made it possible to permanently delete single messages from the Trash view (previously they'd reappear) rather than forcing users to permanently delete all messages, and fixed some problems with messages not being removed from a view when they were moved or deleted. Overall, the IMAP experience with the current 9.01 weekly build is much better than with Opera 9.0 final.

  5. Arve recently wrote about using widget auto-discovery, which makes Opera 9.0+ show a widget icon in the address bar when viewing your site. This feature should only be used for widgets that display an RSS/Atom feed of your site. Hot on the heels of Arve's article, the Opera Community now allows blog authors to automatically create a widget of their blog and advertise it via auto-discovery. Spiffy.

    Update: And hot on the heels of the Opera Community announcement, we've released Widgetize!, a service to generate widgets for just about any newsfeed. Simply go through the wizard and it'll give you a URL to your very own widget. Spiffy × 2.

    I've Widgetized! Have you?

I hope you've enjoyed this (updated) issue of Tim's Opera Bits. See you next time.

Mobile me

Believe it or not, Oslo (the most expensive city in the world) has much better and less expensive mobile phone plans than anything I've found from a major carrier in the US. To start with, you don't pay for air time on calls you receive. Another nice thing is that you pay based on what you use, not on some preset minute allotment. I'll get back to that in a bit.

When we were in Oslo, we were using a prepaid plan, though subscription plans were available. I never used the subscription plans, but I believe you paid a set amount for the line, then any usage fees based on a set rate. Your account might feature different services, like web browsing, which would change the set montly fee. Norwegians, feel free to correct me. With the prepaid plans, you paid to have the number set up and then purchased minutes whenever you need them. Rebekah and I typically went through around 150 minutes each every two months.

In the US, you typically pay a monthly subscription fee for a set number of minutes, then pay a certain amount per minute if you exceed your allotted amount. Normally, you won't pay for calls between callers using the same provider, though you do pay for text messages (both sending and receiving). You'll also use up your minutes on calls you receive. The base number of minutes on most family plans seems to be 700. So, Rebekah and I are basically paying for 400 minutes a month that we don't want. And since we text message each other more than call, we end up paying for usage anyway.

If that weren't bad enough, we barely get service at the house where we spend 90% of our time. I miss four out of five calls I receive. When I do get a call, I can barely understand the person because the reception is so bad. In Norway, I could be in the middle of a forest and have full reception. It's pathetic.

The phones have improved since I first got a mobile phone in 1998, but not much else has changed. It's time to get with the rest of the planet, USA.

Jobs I Could Never Do

I've recently come to terms with the fact that there are several jobs I could never do, no matter how well I'm trained. First, I could never be a flight attendant, mostly because of my fear of flying. I actually quite like planes, it's just the actual flying (well, the turbulence, really) that gets to me. Being a pilot would probably be OK, since you usually don't get motion sickness in a car when you're in the front seat and I'd guess the same about being in a cockpit. Of course, I made myself sick one time while driving. It was a really fun, windy road though, so you can't exactly blame me.

Second, I couldn't be a hair stylist (I believe that's the current "politically correct" term for a person that cuts your hair). No, it's not because I have no sense of style (though that certainly would be an issue). Over the years, my hair stylists have always been excellent at remembering my name. While I'm pretty good with faces, I'm quite bad with names. I'm really quite embarassed by it sometimes, especially if I run into someone I haven't seen in a while. I try to pass it off by saying something like, "What's up, man" or "How's it going, dude" rather than using their actual name. Sometimes it'll come back to me, but usually not right away.

What's worse is when I think I remember someone's name and I use it, but that's not their name. I think that's only happened once, back when I was working as a cook in a family restaurant. A waitress was passing my work station and I said "Hello, Shannon" (or whatever her name wasn't) and later realized that her name was Laura (or whatever it was), so then I had to stop her and apologize for calling her the wrong name, which apparently she hadn't even heard in the first place. Oh well.

Finally, I could never be a train conductor. Sure, motion sickness plays a part, but that isn't the main issue. If you're not familiar with a train conductor's job, they go around and make sure that all the train passengers have a valid ticket. Some times they'll leave a slip of paper above your seat to mark that you've paid. The train conductors in Norway just remembered you. That astounds me. They see hundreds of random people a day and simply remember them for the short period of time they know each other. I know I'd go around asking people for their tickets several times, interrupting perfertly good naps or conversations. It just wouldn't be good.

Thankfully, I don't need to do any of these things since I have a super cool job. I've worked for Opera Software for just over three years now, making it the longest I've held a single job (which I don't think is uncommon for 26 year olds). I've been very blessed to be able to do something that I feel makes a difference, gives me ample opportunity to learn, and is just plain enjoyable. And if you're enjoying yourself as a flight attendant, hair stylist, or train conductor, more power to you.

What fish?

A joke from my dad:

A fisherman with two ice chests full of fish was stopped by a game warden after leaving a river well known for its fishing. The game warden asked the man, "Do you have a license to catch those fish?"

"Naw, my friend, I don't have a license," said the man. "These here are my pet fish."

"Pet fish?" asked the game warden.

"Yep. Every night I take these fish down to the river and let 'em swim 'round for a while. Then I whistle and they jump right back into this ice chest and I take 'em home."

"I don't believe that for a second! Fish can't do that!"

The man looked at the game warden for a moment and then said, "It's the truth. I'll show you. It really works."

"Okay, I've got to see this!" exclaimed the game warden.

The man poured the fish into the river and stood and waited. After several minutes, the game warden turned to him and said, "Well?"

"Well, what?" asked the man.

"When are you going to call them back?"

"Call who back?"

"The fish!"

"What fish?"

Site-specific vs. window-level preferences

Users have been clamoring for site-specific preferences for years, often asking specifically for the ability to set zoom, author/user mode, or fit to width on a site-by-site basis. Yet, when site-specific preferences were introduced in Opera 9.0 Preview 1, those oft-requested preferences were missing and still haven't turned up six months later. I'll try to explain why, but first let me explain how things have worked historically.

Prior to Opera 9, there were two* types of preferences: global and window-level. Global preferences are the defaults used for all web pages. Window-level preferences are overrides used for specific tabs and tabs opened from those tabs. Window-level overrides exist for the following preferences: zoom, show images, fit to width, and author/user mode.

Here's how it works: a user sets the default preferences for all web pages by changing the global preferences. Then, if they want to change the zoom preference to more easily read an article loaded in a specific tab, they'll change the zoom window-level preference for that tab. The zoom preference for other currently open tabs won't change and new tabs will still use the global preference. However, any tab opened from the tab where the zoom preference was changed will inherit the window-level override of its parent tab.

This sounds complicated, but is intuitive in practice. Say you go to a news site and find the text too small to read. No problem, you simply increase the zoom level for that tab. Now, you decide you want to read a handful of articles on that news site, so you open them in background tabs. You're likely to have the same problem reading the small text in all the articles you just opened as you did on the main site. Luckily, the zoom preference you set in the original tab is inherited to all the tabs you just opened. In other browsers, you're only recourse is to change the global preference, which isn't really what you want.

One quick caveat: several global preference changes don't take effect immediately in the open tabs. For instance, when you disable JavaScript (JS), it isn't actually disabled for open web pages until you reload the web page. Thus, you can disable JS in a particular tab, reload the page, do whatever you need, re-enable JS, reload the page, and none of the other open web pages will know the difference. This makes it seem like you're only changing the preference for a specific tab, but you're really changing the default for all tabs. Many other preferences, such as default web page font, take effect immediately.

Fast forward to Opera 9 and the introduction of site-specific preferences (SSPs). SSPs allow you to override the global preferences on specific web pages. Let's take an example: by default, Opera blocks all unrequested popups. If you frequent a site that uses unrequested popups that you actually want to see, you'd add a SSP for the site so all popups are allowed. The SSP overrides the global default, thus whenver you visit that site, you'll get unrequested popups, but everywhere else, they'll continue to be blocked. It's a bit like white/black-listing, but taken to the next level.

While SSP are a great new feature, there are three main problems with the current SSP interface: 1) when you change a SSP preference, you also change all the other SSP preferences on that tab in the preferences dialog, 2) you can't easily return a SSP preference to the global default, and 3) window-level preferences are not available as SSP. The main reason for latter issue is that it isn't clear how the three levels of preferences will interact. SSPs override global preferences and window-level preferences override global preferences, but do SSPs override window-level preferences or do window-level preferences override SSPs?

Opera 9 is just our first attempt at SSPs. If you look back at many of Opera's features, they've evolved version by version, until they become polished, accessible, and intuitive. I expect the same will happen with SSPs, yet another reason to enjoy Opera 9 and look forward to what's next.

* OK, there's technically a third hybridish preference for setting the page encoding. You can't set the default page encoding from the preferences at all. When you change it via the View menu, all new tabs and the active tab will use the new encoding while all other currently open tabs will continue using the old encoding.