# Tuesday, June 8, 2010

Interest in F# has risen dramatically with the release of Visual Studio 2010 and Microsoft's decision to include this language with this product.  Many of us are scrambling to understand this new language and how it relates to our software projects.

F# is a functional language, which means that it focuses on giving developers the ability to create functions that consistently return the same value, given the same inputs. It does so by discouraging mutability in its language constructs, thus minimizing side effects that can alter state from one call to the next.

Chris Smith's book Programming F# provides an introduction to and an overview of this language. Because so many of the constructs are foreign, this book can be a bit overwhelming - particularly Chapter 2, which quickly introduces many of the language constructs of F#.

But Smith brings it together after pushing through the language details. He goes through the basics of functional programming; then compares it to imperative programming, showing how you can implement either style using F#. He follows with a discussion of object-oriented programming and its relevance to F# (it is a key to allowing F# programs to interact with programs written in other .Net languages).

The book is filled with examples to illustrate the points made. If you are new to F#, Programming F# is a good book to get you started with the language.

books | F#
Tuesday, June 8, 2010 7:59:33 PM (GMT Daylight Time, UTC+01:00)
# Monday, June 7, 2010

I had every intention of going to more sessions at the Central Ohio Day of .Net. But one speaker was sick and I was asked to fill in with a second session. So I spent time after lunch preparing and only saw bits and pieces of other sessions.

But I did learn a lot. This conference always attracts smart people and I exchanged ideas on unit testing, code refactoring, Visual Studio 2010 new features and web hypermedia. Many of these conversations took place on camera, so I will be able to share them online in the coming weeks.

And I delivered presentations on ASP.Net MVC (scheduled) and Managed Extensibility Framework (unscheduled).

Many thanks to Mike Wood and the rest of the crew that put on this excellent conference.


More photos from CODODN

Monday, June 7, 2010 2:12:36 AM (GMT Daylight Time, UTC+01:00)
# Friday, June 4, 2010

In this Grok Talk, I describe the importance of ASP.Net MVC and walk the viewer through building a simple application using this framework.

Grok Talk | MVC | Video
Friday, June 4, 2010 5:33:10 PM (GMT Daylight Time, UTC+01:00)
# Tuesday, June 1, 2010

Episode 91

Matt Van Horn and I began by talking about Expression Blend and the conversation moved toward collaborations between developers and designers

Tuesday, June 1, 2010 8:38:29 PM (GMT Daylight Time, UTC+01:00)
# Thursday, May 27, 2010

Tonight, I attended the Cloud Camp Detroit, which was built primarily around Open Spaces discussion and a panel discussion in front of an audience. The basics of cloud computing, specific cloud implementations and issues such as security were discussed. The "eyes-front" presentations were limited to half a dozen lightning talks.

I had a chance to interact with a lot of people far more experienced than me in this area. Many of them work outside the .Net world, so talking with them helps me see the software industry in a different perspective.

I filled in for a sick friend to deliver a presentation on Windows Azure. Below are the slides from my presentation. Thanks to Abe Pachikara of Microsoft for supplying the slides.

Thursday, May 27, 2010 5:04:45 AM (GMT Daylight Time, UTC+01:00)
# Wednesday, May 26, 2010

Episode 90

BizSpark and WebsiteSpark are low-cost software options that Microsoft offers to startup companies. In this interview, Microsoft Partner Evangelist John McClelland describes these programs.

Wednesday, May 26, 2010 12:59:54 PM (GMT Daylight Time, UTC+01:00)
# Tuesday, May 25, 2010

This is a 5-part recording of Chris Marinos's excellent presentation F# and Functional Programming for C# Developers, delivered at the May 19 meeting of the Great Lakes Area .Net User Group (GANG)

Part 1

Part 2

Part 3

Part 4

Part 5

Community | F# | Video
Tuesday, May 25, 2010 11:08:33 AM (GMT Daylight Time, UTC+01:00)
# Monday, May 24, 2010

Episode 89

In this interview, Dane Morgridege describes the Entity Framework - an object relational mapping tool from Microsoft.

Monday, May 24, 2010 11:18:40 AM (GMT Daylight Time, UTC+01:00)
# Thursday, May 20, 2010

What I like about Paul Kimmel's LINQ Unleashed for C# is that he does not rush into explaining LINQ. Before explaining LINQ, Kimmel explains the new technologies that make LINQ possible.

He walks the reader through anonymous types, type initialization, extension methods, the yield return statement, lambda expressions, and closures - all features that were introduced in C#3.0 - before explaining how each of these features makes LINQ possible.

After building up to it, Kimmel steps through the syntax of LINQ, providing numerous code examples.

He begins with syntax to all implementations of LINQ; then dives into more detail about the major LINQ implementations: LINQ to SQL, LINQ to Objects, and LINQ to XML. In each section, he provides numerous helpful samples.

When I first opened this book, I was new to LINQ (Language Integrated Query) and had no grasp of how it works. This book got me up to speed. I recommend it for anyone learning LINQ.

books | LINQ
Thursday, May 20, 2010 2:58:59 PM (GMT Daylight Time, UTC+01:00)
# Tuesday, May 18, 2010

As someone who once passed a bunch of tests (>40) to earn a bunch of Microsoft certifications(>20), I'm sometimes asked about the value of these certifications. Are they worth the time, cost and effort they take? What are the benefits? Who benefits most?

The real cost of certifications
More than the cost to sit the exam (typically $150) is the cost of studying for the exam. I used to spend weeks - at least a couple hours each day - studying for each exam. This cost tends to far outweigh the exam fee.

What do certifications prove?
A certification demonstrates a minimal level of competence in a given technology. They don't flag the holder as an expert; but, assuming you didn't cheat, they require knowledge of the subject matter in order to pass.

Everybody learns differently
I hope all of us can agree that it is not possible to succeed as a software developer, network engineer or database administrator without learning new skills every year. Each of us learns in a different way. I think most people learn a technology best when they have something to apply it to. This application serves as motivation to learn and retain knowledge. If your job doesn't provide that application, you need to create it yourself. This might be a personal or open source project or it might be a certification exam. Either way, if it helps you to learn a new skill by focusing on a tangible goal, that is a good thing.

When are certifications most valuable?
Certification is no substitute for experience, but it can help to supplement experience. This is especially true early in your career when practical experience is lacking. For those new to information technology or software development, it can be difficult to build up the experience necessary to impress a potential employer. A certification can help make up for a lack of experience, because you have demonstrated the ability to complete a goal and enough knowledge to pass an exam.

Some places require certification. Why?
Microsoft partners with companies in different ways. In some of these partnership arrangements, the partner company must have a certain percentage of their employees certified in Microsoft technology. Although far from perfect, it's a very simple way for Microsoft to vet their partners.

So is it worth it?
From a personal standpoint, I don't at all regret achieving the certifications that I did. I took most of the exams early in my career and they gained me some credibility. As recent as two years ago, potential employers asked me about my certification and were impressed when I provided it. I have learned a lot studying for these exams and that knowledge has helped my career. I doubt that I'll be taking many more exams. My free time is limited and I prefer to use more efficient ways to learn, focusing on building applications or preparing and delivering presentations.

My advice is to consider certifications early in your career to improve your skills and improve your credibility; then spend your time elsewhere as you solidify your credibility.

Tuesday, May 18, 2010 4:53:41 PM (GMT Daylight Time, UTC+01:00)