Improvement in PCB skills

July 7th, 2017 Comments off

About a year and a half has gone by since I wrote about my experience making a cheap PCB, and I’m happy to report that I’ve progressed considerably in the art since then. In fact, when I go back now and look at that design and read that post, I can’t help but cringe a little bit. A part of me finds it difficult to believe that I was so naive so recently. However, I’m glad I wrote that post, and I plan to leave it up, because seeing it serves as a reminder that I am still learning, and moreover, it acts as a check on my ego: I don’t know everything.

As with most things in life, the hardest part was doing it the first time. The half-dozen or so PCBs I’ve designed since then have become increasingly capable and yet more straightforward. They have gained a certain elegance (to my eye) that was completely lacking from my first attempt. I’m beginning to understand what makes a PCB beautiful, and I’m starting to get a handle on creating beautiful designs myself.

The design I am most pleased with at the moment is a board for my project making the old NES game Duck Hunt work on modern LCD TVs. The board matches the form of the board originally found in the Nintendo Zapper (the “light gun”), except with more computing power than the NES itself possesses. The old PCB is removed from the Zapper, and this one is installed in its place.

Replacement board for the NES Zapper to make Duck Hunt work on an LCD TV

Replacement board I designed for the NES Zapper to make Duck Hunt work on an LCD TV

The board features mostly surface-mount construction, some fancy analog circuitry to condition the signal from the photodiode, and a microcontroller to do all of the heavy lifting. The output is a signal that appears to the NES like the one that came from an unmodified Zapper.

As I’ve said before, I like to look back at myself on a rolling six-month basis and see improvement. If I don’t think that my old self from six months prior was at least a little naive and stupid, relative to my present-day self, then I haven’t been learning enough. I’m happy to say that I’ve met that standard in my circuit design and PCB skills.

Elk hunt

October 28th, 2016 Comments off

I’ll admit: when Tyler and I went elk hunting last year in western Colorado, we were a bit under-prepared. It’s probably a good thing that we didn’t harvest an elk then. Even the mule deer buck that we saw — but didn’t take, lacking a deer tag as we were — would have been a challenge to handle properly. This year was different.

This year, we had more firepower: two rifles instead of one. This year, we had a better season: “1st Rifle” instead of the much later and higher-trafficked “3rd Rifle”. This year, we had a better spot: near Yampa, Colorado in a game unit (GMU 231) with a history of excellent success rates.

Perhaps most important of all, this year we had more time. Whereas last year had been a quick overnight, this year we spent three days in the country.

That time began with a three hour drive from Denver, lunch at a small-town diner in Yampa that had friendly bad service, and a drive deep into the nearby Routt National Forest. Once we’d set up camp — just a tent, none of that RV nonsense — we set out for a late-afternoon hike.

Rifles in hand, orange on our heads and backs, we began trudging cross-country through the forest. The goal was to reach a series of clearings that had appeared on satellite images of the area, connect with a trail near the Flat Tops Wilderness boundary line, and continue pushing to higher elevations in the wilderness in search of bull elk. Very little snow had fallen that season, and daytime highs were still in the 60s, so we thought the elk were still likely to be up high.

We hiked, and the hours sped by. No elk.

Despite a lack of animals, there was an abundance of elk sign. Scat and tracks littered the ground, much of it appearing to be relatively new. We felt optimistic we were going to find a big bull every time we glassed a new clearing. That optimism continued right up until twilight and the end of legal hunting for the day, but the only woodland mammal we had seen was a porcupine. We began the multi-mile hike back down the mountain and out of the wilderness towards our camp. The increasing darkness was a bad time to discover that my headlamp batteries were nearly dead.

Flat Tops Wilderness at sunset

Flat Tops Wilderness at sunset, about 10500 ft in elevation and several miles into the hunt

Fortunately, Tyler’s headlamp was bright, so he led the way on the trail. As the first hour of the return journey bled into the second hour, I felt myself becoming increasingly drained. That was compounded once we exited the forest on a road and found ourselves still over a mile from our tent. The wind hadn’t been noticeable in the forest, but once on the road, the 30-50 mph gusts were strong enough to send my hat flying off of my head. Oh — and the road to camp was uphill the entire way.

By the time we made it back to camp, elkless and hours after nightfall, I was so exhausted that I didn’t even want to eat dinner. All I wanted to do was crawl into my sleeping bag and shut my eyes. Lucky for me that Tyler had the presense of mind and stamina to make burritos and tea. Hot food and drinks have an amazing way of reinvigorating the body, and I felt immensely better afterward.

It’s probably for the best that we didn’t take an elk that evening; it would have been a very late night, and stamina would have been an issue.

The winds shook the tent through the night, and their howling was punctuated by occasional sharp crashes as nearby trees and branches thundered to the ground. Sleep was minimal.

Yet, once 5:00 a.m. arrived, it was not particularly hard to get going. Yes, we were both sore, but we were also excited for the possibility of a successful hunt. Oatmeal and tea served as a quick breakfast, and then we drove my Outback down the road a ways to try a different spot. We were hiking in before sunrise.

After following a trail through the forest for a couple of miles, we found a multi-acre clearing on a grassy steep hill, so we left the trail to investigate. About 100 yards up the hill from the trail, we sat down on some rocks to glass the area; that location offered not only a view of most of the clearing but also of nearby ponds and more distant fields. Several quiet minutes went by before Tyler quietly yet excitedly whispered “Look!” and pointed to a mule deer. The young buck was about 150 yards away in the clearing and was moving uphill. He stopped for a moment, broadside to us, and then continued. Not long after that, several orange hats became visible in the woods; perhaps the buck had caught wind of those hunters and been pushed away from them.

We hunted some more in the immediate area before starting the hour-long hike back to the car for some lunch. All the way back, friendly sunshine was interspersed with angry dark clouds, but nothing save for a few flurries fell, and the temperature remained pleasantly cool. We took lunch in camp chairs by the car and packed up when the sun seemed unlikely to come back for the day.

Snow began to fall. Warmer jackets came out. We drove to the end of the road, Stillwater Reservoir, to start an afternoon hunt.

On the drive there, we had a brush with calamity. I was taking the washboarded dirt road a little — ahem — quickly, and an unexpectedly large bump suddenly jarred Sam. The TPMS light instantly lit up on the dashboard. A walk around the car showed no obvious problems except for the passenger-rear tire having a somewhat lower pressure than the others. I decided to check it again in a few minutes and drove on.

The snow was starting to accumulate by the time we made it to our trailhead. We decided to take only one rifle, my stainless steel Weatherby .308, since the other rifle, a 7mm Rem Mag, was not stainless and would thus be more vulnerable to rust. Thus equipped, we set off on the trail, which followed the reservoir for a short while before turning uphill into the wilderness.

Tyler looking across a lake during the hunt

It was a really nice hike, and it was easy to explore areas off of the trail, but we saw exactly zero animals of any sort. In hindsight, they were probably hunkered down out of the snow. Just before the Devil’s Causeway, we turned around. The snow was coming down in earnest by that point; our tracks from the hike up were quickly becoming nearly invisible.

Back at the car, Sam’s tire had lost a little more air, but not too much, so I felt comfortable driving back to camp.

It was a properly cold night. Inside the tent, it remained just above freezing, but it was probably in the mid-20s outside. In the morning, Tyler and I lazily let dawn arrive before mustering the courage to get out of our warm sleeping bags and greet the day. Around that time, we heard the sharp crack of a rifle shot. It would be the only one we would hear on the entire trip.

With the temperature low and having hunted the nearby terrain already, we struck camp and headed back into town for breakfast at the diner.

When we walked in, it was obvious we weren’t the only ones with that idea. Pretty much every head in the place was covered with a blaze orange hat. Service was again friendly-bad, and I’m not sure a big-city health inspector would have been thrilled with their methods, but it was a nice change of pace from camping.

On the way out, we struck up a conversation with an older hunter who seemed to have some experience with the area. It seems that we weren’t the only ones to get skunked. According to him, in previous years his friends had filled their tags on the first day in that unit, but something was different this year. He hadn’t seen anything, and while his friends had seen an elk or two, they had apparently missed shots on their only opportunities. I felt a bit better knowing that the problems weren’t unique to us.

Still would have been nice to get an elk though. Next year!

Track day

April 29th, 2016 Comments off

For the first two laps on my first day ever at a race track, my instructor Dan took the wheel. He had gone around High Plains Raceway times beyond count, and his customized helmet and calm command of the Porsche inspired nothing but confidence.

Confidence in his driving, anyway. As for the prospect of my own turn in the driver’s seat, I was trembling — literally shaking — with a mixture of fear and excitement. The purpose of Dan piloting the first couple of laps was for me to get a feel for the particulars of this specific track, but any mental notes I might have wanted to take were displaced by other concerns. Everything was happening so quickly, and there were so many cars, and there was so much to think about, and, and, and…

Suddenly, we were entering the hot pits. It was time for me to drive.

Map of High Plains Raceway

My first attempts at new skills of all sorts have been invariably awkward. I might have researched them, talked about them, and watched them be done, but a chasm exists between book knowledge and first-person experience.

The trepidation about the track was not without cause. We would be traveling at triple-digit speeds and through tight curves. Mechanical problems usually sideline a few vehicles per day.  Car-to-car contact is very rare at these Porsche Club of America “high performance driver education” (HPDE) events but does happen occasionally. Every once in a great while, people are injured.

Still, the risk was low enough to be manageable, and safety was emphasized by everybody. It was not a race; the organizers were very, very clear about that. I used the event as an excuse to acquire an SA2010 rated helmet and FIA 8856-2000 rated gloves.

In the hot pits, Dan and I got out of my Boxster S, walked to the sides opposite where we’d been, and sat back down. Mirrors were adjusted, seat belts were fastened, and the intercom was hooked back up.

I checked for traffic, pulled out, reached the end of the pits, and joined the track-proper.

Those first few laps were a foggy blur. There was so much going on that I pretty much forgot to shift. Fortunately, the track was laid out such that it’s possible to do laps (albeit slow ones) in nothing but third gear. What I do remember was Dan providing useful pointers and encouragement throughout the 25-minute session and my ear-to-ear grin when time was up. I couldn’t wait to get back on the track for the next session.

My 986 Boxster S in the paddock wearing #22

That opportunity came a couple hours later after the other run groups had taken their turns. Another 25 minutes for me; roughly 10 laps, each a bit better than the previous. Thanks to Dan’s coaching, I gradually became more aggressive about maintaining speed and getting close to the edge of the track. I learned not to cheat the turns by starting them too early. I learned to appreciate the off-camber, decreasing-radius Turn 6.I learned that the brakes were capable of slowing the car from 108+ mph in an incredibly short distance at the end of the long straight.

The jitters subsided, but the smile was still there.

Soon, it was time for lunch. I chatted with my fellow drivers and discussed turns with Dan.

In the mid afternoon, there was more track time and more improvement. In between sessions, I watched the drivers in the faster run groups pilot their steeds around the tarmac. Though I had started driving only earlier that day, I was already able to pick up on things they were doing well and things they were doing sub-optimally. Some were taking inefficient lines. Some were delaying application of the throttle until well beyond the turns. Some would have been very slow had they not been driving very fast cars. Some were slow despite their very fast cars.

Me with my car in the paddock

As the sun approached the horizon, my final track session of the day began. The Boxster screamed its sonorous flat-six howl as the tach passed 4000, 5000, then 6000 RPM. The turns came up more quickly than they had in the morning, and I went through them with far greater confidence. Apexes were hit; downshifts were made.

The track, too, had evolved. In the run group just prior to my final session, a late-model Mustang had dumped a large amount of oil near Turn 7. The track crew did a good job of cleaning it up, but a substantial amount of oil absorbent was still on the asphalt when we got out there. It was a teachable moment: what to do when the ideal line is not an option for some reason. Dan’s wisdom proved accurate, and we got through the hazard with no issues.

Impossibly soon, time was up. I stuck my gloved hand out of the window in an upright fist to signal my exit from the track, drove back to the paddock, and gathered my things for the journey home.

My Boxster came through the day with no apparent damage. The tires had slightly less tread, and the wheels were sporting a thick layer of brake dust, but mechanically everything seemed to look, sound, and feel as it had in the morning.

I had a lot of fun. I’m looking forward to the next time I’m on the track.

Coloradans lack strong feelings about ColoradoCare

March 3rd, 2016 Comments off

This November, Colorado residents will head to the polls and be faced with a question possibly more important than who should be the next president: should Colorado implement single-payer healthcare?

I was curious about how likely that proposal, known as ColoradoCare (or Amendment 69), was to pass. Unfortunately, no opinion polls exploring that question have been performed, so no data was available. I set out to fix that.

First, some background. ColoradoCare is a single-payer healthcare proposal for Colorado residents that will be funded by increased payroll taxes. Proponents of the program expect it to cost about $25 billion in its first year, which is roughly the same as the entire current Colorado state budget. The new 10% payroll tax will be split 33/67 between employees and employers. It will cover all healthcare services, which will be provided with no deductibles and no co-pays. The proposed constitutional amendment was added to the ballot after supporters gathered 156,000 signatures in 2015.

Opposition to ColoradoCare has formed as a bi-partisan coalition. Opponents argue that the plan is expensive, unworkable, and shouldn’t be enshrined in the constitution. They point to Vermont as a place that considered a similar system only to see those plans collapse.

But what do the people think?

I investigated hiring a polling firm like SurveyUSA to run a poll, but the cost would have been four to five digits. I searched awhile for cheaper options. Eventually, I decided to run a Google Consumer Survey.

Google Surveys are those slightly annoying short questionnaires that some sites use to unlock things like articles or premium features. They are not proper opinion polls by any stretch of the imagination. However, there’s some evidence that those surveys can be reasonably accurate for predicting political outcomes. The sample population is reasonably random, and Google knows enough about individual internet users (gender, age, income) to allow some level of weighting.

For my survey, I decided to use a series of three questions. The first two would be screening questions to try to limit responses to likely Colorado voters:

  1. Are you residing/working in Colorado? (Yes/No/Prefer not to say)
  2. Are you likely to vote in the 2016 general election this November? (Yes/No/Prefer not to say)

The presentation order of the answers was randomized for each person. I wanted to ask “Are you a Colorado resident?” but that question got rejected by Google as being too personal; hence, the slightly strange “residing/working” phrasing of the first question.

If the user answered “yes” to each of the screening questions, they were presented with the real question:

  • Do you strongly favor, favor, oppose, or strongly oppose the proposed Colorado single-payer healthcare initiative known as ColoradoCare (also known as Amendment 69)?  (Strongly Favor/Favor/Oppose/Strongly Oppose/Don’t know)

For this question, the order of the answers was randomly reversed.

Here's what the main survey question looked like on a phone.

Here’s what the main survey question looked like on a phone.

Google ran some tests, came back with a quote (per completed questionnaire), and asked me how much I wanted to spend. The per-response cost was about an order of magnitude lower than a proper poll, but still a bit expensive, so I went with 100 responses. For voter turnout of 2.6 million (roughly true of Colorado), 100 responses provides +/- 10% confidence intervals at a 95% confidence level — enough to get a feel for things.

I ran the poll starting yesterday and going into today (March 2 – March 3, 2016). This morning, Google emailed me to tell me that the results were ready. I clicked the link with bated breath.

Here’s the summary of the results. About half of the population doesn’t have an opinion about the proposal or is unfamiliar with it. Among the half that has an opinion, there is a fairly even split between those in favor and those opposed.

Results of my survey (March 2-3, 2016, web poll of 100 LV)

Results of my survey (March 2-3, 2016, web poll of 100 Colorado likely voters)

Interestingly, the error bars came in right about as expected, roughly +/- 10%. Here’s what the results looked like if you grouped the favor/strongly favor and oppose/strongly oppose options. Also, feel free to look at the raw data, which includes demographic information of the survey respondents.

Now, there are a huge number of issues with this survey: small sample size; bias towards people who use the internet; under-representation of the poor, wealthy, and elderly; and so on. Still, I think a couple of conclusions are reasonable:

  1. A sizable portion of the population is available to be swayed for or against the amendment
  2. The margin of passage or rejection at the polls is not likely to be as large as some commentators had hoped or feared.

Should be interesting to see how these results compare with the first proper polls on the subject, which I expect will happen sometime this summer.

UPDATE June 7, 2016: The political futures market PredictIt.org now offers futures contracts for the ColoradoCare question. For those unfamiliar with the concept of a political futures market, it’s a way for people to bet money on whether or not ballot measures will pass, which people will get elected, and so on. The idea is that the “wisdom of crowds” can provide insight into the likelihood of future events. The market for the ColoradoCare question is new as of today, so it’s too soon to gain any insight from it. Still, in the absence of better polls, this market might be the best gauge of whether Amendment 69 will pass.

Finding valid vanity license plates

January 31st, 2016 Comments off

Vanity license plates are frivolous, but life is often made more enjoyable by frivolities. The biggest problem with obtaining such a license plate is finding a combination of letters and numbers that is desirable but not yet taken. It’s a task made harder by the states, many of which keep the availability of a particular combination a secret until you’ve gone through the hassle of applying for it. Worse, some states, such as Colorado, require that the application be on a piece of paper that’s physically mailed in, which means that the cycle between applying and getting rejected will take weeks at best.

A few years ago, I decided I wanted a custom plate for Sam, my Subaru, in honor of the epic road trip I was about to undertake with him. I was living in Minnesota at the time. When I had renewed the registration for my other Subaru, I had noticed that the registration tax could be looked up using just a license plate. If the plate was unregistered, an error would be returned to that effect. Bingo! I went through a few words, and soon I discovered a great option: “EXPLORE”.

Sam the Subaru with his

Sam, caked in Canadian bugs, with his “EXPLORE” vanity license plate

Jump ahead to last summer. I tried to find a similar trick for Colorado, but none of the official state websites would give up any information with only a license plate. I didn’t want to go through the cycle of application and rejection multiple times by mail. Fortunately, another option became apparent.

I had purchased an “unlimited” subscription to Carfax for vehicle history reports when I was looking for a Porsche to buy. A report could be obtained by entering a car’s VIN or — critically — by entering a car’s license plate. I immediately recognized the potential. I pulled up a list of Colorado’s vanity plate requirements and started trying various real words and clever corruptions.

After many attempts, I found a few options that would have worked for Sam or for the Porsche, like “FLAT6”, and a few others that would have been great for one of them, like “SUBARU”. I filled out the paper application, mailed it in, and a few weeks later… got rejected. The reason given was, roughly, “Not an allowable combination.” In other words, the combinations did appear to be available, but they were considered invalid. The fact that they clearly met the vanity plate requirements was apparently lost on the person processing the requests.

Maybe I’ll try again this year.