Application Hosting and Testing on RHC

I am always on the lookout for places where I can host my web applications(for free). Github pages doesn’t help here as they are meant for static content. Google AppEngine is cool, but not for me as I don’t like the way and procedures for hosting.

Today I discovered OpenShift, which comes for a variety of application hostings, supports multiple technologies and not to mention: it it free. OpenShift is based on RHC(RedHat Cloud) and comes with a variety of features.

So, to get started you need to sign up for a free account of Openshift Online. Once done with that we have an online console which has a pretty good GUI for managing applications and adding cartridges(Cartridges stand for the modules on which our project will be based).

But I prefer the command line which appears easier and quicker than the GUI on the web. To get started we need to have git and rubygems installed. For this do the following(Please note that this applies for Debian only)

sudo apt-get install git ruby1.9.1 rubygems

After this is done do the following:

sudo gem install rhc
gem update rhc

After this is setup, we need to setup rhc for the first time by running:

rhc setup

During this step, there will be a request for setting up a namespace which is very important for hosting applications. Once this is done, run

rhc cartridge list

This will show a list of applications that can be hosted. These include node.js, PHP, python, Ruby and also addons like mysql, phpmyadmin, mongodb, postgresql. This also features a Jenkins build system and Cron(job scheduler).

To start a new application, for example PHP run the following:

rhc app create -a appname -t php-5.3

This will create an app remotely and clone a local copy. To further add addons like mysql and phpmyadmin run:

rhc cartridge add -a appname -c mysql-5.1
rhc cartridge add -a appname -c phpmyadmin-3.4

After setting up mysql and phpmyadmin, the credentials for using them are displayed on the command line. It might be useful to note them down.

Once all requirements have been added, we can add the contents of the application to the repository and simply commit and push.

The url for accessing the application is https://appname-namespace.rhcloud.com and phpmyadmin can be accessed at https://appname-namespace.rhcloud.com/phpmyadmin

First steps towards Animation in Krita

For the last few weeks, I have been working on adding animation support in Krita, which has also been accepted as my Google Summer of Code project.

To get things moving, I have added a new timeline interface for creating and editing animation frame-by-frame. The timeline has a separate layer box, which has been adopted from Krita’s existing Node Model(The layer box still has vital features left out though).

The other vital part is the Animation Frame Box. A look into the internals of the Animation Frame Box looks like this: The Frame Box consists of a list of Layer Contents(a collection of frames in each layer). Further each layer content consists of a list of Animation frames. Each animation frame can be of two types: blank/empty frame and xframes. A blank frame would contain no data on the canvas while an xframe would contain data on canvas. Every animation frame could be of varying length and the length would also necessarily depend on the neighboring frames.

Now a bit about frame insertion dynamics: A new instance of animation would start with a layer with a blank frame. If the canvas gets modified the blank frame turns to an xframe.

The timeline on starting a new instance of animation

As of now there are three frame insertion actions.

Next adding a blank frame would insert a blank frame at the current selection plus extend the width of the previous frame to its beginning.The width of the new frame would depend on the next frame(if there is one).

Adding a new blank frame at a selection

Adding a frame would extend the frame to the corresponding selection.

Adding a frame extends the previous frame from the selection

Adding a blank frame in between a current frame

Adding a blank frame in between a current frame

Adding a new layer would insert a blank frame with same content length as that of the previous layer.

Adding a new layer adds blank frames to it

So what next? I am now working on developing a frame switcher which would switch the canvas views. Each frame would contain a reference to the corresponding .kra file. And then I can start on the more challenging stuff: creating an efficient file format for storing the animation. More details on the proposed file structure can be found here.

If you are interested in tracking my progress, the branch name on Calligra is ‘animator-plugin-somsubhra’.

Lastly I would like to thank Boud, Animtim and Sketchstick without whose inputs and feedback, this would not have been possible. Also thanks to the wonderful KDE community and Google for accepting my project for GSoC 2013.

Imagine Cup, National Finals, 2013

So finally after this long wait, after three months of long brain-storming(not to mention the fights and arguments we had) and lots of code, we are finally here at the Imagine Cup National Finals, 2013. Right now we are sitting at the cafe of Microsoft India Development Center, Hyderabad(food is really cheap here!), and it’s been a while now since everyone passing us has been staring a lot at us(probably wondering who these kids are). This is a view from the cafe, I wonder why these guys just don’t sit here all day and make it there workplace.

Microsoft India Office Hyderabad

The journey to Hyderabad so far has been memorable with our Abhinav coming up with his usual round of antics. Do I need to say more? Well, I loved Hyderabad a lot ‘coz it’s a lot like Ahmedabad. We have good food here and not to mention the good people here (And yeah, Jaydeep ate a lot last night, can’t guess what’s wrong :D). Also a bit about out app. We have developed something that would enable the visually impaired to read texts from books, visiting cards, etc using their phones. So basically it involves the phone capturing a text on its own and reading it aloud. No demo videos yet, we haven’t released them, but expect them soon. We also had a chance to actually test the app in a school for visually impaired in Gandhinagar. Here’s screenshot of our app’s splash-screen. Credits to Anuj for the wonderful design.

Read For Blind Splash

We had lots of fun last night with the presentations coming up. We have one day to go before the final presentations tomorrow. Now I guess we might have to do rounds to check out our T-Shirt sizes. Hoping for the best and keeping our fingers crossed for tomorrow’s presentation.

KDE, FOSS and me

This might be a little late for blogging about the KDE Meetup(after 3 days or so!), but then my memory is not so poor. This was the first KDE event I was attending and so I was bound to be excited. After all it was being held in our very own campus(DA-IICT)!

So a bit about my initial story with KDE! It all began in September last year when I read some guy trying to compile a browser using something called kdelibs. Curious I began reading more as I had only compiled some silly programs till then but never a whole browser. I always thought that compiling your own software is cool. So that’s where it all started. I installed Kubuntu, explored more and more about setting up kde development environment and there, I had my very own KDE workspace set. I cloned the source code of the browser which was(is still) called rekonq and started building it. All this cloning and building stuff took me two days to figure out, but finally in the end I had a built software at hand! I then tried to figure out the huge codes and tried my hand at modifying some bits of them myself. And so the hacking began.

So back to the KDE Meetup! The Meetup saw the presence of experts like Pradeepto Bhattacharya, Vishesh Handa, Shantanu Jha, Rishabh Arora and Rohan Garg(forgive me if I missed a few names!). Day One saw our Lecture Theater full(I have never witnessed our LT so full) of an enthusiastic bunch of participants ready with their laptops and eager to start with open source software development. Pradeepto introduced us all to the wonderful world of Open Source and KDE. Suddenly with his talks a line struck me: “From Freedom comes Elegance”(The tagline of Linux Mint). As the session progressed the participants became more and more enthralled by open source and KDE. Next, Vishesh introduced everyone to Qt and everyone wanted to ‘get-set-code’. After lunch, the real fun began when we started writing our own codes on our machines and building them. It was a real fun to go around with people coming up with unusual errors and warnings. Also not to mention the really cool funky ideas. Day 2 was entirely devoted to KDE projects where Rishabh gave a talk about KdeEdu Suite followed by Vishesh talking about Nepomuk. Also we were shown how to build huge softwares ourselves. After lunch, we had a session where people built Rekonq themselves and tried to get their hands dirty in the codebase. The two day meet saw people learning lots of amazing things and coming out with their own cool ideas.

My story with KDE continues and I have now started contributing to Krita, the beautiful digital painting software, a part of Calligra suite. Only yesterday I got confirmed(thanks to the wonderful people in KDE) that I will be attending the Calligra Sprint to be held in Bangalore on 8th to 10th March. So I am looking forward to 3 days of code and fun in the sprint alongside the wonderful KDE community!