My Summer at Calxeda

Well, I’m now two months late on writing this post, but it finally did make its way off the todo heap and onto my %eip.

Why Calxeda

I met Calxeda the first time at SC13 when the rest of the UT SCC team were taking a break to troll the vendor area for swag. At the time I was enrolled in UT’s Honors Operating Systems class which prompted me to inquire about the operating system used to manage the Calxeda 5 core SOC (System On Chip) design. As it turned out, Calxeda has their own FREERTOS based platform known as SOCMAN which runs the SOC. This embedded platform and the prospect of getting to do development on a “real” OS was what originally drew me to Calxeda.

And I wasn’t disappointed. Interviewing with Calxeda was pretty standard… a couple questions about graph traversals related to some awesome networking stuff they do, the obligatory “count the number of set bits” low bar question (I forgot the “arm and x86 have ops for this” answer :P) and I was offered the opportunity to work on the SOC team which I happily accepted.

My Summer

Calxeda was an interesting place to work. One thing that I’ve been very concious of in my searching for summer internships is company culture. From my friends at and interviews with Google and Facebook it seems as though in no small part due to the prestige commanded by and employee services provided by these employers there is pressure at least on interns not only to deliver as developers but to put in 50 and 60 hour weeks to do so. In their recruiting efforts Rackspace and Facebook definitely stood out in trying to advertise an “its fun to work here” culture which seems the fashion among the current generation of startups and hip companies.

Calxeda was definitely a classical, professional 9-5/8-4/10-6 shop. We didn’t have an office chef or a slide, there weren’t scooters in the hallways and only a few of the software developers were crazy to bike to work but it was an awesome place to work because of the people and the developer experience I got.

I’m an autodidact, and I enjoy assignments and projects which either call on that skill or demand it. At Calxeda, my direct programmer/managers David Schwartz and Jon Loeliger had their own assignments and while I could get whatever help I needed from them I was more or less off on my own with a mission to either implement a feature or chase down a bug. I’d check in with Jon once or twice a day, but for the most part I was just head down at my desk with the rest of the interns having a blast working on some hard problem. How does this SATA system get powered? When can I insert this assembly snippet without causing a buss fault? How do I reengineer this library to reduce out repeated functionality? What changes do I need to make to our makefile system in order to support my changes, and how much ascii art can I slip into the boot sequence without incurring some serious WTF on the patch review list?

And I got some really cool projects too! The first project I got, once I’d succeeded in setting up the arm cross compiler on my dev box (an entire project in and of itself :-/) my first assignment was to write an assembler patch to the spin_1uS() c function which didn’t seem to reliably spin the desired time interval. I got assigned to refactor boot critical code to match the Calxeda internal style rather than ARM’s… I got to implement a major driver based fix to a hardware bug which involved a week of researching the boot sequence… mucked with boot errors and error propagation… Yeah. I wanted to do embedded OS dev, I got to do embedded OS dev and I had a total blast.