Beutelevision

by Thomas Beutel

My favorite spot on the Redwoods and Pacific RR

When I planned the Redwoods and Pacific, I purposely built in many bridges. My favorite so far is this deck truss bridge.

NWP #179 crosses Island Mountain bridge on the Redwoods and Pacific RR

The bridge sits at the far end of a floor to ceiling canyon, so it isn’t one that I go up close to very often, but it is big enough to see well from my typical distance which is about 15 feet away. The tunnel provides a convenient transition to the cannery section of the layout on the other side of a scenic divide.

Kitbashed Beet Gondola

A long time ago I won a Details Associates beet car at a PCR door raffle and it was only last year that I decided to put it together.

Sugar Beet Gondola built from Detail Associates kit

It’s a wonderful kit, but it did take me several evenings to put it together. Now that I had one, I wanted a whole train of course, but the kits are rather expensive. I decided instead to kitbash some stand-in models.

I took a close look at the standard 8 panel 40ft gondola made by AHM and others. I figured it would be easy to scribe the sides and add extensions to give it the look of an SP wood side beet car, but I was held back by what to do with the underside since a drop bottom gondola has a bunch of hardware for holding and releasing the floor doors.

After pondering this for a while, it occurred to me that I should just treat this as I do other 10-foot models. As long as it looks OK from 10 feet away, I’m not going to worry about the missing underbody details.

Kitbashed Stand-in Beet Gondola

The first step was to raise the car to match the height of the Detail Associates car. I added .060 blocks of styrene to the bolsters so the cars would ride higher. Then I scribed the sides and add diagonal braces using .020 styrene.

I tried modeling two types of extensions, plywood and plank. For the plywood extensions I used styrene, but for the planks I used real wood that I cut from coffee stirrers. After I glued the extensions, I painted and decaled the cars, and applied a good amount of weathering. For beets I used wheat berries which are oversized but I think they look fine at 10 feet.

Stand-in Beet Cars

My beet car train is now 10 cars long and it looks great, even with the Details Associate car in the mix.

The Weather Forecast, SF Style

This is my favorite forecast.

We posted it on our refrigerator many moons ago, but it works most of the time, especially out here in the Sunset district.

I do remember growing up how dreary the fog could be, especially day after day if it happened during the school year, but especially during the summer. The fog usually starts in ernest after July 1.

But now that I’m older, I look forward to foggy mornings with some sun in the afternoon. I especially like the afternoon breeze and the wisps of fog making their way up the slope of the avenues. On some days the fog inverts itself. The beach is in clear sunshine and the fog condenses at about 350 feet, meaning that it forms on a line roughly at 28th Avenue. That’s pretty weird, but it’s cool to see it happening.

SF Giants Losing Streak

It’s a total bummer that the Giants are on a really bad losing streak, but I still like to watch.

We went to yesterday’s game (Mets 8 Giants 2). I’m ever the optimist, my glass is always more than half full. There were plenty of little victories that we could celebrate. A nice 4-6-3 double play, some walks, a couple great catches in the outfield, a couple RBIs by Posey. Plus a great view from View Reserve left. I don’t ask for much.

Something happened last year at the All-star break. Who knows what it was. Was it Duffy? Maybe a bit? But I think something bigger happened. I think that just enough players were new enough that they haven’t had a chance to grow into the job.

It feels to me like the Giants shoes are too big too fill at the moment. The players are being held to a lofty standard – yes, three wins in 5 years will do that. But I don’t know. Maybe it’s time to shrink those shoes so they fit. Let the players be who they are.

 

How quickly big tides change the bay

Two days ago I fished Crissy field early morning and the water was slightly murky. I had a decent bite and even had a small fish on – I’m guessing it was a halibut. I also saw someone pull a nice one out near the end of the wildlife area.

Today however was so different. It was a -1.75ft low tide and the water was almost opaque. It always amazes me how the onset of big tides stirs up the mud, even at Crissy which is so close to the Golden Gate. The water did clear a bit as the tide started to sweep in, but it was still really murky.

I really don’t have a strategy yet for big tides. I saw plenty of old guys on the pier tossing live bait but not getting bites. I also saw bait fisherman farther down the beach toward the trees. Maybe big tides means bait instead of lures? Or perhaps I should just go across the bay and poke pole on these really low tides.

In the mean time, I’m going to wait for the next set of halibut tides, or perhaps give Ocean Beach a try for stripers.

Kitbashed Seafood Wholesale

I enjoy taking HO building kits and repurposing them. Here is one that I built for my seaside district. It’s a seafood wholesale building sitting on a pier over the water.

I got the idea for this kitbash from Art Curren’s Kitbashing HO Model Structures book. It uses two Tyco Freight #7785 stations. As you can see I combined the stations into an L shape to give it a bit more character. The building is rounded out with some wooden pallets and a few fisherman trying to hook up a big one from the pier.

The building is substantially finished but I will be adding a few dim interior lights and also some weathering to give it that beat up look.

HO Scale Seafood Wholesale

HO Scale Seafood Wholesale

HO Scale Seafood Wholesale

Tidying the Dirty Dishes

I’m not sure why I do it, but I find myself organizing the dirty dishes on my table before I leave a restaurant. I even point the handle of the cups so that they will be easy to grab. I make up that the wait staff will appreciate my efforts to tidy up the table.

But I think the real reason I do it just because I like symmetry and beauty.

Capitola Halibut

I had a splendid three hours today with Eli on a skiff out of Capitola Wharf. The crew there is fantastic and I highly recommend it. This is one of those operations where you load up the boat and then it is lowered into the water. Once it is in, you climb down a ladder to get in the boat. It’s a bit scary at first but once you’re in it’s OK.

The skipper at the store suggested that we could get some live bait (kingfish) at Tankhouse reef which is just south of the wharf. We got near the reef and drifted a bit. In fact we drifted right into the kelp and got our lines tangled. Once we got away for a bit I managed to pull up a 7 inch kingfish, just the right size.

We then went to Mile buoy and drifted. After about 20 minutes Eli had the first fish, a healthy halibut that chomped on the kingfish. We managed to get it near the boat but it surged and snapped the line. At least we got to get a good look at it.

Along with the kingfish we drifted frozen anchovies. Not too long after I pulled up a 23-inch lingcod as we drifted west over Mile reef. We then motored over to Mile buoy and did several more drifts. We pulled up an octopus, a small brown rockfish and shortly before we left, a nice 25-inch halibut. So we came home with a halibut after all.

California Halibut caught on June 15, 2017 at Capitola, CA

Adding special options to select using Vue.js

I get some interesting requests from my clients and some of them are head-scratchers. The beauty of Vue.js is that you can implement almost any behavior and do it fairly simply.

In this case, the client wanted to swap in a different Act-On form via an iframe if a certain option was selected. Since the original options were being populated from an API (via axios) I had to add the special option separately.

Here is what I did in the select component:


Vue.component('course-selector2',{
props: ['courses','value'],
template: '<select class="custom-select" v-model="course"><option value="">Select date and location</option><option v-for="option in options" v-bind:value="option.value">{{ option.label }}</option></select>',
computed: {
options: function() {
var type = this.courses.type;
var list = this.courses.list.map(
function(obj){
var label = obj.start_date_formatted+' | '+obj.location;
return {'value':obj.event_internal_id,'label':label};
}
);
list.push({'value':'-1','label':'I\'m not sure yet. Please have someone call me.'}); // this will show a different form
return list;
}
},
data: function() {
return {
course: ''
}
},
watch: {
course: function() {
this.$emit('input',this.course);
}
}
});

In the computed options above, note how I push the extra option onto the list. Obviously I could have just added the option in the template itself but I find this to be a cleaner and easier to read implementation.

Later in the main app code below, I implemented a watch to do the swapping. Whenever the Please have someone call me option is selected, the registration form is hidden and the contact me form is shown instead.


window.onload = function(){
var app = new Vue({
el: '#app',
data: {
courses: [ ], // populated via axios, not shown
course1: '',
display_reg: true,
display_call: false,
internal_event_id: 0
},
watch: {
course1: function() {
this.event_internal_id = this.course1;
if(this.event_internal_id == -1){
this.display_reg = false;
this.display_call = true;
}
else {
this.display_reg = true;
this.display_call = false;
}
},
template: '<form v-show="display_reg" id="myform" method="post" action="/path/to/cart">' +
'<div style="margin-top:10px;"><label style="display:block;color:#ffffff;">Course Date and Location</label><course-selector2 v-model="course1" v-bind:courses="{type:\'Course Listings\',list:courses}"></course-selector2></div>' +
'<div style="margin-top:24px;"><img style="cursor:pointer;" id="add-reg-btn" v-on:click="onSubmit" type="image" src="/images/acton/continue.png" border="0"/></div>' +
'<p style="color:#ffffff;" v-show="display_cart_text">You will be directed to an online cart to complete your purchase and confirm registration.</p>' +
'</form>' +
'<div class="wrapper"><iframe class="custom-iframe" v-on:load="hideCallHeader" v-show="display_call" src="path/to/act-on-form" style="border: 0; min-height: 565px;margin-left:-10px;"></iframe></div>'
});

Please note that the above is just a rough sketch. I have not tested the above example and major portions of the app are missing. My purpose here is just to give you an idea of what I did.

Prevent default in Vue.js after checking value

Here is what I did to prevent a form submit based on a value. In this case, I’m checking to make sure a value is not blank.

 <form id="myform" method="post" v-on:submit="onSubmit" action="/path/to/form-handler">
 methods: {
        onSubmit: function(e) {
            if(this.some_value == ''){
                e.preventDefault();
                return false;
            }
           return true;
        }
 },