In Heidelberg

After a busy Maskerade week, I needed some time away to clear my head, so I decided to spend a few days in Heidelberg. A number of people had told me how beautiful the city was, but I’d never actually been there myself.

Mauer

View from the castle

On my first day, it was pretty gray and cold. At some point it started to rain a little and I almost turned back to the hotel.

Graue Wolken am Himmel

I’m glad, though, I didn’t, because while I climbed the 300+ stairs to the castle, the sun came out, and I was able to enjoy a wonderful view over the old city.

Stadtpanorama vom Schloss aus

Stadt vom Schloss aus

Schlossturm mit abgesprengter Mauer

Philosopher’s Walk (“Philosophenweg”)

On my second day, I went to the other side of the Neckar to hike on the Philosopher’s Walk, a path just opposite the old town. While you feel like being in nature, the city is never really that far away. I actually came across a lot of joggers taking advantage of this.

I went in mid-morning when the sun is just opposite the Philosopher’s Walk behind the city. Hence, it was nice and warm, but the city was back-lit, making for some not so great pictures.

Neckarpanorama von der Theodeor-Heuss-Brücke aus

Baum am Philosophenweg

Philosophenweg

Alte Brücke

Maskerade 2015

In recent times I haven’t posted much in the Theater category. Since most people with an interest in theater are on Facebook, I’ve used that to socialize. This week, however, is Maskerade week and I just have to give it a shout-out here as well.

Maskerade is a bi-annual festival for school drama-groups, three weeks before Easter. It’s the single biggest item in the event calendar at my high school (pictured below).

Goethe-Gymnasium

It’s run by a core team of ten or so people (including myself) who are supported by many more from the entire school community (teachers, parents and both current and former students).

My school is very lucky to have semi-professional sound and lighting equipment, so we can provide excellent conditions for the other groups. It’s a lot of work, but it is so rewarding to see our stage transform into a completely different setting for each performance and see how the other groups utilize the space.

Moments in pictures

The Maskerade banner. Unfortunately, because of the dark-green color scheme, it’s a bit hard to see for passers-by. Something to consider for Maskerade 2017.

Maskerdeposter (schmal)

Setting up the decorations on opening day (note: while I helped hanging them, I had no involvement in choosing the colors of the balloons).

WP_20150318_003

Opening ceremony with Düsseldorf’s mayor Thomas Geisel.

AdobePhotoshopExpress_0ef56e0475c94ab29985b2b0f83d374a

The stage on Saturday morning, waiting to be set up for the first of five plays this weekend.

AdobePhotoshopExpress_b775633979f84bc0b25fcdc90bc8b2b8

And a few hours later, looking completely different.

WP_20150321_004

There are pictures from each of the performances on the Maskerade website and its Facebook page, e.g. from our performance of Wie Fliegen on Wednesday. It’s a great play that I really loved creating the lighting design for.

Close Firefox now made easier

Around the time Firefox 25 came out, I complained that I frequently got an error message saying the application was still running but not responding:

It seem some time between then and now (Firefox 35) they addressed this issue. First, the error message became far less frequent. And second, they added a helpful button to kill the unresponsive Firefox instance.

Firefox

Nice UX improvement. Well done, Mozilla.

When to Use which Social Media

I noticed there is a strong correlation between how much free time I have, and which social media I frequent:

  • If I’m working and therefore have little to no free time, I won’t use any social media at all.
  • If I’m traveling, you’ll read about it on this blog.
  • If I’m doing something related to the theater, I’ll post about it on Facebook.
  • If I have some free time to catch up on items in my news reader, I’ll probably post some of them on Twitter.
  • If I have more free time, I’ll write something about software here.
  • And if I have a lot of free time, I’ll be on Xbox Live.

This list is dedicated to M who I know loves this kind of stuff.

Vancouver in February

If you enjoy gray skies paired with a constant light drizzle, Vancouver in February is a great travel destination. Otherwise, you might pick some other time in the summer to visit the city.

I was there on business, so had no choice regarding the time of year. I also had very little time to go out an see the city. Combined with the aforementioned weather, the photos I brought back aren’t great. Here they are, anyway.

Lay-over in Frankfurt

Looking at the sky over Frankfurt on an early-morning train from Düsseldorf.

Himmel auf dem Weg nach Frankfurt

I actually wanted to photograph the monitor LCD in the background showing how the train was going close to 300km/h, but the camera decided to focus on the seat in front of me. Looks pretty artsy, nonetheless.

Zug

Vancouver

The city is surrounded by beautiful mountains, but it was only on a couple of occasions that one could actually see them.

Berge unter grauem Himmel

Most of the time it looked like this: an all-gray North Vancouver.

Graues North Vancouver

Devoid of any kind of human touch: entering the hotel room.

Tristesse Schwarzweiß

In addition to that, the hotel was also located beautifully right next to a freeway.

Freeway bei Nacht

Going home

The Lufthansa Boeing 747 waiting to take me home. As on other major airports, an HSBC advertisement isn’t far.

Boeing 747 vor dem Abflug mit HSBC-Werbung

Writing a High-Performance C# Application

After months of working mostly in a business analyst/architect role und only occasionally writing code, I was finally given a project that now has me coding quite a bit for a change. The objective was to rewrite an existing Delphi application in C# and add new functionality. As with most of the applications I get to work on, performance was key.

Recommended reading

Before embarking on this project, I bought a copy of Pro .NET Performance: Optimize Your C# Applications by Sasha Goldshtein et alia. This book is a great read and I can recommend it without hesitation. You could probably stop reading this article and just get the book and you would be fine.

I also found Writing High-Performance .NET Code, but since I haven’t read it, can’t comment on its merits.

You may also want to check out my collection of links on the matter Reading up on Concurrent Programming.

Memory

While .NET offers automatic memory management, this by no means implies that you did not have to think about it. In fact, for high-throughput applications, I’ve found garbage collection (GC) to be one of the most crucial determinants of performance. The Goldshtein book discusses memory management at length.

In addition, there is also a wealth of more detailed information on various MSDN blogs, particularly the CLR Garbage Collector blog by Maoni Stephens.

Other, non-GC related memory management topics:

  • Know Thine Implicit Allocations highlights situations where memory allocations are made by the framework that you might be unaware of. The good news is in newer version of the framework steps are taken to reduce these.
  • Choosing between class and struct, as (generally speaking) instances of the latter will be collected with the objects that contain them and not result in new objects that need to be tracked during garbage collection.

I’ve actually become quite a fan of structs. One central type in my application, with tens of thousands of instances that store information in the form of a couple of ints and longs, is now implemented as a struct. Instances are stored in an array and instead of passing references, I pass the elements as reference parameters or refer to them by their index. The code in this part of the application might not be very object-oriented, but that is often the price to pay for excellent performance.

Specialized classes

As a general rule, I recommend using the well-known classes from the .NET framework, e.g. for collections. Every once in a while, however, there are situations, where you have special (performance) requirements that may not be met by standard collections. There is actually a chapter in the Goldshtein book about writing your own collections. Sometimes, however, there are already classes that do what you need, they are just hidden away in a different namespace.

For instance, while everybody knows about System.Collections.Concurrent, there is also System.Collections.Specialized, which contains a couple of interesting types:

Speaking of different implementations of dictionaries, I’ve found this article about Choosing The Right Collection Class extremely helpful.

Finally, LazyInitializer is an excellent alternative to the Lazy<T> class, particularly when you are watching your memory footprint and/or the number of objects you create.

Watching what I Watch on the Web

In past installments of Things to Watch I had shared a number of YouTube channels that I thought were particularly entertaining. These were fun and great time wasters, but at some point I realized that they were just that: wastes of time.

So I decided to clear out my list of subscriptions and get rid of all the vlogs , web series and other comedy content. Instead, I am focusing on just a few, educational channels: