The first Internet of Things Bay Area Meetup and the Air Quality Egg…

March 29, 2012 | Arduino, Internet of Things, Microcontrollers | By: Mark VandeWettering

Last night, I met with Nanode creator Ken Boak and Chris Jefferies from tinajalabs.com at Cafe Actual in Berkeley for the inaugural IoTBayArea meetup. IoT groups are already going strong in many cities like London, Amsterdam, and NYC, but now that Ken is operating here in the SF Bay Area, he wanted to get a group going here.

The current big project being developed by these groups is the Air Quality Egg: a crowd sourced air quality sensor network based upon open source technology. It’s a new Kickstarter based project too (which I have decided to back)!

Air Quality Egg



Beyond the fact that it uses some cool technology, I like this project mostly because the data it gathers will enable people to understand something about the world that they live in day to day. In the Bay Area, we have the Bay Area Air Quality Management District, a government group established in 1955 by the California legislature to monitor air quality in the nine SF Bay counties. This is the government agency that is responsible for (among other things) the Spare the Air day program, which warns citizens of days with particularly unhealthy air pollution, and urges them to take personal action to reduce the problem. It’s a great program, and they produce some interesting real time data on air quality in different areas, as well as forecasts. The air quality index (AQI) that they report measures ground-level ozone, airborne particles, carbon monoxide, sulfur dioxide and nitrogen dioxide.

So, if the government is doing such a good job, why do we need a citizen network to monitor the same things?

First of all, this data may not be accurate for your neighborhood. If your home or business is located near sources of pollution (such as busy streets or some industrial polluters) in spite of the fact that the overall air pollution in your city is reasonable, you might be experiencing high levels of these pollutants. Or it could simply be a matter of geography: I live in a fairly smallish valley, which might be more isolated from the offshore winds that might blow pollutants away. It would be interesting to understand how the pollution in my relatively suburban environment compared with other locations.

Secondly, an open source archive of raw sensor data opens up opportunities for research. Instead of just getting a single AQI number, we’ll end up with a bunch of spatially distributed raw readings for individual pollutants. Perhaps ozone is the dominant pollutant in your area. Or perhaps burning of yard waste causes particulates to spike in certain areas at certain times of the year. Perhaps we can see the daily variation in carbon monoxide as traffic peaks and ebbs in certain locations.

Third, it encourages citizen participation in thinking about air pollution. Just as “Spare the Air” days challenge us to consider ways to change our behavior to improve air quality, participation in an air quality monitoring network turns something that is easy to take for granted into something that we can understand and improve.

Oh, and it involves cool software and hardware too. 🙂

If any of this interests you, you might try following Ken (@monsonite) on Twitter. The IoTBayArea is just beginning, but I suspect we’ll see some rapid growth. We are shooting for regular meetings, with the next one tentatively set for the last weekend in April (but subject to change, stay tuned). Even if the Air Quality Egg project doesn’t thrill you, if you are still interested in the world of Internet connected devices, I urge you to try to come to the next one, you’ll find like minded people and good conversation.

Thanks to Ken and Chris.

The Little Engine that Could…

March 23, 2012 | Hardware | By: Mark VandeWettering

In my home office, I have a machine called “fishtank”. I realized that I first bought it back in 2002, and since then it has been running various flavors of FreeBSD (probably beginning around 4.6 or so, currently running 7.2). At various times I’ve added or upgraded disk drives to it. While a power failure just two weeks ago reset it’s uptime, it’s had uptimes in excess of six hundred days on at least two occasions. I use it as an ssh server, file repository, and generally just a net accessible resource for generic computing tasks.

But the other day, I wanted to generate some new maps for my website using some code that I had never tried before, the Matplotlib Basemap Toolkit. There were already port files in FreeBSD, so I thought I’d try it out. So, I set it running with portmaster, and walked away.

The build failed.

Digging in, I found that it failed while building gcc (why it needed to build a new version of gcc I’m not sure, but it thinks it did). And it turns out it just flat ran out of memory.

I asked the quite natural question, “how much memory does this thing have?”

The answer: 256 megabytes. With less than 500 megabytes of swap.

I think it’s time to consider an upgrade. I could put 1G of memory in it, but that seems pretty lame. I think I’ll replace it with a small mini-desktop. I’m looking for an inexpensive, relatively low power and most importantly quiet server box. Anyone have any recommendations?

On bread…

March 21, 2012 | Cooking and Recipes, Dieting | By: Mark VandeWettering

This morning I was in a rush to get out of the house, and didn’t have time to make a big breakfast, so while I was gathering my stuff, I cut a fairly thick slice of bread off the loaf I made last night and jammed it in the toaster. As I was about to leave, the toaster popped, I quickly smeared on a tablespoon of peanut butter, and headed out.

It was really quite delicious.

Other than some Jewish ryebread that we got the other day, I haven’t bought a loaf of bread since last year. Instead, I make it, using what I consider one of the greatest food hacks of recent memory: Jim Lahey’s no-knead bread. Making bread this way is straightforward and ultimately rewarding: to have a tasty hot loaf come out of the oven, after filling your kitchen with that bready, yeasty smell feels like you are really cooking, that you really understand food.

Yes, yes. Some of you are of the anti-carb religion. I know, carbs do terrible things to your blood sugar and insulin levels, which mucks with all sorts of things having to do with metabolism and weight management. I even agree with it, at least to a point. But “bad foods” have gone through cycles. When I was a kid, it was sugar. Then it was fats. Then carbohydrates. We want to do the right thing, but we get fed conflicting information. We were told that there were links between consumption of fats and coronary disease, but more recent studies seem to refute this basic idea. Recent studies question the idea that omega-3 fatty acids improve cardiac health, or that dietary fiber protects against colon cancer. What’s a guy to do?

I’m trying to develop a philosophy of food, cooking and eating that will feed and nourish my body, and still provide me with the rich, emotional experience that I enjoy from food. I like Michael Pollan’s simple philosophy:

Eat Food. Not too much. Mostly plants.

I’m been mostly thinking about the first one over the last month, that I should be eating food. I began to realize that my weight (and the associated health issues related to it) weren’t really being caused by the occasional trips to the fancy restaurants that my wife and I enjoy a few times a year, nor by the meals that I prepared for myself, but were caused by all the “food-like” substances that I ate without thinking. So-called fast food. Processed food. Food that came in boxes, with nutritional labels. I began to view even the “Smart Ones” frozen foods that my wife and I consumed almost daily in our previous bought of Weight Watchers were part of a basic problem: a prioritization of convenience over actually taking the time and energy to think about, prepare, and consume actual food.

So, back to bread. The no-knead bread takes about 3 cups of flour to make. Along with infinitesimal amounts of salt, yeast, and a water, all it takes is heat to convert this into a large crusty loaf such as the one I pictured above. I made that loaf with unbleached bread flour (King Arthur’s). Should I be eating this? Should I be making this?

I’m going to say “yes”, with certain reservations.

First of all, while it is made from a fairly processed raw material (bread flour), it contains none of the “non-food” items that you frequently see on bread labels. It has no high fructose corn syrup (in fact, no added sugar). It has no preservatives. It’s just flour, salt, yeast and water. It’s pretty much the same recipe that humans have been making for thousands of years. It would be hard to classify bread made this way as a non-food: bread is practically the definition of food. We could deconstruct all the components: a cup of bread flour has about 361 calories, 2g of fat, 73 grams of carbohydrates, 12.7 grams of protein, and 1 gram of sugar. That is a lot of carbohydrates. There isn’t a lot of vitamin content in the bread either. But even if you ate 1/3 of my loaf in a day, it would account for less than 20% of the calories of a typical 2000 calorie diet. Reasonable (not even small) portions of this bread can be a part of your daily meal, and of course, I don’t even eat it daily. When I do, I try to make sure other aspects of my diet are richer in proteins and vegetables.

Secondly, I’m making it myself. I’m under no delusion that the bread is more nutritious as a result, but I’m trying to modify some of my destructive food behaviors. One of the ways to do that is to stop shooting for convenience. Convenience foods are there when you don’t want to be bothered to think about what you are eating, but you should be thinking about what you are eating. While this bread is simple to make, it does take 24 hours to make. You have to think ahead of time, and that means that you tend not to eat it without thinking about it. I firmly believe that so-called ‘food scientists’ are working mostly to make products which are addictive and convenient, rather than satisfying and nutritious. I can do better.

Third, and perhaps most importantly: it’s better in almost everyway than the convenient food it replaces. Check out that loaf again. It looks better. It smells better. It tastes better. When I make it, I feel like I’m cutting out the bad stuff, and concentrating on the good stuff. I think about building meals around a few slices of bread. I think about butternut squash soup. Or maybe just some braised greens and some crusty slices of toast. This morning’s peanut butter and toast was brilliant. The toast had a crispiness that I don’t think you get in prepackaged, pre-sliced bread. I modified the cooking times and preps a bit from my previous loaf, and the bread came out higher, and with a more delicate crust. I’m already imagining the next loaf I’ll make (probably next week).

I’m going to enjoy bread and pasta, but I’m going to think carefully about it. I’m going to maximize my enjoyment of it, while moderating my consumption.

Addendum: One of the most interesting books I’ve read lately is Tamar Adler’s incredible Everlasting Meal. She makes a claim in her book which struck home with me, that it’s impossible to solve dietary problems without cooking (I’ll have to look up the exact quote). Her book is a brilliant celebration of the art, craft and philosophy of cooking and food. Well worth reading.

24 hours, 73 unique stations on WSPR

March 21, 2012 | Amateur Radio, WSPR | By: Mark VandeWettering

For the last couple of days, I’ve let my FT-817 and the WSPR software monitor 40m, 30m, and 20m (shifted as time permits, and as propagation shifts). Last night I managed to set a new distance record by hearing ZS6BIM in South Africa, at a distance of 16,941km. I also picked up a couple of other entities that I haven’t seen before: Austria, Guatemala, Vietnam and Thailand. Very cool.

73 spots:

Timestamp Call MHz SNR Drift Grid Pwr Reporter RGrid km az
 2012-03-21 16:24   ZS6BIM   10.140114   -24   0   KG44df   1   K6HX   CM87ux   16941   303 
 2012-03-21 14:00   HS0ZBS   10.140216   -27   0   OK03ss   5   K6HX   CM87ux   12669   37 
 2012-03-20 17:28   VK2UX   14.097091   -17   0   QF56hf   5   K6HX   CM87ux   12007   56 
 2012-03-21 05:54   ZL3XX   7.040101   -25   -1   RE78kr   5   K6HX   CM87ux   10873   45 
 2012-03-21 16:34   ZL2FT   10.140146   -26   0   RF70mb   5   K6HX   CM87ux   10758   45 
 2012-03-21 06:12   OE3WGW   10.140174   -24   -2   JN88cj   5   K6HX   CM87ux   9573   328 
 2012-03-21 05:26   EA1URO   7.040090   -26   0   IN62bh   5   K6HX   CM87ux   8898   313 
 2012-03-21 16:34   JA2GRC   10.140211   -27   0   PM74uu   5   K6HX   CM87ux   8613   52 
 2012-03-21 16:34   JQ2WDO   10.140190   -18   0   PM95gi   5   K6HX   CM87ux   8374   54 
 2012-03-20 19:04   WA2YUN   14.097123   -9   0   RK39hh   5   K6HX   CM87ux   7072   56 
 2012-03-21 06:08   W1BW   10.140231   -25   0   FN42hl   0.1   K6HX   CM87ux   4286   281 
 2012-03-20 20:50   W2RON   14.097098   -10   0   FN34kp   5   K6HX   CM87ux   4109   277 
 2012-03-20 18:56   WA3DNM   14.097119   -16   0   FM29fw   5   K6HX   CM87ux   4002   282 
 2012-03-21 02:38   TG8AMX   7.040087   -14   0   EK44fu   5   K6HX   CM87ux   3965   316 
 2012-03-20 20:52   W4AC   14.097113   -24   0   EL86ux   5   K6HX   CM87ux   3913   298 
 2012-03-20 21:30   W3GXT   14.097099   -21   0   FM19ol   5   K6HX   CM87ux   3908   282 
 2012-03-21 12:08   KB3VR   10.140176   -25   -1   FM19la   1   K6HX   CM87ux   3898   283 
 2012-03-20 18:40   W3CSW   14.097161   -29   0   FM19kd   2   K6HX   CM87ux   3888   283 
 2012-03-20 19:04   K3GEN   14.097026   -25   0   FM19ke   1   K6HX   CM87ux   3887   283 
 2012-03-20 20:08   W2LNX   14.097094   -16   0   FM19jb   50   K6HX   CM87ux   3883   283 
 2012-03-20 18:54   NH7SR   14.097110   -8   0   BL11ch   5   K6HX   CM87ux   3866   53 
 2012-03-21 01:26   AI4WV   14.097047   -9   1   FM05pv   2   K6HX   CM87ux   3845   287 
 2012-03-20 18:42   NA4U   14.097120   -20   0   FM03ac   5   K6HX   CM87ux   3835   290 
 2012-03-21 06:30   WA8KNE   10.140177   -16   0   EM90gg   5   K6HX   CM87ux   3823   294 
 2012-03-21 07:30   W3HH   10.140141   -17   0   EL89vb   1   K6HX   CM87ux   3814   296 
 2012-03-21 04:02   W2XC   7.040118   -11   -1   FN02qw   5   K6HX   CM87ux   3693   277 
 2012-03-20 21:30   KC2UK   14.097091   -11   0   FN03mb   5   K6HX   CM87ux   3665   276 
 2012-03-21 02:10   VA3SK   7.040028   -18   0   FN06   5   K6HX   CM87ux   3635   271 
 2012-03-21 02:20   VA3MW   7.040146   -12   0   FN03hu   5   K6HX   CM87ux   3623   275 
 2012-03-20 19:10   W4DJW   14.097024   -18   0   EM84ux   5   K6HX   CM87ux   3564   287 
 2012-03-21 12:30   WT4C   10.140156   -18   1   EM84ps   5   K6HX   CM87ux   3535   288 
 2012-03-20 20:30   VE3KYK   14.097015   -10   0   EN96ol   5   K6HX   CM87ux   3501   270 
 2012-03-20 17:30   VE3ELX   14.097091   -18   -2   EN92gv   5   K6HX   CM87ux   3464   275 
 2012-03-20 20:40   K4COD   14.097151   -6   0   EM73sc   5   K6HX   CM87ux   3442   290 
 2012-03-21 00:14   AK4T   14.097137   -26   0   EM74vb   2   K6HX   CM87ux   3429   288 
 2012-03-21 05:36   KE3PL   7.040065   -12   0   EM74xx   5   K6HX   CM87ux   3412   287 
 2012-03-20 17:20   W8SJV   14.097172   -22   0   EN80mg   1   K6HX   CM87ux   3375   279 
 2012-03-20 17:26   KC8WJD   14.097011   -27   0   EN72dx   5   K6HX   CM87ux   3118   272 
 2012-03-21 02:08   K8CYV   7.040112   -4   0   EN63ve   5   K6HX   CM87ux   3077   272 
 2012-03-21 09:36   KC9NBV   10.140196   -13   0   EM69oe   1   K6HX   CM87ux   3069   279 
 2012-03-21 00:30   K9AN   14.097161   -11   0   EN50wc   0.5   K6HX   CM87ux   2942   277 
 2012-03-20 23:24   KC9OJV   14.097064   -27   -1   EN51wu   1   K6HX   CM87ux   2926   273 
 2012-03-20 18:56   KB9AMG   14.097030   -22   0   EN52tx   5   K6HX   CM87ux   2902   271 
 2012-03-20 17:14   K0VM   14.097091   -13   0   EN42db   2   K6HX   CM87ux   2629   270 
 2012-03-20 22:48   K0AZ   14.097027   -14   0   EM37cd   1   K6HX   CM87ux   2504   281 
 2012-03-20 18:40   WA5VRO   14.097061   -12   0   EM10cf   5   K6HX   CM87ux   2406   298 
 2012-03-21 02:42   VE4KE   7.040095   -11   0   EO01te   5   K6HX   CM87ux   2378   241 
 2012-03-20 18:56   K5XL   14.097141   -16   0   EM12kp   1   K6HX   CM87ux   2351   292 
 2012-03-20 19:30   KE7A   14.097132   -10   -1   EM12kx   5   K6HX   CM87ux   2338   291 
 2012-03-20 21:42   K5FRD   14.097011   +10   0   EM12gm   10   K6HX   CM87ux   2327   292 
 2012-03-20 17:46   K7FB   14.097017   -19   0   EM13   1   K6HX   CM87ux   2326   290 
 2012-03-20 21:20   WA5ETV   14.097090   -22   0   EM15jm   5   K6HX   CM87ux   2245   284 
 2012-03-20 20:50   VE6PDQ   14.097117   -17   0   DO34ir   5   K6HX   CM87ux   1983   204 
 2012-03-20 20:40   VE6OG   14.097167   -2   0   DO33fn   5   K6HX   CM87ux   1858   205 
 2012-03-21 02:56   K5USF   7.040053   -9   0   DM62pi   1   K6HX   CM87ux   1546   298 
 2012-03-21 14:12   W5OLF   10.140171   -28   0   DM79   0.01   K6HX   CM87ux   1503   269 
 2012-03-20 20:40   WF7M   14.097088   -13   0   CN87nw   1   K6HX   CM87ux   1108   177 
 2012-03-21 15:40   W8ZU   10.140193   +2   0   DM33   5   K6HX   CM87ux   973   304 
 2012-03-21 02:06   KF7O   7.040101   -7   0   DN06tb   1   K6HX   CM87ux   955   201 
 2012-03-20 18:32   W7QL   14.097096   +10   -1   DN40bo   5   K6HX   CM87ux   942   255 
 2012-03-20 18:52   WA7KGX   14.097118   +2   0   CN85no   5   K6HX   CM87ux   849   177 
 2012-03-21 03:04   W6II   7.040011   -4   0   CN85mn   5   K6HX   CM87ux   845   176 
 2012-03-21 03:44   K7FET   7.040069   -25   0   CN85mm   1   K6HX   CM87ux   840   176 
 2012-03-20 18:40   AC0NM   14.097019   -27   0   DM12jt   1   K6HX   CM87ux   736   323 
 2012-03-21 16:36   N6ETE   10.140147   +2   0   DM12kw   1   K6HX   CM87ux   730   322 
 2012-03-21 02:38   WD6DOD   7.040143   +3   0   DM13ao   5   K6HX   CM87ux   624   322 
 2012-03-21 16:30   K7LG   10.140200   -4   -1   DM04se   1   K6HX   CM87ux   544   322 
 2012-03-21 16:36   KC6KGE   10.140243   -17   0   DM05gd   5   K6HX   CM87ux   404   322 
 2012-03-21 01:50   KP4MD   14.097054   -18   0   CM98iq   5   K6HX   CM87ux   118   228 
 2012-03-20 19:00   N6GN   14.097091   -19   0   CM88ok   5   K6HX   CM87ux   67   139 
 2012-03-20 18:56   K6SRO   14.097188   -16   0   CM88ql   5   K6HX   CM87ux   63   152 
 2012-03-20 18:54   W6/LA4ZCA   14.097047   -16   0   CM87wk   5   K6HX   CM87ux   62   346 
 2012-03-21 04:38   NN6RF   7.040012   -14   0   CM87uw   2   K6HX   CM87ux   5   0 

Listening to WSPR-ing…

March 20, 2012 | Amateur Radio, WSPR | By: Mark VandeWettering

I was interested in the WSPR (Weak Signal Propagation Reporter) system for quite a while, but have not recently been running it from my home QTH. Yesterday, I decided to give it a whirl, and set it up to run on 30m (the classic frequency) to see what I could get. In the past, I’ve logged some interesting places, such as 4Z4TI (Israel), WA2YUM (Wake Island) and DP1POL, operating from Antartica and setting my distance record of nearly 15,000 km. But overnight tonight I added VK4TMH, the kiwi ZL2FT, and a DXCC entitity I hadn’t seen before: XV4Y from Vietnam. Very nice. Today, I’ve shifted up in frequency to 20m, and am currently listening there. So far I’ve caught two Aussies (VK2UX and VK4XDB) as well as HB9EFK from Switzerland. I was hoping for some more European stations, but it appears the window for that has passed already. I’ll leave it running for the next 24, and then maybe shift to a different frequency set.

QRPP backissues available on the Internet…

March 19, 2012 | Amateur Radio | By: Mark VandeWettering

This morning, while listening to the latest SolderSmoke podcast, Bill mentioned that back issues of the Norcal journal “QRPP” were available for free download. Indeed, Chuck Adams has placed them here. I’m currently downloading them for myself, my brief scan indicates all sorts of good information, well worth adding to any archive that you keep. I know I’ll be putting them on my new iPad soon.

Happy π-day!

March 14, 2012 | Math | By: Mark VandeWettering

Today is π-day (3/14) as well as Albert Einstein’s birthday. I was trying to get inspired to produce something pi related, so I scanned my bookshelves for the kind of fun recreational mathematics books that provide the raw grist for my geek mill. I found a copy of Peter Beckmann’s A History of Pi, which I remember cracking open a few times, but which I had not read in a while. I briefly flipped through the pages, looking for something interesting, and on page 113 found something that didn’t seem pi-related, but nevertheless caught my eye:

Even today there are many statements that are “true” by physical standards of experience, but that remain mathematically unproven. Two of the most famous are the Goldbach conjecture and the four color problem. … The other well known problem, the so-called four-color problem, is to prove that no matter how a plane is subdivided into non-overlapping regions, it is always possible to paint the regions with no more than four colors in such a way that no two adjacent regions have the same color. By experience, the trueth of the assertion is known to every printer of maps (common corners, like Colorado and Arizona, do not count as adjacent.) And no matter how one tries to dream up intertwining states on a fictitious map (see figure above), four colors always appear to be enough. But there is no proof.

That set me dashing to the front of the book to find out when it was published. It turns out it was 1971. But I remember reading the announcement of the proof of the four color theorem by Appel and Hacken in the pages of Scientific American as a young teen. In celebration of their achievement, the University of Illinois began using the postmark shown above (replacing their previous famous example declaring that 2^11213-1 is prime). The discovery was significant not just for it’s intrinsic value, but also because it was the first instance where computers assisted in proving a mathematical theorem. Very cool.

Beckman’s book is actually pretty interesting, but kind of fades out at the end when discussing computer attempts at computing pi. The record at that point stood at about 500,000 digits of so, although Beckmann said that “this record will, no doubt, eventually be broken”.

And it has. Not just broken, but obliterated.

Arduino Hole Dimensions Drawing

March 12, 2012 | Arduino | By: Mark VandeWettering

I’ve been kind of busy and distracted lately, so I haven’t had much time to get any embedded microcontrollers. I did dust off an Arduino FIO that I never played with, and charged up a 1000maH LiPo battery to power it. While it was blinking, I dug out my Xbees and started thinking of a project that I put off a while ago (more details later) and realized that while the Arduino FIO is cheap, compact, and includes an Xbee socket, it does have one kind of annoying problem: no mounting holes. While pondering this, I decided to try to dig out the dimensions for the standard hole pattern used on the Arduino. Like many things regarding the Arduino, the answer could be found on the Adafruit weblog:

Arduino Hole Dimensions Drawing from adafruit industries blog.

Breadboarding a Tellymate for the Arduino…

March 6, 2012 | Arduino | By: Mark VandeWettering

The microcontrollers of today are in many ways superior to the simple eight bit computers that I learned to program as a teenager, but one way in which most of them are decidedly inferior is that they have only a very limited number of actual peripherals. After all, even my simplest Atari 400 back in 1980 could be hooked to a television and display text and graphics. But there is something good about these microcontrollers: they are quite a bit faster than these old chips, and they are lots cheaper.

This means that it’s possible to generate video not by the usual method of having dedicated computer hardware, but by “bit-banging” the video signal directly with carefully written code with timing. Many Arduino users have seen the “TV out” library for the Arduino, which does precisely this, if you haven’t check out this old video of mine where I demonstrate it.


But that library has two major problems. It’s very low resolution, and it’s hard to use with libraries that may screw up it’s video timing (such as the library that allows you to read PS/2 keyboards).

But there is another cool idea: use a separate Atmel AVR chip as a dedicated processor to generate video. This is the approach that the Batsocks Tellymate Shield uses. If you want, you can buy a kit from them for an Arduino shield, which would be very convenient. It basically implements a simple serial terminal which implements VT-52 like command codes, which makes it very simple to program. And because it is entirely separate from the main Arduino, it generates stable video without any of the timing problems that using TVout can have. Oh, and because it is very cleverly written, it can do higher resolution video (25 lines of 38 characters).

A very cute gadget. What’s even more awesome is that you can breadboard one of these things very, very simply. I had an old ATmega88 sitting in a drawer. If you don’t need full RS232 voltage levels (like, for instance, driving it from the Arduino serial ports) then the only thing you need are two resistors, two diodes, and a smattering of capacitors. I programmed my Arduino to serve as the ISP, flashed the firmware into the chip (the authors nicely include versions for a wide variety of Arduino chips), reprogrammed the fuses to use the external crystal, and then breadboarded it up. And then, after powering it up, well, nothing. I hauled out my scope. Was serial data going to the board? Yep. Anything like a signal coming out? Nope. Wait, it looks like something varying from 4.5 to 5.5 volts? Ooops. Loose ground wire. Fixed that. Working? Nope. Recheck pins. Doh! Outputs are on pins 15 and 17, not 16 and 18. Fixed that, and….

It works.

If you need a simple video interface for an Arduino project, you can easily build this interface on a breadboard, a chunk of protoboard, or you can get various version with differing capabilities from the creators. But try it out: it’s a cool little gadget.

Earthquake!

March 5, 2012 | My Diary, News | By: Mark VandeWettering

About 5:30AM, I woke to find my bed slightly shaking, and maybe a hint of some noise. Just as I was about to drift off, a fairly violent jolt hit the house. Some various items were knocked off shelves, a fairly scary way to wake up. Carmen and I bolted for the door and waited for aftershocks: I thought I felt an immediate smaller shock, but since then, things have been fairly quiet. Worse earthquake I’ve felt in 20 years here (I missed the Loma Prieta).

Here is the seismogram that a local station recorded:

Phew. Exciting. All of our local twitter/facebook friends are reporting that things are okay where they are at. Doubt I’m going back to bed though. 🙂

The battle with weight begins anew…

March 4, 2012 | Amateur Radio | By: Mark VandeWettering

Back in 2004, I blogged that I was joining Weight Watchers. Over the next year or so, I shed about seventy pounds, but then reached a stalling point where further weight loss seemed impossible. This frustration ultimately caused me to stop going.

My weight held for a while, but over the years (and recently at an accelerated pace) my weight has returned, so now nearly 8 years later, I’m back in the same position again. Blood pressure up. Cholesterol up. Weight up. And eight years older. So, it’s back to Weight Watchers again. It’s not without it’s drawbacks (for one, being outnumbered by women at meetings by 25 to 1) but it is fundamentally quite reasonable, and I’ve had success with it before.

Today, I’ll merely list my weight at 1.0 (measured in normalized brainwagon units). As we go forward, my hope is to update you with smaller fractional values. Wish me luck.

MLB.TV still stupidly refusing to offer me a product that I want to buy…

February 22, 2012 | Baseball, Rants and Raves | By: Mark VandeWettering

Two years ago, I complained that MLB.TV’s black out rules basically robbed them of a chance to get $120 of my hard earned cash in exchange for a product which they supply to others in the U.S., but which they refuse to sell me. Fast forward to today, and nothing has changed: I still can’t buy live access to all Oakland Athletics games for any amount of money, even though if I lived in somewhere else, I could buy their product. Isn’t it time (beyond time) for these silly exclusivity agreements to fade away?

I’m not the only one whose been complaining about this for years.

It seems startlingly anti-consumer for these blackout agreements to continue. The artificial scarcity created by these policies do nothing to enhance the fan experience. I’ve seldom seen an industry work so hard to avoid selling a product that they have and could sell to consumers.

Ridiculous.

Why I am not going to play Skyrim any more…

February 22, 2012 | Computer Games, Xbox 360 | By: Mark VandeWettering

Okay, a diversion from my regular topics.

And that’s what computer games are for me: a diversion. I play them because I like to be diverted from my work and from even my normal bits of hackery and play. I tend to play games with a strong story component, like the Zelda games on Nintendo, and more recently Mass Effect/Mass Effect 2 on the Xbox. Because I have a job and a regular life, I really only play about one of these games a year, usually in the span of my Christmas break. This year, my wife got me Elder Scrolls V: Skyrim. And after playing it for more hours than I care to admit, I’ve come to this conclusion.

I hate it, and I’m not going to play it anymore.

It’s not a question of graphics. It’s got some great graphics, with a huge rich world presents an everchanging landscape.

Some people have dinged it for having an unimaginative plot line. I disagree: I think the breadth of the game is pretty incredible, and there is lots of stuff that you can do and follow that I found engaging.

Given my particular requirements, I am actually tempted to complain that the game is too big. It’s got so much to do, it simply demands too much in the way of time to really be completely enjoyable. It’s like seeing a good movie, but having to leave in the middle because you are getting bedsores from just sitting there for so long. But that’s not my real problem with the game.

The real problem is bugs. Bugs. BUGS!

To my way of thinking, there is one sin in game development. It’s not being boring, or repetitive, or derivative. It’s releasing software that contains bugs that affect game play. Bugs like getting wedged in a wall, and being unable to extricate yourself (yep, happened to me in Skyrim). But minor bugs like this are usually not too bad: you simply reload from the last save point and try again. For simple bugs like this, it means that you’ve lost a few minutes of playing (since your last save point). That’s annoying, but I could understand a certain number of them.

But Skyrim goes beyond these simple venial sins, and elevates them to mortal sins. It has bugs which basically prevent the completion of quests, and which you usually discover only well after you somehow encountered the bug. My current save situation has no less than five active bugs of this nature:

  • I can’t complete the Waking Nightmare quest, since Erandur apparently entered the Nightcaller Temple ahead of me, and is inexplicably not there.
  • I can’t get any companions to join me, because the game apparently thinks I have a follower. Yes, I’ve tried waiting for him to catch up. No dice. Scanned back to find where it glitched. Apparently somewhere about five hours of gameplay ago, although I have no idea why/where.
  • I can’t complete College of Winterhold. Reasons unknown.
  • I can’t find anyone to identify Unusual Gems. Reasons unknown.
  • Can’t intimidate Xander. Walk right up to him, he says I shouldn’t be there. Apparently it’s buggy for lots of people.

Bethesda game director Todd Brown thinks we have a right to be pissed off. Well Todd, I am pissed off. It is a pity that you haven’t taken the opportunity to actually offer any remedy to those players who have been robbed of enjoying your games because of these bugs. At least on the PC version of the game, you can activate a console and find some secret command that can ameliorate the problems (sure, it completely breaks the game experience to have to go out and twiddle hex digits, but at least it keeps you from completely wasting your time).

Have some pride, and fix your damn game, Bethesda.

50th anniversary of Glenn’s orbit aboard Friendship 7

February 20, 2012 | Space | By: Mark VandeWettering

50 years ago today, American astronaut John Glenn completed three orbits of the earth aboard Friendship 7. Glenn would later become Senator, and would return to space aboard the Space Shuttle Discovery as part of the STS-95 crew, becoming the oldest person to fly into space. These three orbits started fifty years of an American presence in space. Salutations to Senator Glenn, and to NASA.

Examining the output of a simple remote-keyless-entry transmitter…

February 20, 2012 | Amateur Radio, Arduino, electronics | By: Mark VandeWettering

Yesterday I was looking (sadly unsuccessfully) for some BPW32 photodiodes that I know I have somewhere, when I ran across some of 434 Mhz transmitter modules from Sparkfun (now a retired part) that I had never used. These little $4 transmitters are commonly used for remote-keyless access or similar applications. They have just four pins: power, ground, a data pin, and an antenna, so they are easy to interface. I thought that they might be useful as backup low power beacon transmitter aboard a high altitude balloon payload, but I had never unpacked them, never tried them out. It dawned on me that I might also be able to use them with my code which I had previously written to send Hellschrieber telemetry. But to start out, I just made a simple program that sent the string “BEACON” at 1 second intervals and fed it to the data pin.

But how to receive it? I fired up my FT-817 and tuned it roughly to 433.920 Mhz (the nominal frequency) and even without an antenna, I could clearly hear the buzzy signal with a 1 second period. In fact, I could still hear it over 50Khz away from the nominal frequency. The signal was very, very wide. That got me curious so I dug out my Funcube Dongle Pro, hooked up a simple wire whip antenna, and tuned it in.

Here’s a picture of 96Khz surrounding 433.920:

Bleh. Really wide, really ugly, and really unpleasant sounding in the earphone. The horizontal lines coincide with the transmissions, the long harmonic laden regions in between are the “dead times”.

I suppose that if you were only using these intermittently in a key fob kind of situation, I could justify using something like this, but for the kind of application I was envisioning, they just seem gratuitously poor. Still, it was fun getting my Funcube Dongle out of the box and playing with it again.

Addendum: they also don’t work as a Hellschrieber transmitter. I hooked up my “Hellduino” code, but the resulting spray of noise didn’t provide any useful decodes. I think that the transmitter has an upper limit on how long pulses can be, and is also sending AM modulated signals, rather that keyed CW.