The weekend of the 23rd to 25th of November I had the opportunity to go to Hack Junction, a hackathon at Aalto University in Espoo, a city in Finland only a few metro stops away from the city center in Helsinki. Considering it has been roughly a year since I decided to teach myself how to program in full earnest, this hackathon felt somewhat special for several reasons.
Firstly, while I initially wanted to work on a data project, the team I was on instead worked on a game. We made a nice demo for a music and color themed platformer. I appreciated that two members knew how to draw pixel art because the work they did was quite good. Sometimes it seems that technical people underappreciated how much things looking nice has, so having two designers to make things look good puts this into perspective.
On to the technical aspect, one reason this hackathon felt different was a sense of confidence. Initially, I thought we might have worked on a mobile app, so I cracked open a book on Swift. While it takes longer to actually know a language, it was less nerve-wracking than expected to quickly get up to speed with Swift.
In practice, we developed the game with a combination of Lua with the LÖVE game engine and C# when working with Unity. The Love engine was useful because while Unity is very powerful, it was easier to prototype things in Love, as Lua the language is rather uncomplicated. It ended up with me prototyping game elements and then two people would implement the code in C# and Unity.
Lua is nice for prototyping considering it has a similar syntax to Python and is roughly as clean.
For example, here is FizzBuzz implemented in Lua:
As seen above, the style of Lua is like Python and Ruby, being clean. While C# is a useful language, Lua was good for prototyping because the dynamic nature of Lua meant it was faster to implement features to see how much we liked them.
For example, here is another code example, in this case, the implementation of left and right movement.
-- ... ^ More code above ... if love.keyboard.isDown('d') then if player.x < (love.graphics.getWidth() - player.img:getWidth()) then player.x = player.x + (player.speed * dt) player.img = love.graphics.newImage('melody.png') end elseif love.keyboard.isDown('a') then if player.x > 0 then player.x = player.x - (player.speed * dt) player.img = love.graphics.newImage('melodyB.png') end end
The reason I am so hung up about Lua is it feels like a change in how I go about programming. For some time, I felt nervous about new topics, such as AJAX requests because it felt each new topic had a whole new set of contexts and rules on when to use and apply it. Now, while obviously things are still difficult, this is because the scale of what I am trying to do has increased. I look to excitement at the prospect of a challenge, instead of nervousness.
Considering this state, for starters, it looks like the game is something I will be messing around with for some time.
A Note on Helsinki
While I was only able to spend a few hours in Helsinki proper, the city itself was quite pleasant. The metro system I took it to get to the airport was a classic setup of a city metro and suburban rail system hub-and-spoke model. At the end, I got to see a bit of the Finnish countryside, which was covered in a thin layer of snow on the 24th. The virtue of the Helsinki transit system was how it ran on time to the minute, and how interconnected the various transport options were in the metro center.
It does get dark in Helsinki very early, the sun sets at 4 PM, which is quite shocking considering the workday has at least one hour left in it! No one seems to mind however, so people probably get used to it.
The university was quite nice, it was founded in 2010 to a be a modern tech-focused university in Finland. The university as a result was very modern looking, having the aesthetic of a modern ski resort.
All things considered, I want to return to Helsinki again, it seems like a great place to visit.