Fundamentals of Search - SF & Toronto
SF: Nate Mar
TOR: Adriel Dean-Hall
Level: Intermediate, Advanced
In this hands-on workshop we will be creating a full text search system in Elixir. By the end of the workshop you'll have seen how to implement the foundations of a text search system including tokenizers and similar functions. We will see how to make our search system not only return high quality results but to do so quickly. This workshop is useful to anybody who has worked with full text search systems like Elasticsearch and is curious about the internals of such systems or anybody who is planning on developing a more custom search system tailored to their use case.
How to fix a broken React app - SF & Toronto
SF: Margo Baxter, Michael Toth, Bri Solorzano
TO: Andrew Zamojc and Dmitri Farkov
Have you ever found yourself responsible working in someone else’s horrible code that you could hardly understand? In this workshop we will start with some terrible React code that is filled with anti-patterns and console errors, and we will refactor it into a clean and elegant app that uses common best practices. You will learn how to write modular React code that is easy to read, easy to debug, and easy to extend. Your co-workers and future developers at PagerDuty will thank you. Even the future you will thank you.
We will cover topics such as modularizing your app, stateless components, when to connect Redux, state versus props, naming conventions, reducing the number of re-renders, how to incorporate the Design System, and more. Our app will be based on the PD React skeleton, incorporate real-world use cases, and address issues that we see come up frequently in code review. You will gain a deeper understanding of React and how to write better front-end code. Advanced React users can challenge themselves to find all of the anti-patterns in our code, and beginners can follow along to learn what not to do. All levels welcome.
Coaching via Powerful Questions and Active Listening - SF & Toronto
SF: Derek, Simon
TOR: Ed, Sean, Roma
This workshop will provide a brief introduction to the coaching stance, and allow participants to practice coaching with a peer. The focus of the workshop will be on asking powerful questions and actively listening for reflection, exploration, and discovery, to allow others to unlock their ability to solve their own problems. Anyone can be a coach.
0 to Observability in 30 minutes - SF & Toronto
Traditional logging and metrics aren’t good enough for high performance teams operating production systems. Event-based data collection with consistent request tagging enables high-resolution views and broad aggregation, without the loss of detail associated with time-series metrics or the slow, painful queries of log search systems.
Participants in this workshop should bring their laptops, Git repos and staging locks. We’ll provide the observability infrastructure, libraries, and example integrations. After the briefest of introductions, you’ll dive right in to adding structured event collection to as many services as possible, with the goal of seeing cross-service request tracing come to life before our very eyes
Building a simple resource framework with Elixir, Phoenix and Ecto - SF & Toronto
Bring: your laptop if you want to play along. If so, clone the (TBD) repo and run `asdf install`.
On the dev ecosystem team we've been building an elixir microservice for a brand new app directory where external developers can set up and test their apps. We end up duplicating a fair amount of code between different resources, particularly for basic CRUD. How could we make a simple and extensible framework that still feels elixirrific?
In this workshop we'll refactor app directory step by step, applying static code analysis along the way. We'll explore using Plugs for Phoenix, manipulating Ecto Changesets, setting up Behaviours and the `using` macro, and generally chasing the elusive goal: only specifying the business logic.
Burp Suite for Beginners - SF
In a sea of overly complicated web apps where one line of code can accidentally give a hacker your cat’s maiden name, security may seem like an impossible task. Thankfully for all of us, there are tools to help us hack ourselves before we smack ourselves.
Burp Suite, one of such tools, is an HTTP proxy specially made for attacking web apps like PagerDuty. Attendees of this workshop will learn the basic functions of Burp Suite, practical applications of the tool, and gain experience in a simulated environment to hone their haxxing skills.
Please come to the workshop with a working copy of FireFox as well as Burp Suite installed from here: https://portswigger.net/burp/communitydownload
Repairing A Tri-Dutonium Controller With Master/Replica Technology - Toronto
Level: Intermediate, Advanced
While chasing a KlingOps ship through the Datalands, the USS Voypager, you, and a small crew of 150 Dutonians commanded by Captain J. Tellada was transported to the far side of the galaxy. Now stuck more than 71,000 light years from home, the USS Voypager must begin its long journey back home.
Powered by tri-dutonium, a rare material that enables faster-than-light jumps, the USS Voypager is stocked with just enough fuel to make it home in time for PagerCon 2019 with nearly no margin for error. The tri-dutonium controller is a sophisticated technology backed by an on-board, horizontally-scaled, 732-million node Master-Replica MySQL database cluster, but, sadly, the tri-dutonium controller memory was wiped when the USS Voypager was transported. The controller must be reprogrammed, and you are the only one that can do it.
After learning to leverage the power of a Master-Replica topology from the Computer and working from an Elixir framework you found in a G.I.T.H.U.B. memory bank, you will be tasked with repairing the tri-dutonium controller using Read/Write Separation (RWS) and Optimistic Concurrency Control (OCC). But beware: the galaxy is a dangerous place, and your new tri-dutonium controller software will need to withstand the Cardashian's Replication Disruptor technology and the Bork's ability to freeze time.