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

vit-screenshot

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 generate.ca
-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 client.key.pm. 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.server=localhost:6544
taskd.credentials=Personal\/Ankur Sinha\/my-long-key

taskd.certificate=\/home\/asinha\/.task\/ankur_sinha.cert.pem
taskd.key=\/home/asinha\/.task\/ankur_sinha.key.pem
taskd.ca=\/home\/asinha\/.task\/ca.cert.pem
taskd.trust=yes

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 taskd.ca ~/.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: http://taskwarrior.org/docs/server_setup.html

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

Client.cert:
-----BEGIN CERTIFICATE-----
# PLACE contents of ~/.task/ankur_sinha.cert.pem here
-----END CERTIFICATE-----

Client.key:
-----BEGIN RSA PRIVATE KEY-----
# PLACE KEY FROM ~/.task/ankur_sinha.key.pem here
-----END RSA PRIVATE KEY-----

ca.cert:
-----BEGIN CERTIFICATE-----
# PLACE CONTENTS OF ~/.task/ca.cert.pem here
-----END CERTIFICATE-----


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: http://mirakel.azapps.de/taskwarrior.html. 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: https://github.com/sanjayankur31/bionav. I generated doxygen documents for my code too. This can be found here: http://ankursinha.in/files/research/bionav-doc/index.html

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: http://ankursinha.in/blog/research/

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.


20140525_104418
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.


20140525_165656
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.


20140524_180544
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.


20140525_175855
Jaroslav at the closing ceremony


20140525_180401
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.


20140525_190425
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.


20140524_101528
My tag


20140524_124140
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.


20140524_092837
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 Fedora.next – the different products, a little bit about COPR and the new ring system that we’re using.


20140524_101342
Tobias speaking about Gnome 3.12+


20140524_102833
Jaroslav and Jiri introduce Fedora.next

Track sessions

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


20140524_110059
The FUDCon Banner

Fedora Videos


20140524_111627
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 Fedora.next. 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).


20140524_114638
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 Fedora.next 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.

FirewallD

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.


20140524_145346
Zamir presenting FirewallD

Ansible

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.


20140524_142850
A quick introduction to ansible

Conary

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.


20140524_162205
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.


IMG_9778
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.


2014-05-24
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.

20140522_231701
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:

20140523_161135
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.

FUDPub

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.

20140523_192530
FUDPub
20140523_192544
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.

20140523_215713
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:

#!/bin/bash
# File : timesheet.sh
#
# This generates timesheet data for my fedora tasks only

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

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

echo
echo
echo " -- Summary -- "
/usr/bin/task summary $filter
 
echo
echo
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 : make-report.sh 
# 
# Generates reports from my task data
#

#!/bin/bash
 
today=$(date +%Y-%m-%d)
/home/<USER>/bin/timesheet.sh | ansi2html > /tmp/timesheet-fedora.html
/home/<USER>/bin/timesheet-all.sh | 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>@fedorapeople.org:./public_html/timesheets/$today.html
scp -i /home/<USER>/.ssh/id_fedora_rsa /tmp/timesheet-fedora.html <FAS USER>@fedorapeople.org:./public_html/timesheets/latest.html
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
data.location=/home/asinha/.task
 
_forcecolor=yes
defaultwidth=160
 
include /usr/share/doc/task/rc/dark-blue-256.theme
 
report.work_report.description=now
report.work_report.columns=priority,project,description,end,entry,entry.age
report.work_report.labels=priority,project,description,completed,entered on,age
report.work_report.sort=project+,end-
report.work_report.filter=status:completed
journal.time=on

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.

Cheers!

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:

Pre-requisites:

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 org.gnome.shell 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?

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: http://copr.fedoraproject.org/coprs/ankursinha/NEURON/

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!

Time and task tracking

Being a research student is really tough. I mean tough. The most difficult part is keeping up the self discipline, day after day, week after week. As a research student, you make your own schedule, you even make your own syllabus pretty much. I handle the syllabus part just fine, but I struggle with maintaining a disciplined schedule. It takes a while to get into a stable rhythm where you work according to plan and remain focussed on the task at hand, for however long it takes. On the other hand, it’s really easy to upset said rhythm: a late night coding spree, a night out with friends, an unexpected task that makes you diverge from your plan for the day etc. are often sufficient to make me sleep late and mess up the next day. Self discipline requires commitment, and a lot of hard work. Luckily, I’m not alone in this struggle. Here’s a helpful post on improving self discipline: http://www.pickthebrain.com/blog/self-discipline/. Since I spend most of my day at a computer, I went around and looked for tools that would help me keep focussed on my work; keep me away from distractions (yes, Facebook is a distraction); and help me work according to the plans I make.

Tools I use

Here is my set up. I use the simplest tools, and whatever is available in the Fedora repositories. Some of you might find them useful.

Leechblock

Leechblock

Leechblock

A simple Firefox add-on that serves as negative reinforcement when you have that urge to check Facebook, or your Gmail. I even put Fedora sites in the list during the hours I work at my laboratory on my research. Of course, it can be bypassed, but it reminds you that you need to focus on your work and that it isn’t the time to enter the internet black hole yet.

Leechblock’s really helped me fight what I call “notification slavery“, where I check my mail or social networking website every few minutes for activity.

Getting things GNOME

Getting things GNOME

Getting things GNOME

This is an amazing task manager. I used the Gnote method outlined here in the past, but I made the move to GTG a while back and haven’t looked back at Gnote since. I’ve actually switched to Bijiben for note taking too. I find using GTG to be a much better way of managing my tasks really. You can add tasks as you plan them out, add start and due dates, categories and tags. Your tasks are colour coded so you know when you haven’t finished one on time. A bunch of helpful plug-ins extend the application. For instance, a bugzilla plugin lets you quickly add a bug you need to look at later. Another plug-in lets you communicate with the hamster time tracker (next). Of course, it’s in the Fedora repositories:

sudo dnf install gtg

Hamster time tracker

Hamster overview

Hamster overview

Hamster provides an easy way of tracking your activities at work for later introspection. GTG and Hamster work quite well together, so you can add your tasks to GTG and track them using Hamster with a single click. There’s also a gnome-shell extension available that makes it even easier to track your tasks.

Hamster GNOME shell extension

Hamster GNOME shell extension

sudo dnf install hamster-time-tracker

Evolution

Evolution calendar view

Evolution calendar view

I use Google Calendar to plan my day. Gnome online accounts works really well with Google services. I keep Evolution open almost all day in calendar mode to see what appointments I have in the day. Gnome shell has a calendar in the top panel too. GTG is supposed to sync with Evolution’s task list too, but I haven’t gotten it to work on Fedora yet. Peter said the back end needs to be updated to use the new GTK3 evolution data server bindings. I need to talk to upstream about this (/me adds to GTG task list).

Taskjuggler

Taskjuggler

Taskjuggler

All the tools listed above help me in the short term. Taskjuggler is something I use to make long term plans. For example, I make my masters research plan using Taskjuggler. I don’t use it quite as much as project managers do, but it does help me decide how I’ll go about my work. I used taskjuggler to plan the Fedora 20 Election cycle too. You can generate ICS files etc. quite easily. It does have a slight learning curve, but you can do quite a bit once you learn how to use it. Jaroslav uses it to plan the Fedora schedule too.

sudo dnf install rubygem-taskjuggler

There’s planner in the repositories too, which is a simpler, GUI based too. Here’s a tutorial on how to use it.

sudo dnf install planner

Labyrinth

A lot of people use tools to make mind maps that help them work. I don’t use them that much, but they do come in handy when you’re trying to visualise a lot of information, like a research paper. I use labyrinth for my work. It’s a rather simple tool. More serious mind mappers might want to look into vym or freemind.

Labyrinth mind mapping tool.

Labyrinth mind mapping tool.

sudo dnf install labyrinth
sudo dnf install freemind
sudo dnf install vym

Lifeograph

Introspection is an important part of the self improvement process. I also need to note down my research thoughts from time to time. Lifeograph is a great journal application. that I use to maintain both my research and personal journals. There are a few more journal applications that I tried out. I’ve already reported my findings here.

Lifeograph

Lifeograph

sudo dnf install lifeograph

Summary

These tools are only supposed to aid one in their work. There isn’t any substitute for hard work itself. Over a period of time, everyone tends to settle with a system that works for them. Some of these might be worth adding to your set up. Cheers.

Edit: Added lifeograph and labyrinth.