A browser that adheres to the unix philosophy

One of my projects that am currently working is in Digital Media Space. When i came into this project it was built on top of Microsoft Windows. We had more than 500+ LCD screen at various location powered by Windows machine. The place where these machines run dosen't have great power support and we had frequent crashes. 

Inorder to get things under control i started porting these application to Linux. When i started porting i realized that its not easy to port because the application are built on top of VC++. It was a easier decision to write it from scratch in Python.  

The architecture layer includes bare bone X86 hardware, X11, a Video Player to play different media content and a browser to display dynamic content. 

Google Advanced Sign in Security for you ( Cross Posting)

As we zoom in the Information highway, email has become our important assent holder. Email system know which company we work with, whom do we interact, how much do we get paid on a assignment, how many production server is currently up and running and the list goes on and on and on. Especially a person like me who consults with couple of companies my work revolves around email. Now that email has become a integral part of our lives, it makes sense to have it protected !! 

Since i use half a dozen machine to check my email ( Macbook, iPhone, etc... ), username/password along cannot give the require protection. An additional layer of security gives a better security. 

OTP is a well know technologies. HSBC (banking giant  for example introduced OTP as additional layer of security while using ATM. The challenge with HSBC OTP was we had to carry an additional device.


Remote Desktop Sharing

My day to day work involves interacting with people across the globe (India, Australia, Germany, South America, Italy, US, etc... ) Some of them are english speaking and some of them are non english speaking ( Spanish, French, African, etc ... ) Preferred language of email is mostly English between me and my customers. This creates problem for customer who are non english speaking and trying to explain what they want in broken english. 

Like the old saying "Picture is worth 1000 words"

Amazon EC2 Command Line Parameter EC2_URL

Amazon Web Service exposes pretty much all the end points as Web Services. For a script lover like me i love this feature. I common mistake i keep doing is not to set the EC2_URL. When Amazon Web service started there was only one end point that was us-east. By default all the API's were configured to point here. Now we have more than 5+ datacenter across the globe. ( US-East, US-West, EU, APAC-East, APCA-West, etc... ) 

Dropbox Selective Sync Fundamental Design Issues

Dropbox
From Wiki .....
Dropbox is a file hosting service operated by Dropbox, Inc. that offers cloud storage, file synchronization, and client software. In brief, Dropbox allows users to create a special folder on each of their computers, which Dropbox then synchronises so that it appears to be the same folder (with the same contents) regardless of the computer it is viewed on. Files placed in this folder are also accessible through a web site and mobile phone applications.
Its perhaps one of the oldest cross platform, multi device file sharing available in the market. That mean product wise its really mature. In spite of its minor flaws i still love it as a share platform. ( Am yet to be convinced about Google Drive till that point Dropbox will remain my favourite )

Dropbox Enterprise or Team Edition has its admin interface to manage the team, track usage, manage sharing, etc .. which is pretty cool from a end user perspective but not from a IT managers perspective.

Sysadmin :: Tool Selection :: Backup & Restore

From my early days of career i have been working with Appliances especially custom built Appliance using commodity hardware. This blog post is about a recent experience on selecting a tool, how i implemented it. 

Wiki say an appliance is 

A computer appliance is generally a separate and discrete hardware device with integrated software (firmware), specifically designed to provide a specific computing resource. These devices became known as "appliances" because of their similarity to home appliances, which are generally "closed and sealed" – not serviceable by the owner. The hardware and software are pre-integrated and pre-configured before delivery to customer, to provide a "turn-key" solution to a particular problem. Unlike general purpose computers, appliances are generally not designed to allow the customers to change the software (including the underlying operating system), or to flexibly reconfigure the hardware.
The best way to visually appliance is "pre configured, ready to use devices" which dose not require much tweaking once installed. Think of it as a black box which abstracts some functionality and exposed outside thru a management interface ( or some other ways) to configure/manage.

Listed down is one of the few reason's why we need to engineer appliance properly:
  • We need to customize the OS to suit the need of the application and run the same software for about more than 100+ devices. 
  • Unlike cloud, Appliance are independent devices, may or may not been interconnected. Provisioning these appliance at the customer location is a night mare if we don't have proper cloning mechanism. 
  • Add to confusion when we have different types of install media, target media, etc .. Most challenges comes in when we have special encryption and other settings required which make it difficult to use some thing like Kick Start (Refer Fedora KickStart). 

Technical Debt, Eventual Consequence of Poor Design or Coding

Most of the companies who deals with software will have to deal with Technical Debt. In layman terms its a debt caused because of un coordinated software development/change management practice ( which is inevitable in most of the development houses ). Even if we have the best of approaches ( either in Waterfall or in Agile) this 'Technical Debt' is a part and parcel of the software evolution. The best we can do is the minimize the 'Technical Debt'.

Some of trigger points for Technical Debt
  • Pressure to release sooner to customer. Most common problem. 
  • Take decision without considering the actual impact in the overall system. ( The bridge is built for 1 ton but the need of the hour is to transport 2 ton, let's take a chance !! ) 
  • Hard corded or deeply coupled, any change create huge impact. 
  • Ignored test suites create more challenges in term of getting a sense of what's working and what's not and what's broken when we built new features. 
  • Development is just one phase of product evolution, what about maintainability of code ? Do we have enough supporting documenting to go on to this phase ?? 
  • Multiple code bases and no frequent integration creating merger headaches. 
  • Refactor is need of any technical work, are we delaying it ? 
  • Lack of owner ship from seniors and lack from commitment from juniors adds it up. 

Cloud Watch | Custom Matrix | Monitoring Ubuntu Linux EC2 Instance | Hard ware Sizing

To size the correct hardware sizing its important to get the correct usage both CPU and Memory. Unfortunately using CloudWatch we cannot measure Memory ( since cloud watch runs outside the ec2 instance). Even if Amazon AWS would want to incorporate they will have to install a agent in every instance.


At this point we can use custom metric to circumvent this problem and that's why i did to monitor the memory parameter for one of the servers ( along with Hard disk usage monitoring)

Mac OSx [Lion] Write Mount NTFS file system

[ As of 2012 this is not needed any more since i use Google Drive, Dropbox as my common share between multiple operating system ] 

When i was a developer my ecosystem of tools was just revolving around Unix/Linux. End of 2010 i decide to quite my full time and do only consulting jobs. This is primarily for 2 reason, one to move out of my confort zone and second is to meet and work with more smart people and enable them to achieve success. 

This particular multi client work demands me to work between multiple system. Personally i like Mac, Macbook Air 13'' in my work horse. At one of the client all the desktop/servers are Ubuntu Linux, another client as i write this has Windows as primary system for work. My common hard disk between Mac, Linux and Windows machine is a NTFS external hard disk. Recently i had to write to NTFS from mac and here are few simple steps you can do to get the same working in a mac.


Note: instead of macports, i use brew - another clean neat package manager, works from command line and its awesome. Suggest by Bhavin Kamani, another freelance process specialist and a good friend.  

AWSome, Electrifying User Group Meeting

On a cloudy morning we had a cloud meet up. Yes am talking about Bangalore based Amazon Web Service User Group the AWS User Group Bangalore Meetup. Its an independent group run by bunch of Amazon AWS enthusiast. Started out of a Coffee day in richmond road with 4 people participating in the first meetup when i write this blog we have more than 200+ users. 
[Update: March 2012 we have more than 800+ users ] 

Since it was cloudy, drizzling and raining our expectation was really low ( not more than 5 people ;-) ). To our surprise we have 20+ guys coming in that to with various experience and skill levels. Can we ask for more ?

AWS User Group Bangalore Meetup is a 270 strong community of AWS'er who regularly meet up once every month for the last 1 year. We started this meet up with a introduction to each other and some games to warm up. I just realized we have quiet a awesome bunch of participants. Some of them have the following profiles