Jun 4, 2019
Machine learning is blossoming at Zendesk
Bill and Ted’s Excellent Adventure!
A Short History of Machine Learning at Zendesk
We have invested heavily in ML over the past four years and we…
Click to read the full post...
More from Zendesk
Having better One-on-Ones
1:1s are often my…
The Joys of Circuit Breaking
Zendesk’s product suite is built with an evolving service oriented architecture, comprising hundreds of micro services and a growing web of interdependencies. Operating and orchestrating such a large scale distributed system can be challenging. This post will explore the importance of circuit breaking and related concepts.
A few weeks ago…
Create a test data generator using Kafka Connect
Data store migrations with no downtime
Data store migrations can be complex, especially if the application cannot afford to have maintenance downtime. We will explore some strategies that can help you navigate the complexity.
In our case, it was a migration from a NoSQL data store, DynamoDB into a relational data store, MySQL. However, this post…
Racecar v2: A New Foundation
It’s been three years since we introduced Racecar, a simple framework for building Kafka consumer applications that worked seamlessly with or without Ruby on Rails. With Racecar, building a consumer application for processing…
Recipes for running a successful technical book club at work
This blog post is our learnings from running technical book clubs at Zendesk for the past 2 years. In that time we have run four book clubs:
Two books on functional programming languages: Clojure and Scala
Reliability is very important to us so we studied the bible on Software Reliability…
The history of infrastructure at Zendesk (Part 2) — the messy middle
Validating Cloud Custodian on AWS with Moto
At Zendesk, we adopted Cloud Custodian as a framework to implement compliance across our AWS accounts. Cloud Custodian has a Domain Specific Language that allows anyone with a penchant for reading documentation to create policies that can report or act on resources in AWS, GCP, or Azure.
Deleting or re-configuring…
Datadog Log Management from Zero to One
Datadog APM Trace Search from Zero to One is the first part of advanced techniques we use at Zendesk to plan capacity and keep performance characteristics of the multi-tenant system at expected levels.
Response times vary between different API endpoints and customers, as the data set grows rapidly, and new…
Leading Machine Learning at Zendesk
I recently participated in an interview series covering careers in emerging technology fields on the French website TOM.travel. I’ve been leading machine learning at Zendesk for the last 6 years and over that time we’ve grown from two people in Melbourne to tens of people on three continents. I discussed…
Xcode 10’s build system and Code Generation (R.swift)
R.swift is an open source library which makes it both easier and type-safe to use resources such as images, fonts, and segues. It’s a really cool library, and we have used it successfully at Zendesk for quite a while now.
When building a project which uses R.swift with Xcode 10, the build will fail with the following error:
error: Build input file cannot be found: /LOCATION/R.generated.swift
Why This Happens
R.swift is integrated into projects using an Xcode build script phase. This phase generates a Swift file, R.generated.swift, which is compiled when the project is built.
The build fails because Xcode 10, with its new parallelizing build system, is trying to locate the R.generated.swift file before it has been created.
Xcode 10 allows us to specify an output file for a build script phase. We can add our R.generated.swift file as an output file as follows:
Adding our R.generated.swift file as an output file in our Xcode build script phase
This results in a successful build. Awesome! 🎉
When we encountered this initially, we opened a bug with R.swift. However, as shown above, the issue is due to changes in Xcode’s build system.
That’s it! 📱🚀👍🏽
Also available on petethedeveloper.com
Creating the ultimate flexibility via Container components in React
React Components / Zendesk Garden
This documentation includes React components and utilities that provide visuals, keyboard-navigation, localization, and…garden.zendesk.com
I wrote a Twitter thread on some of the cool stuff we’ve done that could be very useful as a starter for other people.
So here’s that thread with some extra goodies, in article form.
We’ve utilised a really cool pattern…
A Beginners Guide to Deploys and Releases
The process of releasing software to users at scale is one that can be particularly confusing for new software engineers, as most don’t have exposure to this part of the software development process until their first internship or job. I found this to be the case during my time at…
Zendesk’s Global Mesh Network- Part 1
Chaos Engineering comes to Ruby
In a micro-service environment, an unexpected service outage often comes as a surprise and when it happens it’s stressful for engineers, managers, and the clients. If you want to prepare your Ruby application for the next surprise and prevent it early then this post is for you. I will show…
Maintaining Binary Compatibility in Scala
Making the most of Answer Bot: topic group visualization using t-SNE
Kafka on Ruby
Performing Kubernetes Service CIDR Block Migration
At Zendesk, we started our Kubernetes journey in September 2015, shortly after version 1.0 was publicly available. At the time of v1.0 not much information was available and we didn’t have a lot of experience, so some configuration choices that made sense four years ago have had to be reconsidered…
Zendesk’s Global Mesh Network- Part 2
Documentation: it’s more than words
Software development is as much about communication as it is about functionality. At its core, code reflects business processes and business logic. Software never exists solely in a vacuum, it is surrounded by both context and people. Tracking the history of a business and its software becomes an increasingly important…
Running a team colocation — Days of the week
The Friday before
In preparation for the co-location week, we started off by sending a survey to gather:
Everyone’s objective for the week
List of questions they’d like answers for by the end of…
What will we leave behind?
Add Some Smarts To Your Change Data Capture
As the number of your services grows, it becomes error prone and hard…
Latest news, articles and updates montly delivered to your inbox.