New country, new city, new job
So a lot is new since last time I posted. In the end of the summer I moved from Stockholm to San Francisco to start working for a company called Skout, building mobile social networks. With this new job some big changes came:) I am now back to coding Java after several years of mostly working with C#/.NET. Back in a MacOS/Linux environment after having used Windows for most professional development in the last few years. And back to a small company (in total about 100 people) after having worked in a company with over 1000 people in just IT. So a lot has changed, and I am very excited about it!
Lets roll back time a bit. In school I was taught C, C++, Java and Haskell, plus a bunch of languages no one knows of. When I graduated I was expecting getting a job coding Java, however I landed up with a job doing mostly Python and C. After some time at that company I abruptly switched field to building web services, and to .NET. I had done some C# at this time, actually mostly using the Mono compiler. C# at this time was still in version 1.x, and lacks almost everything that makes it a great language today, but I found it to be a better version of Java. Also, at that time a lot about Java felt like it was mainly about enterprise beans, abstractions and more abstractions. And to add on to this, a shit ton of XML to configure every single aspect of everything in XML instead of code. I never liked this. Switching to C# at this time felt like a fresh breeze. Sure .NET has its own baggage as well, for example the core ASP.NET framework could see plenty of improvements and IIS was a mess at that time, but getting things done was much faster and easier compared to Java.
Over time things have changed. .NET is still a great environment to work in (maybe better than ever I would say), but Java has also moved on. Less abstractions, the application stacks are not necessary as tall and more light weight containers are preferred over big application servers. Overall it seems like getting stuff done has become easier. However, Java is still behind C# on many language features such as closures, lambda expressions, expression trees and something like LINQ. But it seems like there is hope! In Java 8 we will get extension methods and lambdas which will allow for a very different style of coding in Java. Today the closest you get is anonymous classes combined with final variables. It does the trick but is very verbose.
Before I got the job I decided to freshen up my Java skills, so I decided to rewrite one of my personal hobby projects from C# to Java. I did some research one what was the most up to date, cool and hip Java framework and it turned out to be Play! So I rewrote it using Play! Naturally my next article is going to be about my experiences and frustations with Play!