Saturday, May 24, 2014

zsh enhanced autocomplete

Just another cool and helpful little zsh thing, I call it "enhanced autocomplete".
This works for any command with positional arguments (just type command [tab]) or with command switches (both - and --, just type command - [tab] / command -- [tab]). You will see the possible options displayed in your terminal. Bash is capable of doing that as well, but you will not see a description for each option and it does not work for short options (single dash). Furthermore, alt + h will route you to the man pages of command, without changing what you typed in the prompt so far (very useful!).

Completion for arguments is especially useful for zsh's cd -n (go back n entries in directory history), where you will see the directory for each an and can choose n appropriately.

Another thing, also related to tab complete, that I found out recently is [shift] + [tab]. This will give you a list of all commands that you can type in your current shell.

Monday, May 19, 2014

Trackpad Lenovo Thinkpad X1 Carbon w/Linux

I just got a new Thinkpad X1 Carbon and wiped Windows in order to install Arch Linux. The trackpad did not work at all out of the box. The only thing that worked was left click (I was not even able to move the mouse with the trackpad; mouse pointer worked, though).

With the help of http://who-t.blogspot.com.au/2014/03/xorg-synaptics-support-for-lenovo-t440.html and http://major.io/2012/12/28/handy-settings-for-the-touchpadclickpad-in-the-lenovo-x1-carbon/ I was able to generate an appropriate config file that allows for two-finger scrolling, as well as left and right click and mouse pointer navigation using the trackpad. The middle button (necessary for mouse pointer scrolling) is still not working. With two-finger scrolling, I do not need any middle button scrolling, though.

config file (90-synaptics-clickpad.conf):
Section "InputClass"
        # from http://who-t.blogspot.com.au/2014/03/xorg-synaptics-sup...
        Identifier                        "ClickPad"
        MatchDriver                       "synaptics"
        Option "HasSecondarySoftButtons"  "on"
        # SoftButtonAreas: right-lrtb middle-lrtb; 0 0 0 0 ...
        Option "SoftButtonAreas"          "50% 0 80% 0 0 0 0 0"
        Option "SecondarySoftButtonAreas" "60% 0 0 10% 40% 60% 0 10%"
        Option "AreaTopEdge"              "10%"
        Option "AreaBottomEdge"           "80%"

        # from http://major.io/2012/12/28/handy-settings-for-the-t...
        Option "TapButton1" "1"
        Option "TapButton2" "3"
        Option "TapButton3" "2"
 Option "VertTwoFingerScroll" "on"
 Option "HorizTwoFingerScroll" "on"
 Option "HorizHysteresis" "50"
 Option "VertHysteresis" "50"
EndSection

In order to install my 90-synaptics-clickpad.conf, just replace root_files (cf github repository direcotry structure) with the root directory "/".

Saturday, April 12, 2014

TikZ: Putting it all together

I have been working on TikZ a bit and finally got a result, which can be used for displaying time series:

Scaling one scope to another scope was key to succeeding with this. In the above image, the circles would be replaced by images of a timeseries, whereas the smaller squares show a more detailed view on the selected region of interest within this image. The only remaining challenge is a way of making the bounding box ignore the fake scope.

The code for above image can be found on github.

Thursday, April 10, 2014

Scale one TikZ scope to the width of another scope

I came across the problem that I needed to have two TikZ scopes scaled to the same width. Apparently, there is no option to scale a scope to an absolute width (or even better to another scope). In general, one could use two separate tikzpictures and use resizebox to get these tikzpictures to the same width. This works well as long as one does not refer to coordinates of one of these two tikzpictures, e.g. in order to draw a line from a node in one of the tikzpictures (or originally scope) to a node in the other one, as resizebox obviously cannot change the coordinates within a tikzpicture.

This problem frustrated me quite a while, but I came up with a somewhat hacky solution today, which includes "manually" determining the ratio of the two scopes in question and scaling one of the scopes accordingly. tex code is included on the corresponding tex.stackexchange post.

In the following image, the original scopes had a ratio as shown in the image and are scaled to the same width. There is no problem with drawing a line from circle1.east to circle2.east, as all scopes are within the same tikzpicture and there cannot be any confusion about the coordinates.

Wednesday, February 12, 2014

C++11: Initialize non-static data members

As I just found out, C++11 allows you to initialize non-static data members. This comes in handy for defining default values for member variables, which can be overridden by specific constructors.
Check out https://blogs.oracle.com/pcarlini/entry/c_11_tidbits_non_static for more details.

Monday, December 30, 2013

Framebuffer and Vigra running on Raspberry Pi

I just had some spare hours that I could spend working on my Raspberry Pi. I finally got the framebuffer running in conjunction with vigra:
http://www.youtube.com/watch?v=tcMQd5eSeLA&feature=youtu.be

Friday, December 13, 2013

C+=

From now on, I will dump C++ and use this new progamming language: https://github.com/FeministSoftwareFoundation/C-plus-Equality Apparently, the content has been deleted from github. You can still find it on bitbucket: https://bitbucket.org/FeministSoftwareFoundation/c-plus-equality/overview