Posts Tagged: Talks

Dec 11

2011 In Retrospect: A Year of Writing F# Professionally

For the past year I’ve been working almost entirely in F# and have found the experience to be everything I hoped it to be and better. In just six months I was able to bring a research project to fruition which has since made our company millions of dollars. F#’s terseness made algorithms a joy to implement while F#’s type system made changes easy and regression errors non-existent. In fact, the few bugs we have had were either due to unexpected behavior in the GUI API, or in external C# libraries. Never before have I been so happy with the programming language I use on a daily basis. Never before have I felt so confident that when I make a change new bugs won’t be introduced. And no, we’re not using strict TDD, or any other strict development methodology. Simply leveraging the type system well in addition to algorithmic testing has proven to be extremely robust within F#.

It’s also been a great year for making new friends and meeting interesting people. The NYC F# community is thriving with an average of about fifty people attending any given NYC F# User Group meeting, many of them using F# at work for at least some subset of their projects. I hear the same experiences from many: Yes, learning F# isn’t simple, but the benefits in speed of implementation, LoC reduction, and correctness are huge. The excitement over type providers is also palpable. Finally, we’ll be able to extend our types out into data sources and eliminate new classes of error which currently occur at the border between our data and our applications. If you’re interested in following what we’ve been up to at the NYC F# User Group, check out our Vimeo stream.

I’ve also had the pleasure of speaking at a quite a few interesting events this year. One I haven’t yet written about is Monospace 2011.

Monospace, First Slide

Click For Video

In retrospect, it shouldn’t have been surprising that many in the Mono community hadn’t seen much F#.  They tend to go to different conferences and events than your standard .NET user and so hadn’t yet heard much about its benefits.  I will say though that it was a very bright group and I think many who speak on F# would find them  just as receptive as I have.  I do hope to see (and participate in) more outreach into the Mono world as I think we will find that there’s quite a few folks who would be happy to embrace a better way to program, if only they were shown the way.

Apr 11

F# and the DLR at Dev Day for NSWC Dahlgren

Just yesterday I gave a presentation on F# and the DLR for the Naval Surface Warfare Center. Many thanks to Kevin Hazzard and Chris Bowen for recommending me. It was a fantastic opportunity to speak on the benefits of F# to an entirely new audience and I learned a few things about the DLR along the way.

Despite disliking dynamic languages in practice because of their lack of safety, I must admit that the DLR allows you to do quite a few very interesting things.

First, you can embed DLR language code right into html and so build Silverlight applications with no backing assembly. This is quite interesting as it makes the web development story for Silverlight much more attractive. Read more about this feature on the DLR section of the Silverlight Website.

Second, it’s quite easy to embed DLR languages into your application. With just about three lines of code I was able to build a IronPython query window right into a ListView. The possibilities for live debugging and building query DSLs here are huge.

Finally, the DLR is a great platform for building your own DSL. You need only to Parse and Lex your way to a DLR abstract syntax tree, sprinkle in a few rules, and you’ve got your own language. This is also where I see the marriage of F# and the DLR as F# is an ideal language to do this in. For an example of a really nice implementation of a DLR language in F#, take a look at IronJS.

Click here to download my slides, as well as the code used in this presentation.

Feb 11

F# Code and Slides to Share

As I mentioned in my most recent edition of F# Discoveries This Week, it’s Code Camp season and it would be great to see more F# users out there sharing the love.  To help out, I’ve provided the slides from my previous talks in one place under the Creative Commons Attribution license.  I even left all of my slide notes intact.  Do anything you want with them, but please do it in the spirit of spreading F#.

Of course, this applies only to my own slides and code.  Everything made by someone else maintains its existing license.  Duh.

As evidenced by this picture of Don Syme, speaking on F# is guaranteed to make you look at least 200% more awesome

F# and You!

This was my go-to intro to F# talk for almost two years.  It’s a whirlwind tour through F# with an emphasis on conveying why F# is good over how to use it or how it works.  I’ve given variations of this talk over 10 times, and it’s always a crowd pleaser.

Functional Language Paradigms in F#

I gave this talk at the NYC ALT.NET Group shortly before moving to NYC.  It may just be my most well received talk of all time.  If you use this, you’ll need to switch up the questions so people can’t just look up the answers online beforehand.

F# For Testing and Analysis

This talk is an overview of some of the tools available for F# and how to use them.  It’s one of my favorite talks for intermediate F# users.  FsCheck always blows the minds of those who are engineering-minded.

A Lap Around the F# Ecosystem

While similar to F# for Testing and Analysis, this talk focuses on some great tools not involved in testing.  For example, I give FAKE some love.

F# 2.0 – A Day at the Beach

This is the content for my CUFP tutorial.  Giving this talk involved a ton of answering questions and walking around helping directly.  The code is a bit dated, I have a much more recent Silverlight version you can use instead.

F# in the Lab and the Classroom

This was my first attempt at spreading F# in academia and I think it went much better than I expected.  My favorite part is the comparison of a pseudo decision tree with F#’s match statement.

Love the Lambda

This talk is a bit of an unfinished project.  The basic idea is that F# allows you to implement features that would requite compiler changes in languages like C# and VB.NET.  I’ve given it only once with mixed results, but I think it has a lot of potential.

I’ve given a few others but they’ve either been composites of what I posted here or are so old that none of the samples would work now.  I hope that by providing these here I’ve inspired at least one other person to get out there and share the F# love.

I’d love to hear about how you used these slides or answer any questions you might have.  The best way to get in touch is with twitter.

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.

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.