Indulging in my love for programming languages

by DotNetNerd 3. February 2013 20:12

books-300x272I have started this year spending some spare time with two of my favourite languages, besides C# that I primarily use to earn a living. The two languages in question are F# and Python. The represent two other paradigms from the statically typed and object oriented ones that are by far the most main stream, with languages like Java, VB and all the C-family languages. Playing with other paradigms is a great way to learn how some problems may be solved more elegantly either by going polyglot or simply by implementing some of the basic ideas of another paradigm in the language that you work with on a daily basis.


2012 debriefing

by DotNetNerd 23. December 2012 16:12

484Last year I did my first debriefing. I felt it was a good chance to take a quick look back and it felt good to reflect a bit and do a brain dump. So now I am at it again after a year that has flown by, in spite of some hard moments.

Personally this year had a tough start for my family, because the family business went bankrupt. I grew up in a house next to my parent’s greenhouse, so it was a central part of life in my upbringing. Acknowledging that it was the end of the road, and my dad had to move out of the house was frustrating. That said I am thankful that my siblings who both worked there have found new jobs, and my dad has adapted well to life as a pensioner.

Later on things have only gone forward. In the summer my girlfriend finished her masters, and just a few days ago she had her first scientific article accepted for publishing. I am really happy for her, and it makes for interesting prospects in the new year, where she will look to get a job and possibly start a PhD.

For me as a developer it has been a very exciting year, that offered plenty of opportunities. More...

Regain your sanity – a tale of Console2 and Powershell goodness

by DotNetNerd 19. December 2012 16:29

For some time I have grown weary by the ever increasing number of consoles and one-feature-applications I end up using during a work day. The good thing about being a developer is that it is my own fault, because I can just choose to do something about it - and so I did.

First step was based on two blogposts from Scott Hanselman that I remembered reading; "Console2 - A Better Windows Command Prompt" and "Awesome Visual Studio Command Prompt and PowerShell icons with Overlays". Those two posts gave me a place to start so I could get rid of seperate icons on my desktop for cmd, Visual Studio cmd, Powershell, MongoDb, Ryby, Python, Node, Clojure etc. Basically I can now use Powershell with the capabilities of the Visual Studio Command prompt, and have the rest open in other tabs in Console2.

Of course I made a few tweaks of my own, but all credit goes to Scott for a great blogpost. Only thing I was disliking was choosing the kermit green foreground color, because it overrides coloring of eg. error messages.

Second step was reducing the number of one-feature-applications and long cryptic commands that I had to remember or keep in Evernote, .txt files, .bat files and so on. This turned out to be easy by using my profile in Powershell to store functions.

New-Item -ItemType File -Path $profile -Force
notepad $profile

In my profile I can make naming conventions that make sence and I can wrap more complex operations in easilly discoverable functions utilizing Powershells tab-completion. I can replace small tools and scripts for doing xslt transforms, builds, migrations, remote iis resets, deployment to my development machine and so on. What these tools do often turns out to be the equivalent of a few lines of powershell. Mostly something along the lines of this sample, which runs a nant script that does database migrations.

function Invoke-MyProjectMigrate([string]$version)
    Set-Location $path
    if ($version -eq "") {
        .\nant.bat / db.resources.migrate
    else {
        &{.\nant.bat / db.resources.migrate /D:migration.version=$version }

After a while I wanted to put my functions into modules, so I could package them up, and have a set of functions for each project I work on. To do this I simply moved my functions into separate files, that I put in my d:\Scripts folder. Then my profile simply imports all modules from that folder.

Get-ChildItem D:\Scripts | Foreach-Object {
    Import-Module D:\Scripts/$_

With this in place a have a very simple, lightweight and extensible way of improving my tooling as I go. I can also use Posh-Git/Posh-Hg for version control, and if I need to get more structure at some point I will turn to PSake. In case you don't already know PSake is the Powershell version of make, rake, bake or cake. Simply put it provides a way to do build scripts with interdependent steps. So by now I am starting to feel pretty good about my tooling, and I have been able to remove a lot of clutter from my daily life.

For now my setup is very self-centered, because I use full paths to where I put stuff, but going forward it will probably be generalized and checked into version control for everyone to enjoy.

Thoughts on user experience, business and technology for search

by DotNetNerd 18. November 2012 14:07

Lately I have been working quite a bit with search, and have two customers going live with new sites in the comming months. Along with doing the actual implementations I wrote a (danish) whitepaper on search back in september, and I have read a couple of books to really get into the topic. Search patterns from O’Reilly is a really good book, if you need non-technical inspiration on how search can be done. Having spent some time on the subject, I have of course developed some opinions on both the uability and technical aspects, which is the reason I am writing this post.


Anders Hejlsberg interview at GOTO

by DotNetNerd 10. October 2012 17:56

Wednesday at GOTO I did my second and last interview at the conference. I was lucky enough to get to talk to Anders Hejlsberg, which was made even more perfect with him announcing the preview of TypeScript during the conference. We had a very nice and comfortable talk, and afterwards I can only be impressed with how calm he is all while leaving no doubt about his passion and knowledge.

We choose to do the interview in Danish, so my apologies to the non-Danish speaking readers. It just made more sense for two Danes in Denmark to speak Danish. Not having seen any interviews with Anders in Danish myself, it was also an opportunity to do that.


Scott Hanselman inteview at GOTO

by DotNetNerd 5. October 2012 17:55

Tuesday at GOTO I had the chance to interview Scott Hanselman, and of course I could not pass up that chance. We had a good talk about the conference, speaking, working at Microsoft and how ASP.NET is evolving. It was the perfect way to get my debut as an interviewer, with him providing some helpful tips along the way, so I hope you will enjoy the video as much as I did making it.

GOTO – the end

by dotnetnerd 3. October 2012 19:56

I am now on my way home from the last day at GOTO and it has been another day with lots and lots of input. I chose to spend the afternoon watching two talks from the HTML5 track, followed by one on the humans at work and then lastly seeing the closing keynote.

The two talks on the HTML5 track were by Scott Hanselman who talked about mobile development and Dan North who declared “The browser is dead… long live the browser”.

The red line through Scotts talk was that there are different paths to take in order to provide a better experience for the rapidly growing number of users who are using a mobile device. With some countries actually being pretty much exclusively mobile users it is very important to think about this. As it is said, not making a decision is also making a decision, but you are really hurting a large percentage of your users if you choose to ignore the mobile world.

Dan Norths talk revolved around 4 key points. Everything is asynchronous, the DOM is the template, the server serves data and someone has already solved it. Building on these points Dan demonstrated a simple architecture using NodeJS to serve data and everything else done in the browser using some of the popular frontend frameworks like jQuery, Knockout and Twitter Bootstrap. Once again Dan really caught the audience, got some good laughs on the way, while getting his points across.

Liz Keogh’s talk on the humans at work track was entitled “To be honest”. Her talk consisted of a range of stories from real live, about how different kinds of lying gets us into trouble when building software and coming up with solutions. Estimates, scrum, the agile manifesto, bug counting and talking about something as being done are all lies. So in order to progress we need to get better at communicating and being honest. She pointed out that “you should not let your process hide your ignorance”. Processes tend to force us to do things in fixed formats, which in turn make up subtle lies and cloud honest and clear communication.

Finally it came time for the keynote, where Anders Hejlsberg went over which problems they aim to solve with TypeScript, while covering some of the design choices it has been based on. Naturally part of the talk was overlapping with what I had seen the day before, but I am glad that I stayed the the talk because he did have some deeper samples and just overall gave a great talk.



GOTO – it’s a wrap!

by DotNetNerd 3. October 2012 13:10

I just finished my second and last interview of the conference, where I was lucky enough to get to speak to Anders Hejlsberg. It was a really good experience, and even for a guy who is just playing raporter for a few days it was really comfortable. I have no doube been nervous about doing interviews, not as much because of the rock star status that Anders and Scott have, but the whole situation is just completely new to me. In both cases it was just a matter of getting started, and then the calm that they posses just takes over. 

Anders Hejlsberg

Interviewing Anders today was really cozy and right off the bat just felt like a good conversation with a good friend. So I am hoping that my recorded material lives up to the experience, because right now I am thinking about when I can find a few hours for editing. And I am hoping that Trifork are happy with how the introduction of bloggers has worked out, so maybe I get the chance again next year.

As for the program today it has been a bit of a soft start. the keynote about the large hadron collider in Cern was mindblowing, but also so much out of our field that I don’t really feel like as got as much from it as I have with the other keynotes. After that I grabbed 3 lightning talks on making hard things easy. All 3 were great speakers, and especially Dan North managed to get some good laughs. At the same time it confirmed to me that lightning talks are difficult to do in a way where you really get your points across while having just enough debth. Yesterday I actually promised to do a lightning talk myself at our local usergroup, so I am hoping I can use some of what I learned from watching these really skills speakers get the most out of their 15 minutes.

Now – more talks, with both Scott Hanselman and Anders Hejlsberg taking the stage this afternoon.



GOTO – interviewing, languages, primadonas and TypeScript

by DotNetNerd 2. October 2012 22:08

Today was the second day of GOTO, and it has been a really fun and interesting day for me. As I wrote yesterday I got to do an interview with Scott Hanselman. Actually it almost fell through, because of a communication blip, but thanks to Twitter the day was saved. Scott found out that I tweeted about doing the interview, so he tweeted back, we made the arrangements and got back on track. DSC00012

As it turns out doing an interview with a guy who knows so much about doing interviews himself was a great way to start. Scott gave me a couple of pro-tips reguarding sound and editing, and he had a set of microphones in his bag that we used to make the quality even better. I won’t give away any spoilers today, but once we get past the conference days I will write about the actual interview and work on the video.

In reguard to talks I went to a talk on Riak Core with Steve Vinoski which was really good and he managed to convince me that I need to take a look at Riak as an alternative to where I have been leaning towards mongoDB. The distribution model in Riak seems very well thought out, and it seems like a good product to work with.

Later I gave in to my interest for programming languages, with a talk by Damian Conway entitled Sex and Violence about Pearl 6 and then a talk about polyglot programming. Finishing off the talks I saw Hadi Hariri from jetbrains talk about developers as the primadonnas of the 21st century. I think this is the kind of talk that we as developers need to see once in a while. Hadi made some good points about all the stuff we do that makes us lose focus. Methodologies, development tools and principles drag us into dogmatic wars on practices causing us to drift away from delivering solutions to real programs and away from programming motherfucker!

After the official program a talk with Anders Hejlsberg was arranged with ANUG, our local usergroup. We got a good introduction to TypeScript, which was just announced yesterday. To me what they are doing just makes so much sence, as a way to alleviate some of the pains that we face today when building and especially maintaining applications in JavaScript.

Personally I do not have much faith in languages such as Dart, because I don’t beleive in the approach they have taken. In my oppinion it is very unlikely it will be accepted as a standard, and the abstractions are too different from JavaScript for the compilation process to produce JavaScript that is fast and easy to debug. TypeScript does not make this mistake, as it is designed to add a thin layer on top of JavaScript that in turn provides possibilities to build strong tooling while providing some of the structural constructs that we know and love from C#. Interesting stuff so I hope to hear more tomorrow when I do my next interview which is with Anders Heilsberg himself.



GOTO day 1 roundoff

by DotNetNerd 1. October 2012 23:35

Now the evening is comming to a close, on what has been a really interesting day. Since my last post I went to 4 very different talks on Raspberry PI, Myths of project management, No SQL and lastly Damien Conway on Contemporal Virtual Nanomachine Programming in Topoligically Connected Quantum-Relative Parallel Spacetimes – made easy! So I got to get around very different aspects of life in the software industry.

Conways talk was no doubt the most crazy talk I have ever seen, and I don’t even want to know how much time has gone into preparing that talk. I can safely say it is the geekiest moment of the conference so far, and I am sure my brother in law who works with nuclear physics would have laughed his ass off as much as I did.

After the talks were done I went around and visited some of the stands, where especially the MongoDB stand cought my interest. I have really enjoyed working with MongoDB and I got to hear more about what they are working on, so that was brilliant. A key point for me is that they are doing full-text search in vNext, making it a lot more interesting in the search space that I recently released a whitepaper on.

The evening was then spent at the conference party, where I sat between two speakers, Steve Vinoski and Matt Heitzenroder. Matt was in the NoSQL panel that I was at earlier, and Steve is a legend for the guys in the Erlang and Riak space. So I had a really nice evening hearing about how they experience a conference, and the challanges they have.

Tomorrow I will probably be blogging a bit less I think, because I will be preparing and doing my first ever interview. I could not ask for a better opportunity as I will be talking to Scott Hanselman, which means I will start out interviewing the speaker and blogger I respect most of all.


Who am I?

My name is Christian Holm Diget, and I work as an independent consultant, in Denmark, where I write code, give advice on architecture and help with training. On the side I get to do a bit of speaking and help with miscellaneous community events.

Some of my primary focus areas are code quality, programming languages and using new technologies to provide value.

Microsoft Certified Professional Developer

Microsoft Most Valuable Professional

Month List