2015-03-24T19:45:02+01:00I got a new Macbook Air a year ago. In the weeks I spent setting it up as my main work machine I made the deliberate decision not to install Flash. I figured I would hit a case where it became clear I needed Flash. A year later and I still don't have Flash installed. Flash is no longer an essential plugin on the desktop/laptop Web. It is non-existent on mobile. It is no longer the default way to consume video on the Web. It didn't use to be that way, and I'm surprised how far Flash has fallen into irrelevance so quickly. For a long time, Flash had better support in browsers than CSS. SVG paled in comparison even in the realm of vector graphics. Flash's control of the web looked impregnable. How do you take on an immovable behemoth? It starts with a single blog post rant. Flash's failure on mobile The rise of mobile in the form of smartphones and tablets came with the declaration that Flash was not a welcome participant. Coinciding with the launch of the Apple iPad, in a rare Steve Jobs blog post Apple announced that Flash would not be allowed on iOS. The fallout from that decision destroyed Flash's incontestable ubiquity. This was a business decision on the long-term viability of Flash on platforms with performance and battery-life are primary concerns. In a world where Adobe pushed hard to make Flash all things for all people it went too far, every step making it less viable to the fast-approaching lower-spec mobile platforms. In effect, this was a declaration of no confidence in Flash, and in Adobe. Inside of a year there was no recognisable trace of Flash left in Android either. The days where Flash was a deal-breaker feature was over. Similar to Java retreating from the browser and emerging as a viable server-side platform, Flash tried recasting itself into the platform of choice for developing native mobile apps. But today Flash is fading into obscurity from even that avenue. Flash's reversal on the desktop In the desktop/laptop Web Flash has lost the prominence it once had. The binary Flash plugin is no longer an essential part of the Web browsing experience. Flash grew as a sandboxed environment inside the browser page to deliver rich content and engaging interactivity and cutting edge user interface. It prided itself as being a platform for building Web applications that couldn't be built with HTML and CSS. Scrollable and zoomable maps, playing video clips, animating vector graphics, playing games, streaming content. Flash enabled all that. But it was video-on-demand that became Flash's killer feature. The single page app didn't take off (unfortunately loading pages did, much to the disgust of visitor advocates). Over time, Flash was gaining a bad reputation for security issues and as a performance hog. Apple was critical of Flash and took the step into pushing the Flash runtime into a separate process so as to allow it's Safari browser to continue serving up web pages and continue being responsive. By separating processes it made Flash's performance issues more visible and measurable. Google Chrome dealt Adobe a blow by developing PepperFlash as an Adobe Flash runtime replacement. It is not as fully-featured as Adobe's flagship product, but on today's Web mostly about video, video-on-demand and live-streaming, Chrome's alternative is perfectly adequate. Even SVG has better out of the box support than Flash in browsers today. Flash trounced SVG in developer mindshare, and now it is SVG that survives and flourishes in the age of improved user-experience on both the Web and User interfaces. SVG has the last-ability Flash could only dream of, tackling user experience polish that Flash was primarily designed to enable. Flash losing video-on-demand Adobe turned Flash into the ubiquitous runtime for supporting cross-platform video-on-demand. The MPAA's (Motion Picture Association of America) insistence on DRM in principle, but no particular implementation created a headache Flash cured. Flash supported the mainstream DRM systems and thus became indispensable for vide[...]
I picked up a Toshiba NB300-108 for just under £70 on an ebay auction a few weeks ago, and decided to clean install Ubuntu 12.04. True to form Ubuntu installed flawlessly. But, there was one annoying problem. It took about 5 to 7 minutes to boot.
It’s taken a couple of days of hacking around, trashing Ubuntu and re-installing it, but I’ve gotten to the bottom of the issue. Most of the 5 minute boot sequence seems to be the laptop just sitting there waiting for something to happen, there’s only a tiny amount of disk activity going on.
The first step is to figure out why the boot process is so slow. So in a Terminal, run
dmesg which displays a timestamped log of each subsystem initialising. The timestamp counts the number of seconds from power on. Looking through this list I saw a huge leap in seconds (about 350 seconds), and that line said:
[ 352.885250] ADDRCONF(NETDEV_UP): eth0: link is not ready
Turns out Ubuntu can’t quite deal with the Ethernet card (possibly a Realtek network module). Opening the “Connection Information” in the Network menu (top right icon of up-and-down arrows) identifies the network card driver as
The solution turns out to delay the initialisation of the Ethernet card, removing it from the boot sequence and adding it to the rc.d initialisation. Here’s how to do that:
First we blacklist the card from the early boot initialisation steps (all on one line):
echo "blacklist r8169" | sudo tee /etc/modprobe.d/blacklist-ethernet.conf
Second step is initialising it by editing
/etc/rc.local and adding in
modprobe r8169 just before the
exit 0 line:
modprobe r8169 exit 0
Thirdly we need to rebuild the boot image to take into account the newly added blacklist item, so run the following:
sudo dpkg-reconfigure linux-image-$(uname -r)
Once that is done, reboot the laptop.
For me that reduced the boot time to 38 seconds, so a reduction of about 90%. There’s still a couple more seconds to be saved by disabling the ipv6 and parallel port support, but that’s for a rainy day.