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.

Hello research world!

It’s been just about a year since I started my research career as a masters student here at the University of Technology, Sydney. I’m working on bio-mimetic navigation for this course, focussed around computational modelling of head direction cells. This post is a traditional “Hello world!” post and documents my work in general.

As expected, a research course is completely different from any other. Firstly, I have no classes to attend, no assignments to work on, no exams to study for. This doesn’t imply that I haven’t any work. A year into my course, I think a structured coursework degree is much easier to negotiate than a self structured research degree. For instance, in a coursework degree, you know exactly what to study, you have a fixed schedule to follow, you know exactly how you’ll be graded. In a research degree, however, you need to find your own material to study, you need to plan your own schedule, you need to have results that you think will get you a good grade. While students run off on holiday after their exams, I still go back to work every day! The most difficult part, perhaps, is the amount of self discipline that you need to possess. I regularly struggle with this: waking up early, following a fixed schedule, sleeping on time, following my day plan; aren’t really easy to carry out when you don’t have deadlines to scare/motivate you. As a result, I spend quite a lot of time in introspection (refer to my post on journal writing).

An introduction to my research

I work in an area called “bio-mimetic navigation“. As the name suggests, it’s simply about mimicking the various navigational systems found in nature, and if possible applying them to robotics. Modelling biological navigation can be done at different levels, though. I work on a neuronal level with head direction cells. These are specific neurons that have been discovered in the rat hippocampus that maintain information about the rat’s heading. Of course, I can’t go into the details of the system that have been discovered over the three decades of research here. The wikipedia page is a good place to start for any one interested.

Why bio-mimetic navigation?

When I started off with my course, my research topic was much broader: “mobile robot navigation in a dynamic environment”. It was designed to be broad enough to give me the opportunity to review literature and decide for a focus area by myself. Like everyone, I began with classical robotics. I read on SLAM, inertial navigation, sensor fusion and learnt quite a bit about the navigation systems that robots utilize, the concepts that make up these systems. A few weeks into my literature review though, I tried to compare these methods to the way I navigate personally. I found that I hardly used any of the classical robotic techniques. “Why then, should robots use them?”, I wondered. Curious, I began reading on animal navigation, and ran into bio-mimetic navigation. I learnt how animal navigation is very very different from classical robotic navigation techniques. I now belong to a school of researchers that are interested in developing navigation techniques from nature, and in comparing these with classical robotic techniques. I’m very new to the field though, but after this two year masters course, and a Ph.D. to follow, I hope to be right in the thick of things.

My work with head direction cells makes my research multidisciplinary. I need to know a little about neuroscience, along with my computer science basics. Since I’m a computer science graduate, my knowledge of neuroscience isn’t as good as I’d like it to be, but it’s getting better every week.

Status

The goal attached to my masters course is to prepare me for a Ph.D. degree. While I did know that I wanted to work with robotic navigation, with neural networks, an undergraduate degree didn’t give me enough depth of knowledge to make an informed decision on the exact research problem that I wanted to work on. The masters course, therefore, gives me much needed time to read my literature, decide my stream and develop skills for a career in research. While my masters plan is closely aligned to my goal, I’m also going to try and make some contribution to the field, however small. (It’s always good to have a few articles published when you’re a new researcher looking for opportunities to grab.)

At present, I’ve read many *many* papers on head direction cells and their modelling. I’m currently working on extending one of these models, my contribution to the field. I was recently assessed, and my assessors decided my work was good, and that I could carry on my course here for the remainder of the course. If you’re interested, you can read view my assessment presentation and my report here. My assessment report contains quite a comprehensive literature review. The reference list will be quite helpful to people interested in the field. (If you do pick any thing from my report, please do cite it).

I’m now engaged in making some contribution to the field. I’ll post again when there’s something worth reporting. Cheers!

Donate to 0ad today!

Kill them all!

0ad is an awesome awesome awesome game! For anyone who’s played an Age of empires style game, you absolutely must try 0ad!

On Fedora, run:

sudo yum install 0ad #and start playing!

Game development isn’t easy, and 0ad is requesting donations. I just donated the little that I could.If you have a little to spare, please donate and make this awesome game better!

Fedora 20: first impressions and more

I accepted my fate.

I accepted my fate.

I went ahead and updated to Fedora 20 using the Alpha RC3. One reason is to help test it, provide karma etc., the other is that I simply couldn’t wait to use the new shiny packages!

Installation

I used the Desktop Live media off a USB. The installation went off without a hitch. It was quick, reused my /home partition and didn’t crash even once.

Post installation

The new Gnome3.9 is pretty good. There are a couple of changes that I’m still getting used to:

  • The new status menu is slightly buggy, but the issues are all known: the network icon tends to disappear.
  • The new status menu doesn’t have the “disable notifications” switch any more. It’s supposed to be moved to the notification settings in the left bottom corner of the notifications tray. It didn’t land in 3.9 though
  • Gnome terminal doesn’t let me use Alt as Meta in irssi. I’m still looking at how to configure this. Any one have any hints?
  • The new dhclient update was buggy, and my negative karma to the update got it unpushed ;)
  • mpd from rpmfusion isn’t updated to work with the ffmpeg in F20. It needs to be built from git, since the fixes required aren’t present in the latest 0.7.15 release. I’ve built an RPM here (SPEC/SRPM here) that you can use until it’s fixed in rpmfusion.
  • Byobu and gnome terminal both tend to crash randomly sometimes. It’s something related to mc I think, but I haven’t been able to reproduce it.

I’m going to keep testing and giving karma to packages. You can do it too, you can just use a VM instead of an actual install. There is a lot of work to be done in other areas too. If you have the time, consider helping out. A good place to start with simple tasks is the marketing list. Just keep an eye out on the announce list and the planet and you’ll find something or the other to do. ;)

Anyway! Happy testing!

Minutes from last night's Fedora Medical IRC meeting

Summary

The meeting last night was a really good one. We got quite a few details sorted. We’re finally moving towards creating a live image that we can give out to folks to try and give us feedback on.

The links that zodbot generated for us are:

HTML Logs

HTML minutes

Text log

Text minutes

I stupidly used #task instead of #action, and therefore the minutes have no action items at all. I’ll put the action items below:

Action items: work to be done

  1. FranciscoD update fedora medical trac tickets to reflect current state of packages
  2. sjodogne open ticket for 3D slicer
  3. FranciscoD open a trac ticket also, so that folks who didn’t make it to the meeting can comment and make suggestions
  4. mrceresa package and start review of seg3d2
  5. mrceresa file new trac ticket for seg3d2
  6. FranciscoD get in touch with design team spin wrangler and request a post on how the spin is made
  7. sebp SSlater sjodogne FranciscoD : catch hold of any new volunteers who’d like to help and get them started

Plans in a nutshell

We’ve already packaged up most of the software that is required for the creation of a spin. The one issue is that we have multiple use cases. At the meeting, we identified two:

  1. Medical practitioners
  2. Researchers

Please read the logs for complete details on this classification.

The idea currently is to package up the higher priority packages and make two unofficial spins. We’ll then use these unofficial spins to collect feedback and further improve our package set. The improved package set will then be proposed as an official Fedora Medical spin. It’s still a far way off, but it’s good to at least get started on it.

We need more help!

Here are areas that you can help us out in:

  1. Package maintainers: we need quite a few more package maintainers who can help us maintain all this software in Fedora. If you’re not yet a package maintainer, you can start by co-maintaining a package. Just drop us an email and we’ll help you get started.
  2. Spin wrangler: sebp and sslater are already looking into this, but we can always use a few more hands here. This entails creating a fedora spin and testing that it boots etc. just fine. I’m going to get in touch with the Spins SIG and see if we can just use the fedora system to generate these for us too, so the work here would probably not be very complex. I just don’t want to start it myself since I might not have cycles to keep up with it
  3. Testers: Folks that just download and see if the software on these spins actually work and give us valuable feedback
  4. Trac wrangler: Just someone who’ll keep an eye on the trac, update milestones etc. and keep everyone on their toes about tickets!

We’ll try and keep working on the spins now. Join us if you have the cycles! Cheers!

EDIT: I hang around in #fedora-medical on Freenode. Ping me if you have something to talk about!

Fedora medical IRC meeting today

A fedora-medical IRC meeting will be held in #fedora-meeting/-1/-2 later today. Please join us if you’re interested in the SIG. The meeting will discuss the current state and what we must do to quickly get an unofficial spin out to collect feedback. This is my mail to the SIG with a rough draft of the agenda:

1. Currently packaged software
2. Pending software
2a. Software in the review list
2b. Software not yet packaged at all
3. Software to be included in the Fedora Medical Spin
3a. Details like what desktop should it be based on (default package
set)
3b. Do we have some folks who can work on making an unofficial spin for
the time being? (until we make it an official spin)
4. Do we have any users we can give this media out too for feedback?
5. Do we need to maintain documentation on how this software is to be
used? Fedora docs? Wiki pages?
6. Who's working on what?
7. Any new folks who'd like to join in and help out!

The meeting is at 12 noon UTC. Please check your local time here.