Category Archives: Open Source

Heartbleed–Internet Software should be polygamous

The last few days the news has been all about the Heartbleed internet security vulnerability that may have helped hackers to access thousands of users passwords and security certificates from websites around the world. This is a serious issue that has affected Internet due to the fact that over two-thirds webservers (Apache and nginx) run the vulnerable version of OpenSSL. WSWS explains at the software level on how 5 lines of erroneous code by not including a memory bounds check has resulted in this bug.

heartbleed-icon

If you look into the list of websites, services and devices affected by this bug in OpenSSL, you will spot many popular Linux & FreeBSD distros, companies, government departments and device manufacturers around the world. It is evident that all those organizations benefitted from reusing OpenSSL, freeing their resources to focus on newer innovations on their areas of expertise rather than reinventing the wheel. This is one of the big advantages of Open Source software.

While many used and benefitted from OpenSSL, only few donated money/resources to the OpenSSL foundation which maintains and improves the underlying code, there is only one full time engineer for OpenSSL. Many organizations were simply “freeloading”.  I am sure the Heartbleed incident will help in future those good Samaritan engineers working in large software/device companies to convince their management to donate sufficient resources to improving Open Source projects that their businesses depend on.

Heartbleed has put the spotlight on one other important issue -  the need for choice in the underlying software powering the Internet. Open Source software like Linux, Apache, PHP, Mozilla FireFox have done a great deal to software ecosystem and businesses around the world in the last two decades. At the same time, the world needs more choice. All our eggs can’t be in one basket (Open Source) however great & virtuous it may be. Monogamy is bad for any technology ecosystem, especially for a connected world & IOT. In recent months even Wikipedia has started to show decline in contributions and authors. There are numerous Open Source projects going on around the world and there can’t be sufficient resources available for all of them. This is where I see tremendous value that commercial software vendors like Microsoft, Oracle, SAP & Adobe bring to the table.

We have seen this week that the Internet never goes down, even if 2/3rd of servers in it which run  Linux distros got affected it still chuckles along on those servers that run other software like Microsoft Windows or Apple OS X Server. This resilience is due to the underlying software powering the Internet being polygamous. 

Let me be clear, I am not implying in any way one model of software development is better than other (Commercial software vs Open source). There is a place and need for both and for other models that will come in future.

Long live Polygamy in Software!

Ubuntu Live for Surface Pro and MacBook Pro

Yes, I do love Windows & I love my Surface Pro device.

Having got few gray hairs has thought me never to leave office with just one device or one set of cables especially when travelling. Irrespective of the device & OS, something can go wrong with OS or the App you are using just before a presentation. I am not as paranoid as the master Dr.Nitin Paranjape on this, but it’s a smart idea to carry an OS on the go for emergencies. This will help you boot your device, connect to wi-fi, browse a website at the minimum when your device or OS fails.

To do this, the other day I bought a 16GB USB flash drive, downloaded latest Ubuntu OS and used Lili  to load Ubuntu into the USB drive. It was simple to follow and get done, remember to select ISO/IMG/ZIP in step2 & FAT32 in step4. Once the device is ready, next steps were to test the USB drive in my Surface Pro & then on one of the MacBook Pro’s in my office.

Surface Pro

Every Surface Pro device comes with UEFI (Unified Extensible Firmware Interface) for secure boot. You need to turn it off if you wish to boot from USB drives containing non-signed OS like Linux distros including Ubuntu. To turn off Secure boot, shut down the device, then press Volume-Up rocker while powering ON the device, in the BIOS screen that appears disable Trusted Platform Module & Secure boot (instructions here). Then power OFF the device. Insert the USB drive into the port, press Volume-Down rocker while powering ON the device (instructions here). You should see USB/Ubuntu boot option, selecting that should show you Ubuntu trial option, click on that and your Surface Pro should boot to Ubuntu OS.

Ubuntu-USB-SurfacePro

I tried Wi-Fi, Browsing, Music & Video Playing, LibreOffice – all worked fine.

MacBook Pro

In MacBook Pro there are no extra steps prior to booting to USB drives. Power OFF the device, plug the USB drive to port, hold down ‘option’ key and powering ON. I tried in this too Wi-Fi, Browsing, Music & Video Playing, LibreOffice – all worked fine.

Ubuntu-USB-MacBookPro

The advantage with carrying Ubuntu in a USB drive is that, nothing is changed on your device’s hard disk. You can use Ubuntu from the USB drive without leaving any trace on your device. That’s an interesting thought, but don’t feel too cozy you still can’t escape from government surveillances around the world!!!

Use VLC Player to record desktop

For years whenever I wanted to do some screencasts or record what’s on the screen, I have been using Techsmith’s great Camtasia software or Windows Media Encoder. Today from a FaceBook wall post I learnt that the free & open source video player – VLC Media Player has this feature in every copy.

The steps to follow are just four, first is to select Convert/Save  option from the Media Menu, then in the dialog box that appears select “Capture Device” tab, then select "Desktop” in the Capture Mode option, increase the frame rate (for smoother animation provided you have powerful graphic card) and then press “Convert/Save” button. That’s all.

image

 

image

Blog moved from DasBlog to WordPress

After using DasBlog (.NET & Lucene.NET based Blog Engine) for over 7 years I decided to move to the most popular blogging software in the planet – WordPress.  I like DasBlog for its simplicity – it was flat file based (just XML files for content and images stored in file system) so no Database configuration/maintenance, most of the common configurations are available from the Admin panel and more complex changes can be done by editing the ASP.NET source code, it supports AKISMET comment filtering, MetaWebBlog API for blogging from Windows Live Writer & above all just works out of the box. But in the recent months it was showing its age with no upgrade for nearly 3 years, comments pages were becoming slow to open, search was not powerful, no scalable tag cloud, categories can be managed once created and so on. So it was time I had to move and migrate data.

After Windows Live Spaces closed and migrated my blog backup which was in there to WordPress.com, I got familiar on customizing and using WordPress. In the recent years in my firm (Vishwak Solutions) our LAMP developers have been doing many WordPress projects for our clients so I had access to resources who knew about this well. All this made me comfortable to touch something that was working for 7 years, so I went with WordPress. After some searching I found these two blogs (Reeves, Vasanth) which gave step by step that has to be followed. Along with my PHP developer I followed the steps given there and it worked. Thanks to both of them.

dasblog-to-wordpress

WordPress opens up enormous choices and benefits just due to its huge community following & benefits of network effort. I love the power of the Plugins and the choices you get, you will find a plugin for anything you can imagine. The plugin for SEO Optimization, Sitemap.XML generation, Recaptcha, WordPress Stats (JetPack) are all gems. The sheer choice of plugins can also be confusing (just like App Store) as you have tens of choices for the same task and not sure which one to choose, but a bit of Bing! or Google will help you find the right one. The WordPress app for iOS makes it a breeze updating my blog from my iPad and its free!

WordPress Plugins

After the migration we had to fix some rough edges around permissions, redirections & theme.

1.I wrote the following two redirections on top of what Reeves had recommended, which I have given below:

/(?i)blog/SearchView.aspx*\?q=(.*) http://venkatarangan.com/blog/?s=$1
/blog/SyndicationService.asmx/GetRssCategory*\?categoryName=(.*) http://www.venkatarangan.com/blog/category/$1/feed

2. I had problems with all the URLs which had a Non-English (Tamil) text in them, I went to editorial console to change all of them to English text

3. WordPress gives more categorization options, including hierarchical categories and Tag clouds. I used those to reorder most of my 1000+ posts for better visibility and SEO benefits

4. I submitted the new SiteMap.XML to Google & Bing Webmaster site, then I am now monitoring the errors that are shown in Google Webmaster tools & Bing Webmaster tools and fixing those links (where possible doing regex redirections):

bing webmaster error log

google webmaster error log

5. I had deleted the old ASPX/ASMX, XMLs and DLLs of DasBlog but retained the images in the same folder that were used by DasBlog & Windows Live Writer. This way all the image references (URIs) continues to work in WordPress. If I had tried to migrate them to WordPress then I suppose I would have had to write a custom program and do it, which I didn’t bother.

In the end all turned out well. For my blog of over 1000+ posts over 7 years it took less than 2 days of work. Performance is great & overall I am quite pleased with the move.

What I find wrong with the Stephen Fry’s video?

Before I proceed let me state my position on this topic: I am not against Open-Source Software, at the same time I I believe like all other literary (creative) & engineering works software too needs to be based on a sound viable commercial model.

I came across this video of Stephen Fry celebrating 25 years of GNU and introducing “Free” Software. Being an award winning broadcasting professional Mr.Fry has done a great job of delivering a simple yet powerful message on what he believes on. But his introduction to “Free” Software and especially his plumbing analogy to be incorrect and can misguide general public. (Please see the video below before continuing)

Freedom Fry - "Happy birthday to GNU" Why?. He says just like you can change the plumbing in your house any way you want, “free” software allows you to change your computer the way you want it. Operating System vendors like Microsoft prevent you from doing this. Nothing can be far from truth.

All software vendors including Microsoft, Adobe or Apple have never placed any restrictions on how you can use your computers or on what applications you can write on top of them. The licensing comes when you want to change the core of their work (operating systems or software written by them) and then redistribute that resulting work. Going back to the plumbing analogy (which is a bad pick by Mr.Fry) this is like you wanting to cast your own steel pipes in a furnace and for doing it you want the pipe vendors to share their blue-prints and chemical composition “Free”. Of course, there is nothing wrong in you wanting to do your own steel pipes if you want to, similarly no one prevents you (Microsoft/Adobe/Apple) from writing your own operating systems.

My whole point is it relevant for the masses, is it necessary?. I feel there are more pressing problems that can be attempted in the applications space, in the industry domains where the scarce human creative energies can be used on. Not on writing yet another Operating System, yet another UNIX/LINUX, yet another MS Office clone and so on – which is precisely what GNU has done.  To see this clearly you don’t need to look far – just look at the number of Linux Distros that are out there.

In terms of software licensing if it is all about “Freedom” as GNU claims it to be, then my pick is always BSD style licensing over GNU. The difference being that GNU is of viral nature, meaning any resulting work needs to be GNU licensed, whereas BSD licensing doesn’t put any such restrictions – you can do pretty much whatever you want.

Virtual Box is now free

Virtualization (the ability to run multiple OS simultaneously) is gaining lot of traction nowadays. In the PC world this started initially with VMWare and Virtual PC (which Microsoft acquired from Connectix) for development and testing purposes soon gained popularity in the servers. In servers virtualization is used to consolidate servers and applications into fewer servers and also used for running legacy OS and applications.

Screenshot showing Sun's Free Virtual Box running Vista as guest in a Linux Host

Today the entry barrier is greatly removed for Virtualization software with many of them available free (as in free beer), following is a partial list of them.

  1. Microsoft Virtual PC 2007 for desktops
  2. Microsoft Virtual Server 2005 R2 for servers
  3. VMWare Player for desktops
  4. VMWare Server for servers

Recently few more has joined the list, they are:

  1. VMWare ESXi – A hypervisor that allows you to run production applications at near-native performance is now free
  2. Sun Microsystems’ Virtual Box – A popular desktop virtualization software that Sun Microsystems recently acquired from Innotek and turned into an Open Source GPL software
  3. Microsoft recently released its Server class production ready Hypervisor product called Hyper-V that is going to be part of Windows Server 2008 for a nominal fee of $28.

Geonames

I came across this brilliant site called "Geonames.org" – a Geographical database for download free of charge containing over eight million geographical names. The site allows you to search for any city or place or postal code and the best part is all of this is also available through a number of webservices and a daily database export. This can be useful while you are developing a website and have to get input of a city or determine a place in a transaction.

Check out these examples:

  1. Chennai
  2. 600017 (Postal Code in India)

GeoNames was founded by Marc Wick. Marc is a self-employed software engineer living in Switzerland. Thanks to Marc Wick & the other volunteers of the site.

Web Browsing Testing Tool

Last few days I had a firewall issue in my desktop that made web browsing irregular. It was a peculiar problem, I was able to browse few sites like Google, Vishwak.COM but not others. I had to keep running the same diagnostic commands many times to take values to be sent to my support team. Finally I ended up writing this handy tool that copies to clipboard diagnostic informations from IPConfig, Tracert, Ping & WebGet commands. This information can be used for further investigation or email to support. I also added features to FlushDNS, Renew IP & Turn Auto Tuning (Vista and Windows Server 2008) OFF/ON.

diagnose tool screenshot

While developing the tool over two half-a-days I learnt quite a few APIs and a bit of C# coding. This included how to call a console command like IPCONFIG /ALL and capture the output to a string from a C# application, get the Internet Explorer Proxy settings, Call Network Properties applet, create an install with VS 2008 & how to paste a code snippet in WLW.

   1: private string DoConsoleAndCapture(string sInput)
   2: {
   3:  
   4: string sOutput = "";
   5: ProcessStartInfo pi = new ProcessStartInfo("cmd.exe", "/c " + sInput );
   6: pi.WindowStyle = ProcessWindowStyle.Minimized; 
   7: pi.RedirectStandardOutput = true;
   8: pi.UseShellExecute = false;
   9: Process p = Process.Start(pi);
  10: p.WaitForExit();
  11: //p.Start();
  12: TextReader t = p.StandardOutput;
  13: sOutput = t.ReadToEnd();
  14: t.Close();            
  15: p.Close();
  16:  
  17: return sOutput; 
  18: }

The experience of using Visual Studio 2008 was interesting as it has been few years since I coded something end to end. I wish the coding surface to become more intelligent in terms of offering help on discovering commands and APIs that the developer is looking for. When VB6 came a decade or so back the help feature that it had was revolutionary and the wealth of information MSDN provided was without par in the industry. Now with Web & Internet Search prevalent the present IDE calls for a complete rethinking and revamp – unfortunately I don’t feel the tools have come there yet. What I am talking here is not about wizards, smart tags or even intellisense but about how the tool helps a developer to learn/discover necessary APIs/solve the problem at hand.

Joomla! Template – Tamil Font problem

In my voluntary role as Vice-Chairman in INFITT I am currently helping in maintaining the website of INFITT.ORG. One of the things is to get myself familiar with a Web CMS called Joomla! – which is a LAMP based Free Open Source CMS that is targeted for small community websites.

This post is about problems we faced in Joomla! for Tamil Texts and two quick fixes that solved it for us.

1) The CSS Problem in the Top Navigation Menu. The menu in IE 6.0/7.0 will have the text appearing below the menu – invisible to naked eye. It turned out to be the CSS had issues, which we fixed and republished in our implementation. If you face the same issue, please download the fixed template_css.css from here or view it here. Menu with Tamil Text in Joomla! 

2) Pages had problems displaying Tamil in IE 7/Vista. Tamil text were displayed but as jumbled non readable characters. It turns out to be that charset is not set to UTF-8. I changed the flag to set it to UTF-8 in the file /www/templates/js_education/js_template_config.php in the Joomla! instance we had.