Posts Tagged ‘lists’

h1

Nothing is ever wasted

August 19, 2013

I showed the thinking-of-you proof-of-concept webpage in the last post about this project. While functional, it was the definition of ugly. I want to make something lovely, that captures the charm of the project.

I have my sketch of what I want to do, it isn’t pretty (or legible to someone who isn’t me).

Web sketch

Here are the highlights:

  • I want the one file to be easily email-able.
  • One file to contain the three apparent pages: initial welcome, sending the (hug? wink? cheer?), and settings page to change name (and color).
  • The unused parts of the page shouldn’t be visible, the user should only see the welcome or normal page. The normal page should have a settings area that can be opened but is usually hidden.
  • The CSS and Javascript shouldn’t be in separate files. (One file, email, see first point.)
  • One file means no images. Off the shelf everything. But it should still look nice.
  • Colors are auto-assigned based on names but the user can still choose their color separately. This is a little complicated.
  • Color and name should be saved as a cookie so the user only does selection of these once.
  • Color and name should be changeable but that should be hidden until settings is selected on the normal page.
  • The color selected should be on the page itself: an icon should change color.

There is only one problem with all of that. It is way more web code than I know how to write. I started to solve this by reading Headfirst CSS and HTML. (I like the Headfirst series, they take longer to read but the information sticks a little better. The trade off is worth it, especially as they are amusing so I tend to keep reading.) I finished this book but I still didn’t know all I wanted to do, in particular the hidden parts of the page, the cookie, and showing the user’s color on the page.

Apparently, some of what I need to create is Javascript. I’m a little baffled as to the breakdown; HTML is the content and structure, CSS provides style, and Javascript does actions based on events. However, HTML5 can do actions based on events too. And none of them are particularly specific about how to deal with cookies, though Javascript seems the best for that so far. (Also Java has nothing to do with Javascript, they just named them that way to screw with my head.)

Yes, I program for a living but I don’t do this. And yes, I’ve made plenty of webpages, but they were either pure HTML (pre-2000) or done with a WYSIWYG editor. Plus, this is (secretly) an application masquerading as a webpage. Since all the cool kids are doing it, I thought it would be easy.

HTML5 (and all its friends) are living, changing standards. The books are out of date as soon as they are printed. Though, if you use a neat new feature, some browsers may not support it. (Goggle eyes in frustration of both never being right-according-to-the-spec and never knowing if I’m wrong-for-the-user’s-browser.)

This is strange to me… C99 (the C standard ratified in 1999) has been around long enough for me to know really well. And yet, Microsoft Visual Studio did not support it until last month. It isn’t that embedded systems move glacially slowly, the processors change quickly and new sensors are always coming out. I’m used to knowing and understanding the tricky parts of my language, it is bedrock to me. The shifting sands of web development are not giving me warm fuzzies.

On the other hand, I’m starting to get Agile development better now. This webpage will never be complete. It is getting better but there will always be something else I want to do. (For example, when you press the “Hug” button, it would be nice if the button changed color for about the same length of time that the widget’s LED will be on that color. That lets me have separate buttons for hug and wink since they’d have different times.) Even though the page isn’t perfect, I should put a line in the sand and say “this is pretty good”. That line would be easier to draw if I knew I could re-draw it in a week or two.

Thinking of you webpage v0

Here is the current version, as seen in Firefox. Some things to note:

  • This is the normal page, after the initial welcome page. My cookie is already set.
  • The turquoise heart is what my name colorizes to; other names would get a different color. I fix it so all colors have to be bright enough. (I’ll post the page next time so you can see your name’s assigned color.)

My list of short term improvements:

  • Hide settings area. I already mostly know how to do that (since I’ve already hidden the initial welcome area).
  • Fix cookie so it is not a session cookie but a permanent one. (Argh!)
  • Fix the color selector to look better in browsers that don’t support the color tag. (Chrome and Opera support color selection; Firefox and iPad do not, those will get a drop down list of colors. Right now you can type in a color but you have to guess what the HTML5 standard is thinking. Or write it in hex.)
  • Make hug and wink do separate things (this requires a little work on the Electric Imp widget as well). Or maybe remove one of them for now. Then I could change the name of the action every time you load the page. Hmm… move that to future features.
  • Do another pass of looking at the fonts and basic CSS to make it look more aesthetically pleasing.

My long term improvements are legion (and growing). They will probably change as I learn more about web development.

Wait a minute, why am I learning about web development? I’m a deeply embedded programmer.

I’ve been focused on getting this project done but I’m quite conscious of the fact that this information, this miniature education in web dev, would have been useful to me two years ago as I worked on an internet enabled fishbowl. (Note: it was not really a fishbowl but, to me, it was something that needed the internet as much as a fishbowl does.)

To connect the fishbowl to your home WiFi, you had to connect your computer (or phone) to the fishbowl’s WiFi network. The fishbowl would serve a page that would let you set your WiFi name (SSID) and password. Then the fishbowl would stop serving a webpage and go talk to the internet using the information you gave it. You’d switch your computer (or phone) and be able to talk to the fishbowl via the internet. Fun for all the fish.

But that webpage that the fishbowl would serve up? That came from the fishbowl’s miniature filesystem. And when we needed to make changes to it, the firmware team would go to the web dev team and ask for changes. They were always busy with the web (plus they spoke webese and we spoke embedded). Things took forever to get done. Well, that’s lame. Now, I could make those changes. I don’t think I’d change aesthetics but I’d be fine with 75% of the tweaks that needed doing.

So, if you think I’m learning web development for my thinking-of-you gadget, that is correct. But there is more to it than that. I hate the phrase “Internet of Things”, it oversells the connectivity that is coming. But whatever you call it, there will be more internet enabled fishbowls and now I can do even more for them.

Here fishy, fishy.

 

h1

Things I want to work on

July 16, 2013

I finished up my last contract, other than a few weeks of answering questions. Old clients want new things but I think that’s just a few weeks of work. And then I have a big open space (right after the family vacation).

Those used to make me nervous but I’m getting better at being excited to have time to work on my own ideas, if only to freshen my skills. I’m not as worried that I’ll never find a new client. For a little while (at least), I’ll be choosier with contracts (such a luxury!).

A friend asked what I want to work on. I think he has entrepreneurial motives though I’m not ready for another turn on the startup merry go round. In trying to figure out how to answer him, I’ve sat down and thought about what I really want to work on. Not the technology or location or industry, but concrete things I think must be happening that I particularly want to be a part of.

  • Smart prosthetic limbs (feet):  measure surface something (electrical impulses? micro movement? tension?) on the remaining limb and use it to control things like artificial toes for enhanced balance.
  • $5US clothes washer (the TED talk about how washing machines change everything really got to me). I suspect other things would do: a $5 ereader (put a whole encyclopedias on it) or a $5 something else that can make a huge difference to someone outside the US.
  • Use chemical sensing MEMS to make a pocket mass spectrometer/gas chromatography system (bomb sniffing, tricorder, being able to visualize 1/100 of what my beagle smells).

Thinking about concrete examples is difficult. I want to work on something innovative but my innovative ideas are smaller than I want to work on, smaller than a company could sustain. (Though, my ideas get bigger as time goes on so this may not remain a problem.) There are other things I can identify as great things about my next potential contract:

  • I’ve done a bit of work with devices that attempt to use game-ification as a motivation tool. I’d like to see a focus also on pet-ification. Many people tend to nurture more than compete. I don’t know if I want to apply this more to fitness or to education devices. Either. Both.
  • A genius’ vision of something that make the world a better place. While there are a lot of things I don’t want to work on/with (application, methodologies, and companies), I really didn’t want to make this a negative list. If I were to make this a list of things I don’t want about my next project it would be “I don’t want to work on something designed by committee”. I find those projects increasingly unsatisfying. However, the times I’ve worked with someone who had a plan and could articulate how my help was needed, those have been great projects where I have learned a lot and provided a lot of value. (Hey, Elon Musk, if you read my blog, please consider how my embedded software skills can help you with the LA/SF 30 minute transporter thingy (Hyperloop).)
  • Proof of concept prototype for a skunkworks. This is kind of like my recently complete project. I like shipping things, it is incredibly gratifying. But I also like proving something unlikely is actually possible.

I suspect I’ll find something interesting that pays bills while I ruminate further on my plan to take over a tiny portion of the world. In the meantime, I’m enjoying this thought exercise. And break.

 

h1

Want to be on my podcast?

June 5, 2013

I have a podcast now: you can listen at http://embedded.fm/ or search for Making Embedded Systems on iTunes (or Instacast or Stitcher). The podcast is about embedded systems and, like this blog, it consists of whatever I’m excited about (and who I con into being my co-host/guest).

But what I really wanted to put here was some of the process stuff I’ve learned having done the first four podcasts. Here is the short version.

  1. Find guest, agree upon general topic.
  2. Make outline (ideally Wednesday before show)
  3. Send outline to guest, get mods back by Friday.
  4. On Saturday (or Sunday), do 2 hour recording session.
  5. Producer does producer-y thigngs
  6. Show comes out on following Wednesday.

So, once I hook a victim and choose a topic (i.e. “What an electrical engineer thinks a software engineer should know”), I make an outline.

The outline isn’t exactly a script, though the intro and outtro are written out. The outline is more a list of points and questions so I don’t forget any of my plans. We don’t have to stick to the outline but it means I don’t have the “err, what was it I meant to ask” feeling all the time. It also lets the guest know what things I’m likely to want to ask about so they don’t get caught off guard.

I sent the outline to the guest. Actually, the outline starts with a notes section:

I tend to script the first few minutes as it helps get comfortable. I have no problem going off script, it is just a crutch for the first few awkward minutes.

If you want this (or something else), let me know. We found paper to be noisy so I’d prefer to put your notes on my ipad if you’re ok with that.

Finally, I put in two end points. The goal is 45 minutes but I’d rather be 5 short than 20 long.

Next in the outline is the intro, all scripted out, as promised above.

This is Elecia White, welcome to Making Embedded Systems, the show for people who love gadgets.

This week I’ll be speaking with Phil King one of my favorite electrical engineers. The plan is to hear what a hardware guy thinks software engineers should know.

Hi Phil, welcome to the show.

[Phil says hello]

I know you’ve worked at some neat places, we made children’s toys for Leapfrog and a gunshot location systems at ShotSpotter. What else have you been up to?

[Phil gives 30s bio]

When I was a manager, hiring new embedded software engineers as my minions, Phil was part of the interviewing team. He was excellent at finding people with really good skills, even better, he could articulate what he liked (and didn’t like) about candidates.

So, Phil, what was your secret question?

And now we are out of scripting and into the outline. From here, there are lots of points I might want made (either by my guest or by me, I don’t usually differentiate). Sometimes these are question (“You always really cared, making sure we hired good software engineers. Why is that important to you?”) and sometimes they are just notes for both of us (“software engineers can damage to HW…”). Also in the outline, I might have reminders purely for me (“tell story about capacitors”) so I don’t forget something I think is nifty.

But these are just conversation points, if we skip one, no big deal. If the conversation is flowing, I’d like it to flow naturally.

Finally in the outline, there is the outtro, what I need to record when the show is over.

We’re out of time though I know we’ve got a lot more to talk about, you willing to come back?

[Phil]

Ok, thank you for joining me. Thanks also to our producer Christopher White and to everybody tuning in. Please leave us comments and questions at embedded.fm or show@makingembeddedsystems.com. We love to hear from you.

Next week, we’ll be talking to (? about ?). Have a good one.

I write the outtro so I don’t forget to thank people or say where to send comments.

Once the outline is done and sent, I start taking notes for random things I might want to say… extra things inside the outline bounds. Sometimes I ask for questions or information from twitter for “voices from the audience” sorts of things. I also try to think up some pre-show chat while we are getting the sound levels right (I jokingly asked Phil about his feelings on exclamation points, we got off on a tangent about the interrobang which made it into the show a little). It calms the guest (and me) and makes the show flow better if we are already chatting.

Recording isn’t hard, thanks to my husband-producer-superhero, Christopher White. He’s done wonders to make us sound good. Despite most people not liking their voice (me included!), everyone has been happy with the recordings, so far. In addition to monitoring sound levels, he tags points where we start and stop (hey, I stutter, sometimes I don’t want to share that) and highlights where we mentioned things that should go in the show notes (that RSS feed doesn’t write itself, you know).

Recording takes about 1-2 hours to get enough info for around 45 minutes of show. Later, usually right before he releases it, Chris edits the audio to eliminate the goofs. He makes us sound good (and balanced), does any bleeping, adds music as needed (he wrote the intro!). He attaches it to the RSS feed, presses publish. That makes it go to iTunes and Instacast and Stitcher where people can get it.

If you want to be on the show, please let me know. Most of my guests haven’t done too much prep (I want to talk about what you know, not something you need to learn and prepare for) so the process is about 2.5 hours of your time: gadgets, embedded systems, parts, technology, working on gadgets, maker projects, etc.)

There are some things I still need to figure out. We have a recorder I can carry about (if I’m willing to get crummier audio) so it is possible to do on-site things. But I need to learn to use it better, especially to get voices right for an interview. I have a plan to interview someone in San Francisco in July so I have a deadline. And I know some people do podcasting via Skype audio which would increases my pool of guests; I want to sort that out.

There’s always more to try out and to learn. And I suppose when there isn’t, I’ll do something else.

 

h1

Passionate, articulate designers talking about sensors in health

April 30, 2013

Last Wednesday, I was on a panel at Design West (the embedded systems conference). The panel was about using sensors in health applications. It was called Sensors Saving Lives and it was in the Expo Theater, right on the show floor, so there were lots of people walking by (and a good number sitting down, watching the panel).

We had some technical difficulties with mikes squealing at the very high range of hearing (it is always a bad sign when your audience is holding their ears). But that got fixed. And then things went well.

Our panel consisted of:

  • Christine Brumback, Director of Product Management at Fitbit, talking about their new Flex wrist based step-tracker (it will also track swimming and sleep).
  • Alissa Fitzgerald, CEO of AM Fitzgerald, a company that makes custom MEMS sensors (can you imagine your own sensor, sensing something new?), describing tiny (tiny!) pressure sensors for blood and cranial pressure.
  • Shena Park, Director of Product Development at iRhythm Technologies, discussing the challenges of ECG monitoring device intended for long-term wear.
  • Me! I was talking about a project I worked on about 18 months back: SpotOn, a non-invasive body temperature monitoring system for use in surgery and ICUs that recently made it thought clinical trials.
  • Jen Costillo, founder of RebelBot, was our moderator, making sure we stayed on topic and kept us going. (Jen was also my coconspirator in making this happen.)

Yeah, we had a panel at the embedded systems conference that consisted entirely of women. The attendance (and speakers) at the conference are primarily men so this is pretty odd.

We didn't get any negative comments. None. We did get lots of “neat topic” and “good information” comments.

Let's be really, annoyingly clear: it wasn't a panel about being women in technology. Those have their place (but I'm completely bored of the topic). It was a panel of women in technology talking about their tech and how awesome it is. Our post-panel questions were about health related embedded systems and about our particular areas of expertise. It rocked.

Every once in awhile I think “This! This is what I want to grow up to be!” This panel was one of those magical times.

 

 

h1

A new week, a new resolution

March 24, 2013

I don’t normally do New Year’s resolutions. However, I did this year so here is my quarterly report.

Oh, but I didn’t exactly do a normal resolution. Instead, my plan is to have different resolution each week. Each resolution lasts Wednesday to Wednesday and should take 15-60 minutes of daily activity or thought. The goal overall is to try new things, see which better-for-me habits are easy to incorporate into my life and which ones are too difficult to maintain.

Week 1: Health: 10,000 steps and some time on the exercise. Success. Most days did more than five miles on the bike, only one day did I not want to bike at all.

Week 2: Happiness: more quality snuggling time with my husband. Mixed. It was nice but it require being in sync though it did keep us more in sync for a week or two after.

Week 3: Health: every day have one meal with a whole grain as a main component. Success. The whole grains made me feel a little better in general, more balanced sugar-wise. I found lots of whole grain things that I like, including plain old oatmeal packets, an easy meal I’d forgotten about. This resolution was a really, really good one and even 9 weeks later, most days I have something whole grain because I like how it makes me feel more full.

Week 4: Social: spend at least one hour a day talking to someone who is not my husband. Success but exhausting. Victims: house guest Nate (two days), She’s Geeky various people (three days), Ingo (birthday), and Jen + Alissa (on the embedded systems panel).

Week 5: Health: sixty minutes of at-least-slightly sweaty exercise. It’s funny, I think I usually mange 30-45 minutes of exercise (almost) everyday so I didn’t think this would be a big deal. However, I had one of Those Weeks and just failed at this one. Too much work, too much crankiness, too much “does this activity count?”. I’ll need to have more specificity in the future.

Week 6: Health: a different breakfast every day. My morning meal is exceedingly monotonous: a high protein food bar with low glycemic index and about 190 calories. What other breakfasts can keep me going until 11am without needing a snack? The goal was to keep the calorie intake around 200. This one was more interesting than I expected, changing up my morning patterns as well as my breakfast.

Week 7: Health: 10 miles on the exerbike, no reading fiction books until after getting on bike. I often bike 10 miles but I’d gotten out of the habit and I’d been lazing away hours reading junk. So, getting back in the habit of a late afternoon bike helped both of these issues.

Week 8: Health and Social: dual resolutions: to drink 8oz of water before each meal and to go out after dark each night. Having two resolutions watered it all down so I don’t think I get credit for successfully completing either one. The water one I just forgot about and getting up halfway through a meal to pound a glass of water was silly. As for going out, I just didn’t have things to do each night and didn’t have enough oomph to make stuff up.

Week 9: Health: Count calories. Not trying to reduce calories (though counting them has that effect anyway).

Week 10: Health: Count calories and exercise, making sure the total falls under the (generous) guideline given by the counting program. Still gathering a baseline.

Week 11: Health: Eat a rainbow everyday. After two weeks of counting calories, I wanted to con myself into continuing. I decided to try the school-children challenge of eating a food from each color group each day (red, orange, yellow/white, green, blue/purple). This one I stopped because it was stupid: if I want carrots and snap peas with lunch then fennel with orange wedges for dinner, eating blueberries instead (or in addition to) is dumb. Plus, I don’t really like blueberries and I couldn’t bring myself to count wine as a purple fruit. Plus, plus, I don’t need ways to eat *more* food. So I failed this resolution intentionally.

Week 12: Diet: No bread. After a few Sundays of bread-induced coma due to the amazing, spectacular, phenomenal bread from Manresa’s bread stand at Campbell’s farmer’s market, I realized I have a problem. (Still counting calories.) The resolution was really “no bread as a major component of a meal” which meant I could have a piece of bread but no bread-and-olive-oil meals, no sandwiches, and (horrors) no pizza. However, I’m mid-way through and I suspect “no bread” entirely is fine. I do miss it though.

Other resolutions I might try:

  • Brush teeth after every meal/snack
  • Eat fruit/vegetable 20 minutes before any snacking
  • An hour of house or garden work every day
  • Bike ten miles and take a walk each day
  • No alcohol or no caffeine
  • No tv before 9pm
  • No non-fiction reading
  • Blog post every day
  • Cook main component of one meal each day from a cookbook (C to help choose recipes)
  • Artistic endeavor for an hour a day
  • 30 min/day updating all career related things with current info: linked in update, resume update, google self, speaker’s wikis, etc.
  • Write a program in numPy everyday
  • Get up and shower and dress everyday, as though I have a real job
  • Do something nice for someone
  • Write a novel proposal every day
  • Spend 1 hour/day working on book promotion
  • 10% decrease in calories (using newly calculated baseline from weeks 9-12).

What else? What thing to try might make a big difference in my happiness and health?