All posts by joshholmes

Resume Tip – Tell me what you did

I’m starting a little Youtube series on resume tips. Over the past handful of months, I’ve read close to a thousand resumes and there are some things that really make a resume stand out, good and bad, to me. I’ll be covering these in small bite sized chunks. My goal is one a day. Help hold me to that… 🙂

My first tip is about telling me what you did, not what you were responsible for.

I don’t really care what work people assigned you. I care about the work that you drove and the things that you accomplished. That gives me a far more interesting look into your past.

My big caveat with this series is that I’m not in HR, I’m not a professional recruiter, I’m just a manager who has read a bunch of resumes. The tips are my perspective on things.

Online Conference Chat

I’ve attended a few online conferences recently and one of the most important features, the group chat, is arguably the least functional of the features of the web infrastructure. The reason I attend conferences rather than just watching content on Youtube is the interaction with the rest of the audience. Since we can’t do that in person these days, the group chat in the conference is often the closest thing and I’ve not seen an online conference that does this well yet. That’s not a fault of the conference, it’s that there’s not a group chat that is actually built for conferences that I’ve seen yet.

I’ve spent some time researching this feature set and haven’t found anything that actually does what I believe that a conference chat should do. There are some things that are close but nothing that I’ve seen that actually fulfills all the requirements.

I’m posting here on my blog because I would love input, argument, additions to, … the features that I think are important and if there is a viable solution in the market at the moment. If there is, fantastic. Otherwise, I might start a project to fill this niche in the community. More on the possible project at the end.

  • As a conference organizer, I want to easily embed a seamless chat experience into my conference website
  • As an attendee, I want to be able to comment to the other attendees of the conference in the large group chat
  • As an attendee, I want to have the chat switch to a track specific chat when I’m watching a specific chat
  • As an attendee, I want the ability to declare a “hallway discussion topic” and invite have other attendees join me in that side conversation and have that hallway discussion close once people have left.
  • As a conference organizer, I want the ability to easily spot issues and moderate content, both in an automated fashion and manual fashion, in all those forums
    • Auto-moderation around words, phrases, …
    • Turn on and off links and other such features
    • Ability to boot and ban attendees if needed
  • As a conference organizer, I want to be able to pin an important message to the top of the chat
  • As an attendee, I want to log into the conference web site and have that log into all parts of the website including the chat
    • This one is tough because all kinds of authentication could be happening and we’d need to figure out what the min set of authentication schemes we’d need to support. And likely make this very modular so that it’s easy enough to add another scheme later.
  • As a conference organizer, I need to be able to control all the data to adhere to privacy laws in various geos
  • As a speaker, I’d like to be able to run simple polls in the chat during my talk
  • As an attendee, I would like the navigation at least localized in my preferred language
  • As an attendee, I would like to have the content of the chat translated to my preferred language
  • As a conference organizer, I want the chat to be brandable with conference coloring and logos

I’m sure that there are other features that are important and I’d love it people could suggest them here until such point as we get a github repo going and we can just put things in issues there. I’m holding off on the github repo at the moment though as I’d love to find an existing solution to the features above.

So far, there’s a bunch of things that do subsets of these features but they are typically company chats, not conference chats, that we are trying to bend to our use case but they definitely don’t actually do everything we need as conference organizers and attendees. I’m not going to drain all of these options such as Slack, Discord, Microsoft Teams, … as it does them a disservice. They are awesome products but not purpose built for conferences.

I’d LOVE for this to be a solved problem. 🙂

What I’m thinking about doing is starting with Kiwi IRC. It has a ton of the right functionality already so a large part of the heavy lifting would be creating UI around the existing features to make it easily usable for people who are not intimately knowledgeable with IRC.

  • The backend is node.js and flat files so it’s not expensive to run, fairly easy to deploy and will run on whatever server the conference is already hosting their conference website on. This gives the conference the control over the data that they need.
  • It already has the main chat obviously.
  • It’s easy and programmatic to add additional topics which is how we do tracks.
  • It’s got a fair amount of moderation tools built in already.
  • It has an embeddable web client already.
  • It is already localized into a large number of languages.
  • It already has theming support.
  • It does not integrate into your authentication scheme easily
  • While you can have multiple tracks, we’d have to add UI to make it really simple, through the embedded front end, to add a hallway track and be able to navigate back when done.
  • Some investigation would be needed into automated moderation
  • I don’t believe you can do polls at the moment
  • bonus is that anyone could connect to it with their favorite IRC client and interact that way rather than through the website if that’s desired.

Anyway, I’ve been thinking about this and would love some thoughts and opinions.

Also, feel free to tell me that while this is not a solved issue, that I’m the only one stressing about it so I should move on. 🙂

Looking forward to the discussion.

Seattle GiveCamp 2019

The Seattle GiveCamp Crew 2019

We just wrapped the Seattle GiveCamp 2019. If you’ve never heard of GiveCamp, make sure to check out https://givecamp.org/. The short version is that we get a number of non-profits with technical needs and a number of willing technical volunteers to come help them with those technical needs – lots more detail below.

Josh Holmes presenting at Seattle GiveCamp

I’ve been involved in the Ann Arbor GiveCamp back when we were really early on in figuring out the process. Chris Koenig got this movement started in Dallas. I got involved when Jennifer Marsman and Michael Eaton ran one in Ann Arbor. I feel in love with the movement and have been involved a ton. Two years ago, while at a conference and giving a talk about building community, I talked heavily about GiveCamp and the Seattle GiveCamp leads, Paul Litwin and Suzanna Litwin, came up to me and asked me if I’d like to get involved in the Seattle GiveCamp. Of course I said yes and have helped with the last two.

This year has been a fantastic labor of love. We had 10 non-profits this year:

  • Cancer Pathways — provides support to those affected by cancer. They run an annual contest for teens to write about how cancer affected them. They had just a folder of PDFs which we helped to organize better, convert to HTML, allow for search and much more over the past 13 years worth of contest articles. You can see that work live now at – https://cancerpathways.org/winning-essays/.
  • Freedom Project — supports healing connection and restorative communities both inside and outside prison through the strategies of Nonviolent Communication, mindfulness, racial equity and anti-oppression. As their non-profit rep said, the website looked like an encyclopedia with lots of walls of text. They needed a redesign that embodied their culture and mission. You can see that live now at http://freedomprojectwa.org/.
  • Friendship Adventures — is dedicated to enriching the lives of people with developmental disabilities by providing social, recreational and educational activities in a safe, engaging environment—building interpersonal skills, confidence and lifelong friendships one smile at a time. I have a special connection to this one as my daughter Maura is likely to become a member as she approaches her adulthood. They were doing the registration of all 1500+ of their members by hand on paper. They desperately needed way to do this all electronically. You can see the form that we created for them live now under Yearly Registration Form – https://friendshipadventures.org/forms/. Freedom Adventures GiveCamp Team
  • iD.A.Y.dream — inspires youth to daydream out loud. They needed a website that would embody their mission and have automation around email lists and more. Deeper than that, we had a fantastic designer on the project who helped them produce a complete brand language including colors, fonts, logos, … You can see that live now at https://www.idaydream.org/
  • Neurological Vocational Services Unit — helps people with neurological conditions gain independence one person, one job, at a time. This non-profit was a repeat customer of the Seattle GiveCamp. They had build a website with us many years ago but as tech moves on, the template that had been used was no longer supported by the latest versions of WordPress. Take a pause and realize that they were actually updating their WordPress install themselves – I love that. They needed a refresh on the site and a new theme that would be compatible with the new versions of WordPress. You can see that live now at http://nvsrehab.org/.
  • PeaceTrees Vietnam — heals the legacy of war by removing dangerous explosives, returning land to safe use, promoting peace and cultivating a brighter future for the children and families of Vietnam. It’s amazing, they will turn a landmine filled field into a park, school, library, … They needed an interactive map that can show their projects all over Vietnam so that they could show their impact for their donors so that they can get funding to accomplish even more. We built that complete with an admin portal that can edit the points. It’s not quite live at the time of writing here but it’s coming soon. Peace Trees Vietnam GiveCamp Team.
  • Roots Young Adult Shelter — builds community and fosters dignity through access to essential services and a safe place to sleep for young adults experiencing homelessness. Their site was unwieldy and complicated to manage. We helped them rebuild their website so that it was far more accessible to their audience and manageable by their staff. You can see that’s live now at https://www.rootsinfo.org.
  • Special Bunny Rabbit Rescue — is a Seattle-area house rabbit rescue. Bunnies are the number three most adopted pet and the number one abandoned. Special Bunny Rabbit Rescue rescues these rabbits and helps those who have special needs bunnies. They had an overly complicated to navigate and maintain website which we helped them redesign and rebuild. They are live now at https://specialbunny.org/. Gil the Bunny
  • Street Youth Ministries — provides youth in Seattle’s University District with life-skills, resources, and relationships that bring hope and healing to their lives and the community. This is another repeat customer to GiveCamp. Last year, we helped them build their light weight CRM so to speak. They have a highly customized use case and which only used about 5% of the functionality of a traditional CRM but required at least that much custom work. This year, we helped them implement new functionality and bug fixed a few things from last year. That’s an internal tool that they’ve already rolled out to their staff.
  • Transplant House — provides thoughtful and clean spaces for transplant patients and their families, a home away from home so to speak. They had been doing the hoteling for all of their rooms manually with a lot of excel spreadsheets. We built them a workflow that helps them manage that on the back end of their website complete with reports and more. Transplant House GiveCamp Team

We helped a lot of people this weekend. As always, it was an incredibly rewarding and incredibly exhausting experience.

Paul and Suzanna have been running the Seattle GiveCamp for the last 9 years and have decided to step back a little. They will still be involved but not running things next year. They have asked me to lead next year and I’ve said yes.

Looking forward to next year’s Seattle GiveCamp! It will be Oct 23-25, 2020.

If you are or know of a non-profit in the Seattle Area, have them sign up for notification when we have the call for non-profits, have them sign up at http://seattlegivecamp.org/nonprofit.aspx.

If you would like to volunteer, either as a tech volunteer or as a operational support volunteer, please register to be notified when we open our call for volunteers at http://seattlegivecamp.org/volunteer.aspx.

Visiting Ireland

Over the years, I’ve had a ton of folks ask me for tips on visiting Ireland. I lived in Ireland for close to three years and, honestly, still consider it my second home. I’ve spent a ton of time writing people emails and guides and decided that I really need to just publish this on my blog so that I can refer people to it.

Map of Ireland with Points of Interest
Map of Ireland with Points of Interest
I’ve written about quite a few places below but the map linked above has pinpoints to a ton of great places. Enjoy!

Dublin

Obviously most people start in Dublin as that’s the largest city and there’s a big international airport. Dublin is awesome and has a ton to do.

  • Downtown
    • Grafton Street – amazing walking street with a ton of shops and street performers – especially on the weekends.
    • Book of Kells – Awesome book hand-painted by monks that dates back to 384AD. Contains the 4 gospels from the Bible.
    • National Leprechaun Museum – Ireland has a huge legacy in folklore and this museum tells the stories. It’s amazing…
    • Tidal Flats – One of the things I love in Dublin is walking on or even just looking at the tidal flats. It’s beautiful and goes on and on.
    • Dun Laoghaire Pier – Great place to stop and get an ice cream, walk along the pier or watch the sailboats coming and going.
    • Dalkey Castle – Living museum where the tour guides are dressed in period clothing and give the tour in character. Fantastic peak into the old world…
    • Killiney Beach – Quiet little beach to walk on and collect shells, sea glass, play with dogs…
    • Howth Pier – Lovely pier with sea lions and lots of fresh fish restaurants.
    • O’Connell’s Bar – This is not on the drinking list because you should stop in here and have one of the best fish and chips you’ve ever had…
    • O’Neill’s Pub – Again, not on the drinking list as it’s a great “Carvery”. Go here for lunch and it’ll be worth it…
    • Hairy Lemon – Get the bread pudding.
  • Downtown Drinking… There’s a ton of great pubs but some of my favorites…

Northern Ireland

There’s a ton to see up north and I’ll be adding more as time goes on but here’s some highlights. And yes, I’m conflating some Northern Ireland and Republic of Ireland places.

  • Giant’s Causeway – Fantastic views and stories here as there are huge pylons with a very cool octogonal shape. There’s a great legend involving giants and deception and more!
  • Europa Hotel Belfast – The most bombed hotel in all of Europe. It’s actually a beautiful hotel with a great pub.

Western Ireland

  • Cliffs of Moher – Many of the locals will tell you, “Oh yeah, you should go to the cliffs”. What they don’t tell you is that these cliffs are the “Grand Canyon of Ireland”…
  • The Burren – amazing natural place that’s about 30 square miles of limestone and amazement.

Galway

  • Quay Street – Pronounced “key” – great walking street with a ton of little pubs, shops, live music and so on…
  • Claddagh Jeweler – The Claddagh ring is a mainstay in Irish traditions and the original was made in Galway at this shop. Very cool little shop.
  • The Pie Maker – Some of the best meat pies that I’ve ever had in my life…

Cork

  • The English Market – stunning indoor food court and market.
  • Blarney Castle – Definitely worth visiting. I was terrified that this was going to be way too touristy but it wasn’t. It was awesome. Pro-tip though, the tour busses show up about 9:15 or so. They open earlier than that so get in early. There’s an awesome B&B across the street called The White House.

Other places in Ireland that you should definitely go

I’ll be adding to the list here and categorize these better sometime soon. The ones that ended up in this list are awesome and I love them, they just don’t categorize with the other items geographically.

  • Newgrange – This is where the celtic swirls are first spotted in this manmade structure that pre-dates the pyramids at over 5200 years old.
  • Sean’s Bar – This pub dates back to 900AD in the same location…
  • Kilbeggan Distillery – One of the oldest working distilleries in Ireland. They make some awesome whiskey here including one of my favorites – Connemara Peated Whiskey, the only peated Irish whiskey on the market.
  • Kilkenny Castle – beautiful castle and grounds in a beautiful little village. Oh, and have the Kilkenny Cream Ale in any of the pubs.
  • Knock, Ireland – in 1879, there was an apparition of the Holy Family and the heavens plus a few saints thrown in. They’ve built an amazing set of grounds for the 1.5 million pilgrims that come each year.
  • Derrynane Beach – When God made the world, this is where he put his thumbprint. It’s remote, quiet and absolutely beautiful. And the surfing is great!
  • Fethard On Sea, Wexford – Specifically, you should look at the Hook Lighhouse which is the oldest working lighthouse in the world. It’s sooooo cool.

Wrap up

This is far from complete and I’ll definitely be adding to it but this is a starting list with some descriptions.

Back in the Web Dev World

So I’ve switched roles at Microsoft. For the last 11.5 years at Microsoft (which is 9.5 years longer than I thought I’d be here), I’ve been in some form of developer relations. However, I’ve never shipped a product at Microsoft.

In my new role, I’m joining the Web Platform Team to run the Web Applications and Frameworks team – my new title is the Principle PM for WAF. I’m managing two products related to people writing apps with web technologies. The first is WWAHost which is how we write Progressive Web Apps which are native apps written with web standards and technologies.
Check out Get started with Progressive Web Apps for more details.

The second is Webview which is how you incorporate web tech into a standard native app written in .NET, C++ and so on.
Check out Microsoft Edge WebView for Windows 10 apps for more details.

I also work with JavaScript frameworks internal and external to Microsoft. To this end, I’ve got a great dev on my team named John-David Dalton. He’s had a continuous streak of activity on Github since July 23, 2013. This has included building lodash, contributions to Babble and even as far as adding ESM support to Node.JS and NPM.

I’m looking forward to shipping a product that touches millions of people. 🙂

Doing the wrong thing…

There are times that your customer will ask you to do something so you do it. But did you stop to ask them about why they need that done? The story here is an old one that you might have heard but recently someone gave me an addition to the story and it blew my mind.

If someone comes to you in the hardware store and asks for a quarter inch drill bit, what do they actually want? Quarter inch holes. A drill bit is just a tool and if there’s a better way to give them the quarter inch hole, give it to them.
The addition was, now ask why they want quarter inch holes… Turns out they are hanging a ceiling fan. Ask them why they are hanging a ceiling fan. Turns out they are trying to sell their house and they were told that a ceiling fan in the bedroom would help. Ask if you could come take a look… Turns out that the paint outside is faded and cracked so the reality is that when they asked for a quarter inch drill bit, really they needed 5 gallons of paint and a ladder and in all honesty, they should slap you for selling them the drill bit.

I’ve been reflecting on this a while and I’ve come to the following…

I’ve long had a philosophy that I’d like to

“Do something, anything, even the wrong thing, learn from it and iterate.”

This has been my guiding light and has helped me keep from getting stuck in analysis paralysis and drives the analytical people around me absolutely nuts (Looking at you Gary Sweeting…) 🙂
That said, I was talking to my new friend that I met at Collision Conf this week, Bas Wouterse (CTO at http://telm.nl), and I realized that I’m slightly off there. It was an aha moment for me as I realized that I’ve been voicing my actual process wrong for years.

Here’s my new motto

“I’d rather do the wrong thing than solve the wrong problem”

The original motto still applies once I figure out what the problem is that I’m solving but it’s not enough to just start doing stuff. I was out with a young developer who asked what’s the difference between an architect and a developer. My answer was “An architect is an experienced developer who cares about the requirements phase of the project.” And that’s the case. I care about the requirements. I’ll investigate until I get a grasp of the problem. Then I’ll start doing stuff in that direction. I’m normally wrong in my approach the first several times. However, as I get more experience, I have gotten better about being less wrong about my direction even in those early phases. The trick is to quickly realize that I’ve made a mistake and fix it. I don’t try to make mistakes, however I’m not scared to make them.

The biggest mistake though, as I’m learning from my previous mistakes, is to solve the wrong problem. It doesn’t matter how correct your solution is if it’s the wrong problem. This goes from macro to micro.

At the macro level, I’ve met a ton of startups who are solving the wrong problem. Normally this means that they are solving a problem that their users have but not solving a problem that their potential customers have. Noodle on that a bit… 🙂

On a micro level, customers always tell me that X is not responsive enough or something very generic and sweeping like that. Rather than digging into the speed testing and all that, I ask them what they mean and start unpacking “responsive” means to them specifically. Often it turns out that you and your customer have very different definitions of responsive. Once you figure out what responsive means, anything that you do to solve the responsiveness issue has a much higher probability of being a step in the right direction.

Summing up, spend the time to ask that next question that will get you closer to solving the right problem.

Open Sourcing Mental Illness

Open Sourcing Mental IllnessAt PHP Tek 2014, I saw a set of talks organized by a guy named Ed Finkler. This included a talk by Greg Baugues and Paddy Foran. They really opened up and talked about their own mental health issues including anxiety, depression and more. There was not a dry eye in the house. I’m not going to tell their story. That’s their to share. What I am going to share is how it affected me and my story.

Reason I’m blogging about this now is that I recently had a chance to interview Ed and post that to Code to Live.

I’ve always joked about having ADHD but it was always just a joke. My wife, Phoebe, was talking to someone (I don’t remember who) and they recommended that I read a book called Delivered from Distraction.  The first thing that I did when the book came in was the self diagnosis and wow did I score highly on that. The one set of questions that I missed on were the ones about relationships. I got lucky and married a very supportive wife. One of the big things that I learned was that one of the dark sides of ADHD is that people with it suffer from low self-esteem and depression. While I’ve suffered from this myself, I had never attributed it to ADHD and while I joked about it, I hadn’t thought that I actually had it or had any idea how to deal with it until I read the book. And very importantly, I was making the biggest mistake that most people make here – I was trying to deal with it on my own rather than seeking help.

Shortly after this I went to a therapist who specializes in ADHD. He worked with a phycologist and between the two, I was officially diagnosed with ADHD in 2008. I was prescribed with Adderall. The good news is that I knew what that was because I had read about it and the upsides and the side affects. There are two basic types of ADHD meds, anti-depressants and stimulants. They work very differently and sometimes one works better for one person than the other. If you suffer from ADHD, you should work with your mental health professional(s) to figure out what’s going to work for you.

This happened in 2008 but the reality is that I didn’t talk to people other than good friends until 2014 because I was ashamed about it. Ed, Greg and Paddy showed me that we need to talk about mental illness and take away the stigmas. That’s the only way that we can actually create a supportive and healthy environment. The worst thing that we can do is try to suffer in silence and not seek help.

If you want to learn more, if you’re suffering or are not sure if you’re suffering a mental health issue, there are resources up on Ed’s site at http://osmihelp.org.

What is ¡Pura Vida!

I recently got back from an amazing trip to Costa Rica. It was absolutely amazing and has changed me (I hope) forever and for the better. Unfortunately it wasn’t 31 days, but rather it was only 8 days. However I’m taking on a writing challenge of writing something every single day for 31 days straight. I decided to write about the change in my life…

¡Pura Vida! is the Costa Rican way of life. Translated it’s “pure life” which sounds pretty simple but in practice it goes much deeper. Most of the time folks look at it as just like a “hang loose” or something like that. But it goes a lot deeper than that.

It started in a 1956 film from Mexico called Pura Vida in which the main character said the catch phrase all the time as an expression of unbridled enthusiasm. The movie was a hit and the phrase started spreading. It was slow but by the 1970s, it was all over Costa Rica. It was even officially recognized in dictionaries in the 90s.

The phrase really means that life is wonderful, that there is always someone who is less fortunate that you and we are all in this together. This pervasive outlook on life is outstanding and something that more of us need to adopt.

As I looked around Costa Rica, I saw some real poverty but everywhere I looked I saw amazing generosity, joy and community. Jeremy Sublet and I were driving through a small town and stopped for lunch. The town obviously didn’t have any money and everywhere I looked I saw joy and love whether it was couples walking in the park or having lunch together or kids playing in the streets. At the end lunch, we were headed back to the car when one of the guys at the bar held up his beer to us and I heard that phrase for the first time – “¡Pura Vida!”.

At the time I didn’t understand what it meant. But I laughed and said “¡Pura Vida!”.

Now that I understand more about it, I look at my life and think about all of the times when I’m wallowing in self pity. Yes, I have hardships in my life. But there are so many people who have so many more real troubles in their life.

Over the next 31 days, I’ll be writing about ¡Pura Vida! and how I’m going to be trying to incorporate it into my life.

Deciding to go to Costa Rica

Justin Bronder in a boat at Rio Clara

Justin Bronder in a boat at Rio Clara

The first time that I met Justin Bronder, he was just back from a trip that he acted like was the trip of a lifetime. He showed me amazing pictures of obscure birds and crazy little monkeys. Actually, the first picture that I saw was of a monkey’s behind as it mooned the camera. I thought he was nuts, that he was was awesome and that we’d be friends all at the same time. Turns out I was right on all accounts.

Fast forward a year and I know for a fact that Justin has got one of the biggest hearts that I know. And amazingly, he headed back to Costa Rica and invited me to come with him. Something in Costa Rica had touched him and he wanted to share that with more people.

The restaurant at Copa de Arbol at night.

The restaurant at Copa de Arbol at night.

While I was excited to go, I really didn’t know what to expect. Justin had talked about the both the jungle and 5 star resort and pointed me at the hotel web site – http://www.copadearbol.com. When I looked at the web site, I saw that it was both – a 5 star resort in the middle of the jungle. There were some other things that were fun. The resort is right on the edge of the Corcovada National Part which is a green zone. There’s no roads to the property so everything is water taxi or hiking. That made me even more excited.

I talked to my wife and got permission to go.

Honestly though, I didn’t spend enough time researching Costa Rica. That was a failing on my part.But I didn’t look at the amazing country that I was about to go to other than seeing it’s in Central America. I spent a little time reviewing my pathetic Spanish. “Gracias”, “Hola”, “Adios”, “Caliente”, “FrĂ­o”,  “Uno, “Dos”, “Tres”…  I spent some time looking at my camera gear, picking up waterproof backpacks (I picked up an awesome one – Phantom Aquatics Walrus 25 Premium Waterproof Backpack Dry Bag) and the like.

It was all completely selfish but the good news is that despite this failing, I was ready to start packing for the trip.

Going to production with chipsets.

IoT is hotter than ever and there are a ton of folks getting jazzed about the Raspberry PI 2, the Arduino, Intel Edison and other awesome and cheap devices that are incredibly powerful. The issue is that these are maker boards designed for hobbyists, not production boards that you could actually leverage in a real production product. This is deliberate on their part as they are going after a specific audience and they do an outstanding job of it. There are a ton of folks prototyping on these boards, as they should, and getting their proof of concept running. But then, there needs to be a path to production. The great news here is that there are a lot of great paths depending on what you’re trying to accomplish and what features you need in your board.

It’s a good idea to start with your path to production in mind when you pick your maker board. Reason being, if you have a similar chipset and capabilities to what you’re going to go to production with, it’ll minimize churn when you get to that point. If you’re going to be going to production with a minimal real time operating system, it’s probably a bad idea to start with an x86 board with gigs of ram and processing power.

Embedded OS Options

Since it affects your chipset choice, the first thing is to talk about the different embedded OS options and their capabilities. The options range from real time operating systems (RTOS) to embedded Linux to many different flavors of Windows.

The first question is what are you trying to accomplish? What’s your device going to be doing?

Power systems make a huge part of this choice for you. Is it going to be battery operated? Rechargeable? Constant wall power?

Is it going to be doing communications? With what? Over what type of radio?

How are you doing security?

Are you doing processing on the device? Or is it simply a remote sensor or actuator of some sort?

How complicated is the processing that it needs to do?

Obviously cost is also a factor. What’s your target “BOM” or Bill of Materials?

How large is the space you’re going to put it in? Does your device have ventilation? Some processors require more robust cooling systems or have more sensitive temperature ranges. It matters if you’re putting a device in the arctic circle or in the middle of death valley.

What’s your development language? Realize that I put this fairly far down the list of considerations because it’s possible you are going to have a language forced on you. But if you can choose, would you prefer C, C++, Python, JavaScript, .NET or what.

That’s a lot of questions but it really drives down to four basic options that are chosen most of the time, Windows, Linux, an RTOS (real time operating system) or a microcontroller where you are writing firmware.

Windows 10 IoT Core is the current build of Windows for smaller devices. Your options for development are the languages that run on Windows 10. That’s quite a few including C, C++, .NET or any other type of runtime that runs on Windows so you can get Python, Javascript/node.js and the like to run on it. This makes it an extremely versatile option. It’s also a very robust option when you’re talking about security, communications and the like. If you want to get started on this option, check out http://ms-iot.github.io/content/GetStarted.htm. The downside on Windows 10 IoT Core is that it’s limited to the x86/x64, Atom and ARM chips.

Linux is another great choice. On many devices you can run something as big as Ubuntu however there are a number of variants of Linux that are specifically built for embedded devices. The one that I’m most familiar with is OpenWRT. It was originally built for firmware on routers but it’s a tough little operating system that works well on a lot of little devices. It’s more limited on languages in that it doesn’t run .NET but you can run C, C++, Python, node.js, Java and the like. It’s also able to do communications and security just fine. And it runs on a very wide set of processors.

The downsides of both of these options is that while they have more capabilities, they have latency compared to an RTOS. If you really need real time, you’ll need to look at something a little deeper but to be honest, it’s been years since I’ve done anything with real time. I’m usually close enough that the user doesn’t notice vs the exact number of milliseconds matter.

The other option is some type of firmware where you’re skipping the operating system completely and programming the device to do exactly one thing and do that thing well (theoretically). In these cases, typically security and long range communications are offloaded to a gateway device that is running one of the above options.

Chipset Options

The second thing to do is talk about the types of chipsets and their capabilities. I’m not going to go through every possible chipset in the world but there’s a few that are specifically focused on the IoT.

Of course you can run an x84/x64 if you are going to be on constant power or at least near power. The Intel Galileo is maker board based on this chipset. It runs Linux and Windows Embedded (that’s prior to Windows 10 IoT Core)

Intel’s Atom processor is the next on the list. This is a great little chipset built for lower power consumption and longer battery life than the x86/x64 chipsets. These can still run many flavors of Windows as well as Linux. A great prototyping/maker board for this is the Raspberry PI 2. It’s running a 900 MHz quad core Atom processor.

The Intel Edison runs a Quark processor, comes with BLE and WiFi on board and the whole system can fit inside an SD card if you need the space. It runs Linux. I’m not wild about Intel’s toolchain for development but it’s a good chip.

Atheros is another great chose if you are looking at Linux as your host. A great board for this is the Arduino Yun. It has both an Amtel chip for more real time/micro controller options as well as the Atheros chip for running linux. Their default distros are running OpenWRT.

The Amtel chipset is the first microcontroller that we’re going to talk about. These are even lower power consumption than the Atom but they also have less capabilities. The huge advantage that these bring to the table is that there is very little that can go wrong with them. Since you are basically writing firmware, you can just plug them in and let them run. The Arduino is an example of a maker board that you can use with the Amtel chipset.

There are lots of other chipsets that are pretty awesome but I’m going to skip those for now

Manufacturer Options

There are a ton of manufacturers that are out there. Before you pick your manufacturer, you should pick your chipset and then start shipping around.

Dog Hunter is the manufacturer behind the linux system on a chip that’s on the Arduino Yun. They’ve got a great little chip called the Chiwawa. In quantities of 5000 or more, you can get these down to sub $10.

Intel is obviously the manufacturer of the Edison. They are a known quantity and know how to produce in quantity. They also make a Quark SOC that’s a well-established chipset.

The reality is though that you might need to go to China and meet with some of the manufacturers yourself. But to meet these folks, you have to know where to go. The great news is that there’s a ton of great resources to help you locate a partner and start conversations. GlobalSources.com, ThomasNet and Alibaba.com are a great starting point for components. It’s like the Yellow Pages for manufacturing. If you start looking through, you’ll find folks that do production for all the major players such as Nokia but also for little guys. But don’t trust what’s on their web site as your end all be all. First of all, manufacturer’s websites are A: marketing and B: notoriously out of date and poorly designed. Research the companies looking in your favorite search engine for the manufacturer’s name and the words “scam” or “fraud” or “fail”.

Quantity Options

In physical manufacturing, quantity matters. It takes time and effort to set up the manufacturing of a given item. There is also the possibility that there’s specialty equipment and the like that either needs to be purchased or tuned to make your device. Both of these, time and equipment, cost a lot of money. That price needs to be amortized across a large number of units in order to really drive the cost down. If you want 10-20 of a small device, expect to be paying hundreds to thousands each just for the setup and manufacturing before you get to your “BOM” or Bill of Materials. Reality is that if you are only ordering a couple hundred devices, that’s a “small run”. In fact, some manufacturers look at anything less than 10k as a small run. This means that either they are not interested or the price goes up fairly dramatically. That said, don’t go do a run of 10k of something without verifying that it works and that customers like it.

Summary

There’s a lot of questions that you have to answer before you get started building. Most people start with the board that they get cheap at Radio Shack but don’t think down the line for when they are going to try to go to production. Before you make that mistake, think through the choices that you’re going to need to make and then pick a board that’s a good fit for you.

BTW – I talked about some of this on the .NET Rocks Episode 1144 – Getting Practical with IoT