Win free copies of Packt’s Linux Shell Scripting Cookbook

I am pleased to announce that I have teamed up with Packt Publishing to organize a giveaway especially for you. Four lucky winners stand a chance to win few copies of the book. Keep reading to find out how you can be among the lucky ones.

The Prize

What you will learn from Linux Shell Scripting Cookbook, Second Edition

  • Master the art of crafting one-liner command sequence to perform text processing, digging data from files, backups to sysadmin tools, and a lot more

  • And if powerful text processing isn't enough, see how to make your scripts interact with the web-services like Twitter, Gmail

  • Explores the possibilities with the shell in a simple and elegant way – you will see how to effectively solve problems in your day to day life

What can you win?

  • 2 e-copies of Linux Shell Scripting Cookbook, Second Edition are up for grabs as well as 2 print copies will be available (for US or UK based address) or any other eBook of your choice from the Packt library.

What do I have to do?


Contest Rules:

  • 4 winners with maximum no. of posts will be selected by me or Packt.

  • Earliest reply/post will be given preference.

  • Contest open till 30-July-2013, so hurry up.


I’m going to Akademy 2013 !

After a long wait, I finally have my visa to Spain to attend Akademy 2013! If you haven't heard of it, Akademy is the annual summit of KDE where gearheads meet to plan the next steps to world domination. We talk about how to create beautiful free software for people to use and to enrich our vibrant community. I am also giving a talk on the fun, and sometimes weird times when I did some pair programming on some KDE software.

Sounds exciting? Well, its not too late, you can still register at

Using QtMobility on SailfishOS SDK

Jolla's SailfishOS SDK was released quite some time back for Linux, OSX and Windows. I had tried it once during that time but only compiled some sample apps until I found some time recently to port one of my N9/Harmattan apps to Sailfish/Nemo.

The problem

The app needed to use the device's GPS system to know its coordinates for which I used QtMobility's location API. However, when trying to compile, the SDK wasn't able to find the QGeoPositionInfoSource header and I found that it was really missing from the SDK's include dir. In fact, the whole QtMobility module was missing.

The solution

SailfishOS SDK doesn't contain QtMobility by default, you have to install it manually. Luckily the SailfishOS SDK control center makes it easy.

  1. Click on the SailfishOS button on the leftmost toolbar in Qt Creator
  2. Goto Targets and click 'manage' in SailfishOS-i486-x86 (it might be different for you)
  3. Scroll down to qt-mobility-devel and install it.

Presto! Now you can use QtMobility in your application 🙂

KDE Meetup at DAIICT Gandhinagar was Amazing

Last weekend, the KDE community in India organized KDE Meetup at DAIICT, Gandhinagar. There were three primary motives behind this-

  • Spread awareness about Open Source software among students
  • Lot of students have misconceptions about real world software (the myth that its very difficult to work on a big project), try to address them
  • Usually all tech conferences, especially FOSS ones are centered around places like Bangalore, Pune etc – give a chance to people in another region

I am happy to announce that the event was a huge success, not just in terms of number but in the quality of response we got and that we met all the three things we wanted to do!


To start with, day 1 was mostly focused on getting people comfortable and answering the questions and doubts they had. Pradeepto Bhattacharya, one of the founders of KDE India community shared his experiences with students on how it matters if you contribute to FOSS when in college. The students appreciated that doing real world software helps to understand the real challenges behind software development.


Going by the general format of pre-lunch talks and post-lunch hands-on, we started by talking about Qt and its fundamentals. The students were amazed by the power of the framework and the day to day software that is built on Qt. KDE developer Vishesh Handa who maintains KDE’s Semantic/RDF system talked about signals/slots with model/view and it was good to see that people were quick enough to co-relate it with traditional MVC (keep in mind that the majority of students were 1st-2nd year students so thats a big deal).
The most interesting part was the post-lunch hands on which the students were excited about, and rightly so – because thats where the fun is. Do something yourself and things start making sense, you start appreciating the beautiful things a small amount of code can produce. Another thing that I have seen in my experiences with students is that version control is one of the things that excites them the most. The realization that there is something that can help you managing your code and that you no longer have to do things like main.cpp.old.old was exciting for them.

You understand how successful you were with the crowd when they come back on the next day and can’t wait for the event to start. The excitement about the new things to learn, the feeling of being among like-minded people was the best start to the 2nd day full of learning. We had talks on the KDE Education suite software which ranges from chemical calculations, physics simulation to word games for children. It was good to know that children in Brazil use KDE software in schools to learn, and so does a remote village in West Bengal. Vishesh talked about Nepomuk – KDE’s Semantic data system and the three functions it performs – index, organize, visualize. He demoed how you can use the system to organize and find your contents – and if you’re creative enough play your favorite dialogues from videos – just wow.


It was a moment of pride for me that we were a part of an event which touched the lives of students – especially the ones who would’ve never got the exposure otherwise. It was amazing, rewarding and people appreciated it and I hope we keep doing awesome things like this.

Along with tweets, you can browse photos from the event-

GNUnify 2013 was awesome

This is a month of FOSS events – and one of them was GNUnify 2013 at Symbiosis Institute of Computer Studies and Research. There were talks ranging from systems stuff like GCC, about Android hacking to KDE development. We met people from communities of KDE, Mozilla, Wikimedia, friends from RedHat and of course the awesome awesome organizers and volunteers.

It is nice to see a Free Software event like GNUnify to turn into a tradition where teachers and students work hard to create what is rightly said a forum to unite open minds.

Day1 of the event had lots of talks including our very own KDE – we planned a full day track on KDE primarily aimed to introduce people to KDE (and Open Source in general) and give them starting tips on how to get started. The talks started with introduction of Qt and a hands-on where people tried writing sample applications. Something new here was that we had to cover QtQuick/QML which these days is the preferred way of doing GUI in Qt, but at the same time we couldn't leave out the traditional QWidget style of doing GUI. This was primarily because of two reasons, first most of the current KDE applications are written in QWidget so people will need that if they want to contribute and secondly the desktop components of QML still aren't widely used.

 Pradeepto on KDE 

We started with the Qt talk and the hands-on was very well received by the attendees. They tried Qt Creator and created sample apps, winning tshirts in the process smiley After lunch Sinny talked about and gave a demo on using QtQuick/QML for writing fluid and modern GUI. This was followed by a talk on getting started with KDE development where we demo'ed a small hack in rekonq (a KDE browser based on WebKit) so that people get confident that its pretty easy to get started. We also spent an hour or so in answering questions that people had in mind about contributing.


The organizers were kind enough to arrange a pool-side dinner for us and it turned out to be a nice opportunity to socialize more, and meet all of the volunteers at one place. And whats more, I got a chance to be picture'd with the ???? laugh


Day2 saw talks on various kinds of topics like Android, Python, Drupal etc and I gave a Plasma Active demo to a group of volunteers. After Day1 which was kinda tiring due to the day long session, the 2nd day was quite fun with meeting friends again and chatting over lots of stuff 🙂 Not only this, we had a nice evening and dinner, thanks to Siteshwar.

(Photos courtesy Sinny Kumari, view full album here )

KDE at GNUnify 2013!

In India, KDE awesomeness never stops, and this is going to be the case even at GNUnify 2013 at Pune. GNUnify is hosted every year at Symbiosis Institute of Computer Studies & Research in Pune and composed of talks and workshops.


What kool stuff are we doing?

Coming to KDE, we have a full day track on Day1 of the event, which is on Friday 15th February. We are going to tell you about what KDE is, how we use Qt – one of the world's most powerful cross platform development framework, what kinds of applications one can contribute to in KDE. The attendees will come to know about the large variety of projects within KDE – from Photo Management to Office Suite to Learning science.

Who should attend?

Are you interested in writing cross platform native applications? Interested in participating in one of the biggest Free Software communities? Or, you'd love to work with awesome people from around the world and learn how to write effective code? If you answered yes to any of these questions, this is for you!

Also, if you are a student, there are even more reasons for you to attend – we are going to make sure that the workshop/tutorials are straightforward so that when you go back home, you'll be writing Qt apps in no time!

Want to reach the KDE India community?

The KDE India community is one of the most biggest and vibrant Free Software communities in India. You can reach us (and join us in creating awesome software)-

Got questions? suggestions on what you want to see at the event? Let us know!

FOSSMeet at NIT Warangal

Ah! It was an exciting weekend, visited National Institute of Technology, Warangal for a talk, and met with ThoughtWorkers from all over India at Goa! smiley

As you've guessed, this post is about the former, I was supposed to give a talk on how to get started with KDE and some git basics. Landed at Hyderabad at around 8PM and after having awesome Hyderabadi Biryani, I travelled to Warangal which took 3 hours. Thankfully, Harshit who came to receive me at the airport was very interesting and we talked about software, economics, to quantum mechanics (!!) laugh Just like talks I have given at other NITs, the hospitality was awesome, really loved it.

I was kinda nervous in the night as I had to cover everything that I planned to, plus some stuff that Pradeepto would've covered but he couldn't come. Decided that it should be nice if I can show the students how to begin with a simple hack, and rekonq – KDE's webkit based browser came in handy. We started with installing git on everyone's laptop, but sadly at around 11AM the whole town lost power, and there wasn't any backup indecision I shared my experiences and story on contributing to FOSS and the take-aways of spending your time on it, and the students practiced some git on their machines after we realized that power ain't gonna come back. I was really happy with the enthusiasm, that the students kept on going until their batteries almost died and even when they were sweating. You see, git ain't that confusing if you haven't used SVN wink

Session on KDE

(Thats the only photo I could get, the organizers were kinda busy with getting the power back that they couldn't click more photos)

We got some power backup from generators the event guys managed to hire, however we still had lack of Internet, so instead of having the students do some small stuff on rekonq, I did a brief interactive demo on how to browse the source to look for the place to put your code to get some functionality. The response was pretty good, and more importantly, more than half of the participants were girls, *and* they were pretty interactive.

The good part– At 4:30 PM I had to rush to the airport to catch my flight to Mumbai and eventually to Goa to join fellow TW'ers for the Away Day. Sitting at the Mumbai airport, I got an email from a girl who was trying some git stuff on her laptop but had some questions. It just feels so nice when people go back and do stuff, looks to be a good beginning.

Awesome job and my thanks to everyone that made it possible, Sarath, Shailja and Harshit – you guys are awesome 🙂

Activating Calligra, again :)

At Akademy, there were lots of suggestions on how we can improve Calligra Active so that its more usable on tablets. We finally found some success if fixing some parts of the view conversion parts that were broken, and implemented some nifty features-

Switch to page

You can instantly switch to any page in a text document using the page list at the left of the screen.

Text search for text documents

Use the little search bar at the bottom to search through your texts

Select and Copy

Just activate the selection mode using the button at the top and you can select text

Slide chooser

Simply put, go to any slide in a presentation

Flick to switch slides

Just flick sideways to goto the previous/next slides


Finally, lots of thanks to everyone that helped with suggestions and especially Sujith H for working on the page switching feature and spending hours on debugging and helping me find out what I screwed up in the view calculations laugh

Comments and suggestions are welcome smiley


My GSoC 2010 Proposal

Many students have been asking for sample proposals for reference so that they can understand how to write a good one. I'm sharing my GSoC 2010 proposal which was accepted for Gluon. Hope it helps smiley



Proposal for Google Summer of Code 2010

Gluon Player Plasmoid

Name:                                       Shantanu Tushar
Email Address:
Freenode IRC Nick                Shaan7
IM Service and Username:
Location (City, Country and/or Time Zone):  Bangalore, India, UTC +0530

Proposal Title: Gluon Player Plasmoid for the Plasma shell

Motivation for Proposal / Goal:

As the Gluon wiki describes it “Gluon is a cross-platform free and open source 2D game engine from KDE. It aims to make life easier for game developers by providing a simple but powerful API to handle 2D objects, sounds and inputs.”, Gluon will be a
revolution in the way we've seen 2D game creation. People will be able to create new games in a more flexible manner, while the Gluon web content system will allow them to earn rewards.

The Gluon Plasma applet is another step in this direction, it allows users to play games published using Gluon, straight on their desktops! This will be a very rewarding and fun experience for gamers and casual users alike. As there will be no need for a dedicated window for the game, it'll blend seamlessly with the interface they've been familiar with since KDE 4.

Use Cases:

  • Mary is a professional working in some industry and does most of her planning and work on the computer. In between, she takes small breaks to play the Gluon games on her desktop. She can pause the game and instantly return to work, resuming the game in the next break.
  • Jim is a game developer, he develops games using the Gluon Creator and publishes to the Gluon game distribution online service. People play the game on the Plasma desktop and if they like the game they can instantly donate. Jim is happy and feels motivated to create more engaging games.
  • City's Public School use the KDE Educational Software to teach young children and they have small Gluon games for the children as a reward for completing homework. Children have fun and are excited about learning more.

Expected Result-

When the Plasmoid is ready, a typical workflow can be the user Downloading a new game from the online service, in the process she can see the games ranked by votes and similar categories (similar to the download new Plasma Widgets). After deciding what game she's interested in, she can instantly download the game, and start playing.

After getting some experience, she might be able to make into the top scorers for the game, and can add her entry to the online high score list. Even before that, she can view the list to see how much is to be scored to get to the top.

The user should also be able to add comments and feedback about the game which the game author can then use to improve the game. Also, if she liked a game very much, she will be able to donate to the game author as a vote of thanks.

A sketch of the expected workflow can be found at

Implementation Details:

The Game Display Area-
The area where the game's output is to be shown will be implemented using a GluonGraphics::GLWidget in the applet. This GluonGraphics::GLWidget will contain the output from the Gluon game engine to display the game content.

Deliverables – A area in the Plasmoid where the game is displayed.

Gluon Game Options-
Gluon game options will be implemented inside overlay menus. The overlay is already in action in the Plasma Add-On Creator – Plasmate where the previewer menus are displayed as overlays. This has an advantage of using space economically, and giving a nice overall experience.

The options that are intended to be implemented are-

Get More Games, Play, Read Description, High Scores, Achievements, Rate and Comment, Donate

Deliverables- UI elements for the options mentioned above.

A very nice feature of Plasma is the concept of Dataengines, this helps keep the data provider separate from the application logic, or rather the view logic, in this case.
Dataengines will be implemented for fetching the following data about a particular game-

High Scores, Achievements, Ratings and Comments

Deliverables- Working Dataengines for the data mentioned above, Integration with the UI.

Fetch and Play New Games-
The Plasmoid will use Open Collaboration Services to fetch new games from the Gluon game server. The implementation will use the KDE library module libattica. This will be designed to be similar and consistent with the rest of KDE, say for example the Download New Plasma Widgets feature.

Deliverables- Working UI option for Fetching New Games and saving them locally for playing.

Tentative Timeline:

April 26 – May 24
Study thoroughly the Gluon Engine which will be used for the Player. Discuss with developers on what can be shared with the Gluon player application and the maemo version.

May 25 – June 13
Implement the Plama applet with the GluonGraphics::GLWidget so that it can display a loaded game correctly. Check if it works with the examples.

June 14 – July 18
Implement Dataengines as described in the implementation details. Implement Gluon player game options like High Scores, Comments, Donate to author etc, using the Dataengines to provide the data.

July 18 – August 8
Implement the Fetch New Games functionality through Open Collaboration Services using a familiar interface consistent with the rest of Plasma.

August 9 – August 20 (pencils down)
Test the Plasmoid to work with sample games and online services. Write documentation

Do you have other obligations from late May to early August (school, work, etc.)?
I will be having university exams in the end of June, but I'm confident that I will be able to manage my time well.

About Me:

I am a student pursuing an undergraduate degree course with Computer Science and Engineering as major in B.M.S College of Engineering, Bangalore, India. Apart from having lots of interest in computing in general, I have been a free software enthusiast from past 3 years and a member of our college's LUG and creating awareness in and around our college about Free and Open Source Software.

I've been using KDE (SC) since the time I started to use GNU/Linux (KDE 4.1 then) and have loved it from the beginning, which has been mostly due to the loving community. I've been contributing to KDE software for more than a year with bug fixes and feature requests. My favourite area of contribution has been Plasma, and so I'm comfortable with the Plasma API and KDE API in general.

On the non-code part, I've conducted various KDE/Qt workshops in my own college, and other colleges with the help of the KDE community. I'm thankful to the people for giving me the opportunity to co-ordinate the KDE Project of The Day at FOSS.IN 2009. The event was very rewarding as people really appreciated the beauty of the software and the vibrant community.
I blog my activities and work at my website and have stats at

Lastly, I assure dedication of at least 40 hours per week to the work and that I do not have any other obligations during the period of the program, with the obvious exception of regular academics. Also, if any part of the proposal is not clear, I'll be very happy to clarify.


printf(“Goodbye world”)

Dennis RitchieFew days back, there was an outbreak in the media – people all around the world were sad about the demise of Apple co-founder Steve Jobs. While the world was in grief, no one seemed to care that the one who designed the base that gave us the technology we have, left us – without asking for thanks;

Dennis M Ritchie, popularly known as “dmr”, died on October 8 following severe sickness, and was confirmed by a close friend Rob Pike on Google+. Going back in time, we find that Dennis had never thought that computers will be where he will be spending his time. He graduated with degrees in Physics and Mathematics from Harvard. However, Dennis notes that “My undergraduate experience convinced me that I was not smart enough to be a physicist, and that computers were quite neat. So there started his journey into the digital world – he joined Bell Labs in 1966, the pioneer of communications that time. He joined Ken Thompson to design and develop the Unix operating system;

“UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity” – Dennis Ritchie;

Compared to other operating systems of that time, Unix was very portable, the only shortcoming was that as it grew it became difficult to manage. This is where Dennis and Ken thought of developing a high level language for Unix. A language called B was already in place at Bell Labs and they improved it with data types and other nice features, leading to the C language. Although by today’s standards, C is regarded middle level, it was a very high level that time. It combined the flexibility of a high level language with the power of assembly language.

Followed by this, the duo rewrote Unix in C and tested it thoroughly, their company sold it to developers who really loved how C improved productivity. Where many would think that C no longer makes sense because there are more high level languages like Python, Java etc, the fact is that all these languages are in the end, implemented in C;

All this leads to just one conclusion – the modern computing world is nothing without his work. And we need to thank him for that, remember him for the fact that most of us got a job because of him. As Kernighan notes, “There’s that line from Newton about standing on the shoulders of giant. We’re all standing on Dennis’ shoulders”;

The tributes to Dennis Ritchie won’t match the river of praise that spilled out over the web after the death of Steve Jobs. But they should.” – Wired;

Lets remember that great person who built this strong foundation for us, and give him the respect and honor he deserves, and thank him for giving us wonderful technology and making our lives better. We salute the true genius of modern computing; return 0;