> F30.me

My personal place to publish… stuff.

Some graphics on Git

While preparing a beginner course on Git for my job at noris network, I was looking for graphics to point out some tough topics: The relationships between working copy, index and repository and between local and remote branches. Unfortunately, I couldn’t find anything satisfying – this here seemed to be the closest it would get to me imaginations.

So I fired up Inkscape and created some images myself. They of course simplify things and I’m not a great graphic designer, but they helped me at making my point. And, as I hope, they might also be useful for you when explaining concepts or understanding yourself.

Therefore today, I am releasing the graphics under the Creative Commons Attribution-ShareAlike 3.0 Germany license. You should attribute to „Felix Dreissig, noris network AG“ as author if you use them. The images are partially based on Tango icons, which are in Public Domain.

Basic branching

(There are a lot of similars to that one out there, I admit.)

Git Branching

Download SVG

Repository/Index/working copy

This attempts to demonstrate the differences between the three areas. Changed or new files are marked in red.

Git Repo/Index/Working-copy

Download SVG

Remote/Local

That one features a remote server and a development machine. The latter keeps an exact copy of the server’s branches, plus some local branches.

Git Remote/Local

Download SVG

2 Responses

(oh-my-)zsh key bindings on Ubuntu 12.10

After upgrading my Ubuntu system to the 12.10 beta recently, I experienced some strange quirk in my shell related to the oh-my-zsh key bindings: The up-line-or-search feature on arrow-up (resp. down-line-or-search on arrow-down) had ceased to work. One could still browse the history using the arrow keys as that seems to be zsh’s default configuration, but the “search history for commands beginning with the first word I entered” feature didn’t work anymore.

I figured out that Ctrl+V reported the key code ^[OA for arrow-up, while the other tools I checked (namely cat and bash) still returned the ordinary ^[[A. At first I guessed that this behavior had to do with Ubuntu's upgrade to zsh 5.0, but then some help from #zsh on freenode pointed me into the right direction:

Debian's /etc/zsh/zshrc (and therefore Ubuntu's as well), which is executed for every shell in addition to your personal .zshrc now contains those crucial lines:

if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then
    function zle-line-init () {
        printf '%s' ${terminfo[smkx]}
    }
    function zle-line-finish () {
        printf '%s' ${terminfo[rmkx]}
    }
    zle -N zle-line-init
    zle -N zle-line-finish
else
    # ...
fi

In general, it seems to be a good idea to put the terminal into "application mode" before executing zle, at least you can find code like that in some other zshrcs as well. I still don't entirely understand what this is about, but some information about terminal modes can be found here. What's important to know in order to understand the above snippet is that by outputting the smkx or rmkx codes, you enable or disable application mode.

Application mode, however, uses different key codes which don't match the hardcoded ones from oh-my-zsh. I finally solved the issue by replacing the oh-my-zsh arrow key bindings with this:

bindkey "${terminfo[kcuu1]}" up-line-or-search
bindkey "${terminfo[kcud1]}" down-line-or-search

(Debian's /etc/zshrc conveniently stores the codes in an associative array called keys, but I didn't wanna rely on that.)

There might be more key bindings which are affected from the problem, but I only noticed it for the arrow keys in daily usage. In my opionion it is bad style to use hardcoded key codes for the bindings in the first place and this is something that should be fixed by oh-my-zsh. I'm even a bit surprised why I couldn't already find a patch or at least a bug report – if I manage to find enough time, I'll definitely do that.

Update: Heres's my pull request targeting the problem. What I wasn't aware of (even though there's a comment describing it right above the relevant lines), is that the reason to enable application mode at all is making use of terminfo. Ironically enough, you have to make sure application mode is really active (using some code similar to the above one), if you want to fix the problem that it causes. After all, however, you get a cleaner and more portable configuration.

4 Responses

To-do service shootout

When it comes to task management, I didn’t have a sophisticated workflow up to now: I kept most things in my head, in busy times I would write to-dos down on a piece of paper and I kept a Simplenote list of more long-term tasks which I don’t want to forget (mostly filled out of panic when stressed and never actually done). While this worked out in general, I felt like I could be more relaxed and productive with some technical support. What I was looking for is a service that follows basic GTD principles and lets me structure my tasks by a variety of data types without forcing me into a stringent, “religious” GTD workflow. Simple to-do list programs with due dates like Wunderlist or iOS Reminders therefore aren’t the right thing.

I want to use and sync the tasks across all of my devices, so a cloud-enabled service seemed like the way to go. Since Linux versions of desktop apps are often not available, services which don’t offer a web interface for desktop usage (primarily OmniFocus) didn’t come into consideration for me. Another basic requirement was the availability of an iOS app for mobile usage. What I didn’t check were features for collaboration, sharing and assigning of tasks as I have no usecase for that at the moment.

This lead to the major contestants from my research: Remember the Milk, Producteev and Doit.im. Let’s take a look at the pros and cons of those three and how they compare with each other…

Remember the Milk

remember the milk RTM can be seen as the pioneer when it comes to web-based to-do management: It has been around since 2005 and I even have had an account there for some years, though I didn’t actively use it. Nowadays, its web interface looks a bit old-fashioned at first sight. However, it turns out to be pretty powerful if you adapt to it.

The service provides a great variety of ways to structure your tasks, as the only one of the three including the possibility to attach them to locations. Due to the lack of location-based notifications, iOS Reminders are still the best option in my rare usecases for such a feature, but I feel like there might be an opportunity for RTM’s approach at some time. In fact, they don’t support reminders at all, – not even time-based ones – so you always have to check your to-do lists on your own, even for very important tasks. What’s lacking as well is the possibility to set start times for to-do items, i.e. dates before they can’t be accomplished and therefore shouldn’t show up in some views.

The iPhone and iPad version of the service’s app is done quite nicely, though practically unusable without a Pro account: It doesn’t automatically keep your account in sync and lets you only sync manually once in 24 hours. However, I think the Pro subscription is priced quite fairly at $25 per year, even without offering student discount rates. I tend to keep local backups of all of my relevant data from cloud services; RTM provides ATOM and iCal feeds of your tasks, which seems good enough for me.

Producteev

producteev What RTM ails at its web interfaces, Producteev makes up: It offers a through and through modern and good-looking web app. What I like about it as well is the unique feature to create lightweight subtasks for single to-do items, which basically just consist of some text and a “Completed” checkbox. While the other services let you assign only three levels of priorities, Producteev has fife of them. This seems like a sensible grade of granularity to me, though sometimes maybe a little bit too detailed.

I don’t really get along with their sorting of task lists, since you can’t select a secondary criterion and my desired behaviour doesn’t accord with the default: I like my to-do items to be sorted by deadline and within that by priority, which doesn’t seem to be possible with Producteev at the moment. For repeating tasks, there is no “repeat until” end date and just like at RTM, you can’t assign start times. The service always adds a time-based reminder to each task upon creation, but those don’t seem to show up anywhere in the default configuration except the web interface.

Producteev has a decent iPhone app, but an iPad version is still in the making and their workaround in form of tablet-optimized website can’t really compensate this big handicap. The service lets you download your data in CSV format, so a basic backup should be possible there as well.

Doit.im

Doit.im As only one of the three, Doit.im lets you set the start date for a task, but I don’t get along with their implementation of that feature: Since start times are seen at the “main time” for a task, it won’t let you set a deadline without a start date, which is what I need far more often than I want to set a start time at all. Maybe since that is the case for most people, they seem to mix the two dates in the interface and don’t seem to have a clear differentiation of their meaning. This is especially obvious as their whole (otherwise quite good) interface relies on the classification by start (or whatever) date. There’s still a second structure by “contexts”, but you can even get a complete list of your to-do items only crabwise. Good thing is, they have time-based reminders done right.

They also have a nifty app for iPhone und iPad. Doit.im’s Pro account description reads a lot like RTM’s “without it only sync manually once a day”, but I didn’t exceed the free Pro trial until now, so no confirmation on that. The Pro pricing, however, is comparable. As the only service of the presented three, Doit.im won’t let you download a copy if your data in any format.

Conclusion

No clear winner here: All of the three have their selling points and disadvantages. I for one bought a pro subscription from RTM and am now actively using it in my everyday life – works out pretty well so far. If Producteev gets their few but major downsides sorted out, they seem like a possible competitor in the future. Doit.im’s way to structure tasks just doesn’t fit into my workflow and I’m not expecting this to change fundamentally; its other feature don’t make it stand out as well.

2 Responses

Zur Lage der Piratenpartei

7,4 Prozent, fast 36.000 Stimmen, aus dem Stand Grüne (und FDP) überholt. Damit, dass das Ergebnis der Piraten bei der saarländischen Landtagswahl schon wieder so deutlich ausfallen würde, hätten wohl die wenigsten gerechnet. Zumindest für mich schien durchaus etwas dran zu sein an der Theorie, wonach sich der Berliner 8,9%-Erfolg in ländlicheren Regionen nicht so leicht wiederholen ließe. Denkste, und schon holen sie die nächsten 7,4 Prozent! Das Piraten-Orange scheint nun endgültig im politischen Farbenspiel angekommen zu sein – ich jedoch tue mich trotz grundsätzlichem Wohlwollen etwas schwer, das bedingungslos gutzuheißen.
Kleine Beobachtung aus der Berliner Runde vom Sonntag am Rande: Der Trend, den Peter Altmaier nach der Berlin-Wahl bei Anne Will begonnen hatte, scheint sich fortzusetzten: Während SPD und Grüne den Erfolg der Piraten nicht verstehen und auf ihre ach so tollen eigenen Netzpolitik-Programme verweisen, gibt sich die CDU interessiert und aufgeschlossen. Aber das ist ein anderes Thema; hier soll es jetzt erstmal um die Schwachpunkte gehen, die ich aktuell und schon länger bei den Piraten sehe.

Disclaimer: Dies ist in erster Linie ein Meinungs-Artikel mit Tendenz zum Rant. Ich habe nicht alle Fakten knallhart recherchiert und es mag sein, dass ich mit meinen Behauptungen hier und da daneben liege. Der Artikel gibt schlichtweg meinen Eindruck von und meine persönlichen Probleme mit den Piraten wieder – allerdings glaube ich weder, dass ich komplett falsch liege, noch, dass ich damit allein bin.

Persönlich hatte ich schon immer reichlich Sympathie für die Piraten übrig, beschloss aber auch schon relativ früh, ihre Entwicklung lieber aus einer gewissen Distanz zu beobachten. Relativ bald stellte sich dann auch derselbe Effekt ein, wie ich ihn vor Allem bei Grünen und Der Linken immer wieder aufs Neue erlebe, und wie er bei einer Partei als per se inhomogenes Gebilde wahrscheinlich auch unabdingbar ist: Das reine Programm würde ich zum größten Teil sofort unterschreiben; füllt man die Inhalte aber mit Leben und konkreten Aktionen, hinterlassen alle auf ihre eigene Art einen faden Beigeschmack. Leider fällt die Bilanz der Piraten da bisher nicht unbedingt besser aus. Read on…

No Responses

Semesterferien der Uni Erlangen/Nürnberg als iCal

Um während meiner Schulzeit die Ferienzeiten immer im elektronischen Kalender parat zu haben, hab ich den praktischen iCal-Service von Schulferien.org genutzt. Etwas Vergleichbares scheint es für Unis nicht zu geben; das einzige, was vielleicht in die Nähe kommt, ist das einigermaßen grausame Ferienzeitweb, das aber gar keine iCals anbietet.

Die Uni Erlangen/Nürnberg bietet auf ihrer Webseite zwar einen Terminüberblick an, allerdings auch nicht in einem maschinenlesbaren Format. In mein campus und StudOn hingegen gibt es zwar iCals, darin sind aber leider nur die persönlichen Prüfungs- bzw. Kurstermine enthalten. Deshalb hab ich das jetzt mal übernommen und ein iCal mit den bisher bekannten Ferienterminen bis 2014 2015 2016 erstellt, das vielleicht auch für andere nützlich ist.

Mit der Datei sollte jede gängige Kalendersoftware umgehen können, man kann sie entweder runterladen und importieren oder als Online-Abo einrichten. Ich empfehle Letzteres, da dann in der Zukunft auch Updates automatisch ankommen.

  • Alle Angaben ohne Gewähr. Bitte denkt dran, dass (je nach Fakultät) vor Allem zu Beginn und Ende der Ferien Prüfungszeiträume liegen können!
  • Die Daten dürften so oder so ähnlich für alle bayerischen Unis gültig sein. Ich beziehe mich aber im Zweifelsfall konkret auf die Uni Erlangen/Nürnberg.
  • Fehler und Probleme dürfen gerne an mich gemeldet werden (z.B. in den Kommentaren zu diesem Post).
  • Datenquelle, letztes Update: 11. Februar 2014
  • Ja, ich weiß: Es gibt eigentlich keine „Semesterferien“, nur „vorlesungsfreie Zeiten“. Aber der Begriff ist in der Umgangssprache nunmal eingebürgert.

Link zur iCal-Datei

1 Response

Hello world!

So, here we go…
Ladies and Gentlemen, fasten your seatbelts and prepare for takeoff of ”F30.me”, my freshly deployed weblog.

As the subtitle suggests, I treat this site as “my personal place to publish… stuff”. And “stuff” really implies whatever I come along with: Sometimes in English, sometimes in German. Sometimes technical, sometimes political, sometimes personal. Sometimes my own articles, sometimes random findings from all over the internet.

To be realistic, I currently don’t expect a lot of regular readers. But sometimes I just feel like making my thoughts public and conserving them for the future – that’s why I created this blog. So dont’t expect regular updates or daily diary entries, actually the post frequency will be quite low. And some articles might also only interest a small, special audience.

Enough warning, I still hope you and others will find something useful here from time to time. And of course, this post wouldn’t be complete without the famous words of every first step in the digital world:
Hello world!

1 Response