climbing Zen

Flower

Bouldering in Fischbachtal (Odenwald)

Masters Edge start

Masters Edge start

As i was in the Heidelberg area again between the Christmas days i thought it would be cool to combine that visit with some Odenwald bouldering. So i planned to go to Fischbachtal and take a look at a boulder problem called “Master’s Edge”. Since i first saw a picture of the problem in the Odenwald-Guide i thought it might be suitable as a project for me so i was very motivated when i arrived after a long one and a half hour drive though small streets with lots of slow driving cars (mostly older drivers who were enjoying the nature). The weather was sunny but also very cold (around -2°C).  My girlfriend and i first warmed up on some easy boulders and i then took a look at the “Masters Edge”.

Masters Edge start (different perspective)

Masters Edge start (different perspective)

The Problem is a very nice overhanging bloc with small crimp moves at the beginning followed by a sloper section at the top. As my fingers and toes were feeling frozen repeatly after a few minutes trying, i only made a few attempts between longer warming pauses. After some time i managed to do the sit-start und the first moves up to the sloper problem but then realized that i needed much more strength to do the whole problem. We then decided to leave, after about an hour trying, and headed back to the car.

Compared to Lindenfels there weren’t that many boulders in Fischbachtal but the Masters Edge and Gagernstein make this area still a very valuable place to visit.

Masters Edge beginning of sloper problem

Masters Edge beginning of sloper problem

Bouldering at Lindenfels (Odenwald)

WarmUp

WarmUp

At one of the last weeks of the year 2008 two friends and i decided to visit the Lindenfels boulder area near Heppenheim. After driving some time through the Odenwald wilderness we arrived in Lindenfels and immediatly spotted the boulder blocs from the towns main street. So we jumped out of the car and 5 minutes later we were warming up on a bloc named “Eckfelsen”.

Abrazzo fb6a

Abrazzo fb6a

As the whole area is exposed to the west and the weather was sunny we were in the sunshine all time which made this cold winter day more than sweet. After the warmup we checked out a problem called “Abrazzo” at the “Deckelstein” bloc which was quiet hard for the grade fb 6a and took us quiet some time :) .

Bogenriss Lindenfels

Bogenriss Lindenfels

We then headed to the “Kippstein” bloc where we did the easy but very nice crack-problem “Bogenriss”. As i looked at my clock i recognized that we only had very few time left so we decided to try the sloper-problem called “Ueberlauefer” at the same bloc as the last one of the day. After some tryouts i sent the problem as my first fb6c outside the gym (*jippie*).

Ueberlauefer

Ueberlauefer

Cause i was very impressed by the nice setting and lots of cool boulder problems (especially some highballs i want to try) lindenfels is definatly on my visit list 2009.

Karlstorbahnhof gig review and liveset recording

As i announced in this blog some posts ago i played a gig at Karlstorbahnhof Heidelberg last Friday. Even though it was announced as a gig together with Wesen i played alone, as Wesen wasn´t very inspired and short on time. Anyhow he still gave me some nice loops from his recent productions, which i combined with many unfinished tracks i started over the time but didn´t finish. I completed the Set at Thursday which was also the day i setup my laptop with Ableton-live again. As i didn´t wanted to reinstall everything on a clean Windows XP due to the limited time, i choosed to use vista which was already on my box. It costed me many hours to figure out why this shitty OS was always under full load even when i was doing nothing at all. On Friday some hours before the Gig i wasn´t sure if my setup would work at all because some exported alps from my mac were missing samples and i had not tested/configured the sound-card on the laptop. I did the first real test of the live-set already sitting in the S-bahn to Heidelberg and was super super nervous when i arrived at Karlstorbahnhof. Luckily everything worked well at the sound-check and after it i had some time to practice. The gig started with some djing by felice who was playing a wild mixture of funk, indy, hiphop, grime and electro stuff. I started right after he played some really dancy tracks and many people already dancing. I didn’t look much at the dance-floor as i was busy playing the dead-act *g*, but after some time many people were really dancing which made me kinda happy :) . During the set i also thought im going too loud as everything was vibrating and i felt uncomfortable thinking people will kill me if i wouldn’t turn down the volume a bit. Shortly after i made this thought the guy who booked me for the gig came and told me to turn the volume up even more *hrhr*. After me CutOff! CutOff! played as the second live act and did a nice ableton-live electro/house glitch set which totally burned the crowd. At this point i want to thank everybody who was there, you kicked ass!
As i didn’t trusted my equipment, i made no recording of my set that night but played it in again today to let all of you, who weren’t there, know what you missed. The Set contains some small mistakes and features two pre sequenced tracks at the end i couldn’t play live cause i lost the sequenced tracks :(

http://hygiene.bl0rg.net/~nanoc/music/zenedikt–29-11-08-liveset.mp3

Finally: training at home

Today i finally managed to install my brand new hang-board over a door-frame in our flat. This is something i dreamed of for quite some time now because it ables me to do the boring climbing training at home whenever i want and saves me quiet some time at the climbing-gym to do other stuff like doing more routes or boulders.

Although I’m using a Lapis Lazzuri hang-board i started to train the exercises for the Metolius Simulator as i think they can also be done on the lapis. The training sums up many smaller exercises to a 10 minute sequence where you do one to two exercises a minute and use the remaining seconds to rest. The exercise goes like the following:

1. Minute: Hang 10 seconds on slopers and do three pull ups on the jugs.

2. Minute: Hang 15 seconds with an bent-arm on medium edges and do 2 pull-ups on three finger-pockets.

3. Minute: Do an 10 seconds offset hang, which means that one arm is lower than the other, on different edges.

4. Minute: Hang 15 seconds with your feet up known as L-hang on the jugs.

5. Minute: Do 3 offset pull-ups on jugs and 2 finger-pockets and reverse holds before doing another 3 offset pull-ups.

6. Minute: Hang 30 seconds on medium edges.

7. Minute: Do 10 pull-ups on 3 finger-pockets and hang 20 seconds on large edges.

8. Minute: L-Hang 15 seconds on 3 finger-pockets.

9. Minute: Hang 5 seconds on 2 finger-pockets.

10. Minute: Hang 20 seconds on small edges with an bent arm and do pull-ups to failure.

At the Moment I’m only getting to point 7 until being to weak to do the rest of the exercise. Maybe i give an update to this article later describing my findings and hopefully improvements with these exercises.

More information about them can be found in the exercise-handbook itself which can be found here.

Maybe I’m able to do “Paul Robinson’s” workout some time :)

Climbing double-awesomeness

Today 8a.nu wrote about the second ascent of “Open Air” by “Adam Ondra”. This Route first done by “Alexander Huber” back in 1996 is graded 9a+ and is therefore one of the hardest routes on this planet. Its incredible that Alexander did this in 1996 almost 10 years before “La Rambla Extension” was climbed, which is together with “Realization”,( climbed in 2001 ) considered the benchmark route for the grade. I wonder why this achievement isn`t mentioned much in climbing history yet. Even if it seems old news , Adams repeat is the first ever after “12″ years, and with many top climbers having tried this route, it speaks for Alexanders skills for it self. This is definitely my first awesome of the day.

Now to “Adam Ondra” the young Czech who now has nearly climbed all routes harder than 9a i know. I can’t say what an deep inspiration he is to me at the moment. He goes to a climbing route, so hard only a hand full climbers on the world are able to do it and gets to the top in almost no time. When others are working weeks, months or years he just gets there and sends it. Totally fucking unbelievable awesome. He’s definitely defining a new standard in climbing at the moment.

Now enough fanboytalk for the day :)

Review: Odenwald en bloc

Today i received my copy of the long awaited boulder guide “Odenwald en bloc”, written by “Sascha Jung” and “Jo Fischer” and published by Panico.
I first read about the new guide almost a year ago when the 4Th edition of the
climbing guide “Kletterfuehrer Odenwald” came out, which was a stripped down
climbing guide without any boulder problems and a reference to a separate guide to be released in the early summer 2008. After some delay, which the Panico guys told be has been
due to “Axel Öland”, the graphics guy behind the guide, writing his diploma thesis,
it now finally got released.

Overall information:
On the first look the guide makes a very good impression. Although it is not that big, about 144 pages, it lists hundreds of boulders from 7 different areas namely:

- Riesenstein
- Lautertal
- Felsenmeer
- Lindenfels
- Lützelbach
- Fischbach
- Frankenstein

The guide starts with a list of the hardest boulder-problems and some nice pictures
and then straightly goes to the first area. If you are a happy owner of the guide “Pfalz en bloc” you may miss a bit of a history lesson about the development of bouldering in the Odenwald here, but it seems that the Odenwald people simply didn’t document their actions as well as the Pfalz people did. Maybe this is also about not knowing the leagalness of climbing on some blocs but that’s only a guess. Also the guide is not history less overall and contains a few sentences of history at the beginning description of each area.

Content:
At the beginning of each area-section you get the obligatory map and description of how to reach the area by car or sometimes even by public transport. Then you get a description
on the type of rock and how it is climbable on different weather as well as the mentioned small history section. Then there’s a small list of recommended problems of the area and the description of how to get to certain sectors. Here i give another small minus because one could have written the sector or bloc number right to the recommended problems.
After these introductory pages every bloc is listed by a number and picture and the different lines are marked on the pictures. As i haven’t been to any area listed here except “Riesenstein” i cannot comment on the information, Topo or grades here yet. It all looks very high quality but one doesn’t know before he was there himself.
If i will gather new information about the content i will make an update to this article later.

Design:
I’m very impressed by the design of the guide and think “Axel Öland” did a very good job here. Every area is layout ed in a different color so if you are reading fast through sections or you are searching something you immediately recognize the area with its associated color. Also the pictures in the book are very nice photographed and fit into that color scheme as well. When i took the first look into the guide i was a bit irritated about the Topo’s because they were part of the background of each page, but one gets used to this very fast. Doing so is not a new but a nice idea as you have the Topo on every page and don’t need to thumb through the book all the time. I can only give one small minus to the design because i think the pictures could have been a bit bigger but that’s only a minor thing and maybe is only my personal taste.

Conclusion:
This Guide is absolutely worth its price and should be in the bookshelf of everybody
who likes bouldering and lives in the area between or near Darmstadt-Heidelberg. The
design of the guide is very good and motivates you to go to the listed areas while you are reading it.
I’m glad i now have some alternatives to the Pfalz boulder-areas and at this point want to thank “Sascha Jung”, “Jo Fischer”, “Axel Öland”, “Panico” and the many people involved who made this guide possible.

References:

http://panico.de/de/panico_buecher/boulderfuehrer/bf_odenwald.php

http://www.rokblog.de/2008/11/05/odenwald-boulderfuehrer/

http://news.climbing.de/neu-im-shop-kletterfuehrer-lenninger-alb-und-odenwald/

Music Annoyance

I just found this very nice blog article(http://technotales.wordpress.com/2007/10/03/like-slime-for-vim/) which describes howto controll a ruby-repl inside a screen window, which is a perfect solution for a problem that rosed up to me a few days ago. At that time i was very bored and tried to annoy people at entropia with manual pitching songs at their music-system. As always when doing such repeating tasks i was asking myself how i could automate it. Now that i have a answer to the question i came up with the following ruby code:

( http://bl0rg.net/~nanoc/lass_leiern.rb )

Place your bet on how long i will survive after using it at entropia on a full sunday evening now :)

Analog Beingz Live @ Karlstorbahnhof (28.11.2008)

Analog Beingz

Analog Beingz

At friday the 28th november, Wesen and i will shake klub_k in heidelberg with a completely new dubstep liveset.

As we don’t play many gigs together you shouldn’t miss this one.

—————————————————————————————-

http://www.karlstorbahnhof.de/e6650/e9063/index_ger.html

Building a Javascript Call Tracer using SpiderMonkey

Since I’m working on analyzing Javascript software i wanted to have a tool to generate function call-graphs like the ones known from the famous reverse-engineering tool IDA-Pro.
As i didn’t find such a tool, i decided to code it myself using SpiderMonkey, the Javascript engine used in Firefox, and Graphviz. Some people might know that in the past i allready created such call-graph tools for other languages and it might look silly to them that i do it over and over again, but i see it more as “hello-world” example to learn more about a programming-language or application internals.

As SpiderMonkey is a interpreter the code must be executed to do the analysis which is a disadvantage as you sometimes cannot trust the code. But as to my knowledge no environment for static JavaScript analysis exists, this approach is the fastest to get a working solution.

First I’m using an example from the Mozilla developers resource called “How_to_embed_the_JavaScript_engine”[1] to explain some general concepts one must deal with when developing applications using SpiderMonkey.


JSRuntime *rt;
JSContext *cx;
JSObject  *global;

JSClass global_class = { "global",0,
                         JS_PropertyStub,JS_PropertyStub,JS_PropertyStub,JS_PropertyStub,
                         JS_EnumerateStub,JS_ResolveStub,JS_ConvertStub,JS_FinalizeStub
                   };

rt     = JS_NewRuntime(0x100000);
cx     = JS_NewContext(rt, 0x1000);
global = JS_NewObject(cx, &global_class, NULL, NULL);

JS_InitStandardClasses(cx, global);

This example illustrates the three key components of a SpiderMonkey Javascript application.

  • The first the JavaScript-Runtime is the memory space where every application data like variables,  objects and scriptcode  are stored.
  • The Second component, the JavaScript-Context, is the component in which your code is actually processed. The Context can compile/execute scripts, can get/set object properties or call JavaScript functions. If you are using SpiderMonkey in a single-thread application you will only need one context.
  • The third component is the Global Object which acts as sort of a parent object for everything you  create in the JavaScript-Context. If you create a variable or function in the JavaScript-Context these are stored as properties of the global object. Normally you will only create one global object in your application and then use it all the time. At this point i also need to mention that it is possible to create custom objects, but i haven’t needed these yet so i cant say much about them.

Now that we know the core components we can actually run some JavaScript code which is as simple as using the function “JS_EvaluateScript” which takes a pointer to our context and a JavaScript source string and returns the result of the execution as a JavaScript object.

As I’m a lazy guy I’m going to use an command-line argument as our code-string.


char *source = argv[1];
ok = JS_EvaluateScript(cx, global, source, strlen(source), NULL, 0, &rval);

The last needed step to complete our tracer and plot nice pictures is of course the actual tracing of function calls. SpiderMonkey supplies us with the so called JSDBG-API[2], which allows developers to use often needed debugging features like handling break/watch-point or set hooks on events that occur while executing the code. The function most interesting for us here is the JS_SetCallHook function which calls a given hook function every time a function in the script is entered or leaved.

Our hooking function must be of the type JSInterpreterFunction which has the following
layout:


void * (JSContext *cx, JSStackFrame *fp, JSBool before, JSBool *ok, void *closure)

If our hook is called it is supplied with the stack-frame that was currently in
use by the JavaScript interpreter at the moment of the hook-trigger.

This is important because we need to determine the name of the function that triggered our hook and the name of the calling parent to build our call-graph. Getting the name of the function is straight forward and can be achieved through the API calls JS_GetFrameFunction() and JS_GetFunctionName().

JS_GetFrameFunction gets us a JSFunction object and a StackFrame out of the actual context, and JS_GetFunctionName returns a Pointer to the name of the function.

One could assume that the Stack-Frame which is implemented as a linked list could be used to determine the name of the parent function, but i couldn’t get this working so i guess I`m doing something wrong :)
To get around that Problem I’m using a simple stack implementation to keep trace of the parents myself.

If you have taken a closer look at the layout of the hook you would have recognized that it contains a variable called “before” which can be used to determine if the hook is called on entering or exiting of the script-function. I use this to write the new Function-Name to my name-stack on entering and to delete the name from the top on leaving.

Now we know everything needed to generate our first graph.
Therefore I’m using the following simple JavaScript example:


function add(x, y){
  return (x+y);
}

function sub(x, y){
  return (x-y);
}

function calc(x, y, z){
  if(x == "add"){
    add(y, z);
  }else if(x == "sub"){
    sub(y, z);
  }
}

calc("add", 2, 2);
calc("sub", 2, 1);

which results the following graph:

One has to note that just dumping JavaScript code from the Browser to this tracer is not possible at this point because we didnt implemented the DOM and other stuff the Browser normally has by default.
These have to be added by the developer himself but this is a way to large topic for this post and is therefore left for the reader who wants to get deeper into the subject.

Beside the use of generating pretty graph pictures like the one above, one could
also use the tracing to do many other tasks like building a signature for a given script or layout the data flow of a given variable through a script.

You can get my example code at:

http://bl0rg.net/~nanoc/javascript_trace.tar.bz2

———————————————————————————————————

References:

[1] : http://developer.mozilla.org/en/How_to_embed_the_JavaScript_engine
[2] : http://developer.mozilla.org/en/JavaScript