Looks like there are people that finally have looked at my bagpipe mode in the Lilypond distribution. Unfortunately, the reason they did this was to inform me that I was wrong about how to express a lot of complex grace notes. I have regenerated all my sheet music with the new definitions, just to check that everything else still works. In the process I also fixed a few other errors. Enjoy!
Please notify me if you find any errors in the sheet music. It has been proofread, but mistakes are bound to sneak in anyways. The best way to do this is to open an issue at the Github repository, or even better, to submit a pull request.
This morning nic.se released single letter domain names for the .se domain. They all got snatched up immediately of course, and many are supposed to be sold at Tradera.se tomorrow, most likely for a lot more than 125 SEK, which is the normal price.
But just for the heck of it, I got myself the name א.se, seeing that all western letter names got taken. Anyways, it is short and sweet and looks like it could stand for Axelsson, so maybe I’ll keep it.
Just for fun, I got myself a domain name under one of the new vanity top domains. I am now the http://piobaireachd.ninja! Is that cool or what? The domain just redirects to http://svenax.net for now. Maybe I’ll use it for something else later on.
Not a year later, another Pebble watch. This time it looks less like it was put together in someone’s garage, and more like a cheap watch from your local discount store No, really, it is very nice. It shipped free of charge with DHL Express this time. Incredibly efficient – it took about 30 hours for the full trip from Hong Kong to my doorstep in Göteborg, with brief stops in Leipzig, Germany and København, Denmark. Impressive.
Here are the obligatory unboxing pics. Enjoy – I know I will.
Continuing my series of useful Git stuff, here are a few useful one-liners that can make life easier.
Recovering from bad reset
Imagine for instance that you just pulled master into your own branch but realized you should have rebased instead to avoid those pesky merge commits. Imagine also that you wanted to recover by doing a
git reset --hard, but you accidentally killed some of your own commits too. It may look like you are screwed now, but all is not lost – git still knows about your commits. Use
git reflog to see the commits again and merge them back as needed. If you have just killed a single commit, the easiest way to get it back is with
git cherry-pick ORIG_HEAD. Handy.
Setting up proper remote tracking
You are using Arcanist in your project, and created a feature branch with
arc branch, then it looks like remote tracking has been set up, but your feature branch is actually tracking master. Probably not what you want. To fix this, run
git branch --set-upstream
The whole world has not quite converted to Git yet, but it is well on the way. To actually work with a Subversion backend, a standard Git installation includes
git-svn which implements an excellent two-way support. If you just want to track a Subversion repository without pushing to it,
svn2git gives a better conversion in that it properly converts Subversion tags to real Git tags as well as some other house keeping.
I have used (and contributed to)
svn2git before, but not for a while. Now I needed to use it again and realised that it is pretty sensitive to what Git version you have installed. I first tried with the latest Homebrew version (1.8.4) and it failed. I then uninstalled the Homebrew version and tried the Apple supplied one (188.8.131.52) and that failed too. Some Googling told me that version 184.108.40.206 seemed to work all right. So how to get that one? Turns out that is pretty simple nowadays.
- cd into the Homebrew folder (normally
brew versions git to see all available versions
- Copy the checkout command from the list and run it.
brew unlink git && brew install git.
git checkout with the file path from 2 above.
Voilà! You now have the correct version installed. But wait, there’s more! You can now install several versions of the same program by following the steps above and then switch between them with
brew switch <formula> <version>. Very convenient.
Doxygen is as everybody knows, the de-facto standard for generating API documentation from source code comments. But it is also pretty great for generating user documentation, as is apparent from the Doxygen documentation itself. And with the really good Markdown support in recent versions, it is no longer necessary to write the documentation in “fake” code. Just plain Markdown works great.
There are a few gotchas, though, as I discovered when trying to generate a QT Assistant help file for the application I’m currently working on.
Well, that took way too long but I’ve finally updated my SublimePrint plugin to work in Sublime Text 3. It was just a few Python 3 tweaks that were needed. The update can be fetched from Package Control, and this is what has changed in case you care.
Submodules, you either love them or hate them. The support is getting better for each new Git version, but for some reason there is still no command to remove a submodule from a project. Here is a script to fix that problem.
Sometimes you have a project with lots of submodules that you never change yourself, but want to update occasionally. One example would be if you use Pathogen for your VIM plugins. You’d think you could use git submodule update here, and sometimes you can. But note that one of the main features of submodules is that they are locked to a particular commit. In case you want to pull in the latest changes from the remote, you need something else.
I put this alias in my .gitconfig file to solve the problem (note that this needs to be all on one line):
subup = submodule foreach 'git pull -s recursive
-X theirs origin master'
The command will cd into each submodule, and do a forced pull overwriting any local changes you may have. Nice, right?