SlideShare a Scribd company logo
When to reinvent the wheel?
Building a JSON-based query language for JavaScript/TypeScript
@ashleydavis75
Background
 GraphQL didn’t fit my needs
 Thus MiniQL was born
@ashleydavis75
What is GraphQL?
 A language to query and update data
 Very popular
 Created by Facebook
 Open source
 It’s quite incredible
https://graphql.org/
What’s wrong with GraphQL?
 Forced schema
 Add a new language to your stack
 Too big/complex
 Time consuming to implement
 Tedious to have to specify everything you want returned
Why reinvent the wheel?
 When is it appropriate?
@ashleydavis75
Why reinvent the wheel?
 If no one reinvented wheels we’d never have better wheels
@ashleydavis75
Why reinvent the wheel?
 The existing wheel doesn’t do what you want
 To make a better wheel
@ashleydavis75
Why reinvent the wheel?
 For fun or education
@ashleydavis75
Why reinvent the wheel?
 For fun or education
 But not at work
@ashleydavis75
Introducing MiniQL
 Features
 JSON-based query language
 Implemented in TypeScript for use in JavaScript/TypeScript
 No schema
 All fields returned by default
 Delegate features to the backend
 Node.js or the browser
@ashleydavis75
MiniQL demo
 Demo time!
@ashleydavis75
Resources
 MiniQL: https://github.com/miniql/miniql
 Interactive example: https://miniql.github.io/miniql-interactive-example/
 GraphQL: https://graphql.org/
 TypeScript template: https://github.com/ashleydavis/typescript-template
 Bootstrapping Microservices: http://bit.ly/2o0aDsP
@ashleydavis75

More Related Content

What's hot

Editable PowerPoint project plan template - wide screen
Editable PowerPoint project plan template - wide screenEditable PowerPoint project plan template - wide screen
Editable PowerPoint project plan template - wide screen
Office Timeline
 
SharePoint Saturday Utah 2018 - SharePoint Framework, Angular and Azure Funct...
SharePoint Saturday Utah 2018 - SharePoint Framework, Angular and Azure Funct...SharePoint Saturday Utah 2018 - SharePoint Framework, Angular and Azure Funct...
SharePoint Saturday Utah 2018 - SharePoint Framework, Angular and Azure Funct...
Sébastien Levert
 
Quarterly Technology Briefing, Manchester, UK September 2013
Quarterly Technology Briefing, Manchester, UK September 2013Quarterly Technology Briefing, Manchester, UK September 2013
Quarterly Technology Briefing, Manchester, UK September 2013
Thoughtworks
 
EXPERTALKS: Jul 2012 - Build using Gradle
EXPERTALKS: Jul 2012 - Build using GradleEXPERTALKS: Jul 2012 - Build using Gradle
EXPERTALKS: Jul 2012 - Build using Gradle
EXPERTALKS
 
Novidades do ASP.NET e do Visual Studio 2013
Novidades do ASP.NET e do Visual Studio 2013Novidades do ASP.NET e do Visual Studio 2013
Novidades do ASP.NET e do Visual Studio 2013
Jiéverson Maissiat
 
SharePoint Fest Chicago 2017 - SharePoint Framework, Angular & Azure Functions
SharePoint Fest Chicago 2017 - SharePoint Framework, Angular & Azure FunctionsSharePoint Fest Chicago 2017 - SharePoint Framework, Angular & Azure Functions
SharePoint Fest Chicago 2017 - SharePoint Framework, Angular & Azure Functions
Sébastien Levert
 
How To Tweak Angular 2 Performance
How To Tweak Angular 2 PerformanceHow To Tweak Angular 2 Performance
How To Tweak Angular 2 Performance
Oleksandr Tryshchenko
 
From zero to test in 60 seconds
From zero to test in 60  secondsFrom zero to test in 60  seconds
From zero to test in 60 seconds
Hugh McCamphill
 
Testing for performance
Testing for performanceTesting for performance
Testing for performance
Eglė Baltrimaitė
 
Telstra’s Journey to SAFe - RallyON - June 2013
Telstra’s Journey to SAFe - RallyON - June 2013Telstra’s Journey to SAFe - RallyON - June 2013
Telstra’s Journey to SAFe - RallyON - June 2013
Em Campbell-Pretty
 
ABC: Angular, Bazel, CLI
ABC: Angular, Bazel, CLIABC: Angular, Bazel, CLI
ABC: Angular, Bazel, CLI
Seven Peaks Speaks
 
Create Alexa Skills using IBM Watson Conversation and Apache OpenWhisk
Create Alexa Skills using IBM Watson Conversation and Apache OpenWhiskCreate Alexa Skills using IBM Watson Conversation and Apache OpenWhisk
Create Alexa Skills using IBM Watson Conversation and Apache OpenWhisk
Niklas Heidloff
 
Improving Information Management Delivery With Agile Data Warehousing - June ...
Improving Information Management Delivery With Agile Data Warehousing - June ...Improving Information Management Delivery With Agile Data Warehousing - June ...
Improving Information Management Delivery With Agile Data Warehousing - June ...
Em Campbell-Pretty
 
Agile Software Development and Continuous Delivery at UPT DEGI | 25th of Sep...
Agile Software Development and Continuous Delivery at UPT DEGI  | 25th of Sep...Agile Software Development and Continuous Delivery at UPT DEGI  | 25th of Sep...
Agile Software Development and Continuous Delivery at UPT DEGI | 25th of Sep...
Eduardo Ribeiro
 

What's hot (14)

Editable PowerPoint project plan template - wide screen
Editable PowerPoint project plan template - wide screenEditable PowerPoint project plan template - wide screen
Editable PowerPoint project plan template - wide screen
 
SharePoint Saturday Utah 2018 - SharePoint Framework, Angular and Azure Funct...
SharePoint Saturday Utah 2018 - SharePoint Framework, Angular and Azure Funct...SharePoint Saturday Utah 2018 - SharePoint Framework, Angular and Azure Funct...
SharePoint Saturday Utah 2018 - SharePoint Framework, Angular and Azure Funct...
 
Quarterly Technology Briefing, Manchester, UK September 2013
Quarterly Technology Briefing, Manchester, UK September 2013Quarterly Technology Briefing, Manchester, UK September 2013
Quarterly Technology Briefing, Manchester, UK September 2013
 
EXPERTALKS: Jul 2012 - Build using Gradle
EXPERTALKS: Jul 2012 - Build using GradleEXPERTALKS: Jul 2012 - Build using Gradle
EXPERTALKS: Jul 2012 - Build using Gradle
 
Novidades do ASP.NET e do Visual Studio 2013
Novidades do ASP.NET e do Visual Studio 2013Novidades do ASP.NET e do Visual Studio 2013
Novidades do ASP.NET e do Visual Studio 2013
 
SharePoint Fest Chicago 2017 - SharePoint Framework, Angular & Azure Functions
SharePoint Fest Chicago 2017 - SharePoint Framework, Angular & Azure FunctionsSharePoint Fest Chicago 2017 - SharePoint Framework, Angular & Azure Functions
SharePoint Fest Chicago 2017 - SharePoint Framework, Angular & Azure Functions
 
How To Tweak Angular 2 Performance
How To Tweak Angular 2 PerformanceHow To Tweak Angular 2 Performance
How To Tweak Angular 2 Performance
 
From zero to test in 60 seconds
From zero to test in 60  secondsFrom zero to test in 60  seconds
From zero to test in 60 seconds
 
Testing for performance
Testing for performanceTesting for performance
Testing for performance
 
Telstra’s Journey to SAFe - RallyON - June 2013
Telstra’s Journey to SAFe - RallyON - June 2013Telstra’s Journey to SAFe - RallyON - June 2013
Telstra’s Journey to SAFe - RallyON - June 2013
 
ABC: Angular, Bazel, CLI
ABC: Angular, Bazel, CLIABC: Angular, Bazel, CLI
ABC: Angular, Bazel, CLI
 
Create Alexa Skills using IBM Watson Conversation and Apache OpenWhisk
Create Alexa Skills using IBM Watson Conversation and Apache OpenWhiskCreate Alexa Skills using IBM Watson Conversation and Apache OpenWhisk
Create Alexa Skills using IBM Watson Conversation and Apache OpenWhisk
 
Improving Information Management Delivery With Agile Data Warehousing - June ...
Improving Information Management Delivery With Agile Data Warehousing - June ...Improving Information Management Delivery With Agile Data Warehousing - June ...
Improving Information Management Delivery With Agile Data Warehousing - June ...
 
Agile Software Development and Continuous Delivery at UPT DEGI | 25th of Sep...
Agile Software Development and Continuous Delivery at UPT DEGI  | 25th of Sep...Agile Software Development and Continuous Delivery at UPT DEGI  | 25th of Sep...
Agile Software Development and Continuous Delivery at UPT DEGI | 25th of Sep...
 

Similar to When to reinvent the wheel / Building a query language in TypeScript

Graph QL + Swift
Graph QL + SwiftGraph QL + Swift
Graph QL + Swift
Tadeh Alexani
 
React, GraphQL и Relay - вполне себе нормальный компонентный подход (nodkz)
React, GraphQL и Relay - вполне себе нормальный компонентный подход (nodkz)React, GraphQL и Relay - вполне себе нормальный компонентный подход (nodkz)
React, GraphQL и Relay - вполне себе нормальный компонентный подход (nodkz)
Pavel Chertorogov
 
WordPress on the Jamstack by rtCamper Muhammad Muhsin @ WordPress Colombo Meetup
WordPress on the Jamstack by rtCamper Muhammad Muhsin @ WordPress Colombo MeetupWordPress on the Jamstack by rtCamper Muhammad Muhsin @ WordPress Colombo Meetup
WordPress on the Jamstack by rtCamper Muhammad Muhsin @ WordPress Colombo Meetup
rtCamp
 
How to GraphQL
How to GraphQLHow to GraphQL
How to GraphQL
Tomasz Bak
 
GraphQL - Missing Link In REST
GraphQL -  Missing Link In RESTGraphQL -  Missing Link In REST
GraphQL - Missing Link In REST
Anubolu Sreekanth
 
GraphQL over REST at Reactathon 2018
GraphQL over REST at Reactathon 2018GraphQL over REST at Reactathon 2018
GraphQL over REST at Reactathon 2018
Sashko Stubailo
 
GraphQL-ify your APIs - Devoxx UK 2021
 GraphQL-ify your APIs - Devoxx UK 2021 GraphQL-ify your APIs - Devoxx UK 2021
GraphQL-ify your APIs - Devoxx UK 2021
Soham Dasgupta
 
Pave the Golden Path On Your Internal Platform
Pave the Golden Path On Your Internal PlatformPave the Golden Path On Your Internal Platform
Pave the Golden Path On Your Internal Platform
Mauricio (Salaboy) Salatino
 
APIdays Paris 2018 - GraphQL Opening Talk: The State of GraphQL, Jonathan Jal...
APIdays Paris 2018 - GraphQL Opening Talk: The State of GraphQL, Jonathan Jal...APIdays Paris 2018 - GraphQL Opening Talk: The State of GraphQL, Jonathan Jal...
APIdays Paris 2018 - GraphQL Opening Talk: The State of GraphQL, Jonathan Jal...
apidays
 
Where does CSS come from?
Where does CSS come from?Where does CSS come from?
Where does CSS come from?
Rachel Andrew
 
Graph ql subscriptions on the jvm
Graph ql subscriptions on the jvmGraph ql subscriptions on the jvm
Graph ql subscriptions on the jvm
Gerard Klijs
 
GraphQL.net
GraphQL.netGraphQL.net
GraphQL.net
Tyler Ayers
 
Building and deploying GraphQL Servers with AWS Lambda and Prisma I AWS Dev D...
Building and deploying GraphQL Servers with AWS Lambda and Prisma I AWS Dev D...Building and deploying GraphQL Servers with AWS Lambda and Prisma I AWS Dev D...
Building and deploying GraphQL Servers with AWS Lambda and Prisma I AWS Dev D...
AWS Germany
 
A Link Generator for Increasing the Utility of OpenAPI-to-GraphQL Translations
A Link Generator for Increasing the Utility of OpenAPI-to-GraphQL TranslationsA Link Generator for Increasing the Utility of OpenAPI-to-GraphQL Translations
A Link Generator for Increasing the Utility of OpenAPI-to-GraphQL Translations
IstvanKoren
 
Sashko Stubailo - The GraphQL and Apollo Stack: connecting everything together
Sashko Stubailo - The GraphQL and Apollo Stack: connecting everything togetherSashko Stubailo - The GraphQL and Apollo Stack: connecting everything together
Sashko Stubailo - The GraphQL and Apollo Stack: connecting everything together
React Conf Brasil
 
The Apollo and GraphQL Stack
The Apollo and GraphQL StackThe Apollo and GraphQL Stack
The Apollo and GraphQL Stack
Sashko Stubailo
 
Frontcon Riga - GraphQL Will Do To REST What JSON Did To XML
Frontcon Riga - GraphQL Will Do To REST What JSON Did To XMLFrontcon Riga - GraphQL Will Do To REST What JSON Did To XML
Frontcon Riga - GraphQL Will Do To REST What JSON Did To XML
Roy Derks
 
Introduction to GraphQL
Introduction to GraphQLIntroduction to GraphQL
Introduction to GraphQL
İlker Güller
 
Graphql presentation
Graphql presentationGraphql presentation
Graphql presentation
Vibhor Grover
 
GraphQL London January 2018: Graphql tooling
GraphQL London January 2018: Graphql toolingGraphQL London January 2018: Graphql tooling
GraphQL London January 2018: Graphql tooling
Søren Bramer Schmidt
 

Similar to When to reinvent the wheel / Building a query language in TypeScript (20)

Graph QL + Swift
Graph QL + SwiftGraph QL + Swift
Graph QL + Swift
 
React, GraphQL и Relay - вполне себе нормальный компонентный подход (nodkz)
React, GraphQL и Relay - вполне себе нормальный компонентный подход (nodkz)React, GraphQL и Relay - вполне себе нормальный компонентный подход (nodkz)
React, GraphQL и Relay - вполне себе нормальный компонентный подход (nodkz)
 
WordPress on the Jamstack by rtCamper Muhammad Muhsin @ WordPress Colombo Meetup
WordPress on the Jamstack by rtCamper Muhammad Muhsin @ WordPress Colombo MeetupWordPress on the Jamstack by rtCamper Muhammad Muhsin @ WordPress Colombo Meetup
WordPress on the Jamstack by rtCamper Muhammad Muhsin @ WordPress Colombo Meetup
 
How to GraphQL
How to GraphQLHow to GraphQL
How to GraphQL
 
GraphQL - Missing Link In REST
GraphQL -  Missing Link In RESTGraphQL -  Missing Link In REST
GraphQL - Missing Link In REST
 
GraphQL over REST at Reactathon 2018
GraphQL over REST at Reactathon 2018GraphQL over REST at Reactathon 2018
GraphQL over REST at Reactathon 2018
 
GraphQL-ify your APIs - Devoxx UK 2021
 GraphQL-ify your APIs - Devoxx UK 2021 GraphQL-ify your APIs - Devoxx UK 2021
GraphQL-ify your APIs - Devoxx UK 2021
 
Pave the Golden Path On Your Internal Platform
Pave the Golden Path On Your Internal PlatformPave the Golden Path On Your Internal Platform
Pave the Golden Path On Your Internal Platform
 
APIdays Paris 2018 - GraphQL Opening Talk: The State of GraphQL, Jonathan Jal...
APIdays Paris 2018 - GraphQL Opening Talk: The State of GraphQL, Jonathan Jal...APIdays Paris 2018 - GraphQL Opening Talk: The State of GraphQL, Jonathan Jal...
APIdays Paris 2018 - GraphQL Opening Talk: The State of GraphQL, Jonathan Jal...
 
Where does CSS come from?
Where does CSS come from?Where does CSS come from?
Where does CSS come from?
 
Graph ql subscriptions on the jvm
Graph ql subscriptions on the jvmGraph ql subscriptions on the jvm
Graph ql subscriptions on the jvm
 
GraphQL.net
GraphQL.netGraphQL.net
GraphQL.net
 
Building and deploying GraphQL Servers with AWS Lambda and Prisma I AWS Dev D...
Building and deploying GraphQL Servers with AWS Lambda and Prisma I AWS Dev D...Building and deploying GraphQL Servers with AWS Lambda and Prisma I AWS Dev D...
Building and deploying GraphQL Servers with AWS Lambda and Prisma I AWS Dev D...
 
A Link Generator for Increasing the Utility of OpenAPI-to-GraphQL Translations
A Link Generator for Increasing the Utility of OpenAPI-to-GraphQL TranslationsA Link Generator for Increasing the Utility of OpenAPI-to-GraphQL Translations
A Link Generator for Increasing the Utility of OpenAPI-to-GraphQL Translations
 
Sashko Stubailo - The GraphQL and Apollo Stack: connecting everything together
Sashko Stubailo - The GraphQL and Apollo Stack: connecting everything togetherSashko Stubailo - The GraphQL and Apollo Stack: connecting everything together
Sashko Stubailo - The GraphQL and Apollo Stack: connecting everything together
 
The Apollo and GraphQL Stack
The Apollo and GraphQL StackThe Apollo and GraphQL Stack
The Apollo and GraphQL Stack
 
Frontcon Riga - GraphQL Will Do To REST What JSON Did To XML
Frontcon Riga - GraphQL Will Do To REST What JSON Did To XMLFrontcon Riga - GraphQL Will Do To REST What JSON Did To XML
Frontcon Riga - GraphQL Will Do To REST What JSON Did To XML
 
Introduction to GraphQL
Introduction to GraphQLIntroduction to GraphQL
Introduction to GraphQL
 
Graphql presentation
Graphql presentationGraphql presentation
Graphql presentation
 
GraphQL London January 2018: Graphql tooling
GraphQL London January 2018: Graphql toolingGraphQL London January 2018: Graphql tooling
GraphQL London January 2018: Graphql tooling
 

More from Ashley Davis

Live reload across the stack
Live reload across the stackLive reload across the stack
Live reload across the stack
Ashley Davis
 
Microservices with Node.js - Livestreamed for Manning
Microservices with Node.js - Livestreamed for ManningMicroservices with Node.js - Livestreamed for Manning
Microservices with Node.js - Livestreamed for Manning
Ashley Davis
 
Rapid Fullstack Development
Rapid Fullstack DevelopmentRapid Fullstack Development
Rapid Fullstack Development
Ashley Davis
 
Rapid Fullstack Development
Rapid Fullstack DevelopmentRapid Fullstack Development
Rapid Fullstack Development
Ashley Davis
 
Building microservices with Node.js - part 3
Building microservices with Node.js - part 3Building microservices with Node.js - part 3
Building microservices with Node.js - part 3
Ashley Davis
 
Microservices with Node.js for BrisJS
Microservices with Node.js for BrisJSMicroservices with Node.js for BrisJS
Microservices with Node.js for BrisJS
Ashley Davis
 
Building microservices with Node.js - part 2
Building microservices with Node.js - part 2Building microservices with Node.js - part 2
Building microservices with Node.js - part 2
Ashley Davis
 
Building microservices with Node.js - part 1
Building microservices with Node.js - part 1Building microservices with Node.js - part 1
Building microservices with Node.js - part 1
Ashley Davis
 
How to be a good developer
How to be a good developerHow to be a good developer
How to be a good developer
Ashley Davis
 
Crafting build pipelines with Docker
Crafting build pipelines with DockerCrafting build pipelines with Docker
Crafting build pipelines with Docker
Ashley Davis
 
How to be a good developer
How to be a good developerHow to be a good developer
How to be a good developer
Ashley Davis
 
Building desktop apps in java script with Electron
Building desktop apps in java script with ElectronBuilding desktop apps in java script with Electron
Building desktop apps in java script with Electron
Ashley Davis
 
Testing trading strategies in JavaScript
Testing trading strategies in JavaScriptTesting trading strategies in JavaScript
Testing trading strategies in JavaScript
Ashley Davis
 
Node.js memory limitations
Node.js memory limitationsNode.js memory limitations
Node.js memory limitations
Ashley Davis
 
Ai and ml study group lecture 1 and 2
Ai and ml study group   lecture 1 and 2Ai and ml study group   lecture 1 and 2
Ai and ml study group lecture 1 and 2
Ashley Davis
 
Web scraping
Web scrapingWeb scraping
Web scraping
Ashley Davis
 
Data analysis in JavaScript
Data analysis in JavaScriptData analysis in JavaScript
Data analysis in JavaScript
Ashley Davis
 

More from Ashley Davis (17)

Live reload across the stack
Live reload across the stackLive reload across the stack
Live reload across the stack
 
Microservices with Node.js - Livestreamed for Manning
Microservices with Node.js - Livestreamed for ManningMicroservices with Node.js - Livestreamed for Manning
Microservices with Node.js - Livestreamed for Manning
 
Rapid Fullstack Development
Rapid Fullstack DevelopmentRapid Fullstack Development
Rapid Fullstack Development
 
Rapid Fullstack Development
Rapid Fullstack DevelopmentRapid Fullstack Development
Rapid Fullstack Development
 
Building microservices with Node.js - part 3
Building microservices with Node.js - part 3Building microservices with Node.js - part 3
Building microservices with Node.js - part 3
 
Microservices with Node.js for BrisJS
Microservices with Node.js for BrisJSMicroservices with Node.js for BrisJS
Microservices with Node.js for BrisJS
 
Building microservices with Node.js - part 2
Building microservices with Node.js - part 2Building microservices with Node.js - part 2
Building microservices with Node.js - part 2
 
Building microservices with Node.js - part 1
Building microservices with Node.js - part 1Building microservices with Node.js - part 1
Building microservices with Node.js - part 1
 
How to be a good developer
How to be a good developerHow to be a good developer
How to be a good developer
 
Crafting build pipelines with Docker
Crafting build pipelines with DockerCrafting build pipelines with Docker
Crafting build pipelines with Docker
 
How to be a good developer
How to be a good developerHow to be a good developer
How to be a good developer
 
Building desktop apps in java script with Electron
Building desktop apps in java script with ElectronBuilding desktop apps in java script with Electron
Building desktop apps in java script with Electron
 
Testing trading strategies in JavaScript
Testing trading strategies in JavaScriptTesting trading strategies in JavaScript
Testing trading strategies in JavaScript
 
Node.js memory limitations
Node.js memory limitationsNode.js memory limitations
Node.js memory limitations
 
Ai and ml study group lecture 1 and 2
Ai and ml study group   lecture 1 and 2Ai and ml study group   lecture 1 and 2
Ai and ml study group lecture 1 and 2
 
Web scraping
Web scrapingWeb scraping
Web scraping
 
Data analysis in JavaScript
Data analysis in JavaScriptData analysis in JavaScript
Data analysis in JavaScript
 

Recently uploaded

The Comprehensive Guide to Validating Audio-Visual Performances.pdf
The Comprehensive Guide to Validating Audio-Visual Performances.pdfThe Comprehensive Guide to Validating Audio-Visual Performances.pdf
The Comprehensive Guide to Validating Audio-Visual Performances.pdf
kalichargn70th171
 
Refactoring legacy systems using events commands and bubble contexts
Refactoring legacy systems using events commands and bubble contextsRefactoring legacy systems using events commands and bubble contexts
Refactoring legacy systems using events commands and bubble contexts
Michał Kurzeja
 
Stork Product Overview: An AI-Powered Autonomous Delivery Fleet
Stork Product Overview: An AI-Powered Autonomous Delivery FleetStork Product Overview: An AI-Powered Autonomous Delivery Fleet
Stork Product Overview: An AI-Powered Autonomous Delivery Fleet
Vince Scalabrino
 
Optimizing Your E-commerce with WooCommerce.pptx
Optimizing Your E-commerce with WooCommerce.pptxOptimizing Your E-commerce with WooCommerce.pptx
Optimizing Your E-commerce with WooCommerce.pptx
WebConnect Pvt Ltd
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
ShulagnaSarkar2
 
Migration From CH 1.0 to CH 2.0 and Mule 4.6 & Java 17 Upgrade.pptx
Migration From CH 1.0 to CH 2.0 and  Mule 4.6 & Java 17 Upgrade.pptxMigration From CH 1.0 to CH 2.0 and  Mule 4.6 & Java 17 Upgrade.pptx
Migration From CH 1.0 to CH 2.0 and Mule 4.6 & Java 17 Upgrade.pptx
ervikas4
 
ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.
Maitrey Patel
 
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid
 
The Role of DevOps in Digital Transformation.pdf
The Role of DevOps in Digital Transformation.pdfThe Role of DevOps in Digital Transformation.pdf
The Role of DevOps in Digital Transformation.pdf
mohitd6
 
Computer Science & Engineering VI Sem- New Syllabus.pdf
Computer Science & Engineering VI Sem- New Syllabus.pdfComputer Science & Engineering VI Sem- New Syllabus.pdf
Computer Science & Engineering VI Sem- New Syllabus.pdf
chandangoswami40933
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
safelyiotech
 
Hyperledger Besu 빨리 따라하기 (Private Networks)
Hyperledger Besu 빨리 따라하기 (Private Networks)Hyperledger Besu 빨리 따라하기 (Private Networks)
Hyperledger Besu 빨리 따라하기 (Private Networks)
wonyong hwang
 
Penify - Let AI do the Documentation, you write the Code.
Penify - Let AI do the Documentation, you write the Code.Penify - Let AI do the Documentation, you write the Code.
Penify - Let AI do the Documentation, you write the Code.
KrishnaveniMohan1
 
Upturn India Technologies - Web development company in Nashik
Upturn India Technologies - Web development company in NashikUpturn India Technologies - Web development company in Nashik
Upturn India Technologies - Web development company in Nashik
Upturn India Technologies
 
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
gapen1
 
Microsoft-Power-Platform-Adoption-Planning.pptx
Microsoft-Power-Platform-Adoption-Planning.pptxMicrosoft-Power-Platform-Adoption-Planning.pptx
Microsoft-Power-Platform-Adoption-Planning.pptx
jrodriguezq3110
 
Flutter vs. React Native: A Detailed Comparison for App Development in 2024
Flutter vs. React Native: A Detailed Comparison for App Development in 2024Flutter vs. React Native: A Detailed Comparison for App Development in 2024
Flutter vs. React Native: A Detailed Comparison for App Development in 2024
dhavalvaghelanectarb
 
Going AOT: Everything you need to know about GraalVM for Java applications
Going AOT: Everything you need to know about GraalVM for Java applicationsGoing AOT: Everything you need to know about GraalVM for Java applications
Going AOT: Everything you need to know about GraalVM for Java applications
Alina Yurenko
 
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptxOperational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
sandeepmenon62
 
Superpower Your Apache Kafka Applications Development with Complementary Open...
Superpower Your Apache Kafka Applications Development with Complementary Open...Superpower Your Apache Kafka Applications Development with Complementary Open...
Superpower Your Apache Kafka Applications Development with Complementary Open...
Paul Brebner
 

Recently uploaded (20)

The Comprehensive Guide to Validating Audio-Visual Performances.pdf
The Comprehensive Guide to Validating Audio-Visual Performances.pdfThe Comprehensive Guide to Validating Audio-Visual Performances.pdf
The Comprehensive Guide to Validating Audio-Visual Performances.pdf
 
Refactoring legacy systems using events commands and bubble contexts
Refactoring legacy systems using events commands and bubble contextsRefactoring legacy systems using events commands and bubble contexts
Refactoring legacy systems using events commands and bubble contexts
 
Stork Product Overview: An AI-Powered Autonomous Delivery Fleet
Stork Product Overview: An AI-Powered Autonomous Delivery FleetStork Product Overview: An AI-Powered Autonomous Delivery Fleet
Stork Product Overview: An AI-Powered Autonomous Delivery Fleet
 
Optimizing Your E-commerce with WooCommerce.pptx
Optimizing Your E-commerce with WooCommerce.pptxOptimizing Your E-commerce with WooCommerce.pptx
Optimizing Your E-commerce with WooCommerce.pptx
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
 
Migration From CH 1.0 to CH 2.0 and Mule 4.6 & Java 17 Upgrade.pptx
Migration From CH 1.0 to CH 2.0 and  Mule 4.6 & Java 17 Upgrade.pptxMigration From CH 1.0 to CH 2.0 and  Mule 4.6 & Java 17 Upgrade.pptx
Migration From CH 1.0 to CH 2.0 and Mule 4.6 & Java 17 Upgrade.pptx
 
ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.
 
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
 
The Role of DevOps in Digital Transformation.pdf
The Role of DevOps in Digital Transformation.pdfThe Role of DevOps in Digital Transformation.pdf
The Role of DevOps in Digital Transformation.pdf
 
Computer Science & Engineering VI Sem- New Syllabus.pdf
Computer Science & Engineering VI Sem- New Syllabus.pdfComputer Science & Engineering VI Sem- New Syllabus.pdf
Computer Science & Engineering VI Sem- New Syllabus.pdf
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
 
Hyperledger Besu 빨리 따라하기 (Private Networks)
Hyperledger Besu 빨리 따라하기 (Private Networks)Hyperledger Besu 빨리 따라하기 (Private Networks)
Hyperledger Besu 빨리 따라하기 (Private Networks)
 
Penify - Let AI do the Documentation, you write the Code.
Penify - Let AI do the Documentation, you write the Code.Penify - Let AI do the Documentation, you write the Code.
Penify - Let AI do the Documentation, you write the Code.
 
Upturn India Technologies - Web development company in Nashik
Upturn India Technologies - Web development company in NashikUpturn India Technologies - Web development company in Nashik
Upturn India Technologies - Web development company in Nashik
 
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
 
Microsoft-Power-Platform-Adoption-Planning.pptx
Microsoft-Power-Platform-Adoption-Planning.pptxMicrosoft-Power-Platform-Adoption-Planning.pptx
Microsoft-Power-Platform-Adoption-Planning.pptx
 
Flutter vs. React Native: A Detailed Comparison for App Development in 2024
Flutter vs. React Native: A Detailed Comparison for App Development in 2024Flutter vs. React Native: A Detailed Comparison for App Development in 2024
Flutter vs. React Native: A Detailed Comparison for App Development in 2024
 
Going AOT: Everything you need to know about GraalVM for Java applications
Going AOT: Everything you need to know about GraalVM for Java applicationsGoing AOT: Everything you need to know about GraalVM for Java applications
Going AOT: Everything you need to know about GraalVM for Java applications
 
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptxOperational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
 
Superpower Your Apache Kafka Applications Development with Complementary Open...
Superpower Your Apache Kafka Applications Development with Complementary Open...Superpower Your Apache Kafka Applications Development with Complementary Open...
Superpower Your Apache Kafka Applications Development with Complementary Open...
 

When to reinvent the wheel / Building a query language in TypeScript

  • 1. When to reinvent the wheel? Building a JSON-based query language for JavaScript/TypeScript @ashleydavis75
  • 2. Background  GraphQL didn’t fit my needs  Thus MiniQL was born @ashleydavis75
  • 3. What is GraphQL?  A language to query and update data  Very popular  Created by Facebook  Open source  It’s quite incredible https://graphql.org/
  • 4. What’s wrong with GraphQL?  Forced schema  Add a new language to your stack  Too big/complex  Time consuming to implement  Tedious to have to specify everything you want returned
  • 5. Why reinvent the wheel?  When is it appropriate? @ashleydavis75
  • 6. Why reinvent the wheel?  If no one reinvented wheels we’d never have better wheels @ashleydavis75
  • 7. Why reinvent the wheel?  The existing wheel doesn’t do what you want  To make a better wheel @ashleydavis75
  • 8. Why reinvent the wheel?  For fun or education @ashleydavis75
  • 9. Why reinvent the wheel?  For fun or education  But not at work @ashleydavis75
  • 10. Introducing MiniQL  Features  JSON-based query language  Implemented in TypeScript for use in JavaScript/TypeScript  No schema  All fields returned by default  Delegate features to the backend  Node.js or the browser @ashleydavis75
  • 11. MiniQL demo  Demo time! @ashleydavis75
  • 12. Resources  MiniQL: https://github.com/miniql/miniql  Interactive example: https://miniql.github.io/miniql-interactive-example/  GraphQL: https://graphql.org/  TypeScript template: https://github.com/ashleydavis/typescript-template  Bootstrapping Microservices: http://bit.ly/2o0aDsP @ashleydavis75

Editor's Notes

  1. PREP: Wifi hotspot Start slides on desktoip Open source tree. Start timer. Hi everyone, My name is Ashley Davis. I’m the author of a new book that’s about to be published called Bootstrapping Microservices. This book is practical and project-based guide to building applications with microservices. I’m also the CTO of Sortal and we are helping businesses manage their digital assets with machine learning. I hope everyone out there is doing ok through the pandemic. I hoping that soon we’ll all be able to meet up again in person. Please feel free to get in touch with me via Twitter. My handle is ashleydavis75 and you’ll see that printed at the bottom right of each slide. I’m going to share screen now so you can see my slides. !! Share screen !! “To reinvent the wheel” means to rebuild something that has already been built before. The connotation is that reinventing something is pointless and a waste of time, because somebody has already done it before. In general this is a good warning. And you should be careful where you invest your time and focus. In this talk we’ll explore when it’s ok to reinvent the wheel. And we’ll take a look at my new open source project called MiniQL.
  2. I’ll start with some background on what I’m talking about tonight. To make a long story short I’d really like to use GraphQL, I think it’s pretty awesome, but it didn’t quite fit my needs. So a few weeks back I decided to create my own query language which I’ve called MiniQL. It’s pretty much like GraphQL but much smaller. I had some good reasons for doing this that I’m going to talk about soon. And I can assure you that it’s not just because I’m crazy. I am a little bit crazy. So there is that. I implemented the core query engine for MiniQL in a very short amount of time. And that’s because it is very small. I’ve actually put a lot more effort into examples and documentation of MiniQL than I did for the code. This is interesting in itself. That something can be so simple to code and yet quite difficult to teach to other people. And that’s because it’s very abstract. After this experience I wanted to talk about MiniQL itself. How it was built. How it works. And why I chose to reinvent the wheel on this occasion.
  3. For those you that don’t what GraphQL is, I’ll explain it quickly. These are the facts at a glance.. GraphQL is a language to query and manipulate data. It’s very popular. It was created by Facebook. It’s open source. There’s a link on the slide there in case you want to learn more about GraphQL and I’ll repeat that link on the last slide as well. If you had thought that I don’t like GraphQL you are quite wrong. I actually think it’s quite incredible. I wanted to use GraphQL so much that I decided to lovingly rewrite the parts of it that work best for me.
  4. So if GraphQL is incredible why don’t I want to use it? Well there’s a time and place for GraphQL. I’ve seen it work really well when I was contracting. But I tried to implement it for my startup and it didn’t fit. The first problem was having to have a schema. For my startup I need to rapidly evolve and iterate our product so we can experiment to create the best product for our customers. One of my aims in this effort is to reduce the cost of experimentation. Not using a schema is one thing that helps with that. The cost of defining a schema, updating it as the data evolves and migrating the database is a headache I don’t need and don’t want. I don’t want to have create a schema for every microservice, so when it came to define a schema for my application’s data I just had to say no to GraphQL. There are some other issues of course. GraphQL adds an extra language to your stack that you and the other developers have to learn. You might not want to bring onboard that extra complexity. All things considered that isn’t a huge deal for me, but still I’d prefer not to add new languages if I can avoid it. Also GraphQL is big and complex. It takes time to learn and it takes time to implement. And I find it really tedious having to specify all the fields in the data that you want returned. For me and my startup the barrier to entry to GraphQL was too high. So I started thinking about what it would take to recreate it in a minimal form.
  5. So this leads to the most important question in this talk. When is it ok to reinvent the wheel? We are often told that reinventing the wheel is a bad thing. Some people will say we should never reinvent the wheel. And generally that’s a good principle.
  6. But consider this… If no one ever reinvented anything we’d never have better things. We’d still be stuck with the tired old programming languages, databases, operating systems and so on. There are times when reinventing the wheel is necessary for innovation and evolution. But unfortunately we can only see this in hindsight. When you make a better wheel that is successful you will be praised. But the only way to get to that success is to make it past all the people that are telling you not to reinvent the wheel.
  7. Another reason is that the existing wheel doesn’t do what you want. This is what happened to me. GraphQL didn’t fit my needs so I created my own small query language. You could also be motivated to build a better wheel. I don’t think I could build something better than GraphQL, it’s already pretty good so that’s not my motivation. But if you think you could reinvent something and surpass the limitations that came before, well that’s a pretty good motivation.
  8. Of course it’s also perfectly ok to reinvent things for fun or education. That’s actually a fantastic way to learn new things and get experience as a developer. Pick some technology that you really like and try to make your version. I say try because you might start building it then realize that it’s actually really difficult and have to give up. At this point I’d like to say that this is ok as well. Starting a project, learning something useful then dropping it is perfectly ok. When we do any kind of hobbiest coding for education we should stop coding as soon as we have learned what we wanted to learn.
  9. Ok but just don’t do this on work time. If you are rebuilding something for fun or education please do it on your own time.
  10. So please without further ado let me introduce you to MiniQL. It’s a tiny JSON-based query language inspired by GraphQL. This was born out of desire to use GraphQL but then my frustration in not being able to use it. MiniQL is implemented in TypeScript for use in JavaScript and TypeScript. The query language is just JSON of course so it’s possible in the future you might see MiniQL implementations in other languages besides TypeScript. MiniQL doesn’t require you to define a schema and all fields are returned by default. One of the things that’s important for keeping MiniQL small is that many features can be delegated to the backend. So whatever database you are using in the backend you can make use of whatever special features it has for searching, querying and pagination. My first implementation of MiniQL works both in Node.js or the browser. And I’m about to show you some examples.
  11. Show interactive example. - Star wars data - JavaScript, even though MiniQL is TypeScript MiniQL + miniql/inline Entirely browser based example of MiniQL. React / create-react-app / hooks Ant design Tailwind MonacoEditor Show GitHib page, with instructions to get it started. Show MiniQL on GitHub. Show other examples. Show MiniQL org on GitHub Explain what the other projects are. Show MiniQL code and tests. Show core engine. Note that it’s TypeScript. Show commit history. SourceTree Emphasize small commits. Each change has automated tests. This is a good example of test driven development. If you want to learn more about development, you could follow along with each commit to see step by step how this project was developed.
  12. I’m basically done. There’s a bunch links here that you might find useful. There’s a link to MiniQL and the interactive example that I demonstrated earlier. There’s a link to GraphQL if you want to learn more about that. I always start my TypeScript projects with my TypeScript template, so there’s a link there to that if you’d like to try it out. And also for anyone to learn about microservices there’s a link at the end to my new book Bootstrapping Microservices .