Jelle's blog


Skef: a language for developer lab notes

For years I have been carrying around a small black notebook containing all my work notes. This is all nice and dandy, but it's not very convenient. This is why I decided to move my main notetaking to the PC. There's already a big bunch of applications, systems, cloud thingamajigs that provide all kinds of note taking and categorization goodness, but it doesn't tickle my particular terminal loving fancy.

When I take notes I really don't want to deal with a lot of sub windows, having to move the mouse around and even the excellent ORG-mode feels too complicated for this - previously - simple task. It's a typical phenomenon where something simple in the flesh translates to a big collection of complex digital counter parts.

Cue Skef

That's why I decided to create a small language that allows me to take my notes in my favorite text editor, having all the neat features like tagging, todos, time tracking..etc while maintainig this simple workflow of editing just one document.

Let me give you a quick example of an entry:

[Fri Sep 02 2016 - 2016/09/02]
    This is a line of text that is just a general little untaxonomized line of
    text that will be filed under September 2nd.

        This text is filed under "project". I will be able to run queries that
        gather all my entries filed under this tag. 
            You can even nest projects, nifty wifty.

        [todo mow the grass]

        As you can see above here, we're able to setup todos. The basic idea is
        that you'll be able to run the Skef commandline utility that retrieves
        all todos for a project, or simply all of them in one go. It outputs
        these todos on the commandline and you'll be able to setup your favorite
        text editor in such a way that it's piped into a new editor

        [todo bft]
            Sometimes you'll need more space to explain what to do. You can
            create a whole lot of text under one todo if you like, but you
            probably won't, because this means a lot of things that will require
            taking your lazy bum of the couch.

        [time 4.5h pondering about mowing the grass]

        We can have entries for tracking time. Skef will be able to retrieve all
        these time entries, output them as a CSV, or on the commandline for easy

        [done noticed the relatively high grass length]

        After you're done with a "todo", you can simply replace "todo" with done
        and it'll be marked as done :-). You can also use "skip" or "postpone",
        but the Getting Thing's Done philosphy says you shouldn't (which we
        don't care about of course, silly busy people).

As you can see the Skef language has significate whitespace. This prevents a lot of hassle with closing blocks, and wears down your keyboard just a little bit less.

I'm already using Skef as my work journal, but I'm going to add a couple of tools to make it more useful. They will allow you to search for certain projects, get all your current todos and generate a CSV with your time entries. I also want to add VIM support so I'll get to have all the pretty colors in my fav editor :-).