Coaching VTA Bus Drivers Again

This morning I stood at the bus stop with the usual suspects waiting for the pre-dawn express bus to Palo Alto. It was five minutes late. We watched in amazement as the express bus drove past us across the street, coming from the opposite direction for the afternoon route. Before the bus could finish turning right on to Southwest Expressway to enter the loop-de-loop at Meridian Avenue and the 280, someone had the VTA customer service number on speed dial and started talking to a customer rep. We shook our heads. This isn’t the first time we had to coach the bus drivers on their new routes.

The Valley Transit Authority (VTA) in Silicon Valley rotates the drivers among the different routes every March and September. This week, the second full week of April and six weeks after the last rotation, some schedules got tweaked and new drivers started on the routes to my tech job in Palo Alto.

The local bus I take to pick up the express bus arrived two minutes earlier on the revised schedule, which meant I had to get out of my apartment five minutes earlier. Some drivers will arrive a few minutes earlier to avoid getting stuck behind the lights at the light rail crossing or take a break at the 7-11 at the next stop. New drivers on new routes are an unpredictable bunch, especially when sticking to the schedule.

The express bus tried to pick us again. Now ten minutes late. The driver probably had to go back out on southbound 280, swung up and around on Bird Avenue, and came back on northbound 280.  Still coming from the opposite direction by taking the Meridian Avenue exit instead of continuing on to Southwest Expressway. The onboard GPS should have given the driver precise directions for getting to this particular bus stop. If the driver is early or late, the GPS gives them a notification. The GPS either not worked or this driver ignored it.

The person on call to customer service got patched through to the driver over the radio. “You stay on that side,” he told the driver, pointing at the other side of the street. “We’re crossing over.”

A half-dozen of us ran across the empty lanes like East Berliners trying to cross the kill zone to West Berlin. The express bus veered across the lanes as if the driver was going to pick us up in the middle of the street, make a U-turn to pick us up from the other side, or just run us over for shakes and giggles. Some of us stopped in the middle lane to make sure that the express bus did stop before we cross over the last lane. We stepped aboard as if we were right on schedule.

Like most bus drivers running late, this driver put the pedal to the metal once we hit the freeway. When we quickly came upon the Page Mill Road exit, and still in the fast lane, people in the back of the bus started shouting directions. We cut through three lanes of traffic in a heartbeat. Once we were on Page Mill Road, the driver remembered the rest of his route. I arrived at my next bus stop to pick up the local bus with a few minutes to spare. Not surprisingly, a new driver learning the route with some coaching from the passengers.

 

The Python Time Zone Rabbit Hole

Thanks to the recent asshat controversy on Slashdot, and a fellow Slashdotter’s request for the link to the comment that prompted the controversy in the first place, I wrote a Python script to scrap my ~8,000 comments from Slashdot to dump into a spreadsheet for future reference. I’m planning to write essays about my various misadventures in Silicon Valley and my comment history is rich treasure trove of stories I’ve written over the years. While working on the script, I came across a programming rabbit hole for converting the timestamp string into a different timestamp string that kept me up for three nights.

The original timestamp that I extracted from each comment was a text string like this, “on Friday April 04, 2017 @06:03PM” (as it appeared on the website), and got written into CSV (Comma Separated Values) file just like that. After the initial script was working, I opened the 5MB CSV file in Excel to scroll through the data and see what I needed to change in the script. The timestamp string wasn’t in a sortable format. I had to change the timestamp into this format: “2017-04-07 18:03:00”. There’s two ways of doing this in Python: using a datetime object or slice-and-dice the string.

from datetime import datetime

def get_timestamp(string):
    return datetime.strptime(string, "on %A %B %d, %Y @%I:%M%p")

print(get_timestamp("on Friday April 04, 2017 @09:03PM"))

My first attempt (see code fragment above) was quite simple, using the strptime function for the datetime object to parse the timestamp string according to the matching format string (“on %A %B %d, %Y @%I:%M%p”). When I opened up the CSV file and compared the timestamp against the corresponding timestamp on Slashdot, the timestamp was correct except that the hour in 24-hour time was off by three hours. Every timestamps in the CSV file was off by three hours. I quickly learned that Python’s datetime objects are generally time zone unaware (or naive), and, in general, not very easy to use with different time zones.

def convert_timestamp(string):

    months = ['January', 'February', 'March', 'April', 'May', 'June', 'July',
              'August', 'September', 'October', 'November', 'December']
    month_number = {x: str(y).zfill(2) for y, x in enumerate(months, 1)}

    # remove "on" and split string into list
    string = string[3:].split(' ')

    # slice and dice into date/time components
    month = month_number[string[1]]                       # '04'
    day = string[2][:-1]                                  # '07'
    year = string[3]                                      # '2017'
    hour, minute = string[4][1:][:-2].split(':')          # '06' / '03'
    period = string[4][-2:]                               # 'PM'
    second = '00'                                         # add missing value

    # convert 12-hour time to 24-hour time
    if period == 'PM':
        if hour < '12':
            hour = str(int(hour) + 12).zfill(2)

    date_str = '-'.join([year, month, day])               # 2017-04-07
    time_str = ':'.join([hour, minute, second])           # 18:03:00
    return ' '.join([date_str, time_str])                 # 2017-04-07 18:03:00

print(convert_timestamp("on Friday April 04, 2017 @09:03PM"))

My second attempt (see code fragment above) was to slice-and-dice the timestamp string into the corresponding string values for month, day, year, hour and minute. The second value got added for completeness. If the period was “PM” instead of “AM”, the hour went from 12-hour time to 24-hour time. Date, “2017-04-07”, and time, “18:03:00”, are join together into one string, “2017-04-07 18:03:00” . When I ran the script and looked at the CSV file, the resulting timestamps was identical to the timestamps created by the datetime object.

Every timestamp was still off by three hours.

When I work on a website scraping script, I always save the scraped data into text files while refining the parsing and output sections to avoid re-scraping the website. That reduces the risk of my IP address being flagged by the website or firewall as a spammer and/or scrapper. The completed script will scrape, parse and write each page directly to the CSV file.

The slice-and-dice function converted the timestamp string as found in those text files. If I viewed the timestamps on the website, the timestamps are correct for the Pacific time zone. If I look at the timestamps in the text files, the timestamps were all off by three hours (“09:03PM” instead of “06:03PM”). So both the datetime object and slice-and-dice functions were working properly. The logical conclusion is the Slashdot server is located in the Eastern time zone and what I thought about the data was wrong. There lies the problem—and the solution.

from datetime import datetime
from pytz import timezone

def set_timezone(ts_str, tz_alt='US/Eastern'):
    ts_format, tz_def = "on %A %B %d, %Y @%I:%M%p", 'US/Eastern'
    tz_obj = timezone(tz_def).localize(datetime.strptime(ts_str, ts_format))
    return tz_obj if tz_alt == tz_def else tz_obj.astimezone(timezone(tz_alt))

timestamp = set_timezone("on Friday April 07, 2017 @09:03PM", 'US/Pacific')

print(timestamp.strftime("%Y-%m-%d %H:%M:%S %Z%z"))

The third and final attempt (see code fragment above) uses the pytz package to add time zone definitions to the datetime object and provide functionality to translate between different time zones. Using the datetime object from the first code fragment, the timestamps get encoded “US/Eastern” and then translated into “US/Pacific” to match the timestamp on the website. The resulting timestamp with time zone info in the CSV file has this format: “2017-04-07 18:03:00 PDT-0700”. A nice thing about the pytz package is that it also handles Daylight Saving Time seamlessly. If you don’t need the time zone info for the timestamp, remove “%Z%z” from the format string.

I Worked With A Murderer!

When I was a kid back in the early 1980’s, a teenager killed another teenager and hid the body in the foothills. The disappearance at that time, and the remains found several years later, was big news in the San Francisco Bay Area, one of several high-profile kidnappings and murders that prompted parents to keep their children indoors. Fast forward nearly 40 years later, a friend sent me the link to an old news article about the suspect arrested for that crime. The suspect in the perp walk photo was a former coworker whom I worked with for several years before he got fired, I thought, for being a douche bag. That wasn’t the whole story on his firing.

Unfortunately, I can’t share the article link to the article or the person’s name.

Although arrested and charged for the murder over a decade ago, the suspect was never tried as the case got thrown out of court for a lack of evidence—the murder weapon was never recovered—despite having a body and a confession. A person arrested but not convicted of a crime has a reasonable expectation to privacy despite the news media coverage. Or, maybe not. A recent court ruling for police taking DNA samples have implied that an arrestee  has “diminished expectations for privacy” as legal proceedings are public. Since I’m not familiar with intricacies of true crime writing (i.e., how to avoid being sued by someone who holds a grudge), I’ll be deliberately vague on the details to protect the innocent and the guilty.

The suspect and I started working together in IT support at the same time. Almost immediately he tried to put himself ahead of everyone else in a “Me! Me! Me!” attitude to impress the client—the company that hired the contracting agency to provide tech workers—in meetings, conference calls and emails. This insecurity, he told me, came from a deep need to avoid being unemployed again, which was understandable as everyone was still skittish years after the Great Recession. Except the “Me! Me! Me!” attitude never got dialed back as time went on and he never took the obvious hints from management to drop it.

Our first bump came when he accidentally rebooted the server that everyone logged into from our workstations. During the early days of the project, almost everyone rebooted the sever by accident while trying to reboot a remote system since the server wasn’t then properly configured to prevent admin users from rebooting it by accident. But he did it twice in one day. He never came forward to own his mistake. When the server owner checked the logs and fingered him in IM, he made excuses for why it happened—and those excuses went on for days. Everyone, including yours truly, roundly jeered him whenever the topic of accidental rebooting came up.

When I accidentally rebooted the server from a double-clicking mouse a month later, I contacted the server owner during the one-minute delay before the server rebooted, admitted my mea culpa to the team in IM (instant messenger), and replaced the double-clicking mouse. No one gave me grief for rebooting the server. The suspect complained loudly that he got treated unfairly because what I did was much worse than what he did. No one bought his story. That was the beginning of his reputation of being a douche bag.

When a team lead asked his group for volunteers to work with the suspect on an assignment a year-and-half later, no one wanted to work with him and everyone confessed that they didn’t like him. I felt compelled to write a long email to the project manager about all the problems I had with him. Two weeks later, he got fired. The funny thing was that no one told him that he got fired. According to coworkers on his team, he figured it out when his regular and admin Windows accounts  got deactivated, his badge stopped working, and the client refused to return his phone calls. Never did hear if security showed up to escort him out of the building.

The real reason he got fired, I recently learned, was an unknown coworker googled his name, came across the decade-old story about his arrest, and took the story to the client. The coworker got written up by the contracting agency for going to the client, but the coworker felt strongly enough that the client had to know who the suspect was. The client had a felony checkbox on the background check form (i.e., “Have you ever been arrested and/or convicted of a felony?”). The suspect, who didn’t live in a state like California with felony checkbox protections, failed to check the box and didn’t mention his arrest. That was enough to terminate his employment.

Have I Threatened To Shoot You Today?

I’ve read and commented on Slashdot since the dawn of the Internet (circa 1998). More so in recent years while waiting for a script to finish running at my tech job. I’ll find a topic that I’m interested in, read and respond to the early comments, and, if I want to torment the trolls, a.k.a, AC (Anonymous Cowards), I’ll write a controversial comment and camp out on the thread for the rest of the day. I don’t take this seriously because I’m just killing time. That is until an asshat accused me of threatening to shoot him. Even though I’ve asked three times for the asshat to explain how I threatened to shoot him, today I confronted the asshat by breaking out the crayons and coloring inside the lines.

What comment provoked this accusation? I asserted my First AND Second Amendment rights.

When talking about the U.S. Constitution, there are two groups that typically talk past each other all the time: the First Amendment people who don’t want the Second Amendment people bearing arms in public because they feel intimidated, and the Second Amendment people who loudly proclaim with obvious display of heavy weaponry that their amendment trumps all other amendments and that the First Amendment people should just shut up.

As a moderate conservative (another controversial statement), my belief is that you can’t have one without the other. The First Amendment grants me the right to speak my mind. The Second Amendment grants me the right to bear arms, and, since California isn’t a strong “stand your ground” state, I don’t have the right to shoot anyone’s sorry ass willy-nilly. This “best of both worlds” position typically pisses off the opposing camps.

One asshat ASSumed that my comment constituted a threat to shoot him.

If I was going to shoot that sorry ass asshat, I wouldn’t announce my intentions to do so under a named account on Slashdot. All the police would have to do is click on the home page link for my Slashdot comments, go to my author website and find my picture. The FBI already has my fingerprints. It wouldn’t take long to track me down.

So why draw attention to this controversy?

A group of Slashdot asshats went to my personal website, saw my picture and started calling me fat (among other explicit things). I collected their comments into an F.A.Q. (Frequently Asked Questions) and posted it on my website. Whenever someone called me fat, I posted the link to the F.A.Q in a reply comment and 3,000+ visitors stampeded to my website. That was 15 years ago and long before I had ads on my websites. This blog post is the new F.A.Q. If the asshat accuses me of threatening to shoot him again, I’ll post the link and collect the ad revenues from 3,000+ visitors.

After a two-year hiatus from blogging on Kicking The Bit Bucket, I’m blowing off the cobwebs and getting back to work.

Friday, 30 March 2017 — By popular request on Slashdot, I added a link to the original comment above. Here’s the link for the parent thread. Read and decide for yourself. That sorry ass asshat is still hounding me six weeks later.

The N.D.A. In Silicon Valley Real Estate

As an information technology (I.T.) worker in Silicon Valley, I’ve signed many Non-Disclosure Agreements (N.D.A.s) over the years to keep secret anything that I learn during the course of my employment. Due to the nature of my work in I.T. support, I seldom have access to privilege information that an outsider might find valuable. I’m not surprise to read in The New York Times that the N.D.A. culture has come to real estate in Silicon Valley, as newly minted millionaires—or billionaire, in the case of Facebook’s Mark Zuckerberg—renovate their McMansions.

These powerful documents, demanding the utmost secrecy, are being required of anyone associated with the homes of a small but growing number of tech executives, according to real estate agents, architects and contractors. Sometimes the houses themselves are bought through trusts or corporate entities so that the owners’ names are not on public deeds.

Requiring construction workers to sign N.D.A.s raise more questions about who the owner is than it does to protect the owner’s privacy. Most N.D.A.s has a time limit. After several years goes by, nothing prevents a construction worker from revealing that the bathroom fixtures were solid gold, the kitchen counters were from handpicked marble slabs from Italy, and the multi-level garage has a car elevator. If wealthy owners want to maintain their privacy, they should dial down their public display of conspicuous consumption.

A 92-year-old Vermont man passed away recently, surprising family and friends when he left an $8 million stock portfolio to the local library and non-profit hospital. He drove around in a 2007 Toyota Yaris, collected tree branches for firewood, and held his winter coat together with a safety-pin. Because he lived a modest lifestyle that didn’t draw unwanted attention, no one knew he was wealthy.

My father built the planter walls for the million-dollar homes in the Silver Creek Valley area. The conspicuous consumption offended his Great Depression sensibilities with so much money wasted on so few people. That the city of San Jose spent $200 million to extend water and sewer into the arid foothills offended my own sensibilities. If you throw enough campaign contributions at city hall, you too can get taxpayer money to run water uphill. We both gloated over the news that the homeowner association nearly filed for bankruptcy after the Great Recession, as the million-dollar homes stood empty and the remaining residents balked at paying higher fees to maintain the common areas.

My brother’s in-laws bought a million-dollar home in the foothills of Gilroy, which I thought was obscene. The kitchen was larger than my studio apartment, and the wet bar was bigger than my kitchen. The in-laws bought the five-bedroom house to store family heirloom furniture that they couldn’t depart with but weren’t using anyway. Since they didn’t want to spend their retirement years cleaning a big house, they sold the house in a short sale and moved their furniture collection to a farmstead outside of Boston. The only cool thing I liked about that house was the 30-foot-tall wired fence that kept a prowling mountain cat away from the BBQ pit.

The Lessons of “I’m Just A Bill”

If you’re paying attention to the political shenanigans in Washington, D.C., you might be aware that the Republicans are aiming for a partial government shutdown of the Department of Homeland Security (DHS) in retaliation for the immigration-related executive orders that President Obama issued last year. Reading through the comments for various political stories, I see frequent calls to save the U.S. Constitution. It’s painfully obvious that some citizens—and too many Tea Party Republicanshave no clue how the government works. During the U.S. Bicentennial (1975-1976) celebration, ABC TV had a series of Schoolhouse Rock! cartoons on how the government works. My all-time favorite was “I’m Just a Bill” that explains how a bill becomes a law in Congress.

Education and civic responsibility still meant something 40 years ago. Not today. Too many people display their willful ignorance with pride, too many politicians lack courage to rebuke ignorance with knowledge. This became obvious after the House Republicans passed their bill to fund the DHS and reverse the executive orders, which failed four times in the Republican-controlled Senate to override the Democratic filibusters, insisting that they did their job and the Senate needed to do their job by rubber-stamping the bill.

That’s not how Congress works: the majority can cram bills through the House; the minority can halt bills in the Senate.

The Republicans may have a majority in the Senate, but they lack the votes to override a Democratic filibuster (60 votes) and a presidential veto (67 votes). As the House Republicans demonstrated on Friday night, they don’t have the 218 votes to pass their own bills if the Tea Party Republicans votes no and the Democratic minority withhold their votes. Even if their bill did get rubber-stamped by the Senate, the House Republicans don’t have the 290 votes to override the expected presidential veto.

I was quite pleased to see that the Disney Educational Productions had uploaded new versions of the Schoolhouse Rock! videos on YouTube. While glancing through the comments for the “I’m Just a Bill” video, someone noted that Saturday Night Live did an updated skit of that video. President Obama comes out to push “I’m Just A Bill” down the Capitol steps and introduced “I’m Just An Executive Order” to run the government. The funny thing is, despite a Republican judge ruling that 26 states have legal standing to file a lawsuit and granting a temporary stay, the executive orders are constitutional and legal.

If the Republicans believe their own rhetoric that President Obama is the dictator in chief, they can always remove him from office through impeachment. They have enough votes in the House to impeach; they don’t have enough votes in the Senate to convict. With the Obama Administration being scandal free for the last six years, the Senate Republicans will have a tough time getting any Democrats to vote with them for conviction.

While the lowest voter turnout in 72 years gave the Republicans control of Congress, voters didn’t give them enough power to ignore the Democrats and President Obama. Until that painful reality sinks, expect two more years of political shenanigans.

Spaghetti-less At Costco

My barometer for when the economy is doing better is when I can afford to renew my Costco membership. This month I got the chance to do that and get some bulk items that I needed, such as the chocolate-chip muffins (dozen), garbage bags (90-count) and fish oil pills (500-count). The one thing that I wasn’t able to find was an eight-pack of spaghetti. The two local Costco stores had spaghetti sauce and Parmesan cheese, but no spaghetti to complete the meal.

My favorite Costco is on Coleman Ave in San Jose. Driving there is a bit tricky if you miss the left-hand turn off to the side street for the parking lot entrance. Miss the left-hand turn off and drive past Costco, you’re on the ramp to De La Cruz Boulevard that goes straight into downtown Santa Clara, where returning to Coleman wasn’t a simple U-turn due to the keeping driving straight signs. Getting out of the street maze of Santa Clara is a trick in itself.

Although I haven’t been at this location for several years, the store layout hasn’t changed much and I found the items I was looking for. Except for the spaghetti. I found the spaghetti sauce, Parmesan cheese, and the other pasta that goes better with Alfredo sauce. I walked up and down the food aisles looking for spaghetti.

Was spaghetti a seasonal item at Costco?

The Costco store in Sunnyvale is at the intersection of Lawrence Expressway and the Caltrain tracks that didn’t intersect. You have to make a tricky right-hand U-turn from Lawrence to get into the parking lot. If you want to practice your Christmas holiday shopping parking skills, come here as the parking lot is always full, the drivers are always ruthless and shoppers with their carts are always in the way.

I haven’t been to this particular location since my parents retired to Sacramento in the early 1990’s. The store layout has changed since then, and organized much differently than the Coleman store. Once I got into the food aisles, I found the Spaghetti sauce and Parmesan cheese. Still no spaghetti. There was an empty space that a pallet of spaghetti could go into. This store was so busy that I couldn’t find an employee to check the loading dock to see if such a pallet came in.

How can Costco sell Spaghetti sauce and Parmesan cheese without the spaghetti? No clue.

The BART Video Game Arcade (Circa 1976)

Gary Fong / The Chronicle
Gary Fong / The Chronicle / December 1, 1976

While at Accolade/Infogrames/Atari (same company, different owners, multiple personality disorders), I had to trained fresh out of high school graduates on being video game testers. These youngsters didn’t believe I played video games in the late 1970’s and early 1980’s. So I introduced them to a tester who tested video games for the original Atari in the 1980’s, and then introduced them to a tester who tested pen-and-paper games in the 1970’s. Their young heads often exploded in amazement that video games existed before the Sony PlayStation in 1995. As further proof that early video games existed, SFGate recently noted that the Powell Street BART Station installed video arcade games in 1976.

The first time I ever played a video game was Atari Pong in the basement of the Sear’s building in downtown San Jose—where the Midtown Safeway is today—during the Bicentennial (1975/76). I was five- or six-years-old at the time. My mother was returning something at the exchange desk. My father slipped a quarter into the arcade machine and we played a short game. Several years later I got a TV pong game for Christmas, the first of several early video game consoles that would prepare me for the working world.

Most arcade machines were hidden away in pizza parlors, bowling alleys and public venues like the BART station throughout the 1970’s. Arcades with wall-to-wall machines didn’t happen until the early 1980’s. The arcade that I grew up in was at Oakridge Mall in South San Jose. A dark hole in the wall that sucked in kids and their quarters like nothing else, and quickly doubled in size after taking over the storefront next door. This was my favorite after school activity.

My parents didn’t approve that I split my weekly allowance—a princely $30 USD that I didn’t know was a small fortune for a teenager—between the arcade and the bookstore. Video games were much worse than the pinball machines that they grew up on. Reading inspires all kinds of subversive behaviors, such as being smarter than anyone else. On the bright side, I wasn’t buying drugs like so many of friends who got stoned out of their mind in class.

After the Atari E.T. cartridge scandal killed the video game revolution, the wall-to-wall arcades started fading away in popularity. Newer video game consoles and PC’s brought the video games back into the home. Arcade machines are still tucked away at various locations today. The only real arcades left in Silicon Valley are Chuck E. Cheese’sDave & Buster’s or Nickel City. I don’t play arcade machines anymore, as any five-year-old youngster can beat my sorry ass with faster reflexes.

Rent-A-White-Man Super Bowl

I found the 2015 Super Bowl commercials somewhat lacking in the humor department. Nothing made me barked out aloud in laughter. (Although the Kia Sorento car commercial with Pierce Brosnan, who imagines himself being pitched for a James Bond-style car ride with snipers, missile launchers and explosions that became rather uninteresting, made me smile.) A Satire Bowl commercial that most of America and the world haven’t seen was “Rent-A-White-Man”, where black people can rent a white man to act on their behalf in post-racial American society without getting shot by the police.

Unless you’re living in a cave and watching Fox News TV, this is really funny. If you understand the irony of white privilege that is, which most white people can’t comprehend because they’re never judged by the color of their skin, have to think twice while walking down the street, or followed because someone think they’re up to no good. Being a native Californian with redneck parents from Idaho and living my entire life in the multicultural San Francisco Bay Area, I can appreciate—and laugh at—both sides of the racial divide.

And rent a white man is also a fantastic idea.

As a white man in my mid-forties with graying hair at the temples, I’m deeply concerned about being aged out of the tech industry that favors younger foreign workers over older American workers. That was obvious at a job from several years ago where Indians made up the majority of the workers and only vegan pizza got served at company events. I’m transitioning my career from general information technology (I.T.) into information security (InfoSec) that requires 10+ years of general I.T. experience to get into, a difficult hurdle for anyone from India or fresh of college to overcome. If I do get aged out of my current career, I can always rent myself out as a white man.

Rent a white man isn’t all satire. Chinese companies routinely rent white men in business suits to present their operations with American faces from a non-existent U.S. company and project an international aura over the local competition. Who knew that white privilege was a marketable skill?

Riding The Hotel 22 Bus

[iframe src=”//player.vimeo.com/video/100290798″ width=”640″ height=”480″]

When I started my new tech job six months ago, I initially took the 522 from San Jose to Palo Alto that ran the same route as the 22 and makes 75% fewer stops to get across the valley faster. This portion of my two-hour trip each way to work took 45 minute. As the weather got colder, the presence—and the overwhelming smell—of the homeless became more prevalent. Although I knew that the homeless rode the 22 around the clock, I didn’t know it had the nickname of “Hotel 22” until I read The New York Times op-ed piece by Elizabeth Lo on her new documentary by the same name.

Silicon Valley has three different kinds of buses that get workers from the outlying areas of the San Francisco Bay Area to their jobs in Silicon Valley, the Peninsula, Oakland or San Francisco. I’ve ridden on all three buses over the last 15 years as a computer technician in Silicon Valley.

Local buses crisscross the county to connect people from their homes to the major transit centers and thoroughfares for local companies. Minimum wage workers, techies and homeless people all mingled together, the 22 being the most obvious example. A monthly bus pass for Santa Clara County is $70 USD.

Commuter buses connect major transit centers to job-concentrated areas that are typically inaccessible without a vehicle (i.e., no sidewalks back to civilization). Some commuter and express buses are WiFi-enabled to allow Internet access via cellphone and tablets. You’re less likely to find minimum wage workers and the homeless on these buses, as the fastest routes are twice as expensive. A monthly express bus pass in Santa Clara County cost $140 USD.

Tech buses stop at major transit centers and thoroughfares to take them directly to each campus building. These luxury buses features faster WiFi connections, comfortable seats and sometimes a restroom. Access restricted to workers with company badges. Free for full-time employees, and, depending on the company, a nominal fee for contractors. No minimum wage workers or homeless allowed on these buses. These buses made the news when protesters in San Francisco and Oakland rioted against Google buses in 2013.

After riding the 522 for two months, I switched to an express bus that cut my overall commute to an hour each way. I drove the 280/85 freeway route to Mountain View for many years, suffering 45 minutes in the morning and 90 minutes in the evening. Driving beyond the 280/85 interchange to Page Mill Road in Palo Alto is much worse. I’m happy to pay someone else to drive while I read an ebook, listen to an audio book or take a snooze. Yes, like many of my fellow techies, I don’t miss dealing with the homeless or their overwhelming smell.

Some people get outraged that Silicon Valley, being richest society in America, can’t take care of the homeless. As I pointed out in the comment on The New York Times website, Californians love to vote on initiatives and propositions that decrease their taxes and increase their services. This is true for most Americans. Everyone wants services; no one wants to pay for it. Until that change, nothing else will change. Something to look forward to as baby boomers retire and the workforce shrinks in the next quarter-century.

New Mail Carrier Didn’t Get The Memo

If you lived in an apartment complex for a long time, say, nearly ten years, you get used to how certain things get done. The mail carriers, for example, never deliver the packages to the door. Most people aren’t home during the day and packages left at the door tend to walk. Unlike the apartment complex I previously lived at for a brief period of time (six months), the leasing office doesn’t sign for packages. The mail carriers puts the package inside the lock box or return to the post office, leaving behind a lock box key or pick up slip in the mailbox. This month a new mail carrier who didn’t get the memo.

I’m in the process of rebuilding my FreeNAS file server by replacing parts round robin style. I started off with a NZXT Source 210 case that can hold eight hard drives, moving everything out of the old Dell Inspiron 570 that I inherited from my late father in 2012. This case had a single 120mm fan and mountings for six more 120mm fans. I subsequently ordered a pair of DeepCool 120mm fans for the front mountings to blow air over the existing four hard drives. Despite being in a roomier case with larger fans, the file server was unstable unless I laid the case on its side and took off the side panel for the heat to escape.

Earlier this month I ordered a CompTIA Security+ certification book and a bar of orange hand soap from Amazon. I got a text notification that the package got delivered but it didn’t say which carrier delivered it. After coming home from work that day, I found no lock box key or pickup notice in the mailbox. No package at my apartment door, which was more likely with Amazon and meant that the package had walked. I waited a few days to see if the tracking information was incorrect. Still no package. I notified Amazon early Saturday morning and the replacement package from Las Vegas arrived 12 hours later.

I ordered another pair of 120mm fans from NewEgg. Like the Amazon package the week before, I got a text notification that the package got delivered. Not exactly. The package got sent from the east coast via UPS and transferred to the post office for local delivery. (NewEgg normally ships my orders from their west coast location.) The website tracking showed no movement from the post office. For the next several days, I waited for a lock box key or a pickup notice inside my mailbox. Still no package.

I contacted UPS, who told me that the package was no longer their responsibility after handing off to the post office, and NewEgg, who told me to wait a few more days for the post office to get its act together. A week after UPS handed off the package to the post office, I filed a claimed with NewEgg and requested a refund for the “lost” package. On the day I got the refund from NewEgg, I got a text notification that the post office delivered my package.

Still no lock box key or pick up notice in my mailbox. No package at my door. I noticed a NewEgg box sitting at the door down the hallway. This door typically gets Amazon boxes. I checked the address label on the box—and it was my package. Correct apartment number on the package, but left at the wrong apartment door. Now I had to go through the trouble of returning the refund to NewEgg, as I was keeping the package now that I got it.

Stepping inside my apartment, I noticed a pickup notice stuck to the backside bottom of my door. When I first moved into my apartment, the door had a half-inch gap at the bottom for envelopes and insects to come through. The electric company had an energy efficiency campaign a year later that got the leasing office to install weather-stripping on all the apartment doors. Somehow the mail carrier shoved the pickup notice through the weather-stripping. I came to the conclusion that the mail carrier was new to the job, and filed a complaint with the postmaster general.

As for the file server, I put the new fans into the top mounts to blow hot air out. Five fans didn’t improve things by much. The hard drive at the very bottom of the case was consistently overheating to make the file server unresponsive. This hard drive was also seven-years-old and overdue for replacement, which was the last thing on my to-do list. I moved the fan from the second top mounting to the bottom mounting to blow in cooler air. The hard drive stopped overheating. The CPU temperature ticked up a few degrees from the new flow of hot air. Another fan from NewEgg for the second top mounting should do the trick.

Not sure if the new mail carrier got the memo on delivering packages.

Coaching VTA Bus Drivers On Their Routes

VTAOne of the more curious sights at the start of the New Year was seeing VTA bus drivers studying a small handbook like monks examining scriptures. Whenever the bus pulled into a new stop, and the passengers finished boarding and departing, the driver pulls out the handbook to study the opened page for a moment. What’s the handbook? After several incidents where the passengers coached the drivers on driving their routes, the handbook listed the driving directions for all the bus routes. Some of those printed directions weren’t very accurate.

Since I started my new non-writing tech job six months ago, I liked my new commute of taking a five-minute local bus from my home, taking a 20-minute express bus to Palo Alto, and a five-minute local bus to my job. With 30 minutes of waiting between connections, it takes an hour each way. This is perhaps the most efficient route I have ever taken to work on the public transit.

The express bus had a new driver for Thursday and Friday afternoons. Like many drivers I’ve seen, he had a handbook nearby. He also had several 3×5 cards taped to the dashboard with handwritten directions. Leaving Palo Alto via Page Mill Road to southbound 280 was uneventful. When it came time to take the freeway loop for the Fruitdale Avenue stop, the driver drove past the southbound Meridian Avenue exit and took the northbound Meridian Avenue exit.

I leaned forward from my seat. “You missed the exit.”

“For real?” the driver said, dismayed. He glanced at his 3×5 cards. “The handbook says northbound exit.”

“Your handbook has a misprint.”

Everyone else in the bus became backseat driver and shouted directions at the driver. Most of those directions were wildly inconsistent for a confused driver unfamiliar with this part of San Jose. Being the closest person to the driver, I spoke up over the din behind me and directed the driver to take a loop-de-loop around the 280 on local streets to get to Meridian Avenue. The driver became more confident as the backseat drivers agreed with my directions and stopped offering alternative directions..

After the driver stopped at the morning bus stop for the express bus (the afternoon bus stop was across the street in the opposite direction), he crossed out “southbound” and wrote “northbound” for Meridian Avenue on his 3×5 cards. He hasn’t made that mistake again since learning his new route.

The local bus in Palo Alto never has the same bus driver in the morning. My coworkers and I often have to coach the new driver on the route. The location of where I get off from the express bus to pick up the local bus in Palo Alto is at an intersection in the foothills, a middle-of-nowhere place filled with rich joggers and poor jackrabbits. Most drivers don’t expect to find people waiting for a bus out here in the morning, and, if running behind schedule, will bypass this leg of the route to make up time.

One driver tried to drive on without picking me up. After I got into the street with both hands waving (this typically happens during a rainstorm), and my coworkers from inside the bus shouted at the driver to stop, I ran down the block to get on the bus. The driver told me that she didn’t pick up passengers at that stop. I told her to look up the handbook. She discovered that my stop was a time-point stop listed in the schedule—and she was ten minutes late.

Despite each bus having a GPS system that list turn-by-turn directions for each route, the drivers consulted their handbooks at each bus stop for the first two weeks of the New Year. Except for the local bus in Palo Alto which always has a different driver each morning, the drivers know their new routes as coached by the passengers.