Professional Documents
Culture Documents
Driven
Development
Jason Gilman
@jasongilman
Thursday, November 28, 13
element 84
About Me
Of course not!
Communication
Computer
Developer
What's happening?
1. Write code
2. Execution
3. Output
NullPointer
Exception
Tool Belt
Logging
Debugger
REPL
Deficiencies:
Computer
Developer
Logs,
stack traces,
alerts
Complicated State
550mm 3m
Thursday, November 28, 13
source: commons.wikimedia.org/wiki/File:Baseball_(crop).jpg
Thursday, November 28, 13
3000
2250
1500
750
550mm
3000mm
550mm
3m
Thursday,
November 28, 13
(Filename: /Applications/buildAgent/work/b0bcff80449a48aa/Runtime/ExportGenerated/MacStandalonePlayer/UnityEngineDebug.cpp
Line: 43)
http://www.flickr.com/photos/gavinbell/81011618
Thursday, November 28, 13
source: allrecipes.com/recipe/zuccotto-cupcakes
Thursday, November 28, 13
source: flickr.com/photos/louisephotography/8100744225/
Thursday, November 28, 13
2. Execution
3. Output
NullPointer
Exception
Data Visualization
source: google.com/trends/explore#q=clojure&cmpt=q
Thursday, November 28, 13
Code is Data
(map inc (range 5))
Code Execution
is Data
Thursday, November 28, 13
data
data v1
data v2
data v3
data v4
data v5
data
Quick Sort
(defn qsort [[pivot & xs]]
(when pivot
(let [smaller #(< % pivot)
before-pivot (filter smaller xs)
after-pivot (remove smaller xs)]
(lazy-cat (qsort before-pivot)
[pivot]
(qsort after-pivot)))))
source: rosettacode.org/wiki/Sorting_algorithms/Quicksort#Clojure
(qsort [5 3 1 7 4 6 ...])
Captured
{:left
{:left
{:left
{:left
{:left
{:left
...
Thursday, November 28, 13
pivot
left
right
LOGO
forward 50
right 90
forward 50
right 90
forward 50
...
source: http://el.media.mit.edu/logo-foundation/logo/turtle.html
Thursday, November 28, 13
source: http://cyberneticzoo.com/?p=1711
Thursday, November 28, 13
Drawing a House
A Plan
right 90
square
right 30
triangle
Success!
square
triangle
square
right 30
triangle
Visualization
Driven
Development
Thursday, November 28, 13
VDD Core
Double check this URL
github.com/element84/vdd-core
Web Browser
Coding Env
Browser
Your Code
Your
Visualization
Server
Embedded
HTTP Server
Thursday, November 28, 13
Client
WebSockets
Viz utilities
Using
VDD Core
Thursday, November 28, 13
Your Code
Server
Thursday, November 28, 13
Your
Visualization
Client
In the REPL:
(require '[vdd-core.core :as vdd])
(def server (vdd/start-viz))
Your Code
Server
Thursday, November 28, 13
Your
Visualization
Client
In the Browser:
In the REPL:
(use 'qsort.driver)
(viz-qsort [3 2 4 5 1])
"left":[],
"left":[2,1],
"left":[1],
"left":[],
"left":[],
"left":[],
"left":[],
"pivot":3,
"pivot":2,
"pivot":1,
"pivot":4,
"pivot":5,
"right":[]
},
"right":[4,5]},
"right":[]
},
"right":[]
},
"right":[5] },
"right":[]
},
"right":[]
}]
Bar Chart in D3
{"items":[3,2,4,5,1], ...
{"items":[2,1,3,4,5], ...
{"items":[2,1,3,4,5], ...
...
{"items":[1,2,3,4,5], ...
1. Identify nouns.
2. Choose visual representation.
3. Choose layout.
Data Search
GET /search?point=45,78&cloud_max=32
&keywords=rain
AND
point = 45, 78
cloud < 0.32
keywords = rain
Thursday, November 28, 13
permitted
data rules
original
query
AND
OR
provider=FOO
...
AND
point = 45, 78
cloud < 0.32
keywords = rain
1. Identify Nouns
Conditions
Operations - and, or, not
Query
AND
or
Tree Layout
&&
3. Choose a Layout
1. D3 Tree Layout
&&
keywords = rain
2. HTML Lists
AND
cloud < 0.32
keywords = rain
Implementation
vdd-core-examples/
src/
...
viz/
boolean_logic_simplifiers/
driver.clj
index.html
simplifiers.css
simplifiers.js
github.com/element84/vdd-core-examples
Thursday, November 28, 13
A Problem
No Recursion
Fixed
Keep it simple.
Lifecycle of
a request
Before
query state
After
query state
Build reusable
visualizations.
Developing
software is like
Woodworking
&
Carpentry
source: flickr.com/photos/epsos/6018530849
Thursday, November 28, 13
Jig
wood to cut
source: flickr.com/photos/crown_molding/5079441077
Thursday, November 28, 13
Jig Benefits
Makes work easier (faster)
Higher quality results
Visualization Benefits
Makes work easier (faster)
Higher quality results
Thanks
Jason Gilman
@jasongilman
Thursday, November 28, 13
element 84