Collaborating with other User Groups

Collaborating with other User GroupsA few months ago I decided that collaborating with other user groups might be a really good way to add new ideas and an outside perspective on the local .NET Developers Group that I organize.

Back in November 2016 I was attending Detroit Dev Day.  I was planning on meeting with with Reid Evans who was doing a talk “A Developer’s Journey From OO to FP”.

Like most conferences, the best part was the hallway discussions.  I was sitting around and talking about user groups with Reid, Ken Cenerelli and Tom Walker.

Tom mentioned that he had recently done meetup with a presentation done by a remote speaker.

Remote Speaker

The night after the conference, I was thinking about the conversations and realized that Reid’s talk which touched on F# would probably be a really good for for my Windsor-Essex .NET Developers group.

Our group tends to focus on C# however there always seems to be interesting when the conversation revolves around F# or functional programming.

Turns out Reid was interested in doing it.  He also suggested in return that I do a talk for his Functional Knox group.

Part 1

Since our  initial conversation many months ago, we worked out a date. Reid did a Getting Started with Functional Programming in F# which was fantastic.

I’ve been given great feedback from our group about how the experience was.  Everyone enjoyed the talk and we really had no issues.

The session was done using Google Hangouts On Air with YouTube Live.  Our user group watched the talk on TV’s with great quality.

Next month I’ll be returning the favor and doing a talk for the Functional Knox group.  I will update this blog post with more details after it happens.


This has spawned some interesting ideas in terms of having user groups collaborate by occasionally having remote speakers.

If you run a user group and are interested in possibly collaborating in a similar way please let me know!  Also if you have any suggestions about what your user groups have done with success (or failure) please leave a comment or let me know on Twitter.

Getting Started with Functional Programming in F#

Functional Programming in F#At last night’s Windsor-Essex .NET Developers Group, we had Reid Evans presenting a talk on Getting Started with Functional Programming in F#.

I absolutely loved this talk and wanted to share it along with some of my thoughts and takeaways.

I’ve been over the last year or two going back and forth with learning F# and understanding more functional programming concepts.  So I was really looking forward to this talk.

If you have any questions, please follow me on Twitter.

Follow @CodeOpinion on Twitter


This is the live stream we had to our user group.  If you are interested in functional programming and F#, I highly recommend giving this a watch.



I thought Reid’s intended takeaways were all met.  I came out of that talk with exactly what he intended.  As a speaker, I think this is the ultimate goal.  What you are trying to convey is achieved.

That’s not to say people can find other takeaways, but knowing what you are trying to present and is received is great.

Defaults matter & No more null!

I think the hardest idea to fully “get” is how defaults matter.  I think this is really expressed when you see the difference of not being able to have null.

The alternative of using the Option Type (a Union Type) as an alternative way of thinking about the problem of something not existing.  In Reid’s example, a record not existing in the database.

What I love about is how you handle the resulting Option Type with pattern matching.  What I take from this is forcing the caller to property handle either Some or None.

I think Reid said it really well that if your language allows null, you must check for null everywhere.  If it does not allow null, and uses something like an Option type, then that is very explicit.

Type Providers == Awesome

They are truly awesome.  It was really interesting to see how a type from a column of a database could be then be used to infer the argument of a method.  This is kind of mind blowing.

I can see the value this would provide a developer in terms of not making simple accidental mistakes.  Plus having a built in integration test at compile time is just fantastic.

Composing Small Functions

Although the idea of writing small classes and methods are familiar to you in C#, I think the concept of you use those functions in a functional language is what differs.

I loved the example of how the validation was tied together as it gives a great real world example.  As with everything I still need more understanding on this and where this can take you.

Other Thoughts

What I loved about this talk is it used real world simple examples of things you would do building an app like data access and validation.

It was very easy to transfer the content into something you could relate to.  I think the fact that Reid often went down the road of making the comparisons to something I was already familiar with was a great help.

If you watched the video, I’d love to hear your comments.   Reid would probably love feedback as well.  Please post a comments or on Twitter.

Follow @CodeOpinion on Twitter

Windsor-Essex .NET Developers

I started a .NET Developers group in Windsor-Essex.  Why? Well first a bit of back story.

I first started using .NET with C# around 2003-2004 with .NET 1.1.   At the time I was primary using Linux as my desktop and writing PHP and Python and creating web apps.

However, I was required to create a Native Win32 app.  I had used Delphi and Object Pascal just prior but decided to use take the .NET route.Windsor-Essex .NET Developers

Fast forward 13 or so years and I’m still using and for the most part enjoying the ride.


A lot has changed in the past 13 years or so since I first started using it.  Coming from a Linux and OSS communities in Python and PHP to a more closed world in .NET felt very odd.  Simple things like finding code samples or libraries that were OSS were few and far between.   Everything was commercial.

But slowly, over time the OSS community has grown and has developed a not only some great software, but has really started to form a community that I felt early in my career with other languages.

Yes there is still a ton of work to be done. It’s likely the majority of .NET developers are stuck in a Microsoft only bubble, but I do think that’s changing.


I do think being in a Microsoft bubble is a bad thing.  I don’t say that as a negative towards Microsoft.  What I mean is that limiting yourself to only the framework, libraries and tools that are produced by Microsoft is incredibly limiting.  Hammer, meet nail.

But Microsoft’s turn to OSS is refreshing.  Yes they have struggle at times but I do truly believe their underlying intention is good.

Windsor-Essex .NET Developers

I’ve decided to start a .NET Developers group in Windsor-Essex.  This has been in my mind for around the last 5 years or so.

I finally decided to take action because I think with the release .NET Core and the open community that is slowly being built is a kind of renaissance for .NET

Exploring the use of .NET for building and deploying applications on any platform. Our focus will be on the various .NET Platforms (Full Framework, Core, Mono), OSS libraries and various development concepts.  The purpose of this group is to create a great social group in Windsor-Essex where we learn from each other.

If you are in the Windsor or Essex County area, please join our Meetup page.

We will be having monthly meetups on the first Tuesday of each month at Hackforge (255 Ouellette Ave)

User Groups

My biggest challenge with organizing is getting speakers.  If you run or attend a .NET user group and have suggestions on different ways to attract local speakers or any feedback in general, please let me know in the comments on twitter.