Tim is a co-founder at SendGrid.
Last year I talked about SendGrid’s decision to use Go as our primary development language. For the most part this has affected only new services. Recently though, we have completed a rewrite of one of our highest load components to Go and I thought I would share the story and some of the lessons learned. Background As some background, almost a year ago one of our engineers who was helping to make the pitch of why we should use Go rewrote the service that handles final customer IP selection/transmission of data to remote SMTP servers as a proof of concept/example…READ MORE »
Back in June, SendGrid joined a large group of Internet companies in the effort to prevent dragnet surveillance of customer traffic. On our part this specifically involved adding opportunistic TLS—encrypting traffic to any mail server that supports it. While this does move us closer to the goal of complete customer privacy, there are some caveats that aren’t often talked about. Opportunistic TLS does provide better privacy than sending everything cleartext, but it does not provide any protection against an attacker attempting to hijack traffic to a specific domain. All an attacker needs to do is take over the domain, not…READ MORE »
Recently, SendGrid celebrated five years since we formed the company. Five years and over 270 billion emails later, I want to share some of my thoughts on some key lessons I’ve learned along the way. Design For Failure One of the biggest mistakes we made in the initial creation of SendGrid was focusing on getting a feature working, and then moving on to the next piece. While this was all well and good at low scale, once you have millions of messages going through the system every minute, the “one in a million” error cases start happening very regularly. Even…READ MORE »
Recently, SendGrid decided to move to using Go as its primary development language. This has been a long-standing internal battle, which I hear has happened and is continuing to happen in a number of organizations. I figured it would be productive to share our experience here, not just in why we chose to move forward with Go, but how this process played out, so that others in a similar situation can make a compelling argument for Go. Why We Needed a Change For some background, the backend systems of SendGrid were primarily written in Perl/AnyEvent in the first years, moving…READ MORE »
What is SendGrid’s Parse API? Email from friends is interactive. It’s a conversation and that’s not always the case for commercial emails. Our customers are adding more back-and-forth to their campaigns with our Parse API, whose growth in the last year has nearly tripled. The Parse API lets your app accept incoming email, including attachments, and perform some operation on the content. With more customers taking advantage of that power, we decided to polish it up to work better and share more about how it can be used. Yesterday Swift (a SendGrid evangelist) and development shop thoughtbot held…READ MORE »
We get asked quite often why we recommend customers use SMTP to send email to SendGrid, as opposed to using our REST API, and where one would be used over the other. For options on how to integrate with SendGrid go here. To start, the absolute best method to send email through SendGrid is to set up a local mail server that queues all email from your application, and then relays the messages through SendGrid as a smart host. This will have the least latency from your application’s perspective, and has the added benefit of handing your email off to…READ MORE »