Be careful: Not everyone is good

I’ve never written any thing personal on my blog. I reserve events concerning my personal life for my friends, my family, my journal. However, I post this event here to warn my friends in the Fedora community. Most of you are like me – we want to be good people, not just in our professional lives, but also in our personal lives. We want to be the best we can be. We don’t resort to violence, but at the same time we don’t get pushed around. This ordeal that I just experienced will tell you that you need to be careful, even when you’re trying to be a helpful person. Sometimes it can get you into a dangerous corner, one that could’ve been avoided if you were more sceptic like I generally am.

The event report

My sister and I had gone to Coles to get supplies for a normal weekend – beer, food, the usual. On our way back,we got into the first gate of the apartment complex using using the apartment key card. At this time, there was this Aussie gentleman speaking to his cabby right outside the gate. It’s about a hundred steps to the apartment door where you need to swipe your key card again to get in to the main building. Before we’d gotten in, this gentleman asked us to hold the first gate for him. This isn’t uncommon. If there are a couple of people coming in, we hold the gate for each other – we’re attempting to be good people here, to be polite, social and helpful.

When we reached the second gate to the lower level where the lifts are, this gentleman entered with us. When we finally got to the lift, we asked him what floor he wanted to go to. This is also quite common. He wanted to go to another floor – a floor that we don’t live on, and we politely informed him that we didn’t have access to his floor – our key cards only take the lift to our particular floors. By this time, we’d noticed that he was quite drunk, the trousers of the suit he was in were torn at the crotch, he couldn’t walk properly. My sister, still trying to be a good, nice, polite, helpful person, took him out to the buzzer and helped him call the apartment we thought he was living in. No one answered. This is when he informed us that it was in fact his friends flat, and that his friend was to leave him the key in the letter box. We told him we couldn’t do much more, and it is when we tried to walk away, that things got bad. He stepped between us and the door. He asked us if he could pay to sleep at our place. Now, you can be as helpful a person as you want, but letting a complete stranger that is drunk out of his wits sleep in your house is not something you’d do. If you would, kudos, you’re..awesome? I don’t know. I can’t find a term that fits you well enough. Anyway, we politely refused. My sister even said that there was a kid at home to try and get him away.

Now, this is when it gets really bad. He got aggressive. He kept saying “Why? Why not?”, and we kept saying, “Sorry, we can’t. We just don’t take people we don’t know into our home.” We then offered to get him to a hotel and get him a cab to one. At this suggestion, he bellowed “Will you f**king pay for the cab?”. Keeping my cool, I said that I’d be happy to. I’d already understood that this “gentleman” wasn’t the best person I’d met, and that somehow diffusing the situation and getting him out of the compound would be the best result. Of course, he didn’t share this view. He first abused us – he called us “cunts”, yes, “cunts”. Then he went on to say “You f**king c**ts! You come here and eat up all the taxes that we pay, and you can’t give me a place to f**king sleep at night?”. Yeah right. All the tax we pay is just crap, right? He pushed me against the wall, he kept abusing us, racial slurs, frequent usage of the term “c**ts” and its synonyms, “I’ll f*king bash your face in, you c**t.” and the sort. I was angry – I’m not violent, and I don’t resort to physical force until absolutely necessary, but I knew I couldn’t react – it would just make matters worse. If I haven’t mentioned already, this guy was huge. He was 6’3” or more, well built. Even when my brother in law came down, the two of us couldn’t have taken his person physically. He kept abusing us for about 10 minutes. I’ll let you imagine what a drunk person fond of the word “c**t” is capable of.

Once my brother in law had come down, the two of us somehow managed to calm him down and get him to agree going to a hotel. I’d called a cab already. The operator warned me that the cabby may not drive this drunk person, but I requested her to send one any way. We’d sent my sister up already. This guy had abused her enough, and walked aggressively towards her on a couple of occasions. When she was trying to talk to him, he kept screaming “Keep your hands down you f**king c**t!”, and walking towards her as if he would hit her. I’d put myself between the two to make sure whatever he did didn’t get to her.

In our attempts to calm him down and get him out of the door, my brother in law asked him to go out and check the letter box again. When my brother in law checked it, he found the keys in there. This guy was so drunk that he couldn’t find keys in an open letter box. We gave him the keys and he went up to his friends flat and passed out.

I called the police again. We weren’t going to let this go just yet. The police came about 20 minutes later. The operator told me that the police needed to prioritise. Since I hadn’t gotten hit, this case wasn’t a priority apparently. When the police came in, we told them what happened. They called the apartment the guy had passed out in, but he didn’t wake. They couldn’t get in, they left. They told us that since a friend had left him the key, there wasn’t much they could do. Additionally, since no one had been beaten to death, the most they could do was to talk to this person. Great. If you manage to escape the situation in one piece, the police can’t take action. So, should I have pissed this person off to get him to gaol? Does he have to kill someone to be punished? I don’t know. We were just disappointed that the police didn’t do much. Of course, it did occur to me that us being Indians in Australia had something to do with this, but it’s wrong of me to state it. I don’t know another similar case when Aussies had reported it, and I don’t know what the police did.

Thus, I got out of a bad situation without getting my teeth out on the floor like my weekend shopping. Great experience eh?

My take

As a born Hindu, one of the things we’re taught is “If you do good things, good things will happen to you.” Well, so much for that. We were trying to be nice, and we almost got our faces bashed in.

We pay our taxes, so no, we’re not leeching off Aussies. We pay our way. In fact, I paid 50,000 AUD for my 4 semesters at UTS as an international student. So, please, if you have ignorant friends who think we “immigrants”, as we’re popularly referred to, are leeching off your money, please educate them. We study, we earn, we pay our taxes, we pay for everything we do. We don’t take Aussie money for anything we do. If you think we shouldn’t be taking your jobs, well then, study up!

This event is more significant to me than it would normally be. I’m not shaken up. I’m really not scared of getting beaten up. At least that would’ve gotten this guy into gaol and probably saved the next guy that shan’t be as lucky. A couple of weeks back, when I still lived at university housing, a drunk lady had come up to me to ask me for something. I, as a rule, avoid drunk people. Don’t get me wrong, I drink too – and quite a bit when I’m with friends. However, I’m never out of control, and I’ve never had to ask a stranger for help. I ignored her and walked away. She screamed something about a gentleman to which I mentally replied “Yeah, real lady you are, walking around drunk on the streets.” However, when I thought about it later in the confines of my hostel room, I thought I could’ve done better. I could’ve helped her. So what if she was drunk? May be she did really need help. I felt guilty and I’d modified my rule to “Help people, believe that people are good.” It’s why I decided to help this person in the first place. Now, after this experience, I’m not so certain if I’d made a change for the better or worse. Had I walked away, I wouldn’t have gotten pushed around, or abused, or racially abused. I know that I shouldn’t generalise on the basis of this one experience, but it isn’t right to generalise on the basis of good experiences either – even I’ve had quite a few of them. The one thing you can’t ignore is that one bad experience might leave you with a life long injury. Is it really worth it? What if this person had hit me? What then? What if he had hit my sister? What then? What if he had hit us hard enough to cause us permanent injury? Just because it didn’t happen doesn’t mean that it couldn’t. When he was pushing me around, I wasn’t thinking of “God” teaching me a lesson. Everything is a lesson in hindsight if you survive it. Not everyone is that lucky though.

I’m not helping drunk people any more. Until I know for sure that someone’s worth helping, I’m going to be my normal sceptic self. You may or may not agree with my decision, and it’s yours to make. Please just remember, that whatever you do, your safety is most important. There are better ways of helping strangers than stepping into a situation that might result in you losing teeth.

Taskwarrior, Taskwarrior-server and Mirakel – syncing and carrying your taskslist with you

I’d documented using task warrior to manage your tasks recently. I’d only just mentioned task server in that post. I hadn’t had the time to set it up. The effect of this was that all my tasks were only on my laptop and couldn’t I access them when I wasn’t at it. The simple solution was to use an android client that would sync with taskwarrior – like Mirakel. In this post, I document setting up the task server and then Mirakel. The previous post already documents how one needs to setup and use task. You can use vit which is an excellent front end to task. It’s available in the Fedora repositories for Fedora 20+:

sudo yum install vit


Task warrior server

There’s already a review request put up for this. Threebean’s working on it. It should be available in the Fedora repositories shortly. There’s a copr repo here, but it doesn’t look in sync with the review at the moment. I’ve run a scratch build and put up the rpms here. You can just grab them and install them locally for the time being. Once you’ve installed the package, the instructions to set up the server are quite straightforward:

Generate your keys

$ sudo -u taskd #or su - taskd -> as taskd user
$ cd /etc/pki/taskd #this is where the scripts are placed
$ ./generate #this will generate a couple of new files
ls -l /etc/pki/taskd/
total 60
-rw-------. 1 taskd taskd 1476 Jul 31 12:00 ankur_sinha.cert.pem
-rw-------. 1 taskd taskd 6799 Jul 31 12:00 ankur_sinha.key.pem
-rw-------. 1 taskd taskd 1489 Jul 31 11:57 ca.cert.pem
-rw-------. 1 taskd taskd 6789 Jul 31 11:57 ca.key.pem
-rwxr-xr-x. 1 root root 666 Jan 16 2014 generate
-rwxr-xr-x. 1 root root 647 Jan 16 2014
-rwxr-xr-x. 1 root root 787 Jan 16 2014 generate.client
-rwxr-xr-x. 1 root root 878 Jan 16 2014 generate.crl
-rwxr-xr-x. 1 root root 792 Jan 16 2014 generate.server
-rw-------. 1 taskd taskd 1521 Jul 31 11:57 server.cert.pem
-rw-------. 1 taskd taskd 808 Jul 31 11:57 server.crl.pem
-rw-------. 1 taskd taskd 6796 Jul 31 11:57 server.key.pem
[asinha@ankur-laptop ~]$

When you run the generate script, it’ll generate a client.cert.pem and I’ve renamed them to match the user that I’ll create in the next section.

$ mv client.cert.pem ankur_sinha.cert.pem
$ mv client.key.pem ankur_sinha.key.pem

Set up a user

Choose your username and organization. For example, I picked “Ankur Sinha” as my username and “Personal” as the organization.

taskd add org ORGNAME --data /var/lib/taskd
taskd add user ORGNAME USERNAME --data /var/lib/taskd

This will generate a unique key for your user. Please note it down. It is required when you setup your client to sync with the task server. You can have multiple users set up. Each will be given a unique key.

Start taskd

It should be as simple as:
sudo systemctl start taskd.service

If this doesn’t work, for some reason, try this:
sudo taskd server --data /var/lib/taskd --daemon

Set up your client

You need to copy the client keys to your client’s configuration directory. For example, if you’re using the client and server on the same machine, you need to copy the client certs to ~/.task. In my case, to set up the task client I did:

$ sudo -i
$ cd /etc/pki/taskd
$ cp ankur_sinha*pem ~asinha/.task #client keys
$ cp ca.cert.pem ~asinha/.task #signing certificate
$ chown asinha:asinha ~/asinha/.task/*.pem #make sure the permissions are limited to your user only

Configuring task

You need to configure your client to use the credentials that you created, and to point it to your server. You can either modify ~/.taskrc by hand, or use the task config command – they both do the same thing. To edit it by hand, I did:

taskd.credentials=Personal\/Ankur Sinha\/my-long-key


If I’d used the task config command, it’d be this:

$ task config taskd.certificate ~/.task/ankur_sinha.cert.pem
$ task config taskd.key ~/.task/ankur_sinha.key.pem
$ task config ~/.task/ca.cert.pem
$ task config taskd.server localhost:6544 #on Fedora, we use 6544 for taskd
$ task config taskd.credentials 'Personal/Ankur Sinha/my-long-key

Sync up!

That’s all the setup you need. Now, you run your first sync:

$ task sync init

In the future, you just need to run:

$ task sync

All of this is well documented at the taskwarrior website here:

Setting up Mirakel

Mirakel is quite easy to setup too. You can use the same credentials for the user you created to get Mirakel to sync with your task server. There’s one main difference – instead of placing your certificate files in a folder, you need to quote the keys in the file itself. For example, my Mirakel configuration file looks like this:

username: Ankur Sinha
org: Personal
user key: my-long-key
server : your-servers-hostname:6544

# PLACE contents of ~/.task/ankur_sinha.cert.pem here

# PLACE KEY FROM ~/.task/ankur_sinha.key.pem here

# PLACE CONTENTS OF ~/.task/ca.cert.pem here

Once your configuration file is ready, place it on your android device and add a new Mirakel user using this file: Menu > Settings > Sync > Add (button on top right) > Taskwarrior > Select config file.

Select your configuration file

Select your configuration file

It’ll add a new user. You can then play around with the settings and set up your sync frequency etc. These steps are quite clearly documented here: However, they’re not tailored to use the Fedora rpms, which is why I thought it’d be good to write up fresh instructions.

Now, you have Mirakel up and running:
2014-07-31 04.53.57

A couple of things to keep in mind

  • Your credentials need to be correct
  • Your server should be reachable. This implies that the network should be functional, and the port should be open in the firewall. Please note that you may have to specify the zone if you’re using firewalld.
  • Check /var/lib/taskd/config to see if Mirakel has permissions to sync. It isn’t in the access list by default.
  • The sync is two way. You can add tasks on your phone and they’ll be listed in task on your laptop after you sync them all up.

If you run into trouble, check /var/log/taskd.log to start with. It logs accesses, syncs and errors too.

EDIT: Updated generation portion.

Released the code I wrote for my masters research

In this week’s research group meeting, I asked my supervisor if I could finally release the source code that I’d written during my masters for my thesis. Generally, research code is kept private until the papers related to it have been published. Since both my papers have been accepted at conferences coming up in the near future, my supervisor said it was OK to finally turn the code public. I haven’t picked a license for it yet – all I’ve requested is that my papers be cited. The data bags that I’d used to generate my results are too big to upload – sometimes a couple of Gigs, so I haven’t been able to upload them.

The code can be found here: I generated doxygen documents for my code too. This can be found here:

The code is a ROS implementation of head direction and grid cells, as the papers document. I’d begun implementing place cells, but I ran out of time in my master’s course.

More on my research here:

FUDCon Beijing – Day 2

Pre-lunch – Richard Stallman’s talk

Day 2, or the final day had quite a great session list too. The spotlight before lunch, obviously, was on Richard Stallman’s talk. We’d seen a GNU booth turn up next to our Fedora booth. Quite a lot of GNU stuff was on available there – Stallman’s books, stickers, soft toys etc.

I’d skipped Lennart’s systemd talk to get some work done. Emily had been good enough to get us a room to work in. Most of us Fedora folks were sitting there, hacking away. I did a couple of package updates that upstream release monitoring had pointed out to me.

Much to our surprise, Richard was brought into the same “hackroom” we were sitting in. In a few minutes, a volunteer brought in a lady that wanted a picture with him. She said she was a fan, and Richard promptly replied that he didn’t want fans, he wanted people that will help him in his goal of completely free software. It was the first time I’d seen him in person, and the response, somehow, didn’t surprise me. When Richard was ready, he walked to the main hall and we followed him to our seats there.

His talk was quite how I expected it to be. He was idealist – Aditya and I discussed that he had to be it, as the face and primary driver of Free software. Richard spoke of the advantages of Free software, where he pointed out the numerous back doors that have been found in proprietary software to spy on users. He spoke of the GNU time line, how he had started it, how Emacs and other things came about. At some point of time, he expressed his annoyance to the fact that people confuse GNU and Linux, and free software and open source software. He spoke of how people think Linus is the father of free software etc. I quite enjoyed his talk. At some points, though, I couldn’t help but think that he didn’t really need to use negativeness to put his point across. He didn’t just differentiate between free and open source software, and he didn’t just say how free software is better than the open source philosophy, he went on to stress on why open source wasn’t good enough. If you’ve seen his sessions, you’ll probably understand what I mean.

I do respect him immensely, but like a lot of others, my philosophy does differ from his hard lined one. I think that’s quite expected, though.

Richard Stallman speaking about Free software

The auction

The end of his session was an auction – for the benefit of free software. A GNU soft toy went for about 600 CYN, I think, and an autographed book went for a similar amount. I didn’t bid, of course. It was quite amusing to see his fans outbid each other. He is quite the celebrity in that sense.

After lunch – GPG key signing party!

I spent the entire after lunch session at the key signing party. A few attendees already had GPG keys and knew how the party functioned. However, as is expected, there were quite a few that didn’t have GPG keys, or in fact, Fedora systems. Robert and I helped them set up their keys. We explained the importance of a web of trust. Everyone then went to each other, had a little chat, verified each other’s photo identity, and exchanged GPG keys. I think there were about 20 of us, which is quite a good number. All of us Fedora folks signed each others’ keys and send them to the fedora key server. Hopefully, as time goes on and we meet more of our friends, our web of trust will get stronger and stronger.

Unfortunately, I was so busy at this session that I haven’t any pictures to put up!

We’d thought we’d sit through the session on Gnome Shell Extensions. When we got there, we were informed that the session would be in Chinese – we went back to the hack room until Nitesh’s open discussion on Fedora women began.

Fedora Women open discussion

Nitesh has been quite active with the Fedora Women SIG. I do peep in at times to see if there’s anything I can do to help.

The idea was to see how we can make it even easier for women to join the community. One of the ladies suggested we come up with cute soft toys as swag, like the Suse lizard. I don’t know how serious she was, but I certainly think it’s worth discussing :D.

A general take from this session was that we need to first increase our user base before we work on increasing our contributor base. This makes perfect sense – people that don’t use Fedora are a lot less likely to contribute to it.

Nitesh introducing women in Fedora

Ending ceremony and celebration dinner

The ending ceremony was similar to other events that I’ve attended. The organizers thanked all the volunteers without whom, the event wouldn’t have happened. They thanked us speakers who took the time out to come down and participate in the event. Lots of clapping and cheering.

The organizing team that made the event happen

Jaroslav talked to everyone too. He reminded everyone that “friends” is a core Fedora foundation, and that at the event, we had made many many new friends, and finally met many of the people we talk to frequently over the Fedora communication channels.

Jaroslav at the closing ceremony

Happy hacking!

There was a lavish dinner set up at the Vision hotel. There was a lot of food – sea stuff, breads, dessert, beer, sake. We had quite a fun time. I talked to Martin for a bit before he left. We met the volunteers with Emily and wished them all the best as we took our leave from the dinner.

I really did eat a lot!

This was the end of the FUDCon for us. The next day, we were to head out to a tour of the Great Wall.

FUDCon Beijing – Day 1

Registration and getting started!

We didn’t quite make it to breakfast on Day 1. We’d overslept and headed straight to the conference. Registration was swift – the volunteers had everything already set up already – project booths, registration booths with our IDs, t-shirts, swag and the rest.

My tag

Somvannda at the Fedora Booth

The conference begins

We headed into the main hall for the opening sessions. Emily introduced Kat and Jaroslav who welcomed the attendees and officially kicked off the conference. The hall was quite full, which was really good to see.

Emily introduces Kat and Jaroslav

Once the welcome sessions were over, Tobias talked about Gnome 3.12+. He informed the audience about the planned features in future Gnome releases, such as Wayland support and colour tinting to improve accessibility. Jaroslav and Jiri introduced – the different products, a little bit about COPR and the new ring system that we’re using.

Tobias speaking about Gnome 3.12+

Jaroslav and Jiri introduce

Track sessions

This gave way to the track sessions that we’d all registered to present. The Fedora track was in conference room 8.

The FUDCon Banner

Fedora Videos

Nitesh presenting Fedora Videos

Nitesh started the track with a session on Fedora Videos. The idea was to introduce the project to people. We had quite a good discussion too. Here are some things we found we could work on:

  • Can we translate the captions to our videos using transifex?
  • Can we also place videos on a website that would be available in China?

Both should be quite doable really. We hadn’t really thought about these before.

Fedora websites

Robert introduced the Fedora websites project next. He discussed how it was set up, and the ideas on He intended to show the audience a quick session on submitting patches to the team, but the limited bandwidth didn’t permit us (The Fedora websites git repo is quite large).

Robert presenting the Fedora Websites project

We did get a few tasks from this session too:

  • Completion of the Ask Fedora skin, so that it can be better integrated with the new hub style website
  • Someone asked if the Fedora easy fix page could be translated into multiple languages

The Ask Fedora skin is almost complete, but it still needs some work. We discussed how the easy fix page could be translated, but it doesn’t seem to be straight forward since it harvests information from the trac and bugzilla instances. The static content could be translated. We need to bring this up with infra, see if anything can be done.


Zamir took a quick overview of FirewallD. He discussed both the command line and the GUI interface. I knew most of it, but it was quite a bit of information for new comers.

Zamir presenting FirewallD


Fedora infra is switching form puppet to ansible. Aditya introduced ansible with a quick tutorial. He discussed the logic behind the switch and answered a couple of other questions that the audience had. The infra team is planning a FAD to convert the remaining puppet modules to ansible. There’s quite a bit of work to be done if you’re looking to get started with infra.

A quick introduction to ansible


Martin spoke about Conary. In spite of it being around for quite a while, I’d never heard of it before. Martin discussed the usefulness of conary. It was quite interesting. I met Martin later during the celebration dinner and talked about it a bit. I told him about rpm os-tree that I’ve been reading about on the mailing lists. I don’t understand them much, but they did seem slightly similar to me. Martin said he expects to work a lot more with Fedora in the future.

Martin talking about Conary

ROS on Fedora

The last session for the day was mine. I introduced ROS and why we’d like to get it packaged up for Fedora. The audience wasn’t using Fedora on their systems already so I couldn’t really do the hackfest that I’d intended. I ended up showing them how to make a hello world package on my system. The audience was quite interactive, and I received quite a few interesting comments and questions.

My session on ROS and packaging

End of a busy day

All in all, it was quite a busy day. The talks were most interesting. We, all the Fedora folks, decided to head out to dinner. I managed to find a nice little Mexican pub on Google and we took the train out to it. We weren’t really sure if navigator would get us to the right place, but it luckily did. We had some food – Aditya and Nitesh ordered a gigantic pizza. Jaroslav, Robert, Jiri, Somvannda and I got ourselves burgers. They were quite good. Of course, there was beer – an entire tap. It was quite a good place. The waiters understood a bit of English too.

Dinner and beer

We got back and went straight to bed. It was quite an amazing, hectic day.

FUDCon Beijing – Day -1 and Day 0

The journey to Beijing

I flew out from Sydney on the morning of the 22nd of May. My plane departed at 0640 and I had pretty much kept awake the entire night. After two flights, the first of which I mostly slept through as a consequence, and a quick lay over at Singapore’s brilliant Changi airport, I reached Beijing at 2300 local time, right on schedule. The flights were pleasant enough. My family had insisted that I fly Singapore Airlines – their service is always above par. I ate and drank well. I tried out a new cocktail – the Singapore Sling, had a beer or two. I watched a couple of films – I watched “The secret life of Walter Mitty” again; I gave this new TV series, “True detectives” a try (It’s pretty good); I finished a Poirot, “Cards on the table“, that I was in the middle of reading – it’s an excellent book.

Beijing Airport

I was really looking forward to quickly checking into the hotel at Beihang university – to meet the other Fedora folks that had already arrived earlier that day. Unfortunately, the subways in Beijing only function till 2300 and I was forced to look for a taxi instead. This wouldn’t have been an issue, were it not for the 50 minutes I had to wait to get a taxi. I had clearly forgotten to take this into consideration when I had booked my tickets.

The organizers, Alick and Zamir, had foreseen that there may be some trouble communicating with the locals in Beijing. For example, my chauffeur didn’t speak or understand English. The organizers had put together a quick guide for us foreigners, with important information printed in it in Chinese. I pointed it out to the chauffeur, and he acknowledged it with a cheerful “OK!”. He seemed my age. The stereo was blaring what sounded like Chinese rock – the riffs were good. I enjoyed the taxi drive, probably not as much as the driver seemed to enjoy it, though – he had his arm out of the window, and was waving it around in sync with the music. I couldn’t help bobbing my head to the beat myself.

I do remember wondering where we exactly were, though. My 3G wouldn’t turn on – when you’ve gotten used to always knowing your location on Google Maps, it’s slightly unnerving to be driven around a city as large as Beijing without having the tiniest clue about your whereabouts. I spent the half of my taxi ride philosophising how dependent I had become on technology, and how it had made me less of an optimist – I used to take taxis in India without knowing the routes, just on the basis of an unfounded faith that I’d get to my destination in one piece. There wasn’t an option back then. You just had to trust the cabbie. Fortunately, nothing wrong ever happened to me, in the past, or on this occasion. I did have Zamir’s number, though, and had messaged him saying I had landed and was on way to the hotel. He had replied saying that he was waiting up to get me checked in anyway. It all worked out.

The taxi cost me 114 CYN. The subway would’ve cost me only 27 CYN as I found out later.

The hotel

We were booked in at the Beihang Training Center hotel. By the time I got there, everything had already shut down. Zamir was waiting up, since he had to wake the receptionists to check me in. After finishing up the paper work, Zamir headed back to his room to get some sleep. He needed to wake early the next day to help set up the FUDCon. I went up to my room, 827, that I was sharing with Aditya, who had already checked in earlier in the evening. I hadn’t met Aditya since FUDCon KL. We did a bit of catching up and went to bed – we were both quite tired from our respective journeys.

Day 0

There weren’t any Fedora sessions on Day 0. The FUDPub was later in the evening and we had the afternoon to ourselves. We headed out to lunch, looking for a vegetarian restaurant so Aditya could eat. I think we spent about an hour and a half walking around the place and finally gave up. On our way back, we discovered a KFC that I ate at. Aditya wasn’t too sure of the oil the fries had been dipped in and didn’t eat there. As we got closer to the hotel, we discovered a Pizza hut outlet. Luckily for Aditya, it served vegetarian pizzas. Both Aditya and I got a pizza each and went back to the hotel to rest a little.

We realized we still had a bit of time on our hands before the FUDPub started at 1800. We decided to check out the Beijing Zoo and see some Pandas. We probably wouldn’t get the time once the sessions had begun. Luckily, Google Maps still worked. We managed to figure out how the subway worked and headed out to the zoo. The first thing we did was head to see the Pandas:

A cute big ball of fur!

I think there were three Pandas in three separate enclosures. It was quite hot and the Pandas were quite lazy as a result. There were quite a few other animals too. Check out my album on Flickr to see them all. We did a bit of shopping too – Panda soft toys, key rings and the sort.


We got back in time for the FUDPub which was quite near to where we were put up – Sculpting in Time. I met the other Fedora folks there – Alick, Jaroslav, Jiri, Nitesh, Somvannda and Robert. I met Emily (who was heading the Gnome side of things) Kat and David, who had come down to attend the Gnome summit.

More FUDPub!

The menu for us consisted of a set of pizzas, rice meals and some dessert to choose from. Jaroslav and I took the pepperoni pizza. Nitesh and Aditya had the Margherita IIRC. Unfortunately, the number of people was a little too much for the place to handle. I ended up eating my rice meal before my pizza came in. There was a bar available – most of us got ourselves a beer.

Once we finished with the FUDPub, we headed back to the hotel. The hotel served a local beer that cost only 3 CYN. Obviously, we had a few before we went up to our rooms. It was quite a bit of fun. We talked about quite a few things, including but not limited to Fedora. At one point of time, the waitress came up to our table and said something in Chinese. We thought she wanted us to use coasters to keep our beer on, to not dirty the table cloth – which was slightly weird. Turned out she wanted us to pay first – it had nothing to do with coasters. She got a nice lady who spoke English to come up and tell us. It was quite funny at the time, and all of us had a good laugh over the episode.

3 CYN beer

That’s all we did. We went to bed quite excited about the conference the next day!

Managing tasks and generating timesheets using taskwarrior

A while back, I had blogged on how one can use gtg and hamster-time-tracker to manage their tasks, and track them. Now, I personally prefer the terminal. A few days ago, I was talking to threebean and he pointed me to his time sheet. Helpful as always, threebean told me how he’d generated the time sheet. I document the steps here for any one else that’s interested in doing the same.

What you need

$ sudo dnf install ansi2html task #use yum if you prefer

This will provide you with the task command. Read the quick tutorial on using it here. As usual, RTFM at $ man task.

Generating time sheets

Then, you need two shell scripts. The first, generates your time sheet from task:

# File :
# This generates timesheet data for my fedora tasks only

source /home/<USER>/.bashrc
start=$(date +$fmt -d $phrase)
end=$(date +$fmt)
echo " (generated at $(date))"
echo " -- Tasks completed from $start to $end (back $phrase) -- "
/usr/bin/task work_report $filter end.after:$start
echo " -- Upcoming tasks -- "
/usr/bin/task next $filter
echo " -- Blocked tasks -- "
/usr/bin/task blocked $filter

echo " -- Blocking tasks -- "
/usr/bin/task blocking $filter

echo " -- Summary -- "
/usr/bin/task summary $filter
echo " -- History -- "
/usr/bin/task history $filter
/usr/bin/task ghistory $filter
/usr/bin/task burndown.daily
/usr/bin/task burndown

The second just converts it into an html file that you can host. This one looks like this:

# File : 
# Generates reports from my task data

today=$(date +%Y-%m-%d)
/home/<USER>/bin/ | ansi2html > /tmp/timesheet-fedora.html
/home/<USER>/bin/ | ansi2html > /tmp/timesheet-all.html
cp /tmp/timesheet-fedora.html ~/timesheets/$today.html
cp /tmp/timesheet-fedora.html ~/timesheets/latest.html

cp /tmp/timesheet-all.html ~/timesheets/$today-all.html
cp /tmp/timesheet-all.html ~/timesheets/latest-all.html

scp -i /home/<USER>/.ssh/id_fedora_rsa /tmp/timesheet-fedora.html <FAS USER>$today.html
scp -i /home/<USER>/.ssh/id_fedora_rsa /tmp/timesheet-fedora.html <FAS USER>
rm /tmp/timesheet*.html

This will generate a pretty time sheet for you, like the one threebean hosts, or the one I host. Taskwarrior is quite the same as gtg. I’ve moved to it because I prefer using the terminal as much as possible, and it lets me create sheets where I can keep an eye on my tasks. Yes, I’ll continue to maintain gtg in Fedora. Don’t worry ;)

Customizing your time sheet

You can customize your time sheets and other options by creating a ~/.taskrc file. More themes are available in /usr/share/doc/task/rc/

My .taskrc looks like this:

# Files
include /usr/share/doc/task/rc/dark-blue-256.theme
report.work_report.labels=priority,project,description,completed,entered on,age

Play around with it. There’s quite a bit you can do.

Some more: taskserver

I haven’t tried this out myself. I don’t need it yet. However, you can run a taskserver on your host and log tasks from anywhere over the internet. Documentation can be found here. If you do figure it out, please write a blog post documenting it for Fedora. threebean’s working on the taskd package already.


ROS/RPM IRC workshop series

I intend to take a ROS RPM packaging session at the upcoming FUDCon at Beijing in May.  With that in mind, I’d like to take a couple of workshops to help interested parties learn the tools before the final hack session, so that we can get some actual work done at the event. A
workshop a week should be fine:

  • Week #1: Introduction to ROS – what is ROS, why it’ll be good to package it up for Fedora
  • Week #2: Introduction to RPM packaging – a basic introduction where we’ll walk through the hello world package
  • Week #3: Introduction to SCL and ROS packaging
  • Week #4: Q&A session

The FUDCon is still 7 weeks away. That gives us enough time.

Please forward this announcement to the regional mailing lists, and anyone interested in the topics, *especially* people that plan to attend the FUDCon and contribute to Fedora as package maintainers.

If you’d like to attend the sessions, please fill in the whenisgood event organizer before Sunday, April 13. We will begin next week.

Other links:


Gnome 3.12 (3.11.90) on Fedora 20: A peek!

Updating and testing

So, the Fedora Desktop SIG have been discussing how Gnome 3.12 should be made available to Fedora users. Generally, Fedora discourages major updates to packages. The ideal scenario would be if Fedora 21 and Gnome 3.12 released close to each other, but it isn’t going to happen this time. As a result, there’s talk of provide Gnome 3.12 as an update in Fedora 20. The initial builds have been put on COPR for volunteers to test. I took the leap today, with two of my machines. The upgrade was quite easy, and didn’t require a lot of manual intervention. The one issue you may run into would be multilib errors since the COPR repositories do not provide multilib packages (an x86_64 COPR repo will not contain any i686 packages at all.). So, if you’re on an x86_64 system and have some i686 packages that also need to be updated as part of Gnome 3.12, you’ll run into errors with both dnf and yum.

For example, this is what I ran into with yum:

> Error: Protected multilib versions: libwayland-server-1.4.0-1.fc20.x86_64 != libwayland-server-1.2.0-3.fc20.i686
> Error: Protected multilib versions: libwayland-client-1.4.0-1.fc20.x86_64 != libwayland-client-1.2.0-3.fc20.i686
> Error: Protected multilib versions: vala-0.23.3-1.fc20.x86_64 != vala-0.22.1-1.fc20.i686
> Error: Protected multilib versions: glib2-2.39.90-1.fc20.x86_64 != glib2-2.38.2-2.fc20.i686
> Error: Protected multilib versions: gdk-pixbuf2-2.30.5-1.fc20.x86_64 != gdk-pixbuf2-2.30.3-1.fc20.i686
> Error: Protected multilib versions: pango-1.36.2-1.fc20.x86_64 != pango-1.36.1-2.fc20.i686

DNF doesn’t provide proper error reports at the moment. I got this unhelpful message when using the --best flag:

> Error: cannot install both gdk-pixbuf2-2.30.5-1.fc20.x86_64 and
> gdk-pixbuf2-2.30.3-1.fc20.x86_64. cannot install both
> glib2-2.39.90-1.fc20.x86_64 and glib2-2.38.2-2.fc20.x86_64. cannot
> install both libwayland-client-1.4.0-1.fc20.x86_64 and
> libwayland-client-1.2.0-3.fc20.x86_64. cannot install both
> libwayland-server-1.4.0-1.fc20.x86_64 and
> libwayland-server-1.2.0-3.fc20.x86_64. cannot install both
> pango-1.36.2-1.fc20.x86_64 and pango-1.36.1-2.fc20.x86_64. cannot
> install both vala-0.23.3-1.fc20.x86_64 and vala-0.22.1-1.fc20.x86_64

The solution is quite simply to manually grab these i686 packages from the COPR repo and update them before running the complete Gnome 3.12 update.

Once the update is done, you log out and back in, and you have a new Gnome version to play with. First things you notice: broken extensions.

Installed extensions

Upstreams will slowly begin to update their extensions as 3.12 gets closer to release, but it’s always good to test extensions and let upstreams know if they’re working or not. In a vanilla install, no extensions will work, since the version string in their sources only specifies that they work with Gnome 3.10. Gnome devs, quite intelligently, provide a hidden option that gets the system to skip this version check:

# gsettings set disable-extension-version-validation true

Please only use this if you’re testing extensions. It isn’t meant to be enabled for daily use. It’s for debugging purposes only.

Some of my extensions work just fine, others don’t. I’ve filed issues upstream for caffeine, hamster-time-tracker-extension and the MPRIS2 extension. If you’re using extensions, please let the upstreams know if they don’t work with 3.11.90. That way, they’ll have time to update their extensions before 3.12 is formally released.

So, what’s new?

Quite a few things, really. The complete release notes are here. I noticed the gnome-software update. It now lets you rate your applications. There’s even a shell search provider for software (Please excuse the large image, I was on my dual monitor set up at the time)

Gnome-software 3.12

Gnome-software search provider

Another update is gedit. It’s been ported over to GTK3 received major UI update and fits in better with the environment now (I was already using GTK3 as pointed out in the comments):

Gedit new

There are quite a few other changes too, like the Wayland support. I haven’t checked them all out yet.

You can help!

Well, of course you can! I’ll advise setting up a test vm and not using your work machine for this, just in case. Update, test, file bugs at relevant places and help make Gnome 3.12 a better experience for Fedora users, and all users in general! Cheers!

NEURON simulator on Fedora

I’ve been meaning to package up NEURON for Fedora for a while now. From the NEURON website:

What is NEURON?


  • is a flexible and powerful simulator of neurons and networks
  • has important advantages over general-purpose simulators
  • helps users focus on important biological issues rather than purely computational concerns
  • has a convenient user interface
  • has a user-extendable library of biophysical mechanisms
  • has many enhancements for efficient network modeling
  • offers customizable initialization and simulation flow control
  • is widely used in neuroscience research by experimentalists and theoreticians
  • is well-documented and actively supported
  • is free, open source, and runs on (almost) everything


It’s quite an old piece of software. It took me a while to hack rpms out of the source code. The rpms probably won’t make it through a Fedora review in their current state, so I’ve put up a copr repository instead:

The builds work, as the screenshot below will show. I’m still new at NEURON myself, so it’ll be a few weeks before I’ll have all the functionality tested out. There are tutorials strewn over the interwebs, please just search for them yourselves.

NEURON in action

NEURON in action

If you’re a computational neuroscientist using Fedora, this is a little bit of good news for you! Cheers!