Planet dgplug

August 27, 2015

Kushal Das

Setting up storage for docker on Fedora22 cloud image

docker-storage-setup helps to create a LVM thin pool, which can be then used by docker for storage of containers, and images. By starting docker, it automatically starts this service. We can also make sure that it uses a specific block device, and volume group. In this example I am running Fedora 22 Cloud Base image on an Openstack environment, I added a new volume /dev/vdb to the instance.

# cat <<EOF > /etc/sysconfig/docker-storage-setup
# sudo docker-storage-setup
  Volume group "vda1" not found
  Cannot process volume group vda1
Checking that no-one is using this disk right now ... OK

Disk /dev/vdb: 5 GiB, 5379194880 bytes, 10506240 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xc8ed8872

Old situation:

>>> Script header accepted.
>>> Created a new DOS disklabel with disk identifier 0x39ca0d62.
Created a new partition 1 of type 'Linux LVM' and of size 5 GiB.
New situation:

Device     Boot Start      End  Sectors Size Id Type
/dev/vdb1        2048 10506239 10504192   5G 8e Linux LVM

The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
  Physical volume "/dev/vdb1" successfully created
  Volume group "docker-vg" successfully created
  Rounding up size to full physical extent 8.00 MiB
  Logical volume "docker-poolmeta" created.
  Logical volume "docker-pool" created.
  WARNING: Converting logical volume docker-vg/docker-pool and docker-vg/docker-poolmeta to pool's data and metadata volumes.
  Converted docker-vg/docker-pool to thin pool.
  Logical volume "docker-pool" changed

I hope this will help you to setup the docker storage properly on Fedora 22 Cloud Image.

by Kushal Das at August 27, 2015 09:17 AM

August 23, 2015

Sayan Chowdhury

Fedora 22 Release Party, Bangalore

The Fedora Project announced the release of Fedora 22. To celebrate the release a Fedora 22 a release party was organized at HackerEarth, Bangalore on August 01, 2015 with the help of rtnpro and lalatendu.

The event was scheduled to start at 10:30AM. Around 10 people turned up for the event.

The event started off with the introduction of the attendees followed by me giving an introduction and history of the Fedoraproject. This talk was followed by rtnpro giving an talk of Fedora 22 release and highlights of this release. This talk also had few dicussion in between the attendees where they discussed about the features into more depth. Then Lalatendu Mohanty gave an awesome and comprehensive session yet not an regular talk RPM Packaging, "Bringing it all together - RPM Packaging and its life-cycle in Fedora".

After that rtnpro and I gave an overview of the Fedora Infra team. How it works? Which all projects are their in Fedora Infra? How can you contribute?. We also discussed on contributing other parts in Fedora.

Then, it was time for Open Floor, where we had an open discussion with everyone on things they have been working on, want to work on, features they want to see in Fedora in the future.

Finally, we cut cake for Fedora 22 release, had pizzas, took a group photo and dispered off to meet again in the next Fedora Bangalore meetup.

More pics here

August 23, 2015 12:00 PM

August 20, 2015

Shakthi Kannan

Introduction to Haskell - More Type Classes

[Published in Open Source For You (OSFY) magazine, November 2014 edition.]

In this article, we shall explore more type classes in Haskell. Consider the Functor type class:

class Functor f where
      fmap :: (a -> b) -> f a -> f b

It defines a function fmap, that accepts a function as an argument that takes input of type a and returns type b, and applies the function on every type ‘a’ to produce types ‘b’. The f is a type constructor. An array is an instance of the Functor class and is defined as shown below:

instance Functor [] where
	 fmap = map

The Functor type class is used for types that can be mapped over. Examples of using the Functor type class for arrays are shown below:

ghci> fmap length ["abc", "defg"]

ghci> :t length
length :: [a] -> Int

ghci> map length ["abc", "defg"]

ghci> :t map
map :: (a -> b) -> [a] -> [b]

An instance of a Functor class must satisfy two laws. Firstly, it must satisfy the identity property where running the map over an id must return the id:

fmap id = id

For example:

ghci> id ["abc"]

ghci> fmap id ["abc"]

Second, if we compose two functions and ‘fmap’ over it, then it must be the same as mapping the first function with the Functor, and then applying the second function as shown below:

fmap (f . g) = fmap f . fmap g

This can also be written for a Functor ‘F’ as follows:

fmap (f . g) F = fmap f (fmap g F)

For example:

ghci> fmap (negate . abs) [1, 2, 3, 4, 5]

ghci> fmap negate (fmap abs [1, 2, 3, 4, 5])

The Maybe data type can also be an instance of the Functor class:

data Maybe a = Just a | Nothing
     deriving (Eq, Ord)

instance Functor Maybe where
    fmap f (Just x) = Just (f x)
    fmap f Nothing = Nothing

For example:

ghci> fmap (+2) (Nothing)

ghci> fmap (+2) (Just 3)
Just 5

The two laws hold good for the Maybe data type:

ghci> id Nothing

ghci> id Just 4
Just 4

ghci> fmap (negate . abs) (Just 4)
Just (-4)

ghci> fmap negate (fmap abs (Just 4))
Just (-4)

The Applicative type class is defined to handle cases where a function is enclosed in a Functor, like ‘Just (*2)’:

class Functor f => Applicative f where
        -- | Lift a value.
        pure :: a -> f a

        -- | Sequential application.
        (<*>) :: f (a -> b) -> f a -> f b

The ‘<$>’ is defined as a synonym for ‘fmap’:

(<$>) :: Functor f => (a -> b) -> f a -> f b
f <$> a = fmap f a

The Applicative Functor must also satisfy few mathematical laws. The Maybe data type can be an instance of the Applicative class:

 instance Applicative Maybe where
    pure = Just
    (Just f) <*> (Just x) = Just (f x)
    _        <*> _        = Nothing

A few examples of Maybe for the Applicative type class are shown below:

ghci> import Control.Applicative

ghci> Just (+2) <*> Just 7
Just 9

ghci> (*) <$> Just 3 <*> Just 4
Just 12

ghci> min <$> Just 4 <*> Just 6
Just 4

ghci> max <$> Just "Hello" <*> Nothing

ghci> max <$> Just "Hello" <*> Just "World"
Just "World"

The Applicative Functor unwraps the values before performing an operation.

For a data type to be an instance of the Monoid type class, it must satisfy two properties:

  1. Identity value
  2. Associative binary operator
a * (b * c) = (a * b) * c

These are defined in the Monoid type class:

class Monoid a where
      mempty  :: a           -- identity
      mappend :: a -> a -> a -- associative binary operation

Lists can be a Monoid. The identity operator is [] and the associative binary operator is (++). The instance definition of lists for a Monoid is given below:

instance Monoid [a] where
	 mempty  = []
	 mappend = (++)

Some examples of lists as Monoid are shown below:

ghci> import Data.Monoid

ghci> ("a" `mappend` "b") `mappend` "c"

ghci> "a" `mappend` ("b" `mappend` "c")

ghci> mempty `mappend` [5]

The Monad type class takes a wrapped value and a function that does some computation after unwrapping the value, and returns a wrapped result. The Monad is a container type and hence a value is wrapped in it. The bind operation (>>=) is the important function in the Monad class that performs this operation. The ‘return’ function converts the result into a wrapped value. Monads are used for impure code where there can be side effects, for example, during a system call, performing IO etc. A data type that implements the Monad class must obey the Monad Laws. The definition of the Monad class is as follows:

class Monad m where
  (>>=) :: m a -> (a -> m b) -> m b
  (>>) :: m a -> m b -> m b
  return :: a -> m a
  fail :: String -> m a

The Maybe type is an instance of a Monad and is defined as:

instance Monad Maybe where
    return x = Just x
    Nothing >>= f = Nothing
    Just x >>= f  = f x
    fail _ = Nothing

So, when ’m’ is Maybe, and ‘a’ and ‘b’ are of type Int, the bind operation becomes:

(>>=) :: Maybe Int -> (Int -> Maybe Int) -> Maybe Int

Here’s an example of how the Maybe Monad is used:

ghci> return (Just 5)
Just 5

ghci> return Nothing

ghci> Just 5 >>= \x -> return (x + 7)
Just 12

ghci> Nothing >>= \x -> return (x + 7)

ghci> Just 5 >>= \x -> return (x + 7) >>= \y -> return (y + 2)
Just 14

The newtype keyword is used in Haskell to define a new data type that has only one constructor and only one field inside it. The Writer data type can be defined using the record syntax as:

newtype Writer w a = Writer { runWriter :: (a, w) }

It can be an instance of a Monad as follows:

import Data.Monoid

newtype Writer w a = Writer { runWriter :: (a, w) }

instance (Monoid w) => Monad (Writer w) where
    return x = Writer (x, mempty)
    (Writer (x,v)) >>= f = let (Writer (y, v')) = f x in Writer (y, v `mappend` v')

To test the definition, you can write a double function as shown below:

double :: Int -> Writer String Int
double x = Writer (x * 2, " doubled " ++ (show x))

You can execute it using:

ghci> runWriter $ double 3
(6," doubled 3")

ghci> runWriter $ double 3 >>= double
(12," doubled 3 doubled 6")

The evaluation for the bind operation is illustrated below:

ghci> runWriter $ double 3 >>= double
(12," doubled 3 doubled 6")

ghci> runWriter $ ((double 3) >>= double)
(12," doubled 3 doubled 6")

ghci> runWriter $ ((Writer (6, "doubled 3")) >>= double)
(12," doubled 3 doubled 6")

The arguments to runWriter are matched to the bind function definition in the Writer Monad. Thus, x == 6, v == ‘doubled 3’, and f == ‘double’. The function application of ‘f x’ is ‘double 6’ which yields ‘(12, “doubled 6”)’. Thus y is 12 and v’ is ‘doubled 6’. The result is wrapped into a Writer Monad with y as 12, and the string v concatenated with v’ to give ‘doubled 3 doubled 6’. This example is useful as a logger where you want a result and log messages appended together. As you can see the output differs with input, and hence this is impure code that has side effects.

When you have data types, classes and instance definitions, you can organize them into a module that others can reuse. To enclose the definitions inside a module, prepend them with the ‘module’ keyword. The module name must begin with a capital letter followed by a list of types and functions that are exported by the module. For example:

module Control.Monad.Writer.Class (
  ) where


You can import a module in your code or at the GHCi prompt, using the following command:

import Control.Monad.Writer

If you want to use only selected functions, you can selectively import them using:

import Control.Monad.Writer(listens)

If you want to import everything except a particular function, you can hide it while importing, as follows:

import Control.Monad.Writer hiding (censor)

If two modules have the same function names, you can explicitly use the fully qualified name, as shown below:

import qualified Control.Monad.Writer 

You can then explicitly use the ‘listens’ functions in the module using Control.Monad.Writer.listens. You can also create an alias using the ‘as’ keyword:

import qualified Control.Monad.Writer as W

You can then invoke the ‘listens’ function using W.listens.

Let us take an example of the iso8601-time 0.1.2 Haskell package. The module definition is given below:

module Data.Time.ISO8601
  ( formatISO8601
  , formatISO8601Millis
  , formatISO8601Micros
  , formatISO8601Nanos
  , formatISO8601Picos
  , formatISO8601Javascript
  , parseISO8601
  ) where

It then imports few other modules:

import Data.Time.Clock (UTCTime)
import Data.Time.Format (formatTime, parseTime)
import System.Locale (defaultTimeLocale)
import Control.Applicative ((<|>))

This is followed by the definition of functions. Some of them are shown below:

-- | Formats a time in ISO 8601, with up to 12 second decimals.
-- This is the `formatTime` format @%FT%T%Q@ == @%%Y-%m-%dT%%H:%M:%S%Q@.
formatISO8601 :: UTCTime -> String
formatISO8601 t = formatTime defaultTimeLocale "%FT%T%QZ" t

-- | Pads an ISO 8601 date with trailing zeros, but lacking the trailing Z.
-- This is needed because `formatTime` with "%Q" does not create trailing zeros.

formatPadded :: UTCTime -> String
formatPadded t
  | length str == 19 = str ++ ".000000000000"
  | otherwise        = str ++ "000000000000"
    str = formatTime defaultTimeLocale "%FT%T%Q" t

-- | Formats a time in ISO 8601 with up to millisecond precision and trailing zeros.
-- The format is precisely:
-- >YYYY-MM-DDTHH:mm:ss.sssZ
formatISO8601Millis :: UTCTime -> String
formatISO8601Millis t = take 23 (formatPadded t) ++ "Z"

The availability of free and open source software allows you to learn a lot from reading the source code, and it is a very essential practice if you want to improve your programming skills.

August 20, 2015 10:30 AM

August 18, 2015

Arun Sag

Flock 2015 – Report Day0 and Day1

Day 0:

I almost missed my flight at the san jose airport, My flight was supposed to take off by 2:55. There was a big queue at the airport around 2:30 pm.  I cleared TSA around 2:40 pm. It was tight!

Met  Major Haydon( at the Chicago midway (MDW) airport. Major was a keynote speaker at flock. He works for rackspace. The flight from chicago landed about 12:45 am in the morning at Rochester. We took a cab to the hotel. The hotel is 10 minutes from the airport.  My roommate aditya was jetlagged and was already sleeping. Managed to slip into  the bed without waking him up!

Day 1:

FPL (fedora project leader) Matt Miller did his usual state of the union in the morning. As the name implies it is about the current state of fedora project. More details about the state of union can be seen at

Koschei – Continuous integration for fedora

The next talk i attended was Koschei – Continuous integration for fedora packages by mikolaj. koschei is a CI  system that schedules koji builds and make sure that fedora packages are sane all the time. koschei uses koji scratch builds. The scheduler of koschei is intelligent enough to schedule these builds when koji slaves are not busy.

The main motivation of koschei is to find FTBFS early and inform maintainers. The production instance of koschei is here More details about this presentation is here

Koji 2.0

Mike McLean ( wrote the first line of code when dinosaurs were still alive :). Now he has plans to clean up koji under koji 2.0 project. koji is used to build packages for fedoraproject, it has many roles (rpm building, compose etc).

Mike wants to use python 2.6 for koji-2.0. It will also has support for python 3.0 using python-six. Most of the audience including me suggested that python 2.7 as it is the latest stable in 2.x release. Mike explained that he wants to support koji-client on RHEL6 which comes with python 2.6.

Luke Macken in the audience went even further and suggested that the server side of koji  should drop support for python 2.x and entirely written using python 3.0.

some of the koji 2.0 proposed features include,

  •  build namespaces (re-building same nvr again and again)
  • json-rpc
  • content generators (
    •  other type of build process to feed into koji
    • robust metadata import
  •  Following build types are proposed
    • rpm builds
    • maven builds
    • windows builds
    • image builds
    • + ???

Mike’s email about koji2.0 to koji-devel mailing list is available here

His talk sides are available here

Reproducible builds using koji

Reproducing koji builds was scheduled at 2:30 pm, It was the 3rd talk of the day.

In this talk Mike Mclean talked about debian’s reproducible build project Builds are not (binary) reproducible because of following reasons,

  •  Timestamps embedded into binaries during build time
  • Usage pseudo-random numbers to generate code data
  • Umask/uid
  • uname, hostname, username
  • locale
  • Timezone

Mike was really appreciative of the debian reproducible build project. The debian team is actively upstreaming their patches. Some one in the audience noted that debian still allows builds created on developer workstations to be uploaded and deployed to repositories. So by having reproducible builds the binaries are easily verifiable.

Then Mike went on to talk about what it would take to make builds reproducible on koji He talked about using task-id/repo-id to preserve the state of repo’s and recreating them at a later point.  He also noted that the rpm metadata included in the rpm package makes it impossible to reproduce.

One of the audience suggested that the metadata could be  moved out of the
package in future to enable reproducible builds. Mike noted that he is very busy with  koji-2.0 work and does not want to spend more time on making builds  reproducible. However he was open to helping out someone who is willing to take on this challenge. Any takers?

Super privileged containers

The last talk of the day i attended was about ‘super privileged containers’ by Dan Walsh. Dan, showed lot of funny gif’s about selinux and docker before starting the presentation.His presentation is available here

RedHat’s atomic host doesn’t support yum install. Redhat customers often want some utlity to be included in the atomic host and Redhat wants atomic host to be minimal as possible. As you one can see these two goals are competing with each other. The current rule to include an utlity in the atomic host is to prove that it won’t work in a container.

Customers want to ship an application that will manage a host or manage other containers. Enter Super privileged container aka SPC.
A super privileged container must have the following

  • It should  be a privileged container
  • will enable all capabilities (CAP_*) in the container
  • disable selinux separation (it will lie in the container)
  • disable user namespace;
  • disable mounting read only file systems;
  • Allow creation of linux devices.
  • Specific namespaces like network, ipc and pic should be disabled
    respectively using (‘–net=host;–net=ipc,–pid=host)
  • SPC should mount /run into /run of the container and let container process to communicate with system dbus, systemd, or even docker daemon (docker run -v /run:/run)
  • The entire host file system should be shared inside the container using
    docker run -v /:/host -e HOST=/host.

To do all these, you have to run a big docker command:
"/usr/bin/docker run -t -i --rm --privileged -v /:/host -v /run:/run -v
/etc/localtime:/etc/localtime --net=host --ipc=host --pid=host -e HOST=/host
-e NAME=fedora-spc -e IMAGE=fedora fedora /bin/sh"

As you can see this is a big command, redhat has introduced a ‘rheltools’ container image with project atomic. This tools image includes strace,gdb,sosreport and other tools The atomic command now allows users to run containers in SPC mode.

'atomic run --spc rheltools /bin/sh'

The big docker command now is encapsulated into a small atomic command.

Atomic command wraps os-tree as well,
– atomic host upgrade
– atomic host rollback
– atomic host status

Today there is not a good way to tell your users how to run the container you created. Some container may need special privileges for example ntpd needs –cap_add SYS_TIME; Without SYS_TIME ntpd container will break; To solve this problem redhat has introduced container image labels. Redhat added labels patch to docker which allows developer to create labels during container build time.'LABEL RUN docker -d -n ntpd --cap_add SYS_TIME IMAGE'

Now, ‘atomic run ntpd’ will automatically read this image json metadata and run the container appropriately.

Dan also distributed his container coloring book at the talk. If you want a pdf version of it please see (pdf). If you haven’t see his selinux coloring book checkout These books are designed by mairin duffy.

After the conference, we had a game night where we played board games until 11 pm

by sagarun at August 18, 2015 11:46 PM

August 14, 2015

Kushal Das

Day 2 of Flock 2015

How to start a day with some big mistake? Order a breakfast burger which is big enough to confuse you :) It was tasty, and way bigger than what I thought. May not always the best way to start the day, but a full stomach means inner peace.

After going back to the main room for the keynote, I found Major Hayden is already on stage for starting his keynote. I never found someone explaining impostor syndrome in such hilarious way. He started with a personal story, which many will be able to connect to. It was seriously a great choice for keynote.

At 10am, I had my talk on Tunir. I hope that I was being able to answer the queries in a proper way. Mike asked the best question, what does the name means? :) We had a good discussion at the end about various related topics. After my talk was over, I spent the time till lunch while talking to many people. Topics covered from lifestyle to temperature.

After lunch I wanted to attend Paul’s remote working tips talk, but sadly I had to give my second talk on Fedora Cloud at the same time. The crowd for my talk was diverse, there were at least 3 people who knew nothing about the Cloud WG, and then there were many who take regular participation in the working group. I started with what we do, then moved into how we do it. Remember to have a look at my worknotes to find out the exact steps to create the Fedora Cloud image locally. The talk was heavy in discussions, Matthew pointed out few of the charts from his keynote. Last part of my talk is about how one can help the Cloud WG. Where all we need immediate help.

After my talk Mike McGrath talk about “Atomic and container deployment best practices”. This particular talk also had many useful content for me as I always guessed what could be some good way of deployment, but never had enough practical experience to know more.

Next there were two back to back talks I really wanted to attend, from Matthias Clasen, and from Peter Robinson. But the CentOS Cloud SIG also decided to meet at the same time. We had some useful discussion on the RDO moving the full development effort on top of CentOS, hardware updates. A major portion of the discussion was also about download statistics. Karanbir pointed out why there is no such system in the CentOS infra, and the arguments for not having it looked solid to me.

The evening dinner/party was in a place which I think is a smaller version of heaven. The Strong museum of play. Way too much fun to describe in a single blog post.

by Kushal Das at August 14, 2015 12:05 PM

August 12, 2015

Arpita Roy


Hi again !
Trust me , i too am upset on going for “long break” these days :(
No , i have not made any excuses up in my mind , the only trouble was with – the little mess that was created in my head.
Well , no issues in sharing them..
First , i am always messed up with basically two things – “What to learn” and “How to Learn and implement”
The problem mostly is with the implementing part.
Sadness is , when you understand everything yet you can’t submit a feedback ( it frustrates ME )
Like i discussed with a mentor of mine , there are lots of things on the plate as for now ..
Starting with , “College”. Entering into 3rd semester ( 2nd year ) is no less than a pain.. The burden got +1’ed. Shaked hands with completely new subjects like , Data Structure , Computer Organization ( mentioning these two as they are not only screwing me up but are also my ” departmental” subjects )
Data Structure – A world of fun with lots of algorithms as rides and topics such as – Stacks , Queue , Linked list , Trees etc as special rides
The more i learn , the more i will share, currently i am in hands with linked lists and stacks. Learning the basics and also helping myself to write ” proper codes ” :)
Computer Organization – Three weeks passed and not that i have ever missed a class of the subject , but  feel sorry for i cannot talk about the rides || special rides it is going to provide.
Though the subject deals with how the hardware components operate and the way they are connected together to form the computer system , it provides knowledge of the analog part too.
Next , C is still with me :) i am yet to finish few topics of C very properly.
Thanks to kushal da , for giving me an online tutorial for C. Here it is –
Very helpful :)
Oh yes ! My Summer Training is still going on , i am so far a happy and successful part of it. There were lots of topics covered , in Python – The Basics , About Loops ,  Lists , Strings , Exceptions , and today’s session on Classes etc.
Things are fine so far :)

Shall switch again ( soon )
P.S – One can’t really have a better life than this ( Keep wondering if it was a satire ;) )

by Arpita Roy at August 12, 2015 05:27 PM

August 05, 2015

Sanjiban Bairagya

Akademy 2015: An awesome experience.

So this was my very first Akademy, and I was excited about attending it ever since the beginning of when I started contributing to KDE a couple of years back. Feels great to have finally made it. Although I had some visa problems at the New Delhi airport because of which I reached A Coruna quite late and missed out on the entire first day of the conference, still I’m glad I could at least reach Rialta by sunset of that day and be able to attend the rest of all the days at Akademy.

So Day 2 began with the keynote speech by Lydia Pintscher on “Evolving KDE”, where many concerns regarding how KDE began, where it is going, how it needs to change, were discussed among many other things as well. It was really interesting, very motivating and I loved it, the best way the day could have started. Following this, were an array of many other talks as well, one of which I loved a lot, was the one given by Andrew Lake, where he spoke about visions, and how important it is for any product’s growth. His examples about a few “this is how *not* to write a vision” visions were hilarious. Overall, it was very interesting and fun to attend, and very informative of course. And then Vishesh Handa also spoke about file searching in Baloo in his talk, and how file searching and indexing happens in various other softwares and platforms, compared to how KDE does it in its browser in a more efficient way, was too good. Following the first half of talks, there was the group photo (glad I didn’t miss this :D ).


On the second half of the day I gave a very brief lightning talk about my previous year’s GSoC project on implementing interactive tours in Marble. It kind of finished very soon, and I still regret why I did not extend it with a few demos by creating some tours on-spot or something of that sort. Still, hope people didn’t find it too boring. What felt very good though, was when Valentin Rusu came to me some time later that day to let me know about a website called flightradar24, which shows real time flights that are actually taking place right now all across the globe. Although these are real-time flights and are not similar to those that happen in Marble tours (tours in Marble are only virtual and don’t deal with actual real-time flights in airplanes), the link he sent me is pretty awesome and you should check it out once here:

Apart from all this, there was a questionaire session with the KDE e.V. where various topics were raised, many interesting questions asked and answered, many secrets revealed, including the “secret handshake” ( :P ). It was totally awesome. Finally the day ended with the Akademy awards, where two of my most favorite KDE applications, that is, KDevelop and KDE Connect, were awarded, which they totally deserved, so I was very happy about it. The organizers were given a big thanks as well, along with all the sponsors, where Frederik Gladhorn from Qt, said something interesting, that is, “Be a good coder. But you need to be a good person before that” which was awesome to listen to!

So, after the first two days of talks, up next were the BOFs starting from day 3. The BOFs were too good. Lydia’s BOF on “Evolving KDE” was very interesting to attend, and many key points regarding what KDE actually is, how it should be correctly defined given the various types of projects under so many different fields that it supports, were discussed for a couple of hours, and it gave us a well detailed insight about the direction in which KDE is going as a whole, and ended with a decision to come up with a well-designed vision for KDE, among other things, in the next few days. It was good listening to everything that was discussed in this BOF.

Next day there was a party at the terrace of Espacio Coruna, which was awesome. I took this opportunity to meet up with a lot of people I didn’t interact with in person before. I really really wanted to meet Lydia Pintscher for a long time. And I did. It was so great to talk and discuss stuff with her in person, exchanging various ideas, opinions, and whatnot. I caught up with Aleix Pol as well, and the conversations were enlightening indeed. David Edmundson is a fun guy to hang out with. So is Andreas, Vishesh, Pinak, Devaja and everyone else. Akademy is totally awesome, mainly because of this, and its such a smart way of helping you have such fun conversations with so many people in person, with whom you had only conversed online before that. The food was great, along with the beer and wine, and there were even freestyle dance steps performed towards the end as well. A totally awesome evening it was.

On one of the next days, there was a tour to the aquarium as well. Viewing the shark from so close up-front was an out-of-this-world experience. Following that was a very long and tiring climb towards the top of the tower of Hercules, the view from which was magnificent. It was beautiful to be able to view almost the whole of the city from the top by standing on that tower.

I would like to thank KDE eV. a tonne, for providing me the sponsorship for this year’s Akademy, without which I would have had to miss out on such a wonderful experience of my life. Thanks to Jose Milan for organizing such an amazing event, and to all the rest of the organizers who played a part in this. It was so well-planned, I met a lot of people, explored through Spain, saw a live shark, and so much more. I would love to attend the Akademy’s that would be held in the next years to come. Thanks again, for giving me such an awesome experience of a lifetime to keep in my memories forever! Until next time, ciao! :)


by sanjibanbairagya at August 05, 2015 11:22 PM

July 31, 2015

Chandan Kumar

[Event Report] July Python Pune Devsprint 2015

July Python Pune Developer's Sprint was hosted at Red Hat, Pune (India) office on 25th July, 2015.

Around 30 people joined this event.

It was a sprint planning for PyconIndia 2015 Devsprint.

The main agenda of the event was to encourage the attendees to make contribution to upstream python projects.

These people mentored on following projects.

Below is the list of Pull requests sent during the sprint.

Ankit Rana and Tejas Sathe created a project 'datahub'. It is a github-clone specifically for dataset so that people can share their dataset which can be used in the data analysis.

Amit Ghadge created a project 'hist', a history syncronizer to sync bash history between two machines.

Some of them learned how to read the codebase of python project and debug the code based on issue like :openstack-ironic, mailpile, pandas etc.

We need more mentors who are contributing to upstream projects, so that we can mentor newbee in order to get into OpenSource.

Thanks to Red Hat, Pune for the venue, mentors and attendees for making the event successful.

by Chandan Kumar at July 31, 2015 12:45 PM


Event Report: FudConIn 2015

As promised I am back from fudcon india with loads of experience and new knowhow about various tools.


The first day started with keynote talk by Dennis Gilmore on “Delivering Fedora for everything and everyone”. He discussed about the future plans for Fedora release engineering team. Next I moved to a different room where a talk on GlusterFS was being held by Vikhyat Umrao. This was the first time I heard about Gluster File System so was pretty much curious  to learn more about it. After that I attended back to back two more talks on GlusterFS, which are  “Geo-Replication and Disaster Recovery in GlusterFS” by Bipin Kunal and “Efficient data maintenance in GlusterFS using Databases” by Joseph Elwin Fernandes . I must add session by Joseph Elwin Fernandes was great, he is a really good speaker :) . After lunch i attended Jared Smith’s talk on “Whats new in Drupal 8?”. I learned about new features that are going to be added to Drupal 8, like REST support, editing content directly, easy installation and language selection etc. The day ended with a keynote talk by Harish Pillay on how to evaluate open source projects and spoke about “open source prospector” a tool to track FOSS projects over the globe.


Day two started with a keynote by Jiri Eishchmann on the future of fedora workstation. He spoke about better graphics support, better battery life in F23 also more reliable weekly updates. Then there was a session on Haskell by Jens Petersen. Next I attended Rejy Cyriac’s talk on Selinux. after which i too configured my selinux for the good :) . Soon after that a interesting workshop was done by Mayur Patil on how compile linux kernel and wrote a small test kernel module. Day two ended by tenzin chokden with his keynote talk on how GhostNet affected the Tibetian Community and how Linux helped them stop GhostNet from spreading.


Day three was mostly meeting people and attending fewer talks and workshops. Aditya Patawari, Lalatendu Mohanty took a workshop on Docker basics. Next Flask 101 workshop was taken by Sayan Chowdhury and Ratnadeep Debnath. Finally closing ceremony by Rupali Talwatkar after the lunch. Oh yes! also a photo session was there :D .

Will update with the link to the talks soon.


Pune is a great place! Had awesome food! Enjoyed alot! Also was almost lost on my way to the venue since there were two MITs and I reached the wrong one! Light drizzle on the day of return. Awesome experience altogether! Waiting for next Fudcon India :) .

PS: Pics coming soon

by subho at July 31, 2015 11:07 AM

July 26, 2015

Shakthi Kannan

International edition - i want 2 do project. tell me wat 2 do

This year, 2015, marks a decade of completion of my website! Thanks to the grace of God, the Almighty. Thanks also to my parents, friends and well-wishers for their wonderful support and encouragement over the years.

I am also happy to announce the launch of the international hard cover edition of my book, “i want 2 do project. tell me wat 2 do”, for worldwide distribution. You can order the book at:

The topics covered in the book include:

  • Mailing List Guidelines
  • Attention to Detail
  • Project Communication
  • Project Guidelines
  • Development Guidelines
  • Methodology of Work
  • Tools
  • Reading and Writing
  • Art of Making Presentations
  • Sustenance

The “Mailing List Guidelines” sample chapter is available for download from:

The home page for the book is at:

Kindly forward this information to your friends who may also benefit from the same when working with free and open source software.

July 26, 2015 04:45 PM

July 23, 2015

Arpita Roy

A Month and Three Days More

Hi all :)

There was no reason for the break i took this time except one – i was a little busy with the summer training and returning back to college.
Yes , finally the “Happy Days” i was leading are over as college came back into being. The fruitful days are up :( and yes and yes that is saddest part till now.

As i discontinued writing up , i couldn’t  fully share things bout the summer training.
The topics covered after the last day were productive enough and included sessions of topics i never had quite a knowledge of.. Well , i would say i am still working on them.

DAY 7th – DAY 8th — 8th July’15 & 10th July ’15

The next sessions consisted of Version Control System.. basically Mercurial and Git.
We were given proper hands-on session to know about them and it was very properly explained as well
( I shall ( though not very soon ) ) would provide blogs on all i know about VCS as i have yet to learn a few more things.

DAY 9th – DAY 10th — 13th July’15 , 15th July’ 15 & 17th July’ 15

After VCS , Sayan and rtnpro ( their IRC nicks ) gave us details about how to create web pages.. It wont be quite tough to catch that the topics covered were – HTML and CSS.
The third was about CSS properties.
We came to know about a lot of properties used in CSS ( shall provide a blog on this too :) )
The sessions were fun and we were stuffed with all the basics of the above two :)
We successfully created our web page ( which was given as an assignment )

DAY 11th – Day 12th — 20st July’ 15 & 22nd July ‘ 15

And the most awaited , ” python” was finally introduced amongst us.
The first was just an hour session and contained only  few basics. The second day of python contained about – Functions , Modules and Looping.
Most of which i knew about and also we were given two codes to write during the session itself :)

P.S – Happy Days are yet alive as long as there is something so much exciting happening along !

by Arpita Roy at July 23, 2015 03:46 PM

July 09, 2015

Sayan Chowdhury

Fedora Meetup 2015

Fedora July Meetup 2015 happened at Hasgeek office, Indiranagar on July 04, 2015 at 06:30 PM.


  • Sayan Chowdhury
  • Ratnadeep Debnath
  • Lalatendu Mohanty
  • Nitish Bharadwaj
  • Devyani Kota
  • Praseetha KR
  • Sharat MR

Topics discussed:

  • Introduction to Fedora and what's new in Fedora 22
  • Reproduce Bugs on Vagrant(libvrt) and identify missing features
  • Introduction to RPM Packaging
  • Fedora Hubs

It's good to know more and more people are turning up for the meetup. I would like to thanks Hasgeek for giving us space to host our event. Stay tuned for updates on Fedora India mailing list .

See you, next month!.

July 09, 2015 10:48 PM

June 25, 2015

Samikshan Bairagya

Travelling to FUDCon, Pune 2015

Right now I’m at Kempegowda International Airport, Bengaluru looking forward to spending an exciting weekend at FUDCon, Pune. It seems my flight is delayed by almost an hour and this is a good time to have a look at the schedule more closely. Why am I looking forward to an ‘exciting’ weekend at Pune? Well, just have a look at the schedule and you’ll understand why. The schedule is packed with a wide range of talks and workshops on really interesting topics.

For a conference having such an interesting schedule its important to prepare a schedule of your own to try and take back as much as possible. This is a screenshot of my schedule for the next 3days. Oh! And I haven’t mentioned that I’m looking forward to FUDPub too that is scheduled on Saturday evening IIRC. ;)

My FUDCon Pune schedule

I myself would be talking on kernel ABI breakages along with an introduction to how its stability is tracked through genksyms currently and how an alternative could be possible through spartakus. That would be tomorrow after at 12:30 pm. I really hope my talk can live up to the standards that will be set by other speakers.

I guess its time to check-in for my flight now. Also the free WiFi is almost timed out. So see you at FUDCon, Pune 2015.

by Samikshan Bairagya at June 25, 2015 03:14 PM

June 19, 2015


My Final Year Project aka Online FIR/GD lodging system.

Hello all, this post will be a small one. I will be discussing about my College Final Year project in here. The topic for my project was Online FIR/GD Lodging System. Since I have worked with Flask before, I chose Django 1.8 to try something new. Learning the basics of Django wasn’t much difficult. Now my college stuff is over but i have decided to add on a few more features.

about THE Application

Its a simple web-app with a Form to fill up the details necessary for lodging an FIR/GD. The main problem with this kind of application is the identity of the user.So to properly identify i decided to use approved ID Proofs by the Government for different organizations i.e Voter ID Number, Aadhaar ID Number, Ration Card Number, PAN Card Number. Obviously this a prototype so I had the freedom to use dummy data for users Aadhaar, Voter and PAN card in database tables. For Practical implementation it surely needs access to the above mentioned databases from the government. So a user can choose any two ID proof out of the 4 and fill in the details. The two ID card data must have same name and birth date for the user to be identified. Next the Report(FIR/GD) form is to be filled by the person. Also currently he needs to explicitly select the Police Station he wants to lodge the report to. According to the city and state the police stations gets shortlisted. Next the form is submitted. I did not use User Auth in this application. We already have the user identity but we need ways to contact the user, hence phone number and email needs to be filled in the Form. Next comes the verification of mobile number. I really didn’t want to spend much on this so decided to use Site2SMS API which allows you to send limited Free SMS. So sending OTP via Site2SMS API. Since the OTP are short-lived (5 minutes) i decided not to use database to avoid overhead due to frequent writes and decided to use Redis instead. The TTL feature made my work of expiring OTPs easy. Finally sending a pdf document report via email. I used xhtml2pdf to generate the pdf’s and again saving money by using Gmail for sending out emails. ;) That pretty much sums up the application. You can check out the SourceCode.

Future Plans

– Right now all I have done is for the user who wants to lodge an FIR/GD. The police portal exists but the Reports are not updated instantly. I am planning to use Django Signals to work with django-socketio to update the new Reports instantly just after they are inserted into database.

– Chalk out a way to automatically register the FIR/GD to the correct police station depending on the location of event

– This can be most handy when used as a mobile application. So either create an API and mobile application or make the design responsive to suit any device.

– And finally to write Unit tests. ( This is my new year resolution) :P

P.S.- Suggest some cool name for this app.
P.P.S.- You are most welcome to request a feature or add a feature and send a PR on Github.

This year Fudcon is from 26th. Will be attending it and maybe meeting some of you. Next post will be on FUDCON 2015. Till then Happy Coding. :)

by subho at June 19, 2015 08:04 PM