Oredev 2014

In case you don’t know it – Oredev is a development conference held each year in Malmö, Sweden. The conference covers pretty much all topics within development – there is java, .net, processes and tools (and more).

oredev 2014 logo

Every year Oredev has an overarching theme. This year the theme was “Love man, love machine”. And by the way this year was also the ten years anniversary for Oredev. The theme logo that you can see on the top of the page – Dan North‘s interpretation of the theme logo was as follows: “the people on the left will think I’m into ‘man love’ and the people on the right will think I’m a ‘love machine’.

This brings me to one of the things I really like about Oredev – the team has not been afraid of experimenting. Every year there has been really excellent and interesting keynotes, but also one unpleasant, weird or poorly presented keynote. But this I believe is most likely what you have to accept when you take some risk.


I’m not going to go too much into the talks. There are just so many. I will how ever tell you about three talks that I found special. Off course there are many more good talks than these 3, but I’ve decided that this post should not be to long hence only a few talks.

The Inspiring

Dan North talked about the moments in our life where a person impacts us in a way that change our perspective on something – often unknowingly – for the rest of our life.

Warning: this talk is not technical at all – it’s about human interaction. But then again as Gerald Weinberg said “It’s always a people problem.”

Watch it – the stories are great and the enthusiasm in Dan’s body language is contagious.

The Interesting

I was really fascinated by Brian Christian‘s talk titled “the most human human”. I could say that the talk is about AI (artificial intelligence), but really it is about what it is that makes us appear human (or not) in digital communication.

This talk is funny and it really put words on things I had not before thought about explicitly.

The Funny

James Mickens gave a talk called “Life is Terrible: Let’s Talk About the Web” This talk I didn’t even see myself at the conference. But it was recommended by several people I know who saw it. So since it was already online I watched it and had a good laugh.


This Years News

This year the sessions were shortened to 40 minutes (previous 50 minutes) which I personally think is a really good idea, because it avoids the brain of middle aged people (like me) bursting into flaming before the last session and it also allows for more mingling since the break were also extended to 20 minutes. However the ‘lunch’ break was just the standard break 20 minutes.I still would prefer that there was a longer break (30 minutes) around noon, but all in all the shorter sessions worked out really well in my opinion.

The previous years I have attended it was often a problem to find a place to sit and eat. As mentioned there was no official lunch break. In stead lunch was served from 12.00 to 14.00 – which stretched over 2 breaks (and 2 sessions). The new way made the queues at the buffet slightly shorter than previous years.

Talks from previous years are online and the time from presentation to internet was amazing. I believe all the talks a already online now (2 days after the conference). That is pretty good.

Me, myself and I

A conference is to me a great to meet fellow developers. It’s not often you will have a better chance of knowing what other developers actually do. If you can I recommend that you go to conference the day before to meet with other ‘preconference attendees’ and hang out.

My conference started already on Tuesday evening (the day before the conference). I met with Rafal, Michal and Michael Tiberg at the ‘Green Lion’. Rafal and Michal seem to be at all the conferences that I attend in Sweden which is quite amazing considering that they are from Lodz. And they also organise the DevDay conference in Krakow. Michael Tiberg is the founder of Foo Cafe.

Later a bunch of the speakers showed up and there was talking and laughing.

During the conference I also met many interesting and nice people – some I already knew – and some I didn’t. For instance John Magnusson whom I have had conversations with on twitter, but never actually met. And John is also a fellow anti-region-legion member.

So what is the anti-region-legion you may ask?! It’s a web site created to help people who get rashes from 20.

I created the website during oredev 2013 so conference friday was actually the 1 year birthday of the anti-region-legion!


All in all Oredev 2014 was a really a good conference. It has great speakers, lots of choices and the magic Oredev atmosphere.

Posted in Uncategorized | Leave a comment

Leetspeak 2014

Leetspeak is a really nice one-day, one-track saturday conference arranged by tretton37. 2014 was the 3rd year it was held (with public access anyway). This year’s conference was in Göteborg – the second largest city in Sweden.

I attended the two first years, so I thought it would be natural to attend again even though the location meant that I would either be late or had to sleep in Göteborg the night before the conference. Luckily I decided to go there on Friday, but more on that later.

The two previous years I didn’t notice any drama and this year was no different, except for a little before and unluckily a bit more after the conference.

The drama before was really not much to talk about but it did affect one of the speakers – Barry Dorrans. His plane was initially delayed and later cancelled.

But he did arrive and all was good(-ish).


I mentioned earlier that I decided to go the day before the conference started. A good bunch of the attendees/organisers/speakers met up the afternoon mingled. That was a very pleasant experience and I met a bunch of really nice people. It was fun and such a good experience to meet with other passionate devs – even though I was very tired and crashed early.


There were six talk, which I think is the absolute maximum a conference should allow. Making sure that there is room for breaks and mingling is very important in my opinion. Even though the schedule was tight I think it worked well.


Martin Mazur from Tretton37 made a short introduction to the conference and talked about learning and why it’s particularly important developers.

Going beyond OWASP

The first speaker was Barry Dorrans who works at Microsoft’s asp.net team on security. Barry’s talk was very entertaining, but still full of very usefull information – even for developers outside the .net stack.

The talk assumed a fair bit of security knowledge on .net, but in turn many interesting topics very covered in hour Barry was on the stage.

Barry showed these three security bulletins:

And several other demos. One of the showed why using partial trust is no longer recommended (see the presentation 1:09).

A couple of tweets related to this talk:


Testing the essential with Autofixture

Enrico Campidoglio is a good presenter (I know from previous talks I have seen with him) and this is what the attendees said about it:

I missed this talk because I chose to set up my coffee measuring device and followed the “hallway track”.

Making Games with Unity in C

Adam Buckner did a polished and solid tutorial/product presentation of the Unity game creation tools.

Although the talk technically was good there is an inherent problem with product presentations. The problem is that the main purpose of such a talk is marketing.

In my opinion product talks are best if they lean towards case studies. A product presentation will most likely interest me far less than a talk about how a specific project (game) was created with that product (praticularly if it also shows some limitations of the product).

Building backend services at Spotify

Spotify‘s approach development and operation is really interesting. Not only because Niklas Gustavsson) presented really well, but mainly bacause Spotify use techiniques that most companies can learn from.

The talk contained:

  • real setup used in the trenches at Spotify
  • architecture at spotify (incl. organisational)
  • the Spotify approach to microservices
  • automated deployment and configuration – how Spotify handles configuring and managing servers automatically.
  • An honest statement about monitoring ‘getting better’ (that the monitoring is not good enough yet basically.)

A very good talk definately worth seeing. Compliments Fred George microservices talk for last years Oredev.

What is DevOps and how can it help my business succeed?

Paul Stack delivered a very polished talk on devops. If you haven’t heard much about the topic this talk is one to watch.

One point that about a really nice automatic deployment deployment pipeline was summarized by @MrowcaKasia :

The art of destroying software

This talk was not the classical conference talk. Greg Young held a 45 minutes monolog with a clear points (and a few rethorical questions to prove the points).

The ideas were fairly simple * optimize for delting code. Never make ‘unit’ (microservices, objects, actors) of code that take more than a week to write. * write composable code at all levels (relatively large systems should be composed of (relatively) smaller systems – and so on.) * Write the software in the simplest way that could possibly work right now (not adding stuff that will (or will not) be needed in the future.)

In a conversation after the conference one person mentioned that the reason for optimizing for deletion was fairly clear, but not how.

I quite liked the monolog format, but the above leads me to believe that the talk could be improved, but having the dialog for 1/2 hour and then another 1/2 hour or so on examples of code where ‘deletability’ and composability was achieved.

The crowd said:

My own micro contribution to Leetspeak

In addition to attending I also brought a silly little gadget that was build using the presents from previous Leetspeak conferences – a cup and a raspberry pi – lego and a few electronic components.

I presented this in the breaks and it was a lot of fun. I was happy that so many student came and talked to me. Several of them told me that they used arduinos in their studies.

I’ll probably make a post on the gadget at some point, but here’s a picture of it:


After the conference everybody was invited to mingle at a pub. Good idea and I went for a while until I had to leave to catch the train home – tired and happy about what I had learned.

Everybody seemed to have a good time after I left- here one example:

The day after I saw this tweet:

Ouch… That made me angry on Anders’s behalf. And as you may have guessed this was the after conference drama I talked about. I don’t think Anders got his laptop back.

This was my only experience related to the conference that was not good.


Leetspeak is a really good conference that I would highly recommend to anyone developing on the .net stack. The team at Tretton37 does a great job arranging – a big thanks to all of them.

If you couldn’t go or if you would like to see the talks again they are all available here: http://vimeo.com/user14410096/videos (including talks from previous years).

See you next time for Leetspeak 2015!

Posted in Uncategorized | 1 Comment

Configure git without access to homepath

How to configure git without access to HOMEPATH

Ok, so this is weird. I don’t have access to save in my HOMEPATH directory. What can I say: not the most natural place not to be able to save, but nonetheless that’s the case (I have access to save in all subfolder, but still). Anyway since HOMEPATH is the default place to save global git configuration files this is a bit awkward.

Git comes with default settings (stored in the installation path) and since I have permission to write there that makes it possible to still solve the the global configuration problem.

Translating git config --global commands to lines in gitconfig

Typically configuring git is done with the git config --global (if it’s a global git setting anyway.). The setting in then saved to your HOMEPATH


git config --global user.name "Ada Lovelace"

will write this:

name = "Ada Lovelace"

to the gitconfig file.

I would normally configure the following things (on Windows):

git config --global alias.st "status"

git config --global alias.co "checkout"

git config --global alias.ci "commit"

git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative"

git config --global user.name "Ada Lovelace"

git config --global user.email "ada@lovelace.org"

git config --global push.default "matching"

git config --global credential.helper "winstore"

which translates to:

st = status
co = checkout
ci = commit
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative
name = "Ada Lovelace"
email = "ada@lovelace.org"
default = matching
helper = winstore

in the gitconfig file.

Please note that you should only use the last configuration if you actually install git-credential-winstore (which I recommend if you are on windows).


Directly edit the gitconfig file in the <install path>/Git/etc/ folder (typically C:\Program Files (x86)\Git\etc on Windows).

Posted in Uncategorized | Leave a comment

My git aliases

As a (former?) mercurial fan I find the default git commands too long. Just compare git status to hg st. You could argue that this is a small thing, but I’m a slow typer and it just annoys me to type out status when I use it a bazillion times a day.

Luckily git has aliases which makes it easy for you to make new shorthands (or new) commands. I used some aliases from Brendan Forster’s blog on this very topic. Here they are (ready to paste into your git config file):

st = status
co = checkout
ci = commit
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative

Or if you want the commands to make git put them in the global git config file:

git config --global alias.st "status"
git config --global alias.co "checkout"
git config --global alias.ci "commit"
git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative"

At least git usability is now better than the default.

Posted in Uncategorized | Leave a comment

NordicJs 2014 – day 2

Yesterday I wrote about the day 1 of the NordicJs 2014 so go and have a look there for the events of the first day.

The day started like this:

The Talks

Ellen Sundh: “Node.js physical interactions”

Ellen Sundh didn’t wear golden shoes or anything hipster-like, but the things she has done is really amazing! If you are interested in embedded stuff you should watch this talk when it comes online. Very exciting stuff. I’m currently building a rainmeter with .net gadgeteer, but this talk made me think about doing on the Arduino.

Douglas Crockford: “The Better Parts”

This talk was on ES6 and Crockford’s view on how you can work with JavaScript safely and with good performance. Building on his book “JavaScript – the good parts“. I always enjoy hearing Crockford’s opinion on what to use in JavaScript and how to use it. Great talk.

Tiffany Conroy: “Lions and Tigers and Handling User Capabilities”

Tiffany Conroy talked about different strategies to manage user rights. The talk covered both server, client and UX strategies.

Reginald Braithwaite: “Duck Typing, Compatibility, and the Adaptor Pattern”

The talk by Reginal Braithwaite was about how the use of the adaptor pattern and how it may affect coding/architecture style at all level of a system. Very interesting ideas.

Kassandra Perch: “Stop the Fanaticism!”

Kassandra Perch was the next speaker. However I picked up my youngest son from kindergarden, so I didn’t see anything of this talk. Judging from the twitter response it was a good talk.

Hakim El Hattab: “Visual JavaScript Experiments”

Hakim El Hattab showed a lot of projects he has been working on. I only saw a part of the talk, but what I saw was really cool.

Tom Dale: “The Road to Web Components”

Tom Dale talked about web components and of course a bit about ember as well. I didn’t see the end of the talk, but what I saw was good.

Lightening talk

There was another round of lightening talk, but I didn’t see that either – I was eating with my family.

Final words

Daniel Beauchamp did a great job as a host of the conference.

As a whole (seen from the livestream) everything was very well organised – very impressive for a new conference. Big applause.

I hope to be able to attend in person next year.

Very last words (warning: opinionated)

On twitter there where a few complaint about the conference not having enough JavaScript (and not enough live coding!!!). In my opinion that is crazy talk. At a conference be disappointed if you saw exactly what you expected. I also saw a suggestion to have more talks and shorter breaks. I really hope the organisers ignore those suggestions – it only overloads the brain (for the majority of us). Lastly (is that a word?!) I’ll steal the words of my fellow livestream-participant Elin Nilsson (I agree 100% with the following statements):

Posted in Uncategorized | Leave a comment

NordicJs 2014 – day 1

NordicJs is a JavaScript (surprise!) conference held in beautiful Stockholm. I couldn’t attend in person, but NordicJs offered a free livestream from the event. I think that is just fantastic for the community and since the event was sold out I don’t it had much (negative) impact on the conference economy.

Livestreaming and SilverLight

However the livestream was the nest of a bit controversy. The livestream required SilverLight to work from a desktop machine and there were quite a few frustrated tweets about this.

Here’s a polite and reasonable example:

Most people (including @webbfyra)got it working by installing SilverLight I believe (judging from tweets.).

Off course it is a bit ironic that a JavaScript conference needs Silverlight. NordicJs had worked with Viasat to provide the live stream, so it was no really NordicJs’s fault.

Despite the irony I think the decision to stream the event was very good. The recent coldfront conference in Copenhagen did the same. I also think it was a good idea to do the streaming with a partner that knows about streaming. I believe the conference organisers already have plenty of things to do – so outsourcing the live stream seems reasonable.

SilverLight is available for quite many platforms and the streaming also worked on linux (for one guy at least):

What to do about it?

Next time I think NordicJs should prepare the user at signup to the liveevent what platforms that are supported/working. (Or if possibly use a technology that works without plugins).

I was happy to see that people on twitter helped each other to make the the live stream work.

Finally I think the hardcore complainers should remember that the live stream is a free way to go to the conference. Complaining about things that volunteers provide for you for free is not very nice. To be fair I only saw one two persons being a bit rude (sorry while I was writing this another one showed up).

Conference rules

In a perfect world it should not be necessary, but NordicJs chose to be very explicit about the conference rules regarding harassment.

I think it should be standard for all conferences. I miss the policy on the NordicJs website though. That would be a suggestion for an improvement.

The Venue

Off course I can’t say much about the venue premises, but I did see the stage!

So the surroundings look like this:

Livestream Followers

It’s not the same as being there in person, but it’s alright…

The Talks

I’m not going into the talks too detailed, I guess the talks will be online at some point, but here’s the who-aboutWhat-tweets:

Robert Nyman: “Five Stages of Development”

Robert Nyman talked about some of the new stuff in the firefox/mozilla dev tools. Very, very cool.

Emily Rose: “The instrument of the geek: the keytar”

I made up that title because I didn’t notice the title. Emily Rose didn’t really have a talk/presentation in the classical sense – in stead it was a demo of the new(?) instrument – the keytar.

Sergi Mansilla: “The Fourth Dimension”

I think Sergi Mansilla renamed the talk to something different, but anyway the topic of the talk was functional reactive programming.

Leah Culver: “Dropbox APIs for JavaScript developers”

Leah Culver gave a number of example of use of the dropbox JavaScript datastore API and the dropbox JavaScript chooser API.

Jina Bolton: “Style Guide Driven UI Design”

The talk by Jina Bolton was in the CSS land and in spite of that it was good. :) Jina talked about using style guides integrated in the CSS-land code.

Caroline Drucker: “I’m a feminist and so can you!”

Caroline Drucker‘s talk was a “soft” talk about feminism/discrimination.

Here are some reactions/citings:

Kim Joar Bekkelund: “Writing Beautiful JavaScript Tests”

Kim Joar Bekkelund talked about testing the JavaScript in the frontend.

Lightening talks

Then there was the lightening talks.


NordicJs looks like a really promising conference and I hope I have time to see day 2 and go to the conference next year.

Posted in Uncategorized | Leave a comment

Getting Started with Plunker

Fairly often I want to test a bit of html5 code. Just to see if it would work. At other times I want to kick the tires of the latest new-cool-kids-used-this.js. Until recently I would spend 10-15 minutes just to get everything downloaded and set up before being able to actually write any code of my own.

Today I’ll just used Plunker and be writing my own code in 1 minute.

The most confusing part of Plunker is the start page. It is not completely obvious that you would almost always start the Plunker editor (by clicking the Launch the Editor button). I’ll suggest that you just go directly to the editor.

With Plunker you start out with a project containing a html document with references to a CSS and a JS file. Adding external libraries takes a couple of clicks with Plunker’s large library collection. After that you can start writing code. Very impressive – and it even seems like Plunker is pretty much a one-person project by this guy.

If you don’t type anything, but still want to see Plunker in action have a look at the tutorial I put on Youtube.


Try the web-based html5-IDE Plunker here: http://plnkr.co. It’s great.

Posted in Uncategorized | Leave a comment

Leetspeak convenience links

leetspeak logo

Leetspeak is a great little one-day, one-track conference organised by tretton37. It was born in 2012 – I guess mostly as an experiment.

I have been there both 2012 and 2013 and I intent to go this year too – even though it is held in Gothenburg, which is not as good as Malmö for me (Still better than Kiruna though. Rumour has it that Kiruna will be host city for leetspeak 2015.). The organisers of leetspeak have managed to get some really good speakers the first two years (To name a couple: Joe Hummel and Jon Skeet spoke in 2013).

This year I look particularly forward to hearing Barry Dorrans:

Last year the conference was sold out within a short time. So in order for you to avoid the situation where you miss the opportunity to go to leetspeak I have created a couple google calendar links for you. One for when it’s time to buy the ticket. And one for the event.

Google Calendar reminder to buy your ticket for leetspeak 2014

Google Calendar event for Leetspeak 2014

See you there!

And don’t be afraid to say hi to me there – I bite less frequently than some boxers and football players. I even speak a few words of Swedish.

Posted in conferences | Leave a comment

When (NOT) to use ArcGIS Geodatabase Replicas

The geodatabase replication in the ArcGIS world is generally a very nice feature. It allows you to replicate some or all data between two geodatabases. Replication could be useful in a number scenarios and in other scenarios where it would appear to be perfect not so much.

Here is esri geodatabase replication described in one picture:

geodatabase replication in one picture

Here is a couple of project where I have used and not used geodatabase replication succesfully.

Sharing Vendor Data Across the Organisation

I was working for a large international corporation (Let’s call it Xorp) which wanted to share spatial data that Xorp buy from external data vendors – typically on monthly subscription basis – across their main offices. Since the offices are located around the world Xorp wanted to have local copies at all the main offices and a master copy at the office that handled the incoming from the data vendor. I first thought was to use geodatabase replication. Luckily I decided to think.

Even though this might sound like a perfect for geodatabase replication with a master database and some replicas it is really not well suited at all for geodatabase replication. Not at all.

Even though the distribution would be nice and easy the scenario is really violating the way esri designed geodatabase replication. Geodatabase replication is build on top of versioning. If you don’t have any reason to version your data you should not use geodatabase replication.

In the case of Xorp the data from the vendors were really just read-only data. Maintaining the monthly incoming completely new datasets as a versioned dataset internally would be quite impossible and really worthless since the data was read-only. In stead the decision was made to distributed the vendor data by simply copying it around from the office that handled the incoming vendor data to the other main offices. This worked reasonably well.

Handling Database Updates from both Field and Office Workers

Another client had a different scenario. This public sector department had a group of people working on digitizing area of certain nature types according to aerial photos and in parallel another group of people were working in the field. While the field workers where in the field they were disconnected. This group were going to these areas and recording more details on the areas. If they found any mistakes in the data recorded by the digitizer they would also correct the mistakes. In some cases the field workers also digitized new areas of nature types. Field observations were always regarded as more correct that data digitizing from the aerial photos.

In this scenario geodatabase replication was a really good solution. I set up geodatabase two-way replication with two databases. One database which the office people were working on and one database which the field workers synced their offline data collection with. Every night all the changes made in the office (mostly new areas that needed field observations) would be replicated to the other database. When this replication was finished all the data that the field workers had synced with the other database would then be replicated back into the office workers database. No matter where a new digitized area came from (field or office) it would show up in both databases. The conflict resolution was also straight-forward since field observations was always regarded as most correct.

The setup shown below is a simplified version of the actual setup. In reality the clients didn’t connect directly to the database, but in stead to a ArcGIS server, however that is not really important here.

geodatabase setup

All nice and easy. In reality a fair amount of work went into setting up conflict resolution and testing that it actually worked for all workflows. However this did work quite well for the client. At a point they ran into problems due to missing maintance of the geodatabases, but this was not really due to the replication set up, but rather due to failure to compress the database (Which is a topic of its own).

Posted in ArcGIS, esri, GIS | Leave a comment

Enabling Scheduled Task History in PowerShell

A PowerShell trick a day keeps cmd away! 12

Scheduled tasks. Oh, yes. I don’t have a problem with scheduled. You can automate the creation/deletion of the scheduled task fairly easily and it is documented. But that is maybe another post another time. This post is about something quite important in my opinion – enabling task history (which for reasons beyond me is not on by default).

I have not been able to find this anywhere in official documentation. Luckily stackoverflow is sometimes working exactly likes it’s supposed to. Here is how you enable history on your scheduled tasks. Excellent answer by (at that time) a newbie on StackOverflow. You can also see the summary in the tl;dr section.


Normally you want to have history on your scheduled tasks. To enable all tasks history run the following commands in PowerShell:

$log = New-Object System.Diagnostics.Eventing.Reader.EventLogConfiguration 'Microsoft-Windows-TaskScheduler/Operational'

I’m currently learning PowerShell – Have a look at the first post to see how it all started

Posted in PowerShell | Leave a comment