Author: suchakra

A guy so passionate about the things that happen in life and yet so boring sometimes :p

Sad State of Sarkari Sites

I still remember the day when I first accessed internet in India. It was a hot Delhi summer day in August 1995 and I was in my dad’s lab. VSNL had rolled out internet first in government research labs I assume. My dad had brought me specially to office on saturday to show me this wonder. I fired up Netscape Navigator (many of you may remember it as the precursor to Mozilla’s web technology) and an IT assistant told me to type in the browser. Some lights blinked and approximately 10 seconds later some images appeared from a far off land with the help of some tired electrons that made this journey to my screen. I typed “Australlia” – yes with the typo in the search bar and half an hour later I knew a lot about Aborigines, Uluru, their art, culture, destinations to visit and such. I never had an encyclopedia at home and this was magic for my tiny brain. Soon, Indian government started making their web presence known and developed websites for their departments, ministries etc. They called them portals (not the one which Valve makes). It was all amazing. Such a giant leap for us.

Except for that fact that those portals with their ancient technologies have pretty much remained same till now. Duh.

To give you a glimpse, here is the website of Indian Meteorological Department (IMD). I urge you to go at and explore the ancient wisdom of golden era engineers in their full glory.

Screenshot from 2014-07-26 19:27:07

IMD website. Such beauty, much wow!

Here are some more screenshots of famous websites that people visit :

Screenshot from 2014-07-26 19:30:16

Indian Railways website – Best viewed on Internet Explorer 1024×768. Wow!

Screenshot from 2014-07-26 19:31:00

CBSE website – Teaching future generations HTML 1.0 tech

Screenshot from 2014-07-26 19:43:57

University of Mumbai – A flood of NEW

Screenshot from 2014-07-27 13:42:01

MTNL Delhi – We provide 4G services and online bill payment – but have the worst website on planet

Screenshot from 2014-07-27 13:42:12

Ministry of RT and Highways – I’ll let you know who built all this stuff

Oh yes, that is a marquee and those tiny “NEW” things are so fabulous. Its like web fashion from 1990s returning never changed since 1996. Wait don’t go. Here is a list of websites I urge you to try :   <– security certificate expired

There are numerous others with suffixes as or represented by Government of India in some form or other but absolutely unusable by general public. I don’t think babus ever visit the websites or I wonder if someone actually ever cares about the websites from the sense of UX/UI perspective.

I have categorized some observations and here goes the actual rant..

The “New” GIF Syndrome

You may start crying that there is no uniformity in domains or any government website. Well, you are wrong. Most of them suffer from this syndrome which make the UI puke-worthy.  Its the “New” gif. A remnant from the dinosaur era, these small gifs were created by web enthusiasts when gif was cool (the first time). It was an amazing feature of that era (no jokes) but its (really)^infinity annoying in the age of HTML5 and CSS. All government websites have made it a point to annoy people while making announcements by putting these tiny devilish GIFs. People may see it as just a blinking “New”. But here is what it actually looks like to me :


The Marquee Dance

Remember the <marquee> tag? Oh this wonderful tool to have fun with in the 90s. There is no shortage of this piece of archaic technology in these websites too.  I think its the worst tag ever designed. I don’t know how others see it, but its just so annoying to wait for 2 minutes just for the relevant announcement to scroll like a snail on the screen and then trying to catch it using the mouse as if a cat is chasing a mouse.

Those “Notice” PDF Links

Many times on such websites, from time to time, some links right from the home page (which for example says “Bus Schedule”) will point you to a shabbily scanned 10 page incomprehensible document of a schedule with all the official signatures, and rubber stamps still intact. There would even be a chai stain  or staple-pin mark somewhere or other if looked closely. I mean seriously guys? Make a schedule in Excel -> print it -> get it approved by 3 people -> page crumbles -> scan it -> convert to pdf using a shitty free PDF converter -> put it up as hyperlink on a govt website?? Even Jackie Chan’s logic would get screwed here. This is the worst form of information delivery. But at least its better than no information. When will the process get streamlined?

The Babu photu effect

Madame, ismyle pleej!“. Many websites also have images of ministers right in the headers. Refer to the images above. This is not so common, but not so uncommon too. Remember the fiasco over @PMOIndia twitter handle when it was gonna be archived? Well, ministers will not take any chance here.

The tiny multi-coloured serif fonts

This is another annoying thing. Minuscule serif fonts all scattered over with their red green and blue colors – creating an information overload. Along with the marquee and the NEW GIF (my soul cracks once each time I imagine that) the effect is amplified 100 times. The person just gets lost. Into the bottom of the ocean. Sometimes I feel they design the websites like this knowingly – just to hide some incompetency they may have.

The low-res myopic vision

So many aspiring photographers with their flashy DSLRs on Facebook and not a single one clicking professional photos for Government websites? It seems they have to do their best with 340×480 images, blow them up and plaster on their websites :( Look at the glory of those pixels. Such beauty in pixelated images. (/me weeps again). And those horrible logos. Probably done in MS paint 20 years ago and stretched using <img> tag all these years again and again and again with wrong aspect ratio. Even if there is a logo change, its still in MS Paint I think. Such dedication you see.

Unquestionably, India is a global IT leader. They do amazing things. There is no dearth of good web engineers and designers for sure. The websites of TCS, Wipro, Infosys are all well done. All private entities have wonderful websites – Airtel, Tata, Birla, ICICI, Even PSUs like ONGC etc. BUT WHY NOT GOVT WEBSITES? Why not even websites of central or regional academic institutions? Just look at website of any government engineering college in any state. The things which general public needs most is in the worst state. People would argue that internet penetration is not good and hardy anyone uses it. Well, you are wrong folks. Don’t judge a book by its cover.  Just see the amount of bookings done on IRCTC website each day. The indigeneous technology which CRIS has put up is commendable. Thousands of students use CBSE websites to search for study material and see results. Remarkable too, is the work done by organizations such as ISRO – they may have not launched a beautiful and informative website but they have launched a spacecraft to Mars :-) If you dig deeper in the IMD website, there are hourly images from Kalpana satellite and quite accurate doppler radar maps of weater in major cities. Just that nobody knows and ever uses it because its hidden beneath layers of obscurity and bad UI. This is the department that prevented a recent catastrophe in AP. We have engineers who can do this : A flightradar like app for Indian Railways (I don’t think many railways in the world – except DB provide such APIs to get moderately accurate running info on the web). But we don’t have engineers to design an efficient Indian Railways website? There are 3 separate websites related to Indian Railways – all confusing. I cry in the nights silently seeing these websites, tears rolling while booking railway tickets, looking at election results, so on and so forth. The pain is unbearable. Even if I want to help, maybe I won’t be allowed to as I am not in a sarkari job as the awesome guys there. They are very good and highly apt – but in UI/UX technologies of the 90s i think.

All this does not absolve the government from the leniency and giving arguably the worst UX experience provided on the web. There is no uniformity in the government websites and no way to actually get the head and tail of anything that goes inside. National Informatics Center (NIC) which I presume handles these major websites has at least redone its website ( so its not an eyesore anymore. (Thanks a lot guys) Same is the case of recently launched Mygov website (, and Department of Electronics and IT website. I think they even tried to organize a hackathon! Good job. I just hope all the Govt websites start getting a facelift like these ones soon. I don’t know if its gonna be effective or not.

I showed the miserable websites to my friends here and we all enjoyed a few laughs. Then I saw beautiful govt websites of many countries. How can I explain to them that there is a high chance that some of these websites may have been designed by Indians but the Indian Government itself is incompetent to utilize their own engineers to give better service to its citizens. How and what kind of people do they hire in institutions like NIC? Is an entrance exam enough to show aptitude in design and development? Is there some in house training being delivered to engineers to bring them up to date? Foreign investors visit these websites for sure to see infrastructure support. Imagine what they will think when the visit Ministry of Highways website and see the badly “Photoshopped” fake looking images. Sigh.

Lastly, an open request to some randomly web surfing government IT officials and policy makers who may have reached here. Contact me folks, I will do designs for free. Trust me. For FREE! I will take out time from my research, sit in a foreign land and do it for free, just for you India – only if you keep your egos aside and invite the open world to help you. Start a major UX/UI redesign project for web and open source it. You will be surprised how many talented young minds will help you out.

Over and out. Spread the word.


I’ll just record some exceptions to the above here : <– This should be the example for all Govt academic institutions. They took the initiative. Kudos!

Raspberry Pi with HDMI – VGA converter

I have an early 2012 version of Raspberry Pi (generous gift from the Fedora Project) which sometimes tends to give some problem when a lot of current is being sourced from the USB. In addition to current issues with USB as well as HDMI, I faced a basic display problem when I used my HDMI-VGA converter for display which is not powered externally.

First things first, the converter won’t work directly and its almost sure that you will have to make changes to the config.txt (which holds the boot time specifications and is the key file to tell the Pi during boot time about any configurations that it should take care of) Here is what my config.txt looks like


The values will obviously be different for you according to your Pi and display configuration. Have a look at for a very detailed explaination. Some things of interest to us here are hdmi_force_hotplug=1 just pretends that a HDMI device is always attached. The hdmi_group specifies the HDMI type whether its a DMT type output (mostly used in computer monitors) or if its CEA (which is used for TV monitors). The value 2 is for DMT.  The next is hdmi_mode which is very monitor specific. For example 47 corresponds to a monitor supporting a resolution of 1440X900 at 60Hz. You can check the wiki and find the mode for your monitor.  The hdmi_drive just chooses between HDMI and DVI output modes. You can save this as config.txt in your boot partition and ho! the converter works.

But hold on! As expected, it  the other devices connected also draw some amount of current from the USB ports which because of the infamous polyfuses between the USB supply line and ports limit the current to around 140mA. This is annoying as I don’t even know the specifications of my converter (its a cheap one from Amazon which did not come with absolutely any documentation.) The only way is to open it and measure the current draw myself. Being too lazy for that, I found a lot of solutions on the web to get my power supply of pi straightened out and amazingly the simplest one worked for me (/me says ‘he he he!’ with an evil grin) Here’s what you can try (in order) -

  • Try a better power supply – Use the ones which have ratings for 1A and above The usually are faithful. Some phone chargers will work and mostly the USB supply from laptops is not sufficient. I use my Samsung phone’s charger which has a rating of 5V, 850mA It works until I use more devices like Wi-Fi/Bluetooth dongle etc.
  • Buy the externally powered USB hub – If the simple thing above doesn’t work (usually when you are connecting more than two heavy devices – like a non-powered HDMI-VGA converter and a HDD) you need to find an externally powered USB hub. This is the safest bet (recommended) and usually not exciting if you are of the hacker kind. There is a list of good ones on
  • But this is pretty overkill for daily mundane tasks like a Wi-Fi dongle + some other USB peripheral. So the more interesting way is to short the polyfuses. I have heard that they no longer exist on the Model B rev 2.0 which seems good, but the main power still has polyfuses (shorting them is a bad idea I think) So for older models, you can get most of peripherals working when you short the polyfuses.
  • If you are more adventurous kind, you can get your Pi powered from an external ATX power supply which you can scavenge from some old PC (as I did) I am pretty much planning to power everything including the pi and a small fan from a Pentium 2 processor (slot package) from my ATX supply and I hope it will work.

I managed to get mpd running on my Pi and have setup my ownCloud on it so that I can use it as a small storage cloud. The mpd combined with my Droid MPD client on an Android phone has essentially made it my remote music station. I am waiting for my relay board to come so that I can maybe tweet-a-lightbulb at home sometime :) I shall keep posting updated about small hacks and things I learned with the Pi.

Here’s an old post which I found interesting on polyfuses on Pi and from where I learnt some stuff about it –

Chronicles of Slumberia

Yeah its been mostly a time of slumber – when you have been awake all the time and yet sleeping throughout. I am writing this post to document my academic, technological and a little bit of personal life from the last post onwards. I shall try to use images wherever possible to indicate what I had been doing all this time.

Nov-Dec 2011

I had joined a corporate and was being prepared as a soldier to fight the mighty business and IT wars. Joining literally could remind someone of the drafting phase in the military – specifically in numbers.

Jan-June 2012

The first few months in a corporate environment are a period of settling in. Before that, the only interaction I had with any firm was with a biomedical product firm in Mumbai for which I had worked as a consultant on Qt/Embedded project. The work there was challenging and was mostly directed on my terms. In a corporate environment and in a service based IT industry, I guess the scenario changes ten folds. The working hours changed, coffee intake started, evenings were mostly spent in the office and dinners were seldom. Though there were awesome Tex CROs and high-end debuggers lying around, this was no more the college lab. This was the real deal! The workplace was indeed nice and so were its inhabitants but the work was taking its toll at both my educational and intellectual development. I was no more experimenting with cool technologies. Though I became a Qt ambassador and Nokia gave me an N9 for a project I did during my Masters days, but this was all old stuff. I was lagging behind. When people were talking about HTML5 and Nexus protocols on embedded devices, when Meego ended its journey and Tizen was released, when Raspberry Pi was being launched and dual core Cortex A-9 chips were being discussed on mailing lists, when Fedora 17 launched as I just sat and watched the pictures of release parties all over the world, I had embraced myself in corporate shackles. I looked at the mailing lists silently. I saw what all action I was missing. I used to sit on weekends with Chaitannya, Nishchay, Shravan, Tanushri – good ol’ gang and used to discuss. That was all that was left. I told Tanushri one day about a simple image which represented my situation -

Thanks to the person who made this graphic!

Yeah..I was moving way deep in my comfort zone. A salary at the end of the month, a place to stay and some wheels to drive had made me think more about something which I had never thought about – money. I had always been told that its the relentless quest for knowledge that should be your holy grail and money follows automatically. But unfortunately, the holy grail had taken a back seat now and the issue of money had cropped up. I had to buy formal clothes for work. (never ever bought them before in my life) It required money. Fuel required money and so did the dinner at plush restaurants.

In college life, clothes were a 3 year old pair of jeans, a few T-shirts received from Fedora or Wikipedia, any pair of shoes lying around in the dorm – one size fits all :-) Transport was a 2 km walk from room to lab and dinner was college mess (monthly bill = cost of a single night’s dinner as of now). Stipend money was generously paid by college from which I could buy a Sony PSP and Guitar sometime. My mobile was a Nokia 1202 which literally cost me Rs 1202 only that time.

An Android one was later bought from the consultancy money I got before joining the firm and later on when Nokia showered blessings with an N9 I had a good cellphone. That was the life I wanted to live. Bare minimum on outside. Charging inside. Compared to the work I was doing in college, this phase seemed like an era of slumber. Bling-bling outside, bare minimum inside.

July 2012

In view of the above observations about the course my life was taking and in light of the recent developments about serious chances of my lifelong dream of doing a PhD and pursuing a career in research, teaching and freelancing, I quit my job.

What next?

I thank Tanushri and Nishchay for supporting my decision and in fact being the people whom I followed. Oh yeah! they quit before me and in the prime of the youth are surging ahead to conquer the technological landscape. Kudos to them! So as indicated before, I’m looking to a life full on turmoil and highs and lows, a life of action, where I have to travel to Lonavla in a Rs 13 local train and write blogs while being happily unemployed. I read Prisig’s Zen and the Art of Motorcycle Maintenance in between which is enough to brainwash me for some more time.

I am engaged with a few tasks for now and am happy to take more freelancing work in the field of Embedded Linux/Qt, UI design etc. Feel free to ping me if you have some interesting tasks. Let the games begin!

Qt Apps on Android! Part Two : An App(le) a day

No guys, this post is not related to Apple Inc or Steve Jobs but to my previous post :) We now are in a position to have our development setup ready for Qt app development on Android so lets begin with the actual stuff. I shall take an example of the digital clock app you had seen in the previous post (reproduced here for your sake).

For some Qt newbies, its also going to be a tutorial on using Qt Creator effectively. We shall cover UI design and then do some coloring and stuff like that to make it more beautiful. Then we shall code the app so that your clock works.


For your reference, I have put up this simple app on my git repo or maybe you can get the tarball from here

Step 1

Start the Necessitas Qt Creator and create a new Qt Gui Application from File > New File or Project > Qt Widget Project > Qt GUI Application

Step 2

Choose the project name and location and after that choose the Qt version as  Qt for Android which we created in the last post.

You can also select the Desktop version to for prototyping your app for the desktop x86 host. Once the project is created you can see the auto generated files under Project as shown below. The file tuxologycloxk.cpp is the one in which all the logic goes.

Step 3

Under Forms, click the .ui file and start making the UI. Its a pretty easy job actually, you have to drag and drop the required widgets and arrange them properly in something called as layouts. Just analyse a bit how I have created the UI for the clock.

You can drag and drop the Widgets from the left panel to the form view and the corresponding Objects will be created in the right top panel as shown above. The property for each project can be set directly from here only. For eg. the initial value (initValue) for the lcdNumber object has been set as 1200 above. You can actually set the widgets background as well as the whole application colour palette by changing properties of the respective objects.

Notes on StyleSheets

You can also apply styleSheets to make your app a bit beautiful too. For example the Exit text that you see in the application is actually a button with some styles applied. You can set styles using the UI editor quite easily. Just right click the corresponding widget and click on Change styleSheet. You will get window as shown below in which you can apply your desired style.

The above stylesheet changes a button from the boring button widget to a sleek black button which mixes well with the application’s look and feel.

Step 4

Look closely and you will understand that writing code is no big deal too. Just refer my digital clock source and browse through the code to understand it. Just a small reminder on creating signals and slots – You can click on the widget directly to create slots for the specific signals they will emit. For eg. right click Exit and select Go to slot.. A dialog box will ask you the signal which will be emitted and when you hit Ok a slot in the code will  be automatically generated. Now you can write whatever code you want to implement in that slot.

Step 5

Assuming that you have created the application, you can do some other settings too. Just click on Projects on the left panel and you will see different targets for you application. We had opted for Android as well as Desktop in the beginning so both shall be shown here. Click on Run and then Details under Package Configuration. You will see some configuration tabs as shown below. You can fine tune some stuff from here of course such as Android Permissions, app name, app icon etc.

You also have an option to either deploy local Qt libs for the device or use device’s libs. If you have installed Ministro from Android market to your device, just leave it to use the devices qt libs. However, if you are going to use the emulator, make sure you get the Ministro apk from here and install it on the emulator by selecting the third option below.

Once all is set its time to connect your device, set platform as Android and hit Run (Ctrl+R) You can see the compile output on the compile output window and the debug messages in Application Output window (hit Alt+3 or Alt+4 to switch) Watch out for any build issues too. I hope the same stuff works fine with an AVD too as I haven’t tried that out actually. I do all my testing on my rooted Sony Xperia mini x10 Pro and the first image in this post is what you should get if you try to build the TuxologyClock project for your device.

Thats all Folks! Happy hacking!

Qt Apps on Android! Part One : <3 is in the Air :)

Have you loved two tangentially apart technologies at the same time? Its like holding one girl’s hand while you woo another one ;) Yeah something like that is the case with me. To my girl – “Its OK sweety, I’m just talking about Qt and Android :)”

There must have been a time when you would have thought, “Oh God, I wish I could just port all these apps I run on my desktop to my new android phone.” Or maybe you are one of hose who say, “I wish I could use my Android cell to prototype my new Qt based embedded device that I am making. It’d be something cool to show to those black shoes, red tie morons in the conference room.”

The Necessitas project comes to your aid guys. I shall be writing a short tutorial series on creating small Qt app like these :

in the speediest of ways and port it to your device. This part will consist of setting up the tools necessary for Qt application development on Android


Also known as Android Lighthouse project, this is the individually developed port of Qt for Android. Necessitas comes with a modified Qt Creator IDE for building, deploying and even debugging your applications directly for your Android device. You will be amazed to see the ease with which you can develop and debug your apps. Say thanks to BogDan Vatra and those unsung heroes who have brought this to you. Now lets begin.

Get Necessitas SDK

Get the Necessitas 0.3 online installer from here. I however downloaded the 0.1.1 version available as an offline install which serves the purpose well. Its available in old versions directory. The installation is pretty straight forward. Just run the installer and make sure that you install the SDK in /opt/necessitas. You may have to make your /opt 777 for sometime and then revert back to 755 once the installation is over.  The SDK mainly consists of the cross compiler for android on ARM and lots of cross compiled ARM libs for Qt. I have mentioned in previous posts how to do all that manually but here, its all ready for you :) Once the installation is over, you will get a Necesitas Qt Creator in your applications. This is almost same as your traditional Qt Creator IDE. We shall move on to configure it now.

Configure Qt Creator

Requirements :

  • Install ant if required by yum install ant
  • Check whether you have JDK with java -version
  • Get Android SDK from here
  • Get Android NDK from here

Step 1

Extract the SDK and NDK at some locations and start Necessitas Qt Creator/Qt Creator for Android and go to Tools>Options. Click Qt4 tab and Add a new qmake path. Give this new qmake path from /opt/necessitas/Android/<qtversion>/bin/qmake This qmake will make the projects and makefiles cross-compile ready. Give some name to it – maybe Qt for Android

Step 2

Now that you have the new Qt setup, Click the Android tab on the left and specify the SDK and NDK target and set proper toolchain as shown below. Also set the ant location and hit Apply

If you are not having any Android device, then create a AVD to test your app. Lastly, some configuration is also required on your device.

Step 3

Now, we have almost everything ready for development on our device, however to run a Qt app we need libraries on the target device. For this, there are two options. Either while developing application, an option to use local Qt libs can be selected or a nifty tool called Ministro can be used. Ministro is an android application that can be downloaded from the Android market. This application performs a one time download of Qt libs from the net on the device as required by the application you have created. In a simple application mostly it will do a mostly 8Mb install of QtCore and QtGui modules.

The next post will describe how to create a small digital clock app (as shown above) using the Qt Creator, something about putting Style Sheets in Qt apps and then get it on your device! Keep experimenting.

Source :

FUDCon↔FUNCon @ Pune 2011

There are many things you remember once an event is over and then there are some which are etched on your mind. I’ll always remember everyone saying thanks for the artwork and the Tee design. I was happy and thoroughly excited to see the Fedora Design team’s efforts plastered all over the venue! And oh yes! above all, Kashyap‘s geekish quote of the event, “That’s nested bullshit!” will always remain the identifying bit for this FUDCon.


I missed half of it, thanks to Air India and the morons who were dancing on the Trivandrum Airport runway and caused a 12 hour flight delay. I entered the COEP auditorium only at the exact moment when Sitaram’s Gitolite talk came to an end. Being a TCS guy now, I felt proud to have him on the venue :) I had a small chat with Sitaram and he as confused about my name (as its Dutt/Sharma sometimes, somewhere) I told him that I chop my name sometimes so that others don’t get intimidated by the string array overflow in my name :P I was escorted to the speaker’s lounge where I met Shravan, Saleem, Kushal, Arun SAG, Siddhesh, Shakthi and Aditya Patwari. Ankur Sinha Vaidik and Ratnadeep were among the new folks I had met and got along with well due to the familiar geek chemistry we all share. Satya, PJP and Rahul also greeted me and I was among the titans by now. Both of my talks were scheduled for the next day and I had to get some stuff/codes from my lab. So mostly I missed the other sessions on day one too.


I came on time for Harish’s talks and grabbed some swag from Saleem and went off to Seminar Hall where my talk was scheduled. I could mostly see people I already knew sitting among the attendees. There were some new students who seemed interested too and were listening intently. I had expected 20-25 attendees and got what I wanted :) My talk was well received and a few guys actually came to ask some stuff. I immediately knew that a hackfest/workshop kind of stuff for them was essential to keep the inquisitiveness alive. I listened intently to Siji’s talk on Disko UI framework for embedded devices and then had a chat with my long time Embedded Nirvana buddy Chaitannya for quite sometime. We discussed about Siji’s talk for a while and then lots of other awesome stuff at length. I went to speakers lounge thereafter and started preparing for the Fedora Design session I had to eventually take. I intended to get more people involved in design activities related to Fedora by at least demoing them how I remixed art to create some graphics for this FUDCon.

I say FUD! You say CON!

The day also went by and I spent some time in speaker’s lounge preparing for hackfest tomorow before hitting the FUDPub!! Now this was the most interesting part of Day 2. It was truly an amazing experience to see Kushal dancing around and Rahul all energized and shouting Hey-you-bugger all the time. We later in the evening had a round table humour conference, where Rahul was pulling anyone’s leg whom he could get hold of. The rooftoop FUDPub was indeed a unique experience with Eugene and Jared Smith dancing to bollywood numbers while Shrishti discussed Arun’s baby pink slippers and Aditya telling me about Arun’s biceps and his screwdriver dreams! (sorry Arun I had to write that :P)


This was the workshop/hackfest day! This is what I was looking for at last. I knew some people might be interested and even if they were not, I managed to get at least half a dozen enthusiastic guys and girls for a Qt/Embedded Linux workshop we had. (I was planning to actually hijack other’s hackfests to get some people for mine but time and tide were merciful to the others it seems)

Thanks to Shakthi for the pic

We sat around in a circle in the auditorium and stared with basics of embedded Linux and then towards Qt application development on embedded devices. I had lots of interruptions wherein I had to go repeatedly with Saleem to get the awesome Fedora cake done :) (say thanks to us!) However I managed to show the workshop attendees a demo code cross-compiled and run on my rooted android device before we wrapped up the conference.  We went for a dinner later in the evening after having Rahul’s hey-you-bugger rounds once more at the hotel and laughing our asses off.

I had always been reading something about the Fedoraproject and its values since I got involved in it – Freedom, Friends, Feaures, First! This FUDCon was indeed the first time I was able to experience the true meaning of these words as the event went by. Love you guys (and girls) See you all soon!

FUDCon Pune (India) 2011 – Design Updates #2

The previous designs have been reviewed, commented on and then redesigned too by the design community. So here are the fresh designs for your eyes :

The Poster

The Logo

There is some more stuff too I have in the closet, but I’m waiting for the Design team guys to give me some feedback on the following work so I can finalize it ASAP.

The banner to be put up on the venue entrances

A non-standard size web-banner

There’s a web-button too which can be put up on sidebars if required as on my blog here. Next and the most important task left is the T-Shirts. There are many suggestions and discussions going on for same on the Design List. I hope we are gonna freeze it soon too :)

FUDCon India 2011 – Design Updates #1

So at last we are having a FUDCon in India after quite a long time, and that too in Pune! To top it all, its in College of Engineering Pune, (COEP as we call it) the place where I have spent my last two years learning about Linux, Embedded devices and a hell lot of things about the power of an Open Community (strangely, I am forgetting something…ah! my favourite course – How-To-Kill-Time 101) :-)

I am releasing some preliminary graphics related to FUDCon India this year. I’m mainly doing posters, banners, logos, web graphics etc. They are not in their final avatar but more or less they are gonna be on the same lines. Tatica has promised me to help me on these once she reviews them with her designer’s  eye.

Thats the FUDCon India 2011 Logo – just a dash of henna, like a crown on FUDCon

Thats the poster in current form. The building is of COEP – the venue, about which I shall be sharing you lots of stuff in the coming weeks.

InfoCanvas – A mini440 Based Web-Client

As part of my MTech project here at COEP, I had spent some considerable amount of time developing a ARM SBC based touchscreen web-client which can easily be customized to be used according to the desired application. (I have demonstrated its use as an information-desk and as a terminal which fetched sensor data from another ARM SBC based web-server) Throughout the development I have taken help from many Embedded Linux enthusiasts and used Open Source technologies all the way.  I posted some stuff about the software design on my blog and sometimes helped some guys through mail also but never ever did I think once even to tell the world how I did it until now when I realized that ethically its wrong not to share good stuff with good guys like you. Oh! its not that I have rewritten a better Kernel than Linux, but some bits here and there are always missing when you work on embedded devices. Thats all I have to give back from the project I have done. Its small and humble but still, its for all of you to play with now. Everyone releases software but no-one releases how to build a complete device kind of thing. I guess I did it at last. Now adapt it according to your needs and create new devices. Host a Diaspora pod on the ARM server or just think crazy.

I am going to release the documentation in the form of my M.Tech. Thesis (Its pretty rough but still covers most of the work) in public domain currently and then will put up the related code/scripts etc on git very soon. The thesis contains some images and and data from various sources from the internet, cited wherever possible. Make use of it as it suits you. Only the work done my me in the thesis is under public domain. At any places if you find some data which is copyrighted, don’t use it without proper permissions.

In case you require some incentive to get interested in playing with such a device, some excerpts from the first chapter :

In this report, which supports and explains the work supplied with it, details of development of an ARM9 SBC based network capable LCD touch-screen device is explained. The device is essentially a versatile HMI module which can be customized according to the various need under various conditions with minimum effort. Stress on the human interaction, networking standards and an aesthetic look has also been given during the development of such a device.

System Overview

As a demonstration, the project has been configured and developed as a full fledged product to be used as a student information desk and feedback system. This device thus is aptly named COEP InfoCanvas. In addition to this another small ARM SBC has been configured as a web-server which serves the latest sensor values attached to the it. This sensor is accessed by the COEP InfoCanvas which displays the remote sensor’s value in text as well as a time series graph on the LCD touch-screen. The COEP InfoCanvas is driven by SBC-I which along with another SBC-II and an Info-Server is connected to the LAN/WAN. Refer Figure 1. SBC-I being network capable acts as a web client an can fetch and display on its LCD, information and other data from any server on LAN/WAN in standard web formats such as HTML and Javascript from Info-Server machine and SBC-II. The Info-Server is a Linux server grade machine which runs a web-server and supplies data to SBC-I. The SBC-II present at a remote location, is designed itself as a tiny ARM web-server which gathers sensor data through its ADC and serves it to the SBC-I for display. The system is pretty modular and uses mainly standard TCP/IP protocols to communicate and send data to and fro.

Figure 1

The system has been designed almost completely using FOSS tools and technologies. Right from configuring the OS to developing applications on it, Open Source tools have dominated the development of this device.

Some Images

This slideshow requires JavaScript.

Developing Qt Applications for Embedded Targets

Yeah, so now that we have all the required libs (read previous post if you are still struggling for that part) so we are embarking on to develop some cute (read Qt) applications for a mini2440 or whatever embedded target you have. Just before we move any further I am about to make some stuff clear. So, your system looks something like this now that you have the Qt power with you

Qt on an Embedded Device

what we are going to do is create an app that uses the Qt APIs which inturn will use some libs that we just ported and therefore do whatever we tell it to. In this post I’ll just make use of a simple adder program that I have created. I’ll demonstrate how to develop for your x86 host machine and then how to get it working on the ARM target. As always, there are some pre-requisites

  • Toolchain
  • Qt SDK – Offline 689MB
  • Target Board  – ARM, PPC or whatever arch. I use mini2440.
  • Ear-muffs, in case you  can still hear your girlfriend’s shouts

You can however do away with the last part only if you have a geek girl or you are deaf :-) So we begin our journey.

Setting Up the Host

Install Qt SDK on your system. Its pretty straight forward. Once its done, get some feel of developing application using Qt for just your x86 host. This means going through the tutorials and the usual stuff of creating a hello world application etc. I’ll cover al this in another post if you wish. but for the time being we’ll just create a small project called adder. Now you can either start making your own app or use mine for testing. Get the simple adder utility that I have made. You can download it either as a tarball or just get it from Gitorious

Also, untar the toolchain and set it up in the PATH so that you get ready for cross-compiling.

Application Development on x86 Host

Now, the good thing is that you can first create an applications and test it on your host. the development is done in Qt Creator which comes with the complete installation of Qt SDK. Open the adder project you just got. You can even just browse through the available examples in your system and create your own if you are well versed with Qt Creator. The utility is quite simple to use and I shall explain how to start development in it in the next post. For now, you can build the ‘adder’ project simply for your desktop by selecting the project and pressing the build and execute button on the left panel.

So once the build is over, your application will get executed on your host successfully. SO we have cover now how to build and execute apps for your desktop host.

Application Development on ARM Target

Now you can have nay target architecture. To test the process, I have used my ol’ faithful ARM mini2440 as the target board. Lets begin then. Remember that in the previous post we ported and put the libs on the mini2440? We had our cross compiled Qt libs and other stuff stored in the  /usr/local/qt directory both on the host and the target. Now just browse to that directory and see if you have the qmake binary in usr/local/qt/ Now add this to the PATH variable so that you can run qmake.

No go to the adder directory and do a


You will notice that in the same directory, a binary called adder will be created. if you do a file on it, you will see that its for an ARM target. Of course, make will throw some errors if you have not setup the toolchain properly. Now make sure that you have configured and built Qt with the -qt-mouse-tslib -qt-kbd-linuxinput if you are using a touchscreen interface or need to have a USB keyboard interface.

Also you may need to modify the width and height in the following environment variable according to the proper font size display and the screen. The value below works best for a 15″ VGA monitor

export QWS_DISPLAY=LinuxFB:mmWidth=310:mmHeight=190

Now, Its just a matter of transferring the cross-compiled binary to the target system and running it. I have tested running it on a mini2440 connected to a 3.5″ screen, 12.1″ screen and even on a standard LCD with a VGA interface. Upon execution, the aplication looks something like this :

So we have done it at last.  So just keep on developing whatever comes to your mind and port it on to your embedded target. The cool thing is that we can now just get anything made for Qt to work on your target. I have myself tested fully functional browsers (you need Webkit for that, don’t forget!) and image viewers, clock and small games too :) the only limitation you may face of course is the hardware on your target! Feel free to ask for any help and or giving suggestions