• Hell Week

    Monday, December 23, 2013

    12/23/2013— Eric Kolker

    I haven’t had the bandwidth lately to sit down and write another one of my long, deep technical dives. Instead, I’ll debrief a little on what I’ve been juggling lately (read: this past week). Here goes a braindump in reverse chronological order.

    Friday- Saturday: Move out

    For the holidays, Jon and Kelsey had gone to California on Tuesday, and Kevin had shipped out to Colorado. That left Tim, Jia, and me the task of packing up and moving everything out of Tim and Jia’s dorm. Let’s just say that the only sleep I got in the surrounding 48 hours was in the card ride home from Boston. Tim gets most of the credit here because he’s the lucky guy who got to transport all of our gear:

    Tuesday - Friday: Test benches

    Everything we make needs to get tested before it ships, including each and every module. To do this, we build dedicated hardware, which typically takes the form of either a Tessel or an Arduino with a custom PCB or protoboard. We write some firmware that verifies that the device under test (DUT) is working properly (I’ll save the juicy details for another blog post), and the test benches usually look something like this:

    Since we’re ready to ramp production on around nine of our modules, this meant that we had to design, build, and test the same number of test benches before shipping them off to one of our manufacturers. Specifically, I needed to verify that our camera and RFID designs were sound before we could ship them (spoiler: they are). This meant building a few boards and running them through the paces.

    Wednesday - Thursday: Beta round 2

    We pushed out the second round of boards to Beta backers on Thursday. This culminated in the $500 USPS charge that Kelsey showed you last week:

    Before we could send out the hardware, though, we had to build and program it.

    • The new Tessels (model TM-00-02) needed to be one-time programmed (OTP’d) with the proper serial numbers, bootloader, etc., then tested to be sure blinky.js runs smoothly
    • We needed to build around 80 modules for Tessel’s Beta backers (first and second round alike). Specifically, we built…
      • A fresh set of Micro SD modules
      • A full batch of GPS and Ambient modules
      • A trio of IR modules (for us to test/develop firmware on, not to ship, but we were already in the lab…)
      • At least 25 BLE modules (these in particular are very difficult to assemble by hand and until very recently our yield rate was unacceptably low. We ended up tweaking the layout, praying, and I spent hours carefully building the modules one by one. All told, I think Jia and I spent at least six hours in the lab on Wednesday.
    • Everything had to have firmware flashed, be tested, then ESD bagged, and packed for shipping.
    • Last but not least, on Thursday, Jia and I spent three hours in not one, and not two, but three different Post Offices to try to ship seven internationally-bound Beta packs (one Post Office couldn’t ship internationally, one legitimately closed while Jia was filling out forms, and the third finally worked out). We ended up holding up one of the lines filling out paperwork for the better part of an hour. Fulfillment is a chore I’m grateful to be rid of (thanks, Kelsey!).

    Monday - Tuesday: Probably the Camera

    I think I was working on the camera at this point. We decided around a week ago how we wanted to go about converting the camera we’ll be using into a Tessel-compatible module. The full story will make a good blog post, but the summary is:

    • Pick an existing camera
    • Establish that we can communicate with it
    • Ask the manufacturer to do one part swap so we can mount it to our own board
    • Mount it to said board, which includes the standard Tessel module header and some support circuitry

    Once we had a homebrew prototype, we needed to test the new board, verify we could still bring it online, and generally vet the communication protocol we’ll be using to interface with the device.

    Sometime before Monday: GPRS, but I don’t even remember anymore

    It turns out that you sometimes lose track of time when you work weekends, don’t sleep much, and have a bunch of looming deadlines. (Kelsey says I’m “depressing,” but I really do like my job and if you’d like to work with us, check out our jobs page.)

    I was likely working on the GPRS module at this point. I had an Arduino shield from Seeed Studio that we had rebuilt so it would play nicely with the Tessel, but I hadn’t brought the board online yet. Luckily, this proved to be a painless process (well, after I fixed the antenna path and attached the antenna).

    A minute or so later, I was able to send a “Hello, world! I miss Jialiyaball…” text to Tim using Jia’s SIM card (note: when a thing you built with your own hands sends an SMS it’s really freakin’ cool). The first half of the message should be self-explanatory. The back half is a game we play where we shout “Jialiyaball!” and throw a plush Jake doll at Jialiya. By “we” I mostly mean “Tim.”



    #tessel #technical machine #eric kolker #update #updates #company culture #jialiyaball #camera #test benches #tests #moving

  • How to Ship Product

    Thursday, December 19, 2013

    12/19/2013— Kelsey Breseman

    One of the primary reasons that hardware is hard is that you have to deal with logistics. The product actually has to move from Point A to Point B. Knowing this, I set out early to tackle the piece of supply chain that involves taking finished product and delivering it to customers.

    Shipping, it turns out, is a deep rabbit hole. With this blog post, I hope to introduce you to some of the pitfalls and key concepts within shipping and fulfillment– particularly for international delivery.


    Initially, I assumed that shipping would be pretty simple: you print some labels, you put a thing in a box, and you’re good to go. As it turns out, there’s a lot more to worry about when you have (1) a lot of product (2) differences between orders and (3) anything international.

    Back in August, when we were figuring out our crowdfunding campaign, I’m pretty sure our discussion on going international went like this:

    Me: Hey Jon, somebody on Twitter wants to know if Tessel is going to be available internationally. Did we decide that yet?

    Jon: Sure, why not? Checks a few Kickstarter projects. It looks like people usually add $10 for international shipping.

    Image: postal cost for seven beta packages to be shipped internationally via USPS Global Express

    I have no idea why people usually tack on $10 for international shipping. It costs just over $15 to ship a small 1 lb. box from the United States to most other countries (e.g. Germany, Australia, the Czech Republic). And that’s just postage– which, it turns out, is not the full logistical cost of shipping. Here are a few more pieces you’ll have to worry about, whether you’re shipping internationally or not:

    Beyond Postage

    Before you actually get to the postage stage of sending product to customers, there are a few other things to take care of in order to prepare your product to ship. These things fall under the heading of “fulfillment”. And, it turns out you can get a ‘fulfillment house’ to take care of these things for you. Fulfillment includes:


    This is an interesting problem: how much does packaging matter? In some ways, your unboxing is a part of your first run experience, so custom packaging might be important to you. On the other hand, you might be working with tight margins, in either time or money, so you just want to get whatever causes your product to arrive intact. Fulfillment houses will typically source packaging for you or help you source it yourself if you want something special, and will then pass the cost of the packaging on to you. Uline is a common source for packaging.

    Pick and Pack

    This is the service of putting the right things into the right boxes. In the case of Technical Machine, since we now have ~15 different SKUs (Tessel and the different modules), there are ~87178291200 different possible combinations of product (actually, in theory, it’s infinite because there is no limit to r, the number you select. I just wanted to write a big number). The point is, it’s a real pain to pack the right things into the right boxes, and as a start-up, you probably don’t have time to do that and deliver quality on time. The price here is pretty much never a simple number, but an approximation can narrow it down to “cost of first item in package” and “cost for each additional item in package”.


    The USPS and other carriers offer discounted rates for volume, and some carriers also offer discounts for connections with their preferred fulfillment houses. Your fulfillment house can likely help you negotiate rates with a postal carrier. In any case, it is best to find a shipping consolidator so that your couple of thousand units can be palleted with a million other units being shipped overseas that day. If you’re shipping internationally, it may be cheaper to have different shipping services domestically and internationally.

    Legal Stuff and Filling out Forms

    If you’re shipping internationally, you will run across complications almost immediately in the space of customs and taxes. The mere drudgery of filling out 1,000 customs forms is a good reason to get a fulfillment house. But even if you do, you should familiarize yourself with the legal implications of shipping goods across borders. Here are a few terms you’ll want to look up:

    • VAT: Value added tax, similar to a sales tax.
    • DDU/DAP/DDP (Incoterms): These acronyms refer to when duties are paid, to whom, and who pays them, as well as who is responsible for the goods during different phases of the journey.
    • Importer of Record: The entity responsible for customs.

    I won’t define the terms fully here because I don’t want to give misinformation and the legal definitions change. But they are a good start to wrapping your head around the complexities of international shipping.

    Choosing a Fulfillment House

    Choosing a fulfillment house is very complicated; each fulfillment house has a very different style and set of services. Here are a few good questions to cover when you’re selecting between options:

    • What services are offered? Some fulfillment houses are combined fulfillment and post, some don’t cover postage but offer extensive other services such as customer service, returns, and custom packaging. Most fulfillment houses will have an overview-of-services document they can send you.
    • What else can they take care of? Ask about the little things: will they source electostatic packaging for your electronic parts? Can they put a UPC sticker on it so you can send big packs to distributors? Will they integrate the data from two different order systems for you? The fulfillment house might be able to take care of a lot of little details for you that you hadn’t budgeted into your timeline.
    • What do they require from you? What sort of data do they need? Do you need to supply barcode numbers? Is there a minimum shipping volume?
    • Who do they normally work with? Interaction styles vary widely, and you can infer a lot about the fulfillment house’s usual customers based on the interaction style: are they fast on email? Do they put you on a conference call? Do they prefer you call their cell phone? You are going to need a good line of communication with your fulfillment house, so make sure you can get in touch with them easily and effectively. Then gauge their fit: a big piece of my fulfillment house selection was because I wanted to work with someone who was used to working with start-ups, and could tell me about pitfalls such as chargebacks on pre-ordered products. Other fulfillment houses were just as technically equipped, but were used to working with bigger corporations and more established businesspeople.
    • Are they equipped to work with your customer set and product? If you have international clientele, make sure the fulfillment house is able to process foreign characters. If you have an oddly shaped or very large product, make sure their machines can handle it.
    • What options do they have for expansion? Are you looking for a shipping solution just for your crowdfunding batch, or will you want to keep sending product– in batches or continuously– into the future? Some fulfillment houses are designed to grow with you, with options for international warehousing, customer service, and more.
    • What will they do if… ? Read the service agreement carefully. Make sure you understand what’s going on, and ask questions if you don’t. Here are a few more questions to think about:
      • What does the tracking interface look like?
      • What if an address is invalid?
      • What if the customer returns the product?
      • What happens if there is more product at the fulfillment house than there are orders?


    Of course, you’ll also want to know the cost– here are some good things to know about your product in order to ask for a quote:

    • Quantity
    • Distribution by country of international shipments
    • Description of the product(s)
    • Product size & weight
    • Distribution of number of components per package
    • Any special environmental considerations on your product (e.g. temperature, humidity, special electrostatic handling)

    Also ask about any setup fees and how they handle receiving and warehousing.

    Final Thoughts

    Setting up shipping and fulfillment takes a lot of time; start early. I began researching shipping and fulfillment six months before we planned to use a fulfillment house, and I’m glad I did.

    By far, the most confusing, complicated, and expensive part of this is the international component, and I wish we had entered into it with more research behind us. However, I’m really glad we decided to launch worldwide; around 40% of our site’s pageviews are international, and a similarly high percentage of our crowdfunding backers were international as well. More importantly, a great deal of enthusiasm has reached us over Twitter and email from various countries, and it’s hugely exciting to us as a team to see interest in open source hardware and web-connected programmable devices worldwide.

    Please reach out if you have questions!

    Kelsey Breseman



    #kelsey breseman #technical machine #tessel #shipping #customs #international shipping #fulfillment #crowdfunding #logistics

  • Technical Machine is Growing!

    Monday, December 16, 2013

    12/16/2013— Jon McKay

    Today, we’re happy to welcome Kevin to his first day of work at Technical Machine!

    We originally met Kevin when he joined Olin College back in 2010 and were blown away by his talent and knowledge of both hardware and software. Since then he’s only honed his skills and already caught a few bugs in our firmware during his on-boarding process.

    Kevin already has experience starting a company focused on making great developer tools. He co-founded Nonolith Labs which makes an awesome little analog electronics multitool called the CEE.

    He will be working on improving our USB communications, helping Tim make the runtime faster and more robust, and give us the velocity to (hopefully) ship on time.

    I’m really excited to have Kevin on the team and can’t wait to see the magic he works on Tessel.


    #technical machine #hiring #kevin mehall

  • Updates: Accelerometer, Camera, GPS

    Monday, December 16, 2013

    12/16/2013— Updates

    We got in our newest batch of Tessels this week!

    We’re testing them now but it’s likely that this will be the same design used in our production run.

    We also got in 300 Accelerometers from our manufacturer. We’ll be pushing more modules into production soon.



    The GPS module now has working firmware! Here is our first coordinate data:

    (Don’t worry, I fixed the timestamp issue shown here.)


    It’s been a while since we gave an update about the camera module, but here’s a Tessel selfie we took with one of the cameras we’re testing:

    The camera can send data over two different protocols, UART and SPI. SPI is much faster than UART as you can see from the signal readings we did.

    This is sending an image at 38400 baud. It takes… a few seconds. Realistically this can probably go up to 115200 baud and have the transmission time cut down to ~1s.

    This is transmitting over SPI. It takes ~26ms with a 500KHz clock.

    Sooo we’re going to be using SPI.

    Till next time,

    Jia, Kelsey, Eric, Jon, Tim


    #technical machine #tessel #updates #accelerometer #camera #update

  • Zero to Tessel: Teach Yourself Node

    Tuesday, December 10, 2013

    12/10/2013— Kelsey Breseman

    At this point, I consider myself a connoisseur of online learning programs. Coursera, edX, Boundless, Codecademy, Khan Academy– I’ve tried them all. Because I’ve tested out many of these paths, I now feel qualified to offer you a three-step plan to JavaScript and Node.JS fluency– whether or not you plan to use these skills to work with Tessel. There are no prerequisites.

    (image via nodeschool.io)

    1. Codecademy [~3 hours] for JavaScript syntax. If you’ve never coded in JS before (or even never coded at all), head over to Codecademy and spend a few hours in the JavaScript lessons. You need to know about if statements, for loops, how to make a function. If you’re new to JS but not to code, you could probably skip this step and just google things like “JavaScript function”, but it’s nice to get in a bit of practice so you can recognize bad grammar in your code.

    2. Nodeschool: learnyounode [~2 days] is a nice transition. Nodeschool is an all-offline set of courses, where each lesson is a puzzle to complete in your terminal. Learnyounode will take you from a “Hello World” to parsing information from multiple websites asynchronously. If you focused, you could complete Learnyounode in two days. By the end of this, you’ll know how to use Node and npm, and you’ll be more than prepared to start hacking on Tessel.

    3. Olin.JS [~8 weeks] is a class Tim and Jia created and taught last semester at Olin. All the lessons are here on github, so you (like me) can work through them at your own pace. It will take your newfound knowledge of JS and Node and show you what it can really do. It’s designed to take eight weeks, and will introduce you to git, Heroku, Express, JQuery, AJAX and many other useful tools: essentially, it’s zero to hireable for Node. I recommend this course because you’ll make a lot of cool projects, because you’ll become a legit web programmer, and because Jia’s writing is entertaining.

    You don’t need to do step 3 in order to hack on Tessel. Really, you could just use example code to get it working, and by the time we release we’ll have all the necessary information up on a start page. But to unleash its full potential, you’ll probably want the full arsenal of web programming tools at your beck and call.

    Happy coding!

    Kelsey Breseman


    Enjoy this post? Based on this blog post, I’m curating a similarly styled but more detailed pathway for learning to code over at my website ifoundthemeaningoflife.com/learntocode. Check it out! It contains everything from this post, plus a bit more.

    #kelsey breseman #tessel #technical machine #learn to code #programming #node.js #nodeschool #olin.js #olin #hourofcode

August 2018

January 2018

July 2017

February 2017

November 2016

October 2016

September 2016

August 2016

July 2016

June 2016

April 2016

March 2016

February 2016

November 2015

September 2015

August 2015

July 2015

June 2015

May 2015

March 2015

February 2015

January 2015

December 2014

November 2014

October 2014

September 2014

August 2014

July 2014

June 2014

May 2014

April 2014

March 2014

February 2014

January 2014

December 2013

November 2013

October 2013

September 2013

August 2013

July 2013