The Winding Roads

2024-03-22 17:00:00

An unforseen event,
changing plans, changing everything.
Triggered by a flare of emotion,
someone behaving like a king.

The following relocation,
brings close what was so far apart.
Though language is between us,
we're off to a good start.

Meeting kindness with respect,
For respect given is respect earned.
Sharing meals, sharing joy,
Every day something new to be learned.

The winding roads that lead us,
to places we did not expect.
Where friends we didn't know we have,
are waiting for us to have met.

For life will just happen,
whether we want it or not.
The best we can do,
is allow us to be tought.

Time

2024-03-16 12:00:00

Fast. Slow.
Rushing forward, or taking it in.
Sometimes life is just flying by.
Sometimes, it's coming to a halt.

Different people, different needs.
The need to move, the need to be safe.
Different places, different times.
The time to create, the time to conserve.

It feels like everyone is living on their own time.
At some points we meet.
At some points we part.
In between, we share those moments.

They may never be the same.
They must never be the same.
Neither good, nor bad.
That can only be appreciated through us.

Time does not care who we are.
Time is oblivious to who we are.
In the end, time just flows.
Like sand.

The magic within

2023-08-20 11:30:00

I just came back from the Chaos Communication Camp 2023. Five days of camping together with some 6000 geeks and nerds. I had never been to such a camp before and had little idea of what to expect and how anything there actually worked. After all, they do take the chaos part quite seriously. We arrived before it officially started, set up a tent, barbecued and didn't really do much else. This first night, the forecast light rain turned out to be a heavy thunderstorm for which I was definitely not prepared. The tent was filled with puddles and everything got wet. I didn't get much sleep and all I could do is add more coffee to keep functioning. Wandering through the camp, I saw people doing things, going on with their business, having business in the first place. To be honest I didn't know if I wanted to stay. I just felt tired and lost and didn't know what I was there for in the first place.

Now, looking back I wished it would go on for another week. While it took a while for me to get into the flow there, the more I did, the more I felt at home. Since the whole thing is organized by the Chaos Computer Club, people talk about it in terms of a hacker's gathering with no device being safe from your neighbours. It is true, there are a lot of smart and gifted people there. And while the very first interaction was indeed someone demonstrating that the car's solar battery was not protected from a potential attacker, this remained the only such occurance.

What I found mostly instead was people just being themselves. The atmosphere was incredibly inclusive. It didn't matter if you drove your self-built toy train, ran around with a bushy tail or made noises that few people would recognize as music. I have never seen so many trans people, cross dressers and just crazy t-shirts in a place before. While I have never suffered from societal discrimination, this atmosphere even had an impact on myself. I have always hated getting put into a box, even if it is a box with my name on it. Nevertheless at some point I have started doing that myself. There is this box describing a masculine metal head. Someone who keeps his cool. The distant observer. I like this box. I feel safe in this box.

One night I went out on my own, just browsing. There were a few places where people set up huge speakers, blasting out heavy beats to crowds. And then there was this one heavily overweight guy, with his little stand and undersized speakers DJing with visible passion and no audience. He played Rank 1's Airwave, a song I couldn't play enough when I got into Trance. Because I am not just a metal head. I also love dreamy electronic music. And I started to dance like I had not done in 15 years. I didn't care anymore that I was the only one there. That people would walk by, seeing me, thinking whatever about me. I didn't care that I was far outside my box. I loved every single song this guy played and I enjoyed them with all of my body.

I had taken a risk and it turned out to be not a risk at all. Because these people didn't care. I was just a guy enjoying himself and that was ok and why wouldn't it? Why indeed? It's almost comical how for someone smart and well reflected there can be a buge barrier that the rest of the world would not even see. It's beyond comprehension how much time and effort we put into building such cages for ourselves.

On Friday there was a workshop on how to crochet cat ears. We went there because it sounded obscure and it became almost a dare between us three guys to go there. And what can I say, I put more than 5 hours of effort into mine. They are far from perfect, but they are super cute and I love the violett/pinkish colors and on Saturday I wore them proudly and people kept smiling at me. Because this is also me. A part of me that had a chance to get out for the very first time and couldn't help but radiate the joy of being.

Farewell my friend

2023-07-30 11:34:00

What?
How?
Why?
I'm shocked, cannot believe it.
I don't want to believe it.
Swig is gone.

I have really only spent a few weeks in his presence, yet I consider him a dear friend. While rather short in time, we shared intense experiences. We faced untamed nature, wild beasts and - most frightening of all - our own creativity.

In this time I learned to appreciate his unfailing humour. Nothing and no-one was too important to make a joke about it. Nothing was sacred. He was the embodied lesson that we should never take ourselves too seriously. He certainly didn't.

Swig was a bit of an asshole. But he was my kind of asshole. Whatever happened, he would brag, laugh and make jokes. And then his eyes would tell you exactly what was really going on inside him. They could not hide, neither the sensitive and caring soft heart. Nor the inner child that was still amazed,  full of joy and always looking for connection.

I shall miss him. I am glad I got to know him. Bye Swig.

Confessions of an old schooler

2023-03-30 17:00:00

I have used a lot of programming languages over the years. From Pascal (yes, indeed) to C to Python to Raku. Currenty I do most of my work with C++ and I have to admit: I kind of like it. There, I said it. What most people know of C++ is that it's and old, horrendously complicated and dangerous language. And that is, indeed, a good characterization. It's not much of a stretch to say that it took 20 years for this language to become somewhat usable. These decades left behind a history of deprecated features, outdated code and now obsolete workarounds for missing language features. It is the antithesis to an elegant, small and beautiful language.

C++ started out as an extension to C and I think it's fair to say that back then no one knew how to actually make good use of the new features. The language itself and more importantly the standard library lacked most of the tools that are needed to write maintainable, extensible and reusable high performance code that C++ was supposed to deliver. Containers, references, iterators, smart pointers, all of that came later. What the language did bring was flexibility. Turns out, the initial set of tools was just enough to bootstrap the rest, so most of today's feature set could be and indeed was prototyped first in external libraries.

The very same is true for the language that I have spent most of my professional life with: Perl. While "elegant" or "small" are words that no one has ever applied to Perl, it was and still is an extremely useful language. What C++ does for performance of the compiled code, Perl did for the performance of the developer. And while Perl lacked a lot of features that are taken for granted in other languages (like subroutine signatures, yes, really), it is flexible enough that these could be added by modules. This enabled a lot of experimentation with different concepts, styles and feature sets before they were integrated into the language proper. The experience gathered in these experiments ultimately was condensed into Raku, a language that I am also very fond of.

With C++ I enjoy the control I have over what exactly is running on the CPU and how memory is managed. At the same time I get a lot of convenience features and a compiler that tells me (granted, in many, many words) most of the stupid mistakes I make. Most of all I appreciate the flexibility and how people are using that to go beyond what the language itself has to offer.

While I would pick a more modern language like Rust over C++ for any new code base I were to start, I do enjoy building robust and fast systems with this challenging, mature and ridiculously overengineered behemoth of a language. I guess that's just part of who I am.

Remote work

2023-03-18 17:42:00

Almost all my professional life I have worked remotely at least part of the time, from simply stating my work day at home to spending whole days there. I have always found it easier to For the past 10 months this has escalated to a full time remote position. To say that I enjoy this would be an understatement. I guess I'm just the type for this.

It may be a bit surprising that I voluntarily went on a journey to India to work at the office for three weeks and even more surprising when I say that it was one of the coolest things in these months of working.

It was an incredibly intense time. I used every opportunity to connect to colleagues. From product features to infrastructure problems to tourist tips and flight simming, there was a lot to talk about, a lot to take in.

In return I tried to provide a healthy dose of Get Shit Done (TM). I also brought my fearlessness - or maybe it's just naivety. Anyway what came out of the resulting discussions was a row of initiatives that question architectural assumptions and lead to simpler solutions. It's hard to argue with better performance for lower cost and we made tremendous progress right away.

So was I wrong all my life? It's this proof that high bandwidth interaction leads to better results faster and that the whole remote work craze is just that? No, it is not. As great as the extreme focus of eat, sleep, develop, repeat was and as much as we pushed things forward, we couldn't keep that pace for much of longer. It is just not sustainable.

The solution as always is to combine the strengths of different approaches. When I came home I quickly finished that task that try as I might didn't want to make real progress in India. A little quite time was all I needed. There is a time when you need to get things rolling or when you need to lock the right people into a room until they have figured out. And there is a time when quiet contemplation will yield the best results.

The challenge is to know when to pick the one over the other. Even more so as honest reflection shows that personal preference plays a large role in the decision. But then, isn't this the case quite often anyway?

Mountains

2023-01-14 12:50:00

Unmovable, but constantly moving.
In their time our whole existence is but an hour.

Lifeless, but full of life.
Something growing even on the steepest cliffs.

Collecting sun, but making rain.
Even the weather is shaped by their presence.

Deadly, but not causing death.
Because "they are there" is all enough reason.

How can mere ripples in our earth's crust, be so mysterious?

Salzburg

2023-01-12 20:40:00

Shyly peeking over the mountains, are the first rays of our sun,
into the Sky Spa room, greeted by a yoga class,
mindfully doing the first stretches of this morning,
Preparing us for what is yet to come.

Downstairs, getting sustenance for all the fun.
Oat milk coffee and the vegan scramble,
they are served by the most friendly of souls.
To our animal friends no harm is done.

Getting outside, the crisp, cool air touching my face.
Anticipation rising, as I'm riding up in the lift.
The first swings on the slope, followed by the first slip.
Better not risk too much, better slow down my pace.

Back up on the top, I take it full on.
Heart pumping fast, getting into my rhythm.
Trusting my board, legs keep working.
This is elating, as if I'm reborn.

Strength and excitement, confidence and fear.
All in my mind as I race over the snow.
Clouds deep below me and sky up above.
I trust in myself and I trust in my gear.

From the icy slopes to the hot sauna, heating me to the bone.
We share our stories over delicious food.
Looking forward to a night filled with restful sleep.
Back at Forsthofalm, our home away from home

Music

2023-01-08 16:30:00

Recently I've been talking to a friend about a common interest: music. What started with me needing to show someone the results of half a year's effort in learning to play Prelude To War, quickly turned into a discussion about what music does to us, most of all emotionally.

When I started listening to music actively, it was whatever was being played on the radio or my big sister was into at the time. I remember a tape (yes, I'm old enough for that) with some Guns N' Roses, Michael Jackson and others. But really, I've never been into pop. That was simply what was available to me and to somewhat satisfy the need for music I've had even as a child. Luckily I could quickly move on to movie and TV soundtracks. I don't know anymore which came first, Star Wars or Star Trek, but I can still remember lying on my bed, facing the floor where a fantasy novel lay open, with my head wedged in between my stereo's speakers blasting the Imperial March.

While in terms of genres this was later augmented by Metal and electronic music (mostly Trance), to this day some of my most played tracks and albums are soundtracks. I think it's not just the epicness. It's that the shows these accompany have a story. A story with its ups and downs, its hardships, its races, moments of madness and moments of revelation. All the emotions these entail is reflected in the music. I don't think it's coincidence that I generally like shows where I also like the music, or the other way around. The bottom line is, here the music means something. More than just "I need to release a new track to pay my bills or fulfill a contract".

It's not just having emotions to express is making good music. I feel these emotions, even though my younger self couldn't properly identify them, let alone communicate them. This lack of communication meant that the largest part of my inner self stayed hidden, unable to connect. It didn't help that I was also shy to the point of breaking. People who got to know me later in my life probably cannot imagine how bad I was. Yes, I'm still happy in the role of the observer and I take a while to warm up, but that's nothing compared to the chasm that used to be there between me and the unknown.

To the reader the result of this is probably quite obvious. I on the other hand needed a lot of help until I realized that this made me plain and simply lonely. Unable to talk about emotions, music was the only way to... do something with them. So I let these songs and symphonies and albums take me through them and by cranking up the volume I could make my outside world at least match the inside. At least until someone opened my door and quite rightfully asked whether I lost my mind blasting my music through all the house. I guess, in hindsight, even that was at least some interaction, wasn't it?

Music became my friend and my escape. When life became too much to bear, it was there for me. With its challenging complexity, its moving rhythms, its entrancing melodies. It took my mind away from the turbulent inside, where I couldn't make sense of things and focused it on the outside, where everything was plain to hear. It bought me the time I needed to find real friends, to learn how to talk and how to really live. With all I have learned, it's no longer my only rescue. But it's still there for me. And while now I don't need it as much as I used to, it still brings me joy.

What happened (or not)

2022-12-30 19:00:00

Not a single word. I could have known. I should have known. Truth is, in our family we don't talk about that topic. I guess it's too painful and after all, what is there to say? It happened and we have to live with it. No wonder I have never known how to deal with it until I asked my therapist.

The first thing everyone learns in therapy is that all the bad things that ever happened to you are really your parent's fault. Come to think of it, parenting is really an impossible job. The only logical consequence is that no one should ever have kids. Problem solved, right? Well, almost.

The second thing you learn in therapy is that your parents are people, too. They have their own history (including their own parents) and their own struggles. And different from me, on top of those struggles they had to take care of children. Not sure, I could have done that, let alone fare better.

Probably the most important lesson in therapy was that I am actually a grown up. This means that whatever happened or didn't happen to me, it's up to me to do something about it. Thus the circle is complete, since that's exactly what I did when I sought professinal help. And that topic was very high on my list of what I want to learn about. And learn I did.

Accepting it as a necessary part of life combined with what I learned about emotions and how to experience them instead of hiding from them is what let's me come through this time. That and of course, friends who are there, right when I do want to talk about it.

As for my family, even though the usual suspects of what I could do to support them do not really apply, there are other ways. Like being more lenient when my dad honors our visit by sitting alone in front of the television for a couple of hours. Conflicting emotions are probably one of the hardest challenges to negotiate. Even though we all react differently, I can understand the impulse to withdraw and shut down only too well. All I can do and all I have to do is accept and love.

Home

2022-12-26 19:44:00

The same old topics, the same old stories.
It's sometimes hard to stay engaged.

I know, it's more about connection than about information. These are our stories, our shared history. Do we need to remind ourselves? We all need to be connected, so I guess we do.

As important as history is however, without a future it's all just stories. As useful as it is to remember, what it's useful for, is to find out what comes next.

It's not numbers. It's neither aching knees not failing hearing. It's when you stop moving, when all you see is history and the past becomes your future, that you become old.

Despite first patches of gray appearing in my beard, I feel like I'm barely getting started. With the challenges of building my life navigated I'm free to go where my heart leads me.

So while I of course do love them,
now I need my time alone.
To reflect, to recover, to grow.

Christmas eve

2022-12-24 18:21:00

Silent, soft, still.
Frozen, subdued, the sparkle of snow
Winter held my home in its grip.

The glittering cover of white.
Tiny feet, leaving tiny tracks.
A beauty to behold.

A sudden change.
Darkness replacing all joy.
A shock, letting it all fade.

An all encompassing sadness.
Challenged by a friend's words.
Softened by the warmest embrace.

Family, laughter and excited exchange.
Won't bring back what once was.

A shared meal, a playing dog, a bright tree.
Remind me of what will still be.

While nothing can last, the light will return.
The memory of pain, it will fade.

For life it goes on.
For life, it will win.
It's beauty as always within.

Merry Christmas!

Epilogue

2022-12-22 05:55:00

As I was preparing myself to go home, I received a message from my mom. My dad's best and only remaining old friend had died unexpectedly. My parents were shocked.

As is the way of such relationships I have known him all my life. I am not sure if I have ever seen him with anything but a smile on his face. He even went through his battle with diabetes with grace and his ever present humour.

It took me surprisingly long to realize this, but me and my two siblings spent our childhood in a poor family and in substandard living conditions. It was thanks to tireless work and help by friends like him that my parents could build a home, a life and ultimately a future for us.

I don't know what to expect when I go to my parents for Christmas. Growing up in a very difficult family my dad has never learned how to deal with and communicate emotions. Considering how far my own journey in this regard has been and how much help I have needed, I can only imagine how hard it must be to work through such a blow.

I will try to be there for my parents though I don't know how. As to my own feelings, they will need to wait for a little while. I am too confused right now to sort them out. Having to leave a special place and even more special people behind, integrating all the discoveries I have made on this journey and dealing with this situation is just too much all at once.

All I can say right now is that I am grateful. For the people around me, for the opportunities my parents created for me and for my wife who will be there for me. And I am grateful for him. Who has approached all things in life in the best, the only way possible. With love.

Final day

2022-12-20 12:00:00

It is the end of our adventure in this beautiful part of our African home. Over the course of two weeks I gained what feels like a lifetime of experiences. Surrounded by the sheer endless wilderness, many things were put into a new perspective.

I may have hunted with a pack of wild dogs, but I really became part of a tribe of lovely humans. I lost a friend, I reconnected with old friends and found new friends. It's funny. In our day to day lifes we spend so much time and effort on maintaining our masks. Yet we would break into tears of relief, when we are finally seen for who we truly are. When we no longer worry and instead can just be.

While I spent days in the bush, looking on the outside, I was discovering on the inside. Feelings I thought lost. Talents, I never knew. Changes, I did not expect.

This chapter may be over, but the journey never is. In the end, it really is, and always will be, a beginning.

Day 8 lunch

2022-12-19 12:00:00

A long, slow morning.
Time to reflect, time to prepare.
For a decades old dream got fulfilled,
in a ride of 25 minutes.
A flight to remember for the rest of my life.
Gaping at one of the world's wonders I lost my speech.
But in the mist of the falls I gained a sister.
Her infecting enthusiasm I will hold dear.

Day 7 lunch

2022-12-18 12:00:00

How comes, when you're watching porn you are sleazy, but when you watch a couple of baboons or lions go at it you are sophisticated and educated? Anyway, I saw a bunch of babies getting made today.
Through years of watching documentaries, of reading about history and learning about what humans did to this world, my view of the future has become downright gloomy. After all, if there is one thing we humans are really good at, it's destroying things. Our petty fights for status and fleeting glory, for power over people long gone and land long forgotten, have cost us so much of what should amaze and sustain us. With us being us, it can only end in us losing it all.
Now being here, enveloped by the vastness of the delta and its abundance of life in all shapes and forms, I am starting to question my views.
If the people of a poor country like Botswana can break the cycle of exploitation and protect this treasure, then maybe, just maybe there is still a chance.
As I watch all these herds and packs with their babies, the congregations and swarms and the occasional young introverts and then even a tortoise escaping from the fangs of a lion, I realize that maybe it still exists. That elusive feeling that I thought lost. Hope.

Day 6 dinner

2022-12-17 19:00:00

Lions and eagles, wild dogs and cheetas, crocs and leopards.
What is it that makes predators so fascinating to me?
Is it their elegance? When they spread their wings and stalk their prey, I want to be as economical as them. Using every muscle in my body with sheer precision.
Is it their confidence? When they sit there out in the open, I want to feel like I am on the top of the food chain, not worrying about how anyone may see me.
Or is it their power? When I see their mighty paws, their cutting beaks, their crushing teeth, I want to be in control, with nothing being able to stop me.
I want to be like them.
I am like them.
I am a predator, who chose, not to kill.

Day 6 lunch

2022-12-17 12:00:00

Putting my feet on the ground, I'm becoming part of this world. Moving like I'm meant to be moving.
I walk through the bush, feeling generations of ancestors watching me progress.
As we approach those giraffes, I am overwhelmed by the lingering presence of lions on the hunt.
I can't help but acknowledge the privilege of being able to take all of this in, safely.
As our circle completes, I exit from this wonderous experience, leaving behind nothing, but footprints in the sand.

Day 5 dinner

2022-12-16 19:00:00

Drove around in circles, ready for anything, happy with everything, not seeing the road taking me further.
I finally found a red topped termite mound to stand on and get my bearings.
Now I know what the next steps are on this incredible journey that is my life.
PS: there were also a rally race, a cheetah with her cubs, and an amazing thunderstorm. But I guess you had to be there.

Day 5 lunch

2022-12-16 12:00:00

Slow, silent, patient, ever so patient. Taking their time.
Watchful, careful, ever so careful. Managing risk.
The beautiful dance, as old as life.
Colorful, masterful, ephemeral.
The taunting feathers of iridescence.
Fragile, varied, feeding on the sun.
The conquerors of difficult soil.
So much beauty, all around us. Life is.


Day 4 lunch

2022-12-15 12:00:00

Today I felt content, enjoying my morning coffee,
I felt awake, when we drove by the baby crocodile,
I felt annoyed, when I didn't point out that rare bird right away,
I felt excited, chasing the romantic couple of leopards,
I felt awed, being in the middle of a huge herd of Mpalas,
I felt delighted, enjoying the morning sun with the jackals,
I felt exilherated, hunting with the pack of wild dogs,
I felt love, watching ostrich parents protect their little ones,
And when I imagined myself being one of those eagles circling above, I felt free.

Day 3

2022-12-14 19:00:00

Today I learned about perseverance, when a dung beatle just kept going when it hit our tire.
I learned about patience, when watching a leopard crawling ever so slowly.
I learned about courage when seeing a tiny little bird attacking an eagle.
I learned about joy when seeing these cute bat eared foxes and mongooses.
I learned about fun seeing that baboon baby pester it's mother.
I learned about pride when spotting so many animals.
I learned about joy when reading about how this country and these camps try to preserve this wonderful nature.
And I learned about gratitude when we could finally all say that there is an elephant in our view.

Day 2 dinner

2022-12-13 19:00:00

Saw lizards doing adult stuff. Couldn't wait to get to their room. Back in the seat, just taking it in. Ready for anything. Saw the tinyest bird. Water so incredibly peaceful. Gone native. Tiny froggies everywhere! Blinded by the light!

Day 2 lunch

2022-12-13 12:00:00

Started my morning just with the ambient light. Seemed too beautiful to destroy by turning on the light. Was a little scary though in the bathroom, especially because I went through a spider thread. Made a deal with them though.
Drove on the right side for the first time. Totally different experience. Felt soo good to have my feet on the ground. Would be nice to do that just in groups of 3 or 4.
Envied those birds circling into the sky.

Day 1 dinner

2022-12-12 19:00:00

Didn't take many pictures and instead just enjoyed. Felt serene, just as that lioness. Going with the flow. Beautiful sky with the thunderstorm approaching. Amazing light. Water was so warm. Birds on that tree. More birds than twigs. No spot left open. Lovely talk in small group. Getting watched while watching.

Day 1 lunch

2022-12-12 12:00:00

Been part of a wild dogs pack. Got up in the middle of the night. Amazingly beautiful sunrise, light and colours. Smell of wood. Giraffes sooo like Jurassic Park. Kitties unbelievably cute. Birdies bright and dark. Just living. Parents care for their children. Cooperation between species.

A newbie's thoughts

2022-07-08 08:37:00

Since I'm the new guy and got hired as senior engineer I get asked quite a lot about what I see and if there are thing we are doing wrong. I even got ((half) jokingly) accused of being dishonest when I said, that everything has been great so far. I do understand why people keep asking this but the thing is, I think it's fundamentally the wrong question to ask. It focuses too much on the negative. That's a common thing being done in businesses. Who hasn't had a performance review where this was the topic or got asked about your weaknesses in an interview? Weaknesses, whether they are an individual's or the organization's must be eliminated. It's common sense, isn't it? How else could we grow?

A couple of years ago I read a great article challenging this common wisdom. It argued that instead, we should put the focus on the strengths. Strengths are what makes us competitive and give us an edge. No one wins anything just by having no weaknesses. You also need to be particularly good at something. By the sheer combinations of interests, education and experiences, everyone has something they are good at. Sadly, those strengths often go unnoticed, because of the focus on what they are not good at.

In my previous job I came close to firing one of my most valuable engineers due to this shortsightedness. I was solely focused on his speed and efficiency or rather his lack of those. Can't have someone who cannot keep up with the team's velocity, now can we? Luckily I kept him on, because at some point I realized, that while he will never be the fastest developer, if I have got something critical, he is the man. If results of complicated calculations need to be absolutely correct, 100 % of the time, he will deliver. He will read through tax law and tirelessly write hundreds of test cases to get impeccable results. That's his strength where no one else comes even close and the company benefits greatly from having him on board. Now I wonder what stupid, younger me was thinking.

Truth is that people usually don't need some outsider (or newbie) to tell them what their weaknesses are. If you do something inherently stupid - like smoking - you don't need me to tell you to stop. If you weigh 130 kg, you don't need a nutrition expert to tell you that that bag of crisps you eat every day is a problem. If you're an engineer, you don't need a senior to tell you that scrolling through Instagram for 3 hours a day is tanking your efficiency. Yes, I have no tolerance for a single end to end test case taking 20 minutes to run and I have complained about that being unacceptable loudly. But I am certain that this was not news to anyone. It's much more likely that while people did realize this, they were just busy with that important feature that should have shipped two months ago.

What was news to people is that we have an incredible reviewer in our midst who surprises me again and again with the insights and details that he notices. From simple oversights to grave logic errors, he catches them and keeps pointing them out. It's awesome having someone like that pick up where I let us down. Could be that one of my weaknesses is being impatient with those entry tasks I got, as I know that there's an important feature I'm supposed to tackle next. Luckily his strength compensates for my weakness. So what is your strength? And are you making the most out of it?

House cleaning with Perl 6

2018-09-28 14:45:00

One of the standard features of content management systems is automatic scaling of images to the size required by the website layout. Our CMS does so on the first request for a certain size of a certain image. We have over 1400 customers and provide common content like tax related news. With so many shared images, having a centralized cache for scaled images becomes a really good idea and is easy to do using content addressing in the form of SHA hashes.

Of course there are probably as many cache implementations as there are CMS. Caches are simple beasts. You give them a key and they give you the data. Many implementations store the data in files in some directory structure which is appropriate for image data. Our use case is a bit special though, because we actually don't want the data. We would much rather have the file name to hand it off to the frontend webserver. That's why we implemented caching and fetching ourselves. But how do you keep the cache from growing indefinitely?

We just wrote a little daemon that watches the cache directory and limits its size. It's a simple "whenever a new file enters the cache, if the total size exceeds the configured limit, delete the least recently used files" algorithm. Reacting to events is inherently asynchronous and Perl 6 seemed the natural choice:

react {
    whenever $.cache_root.watch -> $change {
        my $path = $change.path.IO;
        if $path.e { # could be deleted after event was generated
            my $size = $path.s;
            if $size { # could get notified before any data is written
                %!files{$change.path} = CacheEntry.new(:$size, :age(now));
                self.clean-cache;
            }
        }
    }
    whenever signal(SIGINT) {
        done;
    }
}

The actual program of course needs some more scaffolding like reading the existing cache entries on startup and the 4 line CacheEntry class, so it comes at a total of 68 lines of code. 5 of those lines are for reading the configuration of our Perl 5 based content management system:

use lib:from<Perl5> $*PROGRAM.parent.parent.add('lib').Str; 
use ZMS::Configuration:from<Perl5>;
my $config = ZMS::Configuration.new;
my $cache_root = $config.get(|<Controller::Static cache_root>).IO;
my $cache_size = $config.get(|<Controller::Static cache_size>);
CacheCleaner.new(:$cache_root, :$cache_size).run;

Using a "best of both worlds" approach, we have Perl 5 code render our customers websites and Perl 6 code to clean up after it.

Production on Perl 6

2018-01-23 09:20:00

Half a life time ago, moritz++ asked me to blog about how we use Perl 6 in production after I mentioned that we went a very traditional way to introduce a Perl in a company. A Perl because almost all our production code is written in Perl 5. So where does Perl 6 enter the picture?

A little over a year ago we turned our single image servers into a kvm based virtualization cluster with one VM per service for the security benefit of well separated systems. The systems running in those VMs are configured by puppet but we also wanted the VMs themselves to be automatically created by puppet. Our sysadmins started writing bash scripts for that job but suffice to say, my programmer eyes could not stand the code. So I showed my admins some Perl 6 and it soon became apparent how well suited the language is for writing sysadminy scripts. A great example is my personal favourite feature: MAIN subs.

sub MAIN(Str :$vm-name!, Int :$ram!, Str :$disk-space!, Int :$vcpus!, Bool :$public)

With just this line we not only get automatic a fully automated usage text:

Usage: 
 create_vm.pl6 --vm-name=<Str> --ram=<Int> --disk-space=<Str> --vcpus=<Int> [--public]

but also argument parsing and validation. Did you notice that it expects just a number for RAM while disk space accepts a string? No need to guess which argument expects a unit suffix and which doesn't. Of course, tasks processing our DHCP configuration to find the highest unused IP address in the server range have always been home territory for Perl and Perl 6 is no exception.

Whenever we need to host a new service, a Perl 6 script on the admin's machine creates the configuration and puppet will run another Perl 6 script to actually provision storage space, create the drbd device and finally copy our master image and prepare it for its first run. So it's fair to say that Perl 6 is an essential part at the very heart of our operations.

Just as Perl 5 set out to ease the life of system administrators, Perl 6 is your friend when you need it. It not only helps with technical challenges of automation, but also with the social side by giving your users help, preventing mistakes and by helping to keep your scripts maintainable.

Perl Toolchain Summit 2017

2017-05-15 11:24:00

This is my first blog post, ever. I've had interesting things to talk about before, but they never seemed important enough to actually decide on where to put my blog.

I'm currently on my way home from the Perl Toolchain Summit in Lyon, France. Looking at the beautiful alps through the aircraft's window, I can't help but feel highly enthused. Though the view is probably only responsible for a small part of this feeling. I've been part of this unique conference before, two years ago, when it was still called Perl QA hackathon. Back then I got my invitation for the virtue of having written Inline::Perl5 which is the bridge between Perl 6 and Perl 5 code. Ever since I started writing that I've made it my mission to connect the Perl 5 and Perl 6 worlds, which over the long years of Perl 6's development have become more and more separated.

Back then, two years ago, though it felt like Perl 6 people were highly welcomed at the hackathon, my attempts at bringing Perl 6 into discussions about the Perl toolchain have not exactly been met with enthusiastic responses. I did have very interesting and even productive chats with individuals like ANDK, but it was quite clear that the toolchainers as a group were concerned with Perl 5 issues. This is quite understandable as Perl 6 as a language had not seen its first stable release back then and for people outside the core team it was probably hard to believe that it ever would be.

This year the vibe was completely different. I came to the summit with a very concrete TODO list focused on making Perl 6 the language with the easiest to package module ecosystem. What I wouldn't have dreamed of was Perl 5 toolchain people approaching us with questions on what they could do to integrate Perl 6 into services like CPAN Testers. At the very first daily standup, lizmat expressed an urgent desire to have Perl 6 modules hosted on the CPAN infrastructure. This was followed by an, I dare say, unprecedented collaboration between Perl 5 and Perl 6 people on resolving the remaining issues that stood in the way of a smooth transition.

To avoid any misunderstanding, there had been done a metric ton of work before that by both 5ers and 6ers to make this possible. It took years to get all the many involved pieces into place to get us to this point. What I felt was very different this year was that when lizmat told us her wish, it was like it's the most natural thing in the world that we simply get it done once and for all. There was neither the slightest hesitation nor worry. ANDK, who is known for his tireless and amazing job at keeping PAUSE - the underlying pillar of the CPAN ecosystem - stable and running, even took the risk of having to make emergency fixes rather than missing the opportunity of getting the job done this weekend.

Garu worked countless hours with lizmat and ugexe on getting reports on Perl 6 modules into CPAN Testers. Hearing of our plan to work on a declarative build system and native dependencies, several people came to us with advice, examples of prior art and maybe helpful code. I think it's fair to say that this summit took collaboration to a whole new level. For this and lots of other things, I can't help but feel deeply grateful. This is as it should be. It hasn't always been easy in the years before, but what family doesn't have its problems? Surely the important bit is, that we are back together. We talk, we collaborate, we try to help each other.  On that note, I do hope, that the work we've done on handling native dependencies will be useful not only for Perl 6 installers and packagers, but will also somehow make it back into the Perl 5 toolchain. It feels like I owe the awesome people at the summit and elsewhere at least a good and honest attempt.

With a short night behind me and a descent towards Vienna in front of me, I'm gonna end now, knowing, that I am part of this truly epic family. Can there be a better start into a new week?

 

Of course, my thanks go out to the sponsors of the Perl Toolchain Summit, who shall take a lot of credit for ensuring that the Perl community has a bright future:

Booking.com, ActiveState, Atikon, cPanel, FastMail, MaxMind, Perl Careers, MongoDB, SureVoIP, Campus Explorer, Bytemark, CAPSiDE, Charlie Gonzalez, Elastic, OpusVL, Perl Services, Procura, XS4ALL, Oetiker+Partner.

Managed by CiderCMS