Recent Blog Posts

Coffee Project: No Tolerance For Bad Tolerances

by Mike Ho


Summer is upon us and with it, San Francisco’s famously frigid fog. And what better way to contemplate the misery of unseasonably chilly temperatures than with an equally chilly beverage?

Fortunately, I happen to be the proud owner of a cold drip coffee brewer, perhaps the most time-consuming and impractical way of making coffee on the planet. Unfortunately, it suffers from an even more serious problem: bad tolerances. And by “bad” I mean low, which equates to large (opposite of high). Anyhow, here it is in pictures:

Perhaps worst of all, these problems are compounded by tolerance stacking. Since the parts are, after all, stacked, the worst-case scenario for the topmost part combines the worst-case deviations of all the parts under it.

This tilt could result in uneven extraction, since the dripping water will tend to drill down the same path through the column of grounds.

 » Read more about: Coffee Project: No Tolerance For Bad Tolerances  »

Mindtribe’s Approach Applied to a School Robot Project

by Adam Rothschild


A few weeks ago, Mindtribe gave a talk to a college engineering class on our approach to project planning and execution. The high-level themes of our talk were:

Align on a focused product.
Focus the team on the most important things first.
Seek and incorporate new learnings frequently.
Build less, faster.

The class project–a robot that played a variation of hockey–was to be handed out at the end of the lecture. So, in addition to sharing Mindtribe’s planning approach, and how we applied it to develop Adobe Ink and Slide, we also gave them some concrete ideas for how to apply the principles to a project like the one they were about to receive.

After our talk, we asked if anyone had questions. The professor raised his hand and said, “That was provocative! Does it actually work?!”

 » Read more about: Mindtribe’s Approach Applied to a School Robot Project  »

A Peek Inside Autodesk’s Pier 9

by Angela Chu


Recently, we at Mindtribe were invited to explore Autodesk’s Pier 9 workshop. Located on the waterfront in downtown San Francisco, the facility’s collection of equipment spans the spectrum of fabrication, from rapid prototyping through production. There was much wide-eyed excitement from our team, and we thought we’d share the experience here!

The first floor houses an impressive collection of CNC equipment – the kind that runs nonstop on a manufacturing floor, made available for the experimentation of Autodesk’s Artists in Residence and employees. This includes a HAAS mill and lathe, a 5-axis OMAX waterjet, a multi-axis Mori-Seiki with lathe and mill capabilities and a 5-axis DMS router with a 5’x5’x3’ bed.

Behind the CNC area, there is a wood shop, metal shop, and a space for welding. Here you’ll find all the standard wood and metal working tools,

 » Read more about: A Peek Inside Autodesk’s Pier 9  »

Thinking Strategically about Tech

by Andrew Dupree


The Silicon Valley story leaves out a lot. You know the tale – the college dropout who has a great idea, builds it in his garage, remains scrappy and resilient in the face of adversity, and eventually becomes ludicrously rich. It’s Bill Gates, Steve Jobs, Elon Musk…the list goes on. In each case, we idolize the idea, the engineering, and the entrepreneur. It’s the American dream, where hard work and persistence are the keys to success. In reality, however, there is more to building a successful company than having a great idea and hacking together a great widget. Good ideas fail every day. Indeed, reports state that over 90% of startups fail. The reasons for those failures are many. Some of those startups probably did not have a great idea to begin with, or maybe their team fell apart. But for every startup with a good idea and a good team that ultimately fails,

 » Read more about: Thinking Strategically about Tech  »

Do C Callbacks Like This. Not Like That.

by Jerry Ryle


Let’s say you’re creating a module that uses callbacks. Being a good person, you’ve allowed the caller to register a context that will be passed to the callback when it’s invoked (this is super helpful for C/C++ interoperability, BTW…but that’s a different blog post):

typedef void (*callback_type)(void *context, int notification_flag);
void register_notification(callback_type callback, void *context);

Now, when you’re using this module, you might be tempted to do this:

struct my_context {
int foo;
void notification_callback(struct my_context *context, int notification_flag) {

register_notification((callback_type)notification_callback, &a_context);

That cast in register_notification is a pretty blunt tool. It’s required because the signature of callback_type and notification_callback don’t match. We’re casting because we know that the only difference is the my_context pointer vs. the void pointer in the function signatures. We know these are compatible, and we know that our callback will be handed a my_context pointer when it’s called.

 » Read more about: Do C Callbacks Like This. Not Like That.  »

Rapid Prototyping with Fusion 360 and the Othermill

by Randy Ting


At Mindtribe, we’re always exploring new economical ways to rapidly prototype our designs. When our electrical engineering team purchased an Othermill for routing out simple 2-layer PCBs, our mechanical engineers immediately started thinking about how to use the new tool for fabrication of 3D parts.

Unfortunately, there is no straightforward and well-documented process for exporting g-code for the Othermill directly from Solidworks. After some searching, we found a nice tutorial on Instructables that details out the process of exporting g-code from Fusion 360, Autodesk’s cloud-based 3D CAD/CAM tool.

A quick glance at the features of Fusion 360 revealed that it supports T-splines surfacing, modeling, cloud-based document control, simulation, and CAM all with the same interface. All this for the low price of $free.99 for students, enthusiasts, hobbyists, and startups. To see if this product was too good to be true, I tried making a creamsicle ornament and took some pictures along the way.

 » Read more about: Rapid Prototyping with Fusion 360 and the Othermill  »

Becoming an Unusually Effective Debugger

by Andrew Dupree


Recently, I was perusing the tech blagosphere when I came across a post called Unusually Effective Debugging, by Carlos Bueno. In this writeup, Carlos teaches us his philosophy for debugging code. It’s a great read, and concise, so you should definitely read it for yourself. But for our purposes, I’ll give a quick summary. Basically, Carlos argues that debugging is not about iteratively devising and testing potential causes of the problem. While this process works for the simplest pieces of code, for even a moderately complex system it quickly becomes unrealistic. There are just too many things that could be wrong. Instead, Carlos recommends that we visualize all the possible causes of the problem and then work to define tests that eliminate whole sections at once. In his words:

It’s about imagining a huge multidimensional search space of possibilities and looking for ways to eliminate half or whole dimensions,

 » Read more about: Becoming an Unusually Effective Debugger  »

Semihosting: A Cautionary Tale

by Jerry Ryle


Some of us were rambling about semihosting the other night and what a pain it can be. “What’s semihosting,” you ask? Why, it’s this.

In a nutshell, it’s a way to redirect stdio to the debugger. This lets you call printf() from within your embedded target and watch the output magically appear inside a console window inside your IDE. No serial ports, serial port drivers, or USB-to-RS232 adapters needed.

“But that sounds awesome! Why is this a pain‽” you interrobang.

Well, while it’s nice for development, it’s yet another thing you have to figure out how to correctly deal with for production. Semihosting, by definition, requires a debugger attached. Without a debugger attached, semihosted applications often flat-out refuse to run. Unless you expect your customers to have debuggers attached while operating your product, you can’t expect semihosted code to work properly in your customers’

 » Read more about: Semihosting: A Cautionary Tale  »

Visualizing network topologies

by Elisa Duggan


Recently I wanted to come up with visual analogies for different network topologies. WiFi infrastructure networks act a lot like the post office. When a device has a message they put on an address and send it to the post office to deliver. Messages can move in between any of the addresses on the network but it requires the post office or router to deliver them. If the router goes down the devices are not able to communicate.


With a direct connection like a typical Bluetooth connection you have a single channel of communication. I think of this like a walkie-talkie. Bluetooth is a little more complicated because a host device can have several slave devices connected but basically each connection is direct between the two devices.


But when I came to a mesh network I was stumped.

 » Read more about: Visualizing network topologies  »

Wreck-it Wednesday: LCD Teardown

by Jason Gonzalez


A Mindtribe tradition was recently resurrected. Teardown Thursdays was sadly forgotten, lost in the hustle and bustle of growing our team. Luckily a voice spoke up, and now it has been replaced with Wreck-it Wednesdays.

Before you get hung up on our awkward attempt at alliteration, I think teardowns can be a fun and engaging way of sparking a young, inquisitive mind. If you know a kid who shows some interest in engineering or technology, what better way to foster that interest than to explore the design and construction of household objects. Before broken toys are sent to the landfill, or before dead electronics are tossed into the ever-growing pile of e-waste, take a screwdriver to them. Open them up and learn about how they operate, or even why they are broken. It’s the perfect opportunity to ensure the next generation of engineers gets an early start. Of course,

 » Read more about: Wreck-it Wednesday: LCD Teardown  »

Introducing Flea, Mindtribe’s Fast and Familiar Bluetooth Smart Path

by Brian Cherbak


The Internet of Things is upon us. CES projectile vomited connected devices like a five year old on a road trip through the mountains. From a consumer’s point of view it means that your plants get the right amount of water and your belt tells you that you’re fat. From our point of view at Mindtribe it means we’re quickly becoming pros at Bluetooth Smart, formerly Bluetooth Low Energy.

We’re in the business of quickly building high quality products, so anything we can do ahead of time to be prepared for product requirements will get us closer to the first works-like prototype, the first fully integrated prototype, and ultimately production. So we’ve been doing some homework in the field of Bluetooth Smart, talking to vendors about the latest chipsets and finding evaluation modules to prototype and test with.

One of our favorite development kits is the LightBlue Bean by Punch Through.

 » Read more about: Introducing Flea, Mindtribe’s Fast and Familiar Bluetooth Smart Path  »

Getting Grounded: A Thermocouple Rite of Passage

by Kevin Mori


In today’s consumer product design world, thermal design is often the dark sheep of engineering.  The spider webbed phone screen – or even the waterlogged laptop on critical life support in a bag of rice – is a familiar sight in our tech-acclimated society.  But the blank screen with an error message, “iPhone needs to cool down before you can use it”?  Sacrebleu!


Testing thermal limits just doesn’t sound as glamorous as pushing processor speed or stretching screen size. And yet it’s perhaps the greatest limit to faster computers, quick-charging electric cars, and affordable LED lighting. I’ll save my defense for another post, but I urge you to become a better-informed thermal citizen by paying a little more attention to what’s hot (or not) in your surroundings. Nurture your inner engineer and grab a thermometer, or even a thermocouple.

Ah, the humble,

 » Read more about: Getting Grounded: A Thermocouple Rite of Passage  »

Load More