2014 was a major year of development and discovery for me and Flutter. When we launched the campaign I imagined I'd keep up the frantic pace of development I'd sustained before the campaign, and bust out the hardware in just a few months. After the campaign though reality began to sink in - this is a big project and it takes a lot more work to make a production board than it does to make some prototypes. Fortunately it has been worth the wait and Flutter's hardware is amazing. Now that we're moving into production and delivery, I wanted to take a look back on Flutter's first year.
A year ago, I was just taking delivery of the first ARM-powered Flutter hardware. It took just a couple of days to assemble but two or three weeks to get the very first blink program running. This was due to a peculiar hardware issue (the radio was holding the CPU in reset) and my inexperience using all open source tools to bring up an ARM system. Previous ARM systems I had built used the Windows-only IAR IDE. While IAR is powerful (if pernicious) software, it is a bad solution for an open source project. By Jan 2014 I had switched my desktop to Linux full time, and for the first time used GNU GCC to bring up my hardware. It took some time, but it was worth it.
Once I got the blink program running, it was time to tackle the biggest software hurdle of all: porting Arduino to a new CPU. In many ways, it was crazy to wait that long to tackle that problem. If I had failed at that we had a backup plan (use the same processor as the prototypes), but the ARM processor is to me one of the most powerful aspects of Flutter's design. Months before the campaign I looked over all the software involved and it seemed to me absolutely achievable to do this port, but I hadn't proved it yet. Solving this problem involved diving deep into the mass of existing Arduino code to learn how it is put together. No one has ever documented that code base and it has evolved over many years with many developers contributing. There was weeks of sifting through code line by line, following function calls between files, and reading out individual registers in the chip to debug code.
By the beginning of April 2014, we'd gotten Arduino working well enough to see the need for some changes to our initial hardware design. A few days in Eagle, and the near-final Flutter hardware was born. We got that back mid-April, had 20 boards assembled (at $50 apiece!) for testing, and began porting over our wireless libraries to the new hardware. It took a few weeks to bring up our old libraries with the new radio chip, but by mid-May we had the wireless up and running. Eager to see how Flutter's new on board antenna performed, we found some wide open space and got 1200 meters in Flutter's first major range test since the campaign.
In May 2014 I also attended MakerCon - my first conference representing Flutter. MakerCon was an amazing event. I learned about makerspaces all over the world, watched some great talks on open source, product development, and more. I also met a bunch of great people - including Brook Drumm from Printrbot, Eric Pan from Seeed, Zach Supalla from Spark, all around hacker Bunnie Huang (who was showing off his open source laptop), and many other great attendees who do some incredible stuff for the maker world. That was also the first place I got to show off Flutter's new hardware, and everyone loved my little demo with the NES controller.
By July 2014 we were showing off Flutter's updated hardware design, which had some rearranged pins, a new pin labeling scheme, and a great new LED. Satisfied with the pin layout and labels, we released a PDF datasheet detailing Flutter's pinout.
Summer was all about nailing down the final hardware and preparing for FCC certification, though we also turned on Flutter's community discussion board so users could get together and share their thoughts on Flutter's development. In July I started talking with a telecommunications lawyer who helped me make sense of the wireless regulations in the US and Europe that we had to comply with. By August I realized that I needed to expand Flutter's software to include a frequency hopping scheme in order to avoid any legal trouble. Several people suggested we could ignore this and slide under the radar due to our small size, but it's important to me that I can say with confidence our hardware is following the laws and can be easily integrated into other products. I brought up the first implementation of Flutter's frequency hopping code on August 26th (marked by some ecstatic text messages to Katelynn), and finally Flutter's software was beginning to look good.
Next I made some minor changes to the hardware design mostly to switch to a better USB connector. We got that hardware back in early September, but ran into some problems after discovering a layout error that killed the boards. I ordered new boards ASAP and by Oct 20th I reported that the hardware was probably done (it was). I made a few fun demo videos with the Flutter hardware, and then started to schedule FCC testing.
After originally thinking we'd do the FCC test in Southern California, I found a better price in Seattle. On Nov 9th I landed in Washington and on Nov 10th arrived at QAI laboratories for a week of testing. After talking with the test engineer and making a few software changes, my presence was only needed in the testing office a few hours a day. That gave me a little time to relax, visit the surprising number of friends I have in Washington, and explore some local attractions (including Pacific Science Center and the Boeing Manufacturing Plant in Everett).
By Nov 26th, Flutter's hardware was open sourced and we started taking orders at the new, more sustainable price. Since then I have been focusing on preparing for production, developing some marketing material, and finishing a few other things I had been putting off. I've also started prototyping some 3D printed robots in my spare time, and have started working with a friend on cleaning up Flutter's code base. He's created an awesome script that installs the Flutter development environment in any Linux VM, and will be helping to plan out and probably largely re-write what I've done to make it more reliable and more maintainable. If there's one thing I've been reminded of in 2014, it's that I'm much better with physical things like electronics and mechanical design than I am with software.
It has been a very long year for me, with way more work originally than I realized. Working for myself from home has at times been difficult for me, and I've found myself running into some pretty serious depression periodically. I've read about a lot of other founders going through the same thing (just google "founder depression" for loads of stories), and have been starting to identify why this stuff happens so I can overcome it. Despite some of the difficulty, 2014 was an incredible year for me and for Flutter. I was able to take my product concept and fully make it a reality. Though I wish I could have managed things better and delivered earlier, I am thrilled to finally start production and move into delivery. With boards soon making their way into customer's hands, I know 2015 will be an even better year for Flutter than 2014.
To all the backers who have waited patiently since the end of the campaign, and who saw long periods of time between some of the updates, thank you so much for hanging in there. The wait will be a little bit longer, but I know it will be worth it.