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
learning-and-the-state-of-the-web
By Rob Ashton
learning-and-the-state-of-the-web
Keynote perhaps
- 2,920