Tuesday, June 21, 2016
Backyard Landscaping - Gravel Removal
Progress from last nights efforts. You can take pictures like this at 9pm in the evening when you live up north. Also, you can stay up later to work as well. I guess that's a bit of a two-edged sword.
Maybe another hour or two and I'll have it all out.
Labels:
Backyard Renovation,
Home Improvement,
Photographs
Saturday, June 18, 2016
Backyard Landscaping - Basketball Court Asphalt Removal
When we purchased this house, the backyard was mostly a basketball court. Wanting to have more than asphalt to enjoy in the summer, we have been planning on how to improve things. A few weeks ago, that process began.
First, here's a very mediocre picture of what we were starting with.
I was getting some help with the asphalt (and gravel) removal and wanted to estimate how long I thought the job would take so I marked off a small fraction of the court and timed how long it took me to get it done. Verdict, 24 man-hours of labor to removal the full 30' x 40' court.
The help came and over the course of two evenings we got all the asphalt up; they weren't interested in sticking around for the gravel so that's what I've been working on infrequently over the past week or two.
We decided to keep a key-sized piece of the asphalt along with the fancy, very sturdy, and expensive basketball hoop. As I've been removing the several inches gravel that was laid beneath the asphalt I've been piling it in the key for use later in the project. The area on the left that is mostly brown has had the gravel removed (more or less); the area on the right that is gray has yet to be addressed. I'm guessing is will be another two hours to get it done.
Stay tuned for further pictures of the yard as the project slowly evolves.
Labels:
Backyard Renovation,
Home Improvement,
Photographs
Thursday, May 19, 2016
Canonical OK Go Videos
You know OK Go; they're the band that does the creative and adventurous music videos. I've linked to their videos in the past and I will do so again but this time in a much more rigorous manner. Which is to say I intend to provide a chronological and canonical list of their videos. Note that this list will not include all of the music videos attributed to them, just the real ones, if you know what I mean.
A Million Ways
A Million Ways
Here it Goes Again
This Too Shall Pass (Marching Band)
This Too Shall Pass (Rube Goldberg)
End Love
White Knuckles
Last Leaf
All is Not Lost
Needing/Getting
The Writing's on the Wall
I Won't Let You Down
Upside Down & Inside Out
Saturday, April 16, 2016
Status Light
When moving into our new building at work, we were all given little status lights to place on the top of our cubicle walls; they looked like this:
And that's when I decided to make my own version of the status light.
In what is surely the least attractive way of doing this, I've mounted a color sensor over that double-arrow icon and use it to determine my current status. With that information, I drive a string of RGB LEDs to the appropriate color. My cube looks something like this and I've installed the LEDs so they shine on frosted glass above my desk.
Details:
You plug on end into your computer and it looks at your Lync status to determine if you are available, busy, or away from your computer. They are a handy way to determine at a glance if somebody is available for an impromptu meeting.
And they only work on Windows' computers. Having a Mac, I've been out of luck.
Recently fed up with the performance of Lync as my softphone, I requested a desk phone and the one I got (Polycom CX600) logs into Lync from the phone. Furthermore, it has a little circling arrow icon on the phone that lights up with the appropriate status color.
In what is surely the least attractive way of doing this, I've mounted a color sensor over that double-arrow icon and use it to determine my current status. With that information, I drive a string of RGB LEDs to the appropriate color. My cube looks something like this and I've installed the LEDs so they shine on frosted glass above my desk.
Details:
- Color sensor is TCS230. You toggle two control (S2 and S3) pins to select the color to measure and it varies the frequency of a square wave depending on the intensity of that light. You can reduce the overall frequency of the device (pins S0 and S1) to a few different levels and I choose the lowest scale to help make the measurement easier. Measuring frequency is done by...
- ... Arduino's have a pulseIn function that can be used to measure the length of half a period of the output frequency. When a given color is very dark the output frequency is low and the pulse length is long. When the color being measured is bright, the frequency is high and the pulse length is short. Based on these measurements, I can classify the input color as red, green, or yellow and set the output PWM period of three transistor driving those colors on..
- ... two meters of RGB LEDs. These are 12V LEDs and they are all one color, different than those that I used for my Lorenz project. I used some higher-power transistors I have laying around MPT16N25E to drive them. Maximum current for these lights is 2A which is being split across three transistors. That current would only show up for maximum bright "white" light (full red, green, and blue power) so I don't really have much to worry about.
- I used a a 250V 2A polyfuse for protection on the 12V supply. The power supply plugs into the Ardiuno barrel jack and then I tap the "Vin" pin for the 12V I need for the LEDs. The on-board polyfuse protects the Arduino but not the transistors and LED string.
The system has been running for a week or two without much incident. The only tricky part was getting the sensor firmly attach to the light on the phone so the color measurements were consistent. I've been getting good feedback from my co-workers, especially those that realized it was more than decoration. Overall, I think we could call this a success.
Here's the schematic, picture of the board as completed, and source code:
Here's the schematic, picture of the board as completed, and source code:
// Used to measure the status light color off a Lync-enabled desk phone and drive RGB LEDs to the same color
// 2016 Trevor Hardy
const int pinTCS230_S2 = 3;
const int pinTCS230_S3 = 4;
const int pinTCS230_Out = 2;
const int pinRedLed = 9;
const int pinGreenLed = 10;
const int pinBlueLed = 11;
const unsigned int max_width = 65000; //determined experimentally.
unsigned int PW_divisor = 0;
unsigned int pulseWidth = 0;
int TCS230_red = 0;
int TCS230_green = 0;
int TCS230_blue = 0;
int red_out = 0;
int blue_out = 0;
int green_out = 0;
// the setup routine runs once when you press reset:
void setup() {
Serial.begin(250000);
// declare pin 9 to be an output:
pinMode(pinRedLed, OUTPUT);
pinMode(pinGreenLed, OUTPUT);
pinMode(pinBlueLed, OUTPUT);
pinMode(pinTCS230_S2, OUTPUT);
pinMode(pinTCS230_S3, OUTPUT);
pinMode(pinTCS230_Out, INPUT);
PW_divisor = max_width/256;
}
// the loop routine runs over and over again forever:
void loop() {
read_TCS230();
Serial.print("Red: ");
Serial.println(TCS230_red);
Serial.print("Green: ");
Serial.println(TCS230_green);
Serial.print("Blue: ");
Serial.println(TCS230_blue);
if ( TCS230_red > 200){
//Red
red_out = 127;
green_out = 0;
blue_out = 0;
Serial.println("Red\n");
}
else if (TCS230_green > 120 && TCS230_red < 120 ){
//Green
red_out = 0;
green_out = 127;
blue_out = 0;
Serial.println("Green\n");
}
else if (TCS230_red > 150 && TCS230_green > 150){
//Amber
red_out =200;
green_out = 63;
blue_out = 0;
Serial.println("Amber\n");
}
else {
red_out = 0;
green_out = 0;
blue_out = 0;
Serial.println("Off\n");
}
analogWrite(pinRedLed, red_out);
analogWrite(pinGreenLed, green_out);
analogWrite(pinBlueLed, blue_out);
//delay(1000);
}
void read_TCS230()
{
digitalWrite(pinTCS230_S2, LOW);
digitalWrite(pinTCS230_S3, LOW);
//pulseWidth = pulseIn(pinTCS230_Out, digitalRead(pinTCS230_Out) == HIGH ? LOW : HIGH);
pulseWidth = pulseIn(pinTCS230_Out, LOW);
if (pulseWidth == 0){
pulseWidth = max_width;
}
//Serial.print("Red pulsewidth: ");
//Serial.println(pulseWidth);
TCS230_red = 255 - (pulseWidth/PW_divisor - 1);
digitalWrite(pinTCS230_S2, HIGH);
digitalWrite(pinTCS230_S3, HIGH);
pulseWidth = pulseIn(pinTCS230_Out, LOW);
if (pulseWidth == 0){
pulseWidth = max_width;
}
//Serial.print("Green pulsewidth: ");
//Serial.println(pulseWidth);
TCS230_green = 255 - (pulseWidth/PW_divisor - 1);
digitalWrite(pinTCS230_S2, LOW);
digitalWrite(pinTCS230_S3, HIGH);
pulseWidth = pulseIn(pinTCS230_Out, LOW);
if (pulseWidth == 0){
pulseWidth = max_width;
}
Serial.print("Blue pulsewidth: ");
Serial.println(pulseWidth);
TCS230_blue = 255 - (pulseWidth/PW_divisor - 1);
}
Tuesday, March 15, 2016
Antenna Pre-amp - Part 3 - Switch Board and Antenna Jacks
Last time I left-off having built a second version of the pre-amp proper using the designers suggested layout and the circuit worked much better (as measured by the steady-state current). Now onto the rest of the pre-amp box.
Again, taking cues from the original design, I decided to include attenuators, both before and after the amplifier. To do this, I used one of many calculators online to calculate the resistors for a T-style attenuator. The resistors were ordered as a part of the original pre-amp parts order. Metal film, 1%, still pennies a piece. I also decided to include an antenna switch in the design.
When it came to construction, wary of my previous inattentiveness to layout, I wanted to do the best I could to keep the leads short and provide a solid ground plane, even just for the attenuators. I decided to use a strip of PCB scrap as the common ground throughout the signal path. I also decided, in what is likely an abundance of caution, to use RG-316 coax between the attenuators.
The attenuators would be switched, and I used the leads of the switch as mounting points for the resistors. The switches were DPDT, bypassing the attenuator in one position and routing through it in another. Only the signal side of the attenuator was switched, the ground side was directly connected to the PCB strip.
Using an existing enclosure needing to finally have a project to house, I prepped the front plate for mounting the switches, punching guide holes for all the switches and drilling them out with a hand drill. The results were not the prettiest but most of the failings in my handiwork are hidden by the switches mounting hardware.
Here are the results as seen from the inside of the enclosure.
The back side of the enclosure was used to mount the three input antenna jacks, the output jack, and the power jack. This was all much simpler; just drilling holes and mounting the hardware; the coax connections come later.
Saturday, January 16, 2016
Fixing the Vacuum Cleaner
Our vacuum cleaner stopped running for more than a second or two at a time so I tried fixing it.

After all of this work, I determined the motor was overheating for unknown reasons, even when no external load was being applied. Verdict: dead vacuum cleaner.
And I don't even get any spare parts out of this mess, just a pile of plastic to put in the trash.

After all of this work, I determined the motor was overheating for unknown reasons, even when no external load was being applied. Verdict: dead vacuum cleaner.
And I don't even get any spare parts out of this mess, just a pile of plastic to put in the trash.
Sunday, December 13, 2015
Antenna Pre-amp - Part 2 - Second Attempt
As I noted in my last post, I was fairly sure my pre-amp was not working correctly and I was going to try to recommended layouts from the designer (as indicated by another hobbyist who drew up the layout and posted it here). Here are the two layouts, side by side:
The big difference between the two designs is the amount of ground plane on the top layer. Both designs have the entire backplane acting as a ground and I mistakenly thought this would be enough. The designer's layout has most of the top layer also acting as ground. And as you might suspect, it made a world of difference. 80mA steady-state current (both with and without input and output termination) and cool to the touch with a nice, big heat-sink.

Its amazing to think that layout made that much difference but this is the world of RF where crazy things happen all the time.
My layout (1st attempt) |
![]() |
Designer's layout (2nd attempt) |

Its amazing to think that layout made that much difference but this is the world of RF where crazy things happen all the time.
Saturday, December 05, 2015
Rental Beast
I had a business trip last week to Seattle and due to my route cutting through the mountains in winter, I asked for an all-wheel drive rental car. What I got was a beast.

Aside from needing to get over the mountains, this was exactly the wrong car to drive in a dense urban area, park in a garage with narrow spots, and try to make get back home through rush hour traffic.
But this is not a story about the mismatch between large vehicles and Seattle. This is a story about buttons.


I have never been a car with so many buttons. Quick, think of a feature a "fancy" car might have.
I'm not talking about things like powered seats, sunroof, and Sirrus/XM radio. Or even things like heated leather seats, built in GPS, back-up camera, push-button start or triple-zone climate control.
I'm talking about dynamic cylinder shut-down to increase fuel economy (we got over 19 MPG on the highway), cooled leather seats, and automatic windshield wipers that figured out how often they needed to swipe on their own.
And a vault hide your phone and connect to the media system while your in the store? It had that too.


Aside from needing to get over the mountains, this was exactly the wrong car to drive in a dense urban area, park in a garage with narrow spots, and try to make get back home through rush hour traffic.
But this is not a story about the mismatch between large vehicles and Seattle. This is a story about buttons.


I have never been a car with so many buttons. Quick, think of a feature a "fancy" car might have.
I'm not talking about things like powered seats, sunroof, and Sirrus/XM radio. Or even things like heated leather seats, built in GPS, back-up camera, push-button start or triple-zone climate control.
I'm talking about dynamic cylinder shut-down to increase fuel economy (we got over 19 MPG on the highway), cooled leather seats, and automatic windshield wipers that figured out how often they needed to swipe on their own.
And a vault hide your phone and connect to the media system while your in the store? It had that too.

Friday, November 20, 2015
Air Conditioner Measurement - Part 1 - First Cut
I was getting ready to update the hardware on my air-conditioner measurement system when I realized that I had never written about the initial set-up. So, several months after the fact, here's what I've been doing.
In my previous temperature measurement system, I was able to fairly easily measure the air-conditioner state by tapping into the relay that activated the central circulation fan. In this new house, that was not going to be so easy so I decided to try something more direct: measuring the condenser fan in the outdoor unit. I thought about tapping into the relay on that fan unit but that relay switches 240V and I didn't want to have to worry about making sure the wiring was properly protected for that higher voltage. Instead, I decided to measure the air pressure change caused by the fan turning on.
To do that I employed a BMP180 which measures both pressure and temperature. I was able to get the sensor mounted on a little PCB and strap down an old milk jug to catch some of the air when the fan turns on, making a little pocket of slightly higher-pressure air. I wasn't sure if this was work but testing revealed the pressure increase was high enough for the sensor to clearly detect.
![]() |
Air pressure capture for the fan. I've pulled the system for maintenance and it isn't shown. |
I wanted to try to make correlations between outdoor temperature and air-conditioner run-time under the assumption that the air-conditioner would run longer when the outdoor temperature was higher. To do that, I employed one of the temperature sensors I previously used for indoor temperature measurement. Not being weather proof at all, I stuck it under the out-cropping on our house under, behind the air-conditioner. This is not ideal as it is very close to the ground (less than 6 inches of clearance) and natural air circulation is likely to not be very high. Its not great but it is out of the rain and is better than nothing. (I'm not able to use the BMP180's temperature sensor because the air blown by the air-conditioner fan will be hotter than ambient. The whole point of the outdoor half of an air-conditioner is to cool the hot coolant as a part of the thermal cycle.)
Since I don't have a real-time measurement system up and running to record the data collected, I decided to use an SD card logger commonly available for the Arduino platform. It is fairly easy to write specific values to the card and it includes a real-time clock to time-stamp each log entry. With this I measured the BMP180 pressure and temperature (the later just for fun), and the TMP36 outdoor temperature. I did this every 15 seconds and, through the use of an extension cord, was able to leave the unit plugged in, running indefinitely.
Here's the final schematic:
Here's the hardware, pulled out for maintenance:
![]() |
From left to right: Interface PCB for LEDs and TMP36 module, BMP180 module, SD card logger on top of an Arduino Uno, and TMP36 module. |
And here's the code. Not all of it is working at present, such as the time measurement, but the core measurement functionality has been working great.
Thursday, November 12, 2015
MIDI Controller
A nerdy friend of mine plays electronic keyboard at his church for Sunday morning services. He's expressed a desire to have some kind of controller he could use for the bulk switching of settings between or during songs. He knows that its very possible to do this with MIDI, the protocol designed for communication between electronic instrumentation. Lacking a convenient controller, though, it wasn't possible to actually make this happen.
For his birthday, I decided to make him an Arduino-based MIDI controller. Not knowing the exact use-case he had in mind, I tried to make it as generic as possible without getting caught up in feature creep. I decided to go with two foot pedal inputs, four LED outputs, a MIDI in, and a MIDI out.
Here's the schematic:
I spent a little bit of time putting in hardware switch debounce that ended up working pretty well. The foot pedal jacks had the extra contacts to indicate when the pedals are plugged in, allowing for some fancy software mode-switching if so desired. Not having any MIDI equipment, I have blindly implemented online schematics; let's hope it works. Oh, and due to the MIDI and the Arduino USB port using the serial port for communication, a hardware switch is needed to move the Arduino over into programming mode and switched back to run mode when its time to use the box.
So about the software. For better or worse, I'm leaving that largely up to my friend. I've stubbed in a lot of code to demonstrate functionality and I don't expect that he'll have any trouble making this do exactly what he wants but I feel a little bad that this isn't a fully-realized product. Thankfully he's a nerd and I expect he'll enjoy completing this last little step on his own. Plus he'll get to make it do exactly what he wants it to do. Nothing beats fully customized electronics.
Here's the assembled kit, all done up in a cheap enclosure I got off of eBay.
Saturday, November 07, 2015
Antenna Pre-amp - Part 1 - First Attempt
On the to-do list since we moved: get my amateur radio station set back up. We have a larger yard and a two-story house and I've been scheming of how to make best use of the space without running afoul of the wife, dogs, and neighbors. In the vein of taking baby steps first, I'm going to try putting in a shortwave listening antenna but rather than going up high like you might think antennas should, I'm going to be placing this one six feet or so off the ground along one of our fences. From what I've been reading, this style of antenna (something like a Beverage but not exactly) is very good and not picking up noise. It is also not very good at picking up radio signals but better at not picking up noise.
OK, let me try that again. The antenna reduces the amount of noise it picks up more than the amount of radio signals I might want to hear. This reduction in the signal-to-noise ratio is great but it has the side-effect that you need some way of boosting the signal back up to a useable level. To provide this boost I'm building a small amplifier called a "pre-amp" that will go in between my radio and the antenna.
The design I'm using is one I've found with extensive documentation. The designer, Larry (call sign W7IUV), has put a lot of time into building, testing, and documenting his work; this is very helpful for people like me who have not spent any time in building radio-frequency circuits before. In fact, I'm going to be copying an entire portion of his radio set-up by also building a few switchable attenuators like he has; I have no idea how effective the antenna and pre-amp will be.
After ordering the required parts and finding some cheap scrap PCB on eBay to use as the circuit board, I went to work making the cuts in the double-sided PCB to form the nodes in the circuit. The designer used a Dremel to make the cuts in his PCB but lacking such a tool, I used a utility knife. As you can see, mine didn't turn out super neat but it was good enough. (I took the picture after starting to populate a few of the capacitors.)
As you can see in the photo, the parts span the gaps in the copper, connecting the various nodes. The back side of the board is ground and I drilled a few vias to connect a few top-side ground pads to that larger ground plane. The RF-gurus say having a big ground plane helps reduce noise in the circuit; sounds good to me.
Here's what things looked like after I fully assembled the board:
(The components sticking out the sides are just resistors used in testing and not part of the pre-amp proper.)
Construction and testing of the circuit revealed a few problems:
OK, let me try that again. The antenna reduces the amount of noise it picks up more than the amount of radio signals I might want to hear. This reduction in the signal-to-noise ratio is great but it has the side-effect that you need some way of boosting the signal back up to a useable level. To provide this boost I'm building a small amplifier called a "pre-amp" that will go in between my radio and the antenna.
The design I'm using is one I've found with extensive documentation. The designer, Larry (call sign W7IUV), has put a lot of time into building, testing, and documenting his work; this is very helpful for people like me who have not spent any time in building radio-frequency circuits before. In fact, I'm going to be copying an entire portion of his radio set-up by also building a few switchable attenuators like he has; I have no idea how effective the antenna and pre-amp will be.
After ordering the required parts and finding some cheap scrap PCB on eBay to use as the circuit board, I went to work making the cuts in the double-sided PCB to form the nodes in the circuit. The designer used a Dremel to make the cuts in his PCB but lacking such a tool, I used a utility knife. As you can see, mine didn't turn out super neat but it was good enough. (I took the picture after starting to populate a few of the capacitors.)
As you can see in the photo, the parts span the gaps in the copper, connecting the various nodes. The back side of the board is ground and I drilled a few vias to connect a few top-side ground pads to that larger ground plane. The RF-gurus say having a big ground plane helps reduce noise in the circuit; sounds good to me.
Here's what things looked like after I fully assembled the board:
(The components sticking out the sides are just resistors used in testing and not part of the pre-amp proper.)
Construction and testing of the circuit revealed a few problems:
- The largest by-pass capacitor, a 4.7uF tantalum, shorted-out on me twice. I don't know why this is happening. The input voltage is ~13V and the capacitor is rated at 50V. I don't know if I got a bad lot or if I'm doing something wrong. It may be related to the other problem I'm having...
- The amp draws ~110mA, documentation says it should be somewhere more along the lines of 75mA. The testing process suggests making a comparison in the amount of current drawn when the input and output are terminated (as shown in my picture) and unterminated. If the current goes up when it is unterminated, the designer says this is an indication that the tran-sistor is oscillating at a very high frequency. I don't see a difference terminated vs. unterminated; its just high all the time.
Maybe the two are related, maybe they aren't. Maybe my pre-amp is oscillating, maybe it isn't. The good news is that I found somebody (WD8DSB) who, based on the pictures the designer provided of his pre-amp, made up a diagram of showing how the designer laid out his board. I've got the components and now that I've built it once, the second time shouldn't take too long. I plan on building this second version following his plans and comparing the current draw to the first. Stay tuned....
Monday, November 02, 2015
Voicemail
Our phone system at work is set up to send us a text transcription of each voicemail we receive, called a "Voice Mail Preview". I guess they don't want to claim it is actually a transcription because of situations like this:
Hi it's your wife they bury in asleep please call back thank you bye.
Maybe somebody came to our house and buried my wife alive while she was taking a nap and she's kindly asking me to call her back.
Or maybe its something else.
Either way, I should probably give her a call and see what's going on.
Thursday, October 15, 2015
An Example of What I Do During the Day
My day job is at Pacific Northwest National Lab working in the Electricity Infrastructure group. Most of the time, best case, the conclusions from my weeks or months o work ends up as part of a report. A technical report full of terms most people don't need to understand and even those of us who care about such things resent having to read. A lot of times the report is public because it was funded with government dollars but when was the last time you went looking for a report by a government contractor on ANYTHING you were even slightly interested in? Let's just say, as a rough approximation, that a lot of what I write is not read by many. (Probably including this blog. Hi, Mom.)
But this project I just finished is different. I was part of a small team that made a website that estimates the emissions impacts of various smart grid project. People more gifted than I did the actual website coding but I had a significant hand in the design of the analysis engine and wrote most of the code that performs those calculations. The site is called the Emissions Quantification Tool and there are people out there who are very excited about it. It was even mentioned by the Secretary of Energy, Ernest Moniz. (Around here, we call him S-1.)
So go and enjoy; play around. The easiest project to start messing around with is solar PV; that's the one I go to when I wanted to verify some general functionality. Play around with the graph at the bottom of the page. If you really want to be surprised, check out the impact that energy storage has on emissions.
Its nice to have work you can take pride in be so publicly placed.
But this project I just finished is different. I was part of a small team that made a website that estimates the emissions impacts of various smart grid project. People more gifted than I did the actual website coding but I had a significant hand in the design of the analysis engine and wrote most of the code that performs those calculations. The site is called the Emissions Quantification Tool and there are people out there who are very excited about it. It was even mentioned by the Secretary of Energy, Ernest Moniz. (Around here, we call him S-1.)
So go and enjoy; play around. The easiest project to start messing around with is solar PV; that's the one I go to when I wanted to verify some general functionality. Play around with the graph at the bottom of the page. If you really want to be surprised, check out the impact that energy storage has on emissions.
Its nice to have work you can take pride in be so publicly placed.
Monday, October 12, 2015
Hot Air Balloons
A few weeks ago we took an early morning trip to see a hot air balloon launch in a nearby town. I hadn't been to one since I was a kid and my wife had never been before.
Just as the balloons were due to launch, the wind picked up and gradually, the pilots concluded, each on his or her own, that they weren't going to fly that day. We were one of the last to leave, hoping that somebody might take the chance. The upside: we got to see how the balloons are deflated and repacked.
Just as the balloons were due to launch, the wind picked up and gradually, the pilots concluded, each on his or her own, that they weren't going to fly that day. We were one of the last to leave, hoping that somebody might take the chance. The upside: we got to see how the balloons are deflated and repacked.
Wednesday, August 05, 2015
Washington Westside
Photos from a weekend trip we took a few months out to the west side of the state. We live in the dry, desert half (as you can see from my Pallouse Falls photos); this part of the state is what people think of when we say we live in Washington.
The famous Skaggit Valley Tulip Festival. Abnormal spring weather this year meant by mid-April, when we took the trip, most of the flowers were gone.
We spent that evening on Fidalgo Island.
The famous Skaggit Valley Tulip Festival. Abnormal spring weather this year meant by mid-April, when we took the trip, most of the flowers were gone.
Subscribe to:
Posts (Atom)