2017/10/12: ClojureConj Day 1

by Gene Kim on

#Clojure_conj

2017/10/12: ClojureConj Day 1

Up: Rich Hickey:

  • @ericrichmond: RT @clojureconj: The opening keynote of #clojure_conj by @richhickey is now online! https://t.co/fGth8owAET

  • @RealGeneKim: Day 1 at #clojure_conj almost ready to begin: Up first: Rick Hickey: Effective Programming: 10 Years Of Clojure

  • Hickey: “10 yrs ago, Clojure was released; there’s no possible way I could have imagined this

  • Hickey: “Clojure is opinionated: few, strongly supported idioms; choices made; why? Pain of experience

  • @gigasquid: Listening to @richhickey’s keynote! #clojure_conj https://t.co/ga1v19dlyi

  • @richhickey: “after 18 yrs of programming, I’d had it w/certain problems: reaction programming scheduling; playing audio from computers required dedicated audio cards; audio fingerprinting/recognition;

  • @richhickey: “what do hotels, airlines, radio have in common? yield management: finite inventory that goes away; goal: maximize revenue

  • @richhickey: “Wrote sched system in Lisp; rewrote in C++; took 4x longer, req 5x more code; that’s when I knew I was doing something wrong”

  • @richhickey: “I love C++, for some values of C++; took 4x longer to rewrite from LISP to C++, 5x more code”

  • @richhickey: “Lightweight Language Workshop at MIT: talking about someone who lost their way, b/c he fell into database; never used a database;

  • @richhickey: “

  • @RealGeneKim: #clojure_conj @richhickey: context of “situated” programs, studied during his 2 year sabbatical that led to Clojure https://t.co/8TLN8V6I2e

  • @richhickey: “Two for Tuesday: in radio, played two songs in a row from same artist; breaking every rule we had made previously”

  • @RealGeneKim: #clojure_conj @richhickey More characteristics of “situated” programs https://t.co/Jcq7KKSKUB

  • @richhickey: “Oddly enough, the one program I wrote that has NONE of these characteristics: a compiler: no Two for Tuesdays”

  • @richhickey: “Effective: definition: producing the intended or expected result; from Latin: ‘accomplishment, performance’”

  • @richhickey: “...specifically ‘effectiveness’ doesn’t mean ‘correct’, eg, satisfied a type checker; goal is to help people be effective

  • @ericqweinstein: "What's the first thing you do when you sit down to write a language? Get rid of any 'Two-For Tuesdays'!" — @richhickey #clojure_conj

  • @richhickey: “Programming is not about itself; that’s interesting and that’s mathematics

  • @RealGeneKim: #clojure_conj @richhickey: “Programming is not about itself; that’s interesting/important, bu that’s mathematics (… https://t.co/hyyC7ycOoh

  • just heard something that could explain why Clojure stack traces are so cryptic.. hahaha

  • @richhickey pointing out the ratio of code associated w/ logic : information processing : UI is 1:20:400

  • @ehashdn: Clojure's target is "information-driven situated programs." Languages aren't inherently good: what are you using them for? #clojure_conj

  • @ericqweinstein: Really glad @richhickey always touches on "what's this thing for?"—I think the most important question when programming. #clojure_conj

  • @RealGeneKim: #clojure_conj @richhickey: “Clojure focuses on the problem areas in green” https://t.co/ci0gqbg5AX

  • @richhickey on demographic bias of 15-25+ yrs programming experience: “Maybe Clojure is designed for tired, cranky programmers

  • @richhickey: “Programming is not about itself; that’s interesting and that’s mathematics

  • @luskwater: #clojure_conj #Clojure, the language for tired, cranky professional programmers? 😁

  • @richhickey: “The non-problems: Lisp syntax (parentheses); few static type checks

  • Did @richhickey suggest parinfer/paredit is not good for beginning programmers? Not sure if I understand the concern.

  • @ehashdn: Good slide. The reason I like Clojure is it frees me up to spend more time thinking about domain problems and les… https://t.co/rGTyT9JABP

  • @statonjr: Parentheses are hugs for your code. #clojure_conj

  • @richhickey: “People’s learning Clojure: their prob is not parentheses; it’s that all mutability has been taken away

  • @ericqweinstein: I was one of those "WTF is this?" people when I first saw Lisp syntax; Clojure is super readable to me now. Simple made easy! #clojure_conj

  • @richhickey: “Information is sparse, open, incremental/accumulative, names capture semantics, should be composable

  • @richhickey: “The challenge of static type checking: the world doesn’t fill out forms for you; that’s not the way the world ever works

  • @RealGeneKim: #clojure_conj @richhickey reasoning against stronger typing systems https://t.co/9d1s3NkFgU

  • @richhickey: “Abstraction: isn’t naming: drawing from exemplar amazing things; data concretions

  • @ericqweinstein: "Clojurists will tell you, 'just use maps.' What they meant was, 'we didn't give you anything else.'" #clojure_conj

  • @richhickey: “Typing creates an immense amount of coupling in programs; experience shows that we dread coupling

  • @richhickey: “More coupling: positional semantics: who likes functions that that 17 arguments; that’s filling out forms again

  • @richhickey: “Programming is not about itself; that’s interesting and that’s mathematics

  • @ehashdn: "I think types are an anti-pattern. ... hence, Clojure is dynamically typed." #clojure_conj https://t.co/SqedGQjZTr

  • @ericqweinstein: Not sure I agree, but thought-provoking: "If you actually parameterized the information system, it would be Maybe everything!" #clojure_conj

  • @RealGeneKim: @ericqweinstein Agreed. I’m a fan of static typing, b/c it finds my stupid errors at compile-time. But can’t imagin… https://t.co/jqliL8gXJp

  • @RealGeneKim: RT @ericqweinstein: Not sure I agree, but thought-provoking: "If you actually parameterized the information system, it would be Maybe every…

  • @RealGeneKim: RT @ehashdn: "Who wants to call a function with 17 arguments? Nobody!" On how positional semantics and parameterization don't scale. #cloju

  • @RealGeneKim: RT @ehashdn: Statically typed languages lead to a proliferation of non-composable types which defeats the usefulness of abstract…

  • @richhickey: “the database is huge source of coupling; prob is often trying to map an entity across multiple db; why ppl get to mailings twice

  • @richhickey: “Runtime tangibility: smaltalk, Common Lisp; the JVM, situated sensibilities;

  • @richhickey: “There’s a stunning sensibility when you see Smalltalk and Common Lisp; I discovered them late in my life; there’s still much to pilfer

  • @richhickey: “Runtime tangibility: smaltalk, Common Lisp; the JVM, situated sensibilities;

  • @richhickey: “

  • @slipset: Not at all envious... https://t.co/sHlkjNA0Bb

  • @richhickey: “The JVM is incredibly dynamic: designed for settop boxes; tons of excellent support for situated sensibilities

  • @richhickey: “Design choices of JVM vs CLR are extremely evident: JVM is dynamic, CLR is static

  • @richhickey: “On static vs dynamic typing: using OmniGraffle vs using a horrible UML design tool that doesn’t let you do anything

  • @RealGeneKim: #clojure_conj At last @richhickey directly addresses static typing (again, I like static typing): “diff between… https://t.co/nNNEbP3zRw

  • @byronwoodfork: Wishing I was at #clojure_conj ☹️ but I promised myself I wouldn't travel anymore this year. Next year!

  • @richhickey: “Logic is your tool, not your master; go solve problems, not puzzles” (OMG, these jabs at static typing are hilarious/provocative/witty)

  • @RealGeneKim: @ericqweinstein So many of my mistakes could be caught at compile-time; wishing for Typed ClojureScript; hoped… https://t.co/4stcejQM4V

  • @snavgill: RT @atankanow: #sketchnote for @richhickey keynote "Effective Programs" #clojure_conj https://t.co/dYip948xLq

Up: Inspiring A Futrue Clojure Editor (with Forgotten Lisp UX): Shaun Lebron @shaunlebron

  • @shaunlebron: “10th anniversary of Clojure; but 50th anniversary of Lisp editors”
  • @cgrand: .@shaunlebron retrospective on lisp editors is barely starting and is already awesome! #clojure_conj
  • @hby: And in the opening keynote Rich mentions “leaving things out”. #clojure_conj https://t.co/NKG0PbZOX1
  • Rewriting: yes, parindent was life-changing for me: rewrites code based on indentation, like Python; I love it... @shaunlebron
  • @RealGeneKim: #clojure_conj @shaunlebron “There’s 50 year history of trying to rewrite LISP to address parentheses prob, like Mic… https://t.co/QjZOXZQiFE
  • OMG. @shaunlebron WROTE parinfer. Wow! THANK YOU! I love parinfer! Totally changed the programming experience for me.
  • @goronao: https://t.co/j9A76OXnrw #clojure_conj
  • @shaunlebron research going into two tools: parindent for writing; locus for reading (lisp / focus)
  • @RealGeneKim: #clojure_conj You can support @shaunlebron’s amazing work on Patreon https://t.co/eY7fiQvaBY

Up: Designing in Clojure - an experience report

Michael Parenteau

  • Parenteau: “Being in software was frustrating; I worked in Photoshop; gave stuff to Dev, never came back like I wanted, they never told me why
  • Parenteau: “Learned CSS and HTML; outcomes were a little better; Learning Ruby and Rails was game-changer; felt for first time like part of team
  • Parenteau: “As designer, learning SASS and HAML was like super-powers” (
  • Parenteau: “Stuart Sierra saw how much I was struggling with Lisp parents, said, ‘I need to teach you Emacs’” (entire room laughs)
  • Parenteau: “For me, as designer, switching to ClojureScript was like going back to old days: no HAML, back to CSS/HTML
  • Parenteau: “In 2013, focus was on Dev, many of us left behind; no support for SASS (which was still a Ruby gem)
  • Parenteau:
  • @RealGeneKim: #clojure_conj Parenteau: “I loved middleman, allowed me to use UX tools I was used to: static site generation, cus… https://t.co/Dr1k3v2NIG
  • Parenteau: “I loved the engineering team, despite awful start of the relationship
  • Parenteau: “I left land of ClojureScript, spent year in JavaScript/React land; it’s alive & incredibly dynamic; so many incredibly tools
  • Parenteau: “Back to Clojure; wireframe; help build front-end; then write Rum/Hiccup instead of Middleman
  • @RealGeneKim: #clojure_conj Parenteau: “Back to Clojure; wireframe; help build front-end; but scared to touch stuff without brea… https://t.co/ehZPkUTESd
  • Parenteau: “Started working on HEAT: Hiccup Enlive Adapter Transforms: enables sep of concerns again; great for UX & Dev
  • Parenteau: “Sep of concerns was great: I could change things w/o any fear of breaking functionality; enabled Dev and UX productivity”
  • @RealGeneKim: RT @goronao: https://t.co/1FM561fwcW #clojure_conj
  • Parenteau: “ClojureScript v1 was better way of working. Well, it wans’t For me. And therefore, wasn’t better for customer
  • Parenteau: In response, I admit I have dangeroulsy little understanding of CSS; every change I make makes my entire page stop rendering :(
  • Parenteau: “Got tired of opening up Web Inspector, trying to figure out what file certain CSS styling came from. Created src-munch
  • Parenteau: “Working with Clojure made me feel clumsy and stupid; tools didn’t feel like they were for people like me (designers)
  • Parenteau: “Now, ClojureScript toolchain as good as any; I don’t miss Rails, Webpack, JavaScript; still don’t have complete Emacs config
  • Parenteau: “Incredible value of having entire team (incl UX) in the same room, editing same files, using same tools & language
  • PS: I’m posting all my notes from #clojure_conj here: http://scribes.tweetscriber.com/realgenekim/614
  • @parenteau

Up: Michael Lindon: Bayesian Data Analysis of Nonparametric Models in Clojure

  • @atankanow: #sketchnote for @ericnormand's "All I needed for FP I learned in HS Algebra" #clojure_conj https://t.co/E7OoJLdpaY
  • @atankanow: #sketchnote for @ericnormand's "All I needed for FP I learned in HS Algebra" #clojure_conj https://t.co/E7OoJLdpaY

Up: Joyce Xu: Building Machine Learning Models with Clojure and Cortex

  • Xu: “I came from Python world” (crowd cheers)
  • Xu: “Cortex is a machine learning library build on Clojure; what is machine learning, why Clojure, how to use Cortex
  • @RealGeneKim: #clojure_conj Xu: Diff between AI vs Machine Learning vs Deep Learning https://t.co/dDzlJYGHvC
  • Xu: “data / labels -> algorithm -> model”
  • Xu: “data -> model -> labels”
  • @RealGeneKim: #clojure_conj Best definition of neural net I’ve ever seen: Xu: universal function approximator: derive f in f(). https://t.co/SwSFTD9haS
  • Xu: “TensorFlow created by Google: Torch by Facebook:
  • @RealGeneKim: #clojure_conj Xu: “This is 99% of machine learning community: TensorFlow created by Google: Torch by Facebook, etc” https://t.co/3I5qXpwo1l
  • Xu: “Big problem w/ML: load data, clean data, configure, shuffle data, augment data, lots of transforms; composability of function pipeline is super-useful
  • Xu: “Why Clojure: Function Composition and Data Processing; 90% of machine learning effort is the data ETL, not building models”
  • Xu: “Lazy sequences;
  • Xu: Ha! Deep Learning: What I actually do: “from theano import *”
  • Xu: “1. Load and process data; define minimal description of what neural network looks like; build full network from model and train it on data
  • Xu: “Credit card detection use case: how much $ do you spend, when, how frequently, where”
  • @RealGeneKim: #clojure_conj Xu: “Credit card detection use case: how much $ do you spend, when, how frequently, where” https://t.co/1QZsdYW1y4
  • Xu: “2) model data; 3) train”

TODO

  • After Save Scribe: shift focus to editor
  • After Pull into Notes: shift focus to editor
  • After Tweet: shift focus to editor
  • keyboard accelerator: Cmd E: shift focus to editor

  • A counter point to @richhickey 's #clojure_conj talk. (I've not watched it yet) https://twitter.com/hmemcpy/status/918426333415399424