Current Category: Tech Blog

« previous page  |  home
XING-uptime-average

XING is fully available 99.85% of the time.

It happens pretty rarely, but sometimes our platform is affected too by operational faults and malfunctions. Of course we try to keep these hiccups to an absolute minimum. Our content is stored and supplied from two different data processing centers for instance, which means that our users can be re-routed from one to the other dependently on demand and performance.  All systems have a failover cluster operation guaranteeing high performance and stability, as well as having sufficient reserves to cope better with peak loads. Making sure our platform is both available and fast is our number one priority.

Sometimes though, like last Wednesday’s morning for instance, we do encounter unforeseen problems. There isn’t an IT system anywhere that is 100% fault-tolerant – there will always be systematic single points of failure that will send part or all of the entire system crashing with them. In this latest case a defect network component corrupted a mechanism, which was specifically required to safeguard against failure (Spanning Tree Protocol). We will be analyzing and intercepting this error to make sure it doesn’t crop up again. (more…)

 Susanne Reppin (left) and Dr. Johannes Mainusch on the wjax stage.

Susanne Reppin (left) and Dr. Johannes Mainusch on the wjax stage.

Just how agile is XING? How agilely do we feel? At this year’s w-jax 09, Johannes Mainusch and myself talked openly about the XING culture, what kind of people we are, what we’re aiming for and what’s important to us. XING releases weekly updates on the platform, innovating therefore all the time during ongoing operation of the platform. We don’t want to have to put a halt to anything, and not when it comes to agile software development either.

XING already develops projects effectively using Scrum (see also Scrum @ XING – a case study). Alongside this, we’ve been working for nine months to put Kanban in place for one our maintenance teams – as both a methodology and philosophy. The initial idea for this came from Ralf Wirdemann, who’s an agile coach. Selecting Kanban fits in with our belief in agile and lean software development and to drive this forward in the future. (more…)

Just to make it perfectly clear from the outset: There is no virus on the XING platform, nor is there any code that might be damaging to your computer. Under certain – very specific – circumstances, you might find though that your virus scanner sets off a false alarm if it hasn’t been updated for a long time.

The reason: A module we have developed ourselves that serves to load files in a browser once the page itself has already been loaded. This is useful because it means we don’t have to send all functionalities and graphics that might possibly be used through the network at once for every page accessed, which saves you a lot of time waiting for pages to load. If you then decide to use a feature or function that isn’t yet loaded – such as the photo upload in your profile, this small additional feature can then be loaded separately.

The browser feature that our module accesses posed a security loopholes in earlier versions of Internet Explorer. You can read more about this here: Microsoft Internet Explorer onreadystatechange Memory Corruption Vulnerability.

The good news is that Microsoft solved this problem in their own browser some time ago. (It might be worth you visiting windowsupdate.com to make sure your operating system and Internet Explorer are both fully up-to-date.)

If you use an outdated version of the virus scanner F-Secure though, which has not received an update since the removal of the security loophole in Internet Explorer, it will show you a false alarm if you use the Microsoft browser. (more…)

Timothy Payton

Timothy Payton on 27.10.2009 at 16:55h CET

There are many html forms on XING – when you sign up, when you write a message, or when you discuss in a group. We do most of our form validations on the server side. This allows us to apply complex validations, prevents code duplication, and apply security checks.

This works well – you define the requirements for the specific field (such as <input>) and Rails returns the page with an error message, also highlighting the corresponding field in red. Sounds good, but that’s actually where the problem is. Rails surrounds the field with a <div> that is styled via CSS. (more…)

As you probably know, boolean values in software systems represent the states “true” or “false”. For some use cases in a software application, you may need a lot of them.

To give you a very simplified example, imagine a form where the user can check which languages he or she speaks:

XING_FlagShihTzu_boolean_selection

(more…)

Anyone logging in to the application section with Internet Explorer 6 (IE6) will now be asked to update their browser. Here are a few thoughts on this from me:

The logo from "IE6 must die!"

The logo from "IE6 must die!"

Oh, how we would love to shout: “IE6 must die!”. (Did you hear about the twitter movement? Or about this action from more than 70 websites?) Oh, how we would like to make our platform available in black and white to all Internet Explorer users (for the small proportion of the online world who remember the changeover from black and white TV to color…). But alas this is a helpless battle of the honorable Web Don Quixotes against the electronic windmills of the great multinationals of this world.

Why all this fluster you may ask? Here’s the reason: (more…)

It won’t surprise you that one of our key efforts is reducing the workload that the platform puts on your and our machines. The introduction of OpenSocial applications increased the challenge – the applications are hosted on different machines (with their own performance issues), and we integrated them via iFrames, on the front page, on the profile page and in what we call the canvas view.

So, at the moment, you might have several iFrames on your start page. An elegant solution, except for the heavy load they put on your browser – the extreme case, Internet Explorer, requires up to 8 Megabyte of RAM for each rendered iFrame. Furthermore, as the front and profile page often extends vertically way beyond the viewport. But still we have to render the content in iFrames you might not even see.

Wait. Do we have to do that? (more…)

Search is a big issue here at XING. Each day, we are processing numerous search queries, spread across events, jobs, company profiles and user search. For such a high search volume, you need rock solid technology that you can trust. For the last two and a half years, this technology has been Ferret.

Why we chose Ferret initally

Ferret was introduced when we needed a search service for XING Jobs, which was the first part of our application using the Ruby on Rails framework. At that time, Ferret was just right. As it is written in super fast C code, it became  first choice when it comes to performance. But it is also partly written in Ruby, which allowed us to write the analyzer, query parser and tokenizer in our favorite language (oh the joy!). Ferret has served us very well until now. (more…)

At our weekly frontend engineering meeting, I recently held a presentation about a common problem with the Internet Explorer that developers should put more attention on: memory leaks due to its two distinct garbage collectors. And: how to avoid them. So, have some <insert favourite food to be consumed while being attentive /> and don’t forget to imagine the other attendee’s chuckles now and then although there’s no Chuck Norris joke.

by Ingo Chao and Christopher Blum

Our start page after logging in got faster. It takes significantly less time until the user can interact with the application. (more…)

« previous page  |  home