Download - CUFP 2009 Keynote - Real World Haskell

Transcript
Page 1: CUFP 2009 Keynote - Real World Haskell

Real World Haskell.

Page 2: CUFP 2009 Keynote - Real World Haskell

It's 1994.It's 1994.

Page 3: CUFP 2009 Keynote - Real World Haskell

There's just oneThere's just onesong on the radio.song on the radio.

““Love is all around,”Love is all around,”by Wet Wet Wet.by Wet Wet Wet.

Page 4: CUFP 2009 Keynote - Real World Haskell

And I have aAnd I have aheadache.headache.

Page 5: CUFP 2009 Keynote - Real World Haskell

I'm inGlasgow.

Page 6: CUFP 2009 Keynote - Real World Haskell

I'm learning tohack on GHC.

Page 7: CUFP 2009 Keynote - Real World Haskell

I'm learning Go.I'm learning Go.

Page 8: CUFP 2009 Keynote - Real World Haskell

It's a greatIt's a greatcrowd.crowd.

Page 9: CUFP 2009 Keynote - Real World Haskell

I make lots of friends.I make lots of friends.

Page 10: CUFP 2009 Keynote - Real World Haskell

One is namedOne is namedJim.Jim.

Page 11: CUFP 2009 Keynote - Real World Haskell

So on this particularSo on this particularday in 1994...day in 1994...

...why ...why elseelsedo I havedo I have

a headache?a headache?

Page 12: CUFP 2009 Keynote - Real World Haskell

Well, we tend to go out.Well, we tend to go out.

Page 13: CUFP 2009 Keynote - Real World Haskell

After a hard night out, Jim goes home.

Page 14: CUFP 2009 Keynote - Real World Haskell

He dreams.He dreams.

Page 15: CUFP 2009 Keynote - Real World Haskell

Happily, this is no nightmare.Happily, this is no nightmare.In fact...In fact...

Page 16: CUFP 2009 Keynote - Real World Haskell

...he meets a...he meets abeautifulbeautifulwoman.woman.

Page 17: CUFP 2009 Keynote - Real World Haskell

In his dream,In his dream,they hit it off.they hit it off.

Page 18: CUFP 2009 Keynote - Real World Haskell

She even gives himher number.

Page 19: CUFP 2009 Keynote - Real World Haskell

When heWhen hewakes...wakes...

Page 20: CUFP 2009 Keynote - Real World Haskell

...it's the most....it's the most.Amazing.Amazing.

Thing.Thing.

Page 21: CUFP 2009 Keynote - Real World Haskell

He He remembersremembersher her numbernumber!!

Page 22: CUFP 2009 Keynote - Real World Haskell

...so he writesit down...

Page 23: CUFP 2009 Keynote - Real World Haskell

...and brings it in......and brings it in...

Page 24: CUFP 2009 Keynote - Real World Haskell

...and...andasksasksme:me:

Page 25: CUFP 2009 Keynote - Real World Haskell

““WhatWhatshould should

I do I do with this with this

number?” number?”

Page 26: CUFP 2009 Keynote - Real World Haskell

“Wait a sec,”I tell him.

Page 27: CUFP 2009 Keynote - Real World Haskell

“I know thisnumber.”

Page 28: CUFP 2009 Keynote - Real World Haskell

““It's the delivery number...It's the delivery number...

Page 29: CUFP 2009 Keynote - Real World Haskell

...for the local pizzeria.”...for the local pizzeria.”

Page 30: CUFP 2009 Keynote - Real World Haskell

Why tellthisstory?

Page 31: CUFP 2009 Keynote - Real World Haskell

Community.

Page 32: CUFP 2009 Keynote - Real World Haskell

Most peopleMost peoplelike tolike to

belong.belong.

Page 33: CUFP 2009 Keynote - Real World Haskell

I lovedthe Haskell

community...

Page 34: CUFP 2009 Keynote - Real World Haskell

...but...butI leftI left

anyway.anyway.

Page 35: CUFP 2009 Keynote - Real World Haskell

Over a decadeOver a decadepassed.passed.

Page 36: CUFP 2009 Keynote - Real World Haskell

When I returned, the When I returned, the community was still community was still beautifulbeautiful......

Page 37: CUFP 2009 Keynote - Real World Haskell

...and serenely inward-facing....and serenely inward-facing.

Page 38: CUFP 2009 Keynote - Real World Haskell

How did How did youyou learn learn Haskell?Haskell?

Page 39: CUFP 2009 Keynote - Real World Haskell

Here's what I did:Here's what I did:

I read dozens of papers.I read dozens of papers.

I studied thousands of I studied thousands of lines of code.lines of code.

Page 40: CUFP 2009 Keynote - Real World Haskell

I wrote I wrote lotslots of ofthrowawaythrowaway

code.code.

Page 41: CUFP 2009 Keynote - Real World Haskell

But mostly, I Googled...But mostly, I Googled......and read......and read...

Page 42: CUFP 2009 Keynote - Real World Haskell

...and Googled......and Googled......and read......and read...

Page 43: CUFP 2009 Keynote - Real World Haskell

...and, well,...and, well,you get the idea.you get the idea.

Page 44: CUFP 2009 Keynote - Real World Haskell

I delighted in the process.I delighted in the process.

But it wasn't very efficient.But it wasn't very efficient.

Page 45: CUFP 2009 Keynote - Real World Haskell

So I decided toSo I decided towrite a book.write a book.

““Make the jobMake the jobeasier for others,”easier for others,”

I told myself.I told myself.

Page 46: CUFP 2009 Keynote - Real World Haskell

Oh, and that book?Oh, and that book?

It's how I did the bulk of It's how I did the bulk of my learning.my learning.

Page 47: CUFP 2009 Keynote - Real World Haskell

It took:It took:1.5 years.1.5 years.

Page 48: CUFP 2009 Keynote - Real World Haskell

It took:It took:1.5 years.1.5 years.3 writers.3 writers.

Page 49: CUFP 2009 Keynote - Real World Haskell

It took:It took:1.5 years.1.5 years.3 writers.3 writers.710 pages.710 pages.

Page 50: CUFP 2009 Keynote - Real World Haskell

It took:It took:1.5 years.1.5 years.3 writers.3 writers.710 pages.710 pages.

800+ reviewers.800+ reviewers.

Page 51: CUFP 2009 Keynote - Real World Haskell

It took:It took:1.5 years.1.5 years.3 writers.3 writers.710 pages.710 pages.

800+ reviewers.800+ reviewers.7,500+ comments.7,500+ comments.

Page 52: CUFP 2009 Keynote - Real World Haskell

Now it's your turn.

Srsly.

Page 53: CUFP 2009 Keynote - Real World Haskell

What is the HaskellWhat is the Haskellcommunity good at?community good at?

Page 54: CUFP 2009 Keynote - Real World Haskell

Research? We've got it!Research? We've got it!

Page 55: CUFP 2009 Keynote - Real World Haskell

Outreach?Outreach?

Page 56: CUFP 2009 Keynote - Real World Haskell

That's lessThat's lessclear to me.clear to me.

Page 57: CUFP 2009 Keynote - Real World Haskell

You don't need toYou don't need towrite a 700-page tome.write a 700-page tome.

Page 58: CUFP 2009 Keynote - Real World Haskell

You don't need toYou don't need todescribe new research.describe new research.

(In fact, I think it's best you don't.)(In fact, I think it's best you don't.)

Page 59: CUFP 2009 Keynote - Real World Haskell

You need:You need:

Tenacity.Tenacity.An idea.An idea.Tenacity.Tenacity.

Explanatory skill.Explanatory skill.Tenacity.Tenacity.

Page 60: CUFP 2009 Keynote - Real World Haskell

I even haveI even havesome ideassome ideas

for you.for you.

All nice and handy.All nice and handy.

Page 61: CUFP 2009 Keynote - Real World Haskell

1. Writing and Tuning Fast 1. Writing and Tuning Fast Haskell Code.Haskell Code.

Page 62: CUFP 2009 Keynote - Real World Haskell

2. Parallel Haskell in 24 2. Parallel Haskell in 24 Hours.Hours.

Page 63: CUFP 2009 Keynote - Real World Haskell

3. High-Assurance Haskell.3. High-Assurance Haskell.

Page 64: CUFP 2009 Keynote - Real World Haskell

4. Modeling in Haskell.4. Modeling in Haskell.

Page 65: CUFP 2009 Keynote - Real World Haskell

5. Real World Abstract 5. Real World Abstract Algebra for Categorical Algebra for Categorical

Dummies.Dummies.

Page 66: CUFP 2009 Keynote - Real World Haskell

6. Complex Functional 6. Complex Functional Applications.Applications.

Page 67: CUFP 2009 Keynote - Real World Haskell

7. Grow Your Own 7. Grow Your Own Monads in the Basement, Monads in the Basement,

Legally.Legally.

Page 68: CUFP 2009 Keynote - Real World Haskell

8. Concurrent 8. Concurrent Networking Programming.Networking Programming.

Page 69: CUFP 2009 Keynote - Real World Haskell

9. Functional Pearls and 9. Functional Pearls and Design Patterns.Design Patterns.

Page 70: CUFP 2009 Keynote - Real World Haskell

10. Secrets of the 10. Secrets of the QuickCheck Wizards.QuickCheck Wizards.

Page 71: CUFP 2009 Keynote - Real World Haskell

Who should you be Who should you be writing for?writing for?

Page 72: CUFP 2009 Keynote - Real World Haskell

NOT THE PEOPLENOT THE PEOPLEIN THIS ROOM.IN THIS ROOM.

Page 73: CUFP 2009 Keynote - Real World Haskell

Look toother programming communities.

Page 74: CUFP 2009 Keynote - Real World Haskell

If we don't talkIf we don't talkto them, theyto them, theywon't simplywon't simplycome to us.come to us.

Page 75: CUFP 2009 Keynote - Real World Haskell

Who is this man?Who is this man?

AnthonyAnthonyStaffordStaffordBeer.Beer.

Page 76: CUFP 2009 Keynote - Real World Haskell

Beer was an influential Beer was an influential cybernetician.cybernetician.

Cybernetics: “The science of effective organization.”Cybernetics: “The science of effective organization.”

Page 77: CUFP 2009 Keynote - Real World Haskell

Cybersyn.Cybersyn.

Santiago, Santiago, Chile, Chile,

1970-1972.1970-1972.

Page 78: CUFP 2009 Keynote - Real World Haskell

Cybersyn:Cybersyn:

Centralised control of the Centralised control of the Chilean economy.Chilean economy.

Page 79: CUFP 2009 Keynote - Real World Haskell

A star network of telex machines running from A star network of telex machines running from factories to a control centre in Santiago.factories to a control centre in Santiago.

Page 80: CUFP 2009 Keynote - Real World Haskell

A Beer coinage:A Beer coinage:

““POSIWID”POSIWID”

Page 81: CUFP 2009 Keynote - Real World Haskell

POSIWID:POSIWID:

The purpose of a system The purpose of a system is what it does.is what it does.

Page 82: CUFP 2009 Keynote - Real World Haskell

Don't try toDon't try tounderstand a systemunderstand a system

from whatfrom whatits designersits designerssaysay it's for. it's for.

Page 83: CUFP 2009 Keynote - Real World Haskell

Start fromStart fromobservingobservingwhat itwhat itactuallyactuallydoesdoes..

Page 84: CUFP 2009 Keynote - Real World Haskell

Beer had some...Beer had some...unusualunusual ideas.ideas.

Page 85: CUFP 2009 Keynote - Real World Haskell

But he managed to get But he managed to get them implemented.them implemented.

Page 86: CUFP 2009 Keynote - Real World Haskell

So, from theSo, from thePOSIWIDPOSIWID

perspective:perspective:

What does functional What does functional programming do?programming do?

Page 87: CUFP 2009 Keynote - Real World Haskell

I am not suggesting that we I am not suggesting that we should try to be like this.should try to be like this.

Page 88: CUFP 2009 Keynote - Real World Haskell

But our But our rhetoric rhetoric suggests that suggests that most of us do most of us do not want to be not want to be like this, like this, either.either.

Page 89: CUFP 2009 Keynote - Real World Haskell

Go write a book.Go write a book.Give a talk.Give a talk.

Write a blog post.Write a blog post.

Page 90: CUFP 2009 Keynote - Real World Haskell

Oh, and thanks.Oh, and thanks.