SlideShare a Scribd company logo
1 of 107
@RealGeneKim
Session ID:
Gene Kim
My Love Letter to Clojure:
And A Datomic Experience Report
@RealGeneKim
Why I’m Presenting and Who It’s For
 Alex Miller emailed me if I’d be willing:
 Share why I’m so grateful to Clojure
 Present an experience report on Datomic
 Intended audience:
 People who have been afraid to jump into Datomic,
because it’s so alien and unfamiliar (perhaps even
more alien than Clojure!)
 People who want to spread more widely the use of
Datomic, or make it easier to explain/adopt/use — I’m
part of that target market
@RealGeneKim
Definition: Experience Report
 Noun
 “Experience report is a paper written by a person (persons)
who participated in the work completed (being completed) in
a context of a real-life organization”
 In the form of: here’s what I wanted to do, here’s what
happened, here’s what I learned, here’s problem that still
remains
 What’s they’re also good for
 Closely resemble the scientific method (hypothesis, test
hypothesis)
 Helps uncover demographics and psychographics (goals
and ideals) of a population
Source: http://processplatsen.ibissoft.se/node/72
@RealGeneKim
Agenda
 Who am I, what I’ve learned in the DevOps community,
and why I’m so grateful to Clojure and the Clojure
community (15m)
 Datomic Experience Report (25m)
 What I’ve used Clojure for
 Why Datomic scared me away
 What made me finally take the plunge
 What it felt like to solve the problem
 Help I’m Looking For (5m)
@RealGeneKimSource: https://itrevolution.com/love-letter-to-clojure-part-1/
@RealGeneKim
2013 2016 2017
@RealGeneKim
My Definition of DevOps
The architecture, technical practices, and cultural norms
that enable us to…
increase our ability to deliver applications and services...
quickly and safely, which enables rapid experimentation
and innovation, and the fastest delivery of value to our
customers…
while ensuring world-class security, reliability, and stability...
…so that we can win in the marketplace.
@RealGeneKim
Another Definition of DevOps
Better Value,
Sooner, Safer, Happier
Jon Smart, Partner, Enterprise Agility, Deloitte
@RealGeneKim
State of DevOps Research
 State of DevOps Report (2013-2019)
 Dr. Nicole Forsgren, Jez Humble, Gene
Kim
 Cross population study spanning over 35K
respondents
 Identified “IT performance” and the factors
that predicts:
 Deployment Frequency
 Deployment Lead Time
 Deploy Success Rate
 Mean Time to RestoreSource: Google/DORA: 2018 State Of DevOps Report:
https://cloudplatformonline.com/2018-state-of-devops.html
@RealGeneKim
Elite Low Difference
Deployment Frequency
On-demand
(multiple times per day)
Monthly or quarterly 208x
Deployment Lead Time < 1 hour 1 day to 1 week 2,555x
Deploy Success Rate 0-15% 46-60% 7x
Mean Time to Restore < 1 hour 1 week to 1 month 2,604x
Elite vs. Low Performers
Source: Google/DORA: 2019 State Of DevOps Report: https://cloud.google.com/devops/state-of-devops/
@RealGeneKim
Elite Low Difference
Deployment Frequency
On-demand
(multiple times per day)
Monthly or quarterly 208x
Deployment Lead Time < 1 hour 1 week to 1 month 106x
Deploy Success Rate 0-15% 46-60% 7x
Mean Time to Restore < 1 hour 1 week to 1 month 2,604x
Elite vs. Low Performers
Source: Google/DORA: 2019 State Of DevOps Report: https://cloud.google.com/devops/state-of-devops/
@RealGeneKim
Elite Low Difference
Deployment Frequency
On-demand
(multiple times per day)
Monthly or quarterly 208x
Deployment Lead Time < 1 hour 1 week to 1 month 106x
Deploy Success Rate 0-15% 46-60% 7x
Mean Time to Restore < 1 hour 1 week to 1 month 2,604x
Elite vs. Low Performers
Source: Google/DORA: 2019 State Of DevOps Report: https://cloud.google.com/devops/state-of-devops/
@RealGeneKim
Elite Low Difference
Deployment Frequency
On-demand
(multiple times per day)
Monthly or quarterly 208x
Deployment Lead Time < 1 hour 1 week to 1 month 106x
Deploy Success Rate 0-15% 46-60% 7x
Mean Time to Restore < 1 hour Less than one day 2,604x
Elite vs. Low Performers
Source: Google/DORA: 2019 State Of DevOps Report: https://cloud.google.com/devops/state-of-devops/
@RealGeneKim
High Performers Are More Secure And
Controlled
2x 29%
less time spent
remediating
security issues
more time spent
on new work
Source: Google/DORA: 2018 State Of DevOps Report: https://cloudplatformonline.com/2018-state-of-devops.html
@RealGeneKim
High Performers Win In The Marketplace
2x 2xmore likely to
exceed profitability,
market share &
productivity goals
more likely to achieve
organizational and
mission goals, customer
satisfaction, quantity &
quality goals
Source: Google/DORA: 2018 State Of DevOps Report: https://cloudplatformonline.com/2018-state-of-devops.html
@RealGeneKim
High Performers Win In The Marketplace
2.2xhigher employee
Net Promoter Score
50%higher market
capitalization growth
over 3 years*
Source: Google/DORA: 2018 State Of DevOps Report: https://cloudplatformonline.com/2018-state-of-devops.html
@RealGeneKim
The Opposite Of
Technical Debt Is…
@RealGeneKim
When we can safely, quickly,
reliably, securely (and happily)
achieve all the goals, dreams and
aspirations of our business…
@RealGeneKimSource: https://itrevolution.com/love-letter-to-clojure-part-1/
@RealGeneKim
Clojure Brought Joy Of Coding Back
 For decades, I self-identified as an Ops person…
 I now self-identify as a developer
 Development is so fun, and these days, you can do
miraculous things with so little effort
 I wrote about my 30 year habits of self-sabotaging
my own code. One app I’ve written three times:
 3000 lines of Objective C
 1500 lines of TypeScript/React
 500 lines of ClojureScript/Re-frame
@RealGeneKim
Cumulative LoC Written: Three Decades
“I’m going to make the case
that me learning Clojure is
sort of like Encino Man
learning to drive—you know,
the movie about the
caveman who was frozen in
ice and wakes up in the
completely changed,
modern world.”
Source: https://itrevolution.com/love-letter-to-clojure-part-1/
Little coding
@RealGeneKim
@RealGeneKim
The Problems That Still Remain
 Absence of all the invisible structures needed to
enable developer productivity
 The orthogonal problem of getting data from
where it resides to where it needs to be used
 Strong opposition to support new ways of
working
 Ambiguity on what behaviors needed to support
during a transformation
@RealGeneKim
Rich Hickey (STL 2011, JavaOne 2015)
@RealGeneKim
The Five Ideals
1. Locality and Simplicity
2. Focus, Flow, and Joy
3. Improvement of Daily Work
4. Psychological Safety
5. Customer Focus
@RealGeneKim
Session ID:
Ideal #1:
Locality and Simplicity
@RealGeneKim
The First Ideal: A Measure
 Bus factor
 Lunch factor
@RealGeneKim
How Many People Do You Need To Feed?
 Two pizza team
 Feeding everyone in the building
 Schedule lunch with 43 different people
@RealGeneKim
The First Ideal: Code
 Ideal: anyone can implement what they need by
looking at one file or module, and make the
needed change
 Kubernetes sidecars
 Spring (http-retry, Dependency Injection)
 Aspect Oriented Programming
 Not Ideal: to make your needed change, you
have to understand and change all the files and
modules
@RealGeneKim
The First Ideal: Code
 Ideal: changes can be independently
implemented and tested, isolated from other
components (composability)
 Not Ideal: in order for changes to be
implemented and tested, the entire system must
be present (e.g., integrated test environment)
@RealGeneKim
The First Ideal: Organization
 Ideal: every team has the expertise, capability
and authority to satisfy customer needs
 Not Ideal: in order to satisfy customer needs,
every team must escalate up two levels (and over
two, and down two)
@RealGeneKimSource: Manu Cornet: Bonkersworld
@RealGeneKimSource: Manu Cornet: Bonkersworld
@RealGeneKim
Session ID:
Ideal #2:
Focus, Flow, and Joy
@RealGeneKim
Why Functional Programming
 The famous French philosopher Claude Lévi-
Strauss would say of certain tools, ‘is it good to
think with?’
@RealGeneKim
Interestingly, It Portends Future Of Ops
 Core concepts
 Immutability
 Pure functions
 Composability
 Look at…
 Docker, Docker Compose
 Kubernetes
 Kubernetes sidecars
 Event streams: Apache Kafka
 Git
@RealGeneKim
The Second Ideal: Focus and Flow
 Ideal: your energy and time is focused on solving
the business problem, and you’re having fun
 Not Ideal: all your time is spent trying to solve
problems you don’t even want to solve (e.g.,
YAML files, Makefile and spaces in filenames,
bash)
@RealGeneKim
Never Have I Valued Infrastructure More
 Things I detest now
 Everything outside of my application
 Connecting anything to anything
 Updating dependencies
 Secrets management
 Bash
 YAML
 Patching
 Building kubernetes deployment files (mostly by Googling)
 Why my cloud costs are so high
@RealGeneKim
The Value Of Platforms
 Enable developer productivity
 Self-service
 On-demand
 Immediacy and fast feedback
 Focus and flow
 Joy
 Monitoring, deployment, environment creation,
security scans, orchestration…
@RealGeneKim
Two Types Of Learning
● Procedural Learning
● One-shot Learning
Source: Dr. Mihaly Csikszentmihalyi
@RealGeneKim
In Clojure Love Letter
 I want to tell a story that has the same ending as
Rich Hickey’s “If I had to keep programming in
C++ and Java, I think I would need to find a new
career.”
 I’ve heard similar things many times…
 I wondered if they were a bit… Hysterical? Manic?
Melodramatic?
@RealGeneKim
 Rich Hickey
 “Solve problems, not solve puzzles”
 Category theory
 Me
 Figuring out how to escape spaces in filenames inside
of Makefile
 SQL
More Examples
@RealGeneKim
Session ID:
Experience Report:
Or When I Decided I Was Done
With SQL *
@RealGeneKim
A Book Tracking Application
 Four years ago, Tom Limoncelli (StackOverflow) and
I wrote some tools to track sales ranks from various
e-commerce sites:
 Python
 Ruby and ActiveRecord
 MySQL
 Some bash, Makefiles, and JSON files
 Kubernetes
 Cron (or K8S CronJobs or Rundeck)
@RealGeneKim
E-commerce
Site 1
E-commerce
Site 1
2015
User
Google
StackDriver
E-commerce
Sites...
API Retrieve
@RealGeneKim
E-commerce
Site 1
E-commerce
Site 1
2016-2017
API Retrieve
ActiveRecord/
MySQL
Dispatcher
User
Google
StackDriver
Slack
Hosted
Graphite
E-commerce
Sites...
Cloud SQL
MySQL
Bash script
@RealGeneKim
API Retrieve
ActiveRecord/
MySQL
Dispatcher
E-commerce
Site 1
E-commerce
Site 1
2016
User
Google
StackDriver
Hosted
Graphite
Slack
Hosted
Graphite
E-commerce
Sites...
Bash script
- Program error?
- Environment error?
- Interface error?
- 503 enforcement?
Cloud SQL
MySQL
@RealGeneKim
3GB Docker Image / Kubernetes (GKE)
E-commerce
Site 1
E-commerce
Site 1
2016-2018
User
Hosted
Graphite
Slack
Hosted
Graphite
E-commerce
Sites...
Cloud SQL
MySQL
Bash script
API Retrieve
Get Reviews
(Scrapy)
ActiveRecord/
MySQL
Dispatcher
@RealGeneKim
100MB Docker Image / Kubernetes (GKE)
E-commerce
Site 1
E-commerce
Site 1
2019: 10x LoC
Reduction
API Retrieve
Dispatcher
User
Slack
E-commerce
Sites...
Cloud SQL
MySQL
Google Pub/Sub
Get Reviews
Google Data
Studio
@RealGeneKim
Google Data Studio Is Amazing
@RealGeneKim
Sales Rank (lower is better)
Unicorn Project: Kindle
Phoenix Project: Kindle
Yay! Promotion activities are working!
@RealGeneKim
But I’m Not Very Good At Databases…
WHAT HAPPENED?!?
Oops. 2 weeks of all new records with NULL date/times.
ARGH! Analyzing this critical launch period is why I wrote the app in the first
place, and I was totally blind to what happened!!!
@RealGeneKim
How Bad Am I At Databases
 I wrote an SQL database as an undergraduate CS
student
 I’ve spent time as an (unwilling) Oracle DBA
 I’ve used MySQL for 15 years
 I’m still scared of schema changes and database
migrations
 I almost never get database schema changes right
 (insert screenshot of 10 git commits to fix Ruby
ActiveRecord migrations)
@RealGeneKim
I am afraid of MySQL
because I’m so bad at it
@RealGeneKim
What Is The One Question That
Predicts Performance With
Startling Accuracy?
@RealGeneKim
“To what degree do we fear
doing deployments?”
Source: Puppet Labs 2015 State Of DevOps: https://puppetlabs.com/2015-devops-report
@RealGeneKim
My Final MySQL Indignity
 This query takes 8.1s!!!
 I need this for each book I’m
tracking — for 150 books, that’s
2 minutes!
 No problem, I’ll just run queries on a
background thread…
 Or maybe cache results, or use
Firebase Realtime DB? (and now I
have two problems)
@RealGeneKim
The Problems That Still Remain
Source: https://twitter.com/b0rk/status/1179054952938913794
@RealGeneKim
The Problems That Still Remain
@RealGeneKim
The Problems That Still Remain
@RealGeneKim
Adding Indices Did Not Work
 CREATE INDEX time ON salesranks(time);
 CREATE INDEX book_id ON
salesranks(book_id);
 CREATE INDEX id ON books(id);
 ALTER TABLE salesranks
MODIFY COLUMN
time DATETIME NOT NULL;
@RealGeneKim
😱 😱
@RealGeneKim
😱 😱
@RealGeneKim
😱 😱 😱 😱
@RealGeneKim
😱 😱 😱 😱 😱 😱
@RealGeneKim
🤮🤮🤮 When I Knew I Was Done With
MySQL (Because I’m So Bad At It)
BEFORE: 8,100 ms
@RealGeneKim
🤮🤮🤮
@RealGeneKim
New Rule:
No More SQL, Because
I Am Too Stupid To Use It…
(And NoSQL, Too…)
@RealGeneKim
Clojure helped me realized the
Second Ideal
MySQL deprived me of it
(Because I’m so bad at it)
@RealGeneKim
Enter Datomic
@RealGeneKim
Story Line
 For 2 years, I’ve wanted to extend database
schema to encompass notion of “publisher” —
but conclusion was always “maybe next year”
 Datomic looked so interesting: kept reading and
watching videos
@RealGeneKim
Great Articles on Datomic
 Carin Meier:
Conversations With
Datomic (Part 1 and 2)
 Datalog is intimidating,
but its link to core.logic
and Prolog link made it
seem incredibly
worthwhile
 I’m seeking a more
declarative mode of
thinking…
 OTOH: Schema was…
whoa.. Difficult for me to
understand…
@RealGeneKim
@RealGeneKim
Book Publisher: But Never Used In Anger
@RealGeneKim
Definition: “Use In Anger”
 “To use in anger”:
“In a military context, 'to fire in anger' means to
shoot for a purpose in war. For example, a
submarine that 'fires in anger' shoots missiles at
an enemy ship.
“Shots fired in anger are never just for practice;
they're fired to deliberately cause damage or
harm.”
Source: http://www.bbc.co.uk/worldservice/learningenglish/radio/specials/1837_aae/page22.shtml
@RealGeneKim
Definition: “Use In Anger”
 “To use in anger”:
“In a military context, 'to fire in anger' means to
shoot for a purpose in war. For example, a
submarine that 'fires in anger' shoots missiles at
an enemy ship.
“Shots fired in anger are never just for practice;
they're fired to achieve a real mission
objective.”
Source: http://www.bbc.co.uk/worldservice/learningenglish/radio/specials/1837_aae/page22.shtml
@RealGeneKim
An Urgent Mission: Use In Anger: Book Launch
 Book and product launches are a game of activations
 In the Twitter relationship graph around me, where were
points of maximum amplification?
 Among my friends, who had the most friends and followers?
 Among my followers, who had the most friends and followers?
 For a set of people, who were common friends and followers?
 I looked for many weeks for commercial offerings, but
didn’t find any — often after a week of waiting before my
account became fully activated.
 More on this later…
@RealGeneKim
Initial Challenges And Intimidating Things
 Okay, I think I can do this, with Hodur helping create
schemas
 Datomic Cloud made it feasible — my one attempt to
install Datomic and license 1.5 years ago was not so
good. I never got past the first page. (It didn’t help
that I didn’t even know what a classpath was.)
 I’ve never used anything in AWS besides EC2.
Involved using things I’ve never used (DynamoDB,
API Gateway, AWS Lambda, CloudWatch)
@RealGeneKim
This Project Was Important To Me
 I usually love experience reports that describe “here’s
how we scaled our multiuser chat service to 200MM
simultaneous users overnight without a hitch”
 My experience report is different — it was just for me,
it never even ran anywhere besides my laptop
 It was important to me and time-critical
 I searched weeks for a tool that could do it for me
 It completely changed how I think about databases, and
what I expect for one
@RealGeneKim
Most Amazing Thing Ever
@RealGeneKim
4 Chapters On Datomic
 Jeremy Anderson
 Michael Gaare
 Justin Holguín
 Nick Bailey
 Timothy Pratley
@RealGeneKim
Schema Changes Were So Easy…
@RealGeneKim
First Goals
 Used chbrown’s fantastic “twttr” library to access Twitter API
 Retrieve details for a Twitter account
 Retrieve details about all my friends and followers
 Uh oh… Rate limits…
 Final N = 500K+
 Only 15 requests allowed every 15 minutes (200 users returned upon each request)
 It took 96 hours (4 days), but this was unknowable until program finally finished running
 I remember writing/running programs like this; so many things can go wrong
 Inability to resume after unexpected program termination
 Unwanted data duplication
 Unwanted retrieval duplication And THIS is why it takes multiple days for
social media tools to work after sign-up
@RealGeneKim
Calling Twitter API w/Rate Limits
@RealGeneKim
Initial Challenges
 Datomic Cloud made it even feasible — my one
attempt to install Datomic and license 1.5 years
ago was not so good. I completed only first 3
steps
 I’ve never used anything in AWS besides EC2.
Involved using things I’ve never used
(DynamoDB, API Gateway, AWS Lambda,
CloudWatch)
 Video tutorials were great
@RealGeneKim
SUCCESS
 In a week, had collected 500K users, able to
execute all desired queries
 Focused on the top people who have got the
word out about DevOps and Phoenix Project
 Copied into Google Sheet and operationalized
@RealGeneKim
Sales Rank (lower is better)
Unicorn Project: Kindle
Phoenix Project: Kindle
Yay! Promotion activities are working!
@RealGeneKim
Session ID:
@RealGeneKim
Problems Encountered
@RealGeneKim
Problems Encountered: Out of Memory
 String case insensitive comparison consumed all
memory (remember, I never really used Java)
@RealGeneKim
AWS CloudWatch: what is all this?!
@RealGeneKim
Observations
 Queries were so easy
 It felt like the database was part of my program
 Immediacy and fast feedback was incredible
 Schema changes were incredibly easy and
painless
 Hodur schema changes are amazing
 Ghostwheel for type checking so incredible
@RealGeneKim
If I Could Wave A Magic Wand
 Help upgrading (I’m so scared)
 Better understanding what all the CloudWatch
events mean and whether I should care
 Ideal use case
 Access it from apps in Heroku
 Not have to make change API Gateway each time
 (I got one set of Datomic calls working in Heroku,
thanks to Clojurians Slack)
@RealGeneKim
Exposing Datomic as JDBC: Whoa…
 This would be
amazing
 I could connect
Datomic into Google
Data Studio via JDBC
@RealGeneKim
Dr. John Launchbury
 One of earliest collaborators w/Dr. Simon Peyton-
Jones on Glasgow Haskell Compiler (ghc)
@RealGeneKim
 Lessons
 Define inputs
and output types
 Define what your
terminating case
 Use
gnl/ghostwheel
@RealGeneKim
Session ID:
The Opportunity: Study the Java Maven Ecosystem!
@RealGeneKim
Session ID:
The Opportunity: Study the Java Maven Ecosystem!
Clojure
Haskell
@RealGeneKim
Dr. Stephen Magill (Galois)
Gene Kim (IT Revolution)
Bruce Mayhew (Sonatype)
Gazi Mahmud (Sonatype)
Brian Fox (Sonatype, Maven
Co-Inventor)
Thanks also to:
Kevin Witten, Derek Weeks,
and Matt Howard
@RealGeneKim
2020 goals
 Use with SSC
 Describe project and data set sizes
 100MM records
 Components, dependencies, updates, and
vulnerabilities
@RealGeneKim
Dr. Stephen Magill’s Endless SQL
@RealGeneKim
Session ID:
@RealGeneKim
Session ID:
@RealGeneKim
Session ID:
@RealGeneKim
Quote
 "If you think that ‘software project’ is
pronounced ‘slow-moving train wreck,’ you
should read The Unicorn Project. Gene Kim
shares the hilarious and sad ways that people
are ground down by failing projects -- and he
has a proven plan to fix it."
-- Stuart Halloway, President, Cognitect, Inc.
 “This book describes how to rescue
developers from the tundra of technical debt
and bureaucracy that plagues the most
important missions in almost every
enterprise.”
— Eric Normand, PurelyFunctional.tv
@RealGeneKim
In Conclusion
 THANK YOU! Clojure brought the joy of coding
back into my life!
 And Datomic, even though it looks even more
alien than Clojure, made me so dissatisfied with
SQL databases, I wondered how I’d survive
without databases in my life.
And like Clojure, I’m amazed at how much I can
do with Datomic, easier, safer, and happier!
@RealGeneKim
Help I’m Looking For
 Help Datomic win the bake-off for SSC Analysis, and then
help to make sure I don’t screw it up (me being the
Datomic expert on the team seems like a recipe for
disaster)
 I’m interested in analyzing the clojars ecosystem and
data, too.
 I’m interested in wondering what markers there are that
APIs are stable and won’t break consumers.
 I’d love to work with anyone on getting more compile-time
checking of types — spectrum? clj-kondo?

More Related Content

What's hot

2013 Velocity DevOps Metrics -- It's Not Just For WebOps Any More!
2013 Velocity DevOps Metrics -- It's Not Just For WebOps Any More!2013 Velocity DevOps Metrics -- It's Not Just For WebOps Any More!
2013 Velocity DevOps Metrics -- It's Not Just For WebOps Any More!Gene Kim
 
DevOps State of the Union 2015
DevOps State of the Union 2015DevOps State of the Union 2015
DevOps State of the Union 2015Ernest Mueller
 
2014 State Of DevOps Findings! Velocity Conference
2014 State Of DevOps Findings! Velocity Conference2014 State Of DevOps Findings! Velocity Conference
2014 State Of DevOps Findings! Velocity ConferenceGene Kim
 
Keeping The Auditor Away: DevOps Audit Compliance Case Studies
Keeping The Auditor Away: DevOps Audit Compliance Case StudiesKeeping The Auditor Away: DevOps Audit Compliance Case Studies
Keeping The Auditor Away: DevOps Audit Compliance Case StudiesGene Kim
 
ServiceNow ITIL at Ludicrous Speeds - Rugged DevOps
ServiceNow  ITIL at Ludicrous Speeds - Rugged DevOpsServiceNow  ITIL at Ludicrous Speeds - Rugged DevOps
ServiceNow ITIL at Ludicrous Speeds - Rugged DevOpsGene Kim
 
Winnipeg ISACA Security is Dead, Rugged DevOps
Winnipeg ISACA Security is Dead, Rugged DevOpsWinnipeg ISACA Security is Dead, Rugged DevOps
Winnipeg ISACA Security is Dead, Rugged DevOpsGene Kim
 
PuppetConf2012GeneKim
PuppetConf2012GeneKimPuppetConf2012GeneKim
PuppetConf2012GeneKimGene Kim
 
Kim itSMF New England: ITIL at Ludicrous Speeds - Rugged DevOps 6a
Kim itSMF New England: ITIL at Ludicrous Speeds - Rugged DevOps 6aKim itSMF New England: ITIL at Ludicrous Speeds - Rugged DevOps 6a
Kim itSMF New England: ITIL at Ludicrous Speeds - Rugged DevOps 6aGene Kim
 
Infosec at Ludicrous Speeds - Rugged DevOps
Infosec at Ludicrous Speeds - Rugged DevOps Infosec at Ludicrous Speeds - Rugged DevOps
Infosec at Ludicrous Speeds - Rugged DevOps Gene Kim
 
Kim IT Pro Forum Eugene: IT at Ludicrous Speeds - rugged dev ops
Kim IT Pro Forum Eugene: IT at Ludicrous Speeds - rugged dev opsKim IT Pro Forum Eugene: IT at Ludicrous Speeds - rugged dev ops
Kim IT Pro Forum Eugene: IT at Ludicrous Speeds - rugged dev opsGene Kim
 
DevOps Kanban Meet Up 3/22/12
DevOps Kanban Meet Up 3/22/12DevOps Kanban Meet Up 3/22/12
DevOps Kanban Meet Up 3/22/12Gene Kim
 
When IT Fails The Business Fails...
When IT Fails The Business Fails...When IT Fails The Business Fails...
When IT Fails The Business Fails...Gene Kim
 
SecureWorld - Communicating With Your CFO
SecureWorld - Communicating With Your CFOSecureWorld - Communicating With Your CFO
SecureWorld - Communicating With Your CFOGene Kim
 
2012 Velocity London: DevOps Patterns Distilled
2012 Velocity London: DevOps Patterns Distilled2012 Velocity London: DevOps Patterns Distilled
2012 Velocity London: DevOps Patterns DistilledGene Kim
 
Limited WIP Meeting presentation - The Phoenix Project book review
Limited WIP Meeting presentation - The Phoenix Project book reviewLimited WIP Meeting presentation - The Phoenix Project book review
Limited WIP Meeting presentation - The Phoenix Project book reviewRudiger Wolf
 
SecureWorld Kim - Infosec at Ludicrous Speeds - Rugged DevOps 6a
SecureWorld   Kim - Infosec at Ludicrous Speeds - Rugged DevOps 6aSecureWorld   Kim - Infosec at Ludicrous Speeds - Rugged DevOps 6a
SecureWorld Kim - Infosec at Ludicrous Speeds - Rugged DevOps 6aGene Kim
 
Tui the phoenix project book review
Tui the phoenix project book reviewTui the phoenix project book review
Tui the phoenix project book reviewRudiger Wolf
 
Top Lessons Learned From The DevOps Handbook
Top Lessons Learned From The DevOps HandbookTop Lessons Learned From The DevOps Handbook
Top Lessons Learned From The DevOps HandbookXebiaLabs
 
Why Everyone Needs DevOps Now - Gene Kim
Why Everyone Needs DevOps Now - Gene KimWhy Everyone Needs DevOps Now - Gene Kim
Why Everyone Needs DevOps Now - Gene KimDynatrace
 
Keynote: The Phoenix Project: Lessons Learned - PuppetConf 2014
Keynote: The Phoenix Project: Lessons Learned - PuppetConf 2014Keynote: The Phoenix Project: Lessons Learned - PuppetConf 2014
Keynote: The Phoenix Project: Lessons Learned - PuppetConf 2014Puppet
 

What's hot (20)

2013 Velocity DevOps Metrics -- It's Not Just For WebOps Any More!
2013 Velocity DevOps Metrics -- It's Not Just For WebOps Any More!2013 Velocity DevOps Metrics -- It's Not Just For WebOps Any More!
2013 Velocity DevOps Metrics -- It's Not Just For WebOps Any More!
 
DevOps State of the Union 2015
DevOps State of the Union 2015DevOps State of the Union 2015
DevOps State of the Union 2015
 
2014 State Of DevOps Findings! Velocity Conference
2014 State Of DevOps Findings! Velocity Conference2014 State Of DevOps Findings! Velocity Conference
2014 State Of DevOps Findings! Velocity Conference
 
Keeping The Auditor Away: DevOps Audit Compliance Case Studies
Keeping The Auditor Away: DevOps Audit Compliance Case StudiesKeeping The Auditor Away: DevOps Audit Compliance Case Studies
Keeping The Auditor Away: DevOps Audit Compliance Case Studies
 
ServiceNow ITIL at Ludicrous Speeds - Rugged DevOps
ServiceNow  ITIL at Ludicrous Speeds - Rugged DevOpsServiceNow  ITIL at Ludicrous Speeds - Rugged DevOps
ServiceNow ITIL at Ludicrous Speeds - Rugged DevOps
 
Winnipeg ISACA Security is Dead, Rugged DevOps
Winnipeg ISACA Security is Dead, Rugged DevOpsWinnipeg ISACA Security is Dead, Rugged DevOps
Winnipeg ISACA Security is Dead, Rugged DevOps
 
PuppetConf2012GeneKim
PuppetConf2012GeneKimPuppetConf2012GeneKim
PuppetConf2012GeneKim
 
Kim itSMF New England: ITIL at Ludicrous Speeds - Rugged DevOps 6a
Kim itSMF New England: ITIL at Ludicrous Speeds - Rugged DevOps 6aKim itSMF New England: ITIL at Ludicrous Speeds - Rugged DevOps 6a
Kim itSMF New England: ITIL at Ludicrous Speeds - Rugged DevOps 6a
 
Infosec at Ludicrous Speeds - Rugged DevOps
Infosec at Ludicrous Speeds - Rugged DevOps Infosec at Ludicrous Speeds - Rugged DevOps
Infosec at Ludicrous Speeds - Rugged DevOps
 
Kim IT Pro Forum Eugene: IT at Ludicrous Speeds - rugged dev ops
Kim IT Pro Forum Eugene: IT at Ludicrous Speeds - rugged dev opsKim IT Pro Forum Eugene: IT at Ludicrous Speeds - rugged dev ops
Kim IT Pro Forum Eugene: IT at Ludicrous Speeds - rugged dev ops
 
DevOps Kanban Meet Up 3/22/12
DevOps Kanban Meet Up 3/22/12DevOps Kanban Meet Up 3/22/12
DevOps Kanban Meet Up 3/22/12
 
When IT Fails The Business Fails...
When IT Fails The Business Fails...When IT Fails The Business Fails...
When IT Fails The Business Fails...
 
SecureWorld - Communicating With Your CFO
SecureWorld - Communicating With Your CFOSecureWorld - Communicating With Your CFO
SecureWorld - Communicating With Your CFO
 
2012 Velocity London: DevOps Patterns Distilled
2012 Velocity London: DevOps Patterns Distilled2012 Velocity London: DevOps Patterns Distilled
2012 Velocity London: DevOps Patterns Distilled
 
Limited WIP Meeting presentation - The Phoenix Project book review
Limited WIP Meeting presentation - The Phoenix Project book reviewLimited WIP Meeting presentation - The Phoenix Project book review
Limited WIP Meeting presentation - The Phoenix Project book review
 
SecureWorld Kim - Infosec at Ludicrous Speeds - Rugged DevOps 6a
SecureWorld   Kim - Infosec at Ludicrous Speeds - Rugged DevOps 6aSecureWorld   Kim - Infosec at Ludicrous Speeds - Rugged DevOps 6a
SecureWorld Kim - Infosec at Ludicrous Speeds - Rugged DevOps 6a
 
Tui the phoenix project book review
Tui the phoenix project book reviewTui the phoenix project book review
Tui the phoenix project book review
 
Top Lessons Learned From The DevOps Handbook
Top Lessons Learned From The DevOps HandbookTop Lessons Learned From The DevOps Handbook
Top Lessons Learned From The DevOps Handbook
 
Why Everyone Needs DevOps Now - Gene Kim
Why Everyone Needs DevOps Now - Gene KimWhy Everyone Needs DevOps Now - Gene Kim
Why Everyone Needs DevOps Now - Gene Kim
 
Keynote: The Phoenix Project: Lessons Learned - PuppetConf 2014
Keynote: The Phoenix Project: Lessons Learned - PuppetConf 2014Keynote: The Phoenix Project: Lessons Learned - PuppetConf 2014
Keynote: The Phoenix Project: Lessons Learned - PuppetConf 2014
 

Similar to 2019 12 Clojure/conj: Love Letter To Clojure, and A Datomic Experience Report

The Unicorn Project and the Five Ideals.pdf
The Unicorn Project and the Five Ideals.pdfThe Unicorn Project and the Five Ideals.pdf
The Unicorn Project and the Five Ideals.pdfVMware Tanzu
 
My Top Five DevOps Learnings
My Top Five DevOps LearningsMy Top Five DevOps Learnings
My Top Five DevOps LearningsPredix
 
Why Everyone Needs DevOps Now: 15 Year Study Of High Performing Technology Orgs
Why Everyone Needs DevOps Now: 15 Year Study Of High Performing Technology OrgsWhy Everyone Needs DevOps Now: 15 Year Study Of High Performing Technology Orgs
Why Everyone Needs DevOps Now: 15 Year Study Of High Performing Technology OrgsGene Kim
 
Edit Privacy Settings Analytics FREE Collect Leads Micro Focus DevOps Drive-i...
Edit Privacy Settings Analytics FREE Collect Leads Micro Focus DevOps Drive-i...Edit Privacy Settings Analytics FREE Collect Leads Micro Focus DevOps Drive-i...
Edit Privacy Settings Analytics FREE Collect Leads Micro Focus DevOps Drive-i...Serena Software
 
DevOps and the Importance of Single Source Code Repos 
DevOps and the Importance of Single Source Code Repos DevOps and the Importance of Single Source Code Repos 
DevOps and the Importance of Single Source Code Repos Perforce
 
Top Lessons Learned While Researching and Writing The DevOps Handbook
Top Lessons Learned While Researching and Writing The DevOps HandbookTop Lessons Learned While Researching and Writing The DevOps Handbook
Top Lessons Learned While Researching and Writing The DevOps HandbookDynatrace
 
DevOps Patterns Distilled: Implementing The Needed Practices In Practical Steps
DevOps Patterns Distilled: Implementing The Needed Practices In Practical StepsDevOps Patterns Distilled: Implementing The Needed Practices In Practical Steps
DevOps Patterns Distilled: Implementing The Needed Practices In Practical StepsCA Technologies
 
2012 SxSW When IT Says No by Gene Kim
2012 SxSW When IT Says No by Gene Kim2012 SxSW When IT Says No by Gene Kim
2012 SxSW When IT Says No by Gene KimGene Kim
 
Leading Your DevOps Enterprise Journey
Leading Your DevOps Enterprise JourneyLeading Your DevOps Enterprise Journey
Leading Your DevOps Enterprise JourneyCA Technologies
 
How Do We Better Sell DevOps? - PuppetConf 2013
How Do We Better Sell DevOps? - PuppetConf 2013How Do We Better Sell DevOps? - PuppetConf 2013
How Do We Better Sell DevOps? - PuppetConf 2013Puppet
 
Agile Methods: Fact or Fiction
Agile Methods: Fact or FictionAgile Methods: Fact or Fiction
Agile Methods: Fact or FictionMatt Ganis
 
Building and Scaling High Performing Technology Organizations by Jez Humble a...
Building and Scaling High Performing Technology Organizations by Jez Humble a...Building and Scaling High Performing Technology Organizations by Jez Humble a...
Building and Scaling High Performing Technology Organizations by Jez Humble a...Agile India
 
RightScale Webinar: The DevOps Debate - Is the Enterprise Ready?
RightScale Webinar: The DevOps Debate - Is the Enterprise Ready?RightScale Webinar: The DevOps Debate - Is the Enterprise Ready?
RightScale Webinar: The DevOps Debate - Is the Enterprise Ready?RightScale
 
Agile Organizations with Scrum@Scale
Agile Organizations with Scrum@ScaleAgile Organizations with Scrum@Scale
Agile Organizations with Scrum@ScalePaolo Sammicheli
 
Software development process for outsourcing team
Software development process for outsourcing teamSoftware development process for outsourcing team
Software development process for outsourcing teamMykhail Galushko
 
«Організація процесу розробки мобільного застосунку для аутсорсингової команд...
«Організація процесу розробки мобільного застосунку для аутсорсингової команд...«Організація процесу розробки мобільного застосунку для аутсорсингової команд...
«Організація процесу розробки мобільного застосунку для аутсорсингової команд...IT Weekend
 
Agile Overview
Agile OverviewAgile Overview
Agile OverviewAndy Birds
 
Solving 4 of Active Directory Management’s Biggest Problems with Simple Solut...
Solving 4 of Active Directory Management’s Biggest Problems with Simple Solut...Solving 4 of Active Directory Management’s Biggest Problems with Simple Solut...
Solving 4 of Active Directory Management’s Biggest Problems with Simple Solut...ScriptLogic
 
Algorithm Marketplace and the new "Algorithm Economy"
Algorithm Marketplace and the new "Algorithm Economy"Algorithm Marketplace and the new "Algorithm Economy"
Algorithm Marketplace and the new "Algorithm Economy"Diego Oppenheimer
 

Similar to 2019 12 Clojure/conj: Love Letter To Clojure, and A Datomic Experience Report (20)

The Unicorn Project and the Five Ideals.pdf
The Unicorn Project and the Five Ideals.pdfThe Unicorn Project and the Five Ideals.pdf
The Unicorn Project and the Five Ideals.pdf
 
My Top Five DevOps Learnings
My Top Five DevOps LearningsMy Top Five DevOps Learnings
My Top Five DevOps Learnings
 
Why Everyone Needs DevOps Now: 15 Year Study Of High Performing Technology Orgs
Why Everyone Needs DevOps Now: 15 Year Study Of High Performing Technology OrgsWhy Everyone Needs DevOps Now: 15 Year Study Of High Performing Technology Orgs
Why Everyone Needs DevOps Now: 15 Year Study Of High Performing Technology Orgs
 
Edit Privacy Settings Analytics FREE Collect Leads Micro Focus DevOps Drive-i...
Edit Privacy Settings Analytics FREE Collect Leads Micro Focus DevOps Drive-i...Edit Privacy Settings Analytics FREE Collect Leads Micro Focus DevOps Drive-i...
Edit Privacy Settings Analytics FREE Collect Leads Micro Focus DevOps Drive-i...
 
DevOps and the Importance of Single Source Code Repos 
DevOps and the Importance of Single Source Code Repos DevOps and the Importance of Single Source Code Repos 
DevOps and the Importance of Single Source Code Repos 
 
Top Lessons Learned While Researching and Writing The DevOps Handbook
Top Lessons Learned While Researching and Writing The DevOps HandbookTop Lessons Learned While Researching and Writing The DevOps Handbook
Top Lessons Learned While Researching and Writing The DevOps Handbook
 
DevOps Patterns Distilled: Implementing The Needed Practices In Practical Steps
DevOps Patterns Distilled: Implementing The Needed Practices In Practical StepsDevOps Patterns Distilled: Implementing The Needed Practices In Practical Steps
DevOps Patterns Distilled: Implementing The Needed Practices In Practical Steps
 
2012 SxSW When IT Says No by Gene Kim
2012 SxSW When IT Says No by Gene Kim2012 SxSW When IT Says No by Gene Kim
2012 SxSW When IT Says No by Gene Kim
 
Leading Your DevOps Enterprise Journey
Leading Your DevOps Enterprise JourneyLeading Your DevOps Enterprise Journey
Leading Your DevOps Enterprise Journey
 
How Do We Better Sell DevOps? - PuppetConf 2013
How Do We Better Sell DevOps? - PuppetConf 2013How Do We Better Sell DevOps? - PuppetConf 2013
How Do We Better Sell DevOps? - PuppetConf 2013
 
Agile Methods: Fact or Fiction
Agile Methods: Fact or FictionAgile Methods: Fact or Fiction
Agile Methods: Fact or Fiction
 
Docker and Devops
Docker and DevopsDocker and Devops
Docker and Devops
 
Building and Scaling High Performing Technology Organizations by Jez Humble a...
Building and Scaling High Performing Technology Organizations by Jez Humble a...Building and Scaling High Performing Technology Organizations by Jez Humble a...
Building and Scaling High Performing Technology Organizations by Jez Humble a...
 
RightScale Webinar: The DevOps Debate - Is the Enterprise Ready?
RightScale Webinar: The DevOps Debate - Is the Enterprise Ready?RightScale Webinar: The DevOps Debate - Is the Enterprise Ready?
RightScale Webinar: The DevOps Debate - Is the Enterprise Ready?
 
Agile Organizations with Scrum@Scale
Agile Organizations with Scrum@ScaleAgile Organizations with Scrum@Scale
Agile Organizations with Scrum@Scale
 
Software development process for outsourcing team
Software development process for outsourcing teamSoftware development process for outsourcing team
Software development process for outsourcing team
 
«Організація процесу розробки мобільного застосунку для аутсорсингової команд...
«Організація процесу розробки мобільного застосунку для аутсорсингової команд...«Організація процесу розробки мобільного застосунку для аутсорсингової команд...
«Організація процесу розробки мобільного застосунку для аутсорсингової команд...
 
Agile Overview
Agile OverviewAgile Overview
Agile Overview
 
Solving 4 of Active Directory Management’s Biggest Problems with Simple Solut...
Solving 4 of Active Directory Management’s Biggest Problems with Simple Solut...Solving 4 of Active Directory Management’s Biggest Problems with Simple Solut...
Solving 4 of Active Directory Management’s Biggest Problems with Simple Solut...
 
Algorithm Marketplace and the new "Algorithm Economy"
Algorithm Marketplace and the new "Algorithm Economy"Algorithm Marketplace and the new "Algorithm Economy"
Algorithm Marketplace and the new "Algorithm Economy"
 

More from Gene Kim

Speaker Recording Tips For Virtual DevOps Enterprise (And Why We're Pre-Recor...
Speaker Recording Tips For Virtual DevOps Enterprise (And Why We're Pre-Recor...Speaker Recording Tips For Virtual DevOps Enterprise (And Why We're Pre-Recor...
Speaker Recording Tips For Virtual DevOps Enterprise (And Why We're Pre-Recor...Gene Kim
 
Kevin Behr: Integrating Controls and Process Improvement
Kevin Behr: Integrating Controls and Process ImprovementKevin Behr: Integrating Controls and Process Improvement
Kevin Behr: Integrating Controls and Process ImprovementGene Kim
 
United2012 Rugged DevOps Rocks
United2012 Rugged DevOps RocksUnited2012 Rugged DevOps Rocks
United2012 Rugged DevOps RocksGene Kim
 
2012 05 corp fin 1c
2012 05 corp fin 1c2012 05 corp fin 1c
2012 05 corp fin 1cGene Kim
 
SecureWorld: Security is Dead, Rugged DevOps 1f
SecureWorld:  Security is Dead, Rugged DevOps 1fSecureWorld:  Security is Dead, Rugged DevOps 1f
SecureWorld: Security is Dead, Rugged DevOps 1fGene Kim
 
Security is Dead. Long Live Rugged DevOps: IT at Ludicrous Speed
Security is Dead. Long Live Rugged DevOps: IT at Ludicrous SpeedSecurity is Dead. Long Live Rugged DevOps: IT at Ludicrous Speed
Security is Dead. Long Live Rugged DevOps: IT at Ludicrous SpeedGene Kim
 
2011 09 19 LSPE Dev Ops Cookbook 1a
2011 09 19 LSPE Dev Ops Cookbook 1a2011 09 19 LSPE Dev Ops Cookbook 1a
2011 09 19 LSPE Dev Ops Cookbook 1aGene Kim
 

More from Gene Kim (7)

Speaker Recording Tips For Virtual DevOps Enterprise (And Why We're Pre-Recor...
Speaker Recording Tips For Virtual DevOps Enterprise (And Why We're Pre-Recor...Speaker Recording Tips For Virtual DevOps Enterprise (And Why We're Pre-Recor...
Speaker Recording Tips For Virtual DevOps Enterprise (And Why We're Pre-Recor...
 
Kevin Behr: Integrating Controls and Process Improvement
Kevin Behr: Integrating Controls and Process ImprovementKevin Behr: Integrating Controls and Process Improvement
Kevin Behr: Integrating Controls and Process Improvement
 
United2012 Rugged DevOps Rocks
United2012 Rugged DevOps RocksUnited2012 Rugged DevOps Rocks
United2012 Rugged DevOps Rocks
 
2012 05 corp fin 1c
2012 05 corp fin 1c2012 05 corp fin 1c
2012 05 corp fin 1c
 
SecureWorld: Security is Dead, Rugged DevOps 1f
SecureWorld:  Security is Dead, Rugged DevOps 1fSecureWorld:  Security is Dead, Rugged DevOps 1f
SecureWorld: Security is Dead, Rugged DevOps 1f
 
Security is Dead. Long Live Rugged DevOps: IT at Ludicrous Speed
Security is Dead. Long Live Rugged DevOps: IT at Ludicrous SpeedSecurity is Dead. Long Live Rugged DevOps: IT at Ludicrous Speed
Security is Dead. Long Live Rugged DevOps: IT at Ludicrous Speed
 
2011 09 19 LSPE Dev Ops Cookbook 1a
2011 09 19 LSPE Dev Ops Cookbook 1a2011 09 19 LSPE Dev Ops Cookbook 1a
2011 09 19 LSPE Dev Ops Cookbook 1a
 

Recently uploaded

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 

Recently uploaded (20)

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 

2019 12 Clojure/conj: Love Letter To Clojure, and A Datomic Experience Report

  • 1. @RealGeneKim Session ID: Gene Kim My Love Letter to Clojure: And A Datomic Experience Report
  • 2. @RealGeneKim Why I’m Presenting and Who It’s For  Alex Miller emailed me if I’d be willing:  Share why I’m so grateful to Clojure  Present an experience report on Datomic  Intended audience:  People who have been afraid to jump into Datomic, because it’s so alien and unfamiliar (perhaps even more alien than Clojure!)  People who want to spread more widely the use of Datomic, or make it easier to explain/adopt/use — I’m part of that target market
  • 3. @RealGeneKim Definition: Experience Report  Noun  “Experience report is a paper written by a person (persons) who participated in the work completed (being completed) in a context of a real-life organization”  In the form of: here’s what I wanted to do, here’s what happened, here’s what I learned, here’s problem that still remains  What’s they’re also good for  Closely resemble the scientific method (hypothesis, test hypothesis)  Helps uncover demographics and psychographics (goals and ideals) of a population Source: http://processplatsen.ibissoft.se/node/72
  • 4. @RealGeneKim Agenda  Who am I, what I’ve learned in the DevOps community, and why I’m so grateful to Clojure and the Clojure community (15m)  Datomic Experience Report (25m)  What I’ve used Clojure for  Why Datomic scared me away  What made me finally take the plunge  What it felt like to solve the problem  Help I’m Looking For (5m)
  • 7. @RealGeneKim My Definition of DevOps The architecture, technical practices, and cultural norms that enable us to… increase our ability to deliver applications and services... quickly and safely, which enables rapid experimentation and innovation, and the fastest delivery of value to our customers… while ensuring world-class security, reliability, and stability... …so that we can win in the marketplace.
  • 8. @RealGeneKim Another Definition of DevOps Better Value, Sooner, Safer, Happier Jon Smart, Partner, Enterprise Agility, Deloitte
  • 9. @RealGeneKim State of DevOps Research  State of DevOps Report (2013-2019)  Dr. Nicole Forsgren, Jez Humble, Gene Kim  Cross population study spanning over 35K respondents  Identified “IT performance” and the factors that predicts:  Deployment Frequency  Deployment Lead Time  Deploy Success Rate  Mean Time to RestoreSource: Google/DORA: 2018 State Of DevOps Report: https://cloudplatformonline.com/2018-state-of-devops.html
  • 10. @RealGeneKim Elite Low Difference Deployment Frequency On-demand (multiple times per day) Monthly or quarterly 208x Deployment Lead Time < 1 hour 1 day to 1 week 2,555x Deploy Success Rate 0-15% 46-60% 7x Mean Time to Restore < 1 hour 1 week to 1 month 2,604x Elite vs. Low Performers Source: Google/DORA: 2019 State Of DevOps Report: https://cloud.google.com/devops/state-of-devops/
  • 11. @RealGeneKim Elite Low Difference Deployment Frequency On-demand (multiple times per day) Monthly or quarterly 208x Deployment Lead Time < 1 hour 1 week to 1 month 106x Deploy Success Rate 0-15% 46-60% 7x Mean Time to Restore < 1 hour 1 week to 1 month 2,604x Elite vs. Low Performers Source: Google/DORA: 2019 State Of DevOps Report: https://cloud.google.com/devops/state-of-devops/
  • 12. @RealGeneKim Elite Low Difference Deployment Frequency On-demand (multiple times per day) Monthly or quarterly 208x Deployment Lead Time < 1 hour 1 week to 1 month 106x Deploy Success Rate 0-15% 46-60% 7x Mean Time to Restore < 1 hour 1 week to 1 month 2,604x Elite vs. Low Performers Source: Google/DORA: 2019 State Of DevOps Report: https://cloud.google.com/devops/state-of-devops/
  • 13. @RealGeneKim Elite Low Difference Deployment Frequency On-demand (multiple times per day) Monthly or quarterly 208x Deployment Lead Time < 1 hour 1 week to 1 month 106x Deploy Success Rate 0-15% 46-60% 7x Mean Time to Restore < 1 hour Less than one day 2,604x Elite vs. Low Performers Source: Google/DORA: 2019 State Of DevOps Report: https://cloud.google.com/devops/state-of-devops/
  • 14. @RealGeneKim High Performers Are More Secure And Controlled 2x 29% less time spent remediating security issues more time spent on new work Source: Google/DORA: 2018 State Of DevOps Report: https://cloudplatformonline.com/2018-state-of-devops.html
  • 15. @RealGeneKim High Performers Win In The Marketplace 2x 2xmore likely to exceed profitability, market share & productivity goals more likely to achieve organizational and mission goals, customer satisfaction, quantity & quality goals Source: Google/DORA: 2018 State Of DevOps Report: https://cloudplatformonline.com/2018-state-of-devops.html
  • 16. @RealGeneKim High Performers Win In The Marketplace 2.2xhigher employee Net Promoter Score 50%higher market capitalization growth over 3 years* Source: Google/DORA: 2018 State Of DevOps Report: https://cloudplatformonline.com/2018-state-of-devops.html
  • 18. @RealGeneKim When we can safely, quickly, reliably, securely (and happily) achieve all the goals, dreams and aspirations of our business…
  • 20. @RealGeneKim Clojure Brought Joy Of Coding Back  For decades, I self-identified as an Ops person…  I now self-identify as a developer  Development is so fun, and these days, you can do miraculous things with so little effort  I wrote about my 30 year habits of self-sabotaging my own code. One app I’ve written three times:  3000 lines of Objective C  1500 lines of TypeScript/React  500 lines of ClojureScript/Re-frame
  • 21. @RealGeneKim Cumulative LoC Written: Three Decades “I’m going to make the case that me learning Clojure is sort of like Encino Man learning to drive—you know, the movie about the caveman who was frozen in ice and wakes up in the completely changed, modern world.” Source: https://itrevolution.com/love-letter-to-clojure-part-1/ Little coding
  • 23. @RealGeneKim The Problems That Still Remain  Absence of all the invisible structures needed to enable developer productivity  The orthogonal problem of getting data from where it resides to where it needs to be used  Strong opposition to support new ways of working  Ambiguity on what behaviors needed to support during a transformation
  • 24. @RealGeneKim Rich Hickey (STL 2011, JavaOne 2015)
  • 25. @RealGeneKim The Five Ideals 1. Locality and Simplicity 2. Focus, Flow, and Joy 3. Improvement of Daily Work 4. Psychological Safety 5. Customer Focus
  • 27. @RealGeneKim The First Ideal: A Measure  Bus factor  Lunch factor
  • 28. @RealGeneKim How Many People Do You Need To Feed?  Two pizza team  Feeding everyone in the building  Schedule lunch with 43 different people
  • 29. @RealGeneKim The First Ideal: Code  Ideal: anyone can implement what they need by looking at one file or module, and make the needed change  Kubernetes sidecars  Spring (http-retry, Dependency Injection)  Aspect Oriented Programming  Not Ideal: to make your needed change, you have to understand and change all the files and modules
  • 30. @RealGeneKim The First Ideal: Code  Ideal: changes can be independently implemented and tested, isolated from other components (composability)  Not Ideal: in order for changes to be implemented and tested, the entire system must be present (e.g., integrated test environment)
  • 31. @RealGeneKim The First Ideal: Organization  Ideal: every team has the expertise, capability and authority to satisfy customer needs  Not Ideal: in order to satisfy customer needs, every team must escalate up two levels (and over two, and down two)
  • 35. @RealGeneKim Why Functional Programming  The famous French philosopher Claude Lévi- Strauss would say of certain tools, ‘is it good to think with?’
  • 36. @RealGeneKim Interestingly, It Portends Future Of Ops  Core concepts  Immutability  Pure functions  Composability  Look at…  Docker, Docker Compose  Kubernetes  Kubernetes sidecars  Event streams: Apache Kafka  Git
  • 37. @RealGeneKim The Second Ideal: Focus and Flow  Ideal: your energy and time is focused on solving the business problem, and you’re having fun  Not Ideal: all your time is spent trying to solve problems you don’t even want to solve (e.g., YAML files, Makefile and spaces in filenames, bash)
  • 38. @RealGeneKim Never Have I Valued Infrastructure More  Things I detest now  Everything outside of my application  Connecting anything to anything  Updating dependencies  Secrets management  Bash  YAML  Patching  Building kubernetes deployment files (mostly by Googling)  Why my cloud costs are so high
  • 39. @RealGeneKim The Value Of Platforms  Enable developer productivity  Self-service  On-demand  Immediacy and fast feedback  Focus and flow  Joy  Monitoring, deployment, environment creation, security scans, orchestration…
  • 40. @RealGeneKim Two Types Of Learning ● Procedural Learning ● One-shot Learning Source: Dr. Mihaly Csikszentmihalyi
  • 41. @RealGeneKim In Clojure Love Letter  I want to tell a story that has the same ending as Rich Hickey’s “If I had to keep programming in C++ and Java, I think I would need to find a new career.”  I’ve heard similar things many times…  I wondered if they were a bit… Hysterical? Manic? Melodramatic?
  • 42. @RealGeneKim  Rich Hickey  “Solve problems, not solve puzzles”  Category theory  Me  Figuring out how to escape spaces in filenames inside of Makefile  SQL More Examples
  • 43. @RealGeneKim Session ID: Experience Report: Or When I Decided I Was Done With SQL *
  • 44. @RealGeneKim A Book Tracking Application  Four years ago, Tom Limoncelli (StackOverflow) and I wrote some tools to track sales ranks from various e-commerce sites:  Python  Ruby and ActiveRecord  MySQL  Some bash, Makefiles, and JSON files  Kubernetes  Cron (or K8S CronJobs or Rundeck)
  • 46. @RealGeneKim E-commerce Site 1 E-commerce Site 1 2016-2017 API Retrieve ActiveRecord/ MySQL Dispatcher User Google StackDriver Slack Hosted Graphite E-commerce Sites... Cloud SQL MySQL Bash script
  • 47. @RealGeneKim API Retrieve ActiveRecord/ MySQL Dispatcher E-commerce Site 1 E-commerce Site 1 2016 User Google StackDriver Hosted Graphite Slack Hosted Graphite E-commerce Sites... Bash script - Program error? - Environment error? - Interface error? - 503 enforcement? Cloud SQL MySQL
  • 48. @RealGeneKim 3GB Docker Image / Kubernetes (GKE) E-commerce Site 1 E-commerce Site 1 2016-2018 User Hosted Graphite Slack Hosted Graphite E-commerce Sites... Cloud SQL MySQL Bash script API Retrieve Get Reviews (Scrapy) ActiveRecord/ MySQL Dispatcher
  • 49. @RealGeneKim 100MB Docker Image / Kubernetes (GKE) E-commerce Site 1 E-commerce Site 1 2019: 10x LoC Reduction API Retrieve Dispatcher User Slack E-commerce Sites... Cloud SQL MySQL Google Pub/Sub Get Reviews Google Data Studio
  • 51. @RealGeneKim Sales Rank (lower is better) Unicorn Project: Kindle Phoenix Project: Kindle Yay! Promotion activities are working!
  • 52. @RealGeneKim But I’m Not Very Good At Databases… WHAT HAPPENED?!? Oops. 2 weeks of all new records with NULL date/times. ARGH! Analyzing this critical launch period is why I wrote the app in the first place, and I was totally blind to what happened!!!
  • 53. @RealGeneKim How Bad Am I At Databases  I wrote an SQL database as an undergraduate CS student  I’ve spent time as an (unwilling) Oracle DBA  I’ve used MySQL for 15 years  I’m still scared of schema changes and database migrations  I almost never get database schema changes right  (insert screenshot of 10 git commits to fix Ruby ActiveRecord migrations)
  • 54. @RealGeneKim I am afraid of MySQL because I’m so bad at it
  • 55. @RealGeneKim What Is The One Question That Predicts Performance With Startling Accuracy?
  • 56. @RealGeneKim “To what degree do we fear doing deployments?” Source: Puppet Labs 2015 State Of DevOps: https://puppetlabs.com/2015-devops-report
  • 57. @RealGeneKim My Final MySQL Indignity  This query takes 8.1s!!!  I need this for each book I’m tracking — for 150 books, that’s 2 minutes!  No problem, I’ll just run queries on a background thread…  Or maybe cache results, or use Firebase Realtime DB? (and now I have two problems)
  • 58. @RealGeneKim The Problems That Still Remain Source: https://twitter.com/b0rk/status/1179054952938913794
  • 61. @RealGeneKim Adding Indices Did Not Work  CREATE INDEX time ON salesranks(time);  CREATE INDEX book_id ON salesranks(book_id);  CREATE INDEX id ON books(id);  ALTER TABLE salesranks MODIFY COLUMN time DATETIME NOT NULL;
  • 65. @RealGeneKim 😱 😱 😱 😱 😱 😱
  • 66. @RealGeneKim 🤮🤮🤮 When I Knew I Was Done With MySQL (Because I’m So Bad At It) BEFORE: 8,100 ms
  • 68. @RealGeneKim New Rule: No More SQL, Because I Am Too Stupid To Use It… (And NoSQL, Too…)
  • 69. @RealGeneKim Clojure helped me realized the Second Ideal MySQL deprived me of it (Because I’m so bad at it)
  • 71. @RealGeneKim Story Line  For 2 years, I’ve wanted to extend database schema to encompass notion of “publisher” — but conclusion was always “maybe next year”  Datomic looked so interesting: kept reading and watching videos
  • 72. @RealGeneKim Great Articles on Datomic  Carin Meier: Conversations With Datomic (Part 1 and 2)  Datalog is intimidating, but its link to core.logic and Prolog link made it seem incredibly worthwhile  I’m seeking a more declarative mode of thinking…  OTOH: Schema was… whoa.. Difficult for me to understand…
  • 74. @RealGeneKim Book Publisher: But Never Used In Anger
  • 75. @RealGeneKim Definition: “Use In Anger”  “To use in anger”: “In a military context, 'to fire in anger' means to shoot for a purpose in war. For example, a submarine that 'fires in anger' shoots missiles at an enemy ship. “Shots fired in anger are never just for practice; they're fired to deliberately cause damage or harm.” Source: http://www.bbc.co.uk/worldservice/learningenglish/radio/specials/1837_aae/page22.shtml
  • 76. @RealGeneKim Definition: “Use In Anger”  “To use in anger”: “In a military context, 'to fire in anger' means to shoot for a purpose in war. For example, a submarine that 'fires in anger' shoots missiles at an enemy ship. “Shots fired in anger are never just for practice; they're fired to achieve a real mission objective.” Source: http://www.bbc.co.uk/worldservice/learningenglish/radio/specials/1837_aae/page22.shtml
  • 77. @RealGeneKim An Urgent Mission: Use In Anger: Book Launch  Book and product launches are a game of activations  In the Twitter relationship graph around me, where were points of maximum amplification?  Among my friends, who had the most friends and followers?  Among my followers, who had the most friends and followers?  For a set of people, who were common friends and followers?  I looked for many weeks for commercial offerings, but didn’t find any — often after a week of waiting before my account became fully activated.  More on this later…
  • 78. @RealGeneKim Initial Challenges And Intimidating Things  Okay, I think I can do this, with Hodur helping create schemas  Datomic Cloud made it feasible — my one attempt to install Datomic and license 1.5 years ago was not so good. I never got past the first page. (It didn’t help that I didn’t even know what a classpath was.)  I’ve never used anything in AWS besides EC2. Involved using things I’ve never used (DynamoDB, API Gateway, AWS Lambda, CloudWatch)
  • 79. @RealGeneKim This Project Was Important To Me  I usually love experience reports that describe “here’s how we scaled our multiuser chat service to 200MM simultaneous users overnight without a hitch”  My experience report is different — it was just for me, it never even ran anywhere besides my laptop  It was important to me and time-critical  I searched weeks for a tool that could do it for me  It completely changed how I think about databases, and what I expect for one
  • 81. @RealGeneKim 4 Chapters On Datomic  Jeremy Anderson  Michael Gaare  Justin Holguín  Nick Bailey  Timothy Pratley
  • 83. @RealGeneKim First Goals  Used chbrown’s fantastic “twttr” library to access Twitter API  Retrieve details for a Twitter account  Retrieve details about all my friends and followers  Uh oh… Rate limits…  Final N = 500K+  Only 15 requests allowed every 15 minutes (200 users returned upon each request)  It took 96 hours (4 days), but this was unknowable until program finally finished running  I remember writing/running programs like this; so many things can go wrong  Inability to resume after unexpected program termination  Unwanted data duplication  Unwanted retrieval duplication And THIS is why it takes multiple days for social media tools to work after sign-up
  • 85. @RealGeneKim Initial Challenges  Datomic Cloud made it even feasible — my one attempt to install Datomic and license 1.5 years ago was not so good. I completed only first 3 steps  I’ve never used anything in AWS besides EC2. Involved using things I’ve never used (DynamoDB, API Gateway, AWS Lambda, CloudWatch)  Video tutorials were great
  • 86. @RealGeneKim SUCCESS  In a week, had collected 500K users, able to execute all desired queries  Focused on the top people who have got the word out about DevOps and Phoenix Project  Copied into Google Sheet and operationalized
  • 87. @RealGeneKim Sales Rank (lower is better) Unicorn Project: Kindle Phoenix Project: Kindle Yay! Promotion activities are working!
  • 90. @RealGeneKim Problems Encountered: Out of Memory  String case insensitive comparison consumed all memory (remember, I never really used Java)
  • 92. @RealGeneKim Observations  Queries were so easy  It felt like the database was part of my program  Immediacy and fast feedback was incredible  Schema changes were incredibly easy and painless  Hodur schema changes are amazing  Ghostwheel for type checking so incredible
  • 93. @RealGeneKim If I Could Wave A Magic Wand  Help upgrading (I’m so scared)  Better understanding what all the CloudWatch events mean and whether I should care  Ideal use case  Access it from apps in Heroku  Not have to make change API Gateway each time  (I got one set of Datomic calls working in Heroku, thanks to Clojurians Slack)
  • 94. @RealGeneKim Exposing Datomic as JDBC: Whoa…  This would be amazing  I could connect Datomic into Google Data Studio via JDBC
  • 95. @RealGeneKim Dr. John Launchbury  One of earliest collaborators w/Dr. Simon Peyton- Jones on Glasgow Haskell Compiler (ghc)
  • 96. @RealGeneKim  Lessons  Define inputs and output types  Define what your terminating case  Use gnl/ghostwheel
  • 97. @RealGeneKim Session ID: The Opportunity: Study the Java Maven Ecosystem!
  • 98. @RealGeneKim Session ID: The Opportunity: Study the Java Maven Ecosystem! Clojure Haskell
  • 99. @RealGeneKim Dr. Stephen Magill (Galois) Gene Kim (IT Revolution) Bruce Mayhew (Sonatype) Gazi Mahmud (Sonatype) Brian Fox (Sonatype, Maven Co-Inventor) Thanks also to: Kevin Witten, Derek Weeks, and Matt Howard
  • 100. @RealGeneKim 2020 goals  Use with SSC  Describe project and data set sizes  100MM records  Components, dependencies, updates, and vulnerabilities
  • 105. @RealGeneKim Quote  "If you think that ‘software project’ is pronounced ‘slow-moving train wreck,’ you should read The Unicorn Project. Gene Kim shares the hilarious and sad ways that people are ground down by failing projects -- and he has a proven plan to fix it." -- Stuart Halloway, President, Cognitect, Inc.  “This book describes how to rescue developers from the tundra of technical debt and bureaucracy that plagues the most important missions in almost every enterprise.” — Eric Normand, PurelyFunctional.tv
  • 106. @RealGeneKim In Conclusion  THANK YOU! Clojure brought the joy of coding back into my life!  And Datomic, even though it looks even more alien than Clojure, made me so dissatisfied with SQL databases, I wondered how I’d survive without databases in my life. And like Clojure, I’m amazed at how much I can do with Datomic, easier, safer, and happier!
  • 107. @RealGeneKim Help I’m Looking For  Help Datomic win the bake-off for SSC Analysis, and then help to make sure I don’t screw it up (me being the Datomic expert on the team seems like a recipe for disaster)  I’m interested in analyzing the clojars ecosystem and data, too.  I’m interested in wondering what markers there are that APIs are stable and won’t break consumers.  I’d love to work with anyone on getting more compile-time checking of types — spectrum? clj-kondo?

Editor's Notes

  1. I've had the privilege of studying high performing technology organizations since 1999.  This was a journey that started when I was the founder and CTO of Tripwire, in the information security and compliance space. We studied organizations that had the best project due date performance in Development, the best stability and reliability in Operations, and they also had the best posture of security and compliance. We wanted to understand how these organizations made their "good to great" transformation, so that other organizations could replicate their outcomes. There have been many surprises on this 20 year journey. But by far, the biggest surprise was how it brought me into the middle of the DevOps movement.  The last time any industry has been transformed like our industry is being disrupted today was probably manufacturing in the 1960s, when it was transformed through the Lean and Toyota Production System. In 2013, I co-wrote a book called The Phoenix Project, and I can't overstate how much I've learned since then. In the next 45 minutes, I will share what I wish I had known before we wrote that book.
  2. Was here at the Conj in 2017
  3. I wrote the letter to express my profound gratitude to Rich Hickey for creating Clojure, and the entire Clojure community. Without doubt, learning the Clojure programming was one of the most difficult things I’ve learned professionally, but it has also been one of the most rewarding. It brought the joy of programming back into my life. For the first time in my career, as I’m nearing fifty years old, I’m finally able to write programs that do what I want them to do, and am able to build upon them for years without them collapsing like a house of cards, as has been my normal experience.
  4. 18 million developers 8 million ops people What the Clojure community is working is relevant to us all
  5. Bus factor is the number of people that need to be hit by a bus before your project comes to a screeching halt. In TPP, we had bus factor of 1.  Brent.  Because every outage required Brent, and every major work item required Brent.  If Brent got hit by a bus, the company was legitimately at risk of going out of the business. In the Unicorn Project, I love the concept of the lunch factor. How many people do you need to take out to lunch.   Amazon has the notion of a two pizza team.  No team should be large than can be fed by two pizza.  They can indedepently develop, test, and deploy value to the customer.   No need to take anyone out to lunch. However, in most organizations, to make a small change, everything is so tightly coupled together, you have to take everyone out to lunch. It’s not two pizza, it’s multiple truckloads of pizzas.
  6. Terraform presentation yesterday
  7. https://twitter.com/RealGeneKim/status/1179505930540634114
  8. https://twitter.com/RealGeneKim/status/1179505930540634114
  9. https://twitter.com/RealGeneKim/status/1179505930540634114
  10. https://twitter.com/RealGeneKim/status/1179505930540634114
  11. https://twitter.com/RealGeneKim/status/1179505930540634114
  12. https://twitter.com/RealGeneKim/status/1179505930540634114
  13. https://twitter.com/RealGeneKim/status/1179505930540634114
  14. https://twitter.com/RealGeneKim/status/1179505930540634114
  15. https://twitter.com/RealGeneKim/status/1179505930540634114
  16. https://twitter.com/RealGeneKim/status/1179505930540634114
  17. https://twitter.com/RealGeneKim/status/1179505930540634114
  18. It was with gratitude and extreme enthusiasm that I jumped into this project, because as someone who loves the Clojure programming language, we benefit everyday from the Maven ecosystem.
  19. It was this extensive use of open source in high performing DevOps teams that led to an intersection of research that I had been leading for five years in the SSC report, And research that Dr. Steven Magill, Gene Kim, Bruce Mayhew, Gazi Mahmud, and I embarked upon a year ago You see, Gene Kim shared the Three Ways of DevOps inside The Phoenix Project, with the first way being “Emphasize performance of the entire system and never pass a defect downstream.”
  20. https://twitter.com/RealGeneKim/status/1179505930540634114