4. May 2015 05:22
At Build there was a number of huge announcements. It is amazing to see that Azure is keeping up the pace, and as a developer I am excited about the promise of services that will enable me to focus on implementing solutions rather than fiddeling with servers and infrastructure.
1. May 2015 10:13
Besides App Services, Azure offers an alternative that is slightly to the left of the far right on the big IaaS to PaaS scale called Azure Service Fabric. Conceptually Service Fabric is based on containers, allowing you to fit many services into a single VM and it gives you more fine grained control than with App Services by providing a manifest describing how it should operate.
29. April 2015 18:31
Since I am watching Satya Nadellas the keynote and taking notes, I figured I might as well put them into a blogpost. So here it goes. More...
7. April 2015 13:08
Fantastic times! I just got back from a week off around easter, summer is almost here and I was awarded Microsoft MVP for ASP.NET/IIS for the first time. So all I that is missing is getting some blogging done.
At the moment I am really enjoying TypeScript, and I am feeling really good abouts future with the recent collaboration between the TypeScript and AnguarJS teams. I still argue that in most cases where you want your solution to live long, you should avoid the SPA frameworks. However I concede that they are popular, so it is a good step for TypeScript, which I think will help the adoption. I also think it will be good for Angular 2.0, to avoid introducing their own new language, and instead get the benefits of the good work done on TypeScript itself as well as tooling.
3. February 2015 16:47
As the design notes for C# 7 reveals, Microsoft are thinking about introducing pattern matching into C# in version 7. I was really happy when I first heard this, because pattern matching is one of the things I often miss from F#, where I wrote about the joy of pattern matching way back in the beginning of 2008. It doesn't get much more nice and succinct than this.
match value with
| "a" -> printfn "The value was an a"
| "b" -> printfn "The value was a b"
| _ -> printfn "Unknown value"
29. December 2014 15:33
What a crazy year this has been! A year ago my girlfriend and I had just started construction of our new house, so we were living temporarily in a ruin from 1892 and I was working at d60 in Vanløse. Now we are all settled in our house, Elisabeth is now my wife, she is starting her phd, and I have been working as an independent consultant for 11 months!
So it has been a very busy year for os, and I do hope 2015 will be a little less action packed, with time to enjoy our new lives and do some travelling. A trip to Barcelona is already in the cards, so it is looking promising.
Starting as an independent consultant was something I had been considering for a while. When we moved I chose to go for the job at d60, because it was a good chance to build a new team. Long story short, that didn't go as I had hoped, so when opportunities presented themselves that would make starting on my own fairly smooth I had to seize the moment, and I am really glad I did. I have really enjoyed the freedom, the chance to work on very different projects and the improved possibilities to speak at conferences.
During these 11 months a have amongst other things built a workschedule module and a budgetting module, I redesigned a big webapplication, wrote an fairly large API, worked on components for QlikView, wrote a tool for calculating distance matrices for a logistics company and started work as a consultant on a large ecommerce project. So it has been really exciting and a lot of fun. When it comes to speaking I have been at the Warm Crocodile Conference, DDC, NDC, CNUG, Visma, Ida, Keyboard Warriors and Campusdays where I have been talking about Firebase, Angular, Azure and Single Page Application patterns. I tend to agree that the one thing that is more fun than programming is speaking about programming, so I have enjoyed all my talks and I hope to have time for pleanty of more talks next year. More...
28. November 2014 13:43
Lately I have been speaking quite a bit about building Single Page Applications. Most recently I have been arguing that we skipped the discussion of weather or not we need a framework at all to build a Single Page Applications? Everyone quickly got into the battle of the frameworks, and argued about the good and bad parts of Angular, Ember, Durandal and a bunch of other contenders to the throne. These days I would argue that Angular won, which is supported by google batteling the frameworks, looking at training courses offered and joblistings. As a .NET developer this is furtner obvious now that AngularJS is part of the ASP.NET package, and samples are showing up that use it for Apache Cordova applications, which are also being embraced by Microsoft.
However, the more I have been working with these frameworks, the more I have started to question their actual value. At least to a point where I think it is something we need to think more about, when choosing which way to go. Sure frameworks give you a nice package that tackles application structure, routing, templating, two-way binding and dataaccess - but at what price? Using a framework, always means letting someone else decide a lot of things on your behalf, and it means taking a dependency on a large codebase. So in this blogpost, I will try and make the case for growing your own architecture.
You might think "so what, we do that all the time, we shoulden't be reinventing the wheel and what does it matter to depend on a framework". If they provide enough value I would surely agree, but it should always be measured against the risks of vendor lockin, issues with breaking changes, performance implications and restrictions on growing your application going forward. With a fast evolving web, these issues are very real. A framework might still be a good choice, but we need to at least think about the pros and cons.
Two-way binding is a huge sinner when it comes to performance and modelling restrictions, if the model chosen is not right for what you are building. Breaking changes are hurting developers daily, and with both Angular and Durandal looking to be complete rewrites for their next versions - so if you use them, you will be stuck with the current version, or you will be doing a rewrite of your own fairly soon. More...
26. September 2014 17:46
As I wrote before the conference I was glad to see some good speakers on the Microsoft track. So of course I prioritized a couple of these sessions, and went to Mads Torgersens C# talk and to Mads Kristensen talking about tooling in ASP.NET. Well technically Thorgersens talk was on the architecture track, but you get the point.
The new world after Roslyn
The C# talk went a bit more into writing analyzers and codefixes than what I had seen before, so that was quite interesting and one of the very concretely usefull takeaways. The idea is that writing an analyzer is just like working with any object model. No more magic, so writing extentions is becomming something any developer can do and no longer reserved for the minority with too much time on their hands. Torgersen also demoed some of the new language features that I blogged about earlier, but on top of that let slide that primary constructors probably won't make it into the language for the final release in the comming version. The reason is that they want to do more and look at providing recordtypes as well as pattern matching - and want to make sure that they get it right. These are two great features that I miss from F# on a daily basis, so I was glad to hear this. I also aired the idea of make shorthands for stuff like factory methods, which could also reduce some of the boilerplate code that I see a lot. More...
25. September 2014 15:21
At other conferences I have attended the last year or so, distribution and concurrency have been hot topics, coupled with functional programming and immutability which leands itself well to these kinds of problems. Todays program has certainly been no exception - at least for the talks I ended up picking.
The right Elixir for concurrent fault tolerant systems
In the afternoon I ended up sticking with the bleeding edge track, which has been really interesting. First off was a talk on Idioms of distributed applications with Elixir by Jose Valim, who wrote the language. In his talk Jose went over the idioms of Erlang, which is what Elixir is built on top of. He did a good job at presenting why light weight processes that are allowed to fail fast and recreated by supervisors makes it possible to build fault tolerant distributed systems that are easier to understand and run faster than other paradigmes often based on handeling exceptions via try catch blocks.
25. September 2014 09:59
So first day of GOTO in Copenhagen has kicked off, with a somewhat provocative talk entitled "Does the browser have a future?" by Tim Bray - the farther of XML. His initial point was that the browser being declared dead hardly is a new thing since this also happened on the frontpage of Wired magazine in both 1997 and 2010.
A backend detour
Tim went on a detour to cover how this is the golden era of backend development, where life is good because you have few interfaces and testing is easy because it is machines talking to machines. He went over how Erlang, Clojure and Scala are popular but probably not the answer, where he was more optimistic about Go. This should hardly be a surprise, because he has been working at google for a number of years until quite recently. He did however make some good points about having a simple way to work with asyncronicity in a simple language. In the same way he made a short argument that it is also the golden era of persistence, with big companies using NoSQL solutions like Cassandra that enables them to build huge systems that scale with relative ease.