February 2012
3 posts
“With over 15 billion page views a month Tumblr has become an insanely popular...”
– High Scalability - High Scalability - Tumblr Architecture - 15 Billion Page Views a Month and Harder to Scale than Twitter
Feb 13th
95 notes
1 tag
Adding Scala to Your Company's Software Stack
mobocracy: The ny-scala meetup this Monday will be discussing Scala adoption in a business environment. I’ll be on a panel along with folks from Foursquare, Meetup, Tadpad and The Ladders discussing our various experiences. Hope to see you there. Oh, here is the link as well.
Feb 12th
16 notes
Feb 4th
13 notes
January 2012
2 posts
The Right Tool for the Job: Native or Mobile Web? →
jacob: I’ll be joining Buzz Andersen, Majd Taby, Tom Dale and Lia Napolitano for a panel on the role web content plays in native mobile apps at this year’s SXSW Interactive.
Jan 19th
132 notes
3 tags
Tumblr's Finagle Redis Implementation
Tumblr uses redis as a cache/store for a number of our internal applications. Some of the things that depend on redis include: dashboard notifications (via staircar) Tiny URL’s (via gob) gearman persistent storage (via george) note counts (also via staircar, coming soon) dashboard data (coming soon via ira) Over the past six months we’ve started shifting internal services from...
Jan 12th
59 notes
December 2011
1 post
Dec 15th
150 notes
November 2011
4 posts
DashBuddy: A call to the Tumblr team →
david: This is an open comment to Tumblr dev/community staff - and I’m posting this on my Tumblr blog too. I understand that you guys are hugely busy, and that in the grand scheme of things API support for community programmers is hardly a priority. We’re all devs here, I don’t think anyone expects constant interaction. You’re absolutely right — we’ve been letting down our developer...
Nov 17th
95 notes
Nov 16th
1,400 notes
1 tag
Slides from our Velocity Europe talk on MySQL... →
Special thanks to Dallas and Matt for helping to formulate our shard-splitting algorithm, Zack for the slide deck visual excellence, and the fine folks at Velocity / O’Reilly Media for running a great conference.
Nov 11th
26 notes
Nov 2nd
241 notes
October 2011
10 posts
Oct 25th
208 notes
Oct 14th
330 notes
1 tag
Oct 13th
301 notes
Oct 13th
95 notes
Oct 13th
164 notes
Oct 13th
89 notes
2 tags
codingjester: I never thought I could get so excited about bitwise operations until I got to Tumblr.
Oct 4th
46 notes
5 tags
Adam Laiacano: Re-organizing factors in ggplot2... →
adamlaiacano: When you have a factor with many levels and want to see a histogram, it’s always more useful to see them sorted in some kind of order. An example of this is shown below: labels <- c( rep("a", 100*rexp(1)), rep("b", 100*rexp(1)), rep("c", 100*rexp(1)), rep("d", 100*rexp(1))) x <-...
Oct 4th
112 notes
3 tags
Blake Matheny: ID Generation at Scale →
mobocracy: Most companies that operate at a large enough scale run into the problem of efficiently generating ID’s. At tumblr this problem was solved with a simple libevent based HTTP service that essentially generates ID’s fast enough to meet our current demand and handles failure/startup by grabbing the…
Oct 3rd
95 notes
Oct 1st
103 notes
September 2011
7 posts
4 tags
Adam Laiacano: Using idata.frames in R →
I recently discovered the idata.frame (immutable data frame) datatype in the plyr package in R, which MASSIVELY speeds up *ply functions. Usually, when using any of the *ply functions, the pieces of the data.frame (or whatever other object you give it) are copied into new objects when being…
Sep 30th
31 notes
6 tags
WatchWatch
coderspiel: Building Network Services with Finagle and Ostrich (by Tumblr’s Blake Matheny for ny-scala)
Sep 29th
34 notes
Sep 28th
19 notes
4 tags
The Android App Gauntlet
haseman: adb shell monkey —throttle 100 -v -p com.your.packagename 50000 I like to put my app through ‘the Gauntlet’ every night.  50,000 random events.  Make sure you plug your headphones in first (so you don’t annoy your co-workers when the monkey turns the music on.)  I like to leave the throttle at 100 to keep the events coming in at a ‘crazed’ rate rather than having them come in at an...
Sep 27th
64 notes
Happy Birthday
Katherine: I can't believe you're 32
Me: I prefer to think of it as being `2^5`
Katherine: I'm embarrassed for both of us right now.
Sep 23rd
78 notes
Sep 9th
173 notes
2 tags
Easy Trait Testing in Scala
Scala has the notion of a trait, which is also sometimes referred to as a mixin. Traits are similar to interfaces in the Java world, but allow for partial implementations. This provides a convenient (and predictable) way of adding concrete implementations from a number of Traits to a single class. Say you have a simple trait such as: trait Storage { val storageName: String require(storageName...
Sep 1st
30 notes
August 2011
6 posts
Aug 26th
214 notes
Building a Faster Lightbox
Tumblr’s new Photoset feature was hinged on being able to quickly display high-res images in an interactive lightbox slideshow. You can check out an example with my dog. After solidifying the design, we spent a couple days doing everything we could to improve the real and perceived responsiveness. Here’s what we learned along the way. Know your image dimensions beforehand....
Aug 23rd
192 notes
Aug 19th
166 notes
Tumblr at Photo Hack Day
The fine folks at Aviary have put together a kick ass Photo Hack Day for this weekend in New York City. We love both photos and Hack Days, so we’re thrilled to be a sponsor of the event on Saturday August 20th. Photos are an intergal part of Tumblr and we continue to expand our support with camera info, photo sets, and new improved APIs. Now it’s your turn to build some amazing new...
Aug 17th
21 notes
Aug 10th
931 notes
Quick network status of a machine
netstat is one of the most powerful tools for quickly grabbing the high-level network state of a *nix machine. While it has a variety of uses, from tracking down resource consumption to debugging broader networking issues, there is a great one-liner which can quickly capture a snapshot of the (TCP) network state of a machine: $ netstat -tn | awk 'NR>2 {print $6}' | sort | uniq -c | sort -rn ...
Aug 4th
52 notes
July 2011
5 posts
Staircar: Redis-powered notifications
Soon after I started at Tumblr all the way back in May, I was tasked with reworking our aging notifications system. A notification is the item that shows up in your dashboard, interleaved with posts, that tells you that another Tumblr blog reblogged or liked one of your posts or started following your blog. Until recently, notifications had been served up by a fairly standard MySQL layer with...
Jul 19th
604 notes
Efficiently copying files to multiple destinations
If you need to copy large files between two machines, combining nc (netcat) with pigz (parallel gzip) is an easy and fast option. But what if you need to copy the same set of files to multiple destinations? This is a common need here at Tumblr, for example when we need to spin up several additional replicas of a MySQL instance at once in a fast, automation friendly way. You could copy from a...
Jul 15th
136 notes
rboyce asked: The new API looks great, thanks for your hard work. Is there going to be a callback parameter for JSONP requests to the API?
Jul 12th
20 notes
Introducing Tumblr's New API
Welcome to the Tumblr API, v2! Want to know what’s changed and why? Read on. Just want to dive in? Head on over to the API documentation, sign up for a key, and get hacking! New Features Features on Tumblr evolve rapidly. With the API, we have not attempted to provide complete feature parity with the website. Instead, we’ve focused on those features which have become widely adopted and...
Jul 12th
3,040 notes
Welcome, Fellow Nerds
Tumblr grew tremendously in the past year. In the last twelve months, the number of pages we serve daily has more than quintupled, while our small team continues to roll out huge new aspects of the platform. The story of the humbling growth of our creative communities has been well told. Up until now, however, little has been said of the messy mechanics of building the systems that serve up...
Jul 12th
300 notes