Skip navigation.

My Opera News

Behind the scenes at My Opera community

Opera Unite release day

, , , ...

Tuesday 16th of June was a special day for My Opera too.

Opera Unite was released at 09:00 CEST, and just after that, the amount of traffic and visitors to My Opera increased quickly, to reach the highest peak around 18:00 UTC.

This was also the highest peak ever reached for My Opera. On that day, we finally broke the 2 million page views per day, that sums up to more than 100M hits and 600,000 unique visitors just that day.

We're very happy about this. Yes, the site was not completely usable, and sometimes it was serving pages very slowly, but still we managed to keep it running. We hacked together some quick and dirty fixes to achieve this. Some of those hacks have been removed now, and we're working on applying them permanently to the site.

For the curious/interested, I'm referring to what we call the "User" module, that provides most of the user-related information. When you open a page on My Opera, we call the user module at least for:
  • the visiting user (you), and
  • the user "owner" of the page (the my.opera.com/<this_bit_here>)


Not a case that this is the most called module throughout the whole web site, so we want to optimize it and make it really fast, ideally around a few milliseconds.

Here's a few munin charts, of the database connections (this is a weekly chart, so look around the "16"):



And of one of our backends, with a rough timeline of what happened:



Of course, there's still a lot of work to do, and we know which are the slower parts of the site. That might change while the community grows bigger and bigger every day. We will keep up. :-)

New backend features in Banana

, , ,

The Banana release has been out for 2 weeks now. It seems to have been one of the happiest upgrades that we've ever had in a while. Not that it's without bugs, of course, but...

EspenAO already told you about some of the changes that went into Banana.

We'd like to tell you about some other stuff, more from the "engine-room".

Captcha

We have a brand new captcha module, based on ReCaptcha. This took a while to make, because we built a generic Captcha module, that will allow us to use any captcha system out there if we need to switch. We find ReCaptcha very good so far. Some people of course disagree, but the old "string-only" captcha was far too easy to break, and our community/spam moderators had a hard time cleaning up the spam at times.

Legitimate users shouldn't have any big problem with it. In any case, if you're worried about comments in your blog, invite people to join My Opera, so they won't see any captcha anymore :-)

New static server

New users that upload their avatar or profile picture will probably notice (or probably not, if things work correctly) that their new picture is now served from http://static02.myopera.com. Now we have in fact 2 static servers, static01 and static02.

This is the first successful partitioning experiment on MyOpera. This means that some part of our users will see their pictures being served from static01.myopera.com, while others, tipically new users, will go to static02.myopera.com.

This is made possible by our Storage classes, that allow us to move users content around without too much work.

New Javascript framework

To modernize and improve the usability of My Opera, we officially adopted the YUI framework after carefully evaluating several available js frameworks out there. The last two contenders were jQuery and YUI. We chose YUI for several reasons, but they were very close as per speed, features and overall quality.

We were already using YUI in the past, but it wasn't really used that much, and it was an older version anyway. Now we also built a custom js library that "wraps" around YUI, so we don't use it directly, but we access its core functionality with our functions. An example is the new blog import tool. Example:


// JavaScript for the Yahoo 360 blog import page (/community/import/)
O.load_framework_dependencies(
    ['connection','selector'],
    init
);

function init() {
    O.add_event(
        'form[name="blog-import"]',
        'submit',
        blog_import
    );
}

// Form submit handler. Makes the ajax call to the Y360 blog preview script
function blog_import(e) {
    O.prevent_default(e);      // avoid double posting
    O.show('#spinner');
    // ...
    O.ajax(
        form.action,
        {
            success: show_preview,
            failure: preview_failed
        },
        data,
        {method: 'POST'}
    );
}

It allows us to write very clean js code, and tries to reasonably decouple the YUI libraries from our own code. O. stands for Opera library.
O.add_event() is the generic function that of course works for all browsers, to add a new event to the DOM.
O.ajax() is the XHR ajax wrapper, and so on...

This abstraction will also allow us, if needed, to use parts of different frameworks very easily, and even switch to a different framework in the future. But we might not want to do that, I hope.

More stuff

There is new exciting stuff already out that we can't talk about, because it has to do with new features we have right now in our development version of My Opera, but they will be out probably with next release.

Markup changes

, ,

Later this week we are planning to release a new batch of updates for My Opera. The updates contains some small HTML changes that might affect you if you have written your own custom CSS.

1. Changes have been made to the "view photo" page.

New buttons and image navigation have been added inside the #frame4 div. Default css for this is included for all designs. The star ratings div have also been moved below the photo.

HTML preview:

<p id="imgbtn">
<a href="#"><span>Share</span></a>
<a href="#"><span>Zoom</span></a>
</p>

<div id="imgnav">
<div>
<a href="#"><img src="#" width="44" height="29" alt="Previous"></a> 
Image x of x
<a href="#"><img src="#" width="44" height="29" alt="Next"></a>
</div>
</div>

2. Changes have been made to the comments markup.

There's a few changes to the comments markup. The new version looks like this (every second comment is called comment1 and comment2, just like before). Active users avatar have also been added to the "write a comment" form.

HTML preview:

<div class="comment1">
<div class="avatar"><a href="#"><img src="#" alt=""></a></div>
<p class="comment-by"><b><a href="#">username</a></b> <span class="comment-date"><a href="#">#</a> date</span></p>
<div class="text">text</div>
</div>

3. Avatar markup is standardized to having the class name on the div.

HTML preview:

<div class="avatar"><a href="#"><img src="#" alt=""></a></div>

Yahoo! users once again receive mail from us

,

Lately we have been receiving many support tickets regarding e-mails from My Opera not being received. These tickets have included answers to support requests, notifications of private messages and especially activation of new My Opera accounts.

After being in conversation with Yahoo!, we have solved the problem, and there should not be any more problems regarding this. If you are experiencing this kind of problem at other mail providers, please let us know using the appropriate contact form.

We are sorry for the inconvenience this may have caused, but we are pleased that the problem finally has ceased.

Live long and prosper! :spock:

Pre-Easter bug fixes

, ,

We just sent out a couple of patches that should fix 2 of the most annoying (small?) Apricot bugs.
  • Duplicated links in the "Links" section of your account.
  • Broken anonymous comments in your blog.

About the first one, users with the Links section enabled in their sidebar, were seeing their links duplicated when going to their "Links" page (<username>/links/). This was related to the Sidebar module caching. Now this should be fixed.

Some users also reported problems when anonymous people wanted to comment on their blogs. This, together with other minor assorted bugs, should be fixed.

Most of us are already on vacation, or will go shortly. Someone will remain here to kick the servers if something goes wrong. :-) Happy Easter!

Face gestures on Slashdot

, , ,

A link to the Face-Gestures blog post on My Opera is on the slashdot home page right now.

More traffic than usual, but everything is running smoothly.
Of course, it's because of Chuck Norris :-)

Disappearing user pictures

,

Lately we have noticed two different problems, one with user pictures and another one with default avatars.

Sometimes it happens that user pictures just come up broken. For some reason, they don't show. This is a bit weird, and difficult to reproduce. Every time you try to reload the broken pictures, they misteriously show again.

We think we found out why. Analyzing static.myopera.com access logs, we found that some requests were being served as 503, which, according to the HTTP spec, is:

10.5.4 503 Service Unavailable

   The server is currently unable to handle the request due to a
   temporary overloading or maintenance of the server. The implication
   is that this is a temporary condition which will be alleviated after
   some delay. If known, the length of the delay MAY be indicated in a
   Retry-After header. If no Retry-After is given, the client SHOULD
   handle the response as it would for a 500 response.

      Note: The existence of the 503 status code does not imply that a
      server must use it when becoming overloaded. Some servers may wish
      to simply refuse the connection.

So, 503s are sent to clients when the server can't serve more requests, or when there are bandwidth or requests per second limits. In fact, some months ago we set some per-client bandwidth and connection limits, to allow fair usage of resources for all our users. Now we have raised the limits a bit, and we're keeping the access log monitored, trying to minimize "503" errors.

Hopefully this should eliminate all the "missing-pictures" problems. Shout if you still see broken pictures.
About avatars, it might be a bit trickier, since avatars are not served from static.myopera.com, so it cannot be the same problem. So, is anyone in the community able to reproduce the "default-avatar-missing" problem with any browser?