Events


3
Nov 10

An F# Whirlwind

Just under two weeks ago I was packing up my things at Atalasoft and enjoying my last Friday Beer:30 with coworkers and friends.

Moments before I left Atalasoft to seek fame and fortune.

My last Beer-30 at Atalasoft

A lot has changed in these past two weeks. I’ve moved into my Hoboken apartment and (partially) assembled a whole set of IKEA furniture, I’ve gotten started as the first employee at a brand new company called Bayard Rock, and I’ve seen quite a few exciting things happen in my own little F# world.

First, I’ve managed to get a new site up for my F# Discoveries This Week blog series. It’s called F# Central and I hope to do big things with it far beyond the scope of my weekly blog post. Stay tuned.

Second, after a year of blood, sweat and tears Professional F# 2.0 has been released.  I wrote the entirety of Part 3 and worked hard to convey every moment of functional programming epiphany that I experienced while learning F#.  I hope you’ll pick up a copy and let me know what you think.

Third, this Friday I’ll have the great honor of speaking alongside giants such as Don Syme, Tomas Petricek, Judith Bishop, Joe Pamer, and Howard Mansell at the F# in Education workshop. In my talk entitled F# in the classroom and the lab, I’ll be drawing on my own past experiences in order to paint a picture of how F# can be used to improve all aspects of academic life.  Even if you can’t make it in person be sure to watch it via the internet simulcast.

Finally, with the help of my good friends Rachel Appel and Howard Mansell I’ve got everything in place for the first meeting of the New York F# User Group.  I’m getting the feeling that the NYC F# community is about to explode and I hope you’ll be part of it.  Come join us if you’re in the area and help spread the word if you aren’t.


14
Oct 10

A CUFP Tutorial, F# Day at the … Oh God, Ants!

Everyone was ready for a nice relaxing day at the beach when they showed up for my CUFP tutorial…

A Day at the Beach, Interrupted

So, after realizing how boring it would be teach thirty flavors of factorial to experienced functional programmers for four hours, I thought I’d spice things up a bit. AI is always fun and I do love ants, so why not a contest where attendees would write Ant AI to gather food? For a bit of additional motivation to get everyone over the post-lunch slump, I decided to give away one of my Visual Studio 2010 Ultimate Edition MSDN subscriptions as a prize.

Just look at those little guys go.

In thinking about how I would run this contest, it occurred to me that the AI better be pretty frickin easy to write. Four hours is not a lot of time to both learn a language and write something cool in it. Below is a modified (to fit nicely on my blog) version of the Ant AI for the red colony above, which is what I provided as a baseline sample for participants to test against.

match me with | HasFood | HasMaxFood -> match locations with | HasUnownedFood cells when not (here.HasPheromone me.Color) -> DropPheromone (here, 100) | NearHome homeCells -> match homeCells with | CanDrop dropCells -> DropFood dropCells.Head | CantDrop -> Move homeCells.Head | AwayFromHome allCells -> if not homeDirectionCell.ContainsAnt then Move homeDirectionCell else match randomEmptyLocation locations with | Some location -> Move location | None -> Nothing | HasNoFood -> match locations with | HasUnownedFood foodCells -> TakeFood (maxFood foodCells) | SmellsPheromones pheroCells -> Move (maxPhero pheroCells) | _ -> match randomEmptyLocation locations with | Some location -> Move location | None -> Nothing

We all had a great time. Most didn’t even take the given breaks other than to run out quickly to the bathroom or grab a coffee. When time finally ran out I was proud to have three finalists who stayed and watched their ants battle it out, one of whom completed the entire project in Mono/Linux (Mono on MacOS, not so much).

Making it this far was an accomplishment.

The three finalists: Frank Levine, Phil Clayton and Paul Greene.

Paul’s rather clever ants did what they could to block the opponent’s nest while gathering food. Phil, despite having some delays getting going due to my lack of experience with mono, made an excellent showing. However, in the end little could be done to stem the tide of Frank Levine’s pheromone gradient following ants.

As runner up, Phil will be getting a fresh copy of Professional F# 2.0 as soon as they hit my doorstop. Frank won the day and took home his very own MSDN Ultimate subscription.

Frank wins the day.

All of the tutorial feedback was great. To my surprise, those who had trouble getting my code running on their Macs seem to have had a fun time. For days afterward I received emails from people who kept working on the problem even after they went home from the conference!

Currently I’m working on putting together a larger version of this contest online. I hope to extend the model used in this to include combat, spawning new ants and maybe even decaying dead ants. Send me a message on twitter if you’re interested in helping to beta test the engine.

I want to thank all of the attendees for coming, having fun, and putting up with the various cross platform issues. I also want to thank Martin Logan and Anil Madhavapeddy for helping to make this session happen. Finally, I want to thank Paul Greene for reporting a behavior related bug he found afterward through experimentation. It’s fixed now in my local source, but not in the files you can sneakily grab from the Mono bug report above ;).

I hope all of you CUFP tutorialists will join me in the next iteration of this contest. It’s sure to be a blast.


21
Sep 10

Learning F# for Fabulous Prizes

Nearly a month ago I visited the NYC ALT.NET User Group in Manhattan.  Having been told by Steve Bohlen that I was up against a particularly sharp audience, I decided to do something much different than I had in any of my previous talks. Spread throughout my slides were questions. Those who answered correctly first were given F# stickers that they were later able to turn into various prizes.

I found that the anticipation caused by not knowing when the next question might be asked kept attendees on their toes. Energy ran high throughout the session, higher than I’ve ever seen before. That said, never before have I had the pleasure of having such an intelligent and attentive audience.

Along these lines, I’m planning on running a contest at my upcoming CUFP F# tutorial. Grand prize will be a MSDN Subscription with Visual Studio 2010 Ultimate. I know many in the audience will be running Linux or OSX, but it’s just about the best thing I have on hand to give away and I’m fairly certain that it comes along with Windows 7 so you can run it in a VM.

Many thanks to Alex Hung who has provided high quality video of my NYC ALT.NET talk.

Note: On the Async question: I suggest using function composition and sequences for discrete element transforms. I don’t know why it didn’t occur to me to mention it.

Note: For the DSL question: You do get intellisense within a module. For your DSL you can just put your grammar into a module and then blamo, intellisense.
Errata: I was wrong about the compiler sources. It turns out the compiler source is available in the CTP. Vladimir Matveev has written a great post on how to build it.


14
Aug 10

The Language Matters on the Software Engineering Productivity Podcast

Actually, I used my phone.

In this episode, Richard Minerich tells why the language developers use can have a huge impact on their productivity. New high level languages, like F# (one of Richard’s favourite languages), free engineers from much of the traditional drudgery leading to faster development cycles and better quality.”

I recently had the pleasure of being a guest on Michael Surkan’s Software Engineering Productivity podcast.  The topic: why language choice matters in software engineering.  Michael contacted me to join him on his show after many pages of heated debate on a topic I started in his Linked-in group of the same name.  It seems many still feel that language choice has little impact as long as it meets the basic project requirements.  I disagree.

Listening to it afterward, I think I did quite a good job of getting most of the many ‘whys’ across.  Not bad for 20 minutes.


3
Aug 10

In Retrospect: TechEd 2010 North America

Celebrity photo op with Sara Ford

This year I was invited by Microsoft to attend TechEd 2010 North America in New Orleans.  Largely, I was to be found at the Visual Studio languages booth answering questions about F#.  It was exhilarating to hear so many developers come up and talk about how they were planning to use F# to tackle what they previously thought insurmountable.  Most often I heard engineers tell me about how they wanted to paralellize complex computations but didn’t want to sacrifice the readability of their models.  Although, a great many were also excited just to dig into some new language features and to try and understand programming in a new way.

One of the most exciting things about the trip was that Amanda Laucher and Ed Hickey helped me to put together an on-site meeting for the New England F# User Group.   Steffen Forkmann spoke on his F# projects from Germany to two audiences: one at our usual location in at the Microsoft Nerd Center in Cambridge, Massachusetts and another at TechEd NA 2010 in New Orleans.  Thanks to Talbott, who was facilitating the Cambridge meeting along with Michael, a video of the talk is now available online.

I spent my off time hunting down smart people and forcing them to hang out.  Thankfully, most didn’t seem to mind.  The Visual Studio languages guys were friendly as always.  Of the few I didn’t meet at the MVP summit, it was most fantastic to finally meet Amanda Laucher in person.  When she’s around things just seem to magically come together.  I also had some awesome times with Alan Stevens, a man even more rad in person than in the stories they tell about him.

That Friday I hopped on a plane euphoric and exhausted, and headed to Singularity Summit 2010 for a slightly more intellectual, but much more subdued time.


5
Jul 10

In Retrospect: A .NET Rocks! F# Panel

Intense Discussion at the .NET Rocks! F# Panel

From left to right: Carl Franklin, Richard Campbell, Talbott Crowell, Richard Minerich and Richard Hale Shaw. (Photo taken by Ken Pespisa)

Just this past May I appeared on the .NET Rocks! radio show in a panel with Talbott Crowell and Richard Hale Shaw.   The show started with a short intro in which each of us discussed something we though was great about F#.  This was followed by an in-depth Q&A session with Carl Franklin and Richard Campbell.

Overall, the show went extremely well.  Talking with people afterward, it turned out that many who had previously been on the fence were now very excited to give F# a go.  One of the attendees, Ken Pespisa, wrote on his experience and I feel as though it sums up the feelings of many.  Even Bill and Lou from Atalasoft were moved to give F# a harder look.

It was a privilege and a pleasure to be on Carl and Richard’s show.   In only an hour’s time, they were able to showcase the entire breadth of common F# questions in a very concrete and intelligent way.   This well formulated Q&A style made for an exceptionally engaging and educational show.  I hope very much to work with them again at some point in the future.


21
Jun 10

Love the Lambda

Just this past Saturday I gave a completely new talk at the third Code Camp Hartford.  This talk was inspired by a previous mid-talk realization: most C# programmers (and almost the entirety of my audience) have never written a single lambda expression or anonymous delegate.  From this I further realized that I’d never be able to teach F# to those who are completely unfamiliar with the concept of functions as first class language constructs.  First, this idea and its ramifications would have to be taught.

lovethelambda

So the idea for Love the Lambda was born:  I would demonstrate both the usefulness and sheer novelty of first class functions and do so simultaneously in C# and F#.  More than that, I would use the opportunity as a kind of F# omnibus.

Here was the general game plan (as written by me imagining the thoughts of some intelligent, but yet uninformed, person sitting in the audience):

  1. First class functions sure are great!
    1. Oh man, and with closures they are even better!
    2. I’m going to use this stuff in C# all of the time!
    3. Wow, that F# code looks so much cleaner than the C#!
  2. Now check out what you can do with partial application!
    1. Oh wow, this pipelining stuff puts LINQ to shame…
    2. …and function composition is amazing!
    3. Hey, wait a minute, you can’t do this in C#…. :(
  3. Good thing F# integrates really nicely with C#.  I can pull it right into our existing projects!
    1. Plus F# has tons of other amazing stuff, I’m going to start playing with it tomorrow!
    2. I can’t believe how much less code I need to write when I use these features!
    3. F#, where have you been all my life?!

All that said, the first iteration of this talk worked out a bit different than my initial vision.  This was mostly due to running out of time when constructing the presentation.  I still think the ideas I was trying to convey are in there but not as sharp and as easy to grasp as I’d like.

Still,  the attendees seemed really happy with the talk and the review forms agreed.  Everyone left my talk loving the lambda at least a little bit more.

If you are interested, I’d encourage you to download my slides and code samples.  Also, I’m always interested in hearing about how I might improve my talks, or further spread my love of functional programming.  Please don’t hesitate to contact me if you want to share ideas.


14
Mar 10

Speaking Online at the Community For F#

In a moment of rash confidence, and possibly food-coma induced delirium, late last week I volunteered to give my F# for Testing and Analysis presentation for the online Community for F#.  The online talk will be on Tuesday, March 16th 2010 at 1PM EST.

The reason I am now feeling a bit of trepidation is that I agreed to give this talk without doing any research on who had recently spoken.   To my surprise I’ve now discovered that the very prolific Steffen Forkmann was the last to speak, on his own projects, which also constitute a large portion of this talk.   Of course, Steffen can cover these topics much better than I’d ever be able to.  In fact, now that I know he gives talks, I’m going to have to try and capture some of his time for our New England F# User Group.

So now, I’m in the process of trying to come up with additional interesting material. I’m thinking something along the lines of…

Of course, this will all be sprinkled liberally with reasons why F# is so fantastic for this particular type of application.

However, time is short and one hour of good presentation takes roughly 8 hours of work to build and refine.  That’s not including practice time at all.  I’m sure I’ll be able to pull together something interesting for the group but I’ll hope you’ll all be forgiving if I frequently need to reference my notes.

Post-Talk Update

Despite a two day delay due to technical issues and a few problems I had with the Live Meeting interface, the presentation went well.  Skip to 9 minutes into the video to avoid most of my fumbling with the software controls.

Links: Slides, code and video.


26
Feb 10

Speaking at the Boston .NET User Group

I’ll be giving my widely acclaimed “F# and You!” presentation at the Boston .NET User Group on Wednesday March 10th.   There will be chills, thrills and spills as programmers watch their parallelism and asynchrony problems melt away.  Strap on your recursion goggles for in-your-face .NET functional programming action.

Slides and samples will be available here after the talk.


14
Feb 10

Heading to the 2010 Microsoft MVP Summit

Tomorrow, at the ungodly hour of 6:00am, I will be boarding a plane headed to Seattle for the 2010 Microsoft MVP Summit.   This is my first year as a MVP and, like becoming part of any new ecosystem, it comes with a mix of excitement, anticipation and trepidation.   It was easy to feel like a rock star at PDC but the MVP Summit is essentially the Microsoft Ecosystem’s rock star conference.   I’m sure to meet many people with experience and wisdom far beyond mine and who also are able to articulate it well.

I think a reasonable approach is to meet as many of these people as possible and learn all I can.   As one my favorite quotes goes:

“Employ your time in improving yourself by other people’s writings, so that you shall gain easily what others have labored hard for.”
– Socrates

Although, it is my experience that reading is a poor substitute for discussion.