Insights and outlooks on software development

S'true

On Why Ruby

Friday, March 29, 2013 by Thomas L

So Jeff Atwood (of Coding Horror fame) wrote a post he called "Why Ruby" a week ago. In that post (go read it, it's great!) he lists a number of arguments why his new venture, Discourse, is written in Ruby, and not C#, which he is most used to.

"Why Ruby" was as I understand written from the outset of trying to spread usage and draw committers to the open-source software Discourse. I thought I should add my thoughts on why I choose to use Ruby for my start-up Finn Medicinen and why I prefer using Ruby when consulting/contracting on others' systems.

First off, let me explain where I'm coming from. Since I started my first job after university, around 2003/2004 sometime, I've primarily used .NET based languages at work. Mostly C#, but I've also come across VB.NET. I haven't used the language which actually looks most interesting on the CLR stack, F#. This is probably since I started using Ruby before F# was launched, and I've been totally in love of the language. On the current "About Me" page on this blog, a post written in 2008, I wrote "I work with .NET, but I have an affair on the side with Ruby". As I stand right now, I've actually ditched .NET and married my previous lover. This is why.

The language and its consistency. Since you've come across my blog, I suppose you're a programmer. If so, you've probably seen the Ruby language, and boy, is it a beauty! The object model is incredibly consistent. You can do "a string".length, just as you can do [1,2,3].length. I know, the example is a bit contrieved, but it's striking how consistent the core and the libraries are. In Python, being a language rather similar to Ruby, you can smell the heritage of it being a procedural language from the get-go with OO added after the fact. To get the length of an Array in Python, you do len([1,2,3,4,5]) instead - the functionality is there, but it breaks with the mental model of objects having instance methods; you instead have to use the global function 'len'.

The community. I spoke to a friend the other day, regarding why we, two start-up founders, did choose Ruby (on Rails) without having a broad and deep experience in it, instead of .NET (for me) and Java (for him). My reasoning was that I can get a boatload of things without having to implement it myself. DB migrations that work smoothly out-of-the-box? Check. Solid HTML screen-scraping utilities? Check. Heck, a great web framework ScottGu and the others at DevDiv are using man-years to reimplement in C#? Check. When you do .NET development, you're lucky if you find one OSS library for the thing you're implementing. When using Ruby, you're instead have to choose from the five you've found just by googling quickly. (And I'd rather have to many than too few.) If you don't believe me, check this list to see an example of how popular Ruby is for developing open-source software.

The innovation. As I look around me at the start-up world, both in Malmö and more broadly in the world, I see lots of great software being built in Ruby. This might be due to me being biased by meeting with the Malmö Ruby devs at Malmö-Ruby, but still. Being able to be a part of the forefront of software and business development is fun. Cranking out Sharepoint sites and drag-dropping controls to a ASP.NET Webforms page? No thanks.

The culture. In my C# years, I've had to fight with everyone and his/her mother to make sure the software we build include automatic tests. In the Ruby world, a suite of automated regression tests that you can use for keeping safe are more or less standard. Devs actually beg for forgiveness if their test suite isn't in a good state. That's a culture I like.

The deployment. Deploying to Windows servers is a chore. I know, it's getting better with PowerShell and whatnot, but command-line scripting and automated deploys are so much easier to do in the land of *nix. Using capistrano to ssh to a number of servers and update without touching the mouse is a boon.

Ok, this list was more or less a brain-dump of what I think of Ruby at the moment. There are of course lots of things I don't like with Ruby and, particularly, Rails. But for me, at this point of my career, I'm glad I'm using Ruby.

What's your take? The comments section is open!

On RequireJS at lat55

Tuesday, February 5, 2013 by Thomas L

A couple of weeks ago I held a presentation about RequireJS at the lat55 user group in Malmö. See below for a 20 minutes long video of my presentation, in Swedish.

On Malmö-Ruby UserGroup

Monday, November 5, 2012 by Thomas L

There has been rather quiet around UserGroups dealing with Ruby in the Malmö area. In Stockholm, SHRUG meets rather regularly, across Öresund we have Copenhagen Ruby Brigade, both rather active, but in Malmö/Lund there's been low (if any) activity.

No longer, though. In October the Malmö-Ruby UserGroup was awoken. There was a quick slideshow presentation, which was followed by a walk to Bishop's Arms to get some beer and burgers. In November there's another event, which will be hosted by Softhouse. I'll hold a quick lightning talk about JavaScript in Rails today with the Asset Pipeline. In the talk I'll show how RequireJS can be used to modularize your JavaScript code when dealing with Asset Pipeline.

If you saw my RequireJS presentation at ScanDevConf you will surely recognize some thoughts and ideas.

On micro-ci

Sunday, April 22, 2012 by Thomas L

So Softhouse had a kick-off this Friday, and as a social event, we could choose to take part in an open-source project. Me and my colleague Joakim Karlsson have for quite some time thought about the sizes of CI environments, and the rather wacky requirement that you need to run a web server in order to configure the CI server. So we decided to create our own.
Enter micro-ci. Me and Petter, another colleague (Joakim was ill), hacked together a solution built with Ruby in four hours. It's not much right now, but at least it can check a directory tree for changes and call a command-line script to build.
With this blog post, I'm not saying that you should start using micro-ci (but, by all means, do). I'm saying that it's actually quite easy to accomplish a small project that scratches your current itch.

On my RequireJS presentation from Scandinavian Developer Conference

by Thomas L

An embedded presentation hosted at SlideShare.

On ScanDev 2012

Tuesday, April 10, 2012 by Thomas L

I'll be presenting two talks at Scandinavian Developer Conference on April 16 and 17: RequireJS for modular JavaScript code and Introducing ASP.NET MVC in Legacy Webforms Applications.

Read more about the talks here. If you're there, don't hesitate to come and talk to me!

If you won't be able to attend, I'll be posting the presentations here. Stay tuned.

On DuckDuckGo and search suggestions

Thursday, February 16, 2012 by Thomas L

I like DuckDuckGo but I don't like that its default Firefox search plugin doesn't support search suggestions. Enter Duck Duck Go + Google Suggest Search Plugin.

(Via lifehacker.)