Thursday, August 25, 2016

5 Fixes for Formula 1

The circus that is Formula 1 is more Telenovela than race series anymore.  Almost all the excitement and intrigue exists off the track while the races themselves seem like parades.  Modern tracks with near infinite run-off areas, attempts at cost cutting, ever changing and inconsistently applied rules, a façade of greenwashing, and the FIA's inability to manage the sport contribute to dreadfully dull races.  The troll that runs the show continues be more interested in placating dictators than actually putting on a show.  If F1 is supposed to be the pinnacle of motorsport with the most advanced machines then we'd get back active suspension, ABS, traction control and active aero among other things.  Here are my fantasy changes to the sport to mix things up, make the races less predictable, and generally more exciting.  While I'm sure Bernie Ecclestone would love to be able to charge me for the privilege of comments on Formula 1, I'm going to do the next best thing and give it to him for free.
Typical F1 Parade - Monaco 2015
Typical F1 Parade - Monaco 2015

Fix 1: Qualifying

This one is tough because for the 2016 season changes were attempted that made no sense and honestly wouldn't have affected results and were dropped after a few races.  But for the last two years, going on three, we've had one team so dominate qualifying that even the current format has become dull.

Flip a Coin

In GP2 and other series, qualifying sets the grid for multiple races with one race having a normal grid and the following a reversed grid.  F1 won't get around to having multiple races on the same weekend on the same track, so simply randomly choose at the completion of qualifying whether the cars will grid the race in qualifying order or in reverse.  To keep teams from attempting to get mid-pack positions, award driver's championship points for pole through 5th.

Fantasy Island

Scrap the current format entirely.  On Saturday, put all the drivers in Porsche Cup cars, run a 20 lap sprint race, and finishing positions of this race determine the grid on Sunday.  The grid for the qualifying race can be determined by the reverse placing of the previous race.  You won the last race, you start the qualifying race last, etc.  Qualifying stops being a test of who has the fastest car, but who is the best driver as they all get the same equipment.

Fix 2: Bring Back Testing

The biggest argument against testing has always been cost.  The teams with the most money could effectively run shadow teams and thousands of hours of running to develop the car and drivers throughout the season.  It's certainly how Ferrari was able to maintain dominance in the Schumacher era.

But we need testing.  The smaller teams are still losing out to the big money.  Instead of testing, though, it's computer modeling and simulators that are winning the day.  Additionally, new drivers are being thrown in the thick of things with almost no time behind the wheel of these cars.  This creates a safety issue with drivers like Pastor Maldonado never really coming to grips with their cars and causing many accidents.

So bring back testing, but in a regulated fashion.  Limit the number of hours of testing a team has between each race weekend.  Make that limit inversely proportional to the team's current world championship standing.  Your team is dead last?  You get 20 testing hours between the end of the race until the following Friday practice.  Your teams is first?  You get no testing hours, 2nd in the standings gets 2 hours, 3rd gets 4 hours, 4th gets 6 hours, 5th gets 8 hours, etc, etc, etc.  Use the time before the next race weekend or lose it.

Fix 3: More Engine Development

This one is tough in the current environment.  With so few engine manufacturers participating in F1, it would be difficult to regulate engine development the same way as testing.  But if engine development was available throughout the season the more makes might be interested in being in the sport.  The rules were tweaked after Honda's return and abysmal showing.  They can be tweaked again so we can try and get more parity.

The maths here would be less than straight forward.  Aggregate and average the teams constructor's points and rank the engine makes.  Then allot "tokens" inverse to the rankings.  

Fix 4: End Fuel Restrictions

Hyper-miling a race car should be anathema to the sport.  It makes no sense.  You want to watch a race that's environmentally conscientious, go watch the World Solar Challenge.  Taking a car that makes 8mpg and forcing battery packs and electric motors on it so it makes 9.5mpg is not being environmentally sound nor makes the cars relevant to production models.  It's not even greenwashing.  It's just dumb.

I've accepted that refueling won't come back to F1.  The sport has become too risk averse to allow any potential injury to occur, especially in the pits.  A 1.97second pit stop is an amazing feat and a super coordinated ballet, and maybe 7.5seconds is too long for a pit stop.

If we aren't going to get refueling and have a fixed fuel tank size, then at least remove the fuel consumption rate limits.  Better yet, no refueling, no tank size restrictions, and no consumption rate limits.  If you can go the full race distance on less fuel and win because your engine is more efficient, that's a bonus.  Fuel is weight and weight is enough of a penalty.  During the RedBull run of four consecutive world championships, the Renault engine was well known be down on power by 10-15hp to the Ferrari engines at the time.  But they were more fuel efficient, so Sebastian Vettel could start the race on a lighter fuel loading to pull away from the pack.

Fix 5: Consistent In-Race Reviews and Penalties

Whether it's worse now or has always been bad could be a whole series of articles.  This problem plagues many sports, especially at the professional level.  How do you make sure the rules are applied equally and consistently across the teams, players, games?  The NHL and MLB both instituted a centralized replay review system to even out the uneven officiating along with changes in referee training.

How Charlie Whiting applies the regulations appears to be based completely on whimsy and is otherwise opaque.   As an example, during a race Jenson Button was given a drive-thru penalty for a radio communication violation adding about 23 seconds to his lap time and dropping him several places.  Nico Rosberg finished the race dragging this front wing and spewing carbon fiber debris all over the track for a third of a lap and had 10 seconds added to his race time resulting in no position changes.

The radio violation was so ridiculous, that the radio ban regulation was dropped after that race.  Rosberg not only caused an accident that amazingly only hobbled his car, but then proceeded to make the track more dangerous for other drivers by not stopping his car per the regulations.  How was that not a disqualification?  Only Charlie Whiting knows.

If the FIA wanted to get serious about regulating the sport, then the first thing it needs to do is make sure its designated officials at the track actually know how to apply the rules in an unbiased fashion.  Many have expressed that FIA stands for Ferrari Interference Association, but clearly they have a love of another manufacturer these days.

Summary


  • Either randomly reverse the grid before the race or have everyone qualify in the same car.
  • Allot testing hours to teams based on constructor championship standings.
  • Allot engine development tokens based on overall average constructors' points.
  • Stop rate limiting fuel consumption.
  • Apply the sporting regulations consistently and apply penalties quickly.

Tuesday, August 9, 2016

Simple Alert Paging with Slack Push Notifications

Frustration with my home network's WAN connectivity randomly flapping and being somewhat cheap led me to see if I could get paged without having worry about email relays or paying for your traditional notification service à la PagerDuty (pricey) or VictorOps (unreliable).

The first order of business was to write up a simple script to perform some checks against my home network.  It's a simple shell script run through cron that maintains a running log of check attempts and results.  Each time it runs, reads the last result, performs new checks, and if the state changed from the previous attempt, then send out an alert.

The code for the script is below or check it out at GitHub.
#!/bin/bash ## Very basic check to see if home network is up. ## First attempt SSH connection to server. ## If this fails, then attempt to ping router. ## Record result of check to logfile. ## If current check status is different than last check status ## sent message to Slack via webhook ## Host and SSH port to check hName="[HostName]" port="[Port]" ## Slack Hook and Channel slackWebHook="https://hooks.slack.com/services/[WebHookLink]" slackChannel="@[SlackUserName]" ## LogFile to maintain check state. logFile="/[someLogDirectory/check-home.log" ## Send a color coded message to Slack function notifySlack () { status=$1 hostname=$2 result=$3 case "${status}" in OK) color="good" ;; WARNING) color="warning" ;; CRITICAL) color="danger" ;; *) color="#909090" ;; esac payload="\"attachments\": [{ \"title\": \"${hostname} status is ${status}\", \"text\": \"${result}\", \"color\": \"${color}\" }]" if [ ! -z "${slackChannel}" ]; then curl -s -XPOST --data-urlencode "payload={ \"channel\": \"${slackChannel}\", ${payload} }" ${slackWebHook} > /dev/null 2>&1 else curl -s -XPOST --data-urlencode "payload={ ${payload} }" ${slackWebHook} > /dev/null 2>&1 fi } ## Get previous status lastEvent=`tail -1 ${logFile}` lastStatus=`echo ${lastEvent} | awk '{ print $4 }'` ### First Check Host if SSH is up. results=`echo QUIT | nc -v -w 5 ${hName} ${port} 2>&1 | grep -v mismatch` res=`echo ${results} | awk '{print $5}'` ## Check connection status, set to WARNING if this fails if [ "${res}" != "open" ]; then echo `date +"%h %d %T"` WARNING $results >> ${logFile} status="WARNING" ## Try pinging host results2=`ping -c 5 ${hName} | grep packets` percent=`echo ${results2} | awk '{ print $6 }' | sed -e 's/\%//'` if [ "${percent}" -gt 0 ]; then echo `date +"%h %d %T"` CRITICAL $results2 >> ${logFile} status="CRITICAL" fi else ## Otherwise we are okay echo `date +"%h %d %T"` OK $results >> ${logFile} status="OK" fi ## Do we notify Slack? if [ "${status}" != "${lastStatus}" ]; then results=`tail -1 ${logFile}` notifySlack "${status}" "${hName}" "${results}" fi
The script is run simply through cron and I have it scheduled to run every 2 minutes from a machine outside my home network.  For myself, I don't have the script post to a channel, but rather it sends a direct message.  Then in my Slack notification settings, I make sure it sends a push notification for direct messages and for certain words/phrases.
 In the above, the system alerted when its SSH check against my home machine failed.  I only consider this a warning as the overall network could still be okay.  The logic flow dictates, that if the SSH fails, then it attempts to ping the router.  The below shows an alert and recovery related to the WAN interface dropping off the Internet.

Overall, it works pretty well.  Using a script and cron is pretty rudimentary monitoring, but it accomplished the basic need.  These alerts have allowed me to narrow down my search through the logs from my home router to track down its problems.  

Saturday, March 26, 2016

Found Item: Retroactive Fortune Cookie

Fortune: You would do well in the field of computer technology.
Well, duh!
I received this fortune in a cookie from lunch the other day.
  Lunch was catered Chinese
    in the office of my current employer;
      an Internet technology start-up
        where I stand in front of computer screens
          For large portions of the day.

I manage a team of computer people.
  More often called System Administrators, or
    Network Administrators, or
      Site Reliability Engineers, or
        Site Reliability Operators, or
          IT, Ops, or DevOps*.

Some of my time involves meetings
  with software developers and engineers
    solving software and service architectural problems
      and coming to agreements on how to progress forward.

Sometimes I even write code
  something I've been doing since 1983.
    Other times I setup, configure, and maintain
      large scale Internet infrastructures and web services.
        The combination of those two functions has been my profession since 1993.

Over 20 years in this field.
  It doesn't really seem that long.
    Probably because I've done well by it
      And for the most part enjoyed the work very much.

I guess this fortune cookie turned out true
  If maybe a bit after the fact had been well settled.
    Had I received it 30 years ago, though,
      I would've just said, "Duh, I'm going to do that anyway."
* I consider DevOps to be an organizational structure and philosophy focused on development and operational practices.  It is not IMHO a job title or position.  Using it as such is frequently a sign that someone doesn't know what they are talking about.

Alcohol content: a wee dram (Macallan Fine Oak 21 Year)

Friday, March 25, 2016

Still Life with Data Points

I've spent my life recording numbers to generate graphs to make sense of the world.  The numbers are what's important, but humans do not really gain comprehension staring at rows and columns of numbers.  The human brain is made for visual processing.  A glance at a well plotted graph can present more value than attempting to read through the millions of data points that made up the graph.  The plot illuminates the data and should allow a reasonable person to intuit meaning.  I've probably tossed many kilograms of notebooks filled with data sets and plotted graphs.  Almost no one ever cared about the numbers, just the resulting graphs.

Figures at Work

I've used GIFs generated with ancient versions of GNU Plot  to analyze performance data.  The pain of creating the graphs turned justified when insights were gained from simple visualizations.

File transfer comparisons
From: File Distribution Efficiencies: cfengine vs. rsync
Certainly, in my line of work pretty pictures help explain what's going on to a wider audience than the raw numbers.  You can immediately look at a picture and notice when something appears out of the ordinary.
Server CPU Utilization
Maybe we should look at why the CPU load just spiked there.
Or...
Elastic Search EPS
Maybe things are happily cycling along.

Other times, I've needed to translate the data to justify costs or ways to lower costs.  The following graph helped start a conversation with finance to purchase Amazon AWS Reserved Instances.  A full multi-sheet spreadsheet explaining the financial breakdown was still needed for full justification.  But without this and few other pretty pictures, the discussion and the approval of the up front costs would never have happened.
AWS Instances
How many EC2 Instances are we running?
But that's just work and part of the expected drudgery of justifying your department's daily existence.  You do them like annual reviews and power point presentations; get them done to prove your point, then try to get back to real work...  Unless you are a scientist (data or otherwise), in which case, collecting data points and graphing the results might be your real job.

Zen and the Art of Keeping Track of My Car


But even before I ever had to plot a graph in school, I watched my dad keep a small notebook in every car to record the mileage, fuel added, fuel costs, etc.  He'd calculate the MPG since the last fuel stop and record that, and then reset the tripmeter.  He'd also indicate when he'd perform an old change or some other service on the car.  It was a valuable service record for the car.  Noticing a change in MPG could also indicate that something .  I continued the tradition when I started driving my own cars.  And it didn't take me long to realize there was so much more information in those numbers if I could plot them.

Automotive gas prices clearly cycle over time, but over the years have been trending down in Northern California.  The slight uptick at the end could mean summer prices are coming.  But in this case, it's more a matter of which town I needed to get gas.
Premium Gas Prices ($/gal) Over Time
Premium Gas Prices ($/gal) Over Time
How's my driving?  So as I drive more, a higher percentage of my time spent in this car is commuting.  Commuting seems to be so much more fuel efficient than track days and auto-crossing.
MPG
Fuel Efficiency (or lack therof)

I'm driving this car a whole lot more now.
Trip-o-meter vs Odometer readings
Trips vs Odometer
Example Google Sheets Logbook

Always Look on the Bright Side of Life


Maybe all this tracking, accounting, and graphing is sign of some compulsion on my part.  Certainly when it comes to question of my personal health, I become obsessive about tracking as many variables as possible.  There have been a few times when I've been not entirely healthy and the cause was not immediately apparent.  When a doctor or group of doctors become interested in you, life becomes less than pleasant.  On more than one occasion, after months of specialists and testing my body has sorted itself out.  Whatever was wrong resolved itself with no definitive answer for a cause.  The interminable wait between lab results and doctors visits, though, left for too much time for fidgeting and speculation.

Until wearable medical devices came around, I kept log books.  During one of these months long investigative sessions my log filled dozens of composition book pages.  Over three months I documented when symptoms would occur, the severity, duration, what remediation steps were taken, and their efficacy.  One specialist upon reading through my notes suggested I was adding to my general stress levels.  He did not come right out and suggest this additional stress was the cause of my ills, but I suspect that was on his mind.  I won't discount that possibility entirely.  But sitting around waiting for something to happen and someone else to do something felt worse.

With a wearable, especially one that can track heart rates, the paper log book becomes a bit less necessary.
Resting Pulse over Months
Resting Pulse over Months
There's still a lot of manual data entry than has to go on, but apps like Apple Health and My Fitness Pal make it less tedious.  Apple's Health app has horrible graphing in my opinion and without paying for it, it's difficult to get all your data out of FitBit.  Using QS Access on the iPhone helps to move the data points into a spreadsheet like Google Apps or Excel where you can manipulate and visualize the data.
Blood Pressure Measurements over Months
Blood Pressure Measurements over Months
I still don't know what's going on with my current malady.  At least by recording data points and making graphs I feel like I'm doing something for my treatment while I wait for the next test or visit.


Alcohol content: measurements not recorded

Sunday, March 13, 2016

Running Multiple Separate Simultaneous Chrome Processes

Even before BYOD further blurred the lines between work and home life, employees used their corporate supplied devices for personal use. Regardless, keeping personal browsing separated from work related browsing is a good idea. Perfect hygiene would dictate using different computers for personal and corporate use, that's rarely ever happens. There are a number of different ways you can use the same computer for both personal and corporate browsing including having separate accounts on the machine (if you have permissions), running personal stuff in a virtual machine, or running different browsers for each purpose.

The last is probably the easiest and I have a co-worker who claims to run 5 different browsers on his laptop just for this purpose. Mind you, there are a lot of other reasons for wanting to run different browsers for different purposes. You could be running different browsers for testing, performance, and security reasons. I'm not going to delve into that. I'm just focusing on using the same browser for different tasks that are isolated from each other.

In this case I'm using Google Chrome and I want to use it for both personal and work-related browsing. I also need to make sure to keep the activities of one isolated from the other. Using private browsing for personal stuff might suffice in many cases. Since I sync stuff among personal machines, though, private browsing won't work. Instead, here's how I run multiple instances of Chrome on the same machine at the same time.

The following are instructions for OS X, but should work similarly on a Linux desktop adjusting paths as necessary. I haven't touched a Microsoft Windows PC in nearly a decade, so I have no idea how to pull this off there.

Initializing a New User Data Directory

Chrome stores user configurations, extensions, bookmarks, cookies, caches, stored forms, and other transient data in a user data directory. Knowing this, you can setup different data directories for each type of "user" while having just one Chrome binary installed. Here are the steps to get that going.

The default location for Chrome to store the user data is /Users/[username]/Library/Application Support/Google/Chrome/. I use this default for my work account. To create and initialize a new user directory perform the following tasks in a Terminal window.
  1. export chromeApp="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
  2. mkdir ~/Library/Application\ Support/Google/Chrome-personal
  3. "${chromeApp}" --user-data-dir="/Users/andy/Library/Application Support/Google/Chrome-personal" >/dev/null 2>&1
Notice that in the quoted line in item 3 you need to use the full path to the data directory. Tilde (~) expansion will not work within the quoted string.


The last command should start up a new Chrome browser. First Chrome will pop-up with a "Welcome to Google Chrome" window. Upon clicking "Start Google Chrome" it will populate the Chrome-personal directory with initial user data, and then bring forward a browser window. This will ask you to log into Chrome. Whether you do that is up to you.

With the new Chrome window open, you will need to install any extensions, bookmarks, etc you want to customize this browser. I would highly suggest setting a theme to this window so that it is easily visually different from any other copies of Chrome you might run at the same time.

Lather, rinse, repeat for any additional entities you'd like to create.

Startup Script

I wrote a simple shell script to start my browsers up with the requisite user directories. Since Chrome is set as the default browser on my system, it is important to note that the first Chrome process started will be the one that gets used for opening new links from other applications. In the example below, this makes my personal session the default for new tabs/windows from other applications.
Chromes.sh – gist link
#!/bin/sh

## Chrome App
app="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"

## Non-default user data directories
usrDir="/Users/andy/Library/Application Support/Google/Chrome-personal"

## Fire up Chrome
"${app}" --user-data-dir="${usrDir}" >/dev/null 2>&1 &
"${app}" >/dev/null 2>&1 &

## If Chrome is default browser, then the first process fired will be
## where new links/tabs are spawned from other applications.
Remember to chmod u+x chromes after you are done editing.

You can now fire off this script from any open Terminal window. Or you can do the following to make it run when double-clicked in the Finder.

Make a Shell Script Run Like a Native App

In your Terminal window perform the following:
  1. mkdir -p ~/Applications/Chromes.app/Contents/MacOS
  2. copy your shell script to ~/Applications/Chromes.app/Contents/MacOS/
    • e.g. cp Chromes.sh ~/Applications/Chromes.app/Contents/MacOS/
  3. open ~/Applications/Chromes.app/Contents/MacOS/
Chromes in Finder
Chromes script in Finder
In the Finder window that opens, select Chromes.sh and type ⌘-i to open the information pane for the shell script. Then change Open with to Terminal.app.
Chromes Finder Info panel: Open With
Open with Terminal.app
Run open ~/Applications to open a Finder window with the local user Applications.
Chromes.app in Finder
Chromes.app in Finder
Select Chromes.app in Finder this type ⌘-i to open the information pane for the Application. Download and open in Preview the following png file. In Preview select all (⌘-a) and copy (⌘-c) the image. Then select the Icon at the top of the Application Information pane and paste the image (⌘-v). You will see the size of the application change and after a few seconds the Icon for Chromes.app will change as well.
Chromes.app Finder Info
Chromes.app Finder Info
You can now double-click the Chromes.app and fire up your multi-Chrome browsers. You can also drag the Application Icon from the Finder into your Dock for future use.







    Example Icon





The Results:
Two Different Chrome Processes
Two Different Chrome Processes

Alcohol content: low (clearly huffing glue)

Thursday, March 10, 2016

Found Items: Violators will be prosecuted.


Parking at one of the Veritas/Symantec building in Mountain View and I saw this posted on a nearby dumpster enclosure.  Considering that this particular piece of real estate has cycled from Fairchild, National Semiconductor, Cisco, Netscape, AOL, VeriSign, Symantec, Veritas, and is owned now by Google, I was surprised and depressed that this is about the only relic from that first dot-com boom.

I probably already have co-workers who look at Netscape as a historical item in the same way a PDP-11 was to me.

Alcohol content: stone code sobriety (a 40 poured out in memorial)

Wednesday, March 2, 2016

Getting Merged: AOL vs. Netscape

1999...
One day I worked for a company I liked and then next day I was part of a major corporate conglomerate. The days before the deal everyone was told from the highest levels that things would not change so much– at least not for a while. Reassurances were made that certain people would keep there jobs and that those jobs would be crucial to the new merged company. Mostly we were told that this was a merger and not a buyout. All that changed the day the deal was completed.
The HR department ended up spending the entire night processing the list of people who would get laid off the next morning. Then there was the paperwork that needed to be generated for the people would would allowed to stay. No longer would you be an employee of Netscape, but an AOL drone. The offers to stay were boilerplate and everyone was given a generous gift of 100 stock options. The options though, were completely worthless at a valuation of $108.00 on an already sinking stock. Many people left after the deal even though they had not been laid off. Many people left before the deal with completed on shear principle. Others, like yourself, stayed on, still believing that there really wouldn't be that much change and that things could not get that bad. 
Initially, after the shock of the layoffs was over, things had stabilized and were fine. Life was nearly normal. For a few months nothing really changed except some additional responsibilities and the addition of a new project. The drink machine remained free and the price of snacks didn't change, so overall, everything was fine.
Work continued and a new project lent itself to discovering more and more disturbing things about the "merger." Since the computer systems that would run this new service you were about to bring up would be housed in AOL datacenter space, you ended up having to deal with more AOL personnel than would normally be the case. You discovered their internal disorganization and the great inertia to change. There was one way to operate and that was the AOL way. Even when that way was old and outdated and served no function, that was the only way to operate. Groups within AOL were highly compartmentalized and there was little to no communication between groups. Attempting to get the AOL NOC to get in touch with the persons responsible for a machine was a nightmare of fruitless hunting. They didn't have the answers and it took them hours to find the answer. Then, typically, the person in question would be completely unreachable except from their desk.
The event that broke the camel's back, though happened one lovely Thursday morning when a PDU (Power Distribution Unit) failed back at AOL's main datacenter. Even though all your machines had dual power and been specified as being powered through redundant PDUs, they were down. The first call to the AOL NOC went something like this:
"Hi, this is Andy from Netscape Operations, and the servers in section Z, row 24, cabinets 4 through 9 are unreachable. What's going on?'
The NOC drone responds after a pause, "We had a PDU fail, sir."
"Those machines are dual-power they should be on a redundant PDU."
"Uh, I don't know. I'll look into it. What's your number so I can call you back in a half hour."
A half-hour was the minimum turn around time for any NOC request, I would come to find out.
"Wait," I asked, "What's the ETA on the PDU getting fixed?"
"Not sure, sir," the drone responded, "I'll get back to you on that."
For thirty minutes, I ping and retest to see if the site has returned. At the fifteen minute mark, per Netscape protocol, I escalate up the chain of command to let folks know what's down and why. The lack of an ETA doesn't make anyone happy. A few minutes after the 30 pass and I get my call back.
"What's the story," I ask without allowing for a greeting.
"The PDU will take another 4 to 5 hours to replace. Then everything should come up."
"WHAT," I shout down the line, "These are production systems. They shouldn't have been allowed to be down this long. Why aren't the secondary power plugs in a different PDU?"
"I don't know. The ticket on the order for power was closed as completed."
"Well, can we get someone to change the plugs now," I ask attempting to calm down.
"I could create you another ticket. But since all the power folks are working on the PDU, I doubt they'll be able to look at this until Monday," the drone responds without emotion.
"Make the ticket and escalate it sev 1," I demand.
The ticket gets made and I'm told I'll get a call back in another half hour on the status of that and the original PDU.
Through the regular half hour calls, I badger my management chain to bug their AOL peers. The lack of availability by desk phone, mobile phone, email, or pager strains credulity. While contacts are made and home phone numbers exchanged, no real progress is made. In slightly more than four hours, the replacement PDU comes online and my servers start lighting up. But not all of them.
I call the NOC, "Has power been completely restored?"
"Yes, sir."
"Some of my servers are not coming up. Can you check if they have power?"
"Sure, let me get back to you in a half hour."
The typical response and not unexpected. At least at this point I have more work I can do to continue restoring the system. By the time I get the call back to tell me that the machines have power and show as on, I have a theory as to the problem.
"Can you get someone on the console and have them type boot on the following machines," I ask the NOC drone.
"Sorry, I can't do that."
"That's fine. Just find someone who can."
"No, sir, I can't have anyone do that until after the change freeze."
A change freeze is where nothing is modified within a system for a given amount of time in order to ensure stability. It's fairly standard practice, but usually break-fix does not apply.
"What do you mean there's a change freeze? This is a production system which is down. It should've been back up hours ago. When can someone get in there to fix it?"
Without a sense of urgency the drone responds, "The freeze is in effect from four pm Thursday through Monday at 9."
In a fit of apoplexy, I hang up my cell phone and then start slamming the receiver of my desk phone. The latter being so much more satisfactory. Running to find my VP, I explain the inanity of the situation with far too many expletives to be politically correct. A few calls and 45 minutes later some monkey is in the datacenter typing boot on about a dozen servers and validating that they come up.
After giving the all clear, your boss and VP come over to tell you to go home.
"You can write up the post-mortem later in the week. Get some rest." "Yeah, you look like you might kill someone."
I apologize for my behavior and slouch in my chair.
"It's fine," explains the VP, "They need to learn from us. It is completely unacceptable how much of their infrastructure is down at any time. And the lack of response is really bad."
I shrug as they leave and pack up my gear and go home.
As much talk as their was about AOL learning from us, the fiefdoms and bureaucracy were too well entrenched to really change. Netscape was just another conquered bit of territory. Bits of it were shut down or given away to partners. Over time almost everything was moved from California to headquarters in Dulles, Virginia. Before that happened, though, I left for a startup. It was a better choice than waiting to get laid off some other week. It was a better choice than walking around the empty sad halls of Netscape.
A startup. That was the ticket...

Alcohol content: None (They killed Beer Friday)

Monday, February 29, 2016

Found Items: CD case opener


Gather around children and hear my tale of years yonder when music was consumed on physical media.  The primary form factor of the late 1990s through early aughts being the Compact Disc or CD.  These fragile plastic discs came in a protective shell of even more fragile plastic that was designed to shatter while attempting to remove the protective plastic film that wrapped the shell.  So the device seen above was invented to slice open this plastic film in hopes that you could retrieve your CD without anything breaking.

The particular example above came from my short stint at Napster after they had been shut down by the courts, but before they filed bankruptcy and sold everything to Roxio.

I'll have to check if these work on Blu-Ray cases before those go obsolete as well.

Alcohol content: Pliny (beer)

Sunday, February 28, 2016

Please Nuke 2016 Already

I'm fairly ready for this year to be over.  I was actually fairly ready before January ended, but decided to wait and see.  February is drawing to its short close at this point and with a +/- margin of 5%, I'm 70% certain I could be done for the year.

Either it's karmic retribution for some truly bad choices I've made over the last couple of years, or my warrantee has expired.  Things have gone from bad to worse with a few moments of greatness and a lot of sadness.  The background noise of another person of note dying this year just adds to the general mood.  I'm certainly done with the shouting match that's become of the election season.

It would seem that a recurring upper respiratory infection has taken a hold of me.  Each cycle lingering longer with more convulsive coughing fits and lung butter.  Cops have taken to staking out my domicile as a potential meth lab.  My pharmacist must have narced on me with my frequent and regular pseudoephedrine purchases this year.

Whatever I've got appears to be a viral infection.  Chest x-rays and other tests always come back negative for bacterial.  Some ingested and inhaled steroids are the call to order to kill that off for good.  And this time, the doctors mean it.

If that were my only problem, then I'd tell myself to shut up and stop whinging (actually, I do that anyway, but I keep typing nonetheless).  Because for added fun, I've gone four 12-lead EKGs, a chest x-ray, and a CT scan in February alone.  Three different blood draws were done in the last 7 days.  On the blood panels, everything looks damned near normal.

So at this point, all the doctors can't seem to understand what's going on with the Tin Man.

Monday is a new day, with more doctors.  Maybe some answers will come.

Alcohol content: other (cough syrup codeine counterindicated)