Winterhude in 28 mm

I usually avoid 28 mm. I’m not used to it and I have to put in a lot of effort to find my images.

I also generally avoid black and white. It feels pretentious and I am more used to looking for interesting color combinations or contrasts.

So during this little walk with a 28 mm (equivalent) lens and the camera set to monochrome, I was way out of my comfort zone.

I am not a big fan of the results and I don’t know if I will repeat this experiment again. But you never know if you don’t try.

Mond über Hamburg

Auf einem Spaziergang am Hamburger Hafen entlang fielen mir nach und nach einige Fotografen mit Stativen auf. Ich fragte nach und die gut ausgerüsteten Leute antworteten mir, dass ein großer Vollmond zu erwarten sei.

Rolf und ich, die zum Fotografieren unterwegs waren (aber eigentlich nicht für den Mond), hatten zum Glück beide unsere Teleobjektive dabei, so dass diese Fotos dabei heraus gekommen sind.

Building a tiny sports guessing game using Go

A few things have coincided this summer: I had some time on my hands, I wanted to play around with the programming language Go, and Euro 2024 has been happening in Germany (I’m not a big football fan, but I do enjoy following the big tournaments every 2 years).

Long story short, I’ve worked through the (excellent!) book “Let’s Go” and have built a very rough web app just in time for the kickoff match in June.

The project is called “Go Tipp” (after the German word “Tipp” for a bet or guess), the source is now on Github:

16 of my friends have joined the game since and we have been actively guessing and (more often) mis-guessing the match outcomes of the Eurocup matches.

The features I’ve built

Here’s a quick rundown of the main project features:

  • Signup using invite code that puts you into a private group
  • Enter guesses for the outcomes of all matches
  • Once a match is finished, points are given for all correct guesses
  • Custom scoring rules per phase of the event: During the k.o. phase, correct guesses yield more points than during the group phase
  • Leaderboard to show the ranking of best guessers in the group
  • Profile page of each user to show their match history compared agains your own
  • Live update of match scores while the match is running, using the free api from https://openligadb.de/

A simple tech stack

The tech stack is simple:

  • Backend: Go
  • Database: MySQL
  • Frontend: No JS framework and mostly custom CSS (with some base styling using Pure)
  • Hosting: Uberspace, simple deployment via ssh and supervisord

A rewarding side project

So, I “learned” Go, but really more as a side effect of building a game that 17 people have been using actively almost daily for about 6 weeks.

It feels good when people use the thing you’ve built.

MVP gone right

I took a very deliberate approach when deciding which features to build first and which to leave out. I think it’s the first time I went ultra “MVP” with a project of mine and it worked out really well.

For an embarassingly long time, the site didn’t work properly on mobile, yet it still was used daily.

Even now, you can’t change your password, there’s no admin interface for me to edit match data (I do it in the database by hand) and there’s no “proper” frontend build pipeline.

My co-developer: AI

For this project, I’ve made heavy use of Copilot, GPT4 and Claude. It’s like directing a skilled developer who can code at 10x my own speed.

Find the code online

It’s a plain monolith, yet the code base is structured enough that making the code public doesn’t feel too embarassing.

It’s not meant to be used out-of-the-box, because many things have been hardcoded for the Euro 2024. Re-using it for another tournament can be possible with some adjustments.

In any case, for someone’s education or entertainment, you can find the repository online: https://github.com/floriandotpy/go-tipp