.gitignore keeps your repository sane – some helpful resources

Ignoring files is a great article on GitHub Help. The global gitignore file is mentioned there. In this file you can ignore files in all the git repositories on your machine. There is a very helpful template that will ignore compiled output files from various languages (*.o, *.so, *.dll, *.class) as well as logs, database files, packages and also files generated by the operating system (Yes, I’m looking at you Windows Thumbs.db and Mac .DS_Store!).

The above page also links to the gitignore repository on github. This repo contains a whole bunch of gitignore files for programming languages, build systems, servers, markup languages, content management systems, … There is also a global folder for more your global ignore file (IDEs, text editors, non-git version control, operating systems…).

Reference or use git/github-managed code in your git project

Please note that there seems to be better way to do this since git version 1.8.2 (mentioned in these two stackoverflow answers: here and here). The version from the Ubuntu 12.04 repos is 1.7.9.5 though so I’ll take a different route. The project for this example is the handy node.js multi-platform support layer libuv.

Please note that this example expects you to already have an existing project under git control. If you don’t – simply look up on how to create one using git init or git clone one 🙂


# do a "clean cut" before adding the submodule
git commit

# add libuv to the project
git submodule add https://github.com/joyent/libuv.git libuv
git status

# update the submodule
git submodule init
git submodule update

# enforce the version we want to use (tag v0.10.22)
cd libuv/
git reset --hard v0.10.22
cd ..
git commit -a

git submodule status

You can now reference/include the files of the submodule while still being able to update the submodule to newer versions. Gotta love version control!

Useful Bluetooth Low Energy Android Apps (for free)

I just stumbled across a few useful android apps for BLE development. My curiosity was sparked by github user tomkubitza who wrote that there’s a useful BLE android app by Nordic Semiconductor. They actually have a set of apps/demos which look well-done. It’s nice to see they take those apps seriously – after all WPAN chips are their bread and butter 🙂

For now this is just a list for reference. I might come back and add infos after giving some of the apps a go.

Nordic Semiconductor

BLE scanners/detectors

Texas Instruments SensorTag related

Lego FTW

Without a doubt 3D printing has serious potential to spur innovations. However, for the moment it’s too expensive and complex – just imagine the 3D CAD learning curve. For a lot of non-complex ideas you can actually use Lego® to create a lot of useful things. It’s cheap, easy to use and you can go to the next toy store RIGHT NOW and get a starter kit. Here are some clever ideas I came across:

A Software Developer by the name of Michael Hunger even uses LEGO® to track his time. And it’s easy to come up with other useful ideas (I’m sure most of these have been built already)

  • CD/DVD/Vynil/Book rack or showcase
  • Notebook cooling stand
  • PC Case
  • Guitar stand
  • Guitar effects board
  • pen holder
  • picture frames
  • Gamepad holder (or any other gadget)
  • vase

TeX Live 2012, Gummi 0.6.5 and a great LaTeX template for theses

Today I set up my LaTeX environment for my master thesis on my Ubuntu 12.04 notebook. It consists of the Tex Live distribution version 2012 and the Gummi LaTeX editor. The latter is very lightweight and has a very useful live preview:

Screenshot of Gummi v0.6.5 with the CandyMountain text color scheme
Screenshot of Gummi v0.6.5 with the CandyMountain text color scheme

1. Install

The Ubuntu 12.04 repos don’t contain the latest versions of TeX Live and Gummi. So we’ll add two PPAs – one for a more recent version of Gummi and one for TeX Live 2012.

sudo apt-add-repository ppa:texlive-backports/ppa
sudo apt-add-repository ppa:gummi/gummi

Next we’ll update the repos on the machine and install the required packages. I’ll show you a nice template in a second for which I needed to add some additional packages.

sudo apt-get update && sudo apt-get install gummi texlive-science texlive-fonts-extra texlive-math-extra texlive-bibtex-extra cm-super texlive-lang-german

2. A useful template for theses

Google turned up a nice LaTeX template over at Matthias Pospiech’s website. And here’s why I like it:

  • it works (almost, see below) out-of-the-box
  • it looks good
  • it has a lot of things set-up (quotes, tables, references, two-page bind-friendly print layout, bibliography, math formula support, code listings, diagrams, plots)
  • it is THOROUGHLY documented (we’re talking 200+ pages pdf with examples for everything – the template IS the documentation)

The only thing I had to do is replacing each \include with an \input (for security reasons only TeX files from the same directory can be included in recent Linux distributions – you can find more on that in this stackexchange response) and I was good to go. The documentation is BIG PLUS – clearly a lot of effort went into this. This will help a lot when modifying the template.

3. Find a text color scheme you like
If you’re going to write reports and/or theses with Gummi you should look for a color scheme that you like. Right now I’ll try Jacob Pennock’s CandyMountain for a while. The editor pane of Gummi is the GtkSourceView from the GTK – so you can use any color scheme that works for it. Gedit also uses GtkSourceView. There are a few nice styles in Gnome’s GTK wiki, but you can find some scattered across the web.

The color schemes are plain text xml files. You can either install them via the gedit preferences or copying the xml files into this directory (you may have to create it first):

~/.local/share/gtksourceview-3.0/styles

You can then try and select the color scheme in the Gummi preferences (you may have to restart Gummi to see the new schemes):

Edit > Preferences > Fonts & Colors