Eighth week: static Qt, pizookie & American football

published on December 6, 2011


This week, I finally got around to reporting an issue that has been bothering me for a long time on Facebook. In fact, it’s the reason I initially refused to register at Facebook (after I was finally convinced I’d sign up for my first social network site ever): my e-mail address was being refused. It appears that e-mail addresses of the form mail@domain.tld are simply refused, because this is typically a spamtrap. Since Facebook obviously doesn’t want its emails to be marked as spam, they’re very cautious to not send e-mails to these kinds of addresses, even if users attempt to register with such addresses.

Unfortunately, it means that an out-of-band verification system is necessary, such as adding a DNS CNAME record or adding a file to your domain’s root with a specific filename (which is what e.g. Google Webmaster Tools requires). Fortunately, I found at leat one other Facebook employee who wants to see this happen. Now I only need to find the time to implement it…

“My cousin ain’t your cousin”

A friend also reported the incorrect translation for “cousin” and “nephew” in the Dutch version of Facebook. The problem is that there’s apparently a big semantical difference between Dutch and English.

In English, a “nephew” is a daughter or son of a sibling or a sibling-in-law, and a cousin is everything else. In Dutch, there is a distinction within English’s “cousin”, of which one half is merged with English’s “nephew”.

So it kind of looks like this: there are three possible cases, A, B, C.
In English, “nephew” = (A), “cousin” = (B, C), but in Dutch “nephew = (A,B), “cousin” = (C).

The problem is that Facebook’s current internal family relationship model does not provide enough granularity yet for the Dutch interpretation. Since I haven’t seen other reports, I presume this is an issue for Dutch only. So it may take some time for this to get fixed, since it only affects so few users, and would require translation updates for every other language as well.

Translating is almost never as simple as it looks!


On Thursday, I had another one-on-one with my manager. I didn’t have much to say because we already had a one-on-one on Monday (so this one was only about 3.5 days worth of work), but he was still satisfied with my progress — despite me focusing on my intern project again and handling few other tasks. Hurray! :)

He also told me about the “intern calibration”1 and apparently his expectations were much higher than most intern mentors’. This gave me renewed hope to not be an impostor: obviously I was very glad and relieved to hear this — once again, I’d not been satisfied with my progress over the past few weeks.

Then I told him I’d been working shorter days these past few weeks: leaving my place at 9:00, arriving back home at 20:00. I felt much more effective at work and felt generally better, too. Both physically and emotionally: a work, sleep, work cycle sucks the life out of you if you don’t have a family or girlfriend to come home to. At least, that’s how I feel. This was not a problem at all.

During the first five weeks, I’d been departing at 7:40 and getting back at 21:30, because I wanted to ramp up as fast as possible: I can’t stand being unproductive, so I worked as many hours as I could to become less overwhelmingly overwhelmed as soon as possible. He thinks my good performance is in no small part attributable to the fact that I worked so hard during the first five weeks: this has helped me get up to speed much faster, and thus being more productive overall.
I’m glad the time I put in was not in vain.

Statically linking Qt

During this week, I also started the work on getting Qt in Facebook’s “third-party” repository, so I could build my project against it.

Facebook uses statically linked builds of all applications they deploy (as do other companies with thousands of servers, I imagine), because that prevents dependency problems: not every server may be running the exact same version of the exact same operating system (even though they’re all GNU/Linux), and thus not the same libraries, which may cause problems when using dynamic linking.

Now, Facebook goes fairly far in this: they even statically link glibc and stdlibc++. That really prevents any problems (as far as my limited knowledge about linking and code portability tells me, at least).

If you’re a programmer, you’ll know that statically linked builds are dog slow in comparison with dynamically linked builds. Hence Facebook keeps builds of all static libraries they use in a git repository.

So I not only had to get in the Qt source code, but also a correctly statically built Qt 2, stripped of all modules that were of no use (only QtCore, QtSql and QtTest were kept) and useless features (X11 integration etc.). It had to be linked to Facebook’s static zlib build, too.

Once this statically linked Qt will be in place, I will be able to start the integration with some of Facebook’s internal tools and infrastructure, so that people will be able to start using my work! :)

Pizookie & American football

This week was also the last week for some of the fall interns, so on Friday evening there was a party, which was a lot of fun!

And last but not least, on Sunday there was the last intern event: a San Francisco 49’ers football game. Before the game, we went to BJ’s. There we had pizza for brunch (which coincidentally also was my breakfast). As desert, we had pizookies. Very yummy, but also heavy!

Pizookie: pizza-shaped cookie

Friends will know I generally hate mass sports events when it’s all about cheering for one particular player or team. For that reason, I tend to ridicule soccer, for example.
Well, I now think soccer is super fascinating in comparison with American football. This truly is a ridiculous sport. The game itself only takes one hour, but due to the many interruptions (during which the game clock is paused), it usually takes about 3.5 hours. Soccer: 90 minutes or more of real action.
1—0 for soccer.

In soccer, the same 11 players remain on the field during the whole game (plus some player swaps). In American football, there are 11 players when the team is on the offense and another 11 players when they’re defending. Really. Less than 50% of the physical strength necessary. 2—0.

While players may walk about the field from time to time in soccer, it happens most of the time in American football: 3—10 seconds of action (I’d say the average is 5 seconds) and then the clock is paused a strategy for the next move is devised.

American football has cheerleaders. This is the only aspect that kept me awake during the first 1.5 hour or so. Contrary to the many American movies in which their athletics are portraited as amazing, they’re actually just repeating the same boring dance moves over and over again. The only slightly impressive thing is how high they can throw their legs. They’re out of sync, don’t do human pyramids, don’t perform acts together; they’re just repeating the same dance moves over and over again in rows.

So I almost fell asleep several times. 5—0.

The guy in front of me was watching Harry Potter on his smartphone. 5—1.

I missed the most exciting point in the game because I started playing a game on my iPhone for the first time in over two months: Tiny Wings. That game was a lot of fun.

Football: San Francisco vs. Arizona

When I get back to Belgium, I’ll definitely go to a soccer match to compare. I sincerely hope it’s less crappy than this nonsense.

  1. This is where the managers rank interns, to help determine which interns will get an offer at the end of the ride. ↩︎

  2. Fellow students will remember a project a few years ago where we were required to submit static builds of (Qt-based) projects. Nobody succeeded in doing so… ↩︎


David Jennes's picture
David Jennes

Static build of Qt, sounds like a nightmare :-P