Clojure/West 2016: Innovative Tasks, Sessions, and Discussions

Table of Contents

Clojure/west 2016

Sessions

Specter: Powerful and Simple Data Structure Manipulation, Nathan Marz

https://github.com/nathanmarz/specter

  • simple data structures allow for threaded macro passes through map
  • complex graphs will be much more difficult
  • map of vectors of maps
  • vector in vector out
  • define MAP-VALS
  • signature become a set of transformation based on the data structures
  • navigation through a datascructure is it's own structure
  • navigate then transformation as a general approach
  • adding to set is navigating to an empty subset
  • navigation to a subsequence
  • filterer srange
  • precompilation of the selction path before the transformation can improve performation

Reasonable approach for a general solution of graph navigation.

Managing One of the World's Largest Clojure Code Bases, Donevan Dolby

  • Boeing: fuel effeciency and gate turns (short-haul)
  • New sensors in the 737
  • Architecture
  • Data managment: functional reactive programming
  • DSL parsing; instaparse
  • JVM already installed

Issues:

  • Circular dependencies between Trapperkeeper serivces between message
  • Messaging: publisher phase publisher logic go through a notification channel via pub/sub then to several taps with filters

Validation:

  • identifying memory leaks is critical since minimum uptime is 7 days on a small footprint
  • YourKit https://www.yourkit.com/

Consulting:

  • Transducers
  • in 1.7 there were a number of threading macros passe through (map #())
  • in 1.8 this now becomes (into [])
  • move from clojure.lang.PersistentQueue
  • volitility in the ecosystem (e.g., Lamina, hug)
  • mustache templates couldn't keep up with large files
  • wrap library use in case the library needs to be swapped
  • new developer onboarding difficult for OO programmers
  • immmutable state difficult initially for new developers

Process:

  • consiseness helped with code reviews
  • no need to have Clojure developers on the simulator component for the REST end-point
  • deftest and assertion checks
  • only mandated requirement was 70% code coverage
  • pairing was the key way to get new engineers onboarded
  • schema or type checking

Creating DSLs - A tale of spec-tacular success and failure, Claire Alvis

defrecord/deftype in Clojure and ClojureScript, Michał Marczyk

  • defrecord
  • records behave like maps
  • get, assoc, dissoc all provide access
  • don't use protocols
  • defrecord can be used to contrain the code
  • reify and specify
  • everything in ojureScript is a deftype

Building a Legal Data Service with Clojure, Jonathan Boston, Caleb Phillips

  • eDiscovery
  • Lawyers filer (redaction of private information, company secrets, client)
  • Produce documents

Requires that one import then search documents.

Constraint checks:

  • retries in queue
  • disk space
  • monitoring
  • cleanup on tasks
  • monitoring

Core features:

  • ClojureScript
  • React/OM
  • DataScript
  • core/async

Issues:

  • expensive remote calls
  • multiple remote calls
  • overfetching
  • synchronizing loads

Tests:

Model based programming in PAMELA, Tom Marble, Paul Robertson

Visualization

Fast full stack testing in om.next, Jack Dubie

The Joys and Perils of Interactive Development, Stuart Sierra

Unsessions

Datalog all the way down, Christopher Small

Caching half a billion user transactions, Priyatam Mudivarti

Hash Maps: more room at the bottom, Peter Schuck

http://michael.steindorfer.name/publications/oopsla15.pdf

  • 32 nodes
  • Node has a 32 elements
  • Take the hash of "foo" then partition
  • (partition 2 (str ( hash "foo")))
  • Issue: complexity of key value pair or sub node reference

CIDER: Inside the Brewery, Bozhidar Batsov

One Million Clicks per Minute with Kafka and Clojure, Devon Peticolas

Types are like the Weather, Type Systems are like Weathermen, Matthias Felleisen

Author: Jason Walsh

j@wal.sh

Last Updated: 2024-08-02 10:11:12