SlideShare a Scribd company logo
1 of 21
Create Your Library
Laurence Chen
CEO @ REPLWARE
https://replware.dev
About Me
● Clojure community organizer
● IT Consultant, speaker, writer
● https://leanpub.com/errors_to_innovation/ (
從錯誤到創新)
2
Agenda
1. Why should you consider to create
libraries?
2. Policy vs Mechanism
3. What are the properties that a good
library usually has?
4. How to start? Where to start? The end?
1. Why should you consider to
create libraries?
● The key to fast development iteration, low
error rate and long-term maintainability.
● Why?
○ It reduces cognitive load and manual work for
people who use the library.
● Side effects:
○ A good way to separate the source code
repository (team works)
○ Your ego and fame (The most important thing!) 4
Why? language oriented diagram
5
Library and git repo
(code splitting)
Each library has
its own repo.
6
Your fame and ego
● Do not need to prepare for the white boards.
● Enjoy being a distinguished engineer.
● Have friends (actually users) all around the
world.
2. Policy vs Mechanism (Non-
library vs library code)
8
9
3. Properties of a good library
● Provide solution for mechanism
● Documentation
○ Rationale
○ Usage example
● Tests
● Change logs
● No breaking changes after version 1.0.
10
4. How to start?
Where to start?
The end?
● Build up your expertise.
● Find the incongruity.
● Make the library looks like certain part of
your programming lang. Extend your tools.
Build up your expertise
● Start from reading into the library you are
using now.
○ It is just one level higher than you.
○ Can you Jump to definition through your IDE
or editor?
● Choose better library.
○ Avoid the red flags. For example, huge
dependency for little benefits.
12
Expertise cycle
13
Find the incongruity
● Compare different programming language
● Focus on incongruity:
○ The existing solution is not as good as similar
thing on other domains.
○ The existing solution to the problem looks like
a work around.
Incongruity from comparing
programming lang
15
The bottleneck of a workflow
16
Extend your tools
● Example of extensible systems:
○ Lisp - Lisp macro
○ Java - Object & Polymorphism
○ Postgres - user defined function, user defined types
● Is your editor extensible?
○ Can you automate certain things by using your
editor’s command?
○ vim - integrate shell’s filtering command
● Is your programming language extensible?
○ Does it allow Lisp macro? (meta programming)
○ Does it provide polymorphism mechanism?
17
18
19
Conclusion
● Create your own library for productivity.
● Mechanism vs Policy
● Build up your expertise by reading into
libraries.
● From incongruity comes the innovation.
● Extend your tools.
Reference
● JetBrains: Language Oriented Programming:
The next programming paradigm.
● Mechanism vs Policy
https://lambdaisland.com/blog/2022-03-10-
mechanism-vs-policy
● Leveling up
https://lambdaisland.com/p/leveling-up

More Related Content

Similar to Create your library

Orthogonality: A Strategy for Reusable Code
Orthogonality: A Strategy for Reusable CodeOrthogonality: A Strategy for Reusable Code
Orthogonality: A Strategy for Reusable Code
rsebbe
 

Similar to Create your library (20)

Your first 5 PHP design patterns - ThatConference 2012
Your first 5 PHP design patterns - ThatConference 2012Your first 5 PHP design patterns - ThatConference 2012
Your first 5 PHP design patterns - ThatConference 2012
 
Let's talk FOSS!
Let's talk FOSS!Let's talk FOSS!
Let's talk FOSS!
 
Custom angular libraries
Custom angular librariesCustom angular libraries
Custom angular libraries
 
LCA13: Upstreaming 101
LCA13: Upstreaming 101LCA13: Upstreaming 101
LCA13: Upstreaming 101
 
Upstreaming 1013
Upstreaming 1013Upstreaming 1013
Upstreaming 1013
 
Software development fundamentals
Software development fundamentalsSoftware development fundamentals
Software development fundamentals
 
Open source ml systems that need to be built
Open source ml systems that need to be builtOpen source ml systems that need to be built
Open source ml systems that need to be built
 
BUD17-TR01: Philosophy of Open Source
BUD17-TR01: Philosophy of Open SourceBUD17-TR01: Philosophy of Open Source
BUD17-TR01: Philosophy of Open Source
 
Teaching Open Source In The University
Teaching Open Source In The UniversityTeaching Open Source In The University
Teaching Open Source In The University
 
Composer manager module for Drupal
Composer manager module for DrupalComposer manager module for Drupal
Composer manager module for Drupal
 
W1-Intro to python.pptx
W1-Intro to python.pptxW1-Intro to python.pptx
W1-Intro to python.pptx
 
Open source, What | Why | How
Open source, What | Why | How Open source, What | Why | How
Open source, What | Why | How
 
Orthogonality: A Strategy for Reusable Code
Orthogonality: A Strategy for Reusable CodeOrthogonality: A Strategy for Reusable Code
Orthogonality: A Strategy for Reusable Code
 
Open Source in Real Life
Open Source in Real LifeOpen Source in Real Life
Open Source in Real Life
 
Building Better FLOSS Community Relationships @ FB
Building Better  FLOSS Community Relationships @ FBBuilding Better  FLOSS Community Relationships @ FB
Building Better FLOSS Community Relationships @ FB
 
Python for All
Python for All Python for All
Python for All
 
Python For All | Software Professionals, QA & DevOps professionals
Python For All | Software Professionals, QA & DevOps professionalsPython For All | Software Professionals, QA & DevOps professionals
Python For All | Software Professionals, QA & DevOps professionals
 
Getting started contributing to Apache Spark
Getting started contributing to Apache SparkGetting started contributing to Apache Spark
Getting started contributing to Apache Spark
 
Pentester++
Pentester++Pentester++
Pentester++
 
U3 l4 using simple commands
U3 l4 using simple commandsU3 l4 using simple commands
U3 l4 using simple commands
 

More from Laurence Chen

More from Laurence Chen (7)

on log messages
on log messageson log messages
on log messages
 
The obstacles of developer productivity.pptx
The obstacles of developer productivity.pptxThe obstacles of developer productivity.pptx
The obstacles of developer productivity.pptx
 
A simple tool for debug (tap>)
A simple tool for debug (tap>)A simple tool for debug (tap>)
A simple tool for debug (tap>)
 
On component interface
On component interfaceOn component interface
On component interface
 
Schema, validation and generative testing
Schema, validation and generative testingSchema, validation and generative testing
Schema, validation and generative testing
 
The immutable database datomic
The immutable database   datomicThe immutable database   datomic
The immutable database datomic
 
The productivity brought by Clojure
The productivity brought by ClojureThe productivity brought by Clojure
The productivity brought by Clojure
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc
 

Recently uploaded (20)

WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformLess Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps Productivity
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governance
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Navigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern EnterpriseNavigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern Enterprise
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Design and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data ScienceDesign and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data Science
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Simplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxSimplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptx
 
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Choreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software EngineeringChoreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software Engineering
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 

Create your library

  • 1. Create Your Library Laurence Chen CEO @ REPLWARE https://replware.dev
  • 2. About Me ● Clojure community organizer ● IT Consultant, speaker, writer ● https://leanpub.com/errors_to_innovation/ ( 從錯誤到創新) 2
  • 3. Agenda 1. Why should you consider to create libraries? 2. Policy vs Mechanism 3. What are the properties that a good library usually has? 4. How to start? Where to start? The end?
  • 4. 1. Why should you consider to create libraries? ● The key to fast development iteration, low error rate and long-term maintainability. ● Why? ○ It reduces cognitive load and manual work for people who use the library. ● Side effects: ○ A good way to separate the source code repository (team works) ○ Your ego and fame (The most important thing!) 4
  • 6. Library and git repo (code splitting) Each library has its own repo. 6
  • 7. Your fame and ego ● Do not need to prepare for the white boards. ● Enjoy being a distinguished engineer. ● Have friends (actually users) all around the world.
  • 8. 2. Policy vs Mechanism (Non- library vs library code) 8
  • 9. 9
  • 10. 3. Properties of a good library ● Provide solution for mechanism ● Documentation ○ Rationale ○ Usage example ● Tests ● Change logs ● No breaking changes after version 1.0. 10
  • 11. 4. How to start? Where to start? The end? ● Build up your expertise. ● Find the incongruity. ● Make the library looks like certain part of your programming lang. Extend your tools.
  • 12. Build up your expertise ● Start from reading into the library you are using now. ○ It is just one level higher than you. ○ Can you Jump to definition through your IDE or editor? ● Choose better library. ○ Avoid the red flags. For example, huge dependency for little benefits. 12
  • 14. Find the incongruity ● Compare different programming language ● Focus on incongruity: ○ The existing solution is not as good as similar thing on other domains. ○ The existing solution to the problem looks like a work around.
  • 16. The bottleneck of a workflow 16
  • 17. Extend your tools ● Example of extensible systems: ○ Lisp - Lisp macro ○ Java - Object & Polymorphism ○ Postgres - user defined function, user defined types ● Is your editor extensible? ○ Can you automate certain things by using your editor’s command? ○ vim - integrate shell’s filtering command ● Is your programming language extensible? ○ Does it allow Lisp macro? (meta programming) ○ Does it provide polymorphism mechanism? 17
  • 18. 18
  • 19. 19
  • 20. Conclusion ● Create your own library for productivity. ● Mechanism vs Policy ● Build up your expertise by reading into libraries. ● From incongruity comes the innovation. ● Extend your tools.
  • 21. Reference ● JetBrains: Language Oriented Programming: The next programming paradigm. ● Mechanism vs Policy https://lambdaisland.com/blog/2022-03-10- mechanism-vs-policy ● Leveling up https://lambdaisland.com/p/leveling-up