codethinked (kōdthĭngked) adj. To be consumed by or obsessed with code.

Learning Scala via C# Part 2 – The Basics

In the last part of this series we talked a little bit about Scala and why I think it is an interesting language. We also spent a good amount of time getting the boring work out of the way of setting up an environment for us to work in. We are not going to start off with the IDE though. The reason for this is that it is much easier for us to start to get our bearings within Scala by using Scala’s REPL (Read Evaluate Print Loop).

If you have come from C# or Java then it is quite possible that you have never even used a REPL before, and in fact, it is fairly uncommon for a static compiled language to have a REPL. If you have any experience with dynamic languages though, then you are probably intimately familiar with the concept. The idea is that you will enter in statements and they will be dynamically evaluated and the results printed to the screen. This may sound strange and useless at first, until you realize that you can enter multiple commands and they are all loaded up into the same environment. You can load files and libraries and do all of the things you would do in a normal development environment, but in a more interactive fashion.

Continue reading the rest of this post...

Digging Deep Into Linq Presentation

I’ve given this presentation a few times now, and while it is some pretty heady stuff, I think that many people have still gotten quite a bit of useful information out of it. I keep promising to put the slides and code up on my blog, and I never did because I kept meaning to make a blog post series out of it.

Well, this past week I gave the talk again in Raleigh and I had about 5 different people send me requests to get some of the source or slides. I decided that I am still going to try and do a blog post series out of the talk, but I need to go ahead and get the code and slides up so that I don’t keep putting it off.

I apologize to those people that I told I would post the content and then didn’t. So anyways, here it is:

You can download the code and slides here.

Learning Scala via C# Part 1 – What Is Scala?

There are new languages that come about all of the time. Lately it seems that most of the languages du jour are dynamic or functional languages. We have all seen a lot of talk about languages such as Ruby, Python, F#, Groovy, Erlang, and Clojure. All of these languages represent a huge shift in programming paradigm from many of the current “corporate” languages such as C# and Java. They also all represent a significant syntactical difference from these languages.

What is Scala?

Scala on the other hand is a little bit different. From a syntax point of view, it is quite similar to both C# and Java. From a paradigm perspective it does represent a shift, but at the same time it allows for a style of development that will be quite familiar to any C# or Java developer. In fact, Scala was designed to run on the JVM and it even shares its type system with Java (although it adds namespaces of its own) so that it can easily interoperate. A version of Scala has been developed to run on the .NET platform, although the development effort is a bit behind the JVM version (from what I have heard though, Microsoft has provided a grant to help development of the .NET port, if anyone has any more information on this, please let me know).

Continue reading the rest of this post...

Our Biggest Enemy Isn’t Developers Who Refuse To Move Forward, It is Developers Who Pretend To Move Forward

Software Engineering is such a nascent practice that we have very little that we can point at for facts, and instead spend much of our time listening to circumstantial evidence from developers who have tried and had success with different tools or techniques. And at the same time, since we don’t have an infinite amount of bandwidth to try everything for ourselves, we will often listen to other developers that we trust when they say that something is not good or adds needless complexity.

Now, there are some developers take the time to carefully evaluate and think about all of the tools and practices that come there way, but just like in every industry, there is a vast majority who do not put this kind of thought and work into their endeavors. This is something that is to be expected almost everywhere though, you have a small piece of the overall populace who puts in more work, has more insight, and who shares this knowledge, and they are looked at for leadership and guidance by the majority. You know the kind of people that I am talking about, the Martin Fowlers, Bob Martins, and Kent Becks of the world.

Continue reading the rest of this post...