Jira StopWatch 2.0 released, and has its own website now

It’s now been 1½ years since I first released Jira StopWatch as an open-source project. A lot of changes has been made since then, but basically the application is about the same single feature: Tracking your workday, and doing it as effortlessly as possible. A lot of people has helped with this, for which I am grateful. It really shows the value of making software open-source. In the last 1½ years, the application has been downloaded over 4.000 times, something I had never anticipated.

Latest release is now version 2.0, and in the meantime Jira StopWatch has gotten its own website: http://jirastopwatch.com

The source code and binary releases are still hosted on GitHub, and will continue to do so, since there really isn’t any better open-source collaboration tool IMHO.

 

JIRA StopWatch 1.7.0 released

I’ve finally managed to release the latest version of JIRA StopWatch. It comes with a bunch of bugfixes and a few new important features. Read more about it and download it here.

Also, by now JIRA StopWatch has been downloaded over a 1.000 times, and I get a lot of positive feedback on Github and on mail. I appreciate the support – glad I can help make your workdays easier.

200 downloads of Jira StopWatch 1.4.1

200 downloads of Jira StopWatch 1.4.1

Woke up this morning and saw this. Jira StopWatch was released exactly a month ago, with not many people knowing about it, and now suddenly the setup program has been downloaded 200 times. Wauw! I thank you all, who have shown interest in this little tool, that sprung out of my own needs when working with Jira. Please don’t hesitate, if you have ideas for future features.

Easy time-tracking when using Jira

I’ve made a small Windows* tool to make time-tracking with Jira much easier IMHO.

Jira StopWatch

Read more and get it here: http://carstengehling.github.io/jirastopwatch

The use-case goes like this:

At work I’m usually working on up to 5 issues at a time – sometimes an issue is waiting for input from somebody temporarily away. Sometimes I need to prioritise a new issue above others. So I need to be able to quickly switch between issues – and still make sure to track how long I’ve totally worked on each issue.

So if you’re interested, take it for a spin, and let me know if you have any suggestions for improving it.

A short screencast to show the usage:

Jira StopWatch tutorial from Carsten Gehling on Vimeo.

* It’s OSS C# and also compiles with Mono on Linux – somebody with a Mac care to try?

Reduce Linux boot-time by lazy-loading development-specific services

I’m very anal when it comes to boot time. When I power up my laptop, I want it to be available for me ASAP. As a developer this sometimes conflicts with the need of having a lot of daemons running: PostgreSQL, MySQL, Apache, Memcache, Redis, Solr, etc etc. Services that are needed when i work on different projects. All these daemons takes time to start up, and since I don’t always program, I don’t always need them. But still they start up, and still I have to wait.

So I solved this by disabling the services in the /etc/rc.* folders. And instead I made this little script, which I put into $HOME/bin (which of course is already in your $PATH, right?)

#!/bin/bash

# Must run as root
if [ $(id -u) != "0" ]
then
    sudo "$0" "$@"
    exit $?
fi

service apache2 $1
service postgresql $1
service mysql  $1

It automatically ask for your sudo password, and then either starts or stops your daemons depending on the parameter, that you supply.

Designing with Compass – my new best friend with mobile applications

Ruby on Rails has always been marketed as “Webdevelopment that doesn’t hurt”, and a lot of this comes from standing on the shoulders of giants.

One of the more recent pair of shoulders to pop up is Compass. I would say that Compass is a natural development, stemming from Haml and Sass. It has made stylesheet a more natural part of Rails application development.

While a lot of tools exists for creating “html-generated applications”, stylesheets have always been left a bit in the cold. Sass helped a bit by adding variables and partials, but it still didn’t feel like programming.

Compass adds two important things:

  • mixins which enables you to create behaviors that you apply to several css classes.
  • functions which can be used to generate css values based on parameters

To show why this is great, here’s an example of doing grid layout the Right Way(tm) – and The-Way-You-Used-To-Do-It…

Grid layouts is usually coupled with frameworks like Blueprint, 960 and others. One of the problems with this is, that you do not get semantic markup in your HTML. Instead you get all kinds of layout classes. Here’s an simple example of a typical Blueprint HTML layout:

!!!
%head
%body
  .container
    .main.span-18
      ...a lot of content...
    .sideinfo.span-6.last
      ... links etc. in the sidebar...

and in HTML for those of you who have not tried Haml yet (you really should):

<html>
<head></head>
<body>
  
...a lot of content...
... links etc. in the sidebar...
</body> </html>

Why is this bad? Well if you are only developing for traditional computers, you’re fine. But what if you want to use the same webapplication for Android or iOS devices? HTML5 has a nifty feature for stylesheet selection based on the clients screen size:



etc...

This is pretty cool – but then all the span-classes from our Blueprint example suddenly gets out of context.

Now back to why Compass is cool

Compass makes grid-design easy without using anything but your semantic markup. Here’s the same layout done with compass (again in Haml and HTML) – explanations can be found on Compass’ homepage.

!!!
%head
  ...stylesheet inclusion...
%body
  .container
    .main
      ...a lot of content...
    .sideinfo
      ... links etc. in the sidebar...
<html>
<head>  ...stylesheet inclusion...</head>
<body>
  
...a lot of content...
... links etc. in the sidebar...
</body> </html>

IMHO much prettier – and much easier to mould with different stylesheets. Here’s what it takes in Compass using mixins and functions:

@import "compass"

$blueprint_grid_columns: 24;
$blueprint_grid_width: 40px;
@import "blueprint"

.main
  +column(18)

.sideinfo
  +column(6, true)

Now if you have a 320px device (phone) you could switch to a much simpler stylesheet – without worrying about any layout-specific HTML markup.

Learn how to program

You’re exited about computers, and would like to do more than just surf the web and play games? Then you are ready to start programming!

But how do you go about learning this?

There are a number of good guides on the web, that you can follow. Here are links to those, that I find especially good for absolute beginners:

CodeAcademy

http://www.codecademy.com

This is a fully online interactive tutorial, that will teach you the basics of Javascript. Everything happens in a frame on the site, and you will get instant visual feedback – very important for you when just starting up. So go on and get your hands dirty on CodeAcademy, and then get back here for the next guide.

The guide will teach you the basics of a programming language called JavaScript. Most of the dynamic interaction that you see on sites like Facebook (popup boxes and such) are made using Javascript. It is the only language, that every browser understands and can execute within a web page. However, you will hardly use JavaScript to anything else than this, so if you want to go on programming stuff to run on your computer, you will need to look for another programming language.

There are many to choose from. Some are suited for special purposes, others are more general. Luckily a lot of the features, that you have already learned in the first guide, are shared between many programs, such as “if” and “while” statements.

TryRuby

http://tryruby.org

This next guide will introduce you to Ruby, a general-purpose programming language, with which you will be able to go a long way. Just like the first guide, this is an interactive tutorial using a console on the screen. Enough said – go on and try it.

Install ruby on your own computer

Ok now you’ve been programming online on a webpage, so now it is time to do things on your own computer as well.

You need to install the Ruby Programming Language before you can do anything else. Luckily this is easy: Go to this website and follow the instructions. http://rubyinstaller.org

You will also need a good text-editor. Notepad simply doesn’t cut it. But you are in luck – the RubyInstaller also contains a good editor called SciTE. This is actually all that you need.

Now you are ready to start programming on your own computer. Go through this guide, which will also move you from the interactive prompt, that you’ve been familiarized with in the other guides, and onto creating text-files containing your progam.

http://www.ruby-lang.org/en/documentation/quickstart

Good luck! Let me know if you have any hardships, and I will gladly help you.

Endelig! Kortlægning af dansk erhvervsliv

Så blev vi endelig færdige med vores nye killer-funktion “Six degrees of separation” indenfor dansk erhvervsliv. Prøv den selv.

F.eks. kan min far nu prale af, at han kender Mærsk McKinney Møller.

Med over 1.9 millioner personrelationer at gennemsøge, var det lidt af en udfordring, ikke mindst fordi servicen gerne skulle svare lynhurtigt uanset hvor mange, der nu besøger den. SQL var udelukket – databasen simpelthen for langsom. Men data skulle centraliseres, så flere processer kunne få adgang til dem samtidig. Løsningen blev Redis og en lynhurtig algoritme i Ruby.