Less Important Questions from StackOverflow's Developer Survey

The StackOverflow post on tabs vs. spaces made quite a splash yesterday with the revelation that people who indent their code with spaces earn more, on average, than people use tabs.

They've made their dataset available for download so I wrote a quick script to see what else we can learn about developer salaries.


There's not much difference.

Choice of editor

This is the one we've all been waiting for.

Ship it?

Fortune favors the bold.

Clicky keys

You probably should just talk to your officemate instead of using this result.

Open source helps

Toward this end, I've open sourced this analysis. I still don't really know my way around pandas/Jupyter, so maybe you can do better.

Building a better way for people to call Congress

This summer I created a phone number that immediately connects people with their representatives in the U.S. government: dialing 1-844-USA-0234 will forward the call to your senator's office. After they hang up, it automatically calls your next senator, and then your representative.

It's the lowest-friction way to contact a representative. No looking up phone numbers or entering your address on a web form.

This post discusses the usage patterns of the "Call Congress hotline" and steps I'm taking to make it more useful and mainstream.

Your Congresspeople

Who saw it?

Many people. It went viral on Facebook, Twitter, and Reddit. I don't know exactly how many people saw the phone number, but based on clickthrough estimates I've seen it was probably more than 100,000 people. My reasoning is that it made it to the Reddit frontpage (briefly, until it was removed by mods on /r/lifehacks) and the corresponding blog post received several tens of thousands of hits (I would estimate the CTR on social links is less than 10-20%).

The real question is whether virality actually translates into calls to senators and representatives.

By the numbers

In the six months it's been live, the phone number has directed about 1,500 calls to Congress. If we sum the duration of the calls, they amount to nearly 24 hours of solid time on the phone.

Number of calls per day since June

You can see the initial spike from the launch, which happened in the wake of the Orlando shootings. The second uptick is after the presidential election.

In June, ~100,000 people saw the number when it launched, but we did about 500 phone calls that week. That means the conversion rate for a call to action like "Call your Congressperson" is about 0.5%. On average, you'd have to show the phone number to 200 people on Facebook or Reddit before someone picked up the phone.

As a corollary, because the number of shares/likes/upvotes/retweets exceeds the number of calls, we can conclude that "click-to-share" activism is a whole lot more popular than picking up the phone, which would be much more effective.

Next, let's characterize the calls that were made. We don't have too much information on this because the calls are private. But we know how much time was spent on each call:

Histogram of call duration

As you can see here, the vast majority of calls were extremely brief, possibly test calls, people who got cold feet, or people who got an answering machine. In other words, not meaningful interactions with the Congressional office. However, it's entirely possible that a constituent can register their suggestion/complaint within 60 seconds, so maybe we shouldn't discount these entirely.

Even though there were many short calls, there were still significant numbers of higher-duration calls. These added up to many hours on the line with Congressional offices.

Who's using it?

As stated earlier, I don't have much info on my users. But I have anecdotal information.

Several groups in NYC are using the number to campaign against airport noise in their neighborhoods from JFK. They are well-organized and call their Congresspeople pretty regularly (they've also given me some good feedback - thanks!).

Back in July, Deray, one of the leaders of the Black Lives Matter movement, tweeted the number and generated a huge amount of traffic:

It popped up several more times as activists asked people to call Congress to allow immigration and reduce hate crimes.

But the number is used all across the political spectrum. It appeared several times on the now-infamous /r/The_Donald subreddit. In one such case, an activist called upon others to demand that Hillary Clinton be charged with treason. The phone number is cause-agnostic by design, and clearly there are many use cases.

The problem with a "Call Congress" hotline

I'm very happy that I helped facilitate even 1,500 phone calls, even if it's a drop in the bucket. Phone calls do make a difference, and are one of the best ways to send a message to your representatives' offices.

From the numbers, the biggest problem facing call campaigns is actually engaging people. We have seen that it's more fashionable to "share" your outrage on social media than to act upon it by picking up the phone, even if it's made as easy as possible, with all the dialing done automatically.

I think the missing ingredient is the organizers and leaders who inspire people and promote causes. This Congressional hotline is politically neutral. It doesn't come with a guide or script. It doesn't care about the cause you're calling in for.

This tool doesn't really belong in my hands. It belongs in the hands of organizers and others who can incite action. The situations in which this phone number has thrived have been when Deray tweeted it, the NYC airport groups shared it on Facebook, or people posted it on activist subreddits.

I looked into this more and learned that some major activist organizations don't actually have good technology options for grassroots organizing. Most work is overpriced, incomplete, and done by contractors.

Creating a tool for organizers

To solve this problem, I've created Speak Louder. It's an extension of the Congress hotline that lets organizers create their own phone numbers and landing pages customized to their specific causes.

Speak Louder

It also provides other neat tools like email and text message subscriptions, so you can supplement your social media outreach with direct communication.

This is similar to the Call Congress hotline, except now the call to action is attached to a cause. You can give people talking points, scripts, and other forms of encouragement. You can collect their information and follow up.

I theorize that this will lead to increased engagement in the long term.

Create a campaign

Create a campaign for a cause you care about

P.S.: it's open source, just like the phone number.


I don't know if Speak Louder will work out or if people will continue to use the Congress hotline (1-844-USA-0234!), but they matter to me a lot.

Big thanks to Twilio for supporting this project and giving me credit to continue running the service when demand spiked. (I'm going to continue to self-fund the Congress hotline, but may need to take donations to keep it running in the long term).

Lastly, thanks so much to everyone who shared this phone number and everyone who called in!

Download your photos from Facebook with EXIF data

If you've ever tried to export your photos from Facebook, you know it's a tough problem.

Facebook makes it possible to download a copy of your data on its Settings page.

Facebook download a copy of your data

Check the fine print!

This option exports low-resolution copies of your photos with no EXIF data, making it difficult to import into other photo storage like iPhoto, flickr, Google Photos, and so on.

I built a Facebook Photo Exporter to solve this problem. It lets you easily download all your photos in ZIP format. All photos are tagged with EXIF data such as time taken and location (when possible).

When you log in, it'll show you the photos you're tagged in. These are the ones that will be exported:

Facebook exporter

Then, press the download button:

Download your Facebook photos

Now I have hundreds of EXIF-tagged Facebook photos. Great!

Downloaded FB photos

Call Congress with one number: 1-844-USA-0234

I've created a toll-free phone number, 1-844-USA-0234, that will dial all your members of Congress, no matter where you are.

Instead of having to look up 3+ phone numbers and call them separately, this single number will connect you to your representatives one after another.

The United States is a representative democracy. If there's a policy you'd like to see changed as a US citizen, ask your senators and representatives to act.


Does calling Congress actually do anything?

Calling Congress counts for a bit, and it's better than sitting around and complaining, or watching the news and feeling helpless.

When the phone is answered, you'll probably speak to a Staff Assistant who will listen to what you have to say. The office keeps track of how many people have positions on the issues, and these numbers influence policy positions.

Make sure to state what issue you're calling about and why. Also, you may want to provide your address to prove you're a constituent (and possibly receive a letter in return).

call report

Example call report provided to member of Congress.

Good luck. The number 1-844-USA-0234 should be easy enough to save in your phone as "Congress". The next time you are sick of things being the way they are, give it a shot!

(p.s. this project is open source)

This year in side projects (2015)

This has been another great year for projects, old and new. The 2014 and 2013 posts went over pretty well, so here goes.

There's a lot this year. Projects worth talking about:

  • TextBelt - free outgoing sms api (40k texts/mo)
  • Inflation - a profitable inflation calculator (100k queries/mo)
  • Asterank - 3D space visualizations (~500k views this year)
  • Alioth - more space analytics and visualization (just received a grant from NASA!)
  • Meteor Showers - see what meteor showers look like from space (NSF/PopSci competition finalist)
  • Pluto/Ceres/Mars - webgl visualizations of interesting solar system bodies
  • High-altitude weather balloons
  • The Space Potato - successful Kickstarter for a potato-powered near-space vehicle
  • Global health - writing software to strengthen national health systems in developing countries
  • Interview Club - marketplace for interviewers (won $14k at LAUNCH hackathon)
  • Harvest - aerial infrared photography for crop monitoring (won $5k at TechCrunch Disrupt)
  • Dinosaur Pictures - the official internet dino database
  • Ancient Earth - webgl viz of Earth over 1 billion years
  • Chatalyst - better web video conferencing
  • Neutral Gas - micro carbon offsets
  • College Lab - college assistance for students in China


Lots of new work in aerospace data analysis and visualization.


With a lot of patience, I managed to land a sizable 2-year grant from NASA for a project called AstroKit, which will provide open-source asteroid characterization tools for scientists.

NASA logo

Thanks NASA

I'd been doing enough work with NASA and others that it made sense to create a company, which I named Alioth LLC. There were minor legal and financial reasons to incorporate, but mostly it helps clients feel like they're working with a real company and not some 25-year-old.

Thanks to NASA's support, Alioth is here to stay and the future is bright.


I've been giving talks at JS conferences like OpenVisConf and EmpireJS on building 3D tools with webgl (here's a video).


Also gave a talk at NASA JPL in Pasadena, a place I'd wanted to visit ever since I was a kid and never thought I'd get to speak there.


Lastly, I gave a talk at University of South Carolina's Darla Moore School of Business.

Meteor Showers

This visualization uses my Asterank engine to show what meteor showers look like in the context of our solar system. I find that 3D visualizations often improve understanding of space because it's very abstract otherwise.

I created this meteor showers visualization for the Perseids meteor shower in August and coded most of it on livecoding.tv.

all meteor showers

This is my favorite project this year.

It's also a finalist in some NSF/Popular Science visualization competition, and it's open-source.


A friend and I thought New Horizons' flyby was awesome, so we built this Pluto globe (github).

pluto pic

This viz shows our view of Pluto from 1930 to present.

I also adapted it for Mars (incomplete) and Ceres.


Hello, Ceres.


Asterank, an analytics and visualization tool for asteroids, was how I originally got into the space industry.

I sold it to Planetary Resources over 2 years ago now, but still maintain the open-source repository and make minor changes.

Here's a cool visualization of open-source work done over the years:

Traffic to Asterank remains generally strong, punctuated by moments of media coverage.

Asterank traffic

100,000+ visitor days still happen sometimes.


Not really a side project, but deserves mention: the satellite I worked on at Planetary Resources launched twice. The first time, the rocket carrying it exploded.


Null pointer exception.

The second launch went fine and it was eventually deployed from the International Space Station.

My interest in satellites led to a few interesting high-altitude side projects...

Weather balloon #1

I've always wanted to build and launch my own satellite. A friend and I decided that a high-altitude balloon was a good first step.

The goal was to send something up to around 75-100k ft and get a picture with the black of space and the curvature of Earth. Together we designed, assembled, and launched a high-altitude vehicle.

first balloon

Me looking nerdy with the first balloon.

Our first attempt cost about $250 (largest expense is helium). We got two cheap Android phones and programmed a custom Android app that recorded GPS, sent text updates, and took pictures.

first picture

One of the pictures we took.

We let it go, received a few pings, and then it was gone for good. Our theory was that the batteries failed due to cold because the payload was just insulated by a children's lunchbox!

Months later we got a call from a farmer in Stockton who noticed our little package in his field. We were able to recover some awesome pictures from both phones and confirmed our battery theory - they cut out ~15 min before landing.

Weather balloon #2

Immediately after #1 went MIA, we put together another balloon.

This time, we used a styrofoam cooler, dedicated GPS, and a cheap Canon point-and-shoot. Everything worked great. We recovered it on a farm about 2.5 hours later (the farmer gave us a call, but we already knew where it was).

Photo quality was low - mostly overexposed. We had custom firmware on the camera and wrote a script to handle the picture taking, but our configuration needed further tweaking.

first balloon pic

The pictures from balloon #1 were better, but we didn't get them til months later.

Space Potato kickstarter

Our success with the balloons got me excited to do more. I convinced a group of friends to do a Kickstarter to support a larger and more interesting high-altitude project.

The twist: all the electronics would be charged/powered by a potato.

In the end, we raised about $1,800 to send up a potato-powered near-space balloon dubbed "The Space Potato."

potato science

The balloon flew with a potato onboard.

The full space potato write-up and post-mortem is here. It was a huge success in my book:

space potato pic

Thanks to potato power and lots of help from friends, I got the beautiful "Earth from near-space" picture I always wanted!

space potato logo

"From the Earth to the Stars," or something like that.

Global health

I spent 2 weeks in Ethiopia as part of a project with UCSF and a representative from the UN. We worked with their Ministry of Health and other international organizations to create tools that analyze data and provide critical support for national healthcare decisions.

Ethiopia map

The trip went very well and while I can't go into detail, we made a huge impact and intend to continue working with their government.

Interview Club

A few friends and I built Interview Club at the LAUNCH hackathon.

It solves a problem we all had when we worked together at Room 77 before we were acquired by Google. Technical phone screens are a huge timesink and it's very resource intensive to screen the top of the funnel. We built a marketplace where experienced engineers sign up and companies pay them to do technical interviews.

In less than 48 hours, we had over 100 engineers signup and 8 companies who needed help screening tech talent.

We won nearly $14,000 (!) and got to present as finalists. It was a real whirlwind (pitch/demo here).


One of several prizes.

For more on Interview Club, check out the post I wrote on it.


I've always had a long-standing vision of monitoring crops and other things using aerial infrared cameras. Now that my friends and I were experts in weather balloons, we were able to build it at TechCrunch Disrupt.

tethered balloon

The balloon was tethered as it monitored vegetation below.

Disrupt was great and we won ~$5000 and 3rd place overall.

harvest gif

Infrared analysis highlights problem areas.

I wrote a more detailed post on Harvest, or check out the pitch video at Disrupt.




TextBelt, my open-source SMS API, steadily grew from 30,000 to 40,000 texts per month this year. An unknown number of texts are also sent via the self-hosted node module.

It reached 50k texts/mo in October but plummeted in November when some providers blocked it and I didn't address the issue quickly.

Textbelt growth

Two years of Textbelt usage.

In the past year, I've had discussions with IT managers, doctor's offices, and even a police department (!) on their usage of Textbelt.

Now that it's popular, abuse is a perennial issue with Textbelt. People are using it to spam friends, enemies, and strangers. At some point I'll have to shut it down or start charging, which is a shame because many use it for legitimate reasons.


The world's most boring side project, an inflation calculator, continues to grow. This year I put ads on it and its annual run rate is now over $1000.

Here's last year + this year, now approaching 100k queries/month:

Inflation calculator growth

2014 and 2015

Aside from minor SEO improvements, I made very few changes here.


Last spring, I was looking for dinosaur pictures and came to the conclusion that there weren't any good dinosaur picture websites.

That's why I created Dinosaur Pictures, the #1 source for illustrations of dinosaurs and other ancient reptiles.


This was pretty timely as Jurassic World came out over the summer.

Creating this site was an interesting process. I hired a freelancer to curate some of the content, but eventually wound up programmatically curating content and scraping Bing Images. I also integrated some paleontology databases and papers.

My end goal is to figure out a way to give a talk at a paleontology conference.

Ancient Earth

Ancient Earth is an interactive globe that shows the continents moving around over the past billion years. It also includes a narrative of how life evolved on Earth.

This went viral (especially in Spanish-speaking countries for some reason).

Ancient Earth

This was actually just an SEO ploy for DinosaurPictures.org, but it didn't really work and people liked the visualization more. It's open-source.

Neutral Gas

Neutral Gas lets you buy "micro-offsets" to counteract carbon emissions from small purchases, like a single tank of gas. I collect these tiny payments until I have enough to purchase a large carbon offset for cheap.

neutral gas

This was a quickie. I was too scared/embarrassed to post it anywhere.


Chatalyst is a meeting planner and video chat tool. Meetings are the worst part of work. Chatalyst enforces best practices (and preserves sanity) with a built-in agenda, timer, and seamless file sharing. It's the best video conference tool out there IMO.

Chatalyst was built in a weekend as part of Sprinkle Camp, an all expenses paid hackathon-type thing in Detroit. Detroit was actually really great, and I had a good time hacking this together with my friends and other Sprinkle folks.


College Lab

College Lab is a service that a friend of mine launched this fall to help students in China apply to schools in the US. It was well received - I helped her answer a bunch of students' questions - and I'm excited to see where this goes.

college lab


I wrote a pagerank checker npm module and a CLI for exporting data from Mixpanel, rewrote my personal homepage as an isomorphic react app (static page would suffice but I wanted to learn). Also created a Chrome extension that replaces gmail pings with old-school AIM sounds...


Can't believe I got this much done and definitely couldn't have done it without all the help from friends. 2015 was the year of everything. In 2016, I want to focus!