calendar_month August 2026
Who is a Builder?
I got to spend my Saturday at my first true builder event in Chicago, hosted by GDG Chicago. We helped 50 folks build all kinds of apps using Google technology....
Read Article chevron_rightcalendar_month June 2026
Multi-Agent Ping Pong Pairing with Antigravity
Let's take loop engineering for a test drive with ping-pong pairing, subagents, and Antigravity
Read Article chevron_rightHow XP Made A Better AI Coder
Early in my career as a professional programmer, I found myself in a subset of the Ruby community that was passionate about Extreme Programming (XP) and Agile. Those XP practices...
Read Article chevron_rightcalendar_month May 2026
Perspectives on the Future of DevRel
The simple truth is that I don’t know what the future of DevRel is. I have some ideas, but we’re all on an AI journey together, and sometimes it seems...
Read Article chevron_rightcalendar_month April 2026
Introducing Ursa Weaver
I got into tech because I didn’t like school. It wasn’t that I disliked learning or got bad grades. I just never understood the way most schools work. Why should...
Read Article chevron_rightcalendar_month November 2024
Becoming an AI-Assisted Coding Convert
My primary objection to AI-assisted development was accuracy or, rather, the lack of accuracy. In one of my first exchanges with a generative AI, I quickly got it to produce...
Read Article chevron_rightcalendar_month September 2024
Advanced friction logs: Empathy Sessions
What do you do if a friction log isn't convincing your stakeholders or they need to urgently address developer pain points? That's when I set up an empathy session.
Read Article chevron_rightcalendar_month June 2024
RAG is simpler and more powerful than you think
One of the more common techniques for preventing hallucinations is RAG or Retrieval Augmented Generation. It sounds complex, and it can be. But the basic idea is extremely simple. It...
Read Article chevron_rightAddressing Manager Feedback
Like most large companies, Google regularly asks employees to give feedback on their team and managers. Receiving that feedback is one of the most stressful days of the year for...
Read Article chevron_rightVertex AI Agent Builder Demo from I/O
At Google I/O this year, I did a demo of Vertex AI Agent Builder, where I built a simple agent that could help you reserve a picnic shelter at a...
Read Article chevron_rightcalendar_month March 2024
Productivity Tools: Bullet Journal
The thing I like about bullet journaling is that it is flexible. I've tried several paper planners as an adult. They either provide very little structure or so much structure...
Read Article chevron_rightcalendar_month November 2023
Manager Toolkit: Manage The Person In Front Of You
Ultimately, my management style is flexible and guided by three sayings: manage the person in front of you, manage the team in front of you, and manage adults.
Read Article chevron_rightManager Toolkit: Useful Manager Phrases for 1:1s
I did start Every. Single. One-on-one. with "What's on your mind?" for years. I'm sure I found it in some "OMG, you're a tech manager now" book or blog post,...
Read Article chevron_rightManager Toolkit: You Talk, I Type
When I became a manager and began supporting people on their career journeys, I started reaching back to the things I saw and learned growing up to help peole with...
Read Article chevron_rightcalendar_month October 2023
Jump Start Solutions: An optimization problem and design challenge
Those constraints gave us another optimization problem, "Fast, cheap, realistic, and understandable. Pick any N." Except we didn't know if N was 1 or 3. We just knew it wasn't...
Read Article chevron_rightStorytime - The Impossible Assignment
This story takes place early in my career when I was working as a tester. At the start of the planning cycle, I was pulled aside and told I was...
Read Article chevron_rightcalendar_month March 2023
Five Things That Change When You Become A Manager
My team at work set up a new program in 2023: shadow a manager. Anyone on the team can shadow any of the managers for a couple meetings for a...
Read Article chevron_rightcalendar_month January 2022
The Ideal Advocate
There are many ways to be an advocate, and success depends heavily on context and the people involved. This makes it hard to answer questions like “what does a normal...
Read Article chevron_rightManager Hack: A Simple Weekly Email
One of the things I've struggled with is how to get a new manager up to speed on my team and also how to help them have confidence in my...
Read Article chevron_rightcalendar_month July 2021
The Questions Doc
A lot of folks aren’t willing to publicly ask questions. Sometimes cultural factors are impacting people’s behavior. Sometimes it is impostor syndrome. Sometimes folks think that they’re bothering their super...
Read Article chevron_rightcalendar_month May 2020
Contact Tracing and Exposure Notification
An overview of the COVID-19 Exposure Notification API by Google & Apple
Read Article chevron_rightcalendar_month April 2020
CatOps: Functions Framework, Cloud Tasks, and my cat
I have a relatively simple problem, my cat, Nick, can open our front door and let himself out. Since he's a strictly indoor cat, this is a problem. In true...
Read Article chevron_rightcalendar_month August 2019
App Engine gotchas For Rubyists
It has been a while since I wrote about App Engine and Ruby. Honestly, there wasn't a lot of news to share. It continued to work! But now Google has...
Read Article chevron_rightcalendar_month June 2019
Cloud Build Dependency Graph
A couple of months ago, my coworker [Mark Mandel](https://twitter.com/Neurotic) asked if anyone had a way of visualizing dependencies in [Cloud Build](https://cloud.google.com/cloud-build/). As you'd expect, several of us jumped at the...
Read Article chevron_rightcalendar_month March 2019
Mentoring: You're Doing It Badly
All of the problems I see in mentorship come from one flawed assumption. Too many folks assume their mentee is just like them. Or at least that their mentee is...
Read Article chevron_rightcalendar_month August 2018
Friction Logs
This is where friction logs come in handy. A friction log is a document that lists out all the little stuff that makes the tool hard to use but frames...
Read Article chevron_rightAsk These Questions before Going to Prod
Many folks who are new to operations approach things with an absolutist mindset. They see things as correct or incorrect and secure or insecure. In reality, operations of all types...
Read Article chevron_rightcalendar_month May 2018
Org Mode Tagging
Org-mode supports arbitrary tags on headlines. If you are using Org to track tasks, then you might tag items "work" or "phone". Tags go at the end of the line,...
Read Article chevron_rightCloud Functions and Cat Facts
A few weeks back, Myles Borins and I did a talk at Google I/O about choosing which cloud services to use in different situations. We both feel that the best...
Read Article chevron_rightThank You To A Bad Manager
I've had some fantastic managers. The folks I've worked for at Google have been especially supportive. They help me reach my goals and also make room for me to be...
Read Article chevron_rightcalendar_month April 2018
UX Is In The Small Things
Earlier this week I got to help host a group of girls visiting Google. They are middle school students in an after-school program focused on engineering, mathematics, and science. My...
Read Article chevron_rightcalendar_month March 2018
Cleaning Up Time Machine Local Snapshots
About a week ago my mac complained that it was running out of disk space. I deleted a bunch of old TV shows and GoPro videos and called it good....
Read Article chevron_rightA Rubyist Learns List Comprehensions
In Python list comprehensions are used in places where a Rubyists would chain methods from Enumerable. For example, if I wanted to return the squares of all multiples of three...
Read Article chevron_rightTesting In Production
There's a good chance you have some kinds of tests for your code. You probably have some unit tests and you may have higher level integration tests. Maybe your integration...
Read Article chevron_rightcalendar_month February 2018
The Dreaded Whiteboard
I noticed that people had a lot of assumptions about what a made a whiteboard answer good. Most of those assumptions were not things that I and others I know...
Read Article chevron_rightcalendar_month January 2018
Auntie Aja on Abstracts: You Can Do Better
Auntie Aja is back. This time I want to talk a bit about conference session proposals. It is CFP season. I'm busy submitting talk proposals to events I want to...
Read Article chevron_rightThe Toaster Parable
The tech industry has a problem that I refer to as the " the toaster problem," which is of course, best illustrated by "the parable of the toaster". Suppose you...
Read Article chevron_rightSecurity Advice for GCS Buckets
I can't tell you how to make your buckets and objects 100% secure, I can give you some basic advice that is pretty universally applicable. The vast majority of this...
Read Article chevron_rightCase Statement Magic
Earlier this week, a conversation on the Seattle.rb Slack reminded me of one of my favorite hidden Gems in Ruby, the `case` statement. Most languages have syntax for multiway branching....
Read Article chevron_rightcalendar_month December 2017
GCP Audit Logs
Audit logs are boring. At least we hope they’re boring. If your audit logs are exciting, you are likely having a bad day. But audit logging of some sort is...
Read Article chevron_rightMetaprogramming and Currying
This year there have been many problems that require writing an interpreter for a simple language. My favorite of these has been [day 16](http://adventofcode.com/2017/day/16) which had you execute some dance...
Read Article chevron_rightYear Three: Risk Taking
December 8th is my three year anniversary at Google. Every year I've written an anniversary blog post talking about what I've learned about Developer Relations as a career in the...
Read Article chevron_rightcalendar_month November 2017
Thoughts on Personal Brand
I find it distasteful that I'm writing a blog post on personal brand. When I started thinking about the topic about five years ago every fiber of my nerdy self...
Read Article chevron_rightML Basics: Markov Models Write Fairy Tales
One way to build things like Twitter bots is to use Markov Chains. If you read the formal papers on Markov Chains and Markov Models, they seem quite complex, but...
Read Article chevron_rightcalendar_month October 2017
How I Publish My Blog
I write most of my posts in Markdown. For things I can't neatly do in Markdown, I'll use erb or even straight HTML. Since ZenWeb lets me have multiple renderers...
Read Article chevron_rightWhat is the App Engine Gem
The App Engine gem provides a set of tools that make it easier to use App Engine with Ruby and especially with Rails. It isn't that it is hard to...
Read Article chevron_rightcalendar_month September 2017
We Don't Do That Here
If no one has told you yet, as your career in tech progresses you will eventually become a custodian of culture. If you run a meetup or a team, if...
Read Article chevron_rightWhat to Wear on Stage
All the conferences I've spoken at use a body-mounted mic. The most common types are lapel mics, which clip on your shirt, or over the ear mics, which may end...
Read Article chevron_rightBattleship: Lessons Learned
On September 5th I put my battleship API to the test by having the attendees at Seattle.rb's quarterly coding workshop try to build clients against it. In the process, I...
Read Article chevron_rightML Basics: K Nearest Neighbors
One technique for doing classification is called K Nearest Neighbors or KNN. To use the algorithm you need to have some data that you've already classified correctly and a new...
Read Article chevron_rightcalendar_month August 2017
Deploying Battleship to GAE
Last time I finished writing the battleship server. The next step is to deploy it somewhere. I'm close to my first real deadline, Seattle.rb next Tuesday evening, so I'm taking...
Read Article chevron_rightStackdriver Advanced Filters
This post should help you learn some of the power user features of Stackdriver Logging. I encourage you to try some of the things in the post so that when...
Read Article chevron_rightAbout That Memo
A handful of folks have asked, 'Are you okay?'. That's a surprisingly hard question. I'm going to be more honest and less generous than I usually am and hope it...
Read Article chevron_rightBattleship: Building the Server
My initial design called for two endpoints, `/new_game` and `/turn`. I added a third endpoint at `/` that displays the rules and the format for messages to the other endpoints....
Read Article chevron_rightML Basics: Linear Regression
Based on a Twitter Poll I'll be doing a series on the basics of Machine Learning over the next few months. I plan to have a post out on the...
Read Article chevron_rightcalendar_month July 2017
Battleship Part 2: Terminal Forever
Last Time I wrote about a set of data structures and objects to implement battleship. I promised that this time I'd show how to implement the turn taking and running...
Read Article chevron_rightBattleship Part 1: Local Battles
One of my goals for this summer is to get out of my Ruby rut. I love Ruby. I like how the language feels. I like the principle of least...
Read Article chevron_rightThe Nagging Question
The biggest issue I have as a minority in tech is knowing when something happens because of my gender or when it happens for other reasons. Another way I phrase...
Read Article chevron_rightcalendar_month June 2017
You Are Not Your Code
You are not your code. You are not your ideas. You are not your products. You are not your job. You are not your employer. If I had to give...
Read Article chevron_rightMaking an Enumerable
A couple of weeks ago I wrote about some of the handy methods that are part of the Enumerable module in Ruby. This week I thought I would talk about...
Read Article chevron_rightTalks I Love: STEM For General Audiences
For this month I wanted to branch out and focus on technical or scientific talks from outside of the Ruby community.
Read Article chevron_rightcalendar_month May 2017
The Delightful Stackdriver Debugger
The product I am most excited about at the moment is Stackdriver Debugger. Every time I get to demonstrate Debugger at a conference people are initially incredulous. Once they see...
Read Article chevron_rightGoing Analog
Managing my to do list and staying focused has often been a challenge. At previous jobs, I used a variety of online tools to manage my tasks. When my work...
Read Article chevron_rightStackdriver Monitoring And Ruby
This week I have been learning how to access Stackdriver Monitoring with the google-cloud-monitoring gem.
Read Article chevron_rightTalks I Love: The Art of the Keynote
Giving a good keynote is harder than presenting a regular session. If it is a plenary session, you need to deliver content that is interesting and relevant to a wide...
Read Article chevron_rightcalendar_month April 2017
Debugging Demos
I wanted to reprise a demo I did at RubyConf 2015 where I used a distributed system to do sentiment analysis based on emoji. At the time I felt I...
Read Article chevron_rightYour Friend Enumerable
A lot of Rubyists do not know much of enumerable beyond `each`. Here are a handful of methods that are handy to know both for interviews and general purpose coding....
Read Article chevron_rightThe Google NLP API Meets Ruby
At RailsConf I'll be giving a talk on Natural Language Processing. As part of my preparation for this talk, I've been reading a bunch of the history of Natural Language...
Read Article chevron_rightTalks I Love: Historical Oratory
Thus far my 'Talks I Love' series has only included technical talks. At this point it would be easy to believe that this series is about fantastic technical content, not...
Read Article chevron_rightcalendar_month March 2017
Depth First Search & Minesweeper
In Minesweeper, when you click on a square the game reveals the number of mines nearby. If there aren't any mines nearby, the neighboring squares are revealed. If those squares...
Read Article chevron_rightAudit Logging on GCP
At Google Cloud Next two weeks ago I had the chance to chat with many folks using or experimenting with Google products. Questions about change management and audit logging came...
Read Article chevron_rightFive Useful Org-Mode Features
As I'm writing tutorials, working on new code, or creating my talks I usually take notes. A couple years ago I adopted `org-mode` in Emacs for my notes.
Read Article chevron_rightRails on App Engine: Tips and Tricks
As we have gotten closer to GA, I've built a few non-trivial Rails applications and deployed them to GAE. I've also given some one-on-one help to others deploying to App...
Read Article chevron_rightTalks I Love: Speaking Rate
This month's 'Talks I Love' post focuses on speaking rate. For me, this is one of the most challenging aspects of good delivery. My normal speaking rate is faster than...
Read Article chevron_rightcalendar_month February 2017
Monitoring BigQuery with Stackdriver
This week I sat down to learn the tools that were available for monitoring BigQuery using Stackdriver.
Read Article chevron_rightTrue Allies Listen
The most important thing you can do is listen. Actively listen with the intent to understand. Don't focus on how you can respond to what you are hearing but try...
Read Article chevron_rightRuby at Google Cloud Next
Google Cloud Next is March 8 - 10 in San Francisco. We have a dedicated team of a long time Ruby developers making large strides in our Ruby support. Here...
Read Article chevron_rightTalks I Love: Partner Talks
This month's Talks I Love post is about partner talks.
Read Article chevron_rightcalendar_month January 2017
DevOps at Google Cloud Next
Google Cloud Next is March 8 - 10 in San Francisco. There are many breakout sessions for all sorts of different interests and skill levels. Here are some of the...
Read Article chevron_rightWhat are you trying to do?
One of the most useful phrases I know is 'What are you trying to do?'. I use it a lot when I am helping folks learn. I use it a...
Read Article chevron_rightAuthenticating Google Cloud Ruby Gems
There are several different ways. Some are better suited for particular scenarios. I thought I would write up what the options are and when I would choose to use each...
Read Article chevron_rightTalks I Love: Sandi Metz and Katrina Owen
Storytelling is at the core of all public speaking. A story is the backbone of a good talk.
Read Article chevron_rightcalendar_month December 2016
Problem Solving with Advent of Code
I've been really enjoying it as a diversion from my holiday tasks. I've finished fourteen of the twenty-five problems at this point and thought it would be fun to do...
Read Article chevron_rightTwo Years
Two years ago I started work in Developer Relations. I had absolutely no idea what my job would look like when I started. I was pretty sure it would involve...
Read Article chevron_rightcalendar_month October 2016
Using Fog Google
Fog has the uneviable task of trying to provide a logical unified interface to a large number of cloud providers that have different functionality and philosophies.
Read Article chevron_rightImprove Your Speaking
Like most of America, I watched the presidential debates. While I did pay attention to the content, I was more drawn in by the speaking style of each of the...
Read Article chevron_rightMetadata Service
Managing API keys and other secrets across a build and deployment pipeline can be a pain.
Read Article chevron_rightcalendar_month September 2016
Ruby & GCP: Uploading Pictures To Cloud Storage
This is a quick tutorial on uploading files to Google Cloud Storage with Ruby.
Read Article chevron_rightWhy your talk was rejected
The headline for this blog post is a bit sensational. Realistically I can't tell you why a given talk was accepted or rejected.
Read Article chevron_rightMental Health and Supporting Each Other
A couple years ago I sat in the back of a talk listening to the person on stage discuss their struggle with depression.
Read Article chevron_rightContainers Four Ways
At one of the local meet-ups I attend containers and containerization is a relatively common topic of discussion. Google is a big advocate of containers so it probably isn't a...
Read Article chevron_rightcalendar_month August 2016
Insertion Sort
Insertion sort is the first sort I'm going to dive into.
Read Article chevron_rightDiversity is not a check box
So what does fostering diversity look like if diversity isn't a check box?
Read Article chevron_rightcalendar_month July 2016
Ruby Meets BigQuery: Part 2
Recently, Google Cloud Platform and GitHub made data from nearly three million open source repositories available on BigQuery.
Read Article chevron_rightRuby Meets BigQuery: Part 1
While we were discussing this, the tester in me wondered, what are the most common 500 gems?
Read Article chevron_rightcalendar_month June 2016
Queues and Stacks
A stack is one of the simplest data structures.
Read Article chevron_rightcalendar_month May 2016
Rails Conf 2016 - Postcards From GorbyPuff
Rails Conf 2016 - Slides
Read Article chevron_rightcalendar_month April 2016
Uploading Cat Pictures w/ Sinatra and Google Cloud Storage
Once I had a basic Sinatra app running I wanted to see how difficult it would be to add support for uploading files.
Read Article chevron_rightcalendar_month March 2016
Sinatra on Google Container Engine
Running a Sinatra app in a container on GKE
Read Article chevron_rightcalendar_month January 2016
One Year In Developer Relations
I've been a Developer Advocate at Google for a bit over a year now. I was really unsure when I took this position but now I feel like I finally...
Read Article chevron_rightcalendar_month October 2015
Conference Proposals
So you want to propose a talk for a technical conference?
Read Article chevron_rightBoundaries
My name is Aja and I don't enjoy diversity work. And that's okay.
Read Article chevron_rightcalendar_month September 2015
Cloud Minute
My team at work recently launched a series of one-minute videos that we're calling Cloud Minute.
Read Article chevron_rightcalendar_month August 2015
Using the Kubernetes Secrets API
This is the third part in my series on building and deploying a Rails app using Docker containers and Kubernetes.
Read Article chevron_rightcalendar_month July 2015
Kubernetes and Deploying to Google Container Engine
Kubernetes will take care of some of the low level monitoring and management tasks so that I can focus more on application development.
Read Article chevron_rightcalendar_month May 2015
Basic Rails App with Docker
To try out Docker I wrote a simple To Do list application using the rails scaffold.
Read Article chevron_rightForensic Log Analysis with BigQuery - Collision Conf 2015
Using BigQuery for log investigation lets you use familiar tools like SQL to dig into your logs, extract the interesting data, and even make charts of the data.
Read Article chevron_righttechbridge visit
On Monday I had the opportunity to help host a group of 29 5th and 6th grade girls at the Google office in Fremont.
Read Article chevron_rightcalendar_month April 2015
Playing With Data: Birth Plurality In the US
Are multiple births more common now than in the past?
Read Article chevron_rightcalendar_month March 2015
TIL: Hash Edition
Whenever I see the same value being used for all the keys in a hash I think...
Read Article chevron_rightcalendar_month February 2015
From the cool_shit file
I know a lot of folks (myself included) get thwarted trying to make a hash of arrays
Read Article chevron_rightcalendar_month November 2014
Approaching Rosalind Problems
This blog post is a basic outline of my process for problem solving mathy stuff
Read Article chevron_rightcalendar_month October 2014
Euler Coding Challenges
Seattle.rb has had a second Euler coding challenge now and the third is currently underway.
Read Article chevron_rightcalendar_month September 2014
What Do I Do With This Giant Pile of Data?
Golden Gate Ruby Conf 2014 Slides
Read Article chevron_rightcalendar_month August 2014
N Design Patterns You Might Actually Use (Where N < 10)
Cascadia Ruby Conf 2014 Slides
Read Article chevron_rightcalendar_month June 2014
Learn To Code Resources: Part Three
After being initially skeptical of Dev Bootcamps I've come to appreciate the work they do and believe they have a place in the landscape...
Read Article chevron_rightLearn To Code Resources: Part Two
People who've learned the basics of programming (in Ruby or another language) need resources that help them get coding 'mileage'
Read Article chevron_rightLearn To Code Resources: Part One
During the last six months it feels like at every Seattle.rb meeting we have someone who is brand new and asks 'How do I learn to code?' or 'How do...
Read Article chevron_rightcalendar_month May 2014
Seattle.rb May 2014 Coding Challenge
To remedy this I'm putting my money where my mouth is and offering up $100 to be split between two winners of a Coding Challenge during May 2014.
Read Article chevron_rightcalendar_month March 2014
A World Without Assignment
Mountain West Ruby Conf 2014 Slides
Read Article chevron_rightcalendar_month October 2013
We're sorry, but something went wrong
Cascadia Ruby 2013 Slides
Read Article chevron_rightcalendar_month September 2013
Seeing the Big Picture (GoGaRuCo 13)
Data is a hot buzz word in the industry. Every day there are more startups using Big Data
Read Article chevron_rightSeeing the Big Picture (Windy City Rails 2013)
Data is a hot buzz word in the industry. Every day there are more startups using Big Data
Read Article chevron_rightcalendar_month June 2013
You Don't Need `assert_nothing_raised`
`assert_nothing_raised` is the 9th most commonly used assertion in ruby
Read Article chevron_right2.5 hours a week
For the month of June I'm going to spend 2.5 hours a week on my personal programming projects.
Read Article chevron_rightcalendar_month May 2013
Run The Tests You Write
It seems like such a waste to write the tests and not run them.
Read Article chevron_rightWrite Tests
The most common testing anti-pattern seems to be not writing them to begin with.
Read Article chevron_rightEffective Tests
Tests reassure me that I didn't break anything and when I do break things they help me find the problem.
Read Article chevron_rightTesting Other People's Code
Your tests verify that your code is functioning correctly. Good tests verify the contract/api the software provides to users.
Read Article chevron_rightcalendar_month April 2013
A Testing Anti-Pattern Safari
Slides from my Mountain West Ruby Conf 2013 presentation.
Read Article chevron_rightcalendar_month November 2012
Gosu Makes Writing Games Easy
Gosu is a fantastic little library for making basic 2D games
Read Article chevron_rightfactorial(21) and Mac System Ruby
fact(21) => -4249290049419214848
Read Article chevron_rightcalendar_month September 2012
Pomodoro Technique and Vitamin-R
Like most people, I have days where I find it hard to concentrate and be productive.
Read Article chevron_rightcalendar_month August 2012
A Taste of Prolog at Cascadia 2012
Tomorrow I'll be giving a talk called A Taste of Prolog at Cascadia Ruby Conf.
Read Article chevron_rightcalendar_month April 2011
The Graph Gem
One of my favorite gems is [Graph](http://rubygems.org/gems/graph).
Read Article chevron_rightcalendar_month July 2010
Namespaces, models, and rails associations
I spent several hours banging my head against this.
Read Article chevron_right