Clojure/conj 2019: Topics, Tasks, and Tools for Clojure Development

Table of Contents

1. Clojure/conj 2019

Durham Convention Center

2. Tasks

2.1. Cider

clj-refactor sayid.el cider-hydra clomacs helm-cider squiggly-clojure cider-eval-sexp-fu kaocha-runner emidje

3. Schedule

3.1. Derek Troy-West; Follow the Data: Product Development in Clojure

  • Immutable time-series compute
  • Kafka as aligned with core Clojure properties
  • Use as a data-oriented programming framework
  • consume - transform - compute
  • Use simulation as core to the system
  • Update brokers, groups, topics to simulate load
  • Sente for websockets passing data from topic updates to browser
  • operator-io/shortchut

3.2. Ariel Ortiz; The Hitchhikers Guide to Multiparadigm Programming

3.2.1. Functional

  • recursive
(defn fib [n]
"Fibonocci"
)
  • loop/recur
(defn fact-v2 [n]
(reduce *' (range 1 n))
  • range
(defn fact-v2 [n]
(reduce *' (range 1 n))
  • prefer sequence API over recursion or loop/recur

3.2.2. Imperative

3.2.3. Parallel

Use `pmap` to split into

[[0 (/ n 2)] [(/ n 2] (inc n)]]

3.2.4. Meta

Using macros to debug stacks for the calls for interative approach.

3.2.5. Logic

Mini-kanren for creating fresh n-dec and fact-n-dec.

See the Reasoned Schemer for the example.

(logic/run 1 [q] (fact-v7 q 120))

3.3. Lucas Cavalcanti; Complex Made Bearable

  • Kafka
  • Generative tests
  • Clojure spec

3.4. Santiago Gepigon III; piggy: Specs for Breaking Changes

Provides the ability to see if the input args are more restrictive (subset) or the return more expansive (super).

3.5. J.D. Hollis; Datomic with Terraform

digraph G {
init -> workspace -> plan -> apply -> plan;
}


  • Setup has modules for each of the environment
  • datomiccopute and datomicstorage is manual
  • arbitrary comans with nullresource
  • change detected as md5 hash for code or configuration change
  • release region, env, group

3.5.1. Providers

  • aws
  • inboundbastion
  • datomic
  • sqs

3.5.2. Output

  • security gruop
  • code bucket
  • deploy state machine

3.6. Dragan Djuric; Interactive Programming for Artificial Intelligence

3.7. Stuart Halloway; Sherlock Holmes, Consulting Developer

3.8. Gene Kim; Love Letter To Clojure: And A Datomic Experience Report

3.9. Chris Nuernberger; Extending Clojure with Python

(def np (py/module-import "numpy"))

3.10. Chris Oakman; Probabilistic Record Linkage of Hospital Patients

  • https://github.com/oakmac/record-linking-talk
  • Create a test bed of [User] for name, recordid, ssn, address
  • Create (patient-ids-match? [user1 user2])
  • Establish a deterministic algorithm
  • Create match and unmatch probabilities (Fellegi-Sunter)
  • clojure.spec for evaluating data transformations
  • Create match probability for
{
 :match-prob .8
 :unmatch-prob .1
}

(def default-match [e1 e2]
  "Default check is pure equality"
  (= e1 e2))
(def name-match [n1 n2]
  "Split phonetically and match based on phonemes"
  (double-metaphone n1 n2))

  • Create a distribution for the thresholding
  • Put questionables into a DLQ
  • Use ML for finding the match weights for each of match and unmatch probabilities

3.11. Pier Federico Gherardini & Ben Kamphaus; Clojure Where it Counts: Tidying Data Science Workflows

3.12. Eno Compton & Tyler van Hensbergen; Goodbye YAML: Infrastructure as Code in Clojure

  • Clojure and AWS
  • Lambdas
  • AWS CloudFormation

3.12.1. Example: Event Consumer

digraph G  {
iam -> lambda;
}

3.12.2. Alternative: TypeScript AWS CDK

3.13. Philipp Meier; A magic trashcan - microprocessors for full stack developers

  • Types from the physical world
  • Lua for embedded systems
  • Various hardware options: Ada, Arduino
  • Fennel

3.14. Sara Kimmich; Rapid Prototyping for Software Development

  • use 20 minutes for the expected prototype
  • experiment early
  • check for assumptions early
  • have a next step forward
  • real enough to feel
  • favor observable vs. conjecture
  • tractable vs. intractable problem statements

3.15. Ulrich Schaechtle; Inference QL: Al for data engineers in Clojure

The goal here would be to determine the relationships between

Example: MgrIdiot predicts CareerSat

Generate answers for any of the virtual types of developer given KnowsClojure.

  • count model (for columns count both then )
  • conditional count model
  • bayesian
(simulate count-model {} 1)

3.16. Alex Miller; Composable Tools

4. External

4.1. Dinner

4.2. UNSESSIONS/LIGHTNING TALKS

4.3. PARTY; Boxcar Arcade

Author: Jason Walsh

Created: 2024-08-12 Mon 20:45

Validate