This talk will introduce attendees to GraphQL and then dive into the intricacies of how we built the API. It’ll cover end-to-end the flow we provide to our developers and some of the specific considerations we took when making it a public API: * solving the N+1 data retrieval problem and query planning * structuring models for optimal data retrieval * when to use GraphQL This talk will also cover some of the specifics of hooking GraphQL into a service-oriented architecture, how it’s built into our infrastructure, and the advantages you gain by having GraphQL interface with your services.
Jan Stepien - Introducing structure in Clojure - Codemotion Milan 2017Codemotion
Once you've got a couple of Clojure katas under your belt you start to wonder how to structure an entire application. Where does the logic go? Where do you respond to HTTP requests? Where to connect to the database and how to pass the connection to code which needs it? Let's see what the best practices are and which Clojure libraries can help us.
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...Codemotion
Scala is the only language that can be used to produce code that can be "trans/compiled" for the JVM, in Javascript and in native binary. This allows to write libraries that are usable in JVM and JS using the power of functional programming (i.e. cats, scalaz), generic programming (i.e. shapeless) and macro/scalameta available in Scala. In this talk, we will see how to write a Scala application backend and a SPA (scala.js/scala-js-react) that share the same code as a business logic, datamodels and transparent API call (JVM/JS) in Scala (via autowire/akka-http/circe).
Dependency Injection in Apache Spark ApplicationsDatabricks
Dependency Injection is a programming paradigm that allows for cleaner, reusable, and more easily extensible code. Though Dependency injection has existed for a while now, its use for wiring dependencies in Apache Spark applications is relatively new. In this talk, we present our adventures writing testable Spark applications with dependency injection and explain why it is different than wiring dependencies for web applications due to Spark’s unique programming model.
A short introduction (with many examples) to the Scala programming language and also an introduction to using the Play! Framework for modern, safe, efffcient and reactive web applications.
Correctness and Performance of Apache Spark SQL with Bogdan Ghit and Nicolas ...Databricks
In this talk, we present a comprehensive framework we developed at Databricks for assessing the correctness, stability, and performance of our Spark SQL engine. Apache Spark is one of the most actively developed open source projects, with more than 1200 contributors from all over the world. At this scale and pace of development, mistakes bound to happen. We will discuss various approaches we take, including random query generation, random data generation, random fault injection, and longevity stress tests. We will demonstrate the effectiveness of the framework by highlighting several correctness issues we have found through random query generation and critical performance regressions we were able to diagnose within hours due to our automated benchmarking tools.
Jan Stepien - Introducing structure in Clojure - Codemotion Milan 2017Codemotion
Once you've got a couple of Clojure katas under your belt you start to wonder how to structure an entire application. Where does the logic go? Where do you respond to HTTP requests? Where to connect to the database and how to pass the connection to code which needs it? Let's see what the best practices are and which Clojure libraries can help us.
Alberto Maria Angelo Paro - Isomorphic programming in Scala and WebDevelopmen...Codemotion
Scala is the only language that can be used to produce code that can be "trans/compiled" for the JVM, in Javascript and in native binary. This allows to write libraries that are usable in JVM and JS using the power of functional programming (i.e. cats, scalaz), generic programming (i.e. shapeless) and macro/scalameta available in Scala. In this talk, we will see how to write a Scala application backend and a SPA (scala.js/scala-js-react) that share the same code as a business logic, datamodels and transparent API call (JVM/JS) in Scala (via autowire/akka-http/circe).
Dependency Injection in Apache Spark ApplicationsDatabricks
Dependency Injection is a programming paradigm that allows for cleaner, reusable, and more easily extensible code. Though Dependency injection has existed for a while now, its use for wiring dependencies in Apache Spark applications is relatively new. In this talk, we present our adventures writing testable Spark applications with dependency injection and explain why it is different than wiring dependencies for web applications due to Spark’s unique programming model.
A short introduction (with many examples) to the Scala programming language and also an introduction to using the Play! Framework for modern, safe, efffcient and reactive web applications.
Correctness and Performance of Apache Spark SQL with Bogdan Ghit and Nicolas ...Databricks
In this talk, we present a comprehensive framework we developed at Databricks for assessing the correctness, stability, and performance of our Spark SQL engine. Apache Spark is one of the most actively developed open source projects, with more than 1200 contributors from all over the world. At this scale and pace of development, mistakes bound to happen. We will discuss various approaches we take, including random query generation, random data generation, random fault injection, and longevity stress tests. We will demonstrate the effectiveness of the framework by highlighting several correctness issues we have found through random query generation and critical performance regressions we were able to diagnose within hours due to our automated benchmarking tools.
Lightbend Lagom: Microservices Just Rightmircodotta
Microservices architecture are becoming a de-facto industry standard, but are you satisfied with the current state of the art? We are not, as we believe that building microservices today is more challenging than it should be. Lagom is here to take on this challenge. First, Lagom is opinionated and it will take some of the hard decisions for you, guiding you to produce microservices that adheres to the Reactive tenents. Second, Lagom was built from the ground up around you, the developer, to push your productivity to the next level. If you are familiar with the Play Framework's development environment, imagine that but tuned for building microservices; we are sure you are going to love it! Third, Lagom comes with batteries included for deploying in production: going from development to production could not be easier. In this session, you will get an introduction to the Lightbend Lagom framework. There will be code and live demos to show you in practice how it works and what you can do with it, making you fully equipped to build your next microservices with Lightbend Lagom!
Scal`a`ngular a term composed of Scala and Angular JS, a relationship, a handshake between Scala and Angular JS.
It's a way to build AngularJS based applications in a type-safe manner with Scala, Way to provide the bindings to core AngularJS classes and functions.
Lightbend Lagom: Microservices Just Right (Scala Days 2016 Berlin)mircodotta
Microservices architecture are becoming a de-facto industry standard, but are you satisfied with the current state of the art? We are not, as we believe that building microservices today is more challenging than it should be. Lagom is here to take on this challenge. First, Lagom is opinionated and it will take some of the hard decisions for you, guiding you to produce microservices that adheres to the Reactive tenents. Second, Lagom was built from the ground up around you, the developer, to push your productivity to the next level. If you are familiar with the Play Framework's development environment, imagine that but tuned for building microservices; we are sure you are going to love it! Third, Lagom comes with batteries included for deploying in production: going from development to production could not be easier. In this session, you will get an introduction to the Lightbend Lagom framework. There will be code and live demos to show you in practice how it works and what you can do with it, making you fully equipped to build your next microservices with Lightbend Lagom!
Production debugging is hard, and it’s getting harder. With architectures becoming more distributed and code more asynchronous and reactive, pinpointing and resolving errors that happen in production is no child’s game. This session covers some essential tools and more advanced techniques Scala developers can use to debug live applications and resolve errors quickly. It explores crucial techniques for distributed debugging - and some of the pitfalls that make resolution much harder, and can lead to downtime. The talk also touches on some little-known JVM tools and capabilities that give you super-deep visibility at high scale without making you restart it or attach debuggers.
Web pages can get very complex and slow. In this talk, I share how we solve some of these problems at LinkedIn by leveraging composition and streaming in the Play Framework. This was my keynote for Ping Conference 2014 ( http://www.ping-conf.com/ ): the video is on ustream ( http://www.ustream.tv/recorded/42801129 ) and the sample code is on github ( https://github.com/brikis98/ping-play ).
Java 9 is just around the corner, and yet many of us developers have yet to use Java 8 features in an application. The goal of this presentation is to move beyond slide-sized examples of streams and lambdas, and to show how to build a fully working end-to-end application using just the core libraries available in the latest version of Java.
In this session, Trisha will build a Java 8 application live. This application will consume a real-time feed of high velocity data, contain services that make sense of the data, and present it in a JavaFX dashboard. Along the way, we’ll encounter Java 8 streams, lambdas, new ways of working with collections, and probably bump into the new date and time API.
OSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at NetflixManish Pandit
In this talk I’d like to introduce the Scala-based API stack at Partner Innovation Group at Netflix. After seeing a massive growth in the business model and the device ecosystem, we needed a system that could scale and be flexible at the same time. Scala provided the answer and we started with a basic set of APIs which, since then, has evolved towards complex but flexible business flows. Supporting metadata for over hundreds of brands and thousands of devices, the API development has followed a well thought-out, test-driven approach, git-flow, and what most API developers dread – documentation. I will talk about the architecture of the RESTful APIs, and the development + deployment process. We use Netflix-OSS components heavily in the architecture and cloud deployment, so I will cover them as well.
Swagger is what we used for type-safe documentation, which is really easy to use and integrate. I will briefly talk about customizations we’ve done to Swagger in order to make it far more usable at Netflix.
Throughout this effort there were lessons to be learnt, and plenty of best practices and recommendations for anyone starting out to build RESTful APIs, regardless of the platform or stack of choice. It’d be a great opportunity for me to walk through the architecture, and talk about the various components, technologies, and practices that are seeing increasing adoption in the modern, API driven landscape.
- Highlight the performance benefits of using Java 8 - after all, you’ll probably have to persuade "The Management" that tampering with
existing code is worthwhile
- Demonstrate how to identify areas of code that can be updated to use Java 8 features, and how to pick which changes will give you the
most benefit
- Demonstrate how to automatically refactor your code to make use of features like lambdas and streams
- Cover some of the pros and cons of using the new features - including suggestions of when refactoring may NOT be the best idea.
Async library is an asynchronous programming facility for Scala that offers a direct API for working with Futures.
It was added in Scala version 2.10 and is implemented using macros. Its main constructs, async and await, are inspired by similar constructs introduced in C# 5.0.
Exploring Java Heap Dumps (Oracle Code One 2018)Ryan Cuprak
Memory leaks are not always simple or easy to find. Heap dumps from production systems are often gigantic (4+ gigs) with millions of objects in memory. Simple spot checking with traditional tools is woefully inadequate in these situations, especially with real data. Leaks can be entire object graphs with enormous amounts of noise. This session will show you how to build custom tools using the Apache NetBeans Profiler/Heapwalker APIs. Using these APIs, you can read and analyze Java heaps programmatically to ask really hard questions. This gives you the power to analyze complex object graphs with tens of thousands of objects in seconds.
Mobile Library Development - stuck between a pod and a jar file - Zan Markan ...Codemotion
Isaac Newton, the father of modern software engineering, called it “Standing on the shoulders of giants”. Modern development is exciting as it gets easier and easier, partly because of the wealth of resources available at our fingertips. One category of these resources are libraries, SDKs, and frameworks. This talk will be a guide into the considerations that go into building a library for both iOS/Swift and Java/Android. We will be taking cues from both my personal experience, as well as from studying how the leaders in the field do it.
Tomas Petricek - The Gamma: Democratizing data science - Codemotion Milan 2017Codemotion
What if you could look at the source code behind any visualization, understand how it works, run it to check the results using the latest data and modify the parameters to explore different aspects of the data? I this talk, I will show how we used F# and functional programming to develop a new browser-based data visualization environment. I will show two fun projects that we created looking at the history of Olympic games and testing what people know about the UK government spending. Expect to learn about fun data science and programming challenges we encountered along the way!
Lightbend Lagom: Microservices Just Rightmircodotta
Microservices architecture are becoming a de-facto industry standard, but are you satisfied with the current state of the art? We are not, as we believe that building microservices today is more challenging than it should be. Lagom is here to take on this challenge. First, Lagom is opinionated and it will take some of the hard decisions for you, guiding you to produce microservices that adheres to the Reactive tenents. Second, Lagom was built from the ground up around you, the developer, to push your productivity to the next level. If you are familiar with the Play Framework's development environment, imagine that but tuned for building microservices; we are sure you are going to love it! Third, Lagom comes with batteries included for deploying in production: going from development to production could not be easier. In this session, you will get an introduction to the Lightbend Lagom framework. There will be code and live demos to show you in practice how it works and what you can do with it, making you fully equipped to build your next microservices with Lightbend Lagom!
Scal`a`ngular a term composed of Scala and Angular JS, a relationship, a handshake between Scala and Angular JS.
It's a way to build AngularJS based applications in a type-safe manner with Scala, Way to provide the bindings to core AngularJS classes and functions.
Lightbend Lagom: Microservices Just Right (Scala Days 2016 Berlin)mircodotta
Microservices architecture are becoming a de-facto industry standard, but are you satisfied with the current state of the art? We are not, as we believe that building microservices today is more challenging than it should be. Lagom is here to take on this challenge. First, Lagom is opinionated and it will take some of the hard decisions for you, guiding you to produce microservices that adheres to the Reactive tenents. Second, Lagom was built from the ground up around you, the developer, to push your productivity to the next level. If you are familiar with the Play Framework's development environment, imagine that but tuned for building microservices; we are sure you are going to love it! Third, Lagom comes with batteries included for deploying in production: going from development to production could not be easier. In this session, you will get an introduction to the Lightbend Lagom framework. There will be code and live demos to show you in practice how it works and what you can do with it, making you fully equipped to build your next microservices with Lightbend Lagom!
Production debugging is hard, and it’s getting harder. With architectures becoming more distributed and code more asynchronous and reactive, pinpointing and resolving errors that happen in production is no child’s game. This session covers some essential tools and more advanced techniques Scala developers can use to debug live applications and resolve errors quickly. It explores crucial techniques for distributed debugging - and some of the pitfalls that make resolution much harder, and can lead to downtime. The talk also touches on some little-known JVM tools and capabilities that give you super-deep visibility at high scale without making you restart it or attach debuggers.
Web pages can get very complex and slow. In this talk, I share how we solve some of these problems at LinkedIn by leveraging composition and streaming in the Play Framework. This was my keynote for Ping Conference 2014 ( http://www.ping-conf.com/ ): the video is on ustream ( http://www.ustream.tv/recorded/42801129 ) and the sample code is on github ( https://github.com/brikis98/ping-play ).
Java 9 is just around the corner, and yet many of us developers have yet to use Java 8 features in an application. The goal of this presentation is to move beyond slide-sized examples of streams and lambdas, and to show how to build a fully working end-to-end application using just the core libraries available in the latest version of Java.
In this session, Trisha will build a Java 8 application live. This application will consume a real-time feed of high velocity data, contain services that make sense of the data, and present it in a JavaFX dashboard. Along the way, we’ll encounter Java 8 streams, lambdas, new ways of working with collections, and probably bump into the new date and time API.
OSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at NetflixManish Pandit
In this talk I’d like to introduce the Scala-based API stack at Partner Innovation Group at Netflix. After seeing a massive growth in the business model and the device ecosystem, we needed a system that could scale and be flexible at the same time. Scala provided the answer and we started with a basic set of APIs which, since then, has evolved towards complex but flexible business flows. Supporting metadata for over hundreds of brands and thousands of devices, the API development has followed a well thought-out, test-driven approach, git-flow, and what most API developers dread – documentation. I will talk about the architecture of the RESTful APIs, and the development + deployment process. We use Netflix-OSS components heavily in the architecture and cloud deployment, so I will cover them as well.
Swagger is what we used for type-safe documentation, which is really easy to use and integrate. I will briefly talk about customizations we’ve done to Swagger in order to make it far more usable at Netflix.
Throughout this effort there were lessons to be learnt, and plenty of best practices and recommendations for anyone starting out to build RESTful APIs, regardless of the platform or stack of choice. It’d be a great opportunity for me to walk through the architecture, and talk about the various components, technologies, and practices that are seeing increasing adoption in the modern, API driven landscape.
- Highlight the performance benefits of using Java 8 - after all, you’ll probably have to persuade "The Management" that tampering with
existing code is worthwhile
- Demonstrate how to identify areas of code that can be updated to use Java 8 features, and how to pick which changes will give you the
most benefit
- Demonstrate how to automatically refactor your code to make use of features like lambdas and streams
- Cover some of the pros and cons of using the new features - including suggestions of when refactoring may NOT be the best idea.
Async library is an asynchronous programming facility for Scala that offers a direct API for working with Futures.
It was added in Scala version 2.10 and is implemented using macros. Its main constructs, async and await, are inspired by similar constructs introduced in C# 5.0.
Exploring Java Heap Dumps (Oracle Code One 2018)Ryan Cuprak
Memory leaks are not always simple or easy to find. Heap dumps from production systems are often gigantic (4+ gigs) with millions of objects in memory. Simple spot checking with traditional tools is woefully inadequate in these situations, especially with real data. Leaks can be entire object graphs with enormous amounts of noise. This session will show you how to build custom tools using the Apache NetBeans Profiler/Heapwalker APIs. Using these APIs, you can read and analyze Java heaps programmatically to ask really hard questions. This gives you the power to analyze complex object graphs with tens of thousands of objects in seconds.
Mobile Library Development - stuck between a pod and a jar file - Zan Markan ...Codemotion
Isaac Newton, the father of modern software engineering, called it “Standing on the shoulders of giants”. Modern development is exciting as it gets easier and easier, partly because of the wealth of resources available at our fingertips. One category of these resources are libraries, SDKs, and frameworks. This talk will be a guide into the considerations that go into building a library for both iOS/Swift and Java/Android. We will be taking cues from both my personal experience, as well as from studying how the leaders in the field do it.
Tomas Petricek - The Gamma: Democratizing data science - Codemotion Milan 2017Codemotion
What if you could look at the source code behind any visualization, understand how it works, run it to check the results using the latest data and modify the parameters to explore different aspects of the data? I this talk, I will show how we used F# and functional programming to develop a new browser-based data visualization environment. I will show two fun projects that we created looking at the history of Olympic games and testing what people know about the UK government spending. Expect to learn about fun data science and programming challenges we encountered along the way!
Dark patterns and mobile UX design - Emilia Ciardi - Codemotion Amsterdam 2017Codemotion
Dark UX design patterns are stratagems that by choice introduce an element of confusion in order to guide, often with malice, the user in the desired direction. In this talk, we will explore some of the most used and abused dark patterns, with particular attention to mobile apps. Let's find out how much seductive is the power of the dark side.
Nicola Corti/Valentina Mazzoni - GDG Italia Meetup - Codemotion Milan 2017Codemotion
Meetup di GDG Italia, il network dei Google Developer Groups Italiani! Nicola Corti - "Building new communities in a nutshell" Creare una nuova community non è mai stato così semplice: prendete una buona dose di appassionati, aggiungete entusiasmo a volontà e condite con un po' di obiettivi comuni! Valentina Mazzoni - Comunicazioni fantastiche e come crearle Un vero e proprio survival kit per chi vuole avviare o migliorare un team di comunicazione per la propria community. Adatto a chi vuole mettersi in gioco e scoprire le meraviglie che la propria community può creare e come comunicarle.
Jacopo Nardiello - Monitoring Cloud-Native applications with Prometheus - Cod...Codemotion
We are going to talk about Prometheus and how to use to monitor micro-services "Cloud-Native" application s. We are going to dive deep into the Prometheus monitoring model, we will see what are the components be hind this system and how they integrate with each others to provide an efficient and modern monitoring sy stem. We will also have a glance on Prometheus native integrations for cloud-native environments such as Kubernetes.
Mobile UX for user engagement and monetization - Emilia Ciardi - Codemotion R...Codemotion
Codemotion Rome 2015 - The talk dives into the best practices for user engagement and monetization of mobile apps and games. Through examples and real-life scenarios, the key moments of the mobile user experience will be examined to provide guidelines and hands-on practices to help monetize apps and turn average users into a marketing and revenue building resource.
Roberto Clapis/Stefano Zanero - Night of the living vulnerabilities: forever-...Codemotion
In a tribute to Romero's masterpiece, we will examine the resurgence of vulnerabilities we all thought dead. As soon as a security expert looks at the firmware and code of IoT devices, 2017 may as well be 1997: format string bugs, basic stack overflows and hardcoded credentials arise. Zero-days are actually forever-days. We will look at a number of real world cases of industrial and consumer IoT devices we tested and broke, and besides analyzing the most common and most outstanding findings, we will wonder why we seem unable to kill these pests once and forever.
Agnieszka Naplocha - Breaking the norm with creative CSS - Codemotion Milan 2017Codemotion
Feeling uninspired and tired of constantly building the same layouts? Let’s leverage the CSS superpowers you might have heard about before, but haven’t already used. Let’s explore new CSS features that give us a great set of tools and enable to do amazing things on the web! The future of web graphics and CSS as a design language is bright, and finally it will make us less dependent on the image editors. We’re entering the new era with in-browser designing. Don’t stay behind and get some fresh air of creativity directly in the web browser.
The Most Important Thing - Mike Lee - Codemotion Amsterdam 2017Codemotion
Steve Jobs used to always talk about the "most important thing," what he sometimes called the "high-order bit," the thing we should be working on, and thinking about, to the exclusion of others. What does it mean? How do we recognize it? Why is it important? What is our "most important thing," and what is the most important "most important thing"? This might sound trivial, but it’s not. This talk will be inspiring, but it will also be upsetting. Often the most important thing is not what we wish it was, and finding it can be like Armageddon, as your entire future is destroyed.
From Doctor to Coder: A Whole New World? - Aisha Sie - Codemotion Amsterdam 2017Codemotion
Everyone who calls themselves a "coder" had to start somewhere. For some of us, that start was in an unrelated field. This talk brings you along on a young doctor's joyous journey from the wondrous world of medical academia into the terrifying territory of tech. We'll reflect on differences and similarities between the medical and technical worlds and the learning process after a career switch. We'll discuss practical insights in what makes tech learning unique and what might make it better, and "behind the scenes of tech" glimpses that left this newbie coder wishing for blissful ignorance.
Building multi lingual and empatic bots - Sander van den Hoven - Codemotion A...Codemotion
We are entering an era where interactions with computers will drastically change. Standard I/O will be replaced by solutions that interact with natural language either spoken or written. The signs of this change are the numerous bots that appear everywhere. The most popular are chatbots. This session focusses on bots, to access them with any client and to create meaningful dialogs respecting the language and emotion of the user.
Alessandro Confetti - Learn how to build decentralized and serverless html5 a...Codemotion
Do you have an idea for a startup and don't want to pay for scaling it up? Forget about bandwidth problems, servers to install and pay for, with the power of IPFS and the blockchain. In this talk, we will explore how to build an HTML5 DAPP (distributed application) with EmbarkJS, and figure out how to rethink servers, storage, messaging, data and payments in a distributed and decentralised way with the help of Ethereum's smart contracts and IPFS distributed storage.
Dan Persa, Maximilian Fellner - The recipe for scalable frontends - Codemotio...Codemotion
The future of e-commerce requires personalized content for each individual customer. With over 20 million active users, Zalando is facing the challenge of making its frontends more scalable in order to achieve this goal. We brought a solution from the backend to the frontend: microservices. In addition to creating Project Mosaic (https://www.mosaic9.org)—our solution for modular frontends—and using a toolbox of modern web technologies like React and Webpack, we built an architecture that can scale to virtually any size and even support targets other than the browser.
Monicelli - Stefano Sanfilippo - Codemotion Roma 2015Codemotion
Codemotion Roma 2015 - Stefano Sanfilippo presenta il linguaggio Monicelli, una translitterazione di C++ dedicata alle "supercazzele" di Amici Miei. Il linguaggio della finale di #CodeFactor.
Andrea Maietta - Il fascino della supercazzola: un breve viaggio nel mondo de...Codemotion
"Lei ha clacsonato" è l'incipit di un programma scritto in Monicelli, un linguaggio che usa come istruzioni le supercazzole rese famose nei vari film "Amici miei". Monicelli è uno dei tanti linguaggi esoterici, nati un po' per gioco e un po' come sfida; alcuni hanno lo scopo di divertire, altri sono pensati per mucche e oranghi, altri ancora per essere estremamente difficili da usare, al punto di meritarsi il nome di un cerchio dell'inferno dantesco. Pensate che il vostro collega scriva codice incomprensibile? Think again.
Lorna Mitchell - Becoming Polyglot - Codemotion Milan 2017Codemotion
To be polyglot is to be a true citizen of the software world; to accrue and apply skills beyond the technologies you use in your day-to-day activities. Some of our best work as engineers transcends a particular language or tool: debugging superpowers are needed in every tech stack, and the ability to coax a new toolchain to play nicely is a key skill. Tips for approaching new tools, platforms and communities will help you confidently pick up some fresh technologies and add new tools to your toolbox.
Webinar: Mario Cartia - Facciamo il Punto su Presente e Futuro dei framework ...Codemotion
Poco più di 10 anni fa nasceva il framework opensource Hadoop rivoluzionando il mondo dei Big Data. Nato come implementazione opensource di due tecnologie di Google, MapReduce e GFS, metteva a disposizione di tutti strumenti per l'analisi di grandi quantità di dati che fino ad allora erano stati appannaggio del colosso di Mountain View. Qualche anno dopo presso l'AMPLab dell'Università di Berkeley nasceva un altro framework che avrebbe rivoluzionato il settore: Spark. Durante il webinar verrà analizzato lo "stato dell'arte" di questi due prodotti oggi nonché le features che verranno introdotte a breve disponibili attualmente in modalità "sperimentale" nelle versioni in fase di sviluppo.
Fabrizio Cornelli - Antropologia di un Dev(Sec)Ops secondo il modello Hunter ...Codemotion
Da qualche tempo è buona prassi accorpare sviluppo e operazioni. Che dire invece della sicurezza? Nel mondo "business" c'è un modello interessante che descrive due diverse figure: Hunter e Farmer, uno più esplorativo e adatto alle novità, uno più sociale e costruttivo. In questo incontro fornirò un'interpretazione di questo modello con lo scopo di semplificare la convivenza tra metodologie significativamente diverse.
We recently hosted (3/12/18) a GraphQL meetup in Los Angeles where we discussed how at Replicated we made the transition from using REST API’s to using GraphQL Here are the slides from the discussion.
This talk is primarily for web developers. It's about understanding how to write an API client that is testable and sensible without being more opinionated than necessary.
A Python-centric talk given at PyTennessee 2015 in Nashville, TN.
Flask and Angular: An approach to build robust platformsAyush Sharma
AngularJS is a really powerful and extensible Javascript library that can be used for all number of applications. The team that up with Flask and you've got a great power and maintainability.
MongoDB World 2019: Building a GraphQL API with MongoDB, Prisma, & TypeScriptMongoDB
Originally developed by Facebook, GraphQL is taking over the industry and replaces REST as an API standard. Learn how it works and build your own GraphQL API with Prisma, MongoDB & TypeScript. Prisma auto-generates a MonogDB client to connect your GraphQL resolvers with MongoDB in a type-safe way.
Specification-Driven Development of REST APIs by Alexander Zinchuk OdessaJS Conf
A good API specification isn’t just about writing API documentation well. I want to share examples of how one can:
- Make unit tests simpler and more reliable;
- Set up user input preprocessing and validation;
- Automate serialization and ensure response consistency, and event
- Enjoy the benefits of static typing;
This approach is a compilation of different discrete ideas, all based on the smart use of an API specification.
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Codemotion
Increased complexity makes it very hard and time-consuming to keep your software bug-free and secure. We introduce fuzz-testing as a method for automatically and continuously discovering vulnerabilities hidden in your code. The talk will explain how fuzzing works and how to integrate fuzz-testing into your Software Development Life Cycle to increase your code’s security.
Pompili - From hero to_zero: The FatalNoise neverending storyCodemotion
It was 1993 when we decided to venture in a beat'em up game for Amiga. The Catalypse's success story pushed me and my comrade to create something astonishing for this incredible game machine... but things went harder, assumptions were slightly different, and italian competitors appeared out of nowhere... the project died in 1996. Story ended? Probably not...
Il Commodore 65 è un prototipo di personal computer che Commodore avrebbe dovuto mettere in commercio quale successore del Commodore 64. Purtroppo la sua realizzazione si fermò appunto allo stadio prototipale. Racconterò l'affascinante storia del suo sviluppo ed il perchè della soppressione del progetto ormai ad un passo dalla immissione in commercio.
Rivivere l'ebbrezza di progettare un vecchio computer o una consolle da bar è oggi possibile sfruttando le FPGA, ovvero logiche programmabili che consentono a chiunque di progettare il proprio hardware o di ricrearne uno del passato. In questa sessione si racconta come dal reverse engineering dell'hardware di vecchie glorie come il Commodore 64 e lo ZX Spectrum sia stato possibile farle rivivere attraverso tecnologie oggi alla portata di tutti.
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Codemotion
There's a lot of talk about blockchain, but how does the technology behind it actually work? For developers, getting some hands-on experience is the fastest way to get familiair with new technologies. So let's build a blockchain, then! In this session, we're going to build one in plain old Java, and have it working in 40 minutes. We'll cover key concepts of a blockchain: transactions, blocks, mining, proof-of-work, and reaching consensus in the blockchain network. After this session, you'll have a better understanding of core aspects of blockchain technology.
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Codemotion
When was the last time you were truly lost? Thanks to the maps and location technology in our phones, a whole generation has now grown up in a world where getting lost is truly a thing of the past. Location technology goes far beyond maps in the palm of our hand, however. In this talk, we will explore how a ridesharing app works. How do we discover our destination?How do we find the closest driver? How do we display this information on a map? How do we find the best route?To answer these questions,we will be learning about a variety of location APIs, including Maps, Positioning, Geocoding etc.
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Codemotion
Eward Driehuis, SecureLink's research chief, will guide you through the bumpy ride we call the cyber threat landscape. As the industry has over a decade of experience of dealing with increasingly sophisticated attacks, you might be surprised to hear more attacks slip through the cracks than ever. From analyzing 20.000 of them in 2018, backed by a quarter of a million security events and over ten trillion data points, Eward will outline why this happens, how attacks are changing, and why it doesn't matter how neatly or securely you code.
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 - Codemotion
IoT revolution is ended. Thanks to hardware improvement, building an intelligent ecosystem is easier than never before for both startups and large-scale enterprises. The real challenge is now to connect, process, store and analyze data: in the cloud, but also, at the edge. We’ll give a quick look on frameworks that aggregate dispersed devices data into a single global optimized system allowing to improve operational efficiency, to predict maintenance, to track asset in real-time, to secure cloud-connected devices and much more.
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Codemotion
What if Virtual Reality glasses could transform your environment into a three-dimensional work of art in realtime in the style of a painting from Van Gogh? One of the many interesting developments in the field of Deep Learning is the so called "Style Transfer". It describes a possibility to create a patchwork (or pastiche) from two images. While one of these images defines the the artistic style of the result picture, the other one is used for extracting the image content. A team from TNG Technology Consulting managed to build an AI showcase using OpenCV and Tensorflow to realize such goggles.
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Codemotion
Blockchain (and Cryptocurrency) is an evolution of 20-year old research from scientists like Chaum, Lamport, and Castro & Liskov. Due to the current hype, it's hard to distinguish beneficial aspects of the technology from a desire for a "silver bullet" for device security, verifiable logistics, or "saving democracy". The problem: blockchain introduces new security challenges - and blind adoption without understanding reduces overall security. In this talk, Melanie Rieback and Klaus Kursawe explain the pitfalls and limits of blockchain, so you can avoid making your applications LESS secure.
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Codemotion
Networking is a core part of computing in the digital world we inhabit. But, how well do you know how it works? Do you understand all the moving parts of the OSI stack inside your computer, and how the network is actually put together? How can this ever work? This guided safari of layers, standards, protocols, and happenstance will bring us close to the copper wire, and up through the layers of CDMA/CD, ARP, routing and HTTP. We will make a few excursions through patchworks that still work forty years later, and cleverly designed mechanisms that show that simplicity is the only way to last.
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Codemotion
Performance tests are not only an important instrument for understanding a system and its runtime environment. It is also essential in order to check stability and scalability – non-functional requirements that might be decisive for success. But won't my cloud hosting service scale for me as long as I can afford it? Yes, but… It only operates and scales resources. It won't automatically make your system fast, stable and scalable. This talk shows how such and comparable questions can be clarified with performance tests and how DevOps teams benefit from regular test practise.
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Codemotion
Sascha will demonstrate the opportunities and challenges of Conversational AI learned from the practice. Both Technology and User Experience will be covered introducing a process finding micro-moments, writing happy paths, gathering intents, designing the conversational flow, and finally publishing on almost all channels including Voice Services and Chatbots. Valuable for enterprises, developers, and designers. All live on stage in just minutes and with almost no code.
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Codemotion
A key challenge we face at Pacmed is quickly calibrating and deploying our tools for clinical decision support in different hospitals, where data formats may vary greatly. Using Intensive Care Units as a case study, I’ll delve into our scalable Python pipeline, which leverages Pandas’ split-apply-combine approach to perform complex feature engineering and automatic quality checks on large time-varying data, e.g. vital signs. I’ll show how we use the resulting flexible and interpretable dataframes to quickly (re)train our models to predict mortality, discharge, and medical complications.
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Codemotion
Coolblue is a proud Dutch company, with a large internal development department; one that truly takes CI/CD to heart. Empowerment through automation is at the heart of these development teams, and with more than 1000 deployments a day, we think it's working out quite well. In this session, Pat Hermens (a Development Managers) will step you through what enables us to move so quickly, which tools we use, and most importantly, the mindset that is required to enable development teams to deliver at such a rapid pace.
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...Codemotion
Quantum computers can use all of the possible pathways generated by quantum decisions to solve problems that will forever remain intractable to classical compute power. As the mega players vie for quantum supremacy and Rigetti announces its $1M "quantum advantage" prize, we live in exciting times. IBM-Q and Microsoft Q# are two ways you can learn to program quantum computers so that you're ready when the quantum revolution comes. I'll demonstrate some quantum solutions to problems that will forever be out of reach of classical, including organic chemistry and large number factorisation.
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Codemotion
Chinese food exploded across America in the early 20th century, rapidly adapting to local tastes while also spreading like wildfire. How was it able to spread so fast? The GY6 is a family of scooter engines that has achieved near total ubiquity in Europe. It is reliable and cheap to manufacture, and it's made in factories across China. How are these factories able to remain afloat? Chinese-American food and the GY6 are both riveting studies in product-market fit, and both are the product of a distributed open source-like development model. What lessons can we learn for open source software?
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Codemotion
The design space has exploded in size within the last few years and Sketch is one of the most important milestones to represent the phenomenon. But behind the scenes of this growing reality there is a remote team that revolutionizes the design space all without leaving the home office. This talk will present how Sketch has grown to become a modern, product designer's tool.
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Codemotion
Would you fly in a plane designed by a craftsman or would you prefer your aircraft to be designed by engineers? We are learning that science and empiricism works in software development, maybe now is the time to redefine what “Software Engineering” really means. Software isn't bridge-building, it is not car or aircraft development either, but then neither is Chemical Engineering. Engineering is different in different disciplines. Maybe it is time for us to begin thinking about retrieving the term "Software Engineering" maybe it is time to define what our "Engineering" discipline should be.
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Codemotion
What is the job of a CTO and how does it change as a startup grows in size and scale? As a CTO, where should you spend your focus? As an engineer aspiring to be a CTO, what skills should you pursue? In this inspiring and personal talk, I describe my journey from early Red Hat engineer to CTO at Bloomon. I will share my view on what it means to be a CTO, and ultimately answer the question: Should the CTO be coding?
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
I have heard many times that architecture is not important for the front-end. Also, many times I have seen how developers implement features on the front-end just following the standard rules for a framework and think that this is enough to successfully launch the project, and then the project fails. How to prevent this and what approach to choose? I have launched dozens of complex projects and during the talk we will analyze which approaches have worked for me and which have not.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
12. Query
The representation of data you
want returned
query {
business(id: "yelp") {
name
rating
reviews {
text
}
hours {
...
}
}
}
13. Schema
The representation of your data
structure
class Business(ObjectType):
name = graphene.String()
alias = graphene.String()
reviews = graphene.List(Review)
def resolve_name(root, ...):
return "Yelp"
def resolve_alias(root, ...):
return "yelp-sf"
def resolve_reviews(root, ...):
return [
Review(...)
for review in reviews
]
14. Fields
The attributes available on your
schema
class Business(ObjectType):
name = graphene.String()
alias = graphene.String()
reviews = graphene.List(Review)
def resolve_name(root, ...):
return "Yelp"
def resolve_alias(root, ...):
return "yelp-sf"
def resolve_reviews(root, ...):
return [
Review(...)
for review in reviews
]
16. Resolvers
Functions that retrieve data for a
specific field in a schema
class Business(ObjectType):
name = graphene.String()
alias = graphene.String()
reviews = graphene.List(Review)
def resolve_name(root, ...):
return "Yelp"
def resolve_alias(root, ...):
return "yelp-sf"
def resolve_reviews(root, ...):
return [
Review(...)
for review in reviews
]
41. The N+1 Problem
The inefficient loading of data by making
individual, sequential queries
cats = load_cats()
cat_hats = [
load_hats_for_cat(cat)
for cat in cats
]
# SELECT * FROM cat WHERE ...
# SELECT * FROM hat WHERE catID = 1
# SELECT * FROM hat WHERE catID = 2
# SELECT * FROM hat WHERE catID = ...
42. query {
b1: business(id: "yelp") {
name
}
b2: business(id: "moma") {
name
}
b3: business(id: "sushi") {
name
}
b4: business(id: "poke") {
name
}
b5: business(id: "taco") {
name
}
b6: business(id: "pizza") {
name
}
}
GET /internalapi/yelp
GET /internalapi/moma
GET /internalapi/sushi
GET /internalapi/poke
GET /internalapi/taco
GET /internalapi/pizza
43. query {
b1: business(id: "yelp") {
name
}
b2: business(id: "moma") {
name
}
b3: business(id: "sushi") {
name
}
b4: business(id: "poke") {
name
}
b5: business(id: "taco") {
name
}
b6: business(id: "pizza") {
name
}
}
GET /internalapi/yelp
GET /internalapi/moma
GET /internalapi/sushi
GET /internalapi/poke
GET /internalapi/taco
GET /internalapi/pizza
44. Dataloaders!
• An abstraction layer to load data in your resolvers
• Handle batching ids and deferring execution until all of your data has been
aggregated
45. query {
b1: business(id: "yelp") {
name
}
b2: business(id: "moma") {
name
}
b3: business(id: "sushi") {
name
}
b4: business(id: "poke") {
name
}
b5: business(id: "taco") {
name
}
b6: business(id: "pizza") {
name
}
}
GET /internalapi/yelp
GET /internalapi/moma
GET /internalapi/sushi
GET /internalapi/poke
GET /internalapi/taco
GET /internalapi/pizza
46. query {
b1: business(id: "yelp") {
name
}
b2: business(id: "moma") {
name
}
b3: business(id: "sushi") {
name
}
b4: business(id: "poke") {
name
}
b5: business(id: "taco") {
name
}
b6: business(id: "pizza") {
name
}
}
GET /internalapi/yelp,moma,sushi,poke,
77. Normally
GET https://api.yelp.com/v3/search
GET https://api.yelp.com/v3/search
GET https://api.yelp.com/v3/search
GET https://api.yelp.com/v3/search
GET https://api.yelp.com/v3/search
GET https://api.yelp.com/v3/search
GET https://api.yelp.com/v3/search
GET https://api.yelp.com/v3/search
GET https://api.yelp.com/v3/search
GET https://api.yelp.com/v3/search
81. Node-based
• Count individual nodes returned by
the request sent to the API
POST https://api.yelp.com/v3/graphql
query {
search(term: "burrito", location: "sf") {
business {
name
reviews {
rating
text
}
}
}
}
82. Node-based
• Count individual nodes returned by
the request sent to the API
POST https://api.yelp.com/v3/graphql
query {
search(term: "burrito", location: "sf") {
business {
name
reviews {
rating
text
}
}
}
}
83. Node-based
• Count individual nodes returned by
the request sent to the API
POST https://api.yelp.com/v3/graphql
query {
search(term: "burrito", location: "sf") {
business {
name
reviews {
rating
text
}
}
}
}
84. Node-based
• Count individual nodes returned by
the request sent to the API
POST https://api.yelp.com/v3/graphql
query {
search(term: "burrito", location: "sf") {
business {
name
reviews {
rating
text
}
}
}
}
85. Field-based
• Count each individual field returned
by the request sent to the API
POST https://api.yelp.com/v3/graphql
query {
search(term: "burrito", location: "sf") {
business {
name
id
}
}
}
86. Field-based
• Count each individual field returned
by the request sent to the API
{
"data": {
"search": {
"business": [
{
"name": "El Farolito",
"id": "el-farolito-san-francisco-2"
},
{
"name": "La Taqueria",
"id": "la-taqueria-san-francisco-2"
},
{
"name": "Taqueria Guadalajara",
"id": "taqueria-guadalajara-san-francisco"
},
{
"name": "Taqueria Cancún",
"id": "taqueria-cancún-san-francisco-5"
},
{
"name": "Little Taqueria",
"id": "little-taqueria-san-francisco"
},
{
"name": "Pancho Villa Taqueria",
"id": "pancho-villa-taqueria-san-francisco"
},
{
"name": "Tacorea",
"id": "tacorea-san-francisco"
},
{
"name": "El Burrito Express - San Francisco",
"id": "el-burrito-express-san-francisco-san-francisco"
},
{
"name": "El Burrito Express",
"id": "el-burrito-express-san-francisco"
},
...
]
}
}
87. Field-based
• Count each individual field returned
by the request sent to the API
{
"data": {
"search": {
"business": [
{
"name": "El Farolito",
"id": "el-farolito-san-francisco-2"
},
{
"name": "La Taqueria",
"id": "la-taqueria-san-francisco-2"
},
{
"name": "Taqueria Guadalajara",
"id": "taqueria-guadalajara-san-francisco"
},
{
"name": "Taqueria Cancún",
"id": "taqueria-cancún-san-francisco-5"
},
{
"name": "Little Taqueria",
"id": "little-taqueria-san-francisco"
},
{
"name": "Pancho Villa Taqueria",
"id": "pancho-villa-taqueria-san-francisco"
},
{
"name": "Tacorea",
"id": "tacorea-san-francisco"
},
{
"name": "El Burrito Express - San Francisco",
"id": "el-burrito-express-san-francisco-san-francisco"
},
{
"name": "El Burrito Express",
"id": "el-burrito-express-san-francisco"
},
...
]
}
}
88. Securing the API
• Bulk endpoints to minimize the number of queries
• Network-level caching
• Daily rate limiting
• Limiting the maximum query size
• Per-resolver level authentication
• Persisted queries
89. Securing the API
• Bulk endpoints to minimize the number of queries
• Network-level caching
• Daily rate limiting
• Limiting the maximum query size
• Per-resolver level authentication
• Persisted queries
90. class MaxQuerySizeMiddleware:
MAX_SIZE = 2000
def __init__(self):
resolvers_executed = 0
def resolve(self, next, root, info, **args):
# did we hit the max for this query? nope
if resolvers_executed <= MAX_SIZE:
self.resolvers_executed += 1
return next(root, info, **args)
# we hit the max for this query
return None