Category: Uncategorized

  • OpenCL First Steps

    There is an increasing noise about GPGPU computing and how much faster than CPU (even parallel) it is. If you didn’t hear about all that, GPGPU is about using the computer’s graphics card(s) to do general purpose computations. The key to the performance lies in the parallel architecture of these devices. From what I read, an average graphics card has 64 parallel units, but they are not as versatile as the CPU of which a typical PC these days has 4 cores. That means, if the task is well suited, it can boost performance significantly, but if not, it’s nothing more than a lot of wasted work.

    So I wanted to see for myself. To get started I read the book “OpenCL Programming Guide“. It gave a good overview. But now it was time to give it a try.

    (more…)

  • CyanogenMod and Ubuntu on my Samsung Galaxy S

    I wanted to install a real debian based linux distro and Cyanogen on my Android smartphone for a long time. First I was scared off by voiding the warranty on a new phone. But now it’s one and a half years old. And recently they announced that there will be no more firmware upgrades for my device.

    First step was rooting. There are lots of tutorials and descriptions online. Most of them are way too compilcated. Effectively, you just have to find a rooted kernel suitable for your device, and then: (more…)

  • packaging libboost compiled with llvm clang

    I read many articles and posts over the last year or so, citing how great llvm clang is. On one side it shall have a static checker that makes lint redundant, and on the other side the optimizer has an -o4 where the -o3 shall be comparable to other optimizers. On top of that, compilation speed shall be really fast. And the part that makes it interesting for folks like Apple (who uses and contributes), is that it’s licensed under a BSD style license. What more could you want?

    (more…)

  • Earthquake

    Today early morning I sat in front of my desk, when I suddenly felt everything slightly moving. Robert who sits next to me felt it as well, but most of the others in the office didn’t.

    Last time I sensed an earthquake was in 2007 on our South America camper trip in Argentina . Unbelievable that five years passed already since we were there.

    I followed a feed with recent earthquake events for a while, but it didn’t show anything relevant at first. Browsing the page, I found the event which had a magnitude of 5.1. The epicentre was near Parma in northern Italy.

    On this map, you see the position of people that reported that they felt the quake.

  • Screen went black

    This morning, I had a short moment of horror when I turned on my Netbook. After the ubuntu splash screen, it went black and didn’t respond to any keys. The only response was for the power key, where it displayed the ubuntu splash screen again and shut down.

    My Acer aspire one has the dreaded Intel gma500 poulsbo graphics card. This graphics chipset was bought by Intel, and it’s absymal driver support has embarassed them ever since. It is also the reason I still run maverick on the netbook. Knowing that, I was even more horrified by the screen turning black.

    First thing was trying to boot an older kernel. In case you’re not presented with a grub menu, press shift after the BIOS.  Didn’t help, not even in recovery mode.

    So I booted to a console, and examined

    $cat /var/log/apt/history.log | tail
    
    Start-Date: 2012-01-24  21:15:04
    Commandline: apt-get install python-pyopencl
    Install: nvidia-current:i386 (260.19.06-0ubuntu1, automatic), nvidia-settings:i386 (260.19.06-0ubuntu1, automatic), python-pyopencl:i386 (0.92~beta+git20100709-1ubuntu1), python-pytools:i386 (10-7, automatic), python-decorator:i386 (3.2.0-1, automatic)
    End-Date: 2012-01-24  21:20:26

    The only thing I installed yesterday was python-pyopencs as it was the only package in the repository that seemed like a starting point to experiment with OpenCL. It has dependencies to nvidia drivers, but I didn’t think that installing these would break my system.

    So, all I had to do was “apt-get purge python-pyopencs nvidia-current nvidia-settings” and the system would boot again normally.

    It’s amazing how a linux system that doesn’t boot can almost always be saved relatively easily. With a Windows system that has the same symptoms you’re fucked.

  • Visited countries

    A long time ago, I found a web service to visualize a map with all the countries you have visited. Now I finally figured out how to get it displayed in wordpress using the code-embed plugin.
    Well, since we got kids, travelling is in hibernation mode, but we already have plans on where to go when the boys grow older.

    So, here are the countries I visited:
    The countries where I flew paraglider are red, the ones I only visited are blue.
    %CODE%

  • Robot Arm part 1 packaging and simple manipulation

    Another project that I had in mind for a while was to experiment with robot arm path planning and inverse kinematics. If you don’t know what that is, think about how robot arms could be programmed. The simplest form would be capture and replay, in which you have a controller which which you record how you manually move the joints. The robot can then replay the movements. We humans have developed a good  intuition for moving our body parts and grasping, but when it comes to formally describing what you do with the joints of your arm, it quickly becomes difficult. My younger son is in the phase of learning to grasp right now, and it’s amazing to see how the eye arm coordination evolves. The second approach would be to program it like a CNC milling machine with something like G-codes.  This is a bit more general and more exact, but it’s also more difficult to do collision avoidance. And it’s complicated to calculate as most joints tend to be revolutionate. Both these approaches are only suited for repetitive tasks often found in industry automation, but completely unsuited for robots in dynamic environments. Now with inverse kinematics, you can tell the robot where the arm should move to in cartesian coordinates, and it does all the arm geometry calculations and positions the gripper to the correct position in the desired orientation. Maybe there are obstacles in between the current and the target position. To navigate around these, you also need path planning. That is usually done in configuration space. Real robots have also to care about dynamics such as inertia, but I won’t go that far.

    (more…)

  • Speedflying in Andermatt

    Finally we have snow, good weather and I could take a day off. So, I went to Andermatt, my favorite ski resort. I had the intention to do speedflying, paragliding and skiing, all on the same day. It was wonderfull! But see for yourself …

  • Mixing boost versions –as-needed

    Some linux distributions defaulted to use the –as-needed linker flag for a while. Ubuntu tried it in natty, but then reverted. Now with oneiric, it really is enabled by default.

    I ran into this when one of my packages wouldn’t compile on oneiric. I always got linker errors with boost::filesystem and boost::system. Between natty and oneiric, the default version of the packaged libboost changed from 1.42 to 1.46, thus switching from filesystem v2 to v3. Obviously my first thought was that it must have to do with that. Also libwt which I use in the project had the same error in a previous version. So, I reduced my app until I was sure that couldn’t be the cause here. Also all my other packages didn’t have any problems with the transition to filesystem v3 apart from the regular changes for adapting to the new interfaces. But for these changes the compiler helps.

    The project in question is organised more or less like that:

    (more…)

  • Best names for algorithms

    I’ve worked in Baar for two months now and I go to work by train. It takes a while longer than to Schwyz as before, but I don’t have to switch trains or busses. That means it’s good for reading. Currently I read “Artificial Intelligence: A Modern Approach” which is accompanying an online curse (ai-class.com from Stanford) that I currently attend. Today I was reading in the chapter about neuronal networks. There it describes an algorithm called “optimal brain damage“. It tries to find an optimal topology for the NN by randomly cutting connections from an initially fully connected NN.While it describes adequately what the algorithm does, it struck me awkwardly when I first read the name.

    What are the best names for algorithms you have come across?

    (more…)