Paul Gross's Blog
  • Home
  • About
Paul Gross

Paul Gross

I'm a lead software developer in Seattle working for Braintree Payments.

Seattle •
87 posts •

Vim Function for GitHub Links

Update (1/31/2018): I extracted this code to a vim plugin and made a few improvements to it: https://github.com/pgr0ss/vim-github-url I write a lot of code in Vim, and

Paul Gross Paul Gross

Dropwizard Can Be Simple

We had a conversation at work the other day about Dropwizard vs Spark for Java services. One of my coworkers liked the simplicity of Spark, especially when building example applications. I pointed out

Paul Gross Paul Gross

Bazel and .env Files

Many of our new apps at Braintree use environment variables for configuration. This is in line with Twelve-Factor principles and makes it easier to run the same artifact in multiple environments. In our

Paul Gross Paul Gross

Exporting YNAB to Ledger

My wife and I have been using You Need a Budget (YNAB) for a few months now. Overall, we like it, but the lack of reporting is a big missing feature. It's hard

Paul Gross Paul Gross

Migrating from WordPress to Ghost

I just finished migrating this blog from WordPress to Ghost. Why WordPress served me well for a long time, but it led to a setup that was hard to maintain. In order to

Paul Gross Paul Gross

Goodbye WordPress

This is my last post in WordPress. I’m migrating this blog to Ghost. All of the existing posts (with their current URLs) should keep working, and hopefully the RSS feed migrates as

Paul Gross Paul Gross

Java REPL with JShell and Bazel

One great new feature of the upcoming Java 9 release is JShell, a Java REPL. Java is long overdue for an official REPL, so I was eager to try it out. I found

Paul Gross Paul Gross

Migrating from Gradle to Bazel

We recently switched a collection of Java applications and libraries (in a monorepo) from Gradle to Bazel at Braintree. Overall, the transition went well and we are much happier with Bazel than Gradle.

Paul Gross Paul Gross

Partial Function Application in Java 8

I’ve been doing some Java lately, and the new functional additions in Java 8 are interesting. Java still has a long way to go, but they made functional programming in Java easier.

Paul Gross Paul Gross

Testing Isn't Enough: Fighting Bugs with Hacks

I recently gave a presentation at Rubyconf 2014 titled: Testing Isn’t Enough: Fighting Bugs with Hacks. The video and slides are now online.

Paul Gross Paul Gross

Safe Operations For High Volume PostgreSQL

This post is cross-posted at Safe Operations For High Volume PostgreSQL. We use PostgreSQL extensively at Braintree, and it backs many of our highly available services (including our main payments API). We are

Paul Gross Paul Gross

High Availability at Braintree Roundup

I had the opportunity this year to present my talk on “High Availability at Braintree” at four conferences. Here is the roundup: RubyConf Australia (February): Slides and Video Surge (September): Slides and Video

Paul Gross Paul Gross

Mingle Card Wall Greasemonkey Script

We primarily use Mingle for project management at Braintree. Personally, I find that the Mingle card wall wastes too much space. Each card is the same size, so short cards are filled with

Paul Gross Paul Gross

Development Hacks to Prevent Mistakes

This post is cross-posted at Development Hacks to Prevent Mistakes. Bugs are an inevitable part of software development. We do our best to write higher quality software, but we never fully escape releasing

Paul Gross Paul Gross

High Availability at Braintree

Update (3/31/13): The video of the talk is online: High Availability at Braintree The slides from my RubyConf Australia talk are now online: High Availability at Braintree. The slides were generated

Paul Gross Paul Gross

Scaling PostgreSQL at Braintree: Four Years of Evolution

This post is cross-posted at Scaling PostgreSQL at Braintree: Four Years of Evolution. We love PostgreSQL at Braintree. Although we use many different data stores (such as Riak, MongoDB, Redis, and Memcached), most

Paul Gross Paul Gross

Testing Interactions with a State Based Approach

There are two main types of unit tests: state based and interaction based. State based tests rely on the verification of state. These tests typically perform some operation and then check the state

Paul Gross Paul Gross

Automate statement downloading with statement_hoarder

If you’re like me, you’ve switched all of your websites to paperless statements. No more bank, credit card, or utility statements arrive in the mail. But you would still like to

Paul Gross Paul Gross

How Braintree Builds a Platform for Developers

The slides from my Intuit CTOF (“Create The Offering Forum”) talk are now online: How Braintree Builds a Platform for Developers. The slides were generated using showoff.

Paul Gross Paul Gross

Data Migrations for NoSQL with Curator

This post is cross-posted at Data Migrations for NoSQL with Curator. The NoSQL movement has brought us a wave of new data stores beyond the traditional relational databases. These data stores come with

Paul Gross Paul Gross

Untangle Domain and Persistence Logic with Curator

This post is cross-posted at http://www.braintreepayments.com/devblog/untangle-domain-and-persistence-logic-with-curator. The problem Ruby on Rails is a great web framework, and we use it extensively at Braintree to build web apps. One

Paul Gross Paul Gross

Setting up a Zotac ZBOX with XBMC as a home theater PC

I have wanted a Home theater PC for awhile to play movies, music, Hulu, and more through my TV. I thought briefly about buying a prebuilt device (like a Roku), but I decided

Paul Gross Paul Gross

Running multiple ruby projects with foreman and subcontractor

We have a suite of ruby applications at Braintree. There are many times when we need to run more than one of these apps at the same time. For example, we might need

Paul Gross Paul Gross

speclj-growl 1.0 released

I just released version 1.0 of speclj-growl. This is a plugin for the speclj test framework for clojure which adds Growl popups for each spec run. For those unfamiliar with Growl, it

Paul Gross Paul Gross

Using local jars with leiningen

Leiningen uses Maven to make dependency management of clojure projects much simpler. However, if you need to depend on jars that are not in a Maven repository, things get a little more complicated.

Paul Gross Paul Gross
Paul Gross's Blog © 2018
Latest Posts Twitter Ghost