Advertisement
Article main image
Mar 2, 2018
This article is part of a series called Editor's Pick.

I will show you two excellent geek tools to manage your sourcing tasks. This is an excellent tutorial if you are learning to code or if you want to elevate your technical abilities.

These are not ten excellent tools or one of those articles that has a large number of OK items. These are just 2, and they are Wowsome:

  • Taskwarrior for task management.
  • Pomodoro timer for getting things done.

I can has sourcing skills?

Is “I can has” still a meme? Or too old?

 

I can Has Sourcing Skills?

 

In sourcing, these are excellent skills to have, right?

  • Organizational
  • Time management
  • Getting things done.

Organizational is about setting priorities and being organized with the data that you manage.

Time management is about breaking down your work into tasks and estimating how much time it will take you to complete them.

And getting things done is about actually completing these tasks.

There are a lot of tools out there for project management and task management. All sorts of web apps and mobile apps. Some do too much. Others too little.

The Usual Suspects

I used a lot of task management tools over the years.

A while back I used MS Project. You gotta love those Gantt charts 🙂

At some point, I moved to Basecamp2. Web-based. Very simple to use. Then moved to Basecamp3. Also an awesome tool.

I used (and still use) Trello to have the Scrum Board experience. Todo. Doing. Done.

There are many other web and mobile apps.

Focusing is really hard

The primary challenge of learning atechnology is focusing.

If you are on a quest to learn programming (aka “learn to code”) you need to master two more skills:

  • Attention to detail.
  • Focus

If you are writing an email and you miss a comma. The application will allow you to send the email regardless if your grammar is good or bad.

But if you miss a comma writing code, you might be in trouble.

Just google this: semicolon meme

 

Semicolon Meme

 

You might also get these impressive results:

  • Hundreds of lines of code…looking for one missing semicolon.
  • Didn’t sleep for two days…because of a semicolon.
  • Fix one semicolon error…27 new errors.

How to focus when there are so many distractions. There is Twitter, Facebook, a window here and there.

To give you some context…I am on a quest

Every day I follow a routine. During the day I am growing teams. During the night I study programming.

My background is engineering, and early in my career, I did C. Then a little bit of Java. Worked with neural networks before it was cool. Did some Ruby on Rails.

I am on a quest to conquer data science. Last year I started with R and took some data science courses. I also attempted to take Andrew Ng’s Machine Learning course. The one with all the crazy math about gradient descent. After attending my first Pycon, I decided moving to Python full time.

I also started a course in AWS to become an AWS Certified Developer. I am registered for a bunch of other courses in Coursera and Udemy.

The other day I was able to capture traffic coming out of my phone to reverse engineer an API. Then decided to get a used android phone and signed up for a pentesting course. I wanna be like Mr. Robot.

A lot of things to learn. My night shift usually starts at 9 pm or 10. Some days I hack, and some days I don’t. Often I use the weekends.

What’s the best way to manage all this?

The Terminal

I am a big fan of the command line.

The command line is a way to talk to the computer using an interface called a Terminal. In Windows is called the Command Prompt.

If you are on a Mac just search for an app called Terminal. It should be installed already.

When you open it, the cursor has a dollar sign and maybe the cursor is blinking as if it were expecting you to type something.

 

Terminal on Linux

 

Hollywood never accurately shows what a real Terminal looks like.

A Terminal is just a dollar sign and a blinking cursor. But for Hollywood, that’s too boring 🙂

A secret that programmers don’t want you to know

If you want to become ultra-focused and ultra-productive with focus superpowers…

…you need to stay in the Terminal.

Anything else is a distraction.

Why do you think a programmer has like four monitors?

Programming follows the notion that if you have more than one window on the same monitor, then it is a health hazard…sometimes a crime.

  • One monitor to write code.
  • One monitor for the Terminal.
  • One monitor for email.
  • One monitor for Slack.

An old friend had this coding setup:

 

Coding Setup Matrix Monitors

 

One of the most famous tech bloggers CodingHorror has been writing about multiple monitors and productivity for years. There is even university dedicated research on this topic.

There are ways for avoiding having multiple monitors for different things while using just one window. But that’s too hardcore for this article. If you want to learn more about that, search for tmux.

With tmux you can have 1 terminal divided into multiple panes and tabs and run all sorts of different applications.

For instance, a typical setup for a web developer is to have a Terminal window divided into three panes. One for writing code. One for server output and another one for the Terminal.

The Pomodoro Technique

I have been using the Pomodoro technique on and off for a long time to get things done.

The idea is to break down work in intervals such as:

  • Choose a task.
  • Set a timer for 25 minutes and work on the task.
  • Take a five-minute break.
  • After four pomodoros take a more extended break, say 20 minutes.

 

Pomodoro timer hardware

 

During the Pomodoro, you only work on that task with no distractions. No switching music, or looking at your phone or looking outside or looking at your email. Just work on that task.

You don’t have to finish that task, but at least you are ultra-focused working on it. At some point you will create better estimates on the time it takes to complete one.

A good example is time estimates in programming. I shouldn’t say that programming (aka “learn to code”) is easy. Because it’s not. And it’s often very uncertain. Writing some code can open up errors in other places, and you can spend a long time troubleshooting something as simple as a semicolon or something more complicated.

Of course, you can adapt your timing to what you think is best. For instance for my quest. I do pomodoros of 45 minutes. Then take a 10-minute break:

  • Choose a task.
  • Work for 45 minutes.
  • Take a 10-min break.
  • Next pomodoro.

There are all sorts of web and mobile apps to get the pomodoro timer. Some have task management. But they are not on the terminal.

I like to keep everything in the terminal so I can focus.

2 Geek tools to manage your sourcing tasks

I will show you two excellent tools to accomplish your sourcing tasks or your coding tasks or anything that requires focusing on getting things done.

  • Taskwarrior for Task Management.
  • A Pomodoro Timer in Python.

Taskwarrior for Task Management

For a while, I have been using this tool called Taskwarrior, and it looks like this:

 

Taskwarrior to conquer Data Science with Python

 

I like it because it uses the command line.

You can install Taskwarrior on Windows, Mac or Linux.

For Linux is easy. Ubuntu:

$ apt install taskwarrior

If it says you need to use sudo then append that to the beginning:

$ sudo apt install taskwarrior

In Linux Fedora is easy too:

$ dnf install taskwarrior

On Mac. If you have the package manager homebrew. Google: install homebrew on mac. Then you can install it easy too:

$ brew install task
$ brew install taskd
$ brew install tasksh

For Windows. The easiest is to install first Cygwin, a Linux-like interface to simulate the Terminal. In one of the install steps, it will ask you to choose which modules to install. Just select the one that says task.

Once installed, it is straightforward to use if you know the commands.

To add a task, I use this:

$ task add project:python Write awesome lesson learned due:today

To update a task, I use this:

$ task 1 modify due:monday

To get a list of tasks:

$ task list

To complete a task:

$ task 1 done

There are all sorts of combinations in the official doc here.

  • Syntax
  • Best practices
  • Examples
  • Searching
  • Reports
  • Filters
  • Tags

A Pomodoro Timer in Python

If you are into Python or trying to learn Python, then you will love this.

I have been on Linux for a while. I am also very experienced with Windows and Mac.

But there is no iTunes for Linux. No such thing.

To listen to music in Linux. There is an app called Rhythmbox. And you can customize it using Python.

I thought of trying something simple. I wanted to play a song from the Terminal and launch it in Rhythmbox. I tried a few things, but it just didn’t work.

Then I questioned myself. Why in the world would I want to do that for?

What if I make a Pomodoro timer that asks the task you want to do and plays a different song depending on the task.

That would be awesome right?

I forgot to mention that to focus I use music.

A Pomodoro timer with music in Python.

Wowsome!

How to run the Pomodoro Timer

First, you need to go to the Terminal and install a program:

$ pip install python-vlc

Then you can download the Python script from my Pomodoro Timer link on Github.

# Pomodoro Timer with Music in Python
# By: Tom Ordonez
# The countdown function was inspired by an answer I saw on Stack Overflow.
# Before running this program you need to: pip install python-vlc
# To run the program: python3 pomodoroTimer.py
# To modify the length of the Pomodoro just change the range of the countdown function
# Change the name of the mp3 files to your files. They need to be placed
# in the same directory where you place this python file.
# If you have questions send me a message on LI: https://www.linkedin.com/in/tomordonez/
import vlc
import time
import sys
instance = vlc.Instance()
player = instance.media_player_new()
working = instance.media_new(electronic.mp3)
coding = instance.media_new(soundtrack.mp3)
def countdown():
for i in range(2700,0,1):
sys.stdout.write(\r)
sys.stdout.write(Pomodoro: {:2d} seconds remaining..format(i))
sys.stdout.flush()
time.sleep(1)
sys.stdout.write(\nPomodoro Complete\n)
def focus():
print(Are you working or coding?)
focus = input()
if focus == working:
player.set_media(working)
player.play()
countdown()
elif focus == coding:
player.set_media(coding)
player.play()
countdown()
focus()
view rawpomodoroTimer.py hosted with ❤ by GitHub

Change the name of the mp3 files to your own files. They need to be placed in the same directory where you place this Python file.

To modify the length of the Pomodoro just change the range of the countdown function.

To run the program:

$ python3 pomodoroTimer.py

It will show this:

 

Pomodoro Timer with Music in Python

 

It asks you the task you want to do. Then it will open a song based on that task, and the Pomodoro timer starts counting down.

Conclusion

There are a lot of tools for task management. Some have too many features. Others, not enough.

The fun of building tools is that you can customize them to anything you want.

I invite you to learn more about the Terminal, the command line, and Python. Even a silly script can save you a lot of time.

Just writing the Pomodoro Timer I had some issues with the song files.

I had a soundtrack with 20 songs, and I wanted to join them into one file. But first I had to rename all the files.

Even though renaming 20 files doesn’t sound like a lot of work. Just imagine the potential of reducing the time of doing a task by learning a little bit of programming.

Using just two lines of code. I renamed and joined those files in less than 5 seconds.

This article is part of a series called Editor's Pick.