Category Archives: Software

Native applications are the new future?

Internet services are more and more complimenting their service with native applications. The rise of the Iphone — including derivatives like the Ipod Touch and Ipad — and Apple’s appstore have boosted the availability of internet connected native applications. Applications to read news stories on newyorktimes.com or Twitter clients to keep everyone updated on your life.

A bit of history
Computing more or less started with the mainframe era. Mainframes were the primary computing unit and users accessed the mainframe using dumb terminals.
In the 80s and rise of Microsoft Windows and personal computers the paradigm changed to standalone usage. Individual computers were islands only connected through floppy disks. Next came the rise of computer networks. Companies connected computers together. These computers used servers to store and retrieve information. The era of client – server computing was born.
When the internet gained popularity and became mainstream with the invention of the worldwide web another paradigm shift took place. Computing moved to the web and using sophisticated — but standard — web browser software personal computers could access information on the internet. The new trend was to move all applications to the web. The web would offer a standard and uniform way to interact with applications.

Ipod, Iphone, Kindle, Evernote
And then another thing happened. A myriad of special purpose devices were created. Devices like the Ipod to listen to music, smartphones to connect to both the online and offline world and ebook readers to read your books. And all of these devices have one thing in common. That is that they use the internet as part of their content delivery network. Ipod are loaded with music through iTunes and iTunes loads its music from the internet. Smartphones access emails and twitters from the internet and ebooks get their books using online bookstores.
But these devices also have in common that they do not use a web browser. Some, if not most, of them are capable of running it but they use native applications for their primary use cases.

During this time I also see this trend translate to internet services who use personal computers as their primary platform. Services like Evernote and Kindle offer native applications for the personal computer. These services think they can offer a better service to their users this way. The reasons vary from a more powerful user experience to offline usage of the service.

Google Gears and Adobe Air
Companies like Adobe and Google have recognized this need and developed their own solutions. Adobe developed Adobe Air. Software to develop and run flash applications as a standalone application on the desktop. And Google created Gears to use web applications without an internet connection. Gears has not been a great success. The adoption rate beyond a few Google applications is zero. The result off Adobe Air is still in the air so to speak. There are 900 applications available through Adobe Air’s website. The availability on Android will boost its adoption. But there are two reasons why I do not think it will happen. First is the user interface which looks alien on any platform and the second is that it is a standard controlled by a company. Eventually this always leads to failure.

Trend to offer a more powerful user experience using native applications
I see a definite trend to offer next to an internet service a native application experience on individual platforms including personal computers. Even HTML5 cannot change that. There are so many advantages for native applications in specific use cases and companies start to recognize that web is not the end of all others. The web is great for general purpose applications and will never go away. But for specific use cases native applications are back. And the internet plays the role of content store and content delivery network.

Why AI is hard

Artificial intelligence was one of the first buzzwords I can remember from the previous century. It promised a future with intelligent computers or devices which could understand you and act autonomously.

Up until now we still do not use AI-enabled devices in our daily life. Why is that?

Our brain has 10 billion brain cells. Each brain cell has 10.000 connections to other brain cells. Neurons activate pathways to brain cells. The activation of brain cells along those path pass along the message of the neuron to other brain cells. Some pathways end and the message is not forwarded. The combination of brain cells and pathways between brain cells is how the brain processes and stores information.

To make AI happen we should be at least be able to mimic the brain cells and pathways functions. There are two options available; hardware and software emulation.

You could compare the brain (without memory) with a CPU. Current top-of-the-line computer processors contain 2-3 billion transistors. That comes close but each transistor has only a few pathways and is in the end only a transistor. If you would emulate the pathways the current CPU need to contain at least 50.000 more transistors than they today. Based on the Moore’s law (CPU transistor count doubles every 2 years) we can have to wait until 2025 to get to this point.

From a memory perspective you need to store the values of each of the pathways of the brain cells. This would require 10B * 10k * 1 byte = ~90TB of data. The biggest individual memory units currently available are 12GB. Applying the law of Moore again and we reach 90TB memory units in 2023.

With current technology we are able to emulate the brain function of an insect. Hence you see all those insect-like autonomous robots.

Based on these calculations it looks major progress can be made in AI in 15 years from now because the necessary computer hardware is available to be able to emulate the brain functions. Of course emulation is only the first step. The emulated brain also needs to be programmed to work. Much like any brain is programmed before birth.

Picture by toad(Creative Commons Attribution-Share Alike 2.0 Generic)

Why Ubuntu never works (and how an ideal Linux distribution should look like)

I like the work Ubuntu is doing for Linux and they initiated some interesting advancements for desktop Linux. The problem is that I never recommend Ubuntu to anyone. The reason is that although their product is easy to use there is also always something wrong with any Ubuntu release. Because they move so fast they do not have enough time to properly test and validate the releases they make. For this reason they invented Ubuntu LTS but this version is outdated after 6 months due to lack of hardware support. It only receives security fixes. Both version are not ideal. And for this reason I could not recommend them to anyone.

The question is what are the requirements for a great desktop Linux distribution. From the point of view of the user the ideal Linux distribution should:

  • be easy to use
  • works on every computer reliably
  • looks great
  • have the latest stable versions of all user applications (OpenOffice, Firefox)
  • includes all available hardware drivers
There is also another important group which have specific requirements for desktop Linux distributions. These are the ISVs. Their requirements are:
  • stable software support environment (APIs, libraries, filesystem layout)
  • bug free software environment (to avoid support issues related to the Linux distribution)

When you combine the requirements of these two groups I can only conclude that Ubuntu is just not there yet and never will be with their current product scheme; regular Ubuntu and Ubuntu LTS.

Other Linux distributions have similar schemes as Ubuntu like for instance Fedora Core. And Fedora Core suffers from the same flaws as Ubuntu does.

One exception from my point of view is Red Hat Enterprise Linux Desktop (or derivates like CentOS). Their approach although not perfect is better. In short their approach is to:
  • provide stable software environment (same kernel, support libraries, APIs and filesystem layout)
  • backport of new hardware drivers to support new hardware
  • regular rebase of user applications to latest stable version (OpenOffice, Firefox)

Their approach is not perfect because they only backport a subset of all new hardware drivers. This is probably due to effort involved and incompatibilities in the kernel ABI between kernel versions. Moreover their rebasing does not happen enough to which extend their Linux distribution is always at least 1 version behind the latest stable version.

The ideal Linux distribution should fullfill all requirements of both users as ISVs. No Linux distribution does this. One of the major challenges is the backporting of hardware drivers. The reason that backporting is necessary is due to the fact that Linux has a monolithic kernel design. It should be better when hardware vendors could just make one or two versions of their drivers and with that support all Linux distributions.

This would elimnate the need to backport hardware drivers to support new hardware on a stable platform and at the same time makes it possible for bleeding edge Linux distributions to move to a stable platform.

But this would require a complete different mindset of the Linux kernel developers. Based on the discussions regarding this topic I would not hold my breath for the near future that this is possible.

For anyone doubting the necessity of separated hardware drivers I can only point to the efforts of AMD/ATI and NVidia to support binary drivers on a wide range of Linux versions. Their drivers are always behind the capabilities of Windows and notoriously unstable. Their open source counterparts are not much better and are still in their infancy after years of development.

Without solving the issues with the current Linux distributions desktop Linux will never gain traction and reach its full potential. Desktop Linux will only succeed when it can meet the requirements from both users as ISVs. Users want a reliable and stable OS combined with great hardware support and the latest stable versions of their favourite software. ISVs need to be able to target and support a stable platform. Current Linux distributions are moving targets or do not support the latest hardware or applications. This needs to be resolved. One major improvement would be the separation of hardware drivers from the kernel. I can only hope this will happen and at that moment desktop Linux has a bright future.

Picture by trekkyandy (Creative Commons Attribution-Share Alike 2.0 Generic)

I missed you buddy

esheep
Long time ago on my WIndows 95 desktop I used to have a little sheep running around. I loved the damn thing. Although he was quite annoying at times.

And now I found out he still out there! Meet esheep or xsheep (for Linux)!

Go to Windows version or Linux version

Dutch tax department supports Linux

Very impressive! The Dutch Tax department supports Linux. They publish the income tax return software for Windows, Mac and Linux. It even includes a fancy installer and it shows up in my Gnome menu under category office.

For more information see the website of the Belastingdienst.

screenshot

MythTV

This Christmas I had planned a very special project for myself. I was going to replace my Philips HD-recorder with something more elaborate and useful. A long time ago I read about Tivo in a computer-magazine. And it instantly hit me that this was the ultimate TV-recording device. At least as long there is no useful high quality video ondemand functionality available. And I was not alone and the last couple of years several open source projects have sprung up which offer a digital videorecorder running on Linux. And I was going to build one of them using: MythTV!!

Why MythTV?

The main requirements for building my own digital videorecorder was the lack of show management with my Philips videorecorder. The user interface of this recorder is so sparse that it is no more than a digital incarnations of my previous Sony VHS recorder. With the only benefit that it could store way more shows and you can instantly select the show you want to see. But programming is painfully slow. And to be honest is quite dumb. In contrast MythTV is refreshingly smart. Smart because it can:

  • find and record shows based on their title and not a specific air time. So if the broadcaster decides to air the show a few minutes later or earlier MythTV will record it anyway.
  • find and record shows based on their category (eg. movies), description or cast.
  • give you complete control on when the show is recorded. It can record a show whenever it airs on a specific channel or across all channels.
  • give you complete control on saving shows. You can determine how many shows are stored and automatically delete older shows.
  • supports any number of TV tuners you can build into your system. If you want to record 3 shows at the same time, you can if you insert 3 TV tuners in your system.
  • mix multiple types of TV capture cards. You can mix regular analog cable with digital formats like DVB-C, DVB-T or DVB-s — in order digital cable-TV, over-the-air or satellite.
  • Program you videorecorder using your TV or via a webbrowser on the other side of the world if you want to. It even sports a nifty WAP interface for your mobile.
  • Plug in different recording backends with different playback frontends. You can place a box in the US and watch your recordings on your laptop in The Netherlands.

And the list goes on and on. Just imagine that you can automatically convert your shows for your ipod with the commercial breaks automatically deleted and upload them to your ipod through Itunes.

This is the reason I chose MythTV. Because it can do just that and more. It makes my Philips digital videorecorder look pale in comparison and I have not found a commercial offering with this kind of feature set anywhere — with exception of the Tivo which is unavailable — and unusable I might add — outside the US.

Hardware

It starts with the decision and purchasing of the necessary hardware. This is the list of components I selected to build my digital videorecorder:

  • CPU: Intel Core 2 Duo E4600
  • Memory: 1GB
  • Harddrives: 2 * 80GB Western Digital (combined RAID-1 for the OS), 500GB Western Digital (for recordings)
  • Motherboard: Intel Desktop Board D945GCNL
  • Case: Coolermaster Centurion 5 (my current favorite case) with Coolermaster ExtermePower 380W PSU
  • Capture cards: Hauppauge PVR-150 and Hauppauge PVR-500 (dual tuner capture card)

The decision for this list of hardware was a trade off between price & quality. I like the quality of the components from these manufacturers but it is not top of the line to keep the cost down. And it is simply not necessary to have more horsepower.

For some time now I make a habit out of running the Operating Systems under software RAID-1 for 100% reliability. And since harddisks come cheap nowadays and have more than ample room to hold the Operating System it is for me a no-brainer.

Software

In general I run CentOS as my Operating System of choice. It is a 100% binary-compatible clone of Red Hat Enterprise Linux build from the source RPMs made available by Red Hat. But for this project CentOS would not be a good choice. MythTV needs bleeding edge packages like FFMPEG which are not available under CentOS. Though I could opt for adding external repositories to CentOS to take in these packages my experience is that hurts the stability and maintainability of the system since you are upgrading or moving away from set of core components of CentOS. In these circumstances I rather choose a Linux distribution which comes with the right set of packages including MythTV itself.

There are several dedicated MythTV distributions implemented as deratives of existing distributions like Mythdora (based on Fedora), KnoppMyth (based on Knoppix) or Mythbuntu (based on Ubuntu). But I decided to go for Ubuntu and to be specific Ubuntu Server 7.10.

It installed without problems on the aforementioned hardware and the installation was a breeze. It comes with the latest stable versions of MythTV and all kernel drivers for the Hauppauge capture cards. The only item I manually upgraded was the firmware for the Hauppauge cards. For some reason Ubuntu ships with old versions of the firmware though the firmware is already more than 1 year old.

The configuration of MythTV was quite straightforward. It takes some time and especially reading on setting the right options. The cards were immediately recognized but setting up the channels and TV guide was more work. At first the whole configuration process looks very overwhelming and most options are not very self explanatory. Moreover the documentation is not very good. Although all information is there it lacks describing the overall picture on what you are doing and why are doing it. But all in all it did take not much time to get to the stage I could record my first show.

Next to upgrading the firmware for the Hauppauge cards I also installed a new TV guide grabber for Dutch TV channels. The default delivered grabber for Dutch TV from XMLTV is rubbish. A few people on the internet developed a replacement called tv_grabber_nl_py which uses tvgids.nl to collect the TV guide information. It took me some effort to properly configure this grabber and have it run automatically overnight. This could have been better. Though I still think that all TV stations should make their programming available through RSS feeds. It is plain stupid that they see this as a money maker. It is like asking an entrance fee for a store. But hell these are the same people who want to avoid people skipping ads. I think in a decade TV stations will be as irrelevant as the music labels are becoming now if they do not realise that they have to keep up with modern technological capabilities available to the average consumer.

Frontend Xbox & laptop

To view the recordings I use two frontends. One frontend is running on my Xbox under XBMC and the other runs on my laptop.

Xbmcmythtv frontend is a Python-based plugin for the Xbox media centre. My Xbox (1st generation) is modified to be able to run unsigned applications and was in the same procedure outfitted with a larger 120GB harddrive. I use this xbox only for watching videos, playing my mp3s or showing my photos. Although the box is a bit too noisy to be the ultimate mediacentre device from a technical perspective it comes close. It has excellent TV out quality, digital optical audio output and a remote control. I modified the extension menu to have the Xbmcmythtv script as the first choice and default choice for easy selection. From Xbmcmythtv I can access all the recordings, view them and delete them after viewing. Although it can do more I only use it to view recordings. You could also program using the TV guide, see the upcoming recording schedule or watch Live TV.

My laptop — a Lenovo Thinkpad z60m — runs CentOS 5. And as stated earlier I did not see this distribution as the ideal candidate for the MythTV recorder it can run the frontend of MythTV with a limited amount of changes to the base distribution. I added ATRPMS repository which holds a complete MythTV installation including all upgrades and addons necessary to run MythTV. I limited myself to the installation of the MythTV frontend and modified the repository configuration file to only include those packages necessary to be able to install and run the MyhTV frontend. In total I needed 17 files added to my CentOS 5 installation. And now I can watch Live TV from my laptop or any recording made by the MythTV recorder anywhere in the house. Which is very refreshing.

Experiences so far

Overall this is the best videorecorder I ever had. I even watch more TV than before because I can finally set my own schedule and pace for watching TV.
Though all is not well in heaven First of all documentation on MythTV is lacking. Basic documentation can be found at the Myth project site and specific information on niche topics. But there is a definite gap between those two types of documentation.

There is a lot of documentation missing issues regarding XML-TV and the integration of TV Guide data. In case everything works out of the box or you need what is delivered by the standard distribution than it will work. But beyond that you will run issues.

The whole transcoding implementation is very basic and purely tailored for a specific niche which I have yet to discover. The transcoding to mpeg4 is lacking most quality options to ensure proper transcoding. I find the current implementation not useful. Any use case scenarios on how to create your own scripts to proper transcoding including integration into MythTV — so you can watch the transcoded files from your frontends — is unsatisfactory.

In general MythTV tries to hide the complexities from the user. To enable that goal it lacks the advanced options to extend the solution with your own functionalities. And don’t get me wrong it is definitely useful for everyday use for a lot of people. But it could better harvest the knowledge and creativity of the community by opening up or making available more parts of the solution more easily to accommodate such extensions.

But in all honesty it is still version 0.20 something at this moment which conveys the message that the developers are not done yet. Maybe in time all those issues will get addressed. I am happy to see that such quality projects are coming to maturity and make the whole Linux / Open Source / call-it-whatyou-want experience enjoyable.

Some companies may learn a few things or more from this project. Hey Sony are you reading this! Your product offerings suck big time in comparison to this. And it is not only Sony. And boy I cannot wait on Apple to kick some serious butt in this arena. The opportunity is definitely there! And meanwhile I while enjoy my MythTV setup.

References

  1. MythTV – http://www.mythtv.org
  2. tv_grab_nl_py – http://code.google.com/p/tvgrabnlpy/
  3. ATrpms – http://atrpms.net
  4. xbmcmythtv – http://sourceforge.net/projects/xbmcmythtv/

Wishlist: openvpn manager

At the office we use openvpn as our vpn solution. And it works fine and is easy to setup and maintain. The issue is that there is no GUI vpn manager for openvpn. At least not in Gnome. I evaluated the other options like kvpnc, kovpn, etc but they are not that easy to use. Commandline is easier. And for worse they do not integrate well with Gnome.

Wouldn’t it be great if it could be integrated with Network-Manager?