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.
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:
Then, press the download button:
Now I have hundreds of EXIF-tagged Facebook photos. Great!
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).
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!
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.
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.
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.
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).
This viz shows our view of Pluto from 1930 to present.
I also adapted it for Mars (incomplete) and 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.
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.
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.
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.
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."
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:
Thanks to potato power and lots of help from friends, I got the beautiful "Earth from near-space" picture I always wanted!
"From the Earth to the Stars," or something like that.
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.
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.
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.
The balloon was tethered as it monitored vegetation below.
Disrupt was great and we won ~$5000 and 3rd place overall.
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.
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.
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 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).
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 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.
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 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.
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!
Disrupt is a 20 hour hackathon that took place this September in San Francisco. This post describes an unusual hardware/software project and how it managed to win a handful of prizes.
For the past year, I'd been doing a lot of high-altitude balloon projects, even sending a potato to 100,000 ft via Kickstarter. I was looking for a way to parlay high-altitude imaging into social good, with an idea on the backburner for balloons to monitor crop health and water in infrared.
Near-infrared imaging spots plants made unhealthy by irrigation problems and other causes, which is particularly topical here in California due to drought. Well-watered photosynthesizing plants scatter solar radiation in near-infrared.
After some debate, I convinced a few friends it was worth building. We called it Harvest, a toolkit that helps farmers understand plant health and spot water waste using infrared aerial photography.
In less than 20 hours, we built:
a cheap infrared imaging device,
processing software that takes infrared and runs NDVI analysis, which indicates whether plants are healthy.
Harvest's Normalized Difference Vegetation Index (NDVI) view.
The project sounds complex but was very doable after breaking it into parts. The most difficult part was that we needed to finish the hardware and collect images within the first ~6 hours before sundown.
I had ordered a balloon, rope, etc. beforehand, as well as a cheap Canon point-and-shoot from eBay and a replacement "infrablue" filter, which shifts infrared light into the red part of the spectrum, so the camera records it. The total cost of all this was $12 for a used camera, $10 for the filter, $10 for a small weather balloon (on sale), and $10 for 500 ft of rope, for a total of ~$42.
It was a pain to find helium in SF but we managed to get 55 cu ft, more than enough (thanks SF Party).
I flashed the camera with special firmware called the Canon Hack Development Kit and put a Lua script on it that adjusted the focus, flash, and most importantly, took a picture every 10 seconds.
The field test
We went to a nearby park and got to work. Though it wasn't a farm, we figured there'd be enough grass/trees/pavement to show variation in watering and plant happiness.
Everything was secured with rubber bands and tape and we filled up the balloon.
It was a 5ft, 150g weather balloon.
The camera was just put in a cardboard box with a hole.
Serious cardboard cutting.
Tying off a weather balloon is always pretty scary. We managed to not have everything fly away by accident.
After being secured to a rope, the balloon was tethered to the ground. The payload flew smoothly, balanced by the downward-facing camera.
Field test in progress over Dogpatch, SF.
We didn't fly it to the full 500 feet because the balloon was underinflated and we were worried about power lines. It would've been too annoying to undo the seal and fill up the balloon more.
Now that we had a bunch of near-infrared images of a nearby park, we had to process them. NDVI processing is a well-known technique, for every pixel:
NDVI = ((IR - R)/(IR + R))
IR = pixel values from the infrared band
R = pixel values from the red band
PublicLab is an excellent resource for DIY-NDVI projects and provided a lot of the knowledge and inspiration necessary to complete this. They have code, pre-made kits, and a great community around aerial observation and data collection.
I used the Python Imaging Library (PIL) to do this, scaled the coloring to best fit our field test data, and built a pipeline that converted all images.
The frontend then displayed these images nicely:
Infrared and processed NDVI imagery.
Our frontend whiz also did this awesome slider view.
And we incorporated satellite imagery from LandSat.
It helps to start your pitch early, practice pitching to strangers, and build a good landing page. These were all done by ~10pm the first day.
These needs were compounded by the fact that Disrupt is only 20 hours and everything was judged solely on 1 minute presentations with no Q&A. This was a bit surprising - I think science-fair style judging like at LAUNCH or YC Hacks does a better job of fully evaluating a hack.
I worried the balloon was too much of a gimmick. It was just a demo; the meat of the project is not balloon-related at all and I wanted people to realize that. Our device could go on an airplane, drone, or even a very long pole!
Overall, the pitch basically went fine. There is only so much you can say/do/screw up in 60 seconds.
We won prizes from CircleCI, Weather Underground, and PCH. We were 3rd overall, so we got to return later that week and present to the conference as hackathon winners. All in all, I felt silly carrying around a red balloon all weekend but it was totally worth it to see the idea come to fruition and achieve recognition.
With the CircleCI team, who singlehandedly restored my faith in CI.
The future of Harvest
I feel Q&A would've helped this hack shine more, plus maybe a modified pitch. The only feedback we got from judges was that it was an interesting idea, not a ready-made business. Which makes me think the goal of the Disrupt Hackathon could be better clarified.
Agricultural crop loss is a huge problem measured in billions of dollars. Existing businesses do thermal and infrared imaging via airplane, drone, and satellite at anywhere between 100-10,000x the cost. Every farmer we spoke with at the local market said they were interested in the product, so I think there's a potentially sizable market for a cheap infrared imaging solution that requires no training.
Irrigation problems in a field.
Some interesting takeaways from surveying farmers:
Agriculture is not technologically backwards by any stretch. One farmer said infrared imaging tech sounds like it's far away, but he would've said the same thing about GPS 10 years ago. Now he can't imagine planting without GPS. Farmers are eager to adopt technology where it helps.
Farmers constantly worry about their crops. One described how she compulsively checks the few statistics she has. She would love to be able to do more electronic monitoring.
Watering is the most important knowledge in agriculture. This makes sense but you don't get it until you talk to farmers. Different plants like to be watered in different ways. These systems leak and fail in different ways, and catching a variety of problems is hard. One farmer remarked that we would've caught a recent pump problem, which would've been huge.
Hackathons are great but can be overwhelming. Here are some thoughts:
Pitch strangers early. People at unrelated sponsor booths are usually willing to listen.
Optimize for demos. For a 20 hour event, you need to be realistic about cutting corners. This means terrible code is sometimes ok.
Sleep a lot. Powering through the night is unhealthy and I doubt the returns are worth it. We slept about 7 hours.
Talk with sponsors and try to get a relationship going. This helps problem solve and puts your project in their minds.
It began with a dream: launch a potato and some other equipment to over 100,000 feet, taking pictures with onboard electronics charged by potatoes.
A year later, 42 Kickstarter backers made history with the first potato-powered balloon over 100,000 feet.
"Making history" is a bit over the top, but we did do something really fun and sciency: charged some electronics with potatoes and then flew them to the stratosphere while taking pictures. We're really thankful to the backers who supported this ridiculous experiment.
I'm writing this post mostly for the benefit of our backers, but also as a postmortem and a fun recap of everything we went through.
On Friday evening, the weather models showed a good flight was possible on Saturday or Sunday, so we gathered in our workshop to assemble everything.
Putting together a lightweight weather balloon capsule is relatively straightforward. The only challenge with the extra potato mass was keeping it under 4 lbs, so it was technically unregulated.
The first step was to create the structure. We had a bunch of different sized styrofoam coolers, so we drilled some practice holes and tried different techniques. Because GoPros are pretty flat in the front, we wound up having to shave the walls thinner with an X-acto knife.
Drilling a camera hole
Aside from that, there was mostly just a lot of rope and tape. Securing the cameras, phone, gps tracker, and other electronics was a task that had to wait til we were onsite with everything powered on.
The prepared capsule, onsite
In the workshop, we made sure that everything more or less fit, and weighed everything so we could get a better sense of what to expect (and more accurate models).
Now for the "meat and potatoes" of the project...we were entering new territory here, so we started just by making a bunch of simple potato batteries.
This felt like a cooking show.
One of our team members worked on batteries for a spacecraft in low-Earth orbit. So he was in charge here. Even so, there were a lot of unknowns.
We determined that the ideal potato potato battery is quite long, so we cut the potatoes lengthwise and cut sheets of metal to fit. Personally, I also learned that potato batteries are really more about the metal that you use rather than the potatoes themselves.
Cutting potato battery sheet metal with a dremel.
With this technique, we actually used surprisingly few potatoes. By cutting them lengthwise and separating each sheet of potato with a sheet of metal, we maximized potato efficiency.
Initial testing and wiring things together
We eventually created Frankenpotato, an electronics-charging monstrosity that produced enough current to charge some batteries.
A Frankenpotato battery, and the backer-named "Leeroy Jenkins" potato.
We discovered, perhaps not surprisingly, that it was unrealistic to charge all the electronics (GPS tracker, 2 GoPros, cell phone, cell phone backup battery) in a single night. The amount of power produced by potatoes is quite low. Nevertheless we were able to charge nontrivial amounts of electronics using potatoes.
The night wasn't over. One of the Kickstarter rewards was "potato whisperer," which promised to use a computer program to speak the names of backers to the potato on the eve of the flight. The goal here was to inundate the potato with good vibes.
One thing that I didn't plan for during the Kickstarter is that I now have a housemate. So to avoid disturbing the household, I had to keep the potato whisperer in my room overnight.
It was a tough night. The names of our backers are branded in my memory forever, on repeat. Here's a short preview (now imagine falling asleep as this played for 12+ hours).
I regret nothing.
This part was pretty simple. We knew we wanted to launch in California's Central Valley because it's a huge open area with high chance of recovery.
We learned from past balloon launches to remain pretty flexible in terms of our launch site. We knew we were launching in the Central Valley, but even as we were driving out there we didn't know where we'd do it.
Once we picked up our helium from a party store and our ETA became clear, we ran a bunch of flight path simulations with varying weights and amounts of helium from different parks between Stockton and Modesto. We wound up choosing Raymus Village Park in Manteca, with a predicted landing west of Sacramento.
One predicted flight path.
It took about an hour to put everything together at the park. This involved slowly inflating the balloon, starting all the electronics and verifying they were working, and connecting all the various components.
On a whim (and after some debate), we decided to add a second GoPro. This means we had to do some payload surgery on the spot (scraping out another hole for the GoPro). This proved to be a fortunate decision because it turned out one of the GoPros overheated before it even left the ground, which is why we have 5,000 still pictures but no video. No real regrets here as the video would have been pretty nauseating, with the camera swinging around wildly.
Critical moment: tying off the balloon.
We spent too much time getting everything set up. A formal checklist would've made things smoother and easier. The GoPro likely overheated because it was really hot out and the payload was packed with chemical hand warmers. In our effort to keep the payload from getting too cold in the upper atmosphere, we overheated our electronics on the ground.
All things considered though, it went quite well. In the past we've had problems with helium leaks, ripped balloons, and so on. In general, we knew what we were doing here and the park was a great place to set up (not pictured: convenient shaded picnic tables).
Balloon setup area with helium tanks.
We launched near Manteca, CA and flew about 55 miles (88km) to the appropriately-named Yolo Bypass Wildlife Area, reaching over 100,000 feet along the way.
We had a SPOT GPS tracker and a flip phone tracker on board, so we had a good sense of where things were during the flight. However, there were dark periods that were extremely nerve-wracking: phones, which reports GPS via 3G, stop working at roughly 5-10k feet, and GPS trackers typically stop working at roughly 20k. I think we got particularly lucky, as our tracking data is fairly complete. There is a hardcoded 60k ft ceiling to GPS as specified by US law, so that explains the gap in the mapping below of flight waypoints.
The balloon flight path data, headed northwest. Note the general similarity to prediction above.
The potato itself was recovered on a farm by a field of cows. It required a bunch of searching, but we were lucky that it was close to an aqueduct. We attempted to contact the landowner, but as no one was home and it seemed fairly close to the road, we recovered it by walking along and eventually jumping a barbed wire fence.
Although the pictures are pretty similar to those from other high altitude balloons, they are nothing short of spectacular.
Who knew a potato-charged balloon could take pictures this nice?
Looking west, Pacific under the clouds
Descending to farmland
Thank you from the entire space potato team for making this possible!! And big thanks to my friends who were an essential part of the project.
Potato batteries are pretty cool.
GoPros can overheat.
Kickstarters are work. Money raised is misleading due to fulfillment costs. Physical rewards take a huge amount of time.
Helium is expensive. We knew this going in, but it's jarring each time how your helium costs can be as much as everything else combined (although it's pretty cheap for a non-renewable resource, helium prices have nearly tripled in the last 10 years). Working with party stores can be confusing at times because they sell things in units of normally-sized balloons.