Jump to menu and information about this site.

Wednesday·10·August·2011

git $something -p //at 16:09 //by abe

from the git-rules--p dept.

git add -p is one of my favourite git features. It lets you selectively add the local changes hunk by hunk to the staging area. This is especially nice if you want to commit one change in a file, but not a second one, you also already did.

Recently I noticed that you can also selectively revert changes already in the staging area using git reset -p HEAD. The user interface is exactly the same as for git add -p.

Today I discovered another selective undo in git by just trying it out of curiosity if that works, too: Undoing local changes selectively using git checkout -p. Maybe less useful than those mentioned above, but nevertheless most times quicker than firing up your favourite editor and undoing the changes manually.

Another nice git feature which I discovered by accidentially using it (this time even unwittingly) is git checkout - which behaves like cd -, just for branches instead of directories, i.e. it switches back to the previously checked out branch. Very useful for quickly changing between two branches again and again.

Friday·15·October·2010

Thoughts on Gitorious and GitHub plus a useful git hook //at 11:36 //by abe

from the real-men-just-upload-their-important-stuff-on-git-and-let-the-rest-of-the-world-clone-it dept.

When I took over the developement of xen-tools, I looked around for an appropriate git hosting. I especially had a look at GitHub and Gitorious.

If you just regard the features, GitHub is definitely more targetted on single developers and Gitorious more towards projects:

At GitHub, every repository has its URL under the URL of a user page which makes it nearly impossible to have user independent, “official” repositories for projects which have more than one official developer.

At Gitorious, every hosted repository needs to belong to a project, even if it’s only a published configuration. But a project can have more than one git repository. You only seem to be able to have personal repositories if you clone some existing Gitorious repository.

So from a feature point of view, the xen-tools git repositories fit way better to Gitorious’ hosting while the git repositories with zshrc, conkerorrc and desktop configuration files defintely have a more fitting addresses on GitHub, in my case http://github.com/xtaran/$repository. On Gitorious, they are now together under a “project” called “Axel’s configuration files” at http://gitorious.org/abe which contains git repositories of my on grml’s .zshrc based .zshrc, my configuration for Conkeror and all the files necessary for my ratpoison/xmobar based netbook/laptop desktop.

I though feel a little bad for giving the project the very short “slug” name “abe” instead of “abe-config” (as I did initially) since “abe” is IMHO not a proper “project name” for my configuration files and possibly other projects would have a more reasonable claim for that project name on Gitorious. But that way it suites more its purpose: Gather some of my git repositories which don’t belong to a proper project.

But there’s another important point when comparing Gitorious and GitHub: Free Software needs free tools as Benjamin Mako Hill posted recently on Planet Debian. Despite my (probably well known) distrust against Google and therefore also Google Code, and despite knowing the history of SourceForge becoming non-free, I was not that much aware that GitHub’s software is only partially open source and therefore also not free software while Gitorious is both as it’s licensed under the GNU Affero General Public License (like StatusNet/identi.ca for example) which is basically GPLv3, but its ideas applied to hosted web applications scenario (where the GPL itself doesn’t grasp), too.

Initially I just had the xen-tools git repositories on Gitorious and all my small one-repository “projects” as copies of the repositories on my own git server on GitHub to get some more publicity for them and allow “social cloning”. After reading Mako’s article, I decided to at least have repository clones on Gitorious of all repositories I mirror at GitHub, too.

That way I force nobody to use the non-free tools on GitHub for “social cloning” one of my git repositories. And of course I have copies of my code somewhere on the net as backup. Or to say it with Linus Torvalds’ (slightly updated) words: Only wimps use tape backup: real men just upload their important stuff on git, and let the rest of the world clone it. ;-)

But isn’t that tedious to always push your code to three repositories? No, it isn’t. I just push my code to git.noone.org where I have configured the according remotes and the following post-receive hook:

#!/bin/sh
                                                                     
read oldrev newrev refname
git push gitorious ${refname:t}
git push github ${refname:t}

The only other thing necessary is to use ssh-agent and SSH agent forwarding to at least the host you’re pushing to.

Sunday·08·March·2009

Sedating irssi’s nick highlight for microblogging messages //at 17:13 //by abe

from the *beep* dept.

My favourite IRC client is irssi. I like it so much that I even use it for all my instant messaging needs. The gateway of choice between irssi and mostly Jabber is Bitlbee.

I also microblog on identi.ca, a free (free as in AGPL) microblogging service based on laconi.ca. In comparsion to the non-free and proprietary Twitter microblogging, identi.ca has all the features which Twitter turned off already again.

For me the most important feature of Twitter was tweeting via XMPP (aka Jabber). Since Twitter turned off that feature, Twitter increasingly fast became unimportant for me. Identi.ca still has this feature and cultivates it further. So usually don’t visit the identi.ca website that often anymore but get the microblogging stream of my friends via XMPP and Bitlbee directly into my irssi.

Although this is very convenient, it has one big disadvantage: In comparison to an IRC channel, not only notices directed to me personally but every incoming notice beeps, because Bitlbee sends them either as /MSG or prepends my nick name. For normal IRC communication /MSG should beep, and you can’t make exceptions for that so easily in irssi.

I asked on #bitlbee (OFTC) and on #irssi (IRCNet). On #irssi funnily the first answer was “I tried that yesterday, no success” from Shrike. — So I’m not alone, although Shrike uses Jaiku and not identi.ca. Then I had the idea to get Bitlbee to not prepend my nick name for all those identi.ca notices which go into the &bitlbee channel — but I didn’t find a way to configure this in Bitlbee. But Shrike found a way to do this with already existing irssi plugins:

The trigger.pl plugin (available e.g. in Debian’s irssi-scripts package or on scripts.irssi.org) can add triggers which replace parts of the message. So the following three lines helped me to reduce the noise microblogging causes in my irssi:

/script load trigger
/trigger add -publics -masks 'identica!update@identi.ca' -channels '&bitlbee' -regexp "^XTaran: " -replace ''
/trigger save

And on the command line I just needed a symlink to automatically start the trigger plugin on irssi startup:

ln -vis /usr/share/irssi/scripts/trigger.pl ~/.irssi/scripts/autorun/

So now again only the important messages beep. :-)

How to make identi.ca talk //at 15:08 //by abe

from the microblogging-to-speech dept.

The listeners of yesterday’s episode of Venty’s Hackerfunk radio show on Radio LoRa already know and heard it: We made identi.ca talk. And we did it with help of other microbloggers. (The podcast version of this Hackerfunk episode will be online in a few days, too. Will link it here and either Venty or me will post it on identi.ca, too, as soon as it’s published.)

A few weeks ago we thought about how we could “show” microblogging on the radio. With identi.ca’s Jabber (XMPP) interface we have real time access, and so the idea was born to pipe all incoming ‘dents into a speech synthesis system.

Then we tried to figure out which tools would be appropriate. Quite fast, people on identi.ca as well as on the LUGS IRC (e.g. bones0) pointed us to festival and espeak. We found no support for German in festival, so we went for espeak – although festival would have had the advantage of the existence of a festival plugin for the popular multiprotocol messenger Pidgin.

Next step was more difficult than expected: How to make a “tail -f” of XMPP incoming messages? Something like rsstail, just for XMPP. Although using the IM to IRC gateway Bitlbee (as I use it myself) and using “tail -f” (or better “inotail -f”) on the IRC client’s log file (ii comes to my mind for such purposes) would have been an option, nobody had the idea at that time.

And since @deepspawn conjured xmpptail in less than two hours we happily took it. xmpptail (tar.gz) is written in Python and uses Twisted Words (Debian package python-twisted-words) as XMPP libraries.

I had to patch xmpptail slightly for unbuffered I/O, Unicode support and for removing things we don’t want to hear on the radio as follows, but it worked more or less out of the box.

--- xmmptail.py 2009-02-25 20:47:48.000000000 +0100
+++ xmpptail.py 2009-03-07 18:48:57.000000000 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python -u
 # -*- coding: utf-8 -*-
 # author: Carlos A. Perilla 
 # This file is part of Jance bot.
@@ -65,7 +65,8 @@
          body = unicode(e.__str__())
          break
 
-    print("%s: %s" % (from_id,body))
+#    print("%s: %s" % (from_id,body))
+    print("%s" % (body.encode('utf-8')))
 
 
 def authfailedEvent(xmlstream):
@@ -80,9 +81,9 @@
   dprint('Got something: %s -> %s' % (el.name, str(el.attributes)))
 
 if __name__ == '__main__':
-    print "Starting"
+    #print "Starting"
     execfile('tailconf')
-    print USER_HANDLE
+    #print USER_HANDLE
     me = USER_HANDLE + "/xmpptail"
     myJid = jid.JID(me)
     server = USER_HANDLE[USER_HANDLE.find('@')+1:]

So after configuring xmpptail to use the hackerfunk Jabber account, we successfully ran the following script during the radio show:

./xmpptail.py | while read LINE; do
        if [ "$LINE" = "empty" ]; then
                continue;
        fi;
        echo $LINE
        echo $LINE | tee -a xmpp-espeak.log | espeak --stdin -v de;
done

At the end of the show, @rebugger found this howto which describes very detailed how to get festival working together with the non-free (“non-free” as in DFSG) MBROLA project which offers also the appropriate files for German. But because of how much work this would be to get it running, I currently prefer to stay with espeak for German speech synthesis .

Next step would be to use mnoGosearch’s mguesser to detect the language of a dent and run espeak (or whatever text-to-speech system is appropriate for the guessed language) with the appropiate options for that language, because otherwise many ‘dents sound really funny. ;-)

Update, 15:02: Venty gave the whole system the name “Identibla”.

Wednesday·11·February·2009

OMG, they killed del.icio.us! You bastards! //at 01:15 //by abe

from the susp.icio.us dept.

Yeah, it happened already a while ago, but I still get angry about it, so I need to rant about it in my blog:

Yahoo!, the owner of del.icio.us, recently renamed the cool old del.icio.us to the no more cool and two bytes longer delicious.com. WTF? Part of del.icio.us’ popularity was its cool host name, why drop that? And even if a few dumbasses don’t understand the wordplay on the perfect host name, they could have offered delicious.com as a second domain name which works in parallel.

But no, they dropped the good old del.icio.us in a way so that all old bookmarklets, bookmarks, plugins, etc. don’t work right anymore and I need to login each time I want to save a bookmark on all browsers where I once was logged in on the old site even if I’m already logged in at the new site in the same browser session. delicious.com sucks.

And no, I don’t let count Gabor’s argument that people have difficulties with domains like del.icio.us, since many sites are well known or can be easily remembered because of their creative host or domain name: del.icio.us, script.aculo.us, wua.la, identi.ca, certifi.ca, laconi.ca, cr.yp.to, pix.ie, buenz.li (Swiss German), go.to, bit.ly, chickensh.it, gibts.net (German), doma.in, moinmo.in, etc.

No wonder, Montenegro sells many second level domains under their top level domain .me as “premium domains”.

Friday·23·January·2009

MBC09: The Day Before //at 14:04 //by abe

from the DB-sucks dept.

Helped my parents moving the first half of the week. Left there at Thurdays around 9am. Drove 45min to Zurich. Removed everything bicycle related from my daypack. Left the TomTom at home. (Google Maps on the E51 has to sufficed and sufficed so far.) Crammed cloths for three days in.

Was at Zurich Main Station around 11:40am. My plan was to take the direct ICE train from Zurich to Hamburg Dammtor. Bought a Rivella for the journey.

First suprise at the platform: No ICE train. Instead a Swiss InterCity. The staff told us due to a defect in the ICE train, we have to go to Basel SBB with this train, then switch trains there. No carriage numbers and reservations valid here. Hrmpf. For luck, there where not that many people in the train. No power sockets though.

Next surprise at Basel SBB: No ICE train here either. We’re advised to switch to a German InterCity and then switch again a few kilometers later at Basel Badischer Bahnhof (aka “Basel, German Station”).

There then finally waited an ICE labelled as the initially expected ICE 72 from Zurich to Hamburg Altona. Even the reservations were displayed, departure was though 20min later than the original ICE 72.

The voice from the speakers told us that this is a replacement train which came empty from Zurich. WTF? The next time the voice explained the situation, it was a replacement train coming from Interlaken… Ok, DB is not as insane as I believed for about half an hour. ;-)

Worked though the git tutorial and the git glossary on the train since in future I’ll use git in some of the OSS project I’m working together with — Conkeror beyond others. Also had a conversation with some doctor from University Hospital Zurich who has chasing as hobby. (WTF?)

The train arrived about 45 minutes late at Dammtor, so I first checked in in my hotel (“Hotel am Dammtor”, very close to the MBC09 venue) and then walked to Hamburger Botschaft where the twitter reading was already running, hoping to meet someone I know and having dinner afterwards. Guided by Google Maps on my Nokia E51 it took longer than expected to walk there. And it was windy and raining.

The twitter reading venue was quite full, but I still found a place where I saw most of the screen. At least the reminder of reading was quite funny: #famouslasttweets. They closed with a tweet similar to “And then there’s also identi.ca”. :-)

I was told it wasn’t that funny at the beginning. Didn’t find anyone I really knew, just sticked to a group talking about being hungry. When we met @igorette on our way to some restaurant and he recognised me, I found out that @muhh was also in the group I’m heading though Hamburg.

We had a nice dinner at Schmitt Foxyfood, I had GrillGold (Pommes Frites) with WuchtBrumme (Currywurst) and Fritz Cola.

After dinner, @moeffju drove me and some other guy to our hotels.

So the first evening was already very interesting despite the usual lateness of Deutsche Bahn.

Monday·19·January·2009

Traveling plans for the first half of 2009 //at 16:12 //by abe

from the Summer-holidays dept.

Since the time between the years is traditionally family time for me, I never were at the Chaos Communication Congress. So I wasn’t at 25C3 either. All the more I look forward to HAR2009 this summer (13th to 16th of August near Vierhouten in the Netherlands), but also because, for the last three years I always have been in the Netherlands for one week in summer, sailing with friends on the IJsselmeer.

But before HAR2009, there will be a bunch of other events to visit and people to meet in real life:

  • I’m looking forward to see @evan, @cemb and many other identicatis in real life at Microblogging Conference ‘09 in Hamburg next week on Friday and Saturday (23rd and 24th of January). Will go there by train.
  • Two weeks later there will be FOSDEM in Brussels (7th and 8th of February) where I hopefully will meet Savago from the Amora Project and many other friends from the FOSS community. Will go there either by train or car.
  • On 14th and 15th of March, the Chemnitzer Linux-Tage take place. I’ve submitted two talks for beginners and will be there with the usual suspects from Symlink (Venty, dino and P2501 so far). We’ll go there by train.
  • Luckily not overlapping with the VCFe this year is the SPEZI at Germersheim near Karlsruhe which takes place on 25th and 26th of April. I plan to go there, maybe by train and Brompton, but nothing yet sure.
  • The, one week later over the long weekend around the 1st of May there will be Vintage Computer Festival Europe (VCFe) 10.0 at Munich featuring Raffzahn. Will be there with the usual suspects. I’ll maybe prepare an exhibition (“Debian on dead hardware”, i.e. PowerPC, Sparc, Alpha, etc. or so) or a talk, but not yet sure. Will go there by (vintage) car as usual.

Then there will be the big summer holidays driving around in the middle of Europe with the 2CV and taking part in most likely:

  • Sailing with friends from 31st of July to 7th of August,
  • HAR2009 one weekend later, and
  • FrOSCon at St. Augustin near Bonn another weekend later.

This also means that I’ll probably miss:

… at least unless one of the other events I plan to visit doesn’t take place as expected or my plans change heavily.

P.S.: Anyone thinks this amount of events justifies a Dopplr account? ;-) Or is there somewhere a free online service similar to Dopplr, but runs software under the GNU Affero General Public License like e.g. identi.ca and many other Laconica instances do for microblogging?

Tag Cloud

Current filter: »identi.ca« (Click tag to exclude it or click a conjunction to switch them.)

2CV, aha, Apache, APT, aptitude, ASUS, Automobiles, autossh, Berlin, bijou, Blogging, Blosxom, Blosxom Plugin, Browser, BSD, CDU, Chemnitz, Citroën, CLI, CLT, Conkeror, CSS, CX, deb, Debian, Doofe Parteien, E-Mail, eBay, EeePC, Emacs, Epiphany, Etch, ETH Zürich, Events, Experimental, Firefox, Fläsch, FreeBSD, Freitagstexter, FVWM, Galeon, Gecko, git, GitHub, GNOME, GNU, GNU Coreutils, GNU Screen, Google, GPL, grep, grml, gzip, Hackerfunk, Hacks, Hardware, Heise, HTML, identi.ca, IRC, irssi, Jabber, JavaShit, Kazehakase, Lenny, Liferea, Linux, LinuxTag, LUGS, Lynx, maol, Meme, Microsoft, Mozilla, Music, mutt, Myon, München, nemo, Nokia, nuggets, Open Source, OpenSSH, Opera, packaging, Pentium I, Perl, Planet Debian, Planet Symlink, Quiz, Rant, ratpoison, Religion, RIP, Sarcasm, Sarge, Schweiz, screen, Shell, Sid, Spam, Squeeze, SSH, Stoeckchen, Stöckchen, SuSE, Symlink, Symlink-Artikel, Tagging, Talk, taz, Text Mode, ThinkPad, Ubuntu, USA, USB, UUUCO, UUUT, VCFe, Ventilator, Vintage, Wahlen, WAP, Wheezy, Wikipedia, Windows, WML, Woody, WTF, X, Xen, zsh, Zürich, ÖPNV

Calendar

← 2025 →
Months
SepOct Nov Dec
← September →
Mo Tu We Th Fr Sa Su
10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

Tattletale Statistics

Blog postings by posting time
Blog posting times this month



Search


Advanced Search


Categories


Recent Postings

13 most recent of 289 postings total shown.


Recent Comments

Hackergotchi of Axel Beckert

About...

This is the blog or weblog of Axel Stefan Beckert (aka abe or XTaran) who thought, he would never start blogging... (He also once thought, that there is no reason to switch to this new ugly Netscape thing because Mosaïc works fine. That was about 1996.) Well, times change...

He was born 1975 at Villingen-Schwenningen, made his Abitur at Schwäbisch Hall, studied Computer Science with minor Biology at University of Saarland at Saarbrücken (Germany) and now lives in Zürich (Switzerland), working at the Network Security Group (NSG) of the Central IT Services (Informatikdienste) at ETH Zurich.

Links to internal pages are orange, links to related pages are blue, links to external resources are green and links to Wikipedia articles, Internet Movie Database (IMDb) entries or similar resources are bordeaux. Times are CET respective CEST (which means GMT +0100 respective +0200).


RSS Feeds


Identity Archipelago


Picture Gallery


Button Futility

Valid XHTML Valid CSS
Valid RSS Any Browser
This content is licensed under a Creative Commons License (SA 3.0 DE). Some rights reserved. Hacker Emblem
Get Mozilla Firefox! Powered by Linux!
Typed with GNU Emacs Listed at Tux Mobil
XFN Friendly Button Maker

Blogroll

People I know personally


Other blogs I like or read


Independent News


Interesting Planets


Web comics I like and read

Stalled Web comics I liked


Blogging Software

Blosxom Plugins I use

Bedside Reading

Just read

  • Bastian Sick: Der Dativ ist dem Genitiv sein Tod (Teile 1-3)
  • Neil Gaiman and Terry Pratchett: Good Omens (borrowed from Ermel)

Currently Reading

  • Douglas R. Hofstadter: Gödel, Escher, Bach
  • Neil Gaiman: Keine Panik (borrowed from Ermel)

Yet to read

  • Neil Stephenson: Cryptonomicon (borrowed from Ermel)

Always a good snack

  • Wolfgang Stoffels: Lokomotivbau und Dampftechnik (borrowed from Ermel)
  • Beverly Cole: Trains — The Early Years (getty images)

Postponed