Learning/dev/etc

@robashton

I am @robashton

Things I don't like

AngularJS,Rails,Ruby,C#,Java,JavaScript,Ember,Node,Semicolons, Object orientated code, Design patterns, Procedural code, Imperative code, Dynamic languages, Bad coffee,Visual Studio,Emacs, Making slide decks, MacOS,Wearing clothes,Wearing shoes,Exercise,Software development

Two years ago...

The interim

Now

I know programming

(Ok, actually)

F********** ANGULAR

"You don't need a degree to do programming"

"Learn programming in six weeks"

And earn megabucks the rails way

"we can't afford senior developers"

"We need a framework because we're not JS experts"

Consultants

"This project is now in maintenance mode"

We place emphasis on development being easy and then are surprised when it then bites us in the ass.

Stepping away for a moment

Climbing

(You don't need a degree to go climbing)

What do you need?

Skipping "leg day"

The plateau

Resetting expectations

Innate ability does not necessarily lead to success

"Anyone can play guitar"

Me? 

I've "played" since I was six

Being young has advantages

But gosh darn it, it's time to do this properly too

Scales

Finger placement

More scales

Now do it faster

Inspired by...


(Here's the punchline)

Haskell

Yes, Haskell

The revelation.

Trying to just "jump in and build shit" with Haskell

Step back

github.com/bitemyapp/learnhaskell

Solves problems we didn't even know we had

- "If statements are so tedious"

- "Why would I ever want to write for loops"

- "Recursion? Pfft - I'll just use a built-in"

An example

Writing a function to append an item to another? 

appendNode :: Tree -> Tree -> Tree
appendNode parent child = .... etc
mappend :: a -> a -> a

It's probably a Monoid..

instance Tree Monoid where
  mappend = addNode
  mempty = Leaf

And suddenly...

addNodes :: Tree -> [Tree] -> Tree
addNodes t [] = t
addNodes t (x:xs) = addNodes (t mappend x) xs
addNodes :: Tree -> [Tree] -> Tree
addNodes = foldr mappend

Naawww

(actually, this exists and is called mconcat)

Abstraction is great

But not easy

The problem?

Programming is hard

Pretending otherwise is folly

Lowing the barrier to immediate entry is not the answer

WinForms Databinding

WebForms

Rails

Angular

"Making it easy to skip leg day"

What's this got to do with front-end web development?

PureScript

Elm

(Cljs/Om)

Etc

Our chance to do it right better

Damage limitation

Professionalism

Things to look at

"Out of the tar pit"

"simple made easy"

https://github.com/bitemyapp/learnhaskell

Made with Slides.com