h1

Consulting rate

November 11, 2012

People don’t like to talk about how much they make. Fair enough, I’m not going to be a trend breaker. On the other hand, engineers new to contracting often have questions about what they should charge. It really all depends. But I can give a slightly more useful answer than that.

You could take the salary you currently make, divide by 40 hours/week (or however many you work), then divide that by 52 weeks/year. This is what companies want to pay you and what some companies expect you to take. Unless you are hurting for work this is a really, really bad deal.

See, you don’t work 52 weeks a year in a full time job, with 10 paid holidays, 5 days off sick and 10 days off for vacation, you’d only work 47 weeks a year. A full time job pays part of your social security which you will now pay as self employment tax, 13.3% for 2012. If you’d found you were making $1/hour in the initial calculation ($2080/year), you probably find you are closer to $1.25.

And a full time job has perks, health care is the big one that can be expensive to manage as a solo contractor. But don’t forget the dental and vision coverage, retirement savings programs, lunches, stock options, and assorted other benefits. Even if they aren’t contributing to your 401k, they may have the benefit in place so you don’t have to deal with it yourself. It can be a hassle.

Oh, and as a contractor, you are supposed to provide (and maintain) your own gear. This can be good (tax deductible gadgets!) but can get expensive. And billing hours and dealing with clients who haven’t paid you is part of being a contractor so you need a little buffer in your month for that.

You could keep adding things up but for a back of the envelope calculation, I go about it all differently.

How much would you want to make in a full time salary? Use salary.com or whatever is good for your industry to figure out a range for what you should make. If that research shows you should make $1,000 per year, then you should be charging $1/hour. Where the divide by weeks and hours method gave you a lower bound, this one usually gives a higher bound.

From this higher bound, I often give discounts (and occasionally adders) based on how much I like the product, how much I’ll learn about technology I’m interested, if they’ll be engaging a little time (more expensive) or lots of time over months (less expensive). If I know I like the people, I’ll charge less. If the client tends to need high-priority emergency time, I’ll charge them more (because it is harder to fit in other projects without good planning). And if the client wants short term loans from me, they get charged more (about 5% per 15 days after the initial 30, I do not appreciate net-90).

So do I charge different clients, different rates? Yes. And usually if multiple clients want things at the same time, I work on whichever one is paying the most (with exceptions whenever I’ve promised a completion date, promises before cash). And I’m upfront with my clients that they aren’t only ones I’m working for so they understand this.

I don’t usually carry more than two clients, heck I don’t always carry more than one since I like to work on my own projects but I try to treat my project time like client time (I even clock in and out of my own lab books sometimes).

It is easy to think about every hour of your day being billable (e.g., “I should have pizza delivered instead of spending an hour making dinner”). That can be dangerous to your mental health. Sleeping is just money being thrown away.

Finally, a bonus suggestion for new contractors: figure out what you can live on and make goals for yourself. Put upper bounds on your goals as well as lower. Getting burnt out or physically hurt (or not hired because you aren’t doing good work because you haven’t slept in six months) is more expensive than reasonable goals.

20121111-131416.jpg

h1

I hate connectors

October 26, 2012

I’ve hinted about my personal project… I’m still not going to be specific about it but I will say that there are six pieces connected together via cables, fairly complicated cables.

I’ve been working with my single prototype, built by ordering parts from Sparkfun and laboriously put together, particularly given my soldering skills. It isn’t that I can’t solder, just that I don’t do it often so I tend to over-engineer my connections making each built circuit look like a tiny tank. Of solder.

Anyway, I need to move from one prototype for me to develop the idea to several prototypes to test the unit with actual users. I’d like to go to ten prototypes because that is what I’d ask for the firmware team if I was at a real company. You know, one with funding. Let’s just say the ten prototypes will be expensive and talk about funding another time.

What I want to discuss today is about connectors. By the title, you may already have clued in my feelings on said topic. But there is so much more to it than that. The only way to express the horror is to describe the whole process.

I started out with the number of wires I need to go to each piece of my system (five). For my prototype, I went to an electronics store and looked around for things about the right size. The resident helper-gnome sold me a wire crimper… Like some sort of medieval torture device a crimper puts a metal sleeve (terminal) on a wire so I can put it into the connector housing I’d chosen. Then I could attach my housing to the pins jutting out of the connector header on the board.

Got that? The housing is on the cable, the wires go in to it via crimped terminals. The board has a header that connects to the cables housing.

Crimping the wires requires a special tool. The usual cost for such a tool is between $400 and $2000 dollars. My head reels at what a scam that is.

The gnome helped me choose a $40 crimper tool that will work on most connectors of a certain size (0.1″ if you must know) and a certain wire gauge. Of course, I have to do three times more work than the expensive version but I’ve this is a labor of love. Right?

So I learned made cables with all this and it was difficult. By the end, I was near blind and my hands hurt.  Right now, I need to make a couple cables longer (which means remaking them entirely). I’ve been putting it off for two weeks.

The pain of that is nothing compared the pain of trying to choose the correct connector for going forward.

I know I want a smaller connector for the small build than the prototype. And I need a lot of interconnects so cheap headers would be nice. I plan to have someone else make these cables but I need to be able to build extras or repair broken ones, so the tools can’t be horrendously expensive. Someday, when we build in the thousands, I might be able to get rid of connectors altogether actually soldering wires on to boards with some (unknown and magical) strain relief.

So, if you go to Digikey and search for connectors, you get a giant list of inexplicable things. There is no quick parametric search yet where I can enter the number of wires and the spacing. Like looking up the spelling of a word in the dictionary, you really have to know what you want before you get there.

I went for Board to Board – Arrays, Edge Type, Mezzanine. It had lots of options. And I got completely lost in the options. An EE friend came over to let me watch over his shoulder as he found some connectors for me. We ended up with a housing that is half the size of my current one, has keying (can’t plug it in backwards) . At the bottom of that page, you can see it links to mating products. Sorting out which of those would meet my needs meant reading about each one, trying to figure out what it meant. The datasheet didn’t exactly have a choose-your-own-adventure guide to connectors, more a terse listing of numbers and part drawings that looked like they were drawn by Escher.

We chose a header and selected terminals to crimp on to the wires. A complete set. And the EE thought that it would all work with my $40 crimper, though it might a little fussy.

In a different adventure, another EE came over and looked at all this. He said it was all wrong. Well, not all wrong. Just not right. Sure, it did all match which was good (better than my first on-my-own attempt). But my crimper wasn’t going to work… not really. I’d go blind first.

He suggested a different style of connectors (IDC) which don’t require terminals. (I didn’t think that was an option because I need discrete wires and not a ribbon but that is a detail, and they do make discrete wire IDC, it is just harder to find. As though I needed that.)

However, that connector variety still requires expensive crimpers. Though they don’t properly crimp so much as push things into the right place. The one we found online was only $80 on ebay but since its retail was $11,000 (boggle!), I wonder. Also, after 30 minutes of us both digging into the specs of the tool and the specs of the connectors he’d identified and assorted random standards, we determined it wouldn’t work for the connectors he’d chosen. Or any in the right size range.

The goal now is to haunt ebay and craigslist to find a second-hand crimper of the right size and then select connectors that work with that crimper. If anybody has a matrix of which crimpers work with which connectors, do let me know?  Until then, I’ll be going cross-eyed trying to figure it out.

 

h1

Embedded systems conference call for abstracts

October 13, 2012

About a year ago, I was getting ready to push the giant, red button that said GO for my Making Embedded Systems book. I thought that once I was done writing, it would be finished. Then I thought once the figures and tech reviews were done, the book would be ready to go.  Surely once we fixed all of my misplaced commas, it was done, right?

Not really. Then I started doing promotion. I did two webinars for O’Reilly. Those are a lot of work. I also looked around for other promotion to do: speaking at schools, talking to magazines about reviewing my book, being in the scary “out there” to meet people and market my book.

I also wanted to present at the embedded systems conference in the spring, I’d attended for many years but here was my opportunity to speak! By the time the GO button was pressed and I came up for air, I’d missed the conference deadlines. There was a slot for someone to talk about LEDs but what do I know about LEDs?

Turns out, enough to fake it. With the wonderful help from EE Rob Mitchell, I did a live demo on how to take some Christmas lights and make them run from an Arduino (similar to Deep Darc’s blog post). I showed how I could make lights to leave up all year as they changed colors based on day of the year. We went from boxed lights and uninstalled software to working things, showing the process of cutting wires and loading software. We even talked about productization paths, methods for getting from idea to market and how to look at costs.

We had more show than information but it was fun. And live demos are tricky things; the audience is there to see you succeed. But if you crash, burn, and light a fire on stage, well, that’s ok too.

Even though we were in the LED section of the conference, we got all-access badges which let us go to any session we wanted. And we got access to the break room. It doesn’t sound like much, but it was where all the other speakers hung out. And there was lunch, coffee, assorted snacks, tables, and chairs. At times, it felt like heaven.

One thing there wasn’t, though, was women. I think I saw two other women the whole time I hung out there. I was kind of disappointed not to meet any other embedded systems people who share my gender, if only because they’d be the only ones who’d really appreciate my light-up shoes project.

So, this year, I looked in early October for the call for abstracts. It appeared, they were all set. Eeek! How could I have missed it again?!? Ahh, no, it just hadn’t opened yet. I emailed the track chair for my LED session (feeling guilty as I never wrote her that article I’d promised). That led to me talking to one of the organizers, actually getting to pitch a few ideas that aren’t open yet, maybe getting to co-chair a track. Whee!

The call for abstracts is open now. Go on, submit an idea or two. I’m most excited about the case studies for debug and test and the one about getting to “Hello World” in under five minutes. (Hey! That is what I did last year!)

And if anyone wants to join a panel, loosely on sensors, well, drop me a line. I’m percolating on my own ideas but happy to listen if someone wants to chat about theirs.

Here is a prototype for a light-up animal.  Naw, this is a jelly fish from the Monterey Bay Aquarium. But if your idea for a talk is a quarter as cool as this jelly is, please submit it.

 

h1

Before it is too late, I should…

September 27, 2012

The electrical engineer thinks I need to design sensor boards so I can build up a dozen prototypes: part selection, schematic, layout, PCB fabrication and assembly.  I should do it soon so I have prototypes to try out and demonstrate to potential customers.

The software engineer thinks I should keep repairing my initial prototype so I can debug the heuristics. I should verify the efficacy of the product before sinking too much time into the idea.

The patent agent wants to know why I haven’t finished the disclosure form, let alone the patent application. I need to do that before I share the idea with potential customers/partners.

The business person thinks I need to refine the idea with a clinical-style study, using powerpoint decks to talk to potential users,  see if the idea needs modification before continuing development (and seeing if they’ll sign up to purchase). If I can’t demonstrate a real market, it isn’t worth doing the rest.

The marketing person thinks I should make a looks-like model (doesn’t matter if it works) and that it should be beautiful, no rough edges, incredibly well-designed. My hot glue and electrical tape prototype is no good; if I can’t make it alluring, no one will consider buying it and any potential market will evaporate.

The subject matter expert is moving to North Carolina and doesn’t have time to have lunch or discuss the idea. I suppose I’m glad that she doesn’t have another thing for me to do. And yet all the work I’ve done for the last few days is in preparation for when I do see her.

 

h1

Next you take 100k children

September 25, 2012

I’m working on a project that uses I2C sensors and there is an addressing problem with them that is kind of complicated. I sent out a whole-team status report and glossed over the problem figuring the engineers knew what I was talking about and the non-engineers wouldn’t care.

One of the team caught me later and, somewhat abashedly, clearly feeling feeble, asked for clarification.

Oh, no, the problem was entirely in my explanation. So I started explaining how the sensors each had two addresses and since I wanted to use five of the same sensor, I had to get ones with different base addresses, the only way to accomplish that currently is with different vendors though I had some progress this week…

Eyes started glazing over. This was going nowhere fast. But I really want people to ask questions (because I’m not always right) and I want them to understand the answer (or they won’t asked next time). So I switched gears, trying to build on something already known…

Say each sensor is a child. Each child has two hands (as children often do). I need five hands for my project. Therefore, I need three children. Nods, right?

If they all came from the same family, it would be easier, see? I’d know how to communicate with them and it would be the same for each child.

However, every family I know only has one child. Each child behaves slightly differently, speaks a different language at home. It is harder for me know how to keep them all happy. Also, each child is valued differently. It is a pain to deal with, making everything more complicated than it needs to be. It would be better if each child came from the same family and was nearly identical to the others in its family except for, say, hair color.

However, when I contact a family about having a few more children (with different hair), they want me to order in the 100k range. And that is a lot of children.

So… breaking that down… each sensor has two I2C addresses (each child, two addresses). I want to use five sensors, so I need three sensors from different families. The families here are usually vendors (Analog Devices, Freescale, Bosch, STMicroelectronics, etc.). Each one is slightly different than the others in the way they work though they each sense essentially the same thing.

If I talk to a vendor, they are willing to modify their manufacturing process to give me a different base I2C address (different hair color). However, they want me to order a bunch of them (100k of each hair color, err, I2C base address). I’m still building prototypes so that sort of financial commitment is beyond me.