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,806