My Profile Photo

Tom Bell


Go, Swift, and JavaScript Hacker
Northern Quarter, Manchester


Hacking in Berlin

Around the start of November 2017 sitting in Waterstones in the Arndale, Martin had told me about an idea he had for a project we should work on. After explaining in detail and talking about how to go about it for about an hour, we decided we’ll do it.

We both agreed that we should spend a weekend hacking on this project to start it, but not in Manchester. Eventually agreeing on Berlin, we booked our flights and an Airbnb. We were set to spend the 1st to the 5th of February hacking on this project in Berlin.

The project idea was something we were both eager to work on, and kept talking about ways the project could go. We decided after New Year, to spend the day before we flew to Berlin as a planning session.

January 31st rolled around fairly quickly. Martin met up with me for lunch before we headed to WeWork to plan the work we wanted to do over the weekend in Berlin.

As we were walking towards WeWork, the worst words that Martin could probably say at this point, came out.

I have another idea… - Martin

He explained this new idea (which took about another 60 minutes, mostly due to side tracking to explain each bit), it was a very ambitious project. We sat down in WeWork, and Martin shared some feedback he had got back from people about our first idea. At this point, we were both more excited about this newer idea.

Shit.

That was it, we’d thrown out the old idea and settled on working on this new idea. We spent the remaining day talking about what we should probably do for the weekend in terms of starting the project.

We both headed home as we had to wake up around 4:00 to head to the airport for our ridiculously early flight to Berlin.

Early morning

I barely slept more than a couple of hours the night before we flew out. I was up and awake. We decided to enjoy a nice English breakfast from the Giraffe restaurant in Manchester Airport.

English breakfast

We departed, and arrived in Berlin on time, around 10:00, and had to kill time until 15:00 before we could check into our Airbnb. We caught the S-Bahn and U-Bahn to Rosenthaler Platz to work from St. Oberholz for a couple of hours.

St. Oberholz

I had freshly reinstalled macOS Sierra on my MacBook Pro just before we left, so I had to finish setting up to actually be able to do some work. Martin finished up some work on another project while I finished setting up.

Mate Mate

We decided to go try checking into our Airbnb a bit early, catching a tram close to the place. We checked in and our host showed us around the Airbnb, explaining where everything was, and how everything worked. Finally I could sit down and unpack.

Airbnb 1 Airbnb 2 Airbnb 3

After unpacking we chilled for an hour or so before deciding we’ll go out to the Park Inn to get some cool photos from the top, and then somewhere to eat.

Martin said we should eat at Chopstix. I ordered the same thing as Martin, and it was really good. On the way back to the Airbnb, we got some photos of the Fernsehturm.

Fernsehturm

Wanting some drinks and snacks, Martin looked up the closest Rewe store. We walked up one road. We walked for a bit… There was no sign of this store. Martin looked at Google Maps again… We walked up the wrong street, so we back tracked and began walking up the right street.

I joked that we were probably walking up the wrong street again. We walked for a while, and there was no sign of this store. At this point, I didn’t know the name of this store. We were outside this big building that looked like a block of apartments, and an underground car park. We thought we were lost, and couldn’t understand why this store wasn’t here. It wasn’t until Martin mentioned the store name Rewe that I noticed a sign on the building wall, somewhat covered by trees.

We were practically outside the store, but it was the most non-store looking store front you could picture. Armed with drinks and snacks we finally headed back to the Airbnb.

You might think this was the biggest highlight of our evening, well you would be wrong… That was still to come.

After getting back to our Airbnb, I noticed something on one of the light switches that looked like something that might dim the lights or something after you turned them on.

I ran my finger over this small part of the light switch… The door intercom began to ring. It rang exactly as I ran my finger over it. I thought I had broken something, or set some alarm off.

I looked at Martin, and Martin looked at me. Martin (being the only one of us who could speak German) picked up the phone…

It was a delivery guy, trying to deliver a package. Martin hung up, and we decided to not open the door. We heard someone running up and down the stairs shouting. The person went back downstairs and the phone began to ring again.

With the person still running up and down the stairs shouting to deliver this package, Martin decided to go out and try talking to him. After explaining who lived at the Airbnb, and then the delivery guy looking at the names on the letter boxes…

He said he’d got the wrong address, and walked off.

What the fuck. This delivery guy was so motivated to deliver this package, and it felt like he would stop at nothing to deliver it. Had this been in England, the delivery guy would have fucked off after the door bell rang once with no answer.

We spent that last few hours we were able to stay awake for debating on what we wanted to name this project.

We woke up late around 14:00 and decided to go out for steak for dinner. I explained how I set up the project and repository structure, and how we should probably go about starting. After a couple of hours we decided to head out for dinner.

Afternoon coding

Off topic. This being my first time to Berlin, I didn’t realise how normal it was for places to look pretty run down. I would probably fear my post if I had to use these letter boxes every day.

Letter boxes

Block House was the steak restaurant of choice. Having never really had a steak meal, I ordered based on Martin’s recommendations. A steak meal never looks like enough… Until you’ve finished eating it, then you feel full.

Afternoon coding

After we returned to the Airbnb from dinner, we settled down to begin working on the project. We wanted to pair on this work, however we couldn’t really find a solution for easily sharing our screens, either because the service wasn’t free or because our Airbnb Internet was pretty slow. This was when Martin and I discovered the built-in screen sharing in macOS. The quality and responsiveness were unexpectedly high.

Taking turns driving while pairing we got a bit done which included writing tests for the functionality as well. We had Hackers streaming to the television in the background, because of its amazing soundtrack.

We began to discuss how we should do the next part of the project, debating back and forth about how part A should work, or how we get part B to talk with part A, to even whether when we open source the repository do we start the Git history from scratch or not. We eventually agreed on a plan, however it pretty much meant we would need to rewrite everything we had already written.

Having been up until 10:00 the following morning, we crashed pretty hard and slept until the afternoon. We decided to stay in, and just spend the day hacking on the project.

Refactoring our existing solutions, we pressed on and got to the point where we could move to the next part. At this point we had formed a method that worked well for us. When we wanted to do a piece of functionality, we’d begin hacking on it, and then we’d implement the smaller chunks to finish that piece, continuing the cycle until finished. Following up each cycle with writing integration tests for the functionality.

Saturday the 3rd was also the day of the KSI vs. Joe Weller boxing match. We were interested to see how it turned out, given they’re just YouTubers. The match ended up being somewhat entertaining, for a bit. We ended up watching a bunch of YouTube videos of professional boxers for the rest of the night. We also watched some classic Seinfeld.

Seinfeld

Sunday was written off as another day staying indoors hacking on this project. Both motivated to just work on this project, and get as much done as we could for the trip. Martin suggests we go out to get a proper döner kebab. We hit a small store for drinks, and crossed the road to a kebab shop… They only had chicken kebabs, so we left to try find another kebab shop.

Haustronaut

We came across a small kebab shop inside the U-Bahn station. They also only had chicken available, so we said fuck it and just ordered a couple of chicken kebabs. We stood talking while the guy made our kebabs, once handed our kebabs, we started to leave.

Zahlen?

The guy behind the counter shouted at Martin. We’d only forgot to pay, and started walk off. We paid then head back to the Airbnb.

Oops.

Wanting a break from coding, we decided to watch another movie. This time it was The ‘Burbs. It was probably one of the weirdest movies I’ve seen to date.

We went to bed early as we had to check out of the Airbnb at 11:00 the next morning.

We woke up at around 10 to make sure we’ve packed and cleaned ready to check out and spend our last day working for a couple of hours before needing to head to the airport.

Tobias the manger of St. Oberholz gave us a couple of vouchers to use the upper floor co-working space for a day, when we went the first day. We used these to get a last chunk of work done before having to fly back to Manchester.

We worked on the last bit of functionality that would finish up all the parts we wanted to get finished on the trip. Given we had refactored two large chunks of earlier work, and still achieved what we set out to finish, it felt pretty good.

For the last meal in Berlin, Martin wanted me to try a burger from Rosenburger. I had a bacon cheeseburger, it was probably one of the best burgers I’ve ever had. After lunch we headed to the U-Bahn station to head to the next station to catch our train back to the airport.

Rosenburger

As far as airports go, Berlin airport (Schönefeld Airport) is pretty terrible. There was a lack of seating, we pretty much went to the other end of the gates to sit then head back to our gate when it opened.

If I were to ask you what are some of the things people do on an hour and a half flight, what might you say? Some would say, sleep and others might say watch a movie or TV show.

What does Martin want to do?

I’m going to redo my dotfiles.

Yup. Martin wants to redo his configuration files for things like zsh and git. Try to picture this, two nerds pairing on dotfiles with only an empty seat between us. At one point I had to copy my dotfiles off my laptop, and pass them to Martin via… A USB drive, so he could use mine as an example. There was also a point where we got stumped for about 20-30 minutes trying to work out why so shell completion wasn’t working. What was the issue you ask? Martin ordered two lines of configuration the wrong way round. Yep we were tired.

Martin had finished reorganising his dotfiles just before we began to descend. It wasn’t long after the captain had turned on the fasten seatbelt lights, before Martin said he should probably have gone to the toilet before.

To Manchester

We landed, and headed towards passport control, which felt like a really long walk. All this time Martin is desperate for the toilet. I’ve never seen anyone walk so fast after getting off a plane. We see toilet signed every few meters, which is pretty funny from where I was standing, but I don’t think Martin was amused.

We reached passport control, which was empty, and Martin went off to the toilet. I got into the passport control queue and looked behind me. Maybe 200 to 400 people were behind me and getting into this queue. I felt really bad for Martin at this point, as he’d have to join the back. Least he made it to the toilet though!

After I got through passport control, I stood waiting for Martin, not knowing where he joined in the massive queue. I suddenly found myself in need of the toilet (least it was after passport control). I managed to send a message to Martin to tell him to meet me next to baggage claim as I was fucking off to the toilet.

We caught the train back to Manchester Piccadilly, eventually heading back to our own places. I believe I just got home and unpacked (basically leaving my clothes on the sofa to deal with tomorrow), and just relaxed in the bath for an hour or so.

Since our trip, we’ve been meeting up on Sundays to get together and pair on more of the project. As of writing this post, we’ve had two Sundays pairing on work, the first we spend about seven hours pairing back and forth and more functionality. The second we spent mostly talking about where we move onto next, and implementing some of the remaining integration tests for features.

Sunday productivity

The trip overall was a great time, and I think it won’t be long till I am back in Berlin again hacking on more code. It reminded me of the time Martin and I first met, and we ended up pairing all night on reverse engineering a chat protocol and implementing our own client. The funny thing is, this was before pairing was even a thing that most developers did.

While I’ve not been able to go into specifics of the project, mainly because it’s very early and we don’t feel it’s ready to talk about, I’ll be sure to keep my blog up to date with progress.

And next time Martin tells me he has an idea, I may just end up telling him to keep it to himself, for both our sanity.