Posts Tagged ‘adventures in tech’

h1

I have an idea

August 13, 2012

About a decade ago, I had the idea to create a data logger, it would write data from a serial port to a USB thumb drive. I'd worked on a lot of devices that had serial output for their main interface or for debugging purposes. Normally, to get data, I'd have to hook a computer up to the gadget, hoping that the laptop batteries didn't die, that Windows didn't go to sleep, and that I didn't need to timestamp anything to greater than 4ms granularity (Window limitation). The ability to store days or weeks of data would be fabulous.

I chose the processor because it had the bare minimum I needed and a USB device. I got a wonderful and generous EE to help me choose the other components and make a schematic. I paid for it to get laid out, ordered all the parts, built kits, got boards fabbed, bought cases, worked with a model shop to get the cases cut for the boards. I learned a whole heck of a lot. The boards came in and came up ok but the vendor's USB library worked with only one or two thumb drives. I worked with the vendor to expand their library. Then I got a full time position and the frustrations of dealing with the vendor… well, I just finally got rid of the boards and cases recently (though not the completed one, there on the left of the pic). About two years ago, someone else built a data logger, one that I could just buy and it would do what I wanted.

About six years ago, I saw a product design contest and entered it with a neat new idea. I wanted microcontrolled Christmas lights, ones that I could put up and never take down because they'd change color to match the upcoming holiday. With a marketing VP friend, I wrote a complete business plan (summary: holiday decoration is a huge market). The software was easy to explain and the market was there but the hardware was difficult. The way the lights were to be controlled led them to have an unwieldy cable, making them expensive and essentially unmarketable.

Two years ago, GE came out with individually addressable LED strands (on the right in the pic). A hacker worked out the control protocol shortly thereafter. Anyone who wants to make my holiday lighting needs the $50-80 light strand, a $30 Arduino controller, and freely available program. Ok, so it is still expensive but it isn't impossible anymore. After I (and another wonderful EE) presented how to put this together at this spring's Embedded Systems Conference, I was accosted by an engineer for a lighting company asking if I had patented the idea (no, I just wanted someone to build it for me, I didn't want to block development). After a bit of searching, a generous patent agent friend found that Philips had patented “LED as applied to…” well, anything… including the “tidy bowl” application.

About three, maybe four, years ago, I got an idea for a video game called Shoe Shopping Adventure. The player would make life choices (i.e. career, friends vs. work) and that would translate into their need for different varieties of shoes, their available funds, and their time allotted for shopping. I learned a bit about iPhone programming, drawing shoes, and designing games. I tried to get Zappos involved because I was thinking that one way to avoid doing a lot of UI design is to use actual pictures of actual shoes. And as a revenue source, people who bought shoes in the game might want to see those same shoes for themselves later. Anyway, I only bugged one software friend and she mostly just had to listen to me babble one afternoon. Well, and my husband who has been supportive through all of these. So far, no one has made this game for me (yet) but I stopped development because it is a heck of a lot of work (and because I started writing Making Embedded Systems).

It isn't that I don't finish things. I do. I mean, I wrote a book (two, actually!). And I've shipped tens of products. But those have been for other people, for the companies that I've been employed by. The book was for myself but I had some external impetus there.

So it is with some trepidation that I say, once again, I have an idea. I wonder if I'm ready. And what I'll learn.

 

h1

Do I really have to wear pants?

July 2, 2012

I haven’t worn pants since mid-May. I work from home so most days I’m in in a skirt and sweater or shorts and a t-shirt.

What? You thought I was going to admit to telecons in my jammies (or less)? Umm… no… This isn’t that sort of blog. Actually, I’m not sure the rest of this post is going to fit in with this sort of blog. But I’m not sure, so let’s try it out.

Anyway, I haven’t worn pants in awhile. But tomorrow I have to go to a client’s office. While at least two of the skirts I wear regularly are reasonably appropriate for corporate life, I won’t be wearing either of them. I never wear a skirt to work.

I don’t like to remind my coworkers that I am female. I mean, I can’t hide it. I sometimes read in books about young women dressing as boys to go on adventures. That wouldn’t have worked for me any time after I turned twelve, it won’t work for me now.

There is being an engineer who is also incidentally woman and then there is being a feminine engineer. The latter will get me a lot more hassling. I’m not willing to deal with it.

Maybe I’m not being fair to the client… They are a San Francisco based, somewhat trendy software firm (OMG, open floor plans, who can live like that?). The engineers will be in jeans, the managers in khakis, the VP in slacks, and the interns will wear shorts (unless it is too cold). If I go in with a knee length linen skirt with lace on hem and a presentable shirt, well, if they are like anyone else, people will open doors for me and smile at me more. But if I wear slacks and the same presentable shirt, they will listen to what I say even if they opt not to take my advice. Guess which is find more gratifying?

So tomorrow, I’ll dig out pants and put them on, one leg at a time, only slightly bemoaning my failed pantless streak.

In the meantime, here, have a picture from this weekend, taken at Fitzgerald Marine Reserve just north of Half Moon Bay. It has tide pools, baby seals, and a natural cathedral of Cypress, all purely amazing. This picture kind of represents what I’m trying to convey. I want to show this whole picture but the work part of me is a trees only image, no flowers allowed.

 

h1

Words are power

May 31, 2012

In school, I studied systems engineering. I went to an odd college where we learned how to put a system together mathematically, modeling just about everything as a resistor-inductor-capacitor circuit or a spring-mass-dashpot. Because it all boiled down to math that looked the same. This holistic view gave me fresh eyes and I love the hammer-like feel to it.

So when I got out of college, I started to look for nails. Oddly, I actual found some. That led to embedded systems where that same math becomes surprisingly important. I was really good at this! My niche education was going to be useful!

I was still a fairly junior engineer so I explained my plan and process for solution to a senior engineer. i described the math parts, showing a little of my work but glossing over areas that needed to be done. At the end of my show and tell, the senior engineer took all the fun parts away from me and told my manager I didn’t know what I was doing.

See, he called a part of the system the “plant” and I never used those words. And when he used them, I didn’t recognize what he meant. I was a couple years away from my systems courses so part of the problem was my forgetfulness but, at my school, the professors I had called that part the “transfer function”, “system”, or the “process”. The literature tends to use these somewhat interchangeably (not precisely interchangeable, a book usually chooses a term and sticks with it).

It took a long time and a lot of math (and working code) to show I did know what I was doing. Even after that, I didn’t like this senior engineer, he felt so petty. Now I kind of understand what happened- I waved my hands and he probably though the project was too large and important to leave in such untried hands.

This is why I get stressed out when people are nervous about not knowing words. I mean, there is jargon and certainly that plays a role in making people feel like outsiders (and idiots). But sometimes, the words don’t seem like jargon, they are just words and everyone else knows what they mean, I’m just too dumb to understand.

Ahem. No. Words have meaning. Learn the words; understand the meaning. Then you have their power.

Words have incredible power but the most amazing thing about the world today is how easy it is to learn what the words mean. So let’s look at the word algorithm. I’m not going to look it up on Wikipedia for you, feel free. I’m not even going to Google it so I could be wrong in some tiny piece of semantics that are to follow. Watch me not care, I understand the meaning of this word: an algorithm is the word a man uses to mean a recipe.

Oh, I should not read the feminist blogs before writing my own, especially since the connotation is not true. On the other hand, an algorithm tends to be technical, usually related to computers or math based things; a recipe is something one follows when cooking dinner But at the heart, they share a lot: a list of requirements, a list of steps in phrased for the skilled reader, an ideal outcome.

Say I wanted to make cookies. My lackadaisical cookie making method requires a ratio of somewhere between 1:2:3 (butter: sugar: flour) and 2:3:4. Add other things like eggs, salt, baking soda or powder (depending mostly on type of sugar but also other flavoring agents), flavoring agents (vanilla, chocolate chips, peanut butter, orange rind, etc.) to taste. Mix then bake for 5-15 minutes depending on cookie size at 300 to 365F (convection) depending on cookie size and desired texture.

That is neither a good algorithm nor a good recipe. It is a useful direction but not at all a destination. (If you ever want a cookie recipe from me, get it as soon as you can because I won’t remember a recipe the next day.) I’d call that description of how to make cookies a pattern. It is a very loose way to go about it, leading to generally good results. As design pattern: cookie it works pretty darn well (for me).

Of course, if you have no idea what you are doing, it will be a disaster, it assumes a lot of knowledge from the user, knowledge that usually comes from experience. (Ahem, even that mix step hides a ton of potential information though if you take it on the surface, just mixing the dough however you feel so moved, the results won’t be bad).

So as a recipe, a cookie recipe might be:

Simple vanilla cookies recipe

1/4c butter (softened)
1/4c white sugar
1/4c brown sugar
1 egg
3 tsp vanilla
3/4c flour
1/2 tsp salt
2 tsp baking powder

Cream butter and sugar. Beat in egg. Add vanilla. Add flour, baking powder and salt. Put on cookie sheet with silpat (or greased cookie sheet), each cookie should be about 1 tablespoon worth of dough, rolled and then flattened. Bake at 325F for 8-10 minutes.

Makes approximately 2 dozen. Suggest serving with small bowl of chocolate buttercream frosting for DIY inverse oreos.

I think there is a enough details there that just about anyone can follow that. I suppose I used the standard “cream butter and sugar” jargon and that might be meaningless to some. And I didn’t say to preheat the oven. I kind figured you’d know how to do that. That you maybe had made cookies at some point in your life. What an odd assumption on my part.

I could create an algorithm to create simple vanilla cookies. Let’s see. Since I write software, this is a lot like writing a program to tell a robot how to make cookies.

Simple vanilla cookies algorithm

 

1. Measure 1/4c butter, heat to soften.
2. Mix in 1/4c brown sugar and 1/4c white sugar until mixture is creamy and has no granular pieces of sugar of remaining.
3. Beat in one egg until fully mixed.
4. Add 3 tsp vanilla, beat until fully mixed.
5. Add 3/4c flour to top of bowl (do not mix in).
6. Add 1/2tsp salt and 2 tsp baking powder to flour.
7. Gently stir dry ingredients together then mix with wet ingredients.
8. Scoop a cookie, about 1 tablespoon at a time.
9. Roll dough into a ball, place on greased cookie sheet leaving about >1 dough ball worth of distance on all sides.
10. Flatten dough ball into a disk about 1/4in high.
11. Repeat 8-10 until all dough is used.
12. Place cookie sheet in preheated convection oven at 235F.
13. Wait 9 minutes, remove.
14. Serve with chocolate buttercream.

Ok, that is a little detailed in spots but you can see how it contains all the same information as in the recipe but in a different format. It isn’t a better format or a worse one, just different. I could have shown it as a flowchart and it would still have been an algorithm. In fact, anything you can represent as a flowchart is probably an algorithm.

Usually, though, algorithms lead to things other than cookies. In pure math, an algorithm might lead to an single answer. Say you want to give someone change… they buy 10 cents of lemonade and hand you a $5 bill. For one algorithm, you (or the cash register) calculates the difference between their purchase and then you given them the difference. It seems so simple, of course that is how anyone would do it. Well, no, the other school of thought for creating change (another algorithm that can be used) is to count up from their 10 cents, handing them pennies until they get to a number divisible by 5 (none), nickels until they to a number divisible by 10 or 25 (none), dimes until they get to a number divisible by 25 (four), quarters until they get to dollars (two), then the number of dollars (four). The whole time counting it out: lemonade was ten cents, twenty, thirty, forty, fifty, seventy five cents, one dollar, two, three, four, five.

Both of these change-creating algorithms are valid. They can both be proven to work. Ok, that is one area where algorithms are different from recipes: proofs. I mean, I can experimentally determine that my cookie algorithm works but doing it. But can I prove it will always make cookies? I don’t know how to start to show that given the conditions described, it will always work.

But in the math and computer world, an algorithm is usually developed so that it works under certain  conditions and can be considered optimal in some way. How it is optimal, that is an interesting question (fastest? least possibility for error? least memory used?). When people say they study algorithms, they not only learn all the different ways to sort through a list of data, they also learn how to determine how one way is better than another and under which circumstances.

Well, as usual, I’ve totally forgotten the point of this post. And I find myself strangely hungry for cookies. I hope there was a point. If not, well, I hope you have cookies too.

 

h1

Why computers?

May 27, 2012

A new book has come out describing why some women do get into computers and how information is useful to getting more women in the field. That made me think about how I got here.

Two factors started me on the path to a career in computing: education and opportunity.

Given an affinity for math and science, I went to a small college with the plan to get an general engineering degree and then build underwater cities. I’d taken calculus in high school (a giant school where very few graduates went to college). In my freshman year in college, I was taking the college level calculus and acing derivatives. But then we got to this flattened S symbol that I had never seen.

Physics, chemistry, even biology and psychology, were all much harder until I learned integration (and I never gained the same level of confidence). But intro to computer science? That was blissfully easy compared every other class I was taking: I could understand it just by thinking like an idiot (and I felt like an idiot a lot given the math situation).

I know computers aren’t easy for everyone. I don’t know if they would have been easy for me if I hadn’t been doing so poorly in everything else. But I was so computers were comparatively simple and a welcome refuge.

Anyway, around the end of the semester, since I’d done well in intro CS, I was able to take a work study job as a student consultant to the CS department, helping the system admins by answering common questions and leaving the serious problems to the CS staff members (juniors and seniors doing work study). I stayed with it, eventually becoming part of the admin staff and learning to take care of a variety of unix systems (and manage the front-line question-answering consultants).

I kept going back to systems engineering (how can I hate integration but love Fourier?). However, CS jobs were more prevalent, particularly given my shiny new resume with experience of sys admin and some odd programming jobs for math and chem professors. The systems engineering math has been awesome for embedded software (motor control and signal processing!) so I got what I needed, more than I expected, much more than I knew to ask for.

I’d still love to work on underwater cities. But I bet they’d have microprocessors so I’m good.

 

h1

Missed work

May 17, 2012

When my husband occasionally declares it is going to be an Internet-free weekend, I know this means he’ll be asking me for all the news and weather and general ‘net hijinks. I don’t participate in the disconnecting. I like to believe it is because I’m not as addicted to the web.

When we go on vacation, I usually monitor email from my phone. Working for myself, it is fairly important that I don’t piss off clients. Even if they know I’m out of the office, their problems are (of course) super high priority. (My eyes rolled just typing that.) But I will admit that I like to feel needed.

I remember in 1999, when I worked at HP, having it be almost noon and I hadn’t gotten any email. It was surprising. I’d gotten a lot of work done but at some point started to wonder if something was broken. I checked my Ethernet cable (remember those? someday no one will believe us that they even existed), I surfed the web to make sure it was still there. But everything worked. I wailed in my cubicle that no one loved me. After lunch, there were several messages waiting and I felt much better.

This is an enduring and ingrained feeling. Getting a ton of email while I’m out of the office indicates a lack of preparedness on my part. But getting one or two? Well, that’s just love.

On my recent extended vacation, I monitored my email, ignoring lists and focusing on the few things addressed to me. It boiled down to two job inquiries, a dozen emails from friends trying to set up lunches or checking on my progress, and about a half dozen work things almost all starting with “if you have a minute, could you tell me how to…”.

I didn’t miss email while I was gone. And if I had, the hundreds of emails that I didn’t read would have cured that (lists mostly but they usually have a kernel of something I need or I’d unsubscribe).

However, while I didn’t fully realized it until I got going again, I missed working. I missed fixing things. I missed typing a line in and seeing if it made things better. I missed the puzzle of figuring out which steps are important and which are voodoo. I missed finding ways of explaining complex ideas in a simple matter so the team could discuss them more easily. I missed getting things done.

This is what I’m good at. I’m glad to be back.