Can Linux cope with 24 Hours of Happy?

I enjoyed Pharrell Williams’ feel-good songs in ‘Despicable Me‘ and its sequel, ‘Despicable Me 2‘. ‘Happy‘, a very catchy ditty he wrote for the sequel, also features in the World’s first 24-hour-long music video, ‘24 Hours of Happy‘, shot in and around Los Angeles and released on 21 November last year. The song is played a total of 360 times over the duration of the video, each 4-minute take featuring a different person or persons dancing (improvised) along streets, in petrol stations, through Union Station, in a church, around a school, in a moving school bus, around a supermarket, in a bowling alley, and so on. Each 4-minute performance was filmed in one take using Steadicam, and the location at the end of each take segues into the next take. You see the sun rise; you see the bright sunlight of the morning and the warm sunlight of the afternoon; you see the sun set; you see the twinkling city lights at night. The concept is simple yet brilliant.

Clips from some of the takes were used to create the 4-minute official music video for ‘Happy’, so you can watch that on YouTube to get a flavour of the takes, although it does not do justice to the full video.

Williams appears in a different take every hour on the hour, and a few other takes have celebrity cameos, but the vast majority of the participants are unknown extras of all ages, races, shapes, sizes and looks. To quote Williams talking to the Los Angeles Times: “We wanted all humanity in there, not just the model-types you might expect.” Some are good dancers, others not so good. But they all have one thing in common: they’re having fun, so they look good. The joy is infectious, and I found myself watching far longer than I would have expected, having to return to the site again and again. Half the fun is watching the bystanders.

When you open the ’24 Hours of Happy’ site, the take that was in progress at the current time of day starts playing from the beginning. However, you can drag the pointer around the clock dial and watch any take from the 24-hour period. There are also buttons you can click on to jump between takes or to jump to each take featuring Williams. The yellow on-screen controls can be made to disappear by not moving the mouse pointer for 5 seconds.

Still from 24 Hours of Happy, showing on-screen controls

Still from 24 Hours of Happy, showing on-screen controls

The Web site is well-designed and fun to use, so I was not surprised it was voted ‘Site of the Month‘ and ‘Site of the Year Users’ Choice‘ by AWWWARDS, and voted ‘Site of the Month‘ and ‘Site of the Year‘ by TheFWA.

It’s impossible to list them all, but a few of my favourite takes are:

01:36  Very perky woman with ponytail.
05:28  Jogger who has to keep pulling his shorts up!
08:24  Woman on roller skates.
09:52  Very cute little girl.
09:56  Woman with some groovy moves.
10:40  Woman in Union Station. Some of the bystanders are particularly amusing.
11:16  Man with cast on foot.
11:20  Boy with an Afro.
11:36  Three groovy old ladies.
11:44  Chubby guy with style.
12:36  Woman with some groovy moves.
13:32  Dancing couple in pink.
14:20  Two cool guys in dinner jackets inside and outside Union Station.
15:00  Pharrell Williams in a church with a gospel choir.
19:04  Woman with a lizard puppet. The lizard does the lip-synching!
19:36  Guy on stilts.
23:40  Woman with LED hula hoop (love it!).

If you want to start viewing a take made at a specific time of day, you can append the time to the URL, like so:

http://24hoursofhappy.com/09h53am

Obviously I think ’24 Hours of Happy’ is fabulous, but why am I discussing it in a blog predominantly about Linux? Because Firefox 27.0.1 (32-bit) running in Windows 8.1 (64-bit) on my new Acer Aspire XC-600 micro-tower PC (dual-core Intel Pentium G2030 @ 3 GHz & 3 MB cache, 4 GB DDR3 RAM) handles ’24 Hours of Happy’ at 720p with ease, but the story is very different on my main laptop running 64-bit Gentoo Linux with KDE (quad-core Intel Core i7 720QM @ 933 MHz & 6 MB cache, 4 GB DDR3 RAM). Both machines are on my home network, connected to the Internet via high-bandwidth broadband (FTTC).

On my laptop, the latest available versions of Firefox (27.0) and Opera (12.16_p1860-r1) for Gentoo, both 64-bit, do not even complete loading the ’24 Hours of Happy’ site: the black progress bar at the bottom of the home page stops about 7/8th of the way across the page and the KDE Network Monitor widget shows there is no network activity. Clearing Firefox’s Web content cache or increasing the cache’s size to 1 GB make no difference. Konqueror 4.12.2 (configured to use the WebKit browser engine rather than the KHTML engine) loads the site and plays it quite well at 720p to start with, but eventually video becomes choppy and I notice a lot of spawned kio_http processes. The KDE Network Monitor widget shows a continuous 3600 Kib/s data stream, which does not stop when I exit Konqueror. Numerous kio_http processes are spawned and remain after I exit Konqueror, and the 3600 KiB/s activity on the network only ceases when I kill all the kio_http processes. The number of spawned kio_http processes increases if I drag the pointer around the clock to select different takes, and the page just displays ‘LOADING’ ad infinitum if I do this several times. To be fair, if I do this a lot in Firefox running in Windows 8.1, I can get Firefox to stall too. I thought I’d try a lightweight browser and installed NetSurf (3.0-r1), but that couldn’t even render the title on the home page, let alone begin to load the video.

So, does ’24 Hours of Happy’ play nicely in your Linux installation? If it does, what hardware, distribution, desktop environment, browser and quality (360p, 480p, 720p or 1080p) are you using?

‘Server not found’ by browser at launch

I haven’t had any significant Linux problems or new requirements in the last few months, hence no new posts here. My last real problem was back in June 2013 when I rolled my Gentoo installation to latest using Portage and found that, whenever I launched Firefox, it displayed the ‘Server not found’ page and I had to click ‘Try Again’, and then Firefox displayed the expected Web site. From then onwards, Firefox would work as expected until I exited the application. Thunderbird was also unable to access e-mail servers on the first attempt after it was launched. The same thing happened in Sabayon Linux when I rolled to latest using Entropy a couple of days later. Anyway, here is how I fixed the problem in both distributions.

First I used Wireshark to see what was going on, and it transpired that Gentoo (and Sabayon) was sending an IPv4 request followed quickly by an IPv6 request, but the reply to the IPv6 request was being received first and was a ‘server not found’ message since my ISP does not support IPv6 and my router apparently does not handle IPv6 requests correctly. Gentoo (and Sabayon) then used an IPv4 address when I clicked ‘Try Again’ in the browser window, and thereafter Firefox always dispayed the expected Web sites.

I should point out that IPv6 is enabled in the kernels I use and I’ve never before had to disable IPv6 in Firefox (or system-wide) on the affected laptops. So why the change in functionality, I wonder?

With Wireshark capturing packets, when I launched Firefox I was seeing a server failure message indicating “AAAA” (IPv6) instead of “A” (IPv4). To stop this happening I could have chosen any one of the three following solutions:

1. I could have used about:config in Firefox (and Config Editor in Thunderbird) to change the value of network.dns.disableIPv6 to true instead of false.

2. I could have disabled IPv6 system-wide by editing /etc/modprobe.d/aliases.conf and uncommenting the line “alias net-pf-10 off“.

3. I could have forced the getaddrinfo() function in glibc to make the IPv4 and IPv6 requests sequentially rather than in parallel.

Just for the fun of it I chose the third option on a couple of my laptops, and, as they use NetworkManager, this is how I did it:

fitzcarraldo@aspire5536 ~ $ su
Password:
aspire5536 fitzcarraldo # cat /etc/resolv.conf
# Generated by resolvconf
domain home
nameserver 192.168.1.254
aspire5536 fitzcarraldo # cd /etc/NetworkManager/dispatcher.d/
aspire5536 dispatcher.d # touch 06-dhclientoptions
aspire5536 dispatcher.d # nano 06-dhclientoptions
aspire5536 dispatcher.d # cat 06-dhclientoptions
#!/bin/bash
echo "options single-request" >> /etc/resolv.conf
aspire5536 dispatcher.d # chmod +x /etc/NetworkManager/dispatcher.d/06-dhclientoptions
aspire5536 dispatcher.d # # Now I disconnect then reconnect to the network
aspire5536 dispatcher.d # cat /etc/resolv.conf
# Generated by resolvconf
domain home
nameserver 192.168.1.254
options single-request
aspire5536 dispatcher.d #

As you can see above, I added a two-line Bash script 06-dhclientoptions in the directory /etc/NetworkManager/dispatcher.d/ that appends the line “options single-request” (without the quotes) to the contents of the file /etc/resolv.conf. The addition of the line “options single-request” in resolve.conf causes the getaddrinfo() function in glibc to make the IPv4 and IPv6 requests sequentially rather than in parallel. With this change, Firefox and Thunderbird no longer have a problem accessing the Internet the first time they are launched.

From “man 5 resolv.conf” under “options”:

single-request (since glibc 2.10)
sets RES_SNGLKUP in _res.options. By default, glibc performs IPv4 and IPv6 lookups in parallel since version 2.9. Some appliance DNS servers cannot handle these queries properly and make the requests time out. This option disables the behavior and makes glibc perform the IPv6 and IPv4 requests sequentially (at the cost of some slowdown of the resolving process).

single-request-reopen (since glibc 2.9)
The resolver uses the same socket for the A and AAAA requests. Some hardware mistakenly sends back only one reply. When that happens the client system will sit and wait for the second reply. Turning this option on changes this behavior so that if two requests from the same port are not handled correctly it will close the socket and open a new one before sending the second request.

I had to use NetworkManagerDispatcher to add the line “options single-request” to /etc/resolv.conf because NetworkManager overwrites /etc/resolv.conf if you edit it manually.

UPDATE (February 4, 2014): As I have recently seen the line “options single-request” occurring more than once in the file /etc/resolv.conf I now recommend /etc/NetworkManager/dispatcher.d/06-dhclientoptions consists of the following:

#!/bin/bash
if grep -q "options single-request" /etc/resolv.conf; then
    exit
else
    echo "options single-request" >> /etc/resolv.conf
fi

Let’s hear it for Konqueror

My browser of choice on the desktop has been Firefox for many years. Firefox uses the Gecko rendering engine. As a backup Web browser I use Konqueror but configured to use WebKit, rather than KHTML, as the rendering engine. I’ve tried Chromium, Opera, Midori, rekonq, SeaMonkey and a bunch of others, but always found them lacking in some way in comparison to Firefox (I find Opera Mobile better than Firefox for Android on my mobile phone, though).

However, Firefox sometimes lets me down. For example, some months ago I wanted to book tickets online for a concert but Firefox would not display the seat map correctly, stopping me from being able to select seats. Konqueror saved the day. And, recently, Firefox no longer displays the video component of trailers on Rotten Tomatoes; only audio works. Firefox correctly plays videos from virtually all other sites I visit (YouTube, IMDb, iTunes Trailers, Vimeo, eTelegraph etc.) so why the sudden inability to display Rotten Tomatoes trailers? Today Firefox wouldn’t play a product video on an Amazon page either. So I launched Konqueror and it can play Rotten Tomatoes trailers and the Amazon video. What gives? They are both running on the same laptop in the same OS (Gentoo Linux) and desktop environment (KDE), using the same version of Flash, the same video driver etc. The only thing I can think of is that the Firefox rendering engine Gecko is the culprit. I assume WebKit in Konqueror is more capable than Gecko, although I don’t know enough to be certain that Gecko is the cause of the problem.

Anyway, if you want to configure Konqueror to use the WebKit rendering engine instead of the KHTML rendering engine, click on ‘Settings’ on the Konqueror menu bar, select ‘Configure Konqueror…’ and click on ‘General’. You’ll see ‘Default web browser engine’ in the right pane. Select WebKit and click ‘OK’. You’ll also need to have WebKit itself installed, of course. I have the packages qt-webkit (the WebKit module for the Qt toolkit) and kwebkitpart (a WebKit KPart for Konqueror) installed.

AirDroid, a handy Android app for managing your phone from Linux

AirDroid

In a previous article I explained how I installed and used the Windows application MyPhoneExplorer in WINE to manage the phone book (contacts list) in my HTC Desire mobile phone. Well, today I found out about AirDroid, a clever and useful Android application that can do the same thing, as well as the other tasks that MyPhoneExplorer can do, such as transfer files between my laptop and my phone, typing SMS on the laptop to send from the phone, and so on.

Last week I bought a Samsung Galaxy Note II and I needed to transfer a lot of large PDF files from my laptop to the new phone. Now, with my HTC Desire I could simply connect the phone to my laptop with a USB cable, mount the phone in KDE as a storage device, and drag the files across from one Dolphin file manager window to another. But the Samsung phone uses MTP for file transfers and, when the phone is connected to my laptop with a USB cable I can browse the phone’s file directories in Dolphin, but I cannot copy files from the laptop to the phone. Applications that use MTP for file transfer do exist for Windows and OS X (in fact Samsung provides Kies for this purpose), but my laptop runs Linux. I had not got around to installing the latest version (1.8.4) of MyPhoneExplorer to check if it works with the HTC Desire, let alone with a Samsung phone. So I searched the Web to see if there was a Linux application that uses MTP for general file transfer (i.e. not one of the dedicated music players in Linux that do support MTP for transferring music files only).

And that is how I learned about AirDroid, which allows you to “wirelessly manage your Android from your favourite browser.” The AirDroid Web site and the Android Play Store page for AirDroid explain the features of the application and both have a video showing it in operation.

From the AirDroid Web site:

What is AirDroid?

AirDroid is a fast, free app that lets you wirelessly manage & control your Android devices (phone & tablet) from a web browser. It’s designed with the vision to bridge the gap between your Android device and web browser, on desktop computers or tablet devices, on Windows, Mac/iOS, or Linux.

What can I do with AirDroid?

You can use AirDroid to send/receive SMS (text messages, if supported by the device), install/uninstall apps, transfer files between Android device and computer/tablet, and manage contacts, photos, music, videos, and ringtones, etc., all in a web browser. Install AirDroid on your Android device and open your favorite web browser to experience it yourself.

I immediately used Play Store on my phone to install AirDroid. I launched AirDroid, launched Firefox on my laptop and opened http://web.airdroid.com/, and was able to connect the laptop and phone quickly and easily. I block-selected the eighty files in the Dolphin window that I wanted to copy to the phone and dragged them to the phone’s Download directory window in the Firefox window. One by one the files were copied to the phone, with a little progress bar against each one. However, for some reason a few of the files were not copied so I dragged those across individually after the copying of the others had completed.

AirDroid in Firefox on my laptop

AirDroid in Firefox on my laptop

The above snapshot of my laptop’s screen shows the AirDroid desktop inside the maximised Firefox window. The window with the yellow folder icons inside it is actually an AirDroid window which I opened by clicking on the blue folder named ‘Files’ on the left side of the AirDroid desktop. These windows can be dragged around the AirDroid desktop in the browser window, and can even be resized.

A connection problem, and a solution

When I tried to connect the phone and laptop again later, an error message was displayed in the browser window on the laptop:

Failed to connect. Make sure your device is connected to a same WiFi network.

I was sure that the two devices were on the same WiFi network but, no matter what I tried, I could not get the laptop and phone to connect again. I looked through the AirDroid forums and found a thread indicating that this is a common problem.

Some users who posted in that thread were able to connect after they disabled the firewall on the PC, and others were able to connect by deleting the cookies in the browser. However, I think the fundamental cause of the problem is IPTables in Android Jelly Bean (see this comment). Anyway, taking all these factors into consideration, here is the way I got around the problem when it occurred:

On the laptop

1. Make sure the firewall is disabled.

As I use UFW on my laptop, all I need to do is:

# ufw disable

2. Launch Firefox and delete all cookies.

3. Open http://web.airdroid.com/

On the phone

1. Power down the phone, then power it up again.

2. Disable ‘Mobile data’ so that the phone cannot connect to the Internet via the mobile network, only via WiFi.

3. Enable WiFi.

4. Launch AirDroid.

From then on use AirDroid as usual, i.e. click on ‘Start’ and then either click on the camera icon and point the camera at the QR Code on the AirDroid page in the brower window or type the 6-character passcode displayed on the phone in the passcode box in the browser window and click ‘Login’.

That’s it!

AirDroid is a novel and useful application that now enables me to manage my Android phone from within Linux without needing to use WINE. Nice! :-)

(My thanks to Gentoo Forums user Q-collective in the thread [Workaround] Syncing Galaxy S3: What mediaplayer is capable? for mentioning AirDroid, otherwise I would never have known about it.)

EDIT November 5, 2012: I have used AirDroid on my home network and a public network, both using DHCP, not static IP addresses. I think AirDroid does not work if you use static IP addressing, so if you still run into trouble after following all the steps listed above, also check if you have a static IP address specified in the phone and router, and set them to use dynamic IP addressing instead.

EDIT November 26, 2012: Apparently some people — even those using static IP addresses — can get AirDroid working in their home network simply by rebooting their home router, so that’s something else you could try.

Follow

Get every new post delivered to your Inbox.

Join 43 other followers