Thursday, March 28, 2013

The Situation (Day 18)

Not a lot of movement to report, although there are some positive developments.

Rich and I are skipping the Bloodthirsty Vegetarians podcast again this week; he's got some things he's busy with, and I've got some things I'm busy with. Maybe next week.

I have an initial phone interview scheduled for Monday with a local employer and I'm filling out more job paperwork. If this goes well, it could mean that this job search won't have to be an extended one and we won't have to move, at least not for my work. That would be great, and I'm feeling cautiously optimistic, but of course I don't actually have an offer yet.

Today I certified with MARVIN and I should be paid unemployment for the past two weeks, even though my password for the online system is either delayed or lost in the mail. So I'll give it another day or two; sometimes mail takes a strangely long time to get here.

I need to report a couple more job applications completed last week and this week, although looking at the Michigan job boards online, I don't see much in the way of new postings.

We have most of the paperwork finished for our food assistance application.

Grace has actually had some good news (for a change) about her health issues. They may be less severe than we feared, and there might be some things that can be done to improve the situation that don't involve more surgery (which almost killed her, last time). It's too early to know for sure, but if she could be free of chronic pain, that would be wonderful. I just hope we can get what needs to be done, done while I still have health insurance through COBRA.

Re: Pb. We spoke today with the state agencies that deal with lead. We will need to get them some paperwork, but the upshot was that they should be able to test our home at no cost to us (since I currently have very little income). They also have grant money to spend on remediation, if it is needed here. And via my network, we've got another contact person to talk to for advice about lead -- a friend of a friend (thanks, Ken!) Presumably there will not be much news on this until we get test results.

Overall, I'm a little stressed, although not as much as I was in week one. The main problem I've having is what I've started to think of as a kind of cognitive dissonance. I need to consider a lot of different options and make contingency plans -- and they are violently contradictory. For example, I'm planning to both stay here and move, both in-state and out-of-state, and do work similar to the work I've been doing for the last decade, work similar to things I might have done further in the past, like web application development or GUI development, and also retraining myself to get into iOS development or Haskell programming or Scala programming or something like that.

Maybe some people are good at this sort of contingency planning but I am finding it a little unnerving and very distracting. I guess that's probably par for the course. I don't want to pass up anything that might be a really lucrative and positive change for my family. But one last thought there -- when I was 25, and single, and could pretty much pack up all my things in a station wagon or minivan, moving was stressful. Now that I'm 45, with not just a family but a large family -- moving sounds really stressful. Add to that a house we probably couldn't sell sell quickly even at a loss and, well, you do the math.

Grace had what I thought was a very insightful comment. Michigan requires people receiving unemployment to document two job applications completed per week. They also have a rule that says that once you've received half the benefit weeks you are entitled to, you have to take pretty much any job that pays market wages and at least minimum wage, even if it is not in your field. There's some language to that effect; it is a little vague. The net effect, she reasons, is that experienced high-wage workers who can't find, locally, the kind of work they previously had, will be driven to flee the state. The system will force them to apply out-of-state. I guess that meets the short-term goal of reducing unemployment rolls in Michigan, but forcing people who should be assets to Michigan cities to leave does not really seem like the best long-term solution. I hear Chicago has sports bars themed after specific Michigan universities, for this very reason. But will there be long-term rewards for those who choose to stick it out?

Monday, March 25, 2013

Flattening a Warped CD

I recently picked up a copy of Donald Fagen's new album Sunken Condos from my local music purveyor. This album comes in a cardboard folder instead of a plastic case. The problem arose when the shopkeeper stuffed it into one of those plastic shells that was designed to replace the CD longbox, which in turn was designed to be easily fit into existing record store bins for holding 33-1/3 RPM long-playing records. And so the old technology lingers.

He managed to stuff the box into the holder, but in the process it was kind of crumpled and bent. I was a little dubious buying it, but I was able to feel that the CD was not actually broken, so I thought it would probably be fine. CDs are nearly indestructible, although they can fail from age or oxidation or, or course, severe scratching. I knew it was possible to chip them, and even shatter them, but it hadn't occured to me that if you put one in a slightly bent position and left it there for a while, it would behave like a vinyl record and warp a little. If you laid this CD on a flat surface, it had a very slight "dishing" in one direction -- it would wobble just a bit like a see-saw, across one axis. When I say "just a bit," I mean the edges that wouldn't lie flat were probably sticking up about 1/8" above the tabletop.

So I had a CD that would play fine in the car, but not in any of my computers. The car CD player must have more tolerance for vibration. The CD player has to focus a laser below the surface of the spinning disc, and if the distance between the laser and the data layer is constantly changing, it might not be able to accommodate fast enough to decode the data stream.

I did some searching online and read a couple of pieces of advice; some folks claimed that had successfully flattened a CD with a heat gun. I have a heat gun for sealing plastic on windows, but I decided that was probably too much heat. Leaving the disc stuck for a couple of nights between the pages of a heavy book, with more books stuck on top, did not improve it at all.

What I finally tried was cutting up some clean, thin cardboard (from a box that held pastries) into squares a little bigger than a CD case. I laid the CD on the brown side of a square of this cardboard on my kitchen counter, then stacked three more squares on top (brown side towards the disc). Kraft paper would probably work fine too -- my thinking here was that I didn't want any kind of coating on the paper that might stick to the disc.

Then I heated a tea-kettle full of water on the stove. After it came to a boil, I let it cool for two or three minutes, and then sat it on top of the stack. My thinking was that the teakettle would be at about 180 degrees F at this point, but the layers of thin cardboard would slow down the heat transfer into the CD. I wanted the CD to get up to maybe 120 degrees F. After letting it sit for a few minutes I took the stack apart. I didn't use a thermometer but the CD felt to me like it was about the right temperature. I flipped the CD over, and put the stack back together again to sit like that for a few more minutes. Then, I took the kettle away and let it cool down for a few minutes.

I was slightly surprised to find that this actually worked like a charm.

If you try it, remember that I offer no guarantees. You might wind up ruining your disc. If this does make it readable, I would recommend making a lossless backup for your music library as soon as you can. CDs are supposed to have an airtight seal between the two plastic layers to prevent oxidation of the aluminum data layer inside. If the disc is no longer airtight after this treatment, it will gradually degrade as some of the other CDs in my collection have, over the years. Good luck! Leave a comment if this actually works for you. If it ruins your disc completely -- well, don't say I didn't warn you!

P.S.: oh, and how's the album? Unfortunately, Sunken Condos is disappointing. I think The Nightfly is just a terrific album. I really like Kamakiriad. The abstract, semi-science-fiction premises and intriguing lyrics of tracks like "Snowbound" totally seduced me when it came out. I was a little less excited by Morph the Cat, although there are some enjoyable moments. This one just seems a little flat by comparison. There are a few decent songs, but many of them drag -- not enough interesting riffs, not enough ear candy, not enough of a live feel. I wish I liked it better. Maybe it will seem better after a few more listens, but I doubt it. Too bad!

The Situation (Day 15)

Some positive news in the job search today. I have one phone message back and one e-mail back asking to set up phone interviews.

Today was supposed to be my first day to certify with MARVIN, to verify that I've been unemployed and looking for the past two weeks and that I'm eligible for unemployment compensation for those two weeks. I was planning to certify online instead of using the phone system during my designated time window. The phone system is frequently overwhelmed with calls. But I discovered that to certify online I need to log in to a particular system with a password that was mailed to me but which I haven't gotten yet. My temporary password is now expired. So I guess I wait to see if it is in today's mail. If all else fails I can call the phone system on the open days, Thursday or Friday, and camp on the line until I get through.

Grace was out this morning applying for food benefits to help things. It so far has been a complicated but not too onerous process. I have to generate some bank statements and similar documents. I don't get any of that stuff in paper form any more but there are some online statements I can print out.

They want a mortgage statement, and I'm confused because we've never gotten anything I'd call a "statement" for our mortgage, either in paper or electronic form. Maybe we need to request one. Since the first few years' worth of payments pay primarily interest, I doubt we have accumulated much equity at all. We've only been paying for about 3 years on a 30-year mortgage. And whatever equity we've accumulated on paper might be imaginary, given that it could be impossible to sell the house for what we agreed to pay for it three years ago.

Which brings us to the question of our strategy: if I need to move for work, how do we get out of the house? The housing market here is, I think, still declining. We tried, three years ago, to imagine the job loss scenario and plan for it. That included asking ourselves whether unemployment would cover our mortgage payment for a while (it will) and involved trying to predict how far the local real estate market might fall. It seems to be still falling.

There are a couple of other things distracting me today. First, I need to finish our 2012 taxes so my oldest son can use the numbers to file some financial aid forms. That involves some phone calls to request some documents. That shouldn't take too long.

Second, a physician suggested we have all our young children tested for lead exposure. We thought their levels had all been OK, because we got letters to that effect, but then we got a second set of letters indicating that two of our children had high enough lead levels, measured in venous blood samples, to rate concern from the state, and a third is just below the level of concern. That "level of concern" used to be ten μg/dL. The CDC has recently lowered it to five. The four young children come in at 7, 4, 5, and 1, ranked from youngest to oldest. The rest of us have not been tested yet, although I think we should be.

We don't know the source. This is an old house, and presumably had lead paint, but to the best of my knowledge any lead paint "hot spots" have been covered over, maybe repeatedly. There are other possible sources -- lead water pipes, and lead from leaded gasoline in the soil. Whatever the source, this is a big concern for us. In very young children lead can cause intellectual and behavioral impairment even at low levels. We moved here to bring the kids closer to their grandmother. Damaging their brains was not actually any part of our intent.

We need to get our home thoroughly tested, and our water and soil as well. If the source of their lead exposure is this house, a place we thought was safe -- that's... potentially a big problem. If there is remediation that needs to be done here, that might involve the release of more lead particles, we will have to get Grace and the kids out of the house. They are a lot more vulnerable to lead exposure than I am. In that scenario I would probably stay here and just get my blood levels checked periodically. There's a small bright spot, in that we are might be eligible for assistance paying for any needed lead remediation -- at least, if they base it on my current income.

Lots to think about!

Thursday, March 21, 2013

Recovering MacOS X Disk Space with GrandPerspective

There aren't very many Mac utility programs I find useful on a regular basis, but GrandPerspective is one of them.
On UNIX-derived systems it can be painful and tedious to figure out where your disk space is going. Some versions of MacOS X have had bugs that allowed log files to pile up in huge numbers; some applications have bugs that allow huge temp files to accumulate. If you're a regular UNIX command-line user you probably know how to use *du* to find big disk usage hot spots, but it's not suitable for everyone.
On a couple of occasions I have used GrandPerspective to figure out where a system's disk space was actually going, and the results can be very surprising. Here is a GrandPerspective screen shot showing my system volume:

On the right, the black area represents empty space on the volume. So it isn't near to full, but I have noticed the space used has been growing dramatically recently. With GrandPerspective you can just hover the mouse over the highlighted areas and see what files the colored areas represent. Just because a file or a group of files occupy a lot of space doesn't mean I want to get rid of them. I'm more interested in finding unexpected disk usage. So there on the lower left section, flush against the left edge of the window, that square of mostly regular-looking pale yellow blocks next to the rectangle of pale orange blocks? Those are Apple Loops -- installed with Logic Pro. I use those sometimes, and that set of files isn't growing, so I'm not interested in removing them. What about the big red blocks in the upper middle? Those are mostly disk images -- for example, Linux distribution ISO files, .dmg files for purchased software I've downloaded, and backup disk image files from Apple system software. I might want to clean out some obsolete or unused files but again, it's not really what I'm looking for. But what's that set of _huge_ orange files in the upper right?
It turns out those correspond to this directory:

Wow, the largest of those files are over seven gigabytes each! I use Izotope RX weekly (or so) do do noise-reduction on audio files I record for podcast production. Apparently the application is piling up enormous temp files and never cleaning up after itself. So those can all go -- everything in that folder with the suffix ".tmp." Oddly, some of them are zero-length files. Clearly, RX could use some improvement here. This cleanup immediately recovered over 60 GiB of disk space! Let's take a look at the image after re-scanning:
Browsing around is an interesting exercise: I can see that a good chunk of my system hard drive is being taken up by Garage Band content, the Applications folder, and other stuff that is bulky but that I probably don't want to delete. Roughly the entire lower right quadrant is my iPhoto library. That's big, but it represents many years of pictures, and it is not growing unexpectedly. There are some movie files in iDVD projects I might consider relocating, and other stuff, but nothing that surprising. But what is going on with that block or orange squares in the upper right? That stuff apparently lives in /private/var/folders/3s/wrzn0f7r8xj3h7001s60qgjr0000gn/T. It includes a whole slew of pairs of files files with names like A9RI9eiM4.pdf and WebKitPluginStreamM9aMQG_AdobeTmp -- both those files are 799.7 megabytes in size! What are they? It appears that the PDF files are files that I viewed online -- in this case, a bunch of full scans of old issues of Byte magazine that I was looking at on My web browser crashed while looking at these files. However, stuff in these temp directories is generally thrown out after a reboot, so I shouldn't need to delete them manually. Indeed, after a reboot, I can confirm that these files are gone.

You can find this great tool, GrandPerspective, here.

Tuesday, March 19, 2013

The Situation (Day 9)

So today I went to the local unemployment office and Michigan Works office to do what the paperwork requires -- check in in person, and certify that I was me, and I was looking for and available for work. That actually went pretty well -- I didn't have to wait very long, and the folks I dealt with were quite friendly and helpful. So I shouldn't have any more bureaucratic hoops to jump through until I certify on Monday that I was out of work and looking for the previous two weeks.

I ordered some books from Amazon -- on Scala, Objective-C, and iOS programming. They should be here in a day or two.

I try to stay positive about our adoptive community of Saginaw, Michigan. But last night we put our trash out for pickup, out in front of our house, in the usual dented metal trash can, along with the recycling. At some point during the night or early morning, it appears that someone came along, before the trash was picked up, dumped out the trash bags, and stole the can. What? We kept thinking maybe it blew away, but the trash bags were left neatly on the tree lawn and the can was just -- gone. We drove around the neighborhood a bit wondering if it wound up on someone else's lawn, but couldn't find it.

Last night I was over at our church for a group beginner guitar lesson I've been helping with. When I left, I took a wrong turn in the corridors, came up the wrong stairwell, and went out a door with a big illuminated "EXIT" sign. It wasn't the same door I came in, but I figured it would get me out of the building.

Instead, I found myself in little courtyard behind the Atrium building. The door I came through locked behind me. There was a chain-link fence around me topped with barbed wire. It extended all the way down the back side of the church school -- maybe 75 yards -- and fenced me in completely. All the doors along the back of the school were locked and the offices were dark -- everyone had gone home.

I was totally stuck and couldn't get anyone's attention because the buildings were mostly empty, and there was not much of a line of sight to flag down someone occasionally driving by in the parking lot.

I finally had to call my wife on my cell phone and ask her to come and ask the receptionist to let me out. So I stood there behind the fence waiting for her as several inches of wet snow fell on me.

When they finally let me, out I told the receptionist "I am an extremely skilled and experienced software engineer and a talented writer and musician"

Monday, March 18, 2013

The Situation (Day 8)

The weekend was pretty normal. Or, to put it another way, it was packed with the usual crises of dealing with kids and errands and hosting our usual Saturday evening dinner -- this time, corned beef and cabbage. Grace did not get time to corn her own beef brisket this year.

Last year she made one in the fridge, letting it "pickle" in the fridge for about three weeks in a bag, turning it every few days. She used a brine of salt, coriander, bay leaves, fennel, peppercorns, and cloves -- and went much heavier on the spices than the recipe called for. I think she tripled the spices, but not the salt. The result was incredible -- the best corned beef I've ever had. But the brisket from Ted's Meat here in Saginaw was still very tasty.

On Saturday I went out to get some groceries, and got all the way to our local Meijer -- it's about six miles away -- before I realized I had left my wallet at home. I had a few dollars in cash with me so I stopped for a bagel and cream cheese and then just went on home, on the grounds that I was too distracted to be out shopping. I stopped at our friend Linda's house to pick up some local pastured eggs. I wanted to buy five dozen -- yes, our family can go through that many, or at least almost that many eggs, in a week. But the chickens have been slow lately and so she only had a dozen on hand.

On Sunday Grace and I went out again to buy gas and groceries with our four-year-old, and I discovered my bank card had been blocked and so I could not pay for anything, or take out cash. Customer service is closed on Sundays. So once again we were stymied. We put a small handful of groceries (for last night's dinner) on a credit card and came home.

The online banking system shows that my available balance was fine. I got hold of them today and the issue was that my account was flagged for unusual spending. On Saturday, I got on the App store and bought current versions of Numbers, Pages, Keynote, and OmniGraffle. That came to a bit over $160 with tax -- $20 each for the iWork applications, and $99.95 for OmniGraffle.

I bought these programs are specifically to work on some portfolio materials for my job search. OmniGraffle is my program of choice for making XML diagrams and related software diagrams on the Mac, and I've used it for many years. (On the PC, it's Visio with some freely available XML templates). I have a lot of older files in these formats and wanted to open these up and turn them into PDF files. But my version of OmniGraffle was an old PowerPC-only version, which no longer works on Mountain Lion, and my iWork '09 install disc was, for some reason, no longer readable. (This has actually happened to a couple of my Apple DVD discs over the years -- they seem to age to a point where the drive can't read them).

Anyway, my bank's system apparently flags large purchases on the iTunes Store as indicating possible fraud. The problem here is that the iTunes store has gradually morphed from being a service that sells $10.00 albums and $1.00 songs, where you might typically spend anywhere from $1.00 to $30.00 at a time, to a service that also sells iPhone applications, to a service that also sells Mac applications, including some that cost quite a bit more than the latest David Bowie album. So it seems that they might want to update their fraud-catching criteria a bit.

I guess I should be grateful that they are monitoring my account, because all it would take was one merchant with a card skimmer or one security breach online to create a huge money mess. But it's also unnerving to think that I might have been out of town, like I was on Friday, and unable to get gas or call anyone in customer service. But that is why I carry one separate credit card with a low limit, and I don't use that card for any online or automated transactions.

On Saturday, I also set myself up with an eFax account, so that I can deal with employers, and there are some, who apparently want to deal with applications only by fax. That seems like an unlikely way to get a job, but there it is. I sent off one application that way, although the position advertised a variety of possible positions rather than a specific one. I do not think it is very likely that I'll get a call back or other followup on such an application but I suppose it is possible. It seems more likely that this is the "front end" of a recruiter attempting to fill up a database. Why fax rather than e-mail, though? Fax documents would have to be OCR'ed to be readable, since they show up as page images, rather than text. It's a little baffling.

Anyway, now I have to buy the groceries that I didn't get to buy either Saturday or Sunday...

Friday, March 15, 2013

The Situation (Day 5)

Aside from the informal contacts, and sending some résumés to people I know for them to send on to their companies or potentially interested parties, I formally applied for a senior software engineering position online. It’s a company located right here in Saginaw, but they don’t want phone calls or faxes or visits, their site says. Everything has to go through the web site. Initially I had a lot of trouble with errors and timeouts. It eventually started working. What a complicated, messy, redundant process, though. They want you to upload a résumé, preferably in .DOC form, which I did, and enter text into a field by way of a cover letter or anything else you’d like to say to whoever might be reading. It’s a tiny little field – you can only see three lines at a time or so. Then you’re supposed to review the plain text of the .DOC file you just uploaded, which the web site has extracted, except that you can only see three lines at a time, the formatting is destroyed, and you can’t edit it. Why am I reviewing it if I can’t correct it?

I entered a sort of brief text-only cover letter highlighting my most recent relevant experience, thinking it might be valuable to have some sort of personalized information there. But it turns out that at the very end you actually have the option of attaching files, a résumé and cover letter and anything else including code samples or other portfolio materials. So I attached a PDF file version of the same résumé. Meanwhile, you have to fill out web forms that contain what is on your résumé, including things like major accomplishments for each job. I was at my last job for seven years; I did a lot. I have some highlights already written up and ready to go, in the “long form” of my résumé, on my personal Wiki. Except… they want it in 500 characters or less. Oh, and it won’t tell you how many characters you’ve entered. Note that I’ve now uploaded or retyped the contents of my résumé three times to apply for one job. And paraphrased some of it to mention in the “cover letter.” And you know that thing about providing references “on request?” They want all those entered into the forms. At least they don’t demand salary history – I would flatly refuse to type my salary history into some web site that I can’t guarantee is even collecting my information for an actual open position, and not a recruiting company.

The whole point of this is to get to where I could actually talk to a human about a position, right? But they’ve outsourced their recruiting to some kind of recruiting service, it appears. So the person I’m trying to convince that I should be allowed to talk to a human has only a cursory business relationship with the person that knows something about the job they need done. Finally, the very last question asked me to enter my college GPA. Holy crap, how long has it been since I was asked for, or thought about, my college cumulative GPA? It could be twenty years. I certainly don’t remember exactly what it was. I’m not even sure I still have a transcript, at least not that I could find easily. I guess I should see if I can dig one up in case this comes up again. I’m still scratching my head a bit. I picked a number; it’s in the right ballpark at least.

Anyway. That was yesterday. Today (Friday) I was down in Lansing to return some equipment and pick up my final paycheck. That actually went fine. I had wondered if they would pay me for the 21 days of vacation time I didn’t get to take. They actually paid me for part of it, using some kind of formula based on how much of the year, calculated from the anniversary of my start date, I worked, along with how many days I had left and how many I took (3, all for sick-kid days). So I got some extra money in my last paycheck. That helps lower my stress level a little bit – we will be able to pay our bills a little longer.

I got some more information on COBRA. It’s both encouraging and discouraging. Encouraging, because I can still have a grace period before I have to pay the fees, and we should be covered with no break. But discouraging because, and this is news to me, apparently my employer could unilaterally cancel the whole health plan, even if I want to continue paying for it via COBRA. I thought the whole point of COBRA was to give people a guaranteed grace period where they are allowed to continue their insurance – at least, assuming they can pay the full price for it. That’s apparently not guaranteed, so we really need to get onto a new insurance plan soon.

I also had a brief chat with the VP that helped interview and hire me originally. He reiterated that I had made some major contributions to one of the company’s big projects – what became the Rockwell-Collins iForce system. It was nice to hear that he recognized what I did there. We talked about what the experience of working from home was like. He told me that he had no complaints about that, and he knew I had been quick to respond to urgent bug reports and change requests that popped up over the last couple of years. I told him that I would happily work for them again if something came up and they wanted me, either as an employee again or possibly via some other arrangement. I don’t actually expect to hear from them any time soon, of course, but we shook hands and said goodbye on a positive note.

Grace and I recorded a multi-part chat in the car. I’ll be turning that into a podcast episode next week. Meanwhile, I think I will be slowing down on these “situation updates” for now, to focus more time on the job search and skills-building, at least until such time as I have something interesting to report. To the people who have been following along while I spill out my nervous thoughts, thank you so much for your support!

Thursday, March 14, 2013

The Situation (Day 4)

No gym today. For some reason I had a really difficult night’s sleep. The kids were all awake in turn at one point or another, and kept waking me up. Last night on the treadmill it was clear I needed a “recovery day.” I did get out for a walk this morning. Sunny but the icy-cold wind in my face was no fun at all.

My wife called Blue Cross Blue Shield of Michigan to investigate the possibility of “conversion coverage,” where we could pick up health insurance from them directly rather than using COBRA to continue our existing policy. (COBRA would cost us about $1,600 a month). What she found out was not very encouraging; with maternity and dental coverage the monthly premium would be lower – $1,050 – but we’d have a $5,000 deductible to meet before they would pay for anything other than preventive care. Prescriptions would be covered, after meeting the deductible, at 50%, and 100% after hitting the cap of $10,000. They only guarantee these rates and coverage through the end of the year, so we’d have coverage for ten months; we’d probably hit our deductible, and maybe our cap, so we’re talking about $20,000 to pay for our health care costs, and insurance, through the rest of the year.

Continuing COBRA at $1,600 per month is probably cheaper – $16,000 plus co-pays – but perhaps more importantly it wouldn’t require us to spend a whole lot immediately. We wouldn’t have to pay down that $5,000 deductible before we had services covered. Also, I think we would still have MEBS – an extra insurance that was paying many of our co-pays to reduce our total costs for health care.
But. The policy we have through COBRA will no doubt be changing up at the end of the calendar year too, and there should be little doubt that it will cost more and cover less in 2014. They are allowed to terminate our coverage. Even if they don’t, we can claim COBRA for a maximum of 18 months (I think).

By the way, did I mention that my wife was running for Congress? Her platform is “I’m running for office so that my family can have decent health insurance for the rest of our lives. That’s my platform. Thank you.”

Regarding food assistance - we’ve been trying to fill out the forms online, but the site keeps throwing up errors – and losing data that we’ve put in. So we’re now thinking we might have to just go fill out paper forms, in person.

I’m working on applications so that I can fill out my required "monthly record of work search." I'm looking at a Senior Embedded Software Engineer position listed on the state site. The language in the posting is a little cagey, though; it says "this position _could be_ located in Saginaw, MI" (emphasis mine). The state site says you have to apply on the employer's web site. The employer's web site says "résumés will only be considered through online submissions." When I go to apply online, it actually takes me to a page with a domain. That seems a little fishy. Do they outsource their HR? In any case, I'm not able to proceed; after creating an account, the next page just consistently fails to load. The URL for that page it is trying to load seems to indicate some kind of internal site error. It's a bad sign when a web site can't even generate an error page to tell you how it failed. What was I saying yesterday? Oh yeah, something about how "I’ve almost never gotten a job this way. All my really good jobs have come through personal contacts and networking." Not dumping résumés on publicly-posted jobs.

I’m thinking I’ll do this daily thing for one more day, tomorrow, and then only blog more about “The Situation” – my unemployment – if there is some news or something I want to talk about.

Wednesday, March 13, 2013

The Situation (Day 3.5)

When I left the office today to check the mail, I found a letter from the State of Michigan, regarding unemployment paperwork. Apparently there’s a new requirement – new as of January 2013 – that anyone receiving unemployment compensation has to record my job search on their system – on paper forms, mailed in, or online. I have to log two applications filled out a week, basically – résumés sent, result received back, any interviews, etc. Under pain of having to give back that $362 a week – with interest.

Of course, my first eligible week ends Friday, and I’m just finding out about it now (Wednesday evening). They do not mention this on their web site, because how could you possibly keep a web site current with changing paperwork requirements? Once the text on the web site has been written, that’s it! It’s set in stone!

So I get it, legislators were sitting around and they had a brainstorm – the way to solve all Michigan’s problems was to lean on those lazy unemployed. That’ll bring the jobs back from China and India and make the state competitive again! Those folks receiving up to $362 a week clearly have it too easy, sitting on their asses receiving those cushy checks and eating bon-bons.

But what this overlooks is that I’ve almost never gotten a job this way. All my really good jobs have come through personal contacts and networking, and of course working on my skills. The best jobs are often not posted publicly. If an organization does have to post jobs, it helps if you can get one written with you in mind -- someone basically transcribing your qualifications into the "requirements" session, after you've had a chat with the person writing the description. You can get a great job that way. Dumping résumés and cover letters on posted positions that I’m not very interested in, or cold-calling, without even having someone who already works in the company and who can vouch for you? Not so much. But I guess I’ll have to do that too. I’m not sure what happens if I get an interview, and an offer, for a job I don’t want, or that won’t pay me enough. Do I have to give Michigan back my $362 (with interest) if I don’t take the first job that offers me a position?

Anyway, it looks like I’ll have to basically conduct two job search processes in parallel – applying for publicly posted positions, so that I can document that I’m doing so, and continuing to actually search for a job I want, by collecting up contacts and leads, writing personal e-mails, and getting up-to-date on a few things that employers might find useful. It makes me wonder if I should just not bother to certify and collect my $362. Oh – oops – did I just discover the actual point of this requirement?

Grace tells me that, best-case scenario, we ought to be able to start collecting food assistance after about 30 days. She also commented that navigating benefits for the jobless… is pretty much a full-time job.

Got another moderate workout in at the gym…

The Situation (Day 3)

I got the last of the stuff packed up to return to my ex-employer - a development board, some debugging boards, a dedicated LCD screen, a power supply, a couple of microphones, some cabling, my keys, some shoe strap for grounding myself when I was working on the lab floor (so stylish!) On Friday I will be returning these items and picking up my final paycheck. The exact contours of our financial situation will be clearer.

I went to the gym again last night for a brief cardio workout. It often feels hard to drag myself to the gym, at whatever time of day or night – it’s too late, I’m too tired, I have too much to do, the kids are being obnoxious, the sink is full of dirty dishes, whatever. But I always feel better afterwards. So I’m going to try to keep that up, at least in the short term.

Today, I got my résumé up on the Michigan job bank web site, and looked at some positions posted in the area (within commuting distance). I can do it all online, except that I’m required to report to a service center in person.

There are some employers in Saginaw offering embedded software development positions. That’s encouraging. They are automotive-related. I have a relevant experience. I will have to find out whether their requirement of an EE degree is a firm requirement, and how much they might pay.

Yesterday, I filed the paperwork to take a lump-sum distribution from my 401K account. It’s not ideal. I’ve been feeling guilty for many years that I don’t put nearly enough into retirement accounts or other more accessible savings. I’m not the only one in that situation. But maybe I should just allow myself to feel better, at least for a moment, that I put enough in there to keep our family afloat for a while. My wife has been looking into the situation with food assistance. That could really help with our “burn rate” while I’m looking for work.

Between unemployment compensation, food assistance, and my 401K, I should be able to cover our basic expenses, including health insurance through COBRA, for a while. We are trying to figure out exactly how long “a while” might be. But it seems that it might be long enough that I can actually think about what job I might want to take, instead of jumping into the first thing I can get. It’s never good to have to be forced to make decisions out of fear. I might even be able to do some self-retraining, and so open myself up to some different possibilities.

I have been thinking about what it might take to get into iOS development. I’m well-positioned to learn something like that. In 2008 I bought in iPod Touch with the intent of learning to develop for it, but I just didn’t put time into it. Well, maybe now I’ve got a little time. I’d certainly no longer be an “early adopter” – not a pioneer, and so hopefully wouldn’t wind up with any arrows in my back. But on the downside, there are a lot more experienced developers for the platform that started earlier and so I can’t start out as a fish in a small pond, as I did with Newton development back in 1993.

I’d have to pick up Objective-C, which seems quite feasible given my background in learning programming languages. I’d have to pick up the iOS APIs. It might seem odd that I don’t already know Objective-C well, since I’ve done a lot of development on Apple platforms. In truth, I’ve dabbled in Objective-C a little bit, going back to playing around on the NeXT environment. The bulk of my experience writing code for Mac was pre-MacOS X, using THINK C and CodeWarrior. The code I wrote for Mac OS X consisted of drivers, which are written in C++ using the IOKit framework, and a ported GUI for the Qt framework. Some of the details escape me a little bit, since it’s been almost ten years, but it was in C++, not Objective-C.

I was thinking it might even be worth it to head to a training program, like one of the week-long classes offered by the Big Nerd Ranch. That kind of thing is often good for networking as well as learning. We might be able to arrange for my wife to get enough child-care support that she could spare me for a week. But the price is more than a little daunting – five grand for the Beginning iOS class. I’d still have to buy an iPad and airfare, and maybe a week’s worth of food. I’m not sure we can swing that. Could I learn most of that with an iPad and a book? Sure, but the whole point of the class is that it’s a defined, blocked-out chunk of time, and there is support to help you get through pitfalls quickly. And there’s the networking.

I’m also, in general, wanting to fulfill a long-held dream that some of the last twenty years of progress in language design – and micro-controllers – might lead to some real improvements in the toolchains for embedded systems and drivers. I do this informally whenever possible, at whatever level I can – replacing straight DSP assembly code with macros, to let me write less code and make the solution more self-documenting; modeling hardware registers with C++ classes, to take advantage of constructors in initializing them and setting up things like polarity and “don’t care” bits and masks that rightfully belong in a class, not a #define. I’ve been able to use Haskell, Scheme, Dylan, Ruby, and Python “in anger,” in my work – usually to put together a prototype, or write a script to churn through some data, or test a numeric algorithm that will be re-implemented in C or C++. But I haven’t been able to ship code for an embedded system written in these languages, except sometimes for generated C or C++ code. I’d like to see that change.

Hell, I haven’t even been able to embed an interpreter since I developed a survey engine for the Newton, or when that system was ported to WebObjects, using GNU Kawa as an embedded interpreter. In the embedded space, that’s still not common. And so I keep seeing Greenspunning, where developers write their high-level logic in some kind of data-as-program – in C or C++ – in what is essentially an ad-hoc interpreter. Templates would be bad enough, but sometimes, it’s even done with macros (shudder).

If they were writing in something like NewtonScript, it could really be data-as-program. The “script” for a given survey is basically an elaborate compiled data structure, with functions for determining run-time branching right in there with the strings and symbols – effectively, a domain-specific language.

This approach basically cries out for writing the application as a library, and driving it with real “business logic” running on an embedded interpreter for Lua, or even better, Squirrel, or Guile, or …something! Something other than yet another realization of Not Invented Here! Just because we’re writing embedded code, does it mean we can never have nice things? I’m not talking about DSP code that has to service a DMA interrupt in a tiny, fixed time-slice. I’m talking about slow, event-driven code. That includes GUI code.

That might be starting to change. I’ve been encouraged by the existence of Commercial Users of Functional Programming. I’ve been encouraged by what’s going on with Haskell, and companies like Galois. The adoption of Scala looks very promising, so I’m conducting a little investigation into Scala, and writing up some notes. And, trying to plan the rest of my day.

Tuesday, March 12, 2013

The Situation (Day 2)

So, unemployment does have a few benefits. Although I’m putting in dedicated time every day on the job search front, I’ve also gotten to go to the gym – the local YMCA – for the first time since we got a family membership. I was pleased to find out that despite getting very inadequate exercise for the last few years I haven’t lost all the fitness I used to have from regular biking and weightlifting. Not by a long shot. My joints are complaining a little bit today, but overall I feel much better for having had a workout. So I am hesitant to cancel our YMCA membership, even though it is not strictly a necessary expense.

I also have been volunteering to help with our church’s youth minister who is teaching a beginning guitar class. I helped some kids tune their guitars, changed some strings, and did some minor repairs. I will probably be performing music with her, and eventually with the group of kids, although the details have not all been worked out yet, and I’ve let her know I might have to drop out if a new job demands it.

Trying to figure out what to focus on each day is confusing. I want to feel like I’ve secured our finances for the immediate future – the next ninety days or more – so I can stop worrying about that side of it and focus harder on the job search. Unemployment compensation and food assistance won’t actually do that – there’s too big a gap left between income and non-optional expenses. Of course, the definition of “optional” is debatable. We could stop paying things like my life insurance policy. It’s not an immediate necessity as far as making sure everyone is fed and housed. My risk of unexpected death at this age is not high. But the potential down-side for my family, when compared to the short-term savings, is huge.

I could take a distribution from my 401K account. Well, I have to, since I’m no longer an employee, but typically you are supposed to roll it over into another plan. I also could take a cash distribution. That’s generally considered a really bad idea, because it will have some large percentage of its value taken off the top, and get taxed. But it would be enough money to push out the date when our finances will hit a brick wall. I haven’t figured out exactly how long it will give us yet, but my wife and I are working on figuring that out. A few months of breathing room would be worth a lot to me.

Besides losing so much of the value, there is another downside – it will be considered income, so it will immediately affect our ability to collect any other benefits. Unemployment compensation is calculated in weeks earned. This is my first benefit week; I should be getting $362 for this week. What happens if I report earning a lump sum next week? Certainly they will not pay me for next week, since I had earnings. But how long will they consider that I was “employed?” I’ll have to find out. Maybe I shouldn’t even claim any benefit weeks at all right now.

But, there is an upside. I could afford COBRA coverage for a few months. Although it is very expensive and will substantially increase our "burn rate," it could prevent a possible big downside, if someone has a big medical expense. There's actually a grace period that lasts for a couple of months, during which I can somehow get us covered "retroactively," although I'm not entirely sure about the details.

And do we go ahead and sell our second car so we can apply for food assistance, if we will be ineligible again in a few days’ time due to income? Probably not. Do I go ahead and start selling some things now? Maybe a few items. I’ve got something thinking to do.

Incidentally, the process of filing for Michigan unemployment is confusing as hell. I’m glad that you can do it online, but the form you’re filling out, under pain of committing a felony, is pretty vague. For example, they don’t explain what they mean by the income you are asked to report. Is it gross income? Gross income after pre-tax deductions? Net income after all payroll deductions? I hope I guessed right, although even if I didn’t, it wouldn’t have any effect on that capped $362 per week amount. Then you’re asked to give a total income for your entire period of employment. If they mean “net,” I’d have to add up over seven years worth of paycheck stubs, since the take-home tended to vary as health insurance costs changed and tax changes came and went. What a pain.

Anyway… today – I’ll make a few phone calls, work on some more résumé content and portfolio materials, read some job postings, send a couple of e-mails, work on an article, and then try to stop worrying long enough to go to the gym.

Monday, March 11, 2013

The Situation (Day 1)

So, one week ago today, I sat down at my desk to start my work day and the phone rang. It was my boss to let me know that my employer was laying me off, after a bit over seven years, and that my last day would be last Friday. So today begins my first work week of unemployment.

I guess you're usually not supposed to talk about this sort of thing. It's embarrassing; it's stigmatized. People don't want unemployment cooties. Well, I need to talk about it.

First, I felt that the separation from my employer was on good terms, as these things go. I don't really have any complaints about them at all. They have been having difficulty trying to maintain and grow as a business for a number of years. I had heard my co-workers "crying wolf" for so long that I basically had been tuning it out. Several other engineers left. My hope had been that I could stick out the current downturn in business until things turned around. That didn't happen. I was one of three software engineers laid off last Monday. We were the less-senior engineers. The fact that they have engineers that have been there for much longer than seven years says good things about the company in general. I hope they can pull it together, or re-organize, get some good business going. I would work for them again in the future, assuming I was still available -- and of course I hope I won't be, because I need to find work soon.

In 2010, my family and I moved from Ann Arbor to Saginaw. We did this because we wanted to be closer to my mother-in-law, who was in declining health. She wanted to spend as much time with her grandchildren as possible. We made that happen. I'm proud of achieving that. It was the right thing to do.

There were other reasons. Our family was growing -- we had four children, and were feeling extremely squeezed in a two-bedroom apartment. There weren't really any bigger apartments to rent, in Ann Arbor, or houses to rent at prices we considered reasonable. The real estate market in Ann Arbor remained extremely inflated with respect to wages, so our chances of buying a house there were pretty much non-existent. To put it in perspective, the big old house we bought here would have cost at least five times more in Ann Arbor.

So I got permission to telecommute, and we bought the big old house. Well, we bought a mortgage, at least. I set myself up with a dedicated phone line, a phone headset, high-speed internet, and bought and configured various computers I'd need to do my job. I brought up some hardware boards for occasional debugging on the target hardware, and I've been telecommuting for just under three years. I drove down to the offices in Ann Arbor or Lansing when needed, but most days I wrote code from home, connected to the office VPN, logged in to an IRC chat, communicating by e-mail, phone, and chat, and calling in for a weekly conference call.

My work days were not actually very much different than they were when I worked in the office in Ann Arbor, since that office was itself a satellite office. There are a couple of other satellite offices elsewhere in Michigan and a couple other single employees working from home like I was, so we were all accustomed to collaborating by phone, e-mail, Wiki, Mantis, Subversion, and IRC.

Living cheaply in a big old house and telecommuting sounds kind of idyllic. It is and it isn't. The extra space has been a godsend. Having a whole separate suite of rooms to use as a home office is great. The "cheaply" part hasn't really worked out that way. This house is poorly insulated. We knew that, but we thought we'd be able to put money into it gradually to improve the situation. Our winter monthly energy bills are upwards of $700. That's with the thermostats set at 63 F. Everyone is very used to wearing wool socks and layers. I type with fingerless gloves on, during the coldest weeks. My father and stepmother have kindly sent us a whole bunch of great old felted wool blankets that they found at yard sales in California -- blankets I don't think you could buy these days for any price. They are a godsend on cold nights. I keep a low-wattage space heater under my desk, and we keep one in the bedroom. Those things still aren't free to run, though. Living in the city of Saginaw proper, our water bill is bizarrely high -- perhaps as much as ten times higher than it was in Ann Arbor. We pay city taxes. And, of course, there's the inflating cost of gasoline -- fortunately we don't have to use much gasoline -- and food. Saginaw is a troubled city.

Telecommuting is what made this whole venture possible. We are here now. I am not aware of much of my kind of work in the area, although I will be looking. I am willing to commute. When I lived in Ann Arbor, if I found myself between jobs, which happened a couple of times, I was occasionally able to find work with a technical temp firm. I would wind up commuting to Dearborn, about 30 miles one way, to work as a test engineer for Visteon, or write documentation for Delphi, or some similar project.

That commute was not fun, but it was doable, and that work kept us afloat while I looked for permanent work. But now Dearborn is 105 miles away, not 30. I don't think I can make that work. That would be over three hours of driving a day, and a huge, huge chunk of my paycheck would be needed to cover gas.

Can we even sell this house if we need to? It could be very difficult to do so. And if we moved, where would we move to? So, my first choice would be to telecommute again, at least primarily.

We will be eligible for food assistance. My wife and I have been feeding our family -- now a family of seven -- pretty much from scratch with basic ingredients for a number of years now, so we are very familiar with lentils and beans and rice, roasting whole chickens, saving the schmaltz, and stewing the carcass and bones in a slow cooker with our onion peels and vegetable ends to make broth, which becomes soup. We buy the four-pound cans of tuna and bulk packs and produce by the case. I don't think trying to live on food assistance will be a big problem; we should be able to eat pretty much like we always do, although we won't be able to get pies once a week from our local diner, or go out to eat at all. That's been only an occasional treat -- pizza a couple times a month, or my wife and I would go out for a date and get a meal. That's over for now. I can live with that.

To qualify for food assistance, we need to only have one car. So we've got to get rid of our second car. It isn't much of a car -- a 20-year-old station wagon. We don't take it on the freeway because it has a tendency to break down. The thing is, in a typical day we don't actually use both cars, but if I am actually commuting to Lansing, I feel better knowing that she can get a kid to urgent care or buy groceries. It is something we can technically live without, though, so it will go.

This morning I got on Michigan's online system and filed for unemployment compensation. The coverage maxes out at $362 a week. The last time I used the system was 2005, and the coveraged maxed out at $362 a week then, too. So it appears the numbers have not been adjusted for inflation or cost of living increases in any way.The paperwork says I can claim this benefit for a maximum of 14 weeks. That will be enough per month to pay just a little bit more than our mortgage, insurance, and one monthly debt payment that comes out of the same account, so I set it up to go directly to that account.

It will not cover any other things that are non-optional. That list of "any other things" includes, in order of dollar amount: heat and electricity; medical co-pays; our life insurance; our car insurance; a couple of small debts; and a storage unit down in Ann Arbor that still holds some of our furniture and personal effects. There are some others. I have to figure all that out this week. Everything else has to go.

We are eligible for COBRA -- extending our health insurance, which ended last Friday. The payment would be over $1,500 a month. I can't swing that. Even the co-pays can really add up for a family of seven. I am very fortunate in that I don't really have any medical issues. My weight is pretty good, I don't take any pills regularly other than vitamins. But the stress of a situation like this is certainly not going to help.

It's easy to get caught up in self-recriminations and what should-have-been. Yes, we should have a lot more in savings. We don't. I should have been trying to nail down another job well before now. I didn't. We'd be better off if this had happened in the summer, when our energy bills are low, rather than coming after several months of huge energy bills. Fortunately we will be able to turn the heat off entirely in a few days since the risk of freezing pipes will be over.

There are a few things I can probably sell relatively quickly to raise a little cash. I'll do that, but I don't want to get distracted into spending days of effort that should be spent on the job search. Used guitars and music gear don't go for nearly what one might initially think it should, unless you were fortunate and had a piece that is now considered collectible or is extremely high-quality; most of my stuff isn't. 

Selling my computer equipment would be eating my seed corn. I use it to earn money. And I don't think anyone wants to pay me much for a cassette deck or a twenty-year-old 20" tube TV. Mostly, I just need a job. A good job. I'm trying to stay focused on positive solutions rather than just worrying about just how badly things could go for us, and how quickly -- although we have to start considering those options, too.

Thursday, March 07, 2013

Paul's Résumé, 2013-03-07

Paul R. Potts


Employment in software development commensurate with my experience, particularly an opportunity to apply recent developments in functional languages and embeddable scripting languages to complex problems; continuing to develop the depth and breadth of my understanding by solving real-world problems.

Summary of Qualifications

  • Extensive experience developing software in C, C++, and a variety of other languages ranging from DSP and microprocessor assembly languages to scripting and functional languages
  • Areas of special interest: embedded systems development; DSP firmware development; driver development; object-oriented design; graphical user interface design; digital audio; managing legacy code
  • Deep and broad understanding of programming architectures, from embedded systems without operating systems to kernel drivers to applications, with development experience across the Macintosh, Windows, GNU/Linux, Java, embedded, and handheld ecosystems
  • Technical communications (documentation, presentations, mentoring, and training)
  • Experienced telecommuter with dedicated home office suite

Employment History

2005-2013: Senior Software Engineer, Lectronix, Inc., Lansing, MI
  • Developed server code to integrate the Garmin GVN-52 navigation product with the Navion R5000 RV Infotainment system; developed server code to manage audio and discrete I/O control in multiple products; developed driver code for TI SAA7709 DSP and TI TLV320AIC3201 audio CODEC for the Lectronix T7000 heavy truck system; wrote driver and firmware for the TI TMS320C6727 DSP for use in the Rockwell-Collins iForce system.
  • Tools used: TI Code Composer Studio; Spectrum Digital XDS510 USB JTAG Emulator; QNX Momentics IDE; Microsoft Visual C++; GNU/Linux; Python; Haskell; TWiki; Mantis; Subversion (command-line and GUI tools); Visio; Graphviz; BOUML.
2005: Senior Software Engineer, MicroMax, Inc., Canton, MI
  • Tested a Sirius satellite radio receiver (SDARS/RDAR) working at Visteon in Dearborn, MI for PAG (Premiere Automotive Group).
  • As lead technical writer and editor, developed extensive documentation for a library of Delphi’s embedded C code.
  • Tools used: MicroMax MxVDev; Microsoft Visual Basic (Visual Studio .NET IDE); Microsoft Visual C++; Ruby; Understand for C/C++; QA-C; Oasis Optolyzer; Rational ClearCase and ClearQuest; Microsoft Word; Visio.
2001-2004: Software Developer, Aardvark Computer Systems, Ann Arbor, MI
  • Developed the MacOS X PCI card kernel driver for Aardvark audio cards; developed Qt-based cross-platform GUI control panel for the flagship Direct Pro Q10 product; completely rewrote MacOS 9 drivers for Aardvark audio cards; rewrote, debugged, and optimized firmware (using C and assembly language) for the Motorola 56301 DSP.
  • Tools used: Cygwin; Motorola DSP compilers; Link-56K serial DSP debugger; Hewlett-Packard logic analyzer; Metrowerks CodeWarrior; Onyx Spotlight; Python; Gwydion Dylan; CVS; ViewCVS; Installer VISE; Project Builder (now XCode); Qt GUI framework.
2001-2002: Senior Consultant, InterConnect of Ann Arbor, Inc., Ann Arbor, MI
  • Java development: improved, debugged, and extended a data-import process for commercial web applications, using refactoring methodologies
  • Tools used: IBM VisualAge for Java; GNU/Linux; Oracle; JDBC; XML; Perl; CVS; Bugzilla; Visio; JVISION; TOAD; SQL; PostgreSQL; UML.
1996-2000: Programmer/Analyst II and Systems Research Programer III, Health Media Research Laboratory, University of Michigan Medical Center
  • Led technical aspects of Health Media Research Lab during early growth; recruited, interviewed, supervised, trained, and evaluated technical staff; developed a survey engine for the Apple Newton; led port of this survey engine to Apple WebObjects using Java and GNU Kawa (Scheme); led development of interactive multimedia program on Cancer and Genetics, integrating the work of graphic designers and writers; co-developed an application to generate tailored health information booklets using color laser printers; co-designed internal QA process; gave presentations on software development topics including user interface design, XML, and dynamic languages.
  • Tools used: Macromedia Director; Adobe Photoshop; Quark XPress; TestTrack; Newton Toolkit; CodeWarrior (C++); AppleScript; Visual BASIC; Perl; Scheme (GNU Kawa); Java; XML; WebObjects; UML.
1994-1995: Software Engineer, Fry Multimedia, Ann Arbor, MI
  • Co-developed a CD-ROM business directory with a custom search engine, user interface, and compression algorithms; developed prototype Apple Newton and Macintosh applications; developed early commercial web sites using HTML and Perl CGI scripts.
  • Tools used: Visual C++ 1.5; CodeWarrior; MKS RCS; HTML; PGP; Perl; Newton Toolkit.
1991-1993: Office of Instructional Technology, University of Michigan, Ann Arbor, MI
  • Worked with faculty and instructional designers to develop instructional multimedia, from paper prototypes to finished programs, incorporating formal usability testing; produced and edited instructional video materials; taught ToolBook programming classes; wrote newsletter articles; performed evaluation and pre-release testing of Windows 3.0, Macintosh System 7.0, IBM OS/2, QuickTime, and other technologies. Completed projects include a simulation of an audiometer, a videodisc-based program for teaching side effects of antipsychotic medications and the Velocity Manufacturing Corporation case study, which won a New Media INVISION silver medal in 1994.
  • Tools used: HyperCard; SuperCard; THINK C; THINK Class Library; ToolBook; Visual BASIC.

Miscellaneous Work

  • Developed a Windows installer package for a commercial Excel plug-in using Installer VISE for Windows.
  • Helped develop Monsanto’s prototype Infielder crop records system (an early Newton vertical market application).
  • Developed an early prototype application for Windows for Pen Computing.
  • Developed survey and report generation software for the National Science Teacher’s Association, targeting IBM PC and clone systems running MS-DOS, using Borland Object Windows Library (OWL) (C++) and Visual BASIC for MS-DOS.
  • Wrote several published instructional articles on Macintosh and Newton development (Washington Apple Pi newsletter, MacTech magazine, and PIE Developer magazine).


1989: B.A., English and Computer Science, The College of Wooster, Wooster, OH
  • Graduated with honors
  • First prize, the Stephen R. Donaldson Prize for Fiction
  • Worked with a mathematics faculty member to develop LimCon instructional program for teaching calculus concepts of limits and continuity, in HyperCard with custom XCMDs written in THINK C.
  • Worked as a writing tutor, computer consultant, and WCWS-FM radio disk jockey and production manager.
  • Completed a paid internship in which I developed software, newsletters, training courses, and a book on networking for Academic Computing Services.

Publications, References, and Salary Requirements

Provided upon request.