Engineering

Performing a Content Audit—A deep dive into Spreedly.com


Getting prepped for a content audit of Spreedly's marketing website.

I came on-board in April of 2016. Post on-boarding process and adjustment to the new role, preliminary design research began. Payments was a new industry and so was Spreedly. Managing the marketing website became a responsibility. It was time to learn a few things. After speaking with colleagues the path was clear: perform a content audit . And so I did.

If you’ve never heard of a content audit before, or have but don’t know what one is, no biggie; it’s pretty simple. A content audit is literally an audit of your content. What that means can vary but in most cases it’s how many pages of a site, what keywords it ranks for, usage of h1/h2 tags, how many images, etc. Why you would perform...

Read More

Mocks and Explicit Contracts: In Practice


Writing tests for your code is easy. Writing good tests is much harder. Now throw in requests to external APIs that can return (or not return at all!) a myriad of different responses and we’ve just added a whole new layer of possible cases to our tests. When it comes to the web, it’s easy to overlook the complexity when working with an external API. It’s become so second nature that writing a line of code to initiate an HTTP request can become as casual as any other line of code within your application. However that’s not always the case.

We recently released the first version of our support application. You can see it live at https://support.spreedly.com. The goal we had in mind for the...

Read More

How do I GenStage?


I’m new to Elixir. And Erlang. And OTP’s GenServer. And GenStage. While I’ve got beginner’s-eye, I’m going to share knowledge for a general audience. So this is a doorknob-simple look at GenStage. With clear examples and I Love Lucy references. Enjoy!

What is a GenStage?

Lucy studies papers Fun and scalable? Interesting…

Erlang is a language invented to solve problems in scalable, fault-tolerant, and distributed ways. Elixir is a language built on top of Erlang that makes solving problems more fun. GenServer is an easy-to-use system for making generic server processes in Erlang (and now in Elixir). GenStage is an easy-to-use system built on top of GenServer to set up processing chains and solve the...

Read More

Purposeful Web Design—Designing the Spreedly Support App


Spreedly support app open in a browswer window

As the Lead Designer at Spreedly I am fortunate (and excited) to work on many different types of projects. I was recently involved in designing our new Support App. It’s a place where users can find answers to common support issues and do some basic debugging on their financial transactions. In this article I share insights into my process and some of the steps that were involved along the way.

I am a big fan of the design methodology behind Jeff Gothelf’s Lean UX. If you haven’t read it - check it out. Short read, easy to understand, and has a lot to do with my thinking behind the process that went into designing Spreedly’s support app.

Lean UX focuses on the idea of creating whats called...

Read More

Stop Hazing Your Potential Hires


As an employer, it’s easy for an organization like Spreedly to complain about the difficulties of the hiring process. Huge investments of time with uncertain results, noisy pipelines of dubiously qualified candidates, lying recruiters, spamming spammers who can’t read, lack of good science around hiring processes and their effectiveness, etc. Isn’t an employer’s life tough?

But it’s all just whining, because you know who has it tough? Candidates applying for jobs have it tough. They have to put their whole work history in front of a total stranger, invest time and money with no guarantee of a favorable outcome, make a series of decisions that will probably affect the rest of their life, do...

Read More

You're Smart Enough for Elixir


A brief glimpse into Elixir from an object oriented perspective.

Concurrency is complicated so Elixir must be complicated.

Learning functional programming means giving up all my knowledge about object oriented programming.

Why Elixir? I haven’t needed it so far. It’s probably only for really complicated computer science-like stuff that I’m not doing.

If you’re looking at Elixir from the perspective of an object oriented scripting language like Ruby, Python, PHP, or even Perl then you’ve probably read, heard, or made statements like those above. Even if just to yourself.

I’m here to tell you that I’ve been there. I’ve professionally programmed in each of those languages over...

Read More

Programming Puzzles Are Not the Answer


A guide to creating fair and effective hiring work samples.

It’s a common topic of discussion amongst technical organizations that the traditional, in-person, conversation-based, interview process for developers is flawed. The conventional process does not measure a candidate’s ability to perform the job in question, does not result in more successful hires, and allows for implicit bias. As a result, many companies use an interview process based on programming puzzles: one-time exercises that test a candidate’s ability to solve a specific, well-known problem.

While this may be a step in the right direction, it’s still a hugely biased and ineffective approach to hiring. In this post I explain...

Read More