This gist is a collection of my rough notes from Strange Loop 2012.
Follow me on Twitter to get updates as they're posted.
I'm posting these notes immediately after each talk. Expect typos, formatting glitches, incomplete thoughts, and ...
This gist is a collection of my rough notes from Strange Loop 2012.
Follow me on Twitter to get updates as they're posted.
I'm posting these notes immediately after each talk. Expect typos, formatting glitches, incomplete thoughts, and ...
--- rough notes ---
--- rough notes ---
update-state
function takes the current state and an event and returns the new statemap
, mapcat
, filter
, etc.)reduce
is the universal accumulatormap
and reduce
process with many discrete steps
similar "shape" of data at each step; usually a map or record
only one execution path
example:
(defn large-process [input]
(-> input
subprocess-a
subprocess-ab
subprocess-c))
(defn subprocess-a [data]
; ...
)
useful to be able to easily the exact order of the steps; show it to business users to vet that you've ordered it correctly?
--- rough notes ---
Gary introduces a side project that Gary has been working on part-time for a little over a year, including ...
And, we've all been punk'd. All lies. None of the things above actually exist.
Editor's note: With Light Table, Catnip, aneditor/anterminal, and Bret Victor's upcoming talk, it seems like "Re-imagining Your Development Environment" will be one of the themes of Strange Loop 2012.
--- rough notes ---
Revised talk title? "Using Haskell Type Signatures as a Functional Design Notation"
Haskell type signatures useful for thinking about design
Even in Ruby code, Michael finds himself adding Haskell-esque type signatures as comments (i.e., documentation for methods)
String -> [String] -> [[String]] -> [String] -> String
Look at the shape of your data and how each function transforms the data; doing so will influence how you want to name your functions
Focuses on data
Think of problems as transformations from one thing to another thing
--- rough notes ---
#map
, #reduce
, #filter
, etc.)Proc.curry
added in 1.9)callcc
)Editor's note: If this topic interests you, you might also enjoy Alan Dipert's "Functional Programming in Ruby" slides from Ruby Hoedown 2011.
--- rough notes ---
[A] Editor's note: However, Dart can compile to JavaScript. (See notes from Lars Bak's talk.)
[B] Editor's note: Debugging is probably better than you expect. It's better than I expected.
[C] Editor's note: Check out the "Differences from Clojure" wiki page for a good breakdown.
Amanda Laucher and Paul Snively
--- rough notes ---
forAll
made me think, "could/should that be a type?"[A] Editor's note: Testing Anti-Patterns — How to Fail With 100% Test Coverage
[B] Editors note: This might be a problem if you're coding in a cave. But you're not. So, go talk to your customer. Just sayin'.
--- rough notes ---
--- rough notes ---
--- rough notes ---
--- rough notes ---
npm install browserstack
--- rough notes ---
Editor's note: you'll definitely want to see (and hear) the video for this talk.
--- rough notes ---
render!
function to update the DOM (i.e., side effects are isolated to the render!
function)bind!
macro to always sync the DOM to match the domain data--- rough notes ---
Editor's note: You'll definitely want to see the video for this talk once it's available. In the meantime, check out Bret's amazing essay on the topic. Seriously, don't bother reading the notes below. Go read Bret's essay. You'll be glad you did.
--- rough notes ---
function f(a, b, ...r)