Brett’s Drunken Tech Ramblings

Steve Yegge once wrote an internal blog at Amazon that later became a public blog not at Amazon called Stevey’s Drunken Blog Rants™. Anything I do here is a poor approximation of those masterpieces but we must all have mentors to look up to and convince us we are still terrible. So this is a Friday night, three glasses of wine and possibly one more on the way rambling about what I’ve been thinking about in tech today or this week or possibly it will devolve into kitten videos. Who knows.


Lots of thinking lately on old code, rewrites, fancy new technologies and a monstrous Windows Service that can’t be opened in anything other than Visual Studio 2010 led me to that tweet. There was a brief conversation around whether that was true and that led me to start thinking about analogies for code and applications and the crap we produce on a daily basis. I recently read this article on building technical wealth instead of accumulating technical debt. I’m not sure that’s actually possible outside the concept that an application can make enough money to justify it’s existence. Still, one part of the article stands out and thats this item:

Stop thinking about your software as a project. Start thinking about it as a house you are going to live in for a (very very very very interminably) long time.

I added that part in parentheses but still, that concept is at the heart of my original statement that all code is technical debt. Almost no one pays off their house in less than 30 years and frankly, most people buy a new one and up their mortgage and don’t pay off a house for 40 or 50 years. All that time they have a house payment not to mention yard work (done by the Mexicans Trump wants to eliminate) and dishes and maintenance and whatever else you do with a house. And because so few of us have 15 year mortgages, we pay 40-50% in interest but it’s invisible because it’s just a monthly payment.

It’s no different with code. When an application first hits production, it’s like signing that mortgage. Except most of us treat our code like an acid driven hallucination powered by Home Depot. Instead of just making sure the plumbing is solid and cleaning the gutters and painting the shutters, we build a second wing, add on a third floor, tear out the garage and make it a disco parlor. And slowly (or quickly in some things I’ve seen) the second law of thermodynamics starts to kick in and soon we have chaos. Making a change means a week of testing. Deleting that third floor no one wants is impossible because maybe our fourth cousin by marriage is actually living up there and we don’t want them to be homeless (or worse, living on our floor). Just like it gets harder and harder to keep our bodies in shape the longer they are around especially if the only shape they’ve ever really been in is “round”, it gets harder and harder to get the code into shape.

And so then the day comes when we get a new management structure who believes us when we say “it’s all a bunch of technical debt” and they say “rewrite it” ignoring the fact we wrote the first part of it and off we go to creating a whole new piece of technical debt that can’t possible even do what the original piece of crap did because it evolved over time with the business and so the new piece of crap is hated and eventually gets thrown away entirely.

The moment you write a single line of code, it’s legacy code. I don’t even care if it’s covered by unit tests like Michael Feathers says it should be. It’s legacy. And some day the tests will get thrown away because they take too long to run and they have to wire up 14 dependencies in IOC because that’s how we roll and then you’ve got crap. Keeping a system running smoothly with a minimum of debt requires a Herculean effort that frankly is almost non-existent in the software world that I inhabit. Then you say microservices will fix everything but you don’t add any logging or monitoring and everyone quits to work at remote jobs and the CEO thinks it’s NHibernate that’s causing all the problems when really it’s just the fact that none of us can manage to maintain our damn cars very well much less a complex system written over years of changing business requirements. Maintenance is hard. It’s harder than writing a bunch of new crap in the latest hot technology. But no one pays hundreds of thousands of dollars for maintenance programmers because that’s what the people in India are for. Never mind that they can’t read the output of a build program to understand why something broke.

It’s all technical debt. Maybe the people who work at Google would disagree but all the software I’ve seen in the business world is technical debt and we’re drowning in it the same way the world is drowning in regular debt and some day the bill will have to be paid. But maybe you and I will have moved on to cushy jobs that are greenfield or at least have “Consultant” in their titles.

On a happier note (unlikely, this is a drunken blog rant), I listened to the first half of this podcast with Jay Kreps on Kafka Streams and it got me to thinking about what streams are and how they are underutilized in most of software. Kreps’ definition of a stream (paraphrased) is that it’s the mashup of batch processing and future services. You write a service to process events in the future. You write a batch process to process events in the past. Streams are this lush, fertile middle ground where you can build near real time apps using a tool like Kafka.

The canonical stream I think of is a data analytics stream like click tracking or user actions on a website. But I started thinking about streams as a replacement for jobs, jobs that are almost always written as batch processes but invariably should just be a stream. We have a job at work that’s happily run for years. Until recently when it seems to be the main culprit in tipping over the database occasionally (which is similar to but not the same as tipping over a cow, a pastime I am only tangentially familiar with as an Amarillo native). This job only processes 500 or so records at a time so how could it possible tip over a Mae West size database? Maybe the data is bad. Which it is. This job cancels certain customers for a variety of reasons and frankly is a batch process job only because it’s easy to do such a thing.

But in reality, this is just a stream, a stream of events that cause my company to want to cancel a customer. If you turn this into a stream, not only do you have to worry less about tipping over the database (because the processing is spread out over time and space), but you can also begin to action on the events, possibly monitoring the performance or the number of cancelations or a whole host of other things you can do with a stream along with the main activity.

There are streams everywhere but we treat them as chunks of past events because processing chunks of past events as batches is easier from a technological perspective or at least it has been up until now. But streams make more sense in almost all cases.

Speaking of streams, the kid needs a diaper and it’s past 10 PM which means I’m turning into a pumpkin.

Weekend Activities

We are now T-minus 11 days and counting until mini-me makes an appearance. We know this because yesterday we picked a delivery date which is a little like picking a date to burn down your house or to marry a schizophrenic. Typically these things just kind of happen and at least you have the benefit of the surprise. Here, we know full well when life is going to CHANGE in a capital sort of way. Before all the natural birther types in the audience start sending me hate mail, this isn’t a lifestyle choice unless you consider crazy high blood pressure and possible seizures a lifestyle choice. There are extenuating circumstances that require us to bring the demon child future Bambi killer sweet angel into the world. Because we are sympathetic to the natural birth strategy (we did spend every Tuesday night for 8 weeks going to a Bradley birthing class, for heaven’s sake), efforts are underway to avoid or at least mitigate some of the modern miracles of birth science whereupon you show up to the hospital and they convince the previously unwilling uterus of the expectant mother to decide Man actually does know better than Mother Nature using drugs like Pitocin which your natural birthing Bradley teacher thinks is somewhere on the scale of Mexican tar heroin in the drug universe. Some of the aforementioned efforts at convincing said uterus to naturally decide it’s time include borage oil (don’t ask, I didn’t), acupuncture, foot massage and a witch doctor dance we learned down on Elm Street in Deep Ellum one night. I kid. Only partially.

All that is the long way to say life changes are coming so the final todo list is underway. Today’s activities included mowing the jungle and planting two peach trees that had been purchased several weeks ago on a half price sale. The yard was a jungle because I made the mistake of fertilizing two weeks ago right before it rained 3 feet and apparently fertilizer makes grass grow. A lot. Who knew. I did not fertilize last year because I don’t actually like to mow the 8000 acres any more than is necessary according to city code. This year, I guess I looked in the future and thought “Mowing is probably way better than changing a diaper”. Concerning the peach trees, for several weeks in April and May, I had regularly monitored the prices of fruit trees at Lowe’s and Home Depot, knowing that they always had too many trees and that they would have to put them on a half price sale at some point once the hellish temperatures of North Texas became imminent. And they did, right on cue so I picked up two peach trees, a La Feliciana and a June Gold. I’m pretty sure this happened May 14th which by any basic calculations is a month ago. However, it takes me at least two weeks to finish any project so the pressure of a living creature like a peach tree meant it took four weeks to decide where to plant them. Finally I did. Today. So they are out on the edge of the property because peach trees are only pretty about two months out of the year and there is a city owned lot that direction that regularly imitates the Amazon rain forest in growth characteristics. Perhaps the trees will block the view a bit. The June Gold is planted nearest the street which is only mentioned so that I can remember next year when I wonder which is which.

The other main Saturday activity was taking a box of magazines to the library to donate. The funny story behind that is that last year some time, M got a form letter from Delta Airlines saying that she had X number of miles that were about to expire and they weren’t really enough to fly from Dallas to even Fort Worth so maybe she’d like to spend them on some magazine subscriptions. Because we are readers and also because we are idiots, we thought that was a fantastic idea. While we did not have enough points to take a Greyhound to the airport, we did have enough for 5 magazine subscriptions. Note, we already had 3 or 4 magazine subscriptions including Garden & Gun which I love but haven’t read lately (like 4 months) because we have a hoarder’s stack of other magazines to read and Kiplinger’s which is perfect bathroom reading because nothing in it requires any focus. This story reminds of the days of Columbia Music House where you went through the catalog picking out the 12 free albums plus the three bonus albums for a penny more. Probably not worth retelling that one. I’m sure you have had the same experience. So we picked out five subscriptions. While I cautioned strongly against any weekly rags, both Time and the Economist were chosen along with Fortune, Vogue and Western Horseman. One of these things is not like the others. I’ll give you a few minutes to work out which one. However, that one (assuming Western Horseman is the one you chose as the black sheep) is the only one that regularly gets read cover to cover. If I can’t live on a ranch in Montana, I can live vicariously through those who do. Time never gets read and the Economist only barely. Frankly, the pressure of even getting the Economist, knowing the postman delivers it probably thinking someone important lives here, is more than I can stand. It haunts me. I have dreams about throwing away unread issues. There are probably 6 Vogues still in the wrapper and Fortune turns out to be worse than Kiplinger’s when it comes to useless advice. At least Kiplinger’s actually analyzes stocks and stuff.

So right off we knew we had to atone for the small Asian rain forest that was being sacrificed monthly to deliver magazines to our house. I found out that the library took donations and started boxing up the hoarder’s paradise. I envisioned small unfortunate children without the ability to ruin their lives with magazines from Delta finding the Economist and resolving to change the world. The library probably throws them away since it’s a British magazine and we live in Texas. I digress. M said 3 months ago when she was still mobile that she would take the box on Tuesday to the library. I think this may have been in early April only slightly before I bought two peach trees. This morning, as I sat on the couch trying to write code, Picasso the cat started staring intently at the box which always means he is either about to poop or there is an insect close by. Based on the sounds in the box, I knew it was the latter. So once it got light, I dumped the box out on the front step, killed the small baby Kafka-like creature that was stuck in the box and put the box near the back door to take to the library post haste. I traded seven thousand magazines for This Side of Paradise which is what I assume life is about to be about. What side that is, I have no idea.

All this and it’s only Saturday. Maybe tomorrow I’ll cure cancer. Or perhaps even finish the sprinkler project I started three weeks ago. We all need goals.

Caprock Canyons Aoudad Hunt


Alone on the highway again, Bob squinted at a wadded quilt of cloud crawling over the sky. There unrolled beside the Saturn the level land, every inch put to use for crops, oil gas, cattle, service towns. The ranches were set far back from the main road, and now and then he passed an abandoned house, weather-burned, surrounded by broken cottonwoods. In The fallen windmills and collapsed outbuildings he saw the country’s fractured past scattered about like the pencils on the desk of a draughtsman who has gone to lunch. The ancestors of the place hovered over the bits and pieces of their finished lives. He did not notice the prairie dog that raced out of the roadside weeds into his path and the tires bumped slightly as he hit it. A female red-tail lifted into the air. It was the break she had been waiting for. – From That Old Ace In The Hole

Driving into the canyons on Tuesday morning, I think to myself “There is nothing I find more beautiful that a sunrise the the Texas Panhandle.” This is the country I grew up in and its palette still stirs my soul. I’m on my way to Caprock Canyons State Park for an Aoudad and feral hog hunt that I have won through the Texas Parks and Wildlife draw hunt system. I am meeting my father-in-law in the park who drove nine hours from Rogers, AR yesterday with his RV that I will stay in instead of having to camp in a tent in the middle of winter. I have pretty cool in-laws. In my preparation for the hunt, I found very little first hand knowledge on the web so this is my review of what I did to prepare, what the hunt was like and any other tips that come up.

Rifles: Weatherby Mark V in 7 MM magnum, Savage Axis in .243
Boots: Danner 8 inch High Ground
Binoculars: Steiner 8×22
Rangefinder: Redfield Raider 600


My physical preparation involved CrossFit about every other day starting in October. In December, I started ramping up leg work, specifically squats, cleans and deadlifts. At the beginning of the hunt, I was back up to 3×5 back squat at 195lbs with a max around 235-245. I also started running 5 miles once a week in January. Going in to the hunt, I was a little nervous about my preparation given the description of the hunt which is “This is a VERY strenuous hunt.” As usual though, CrossFit prepares you better than you think. I always feel weak and unprepared before physical challenges because CrossFit exposes your weaknesses. But it over prepares you for everything else. Over the course of 3.5 days of hiking in extremely rugged terrain, my only issue was tight achilles which I suffer from anyway. I was never sore which made starting days at 5:15 much easier. This is definitely the hardest physical hunt I’ve been on and I wouldn’t want to go into it unprepared.


Day 1 Scouting
I arrived at the park around 8:30 and got settled into the trailer. I headed out to scout around 10 AM and started in the North Prong parking lot headed north towards Fern Cave. I walked all the way to Fern Cave that morning glassing the walls of the canyon as I went. There probably wasn’t any hunting reason to go all the way up but Mara and I had been here in September and not made it so I wanted to see the ferns. I didn’t see any sheep or hogs on that section but there were plenty of places that looked promising. In the afternoon, I walked the Canyon Rim trail out to where it started down into the Canyon. This trail bisects the Orange Compartment. There were some very sheep-y looking spots along the canyon rim and down into the canyon at the end. However, if you shot something down in one of those canyons, I don’t think there’s any way you could get it out. The orange compartment looked decent from this side of the park but I found out later that the opposite side along CR 29 was pretty forbidding. That night, I met one other group of hunters who were camping. A father and daughter, I think it was her first hunt. They were tent camping a couple of spots down from me. He had talked with the rangers pretty extensively and apparently the hunt two weeks before us had been pretty successful with 13 sheep killed though 1 guy had killed 8 of those. Apparently he was some sort of sniper and saw a herd 750 yards away. He took out 8 before they realized what was going on I guess. I guess sheep don’t pay much attention when Bob drops dead next to them. That’s also pretty impressive given everything I read online said aoudads were very hard to kill.


Day 2 Briefing, Compartment draw and hunt
The draw happened at 9 though standbys had to show up at 8:30. There were six groups total, at least one of which was standby. There are seven compartments so no one got turned away. We signed all the liability waivers and then got the pre-hunt briefing from the coordinator. Basically, it boiled down to be careful, wear your hunter orange or get kicked out, be ethical hunters and don’t touch the middle wire on the boundary fence. Apparently, bison require fairly forceful reminders that there is a fence there. We drew for compartments and I got Green South. This wasn’t any of the areas that I scouted of course but the person in charge of the hunt seemed to think it was a good compartment. Three days later, I decided she was just being nice to me. This hunt had two dates and 24 permits available which would come out to 12 per hunt date. The officer in charge has said there were two cancellations but that still doesn’t add up to 12 so I’m not sure what was different. After we drew, the hunt officially started and everyone headed out to their compartments. The ranger who did the briefing gave pointers to everyone on their compartments and generally seemed pretty knowledgable. I got to my compartment around 10:30. I hiked up Canyon Loop Trail about a quarter of a mile and headed right into the compartment. Green South is in the middle of the park and doesn’t have any canyon walls like several other compartments. There is a large ridge/plateau that runs east and west through the compartment which looked the most promising and was where the ranger and sent me. I hiked all the way around it it that afternoon glassing for sheep up the plateau and hogs in the flatter areas. Everywhere I went I saw tracks, torn up prickly pear and scat. However, that’s all I saw all day. I couldn’t walk five feet without seeing tracks, mostly hog, but never saw a single animal. Unfortunately at some point, my shirt that I thought I had tied to my backpack disappeared. I backtracked about half a mile but never found it. I stayed out until right at 6. Legal shooting hours were from 7:15 to 6:30 but I wasn’t sure how far of a hike I had back to the car. Turns out, it was a pretty long one over rough terrain and I finally hit the Canyon Loop trail at dark. On the way out, there were a pair of great horned owls in trees on the bluff which was neat to see. Not as neat as an aoudad or hog but better than nothing. I signed out at 6:45 and chatted with two other groups. They were in blue and orange, both had seen nothing either all day.


Day 3
I signed in at 6:15, first on the sheet. I didn’t have a very good feel of where to go so headed back to a similar spot though on the north side of the plateau. I glassed there once the sun was up and then moved along the north side from ridge to ridge, glassing as I went. Same story as the day before, lots of sign, no animals. I eventually did see three mule deer about 600 yards north of the plateau. I ended up circling the entire plateau this time with the exact same result. About 5 hours in the field. On the upside, I did find my shirt from the day before which was pretty lucky given the terrain. So it wasn’t a completely lost morning. The scenery was beautiful and it was nice to see the sun come up in the canyon. I decided to head up to headquarters around noon to see if anyone had bailed or if they had any other tips for my compartment. As it turned out, someone had already headed home. He was another single hunter like me (we were the only two singles) and had drawn Orange. He had signed in at 9:15 and back out at 11:30 and said he was done. I thought I would give his compartment a shot since it had looked semi-decent on my scouting. I decided to go around to where he was hunting from on the far eastern side along CR 29. As it turns out, I see why he quit. I’m pretty sure the rangers sent him this direction and it is VERY difficult hunting from there. If you shot something, there’s no way you could drag it back to the road. It was cut by several deep canyons running north and south. I hiked in in two places and immediately was stymied on going further. The funny thing is, the access from Wild Horse campground is way better and you’d have a decent chance to drag something out if you shot it. I assume the rangers know best but in this case, the north end of Orange along Mesa trail would be much easier to get into while still looking like good sheep terrain. I headed back to headquarters to switch back to Green South. The office was closed so I texted the hunt coordinator to see if I could switch back. My plan was to walk in from Wild Horse. I didn’t hear back from the coordinator but assumed no one else had signed into green while I was out. I walked in from Wild Horse and headed west on the Lower Canyon Trail. After I crossed the river, I walked up a mesa to glass. The Lower Canyon Trail is the boundary between blue and green but I had assumed no one was hunting that slice of blue north of the park road. However, immediately upon sitting down, I saw a flash of blaze orange on the mesa just south of me. One of the blue hunters was looking west along the river. I decided I didn’t want to be looking the same direction and switched to the other side of the mesa. About 20 minutes later, I saw him walking east on the Lower Canyon trail towards the trailhead and Wild Horse. I immediately got worried that someone had in fact signed into green while I was in orange. I didn’t want to be hunting in a compartment that had other hunters who didn’t know I was there so I hiked out at that point to confirm what compartment I was in. As it turned out, I was in green and had been switched. At that point, it was 4 PM and after a ton of hiking up very rugged terrain and seeing nothing, I decided to call it a day early.


Day 4
The wind was blowing hard out of the southwest this morning which affected where to hunt. I could have gone back into North Prong area but it would have been a hard walk in the dark across the plateau so I decided to head down from the Wild Horse campground in search of a downwind spot. Yesterday, I had come to where the Canyon Loop trail crosses the river but it was deep enough to cover my boots and the thought of wet boots didn’t interest me much. This morning, I headed east on the Mesa trail and the river was much more navigable. I decided to climb the first mesa north of Mesa trail which overlooks the river in two directions, a creek and the trail junction. It was a good spot downwind with excellent vantage. Unfortunately, like all other days, Mother nature didn’t agree with me. I stayed there getting wind blowing 20-30 MPH winds until around 9. At that point, I headed into Green South and hiked about half a mile in over two mesas and looking into the canyons. Nothing. At this point, it was about 10 AM and the hunt ended at noon. I didn’t want to walk farther in because on the extremely unlikely chance I saw anything, I wasn’t sure I could drag it out by 12. So I sat on the mesa overlooking the river and just contemplated the previous days. About 10:30, I caught movement in the river to the east near the Mesa trail about 600 yards off. My excitement was short-lived as I turned my binoculars to the area and saw that it was 14 bison. The camp staff had been trying to round up all the bison over the past month and maybe these were the main holdouts. I watched them walk them walk the Lower Canyon Trail and then double back up the hill towards the Wild Horse Trail. They were magnificent to see and made my morning given how much terrain I had looked at without seeing anything. I gave them about a 15 minute head start and then headed down the mesa towards the car. I ended my hunt around 11 AM having walked close to 25 miles over 3.5 days. I had seen only 3 mule deer. I signed out around 11:15. Another group hadn’t shown up the last morning leaving only 4 groups out of 6 remaining. The ranger had taken the father/daughter team to a new compartment because it was her first hunt and they were hoping to at least shoot some hogs having seen no aoudads in 2 days of being in a promising compartment. I had spoken with the father the night before and he had said another group was going to hunt their compartment. As it turned out, that was the group that didn’t show up leaving what looked like the second best compartment (Pink on the map) empty on the last day of the hunt. I wish I had known that and in the future, I will confirm with parties their plans. Even going in blind, that compartment is much more sheep-y and who knows what a new day would have brought.


Overall, the hunt was a fantastic experience even without seeing a single shootable animal. It was physically challenging in the extreme and I felt good in my preparation. In retrospect, I’d do two things differently. First, I’d definitely confirm people’s intentions towards the end of the hunt, especially the last day. This is the second draw hunt I have been on and on each occasion, people have not hunted the last day. This leaves compartments available and in this case, a good one. Second, for this hunt in particular, after first light, if nothing showed in promising areas, I would walk more canyons in poor compartments just looking for hogs. Apparently that’s how the rangers hunt the park. The hogs will hole up in the canyons during the day.
I’m thankful to the excellent staff at the Caprock Canyon State Park for the job they did in organizing and helping the hunters. I’m also grateful for the experience. The odds of drawing this hunt are very low (1 in 1200 or so for 2015) and I feel blessed to have had the opportunity. I may try to do standby here in the future, especially if weather is worse because they seem to have cancellations. Even this week, a perfect week weather-wise (though I think colder weather would have helped move the animals around), 2 groups cancelled leaving an empty compartment. The one standby group got a really good compartment so there’s no reason not to try it if the schedule allows.

There is a certain emotion with events like this that are expected for so long and then over in 3 days. I still feel a pang of a hazy nostalgia when I think of the trip over a month later. I planned for and thought about those three days for 5 months prior to the trip so it is only reasonable to feel a sense of loss when it is over. But even more than that, it’s a nostalgia for the plains of the Panhandle, for the stark beauty of the canyon, and the openness of the prairie beyond the windshield of the car. There is a breadth to the Panhandle that seems to consume and minimize you along with your fears and desires. There is nothing soft there, only angles and wind and a thousand things that can stick, bite or sting you. Yet when night falls and the Milky Way opens up above your head or the sun rises over your shoulders while walking along a prairie trail, a sublime beauty emerges from the starkness capable of soaking your soul. There is little else there and the quiet and the darkness still the mind allowing for peace to return. It’s a beautiful place beyond my expectations and one I always treasure.


Software Gambles

Bear with me, this isn’t going to sound like a software essay for a little bit. But trust me, I’ll get there.

Ask a random sampling of people who know me at a level somewhere north of “mere acquaintance” what one word they would use to describe me and I’d bet at least 30% of them said “gambler”. I’m not going to get into the details of why that might be the case here on the public internet but the moniker might be warranted based on certain extracurricular activities. On the surface, this seems weird because I’m not much of a chance seeking, thrill riding enthusiast in regular life. But I do love action when it comes to football games, casinos and golf matches. Early on in my gambling career, there were lots of losses and not so many wins. Gambling, like any other skill, involves some experiential instruction that can’t be readily gained from reading about it on the internet. But there’s a dirty little secret to gambling that most people on the outside looking in don’t understand. Good gamblers rarely take risks on the unknown or combinations of bets because they know as a general rule, you have a much higher chance of going broke when you do. The fat tail of gambling failure is similar to the old adage about the stock market: it can stay irrational a lot longer than you can stay solvent. Betting on 10 games on Sunday is a fast way to go broke unless you have very real, very hard empirical data that says you can win 56% of the time (and that’s all it takes to be a very successful sports bettor which is a shocking fact to many people and one reason why you should never, ever trust someone who is trying to sell you picks that claim greater than 57% winners. If they could really pick ’em at that clip, they wouldn’t be selling picks).

Let’s say you really can pick football (or basketball or whatever) winners at 55%. Let’s say you have a $2000 bankroll and you bet the recommended amount of 5% of your bankroll on any given bet. If you bet one game on Sunday, you have a 55% chance of winning $100 and a 45% chance of losing $110 (the extra $10 is the service charge the book extracts, that’s another post all to itself), all else being equal, for an expected profit of $5.5. Sweet, we’re going to be rich! Seems like we should be as many games as we can then, right? Well, no. For one thing, chances are you don’t actually pick at 55%. You pick 55% right on games you fully understand and that you have studied. Others, you might not have a clue about. Also, even if this is a very normal distribution AND if you actually do pick every game at 55%, there is a chance you will lose every single game over the course of 2 weeks and go broke. The chance is astronomically low but it exists. And that’s why most professional gamblers don’t bet lots and lots of games every weekend. Limit your risk by taking singular and calculated gambles that you control for.

What does this have to do with software? This essay on building stable systems contains a treasure trove of important ideas for developing good software but one that stood out to me was this paragraph:

A project usually have a single gamble only. Doing something you’ve never done before or has high risk/reward is a gamble. Picking a new programming language is a gamble. Using a new framework is a gamble. Using some new way to deploy the application is a gamble. Control for risk by knowing where you have gambled and what is the stable part of the software. Be prepared to re-roll (mulligan) should the gamble come out unfavorably.

Note the intersection of ideas between actual gambling and gambling on your software projects. Limit your risk by limiting your gambles. At work, I’m currently involved in a high-priority project that has the potential to shift the types of products we can offer our customers substantially. It’s actually been on the books for over two years with fits and starts but finally has the political backing to get it done. Now to me, a high priority, high visibility project like this is in and of itself a gamble. On top of that, this particular project is different from our current set up in a few important ways which increases the risk. That alone should be enough to say: “let’s not introduce any more risk into the project.” Instead, for a variety of reasons both political and technical in nature, we are attempting to deliver this project using a new communication framework (RabbitMQ), integrating a new database (Couchbase), monitoring it using a new stack (ELK), deploying it using a new tool (Octopus Deploy) and possibly utilizing an offshore team in Russia. As exciting as all that sounds technically (except for that last part, that gives me nightmares), it seems to me a project fraught with risk. If our chances of success for the project doing just one of those things is somewhere in the realm of 80%, the chance of getting them all right is tiny. Our best case scenario in a probability function is that each event is unrelated (this isn’t necessarily true if some of the probabilities are related and work in each other’s favor, see Bayes’ Theorem but I seriously doubt implementing RabbitMQ is going to drastically increase the success rate of a Couchbase implementation). Instead of limiting our risk, this project is taking on scope like the Lusitania took on water.

None of this means the project will be a failure. But what it likely means is that many of the gambles added to the project will result in poor implementations that hurt our chances of success in the medium to long term. This is not the way to build a stable system. So how do we manage the risk? One is to push back on all the technological scope. This is possible but difficult in an environment where there are competing interests above and beyond the success of the project. Delivering X is great for the company but delivering X with Y new technologies is better for N number of teams. Saying no means some teams have their darlings at least pushed off into the future if not killed. The problem with this is that my team doesn’t control all these decisions. Another way might be to utilize one technology (RabbitMQ for instance) to ease the risk of another one (Couchbase. By doing database writes via a queue, we could write to both the new and old database to ensure success). This is something the team does have control over and that we will probably implement. Another way is to leverage the expertise of other teams/people for particular pieces (DevOps controls Octopus). But each of these are just Band-Aids on the larger wound of too much risk in a single project.

The right way to have a successful project and move towards a stable system is to bite off only as much risk as you can hedge. Each of the tenets in that essay can be used to build a stable system but it involves engineering discipline and political understanding to get there. If you watched the Republican debate tonight, you know political understanding is a dying characteristic in our society. In the interim, the best I can do is protect the team from the risks to the best of my ability and let strong engineering rise to the top. And hope that the next big bet I make only includes a single gamble. I may or may not like the Steelers at 10 to 1 to win the Super Bowl next year. 🙂

On Disconnection and Isolation

Last week, at 11:17 PM on Tuesday night, our front door bell rang. For most people, this would result in a slight apprehension before answering the door to find out what neighbor is locked out of their house. But if you harbor some anxiety about the neighborhood you live in, justified or not, a rung doorbell at any hour outside of a 12 hour window between 10 AM and 10 PM can have a definitely different reaction. There have been stories lately in our neighborhood of people ringing doorbells to find out if people are home before breaking in or stealing their cars. We have a neighbor directly behind us who have who had their front door kicked in in broad daylight and all electronics stolen. We’ve had a home invasion on our cul de sac in the 18 months we’ve lived there. And so, instead of making a logical decision (it didn’t help that we were long since asleep and not particularly rational when the door rang), I immediately started thinking the worst and worried for the safety of family and home.

By the time I had actually woken up and made it into the living room, handgun in hand, I saw a black truck drive away from the house and turn the corner. We have renters next to us who have been, if not outright unfriendly, then at least aloof and one neighbor behind us has seen people from that house come down and take pictures of our cars. All of these things come to mind at 11:30 at night when the doorbell rings. After making the rounds of the house and seeing nothing outside out of the ordinary and setting the alarm, I climbed back into bed. Immediately the phone rang with a unrecognized numbers. “Weirder and weirder,” I said to Mara but didn’t answer it. Only when I got the voicemail from our friendly neighbor behind the house about our garage door being wide open, did I start to feel exceptionally foolish. Of course it’s a neighbor. That’s what neighbors do. But fears of crime and a general feeling of anxiety turned a neighborly act into a stressful situation. Once upon a time, in a different era, people were more likely to be connected to their neighborhood (though of course we know this is a generalization about a false nostalgia but I don’t think anyone would argue that the neighborhoods of today are more connected than those of 30 years ago when kids played safely on the street and walked safely home from school). A doorbell after 10 might cause concern but not fear. Yet today, in areas like south Dallas, it’s difficult to manage those fears, especially when there is a constant, torrential inflow of information regarding bad things happening to people.

And we’re some of the lucky ones. Many people have no idea who their neighbors are. We have the phone numbers of several around us. We talk to them regularly in the street. Still, in certain circumstances, fear is the easier emotion to muster when something happens. A strong crime-free neighborhood can be thought of as a kind of cultural safety net. When something happens, people are there for you. However, as a society, we are more disconnected from each other than ever before. In a world when you can Skype with people in Russia, there is less and less meaningful human connection, more and more isolation as we have to drive farther and farther to get to our jobs and more and more inventions designed to keep our face glued to a tiny screen in front of us instead of lifting up our heads to see the world. This disconnectedness, this isolation, makes it easy to prey on our fears whether the hunters are politicians, marketers or media talking heads. And because we are evolutionarily wired to be alert for danger and react to it (far better to run like hell from a shadow that could be a lion but turns out to be a bush than to “make sure” and be dead), this disconnectedness is a self fulfilling circle. It is not easy to get out of our natural state and try to see things in a different light.

David Foster Wallace wrote a commencement speech for Kenyon College in 2005 called “This is water”. I watch it once or twice a year to remind myself of its lesson which is this: our default setting is almost always self centered and revolves around how poorly we are treated or what bad luck we have. When someone cuts us off, we yell in rage in our confined little cars never once thinking that maybe that person is trying to get to the hospital to see his child born. When the grocery store only has one checkout station open, we mentally fume about how our time is being misused never thinking what it must be like to be that one single clerk servicing all these angry people. It takes a great deal of effort, perhaps more than most people can bear, to step outside this default and assume the best of everything. Because it’s much easier to assume the worst, we fall into traps constantly about what is causing the problems that we have. Now, 70 years after a generation of Americans saved the world from incomprehensible evil, we have a society and a culture that in almost every way is designed to pander to our default setting of selfishness. Yet, we are a social species so we find communities within this selfishness that oftentimes become echo chambers and further the self-fulfillment of “It’s someone else’s fault.” We have at least one full generation who has grown up totally on the Internet where saying things you would never say to anyone’s face is de rigueur. More and more we have created places in our lives where it’s acceptable to do perfectly inhumane things. And while most of our bad behavior is limited to the confines of our car or Facebook or whatever, our politicians have become living caricatures of that behavior.

We have a leading Republican candidate who wants to build a wall between us and Mexico because it’s the illegals who are making it difficult to get a job, not because long ago we allowed our corporations and manufacturers to send perfectly good middle class jobs overseas. We have an entire Republican field who seem to strongly believe the sitting President of the United States should not nominate a Supreme Court justice after Justice Scalia passed away last week. We have a Democratic candidate and former Secretary of State who found it perfectly reasonable to have a private email server for official United States business. We have become disconnected not just from those we disagree with but also from a sense of common decency. Gone are the days of cross-aisle negotiations to get key legislature passed, ala Lyndon Johnson. Our centrist common sense politicians are being replaced through big money and big lobbying with meme spouting rich loud mouths. Our politicians vilify opposing view points as if they were truly evil and not human beings coming to different conclusions regarding certain facts.

But our politicians are and always have been real life caricatures of ourselves. Walk anywhere today and you see people totally disconnected from the world around them, heads buried in their phones or tablets, headphones on to drown out the sounds and distractions of the world they only partially inhabit. People share tiny sound bites on social media that are extremist representations of the political and cultural memes they believe, beliefs that are almost always handed down to them through their families with little thought of how the other side might operate. Other people in their own echo chamber share and promote this extremism. We live our technological lives in mediums that are designed to grab attention as quickly and cheaply as possible. The words “socialism” or “immigration” or “taxes” and a million other talking points encompass entire gray universes of complex issues that we increasingly refuse to accept. And then we are shocked (shocked I tell you!) when our very own extremism and disconnectedness come full circle and are personified in our political candidates. The mediums we choose for communication today drive our inability to discuss and grasp the subtle and sublime in life and in politics.

We don’t do this out of malice. In fact, our technical interaction is largely done for the same reasons and through the same mechanisms as today’s click bait advertising. We want to see the little red circle with a large number of likes or comments in it. And the easiest way to do that is to appeal to the lowest common denominator. A picture of a cat with a cucumber will get more response than a 5000 word essay and slowly our ability to deeply understand and discuss our world fades away. Our relationships become shallower and shallower. In return for our own abandonment of the connectedness of social interaction, we receive politicians who are incapable of consensus building. They can only yell like children that they have been wronged which is exactly what we do every day. It is our default setting and without struggle and effort and vigilance against the forces in our technologically connected but socially disconnected world, we fall farther and farther into that default setting until we are unable to experience someone who disagrees with us as anything but an enemy to be defeated. When that happens, we are lost because there are always enemies enough in life without creating make believe ones ourselves.

Here’s just on example of how this works, how we get caught in our own personal echo chambers driven by social media. Yesterday, Supreme Court Justice Antonin Scalia was buried. President Obama attended the visitation Friday to pay his respects but did not attend the funeral. This morning in my Facebook feed was a post from the Chicago Tribune faulting Obama for not attending the funeral saying it was what “Chicago guys do”. I read it and immediately thought of the time an aunt died in my family. I wasn’t close with that part of our family but I took off work to drive to Oklahoma City to go to the funeral. I did this because she had been important to the continuation of our family reunion. But I also did it out of sense of duty, a sense of “that’s just what you do”. So as I read this article about Obama not attending Scalia’s funeral, I did so in the light of my own bias, my own belief system and by the time I was done, I was convinced this was a mistake if for no other reason than the political enemies of President Obama could now use this as fodder for retribution around the entire empty Supreme Court seat. I expected to add this story here as an example of disconnectedness. A moment of reflection and a quick Google search led me to another conclusion. There are perfectly other, perfectly plausible reasons why a President might not attend the funeral of a sitting Supreme Court Justice who died. For one, a Catholic funeral is not an event of state. Having a President attend with all the related logistics would have added significantly to the planning and execution of the funeral. For another, it’s perfectly reasonable he made contact with the family and they expressed a desire to not have him there for the very same reasons. There are myriad other reasons why he might choose not to attend. Yet, as I sat drinking coffee reading one viewpoint that happened to exactly fit my personal biases. I convinced myself this was a major error in decorum. This is a very personal decision made by the President of the United States possibly in conjunction with the family of Justice Scalia but I made it into a political issue because of social media and my default setting and bias. It’s worth noting that this particular bias is actually a good one and is directly related to maintaining a sense of connectedness with those who are important to us. But I managed to briefly turn it into a way to be disconnected because social media and the ever present stream of information it feeds us makes it very easy to do so.

What does all this mean for our society? Our choices of communication enable us to superficially remain connected to more and more people while losing many of the aspects of deep connection. We live two lives, the one on social media where it is easy to isolate and promote sound bites that fit our personal biases, the other in real life in our interactions with our family, friends and the world in general. As we begin to spend more and more time on social media in an echo chamber of our own making, the actions on social media, being easier to accept, believe and promote, will continue to bleed into real life until we have effectively lost the ability to empathize and understand those with whom we disagree. We will have built a society around shallowness lacking civility that is incapable of emotions other than anger and disagreement. When I look at the politicians of today, I fear we may already be a long way down that road.

On Populism

Those who make peaceful revolution impossible will make violent revolution inevitable. – John F. Kennedy

Recently, Bernie Sanders and Donald Trump dominated the New Hampshire primaries. Sanders won over 60% of the vote while The Donald pulled in 35% in a much more crowded Republican field. Both were 20% points more popular than their nearest rivals. In their respective parties, these two represent a brand of populism in American politics that hasn’t been this strongly in the public consciousness since Pat Buchanan in 1992 and 1996. If you believe things on the Internet (and at least some things are occasionally true there), the entrenched establishments of both parties are starting to get twitchy from the thought of America electing either of these two rather extremist candidates. Clinton has begun to launch more and more negative ads aimed not at spreading truth but instead hypocritical lies about Sanders. Time’s Joe Klein has taken to calling Trump’s supporters “A threat to the country“. These are just a couple of more prominent examples.

What does all this mean? There seems to be a seismic shift in the tectonic political plates playing out in this year’s political cycle. For so long, the status quo has been a very centrist undifferentiated political stance from either party. There is very little difference between George W. Bush and Bill Clinton. There is less difference between Hillary Clinton and Jeb Bush. They are all mainstream, middle of the road candidates who track slightly towards each extreme in the political party during the primaries and then run back to the middle during the campaign. This political regression to the mean compounds over time until we have candidates at all levels who are career politicians expert in saying soothing things while delivering more and more of the nation’s income and wealth to the powered elite who make their campaigns possible. And those of us on Main Street have gotten used to this average, this general centrism even as many of us suffer from lower wages or menial work or overwhelming debt. That is, until we start to notice that some of our politicians (and maybe most of the establishment front runners) are largely paid by financial firms. Hillary Clinton made close to $10 million dollars from speeches in 2013 with a large chunk of that coming from firms like Goldman Sachs. Based on the amount still sitting on Jeb Bush’s super PAC, I doubt it’s much different on that side of the aisle. Can anyone believe that these candidates are unaffected by these donors and fees when it comes to regulations that they support? Not with a straight face. For decades, political power came directly from financial power which came directly from donations, not from Mom and Pop, but from the continued growth of corporatism in American politics which finally became enshrined as doctrine when five misguided individuals on the Supreme Court told us all that “Corporations are people too dammit!” In his dissent, Justice Stevens said the Court’s decision “threatens to undermine the integrity of elected institutions across the Nation.”. Prescient. And for so long, the money has followed the main stream candidates because they won’t shake up the status quo leaving those who are actually in power, the Goldman Sachs, the military industrial complex, still pulling the marionette’s strings.

But they didn’t count on a sheep-like populace suddenly growing some fangs when more and more of the wealth and income in the country rose to the top. The “recovery” from 2008-2009 has left large swaths of the American people totally behind. 7 million men from the ages of 25 to 54 aren’t in the workforce and aren’t even looking. They aren’t counted in the unemployment stats because of this. In 1954, 98% of the men in this age range were employed. Now it’s 88%. The labor force participation rate is at the lowest its been in 38 years. This “recovery” we’ve had is a mirage and the establishment hopes we don’t notice it while we stare at our cheap Chinese crap that supposedly increases our quality of life.

We elected Obama in 2008 on a platform of change. What we got was zero bank officials paraded out into the public eye and legally tarred and feathered, an Affordable Health Care act that is anything but, higher and higher bank executive pay, the lowest labor participation rate in 38 years, an increase in jobs in the service industry which are historically low paying and poor, etc, etc, etc. So we have arrived at the election cycle of 2016, eight years after we demanded change and got more of the same. It shouldn’t be surprising that two political radicals are doing so well in the early going. Each man (Sanders and Trump) plays to a particular section of American populism that has been under threat for the last 40 years. Sanders is an economic radical, promising a larger share of the wealth to the middle and lower classes through redistribution and government intervention. Trump is a cultural radical, promising to build a wall around our border, throw out the illegals, stop Muslims from entering the country and (maybe) reducing the military-industrial complex by getting out of places like South Korea and Japan.

The vested political interests in each party are starting to fight back. It looks like the Democratic establishment will try to use a very undemocratic mechanism of their selection process to ensure Clinton is the nominee, largely through fear mongering in the public since the idea of Superdelegates throwing the election to Clinton against the will of the popular vote would likely destroy the Democratic party as we know it. The Republican establishment will probably try to find equally shady but effective tactics to fight an eventual Trump or even a Cruz nomination. The Establishment of both parties are in danger to some degree, the Republicans less so I imagine since every candidate on that side promises to cut the highest tax rates from 39.6 to anywhere from 35% (Rubio though he makes up for that paltry crumb by eliminating taxes on capital gains and dividends, the province of the rich) to 25% (Trump). We’ll ignore Cruz’s 10% flat since the chance of America ever having a flat tax is effectively zero. But there is no doubt that Trump and Cruz are not your run of the mill Republican candidates of the past few years. Trump’s cultural populism is less of a threat to the political elites on the Republican side but one has to assume they are afraid of his ranking on the loose cannon scale, somewhere slightly below Howard Stern but way, way above Jeb Bush. If he’ll repeat a comment about a political rival in which someone calls that rival a pussy , what will he start calling the leaders of foreign countries? There is no filter on Trump which is why he draws support from a certain filterless subsection of the populace who long for the good old days where America paraded around like an 800 lb gorilla.

One common theme in populist rhetoric is the scapegoating of other groups as catalysts for the populist’s problems. That clearly is true in the candidacies of these two men. Trump tends to blame our troubles on the Mexicans or the Muslims or the North Koreans. Most of our modern day liberal sensibilities flare up around such rhetoric because it doesn’t take much to jump from one racial or demographic population to another when the frying pan gets hot. But Sanders isn’t that far off in his moral outrage towards the corporations and Wall Street bankers. Populism becomes quite dangerous in this regard as eventually there is little left to scapegoat and the beasts turn on each other. Our inability to look critically and carefully at our own roles in the off-shoring of jobs or Muslim extremists hatred of America or the increasing flow of America’s wealth to the financial elite causes us to ignore the complexity of these situations in favor of the ease of blaming other parties. Because of this, candidates that espouse the same blame can garner great support as we are seeing with Trump and Sanders.

Throughout American history, local people have risen up against corrupt governments, actual and imagined, typically in violent conflicts. We have recently seen this in places like Baltimore and Ferguson where violent protests have broken out. But what we are seeing in the political process of 2016 is a more generalized revolt, a democratic middle finger lifted to those in power by those who have lost the most in our continued march towards oligarchy. People who wonder why Trump and Sanders are so popular in my anecdotal experience are those who haven’t had to feel most of the pain from 2 major crashes in our economy in the last 15 years. To them (and I certainly sympathize to some degree), it makes no sense that we might elect a self-proclaimed socialist or a loose cannon that would make George W. Bush look like Gene Autry. But the alternatives to rapid change in our leadership is likely to be some form of revolution. That seems almost unthinkable to those of us who have lived in relative domestic peace our entire lives. But history tells us that the peaceful times are regularly punctuated with bouts of turmoil and violence when the populace has had enough. The popularity of Sanders and Trump may be a last civilized signal from the American people in their desire for real change.

On Achieving Goals

Ah the tabula rasa of the New Year where so many of us decide how much better we’re going to make ourselves in the next 365 days. We decide to lose weight or get our finances in order or be more productive. Occasionally we announce to the world these lofty ambitions like Donald Trump boasting how rich he is. Then for a month or six weeks or if we’re really lucky to the spring equinox, we really focus on these “goals”. We go to the gym. We save money. We write blog posts. And then something quietly breaks that we aren’t even aware of and suddenly it’s August and we’ve gained the weight back plus found a new appreciation for that kick ass donut shop that just happens to be on the way to work. What happened?

As it turns out, having goals makes us largely unhappy according to James Clear. This makes intuitive sense because goals so often end in failure for a variety of reasons. Then we are left with a fundamental lack of accomplishment. For several years, I’ve wanted to learn Spanish. That’s a Goal. But having Goals without a clear path to achieving them is destined for failure. What you also need is a system or a habit plus a reasonably accurate, mostly simple way to track that system (not the goal). This kind of thinking leans heavily on “small strokes fell great oaks”. We are creatures of habit but the key is getting into a habit of doing something different from our current habits. As it turns out, lots of small steps are a lot easier on the path to new habits than huge jumps. Yet our Goals are necessarily designed around these huge jumps.

Having a system mediates that. A system involves what you do every single day to achieve a Goal. If you want to write a book, your system is “write for an hour every day and track the number of words”. If you want to lose weight, your system is “I’m going to follow the five rules of the Slow Carb Diet.” If you want to write 26 letters, your system is “I’m going to write one letter every first and third Saturday of each month”. These systems are formalizations of the cues that are necessary to form new habits which lead to progress towards change. The beauty of systems and cues over goals is that even if your goals turn out to be slightly harder than you thought, you can still gain a great sense of achievement by analyzing the results of your system if you track it well.

Let’s say your goal is to win the Masters next year. Your system is hit 500 balls a day. You record this in a spreadsheet and write an easy sum function and an easy averaging function to display progress. In 2017 when you are watching the Masters on the couch, if you have followed your system, you almost guaranteed to be a MUCH improved golfer regardless of the result of the goal. This is key to Clear’s third tenet linked above concerning the fact that Goals make you think you have control over things you don’t. So many times life gets in the way and we lose sight of our goals. But if we have a solid system in place like “Don’t eat white starchy things”, we are more likely to just keep plugging right along. Also, having that system/process viewpoint can help on the days we don’t do well or have slight setbacks. If my system is workout 60 minutes a day, a day where I only do 30 minutes isn’t the end of the world because I can go for a long run on the weekend. I don’t feel guilty about working out less on some days when the system is in place.

Systems lead to progress and we can take comfort in progress even if goals are never reached. I find it helpful to know where I am in my system so I built a basic spreadsheet where I can track activities that move me towards my goals. You could easily copy it and modify it for your goals and progress. I have instant feedback on where I am which helps me feel much better about my progress (or identify places that I’m falling behind. Time to watch a movie!). And this provides the behavioral reinforcement of the system which hopefully results in a very positive feedback cycle. With that in hand, I will be able to look back at the end of 2016 and feel very good about the progress I’ve made regardless of the end result.

The Year in Review And Beyond

Inspired by David Collum’s epic Year in Review post (and it is epic in both senses of the word and I highly recommend you read it), here is my year in review that once upon a time was a semi-regular occurrence around The Experiment but like The Experiment itself has fallen on hard times lately. Perhaps a mini epic post (like Lonesome Dove, Abridged) could reawaken the slumbering literary dwarf within me.

Picasso came into our lives this year after we lost Rocky last December. We got him from SPCA Dallas and he has been a happy addition to the family. He has a personality that is a cross between Garfield and Bucky. Vincent and Scooter put up with him as well as they can.

My main learning goal last year was Spanish. I definitely did not spend 180 hours on Spanish. I don’t have a set routine at home for studying Spanish so the main way I get in time is on the train. Unfortunately, there were two large projects at work this year that involved lots of working late and taking the train home late is right below “Prostate exam” on my list of favorite things to do. So for two months in the summer and six weeks in the fall, train riding, and thus Spanish lessons, ground to a halt. This is a lame excuse but the only one I have. On the upside, I actually learned a lot of Spanish in the time I did spend. Duolingo currently says I’m 2% fluent which is probably about right. That sounds pathetic after a full year but I can read at a higher rate than that for sure. Listening is still a problem but I’m starting to pick up words from random conversations (especially if they revolve around cerveza or carne or tacos de lengua). Assuming work life returns to something resembling normality, I think my fluency rate will start to ramp up as I get enough foundation laid.

The big trip for the year was my company trip to Beaches Turks and Caicos. This was an incredible vacation to a destination we wouldn’t likely have visited or been able to afford on our own. We went in September which is the lowest of the low season and that certainly helped. We had the resort to ourselves and in talking to several staff members, the difference in number of visitors in September compared to the high season of April-June was extreme. The diving was excellent, on par with the reefs of Belize without having to go far off shore. If we were to ever visit again, I would definitely want to dive during the week because they go farther offshore and to different locations. There were 19 restaurants on premises and never any shortage of new food to try. Favorites were the French restaurant Le Petit Chateau and the Japanese restaurant Kimono’s. We didn’t do any off premise excursions because the resort was so large. I think we definitely could have spent a week there with no problems.

Probably an equally fun trip was a week long excursion to Gulf Shores, Alabama with friends. We stayed in a 5 bedroom house on the bay with beautiful sunsets and access to a pier right behind the house. The beach was an easy walk from there and we spent large amounts of time in the surf. We ate and drank like gluttons but it was vacation and thus perfectly expected.

We camped in two new locations. The first was over Labor Day in Caprock Canyons State Park. We went that way in an attempt to escape the heat but largely failed as it was 95+ during the day all weekend. The park was beautiful and it looked like the hiking was really good but we didn’t get to do nearly as much as we would have liked because of the heat. In the future, we’ll want to book earlier to get an electric campsite as all the tent camp sites are a decent walk from the parking area and not particularly secluded from each other.

In November, we camped at Caddo Lake State Park with friends. It was pretty rainy but we still managed to have quite a bit of fun. The canoeing was the best part as we went quite aways down the new paddling trail there. It’s very serene and peaceful back in the swamp. I’d like to do another trip there and take the gear out to the WMA via canoes or kayaks for more primitive camping.

Skink – No Surrender – I love Carl Hiassen and his crusade through fiction to increase the public’s appreciation for Florida’s disappearing natural beauty. This is actually a young adult book that I must have accidentally requested from the library but it’s a fun and easy read, good for the beach or the train. His characters are a wacky group of oddballs and misfits who thrive in the craziness of South Florida. Probably not too exciting for narco fascist real estate developer types but everyone else should find his books fun to read.

To Rise Again At A Decent Hour – This book popped up in my consciousness randomly when I saw a review for it in the Dallas Morning News. Ferris’ voice isn’t mainstream and it takes a little while to decide if the book is good. But there are some good characters here and there is definitely a theme of community and its meaning that I found inspiring. I was reminded of The Broom of the System as I read it as both books switch between reality and fantasy regularly.

Shop Class as Soulcraft – More fully reviewed here but this book had a profound effect on my thinking about our throwaway society and our inability to treasure what we have.

The Wilderness Warrior – Reviewed here

Switch – An excellent book on why our efforts at self-change largely fail and ways to change that. A book length exposition on The Elephant and The Rider originally explained in The Happiness Hypothesis, this book explains why we struggle to lose weight, learn a language, make more friends or workout more. Finding ways to motivate the Elephant and ways to not overwhelm the Rider are key. Search YouTube for great videos from the authors if you want an introduction into how you can manage change in your life.

The 4 Hour Work Week – Tim Ferriss’ first book laying out the ideas behind the rest of his media empire. Thought provoking to say the least, I came away from this book with more understanding of passive income and the effects it can have on your life. While I don’t ascribe to his ideas of lots of mini-retirements instead of one long boring one at the end of life (mostly because I don’t want to live in Hong Kong or Australia or wherever), the idea of having a steady flow of passive income that frees you from the addiction of a steady paycheck is appealing. Appealing enough that one of my goals this year is to follow through on acquiring a modicum of passive income (see Goals).

Fear and Loathing In Las Vegas – Hunter S. Thompson’s epic tale of debauchery and gonzo journalism, I read this on the beach in Gulf Shores because it seemed slightly fitting. I wonder how much of our reliance on Reality TV for entertainment in today’s world has its roots in the work of Hunter S. Thompson. Fiction and non-fiction began to converge with his work (see also The Kentucky Derby Is Decadent and Depraved, a favorite of mine) and this was where it started.

The Long Narrow Road To The Deep North – An incredible book following the life of one man through his journeys in POW camps in the Pacific theater in World War II and the effects of a singular love of a woman throughout. I’m seeing many of the same themes in Charles Frazier’s Thirteen Moons that I’m reading now. The Long Narrow Road is depressing in its vivid descriptions of the lives of POWs under Japanese control. A strong sense of fatalism runs through the course of the novel and is epitomized by the Japanese officers in their brutal actions towards the prisoners. One of the best books I read in 2015.

That Old Ace In The Hole – I think my mom gave me this book a long time ago when she inherited it from someone. I had originally found it slow and uninteresting. Like the brussel sprouts of my youth, I guess I wasn’t ready for it yet. It had been sitting on my bookshelf unread for years patiently waiting and I pulled it down this summer. I’m not sure how it stayed there so long. As an Amarillo boy, this tale of a man working for Global Pork Rind Company as a scout for possible pig farms in the Texas and Oklahoma Panhandles struck home both because my grandparents’ farm in the Oklahoma Panhandle was sold as a potential pig farm and for the sweeping descriptions of the landscapes of those areas. Most people encounter the Panhandle and find it lacking of all interesting features but there is an aching beauty in the plains and grasslands that is sublime. This book captures much of that for me and I think I found it more interesting on second reading many years older as I realize things I miss about that area of Texas.

The Graveyard Book – Highly recommended to me by Mara, this was my first introduction to Neil Gaiman and a worthy one. The fantasy world Gaiman creates inhabited by all manners of good and evil and in-between characters is rich and engrossing. More and more my taste in fiction revolves around epic tales of a singular life and while this book is fantasy, it fits the bill. I need to put a few more Gaiman books on my list for 2016.

The World’s Largest Man – Easily the funniest book I have ever read. Mara would often mention to Scooter “He’s reading the book that makes him giggle cry again.” It’s a memoir of the author’s father and the experience of growing up in the rural South. Nothing I say about it can explain how funny it is so you should just read it. Read this as a precursor and try not to shoot milk out your nose (especially if you’re drinking coffee).

All The Pretty Horses – The first book in Cormac McCarthy’s border trilogy (The Crossing and Cities of the Plain being the other two), this book is representative of McCarthy’s incredible use of the English language to describe the old west in different terms that we used to see in the westerns of Louis L’Amour and others. McCarthy is one of the great novelists of this and the last century. I tried once to read The Road which is his latest but found it too depressing. However, all other books of his including Blood Meridian, The Orchard and Suttree have been outstanding.

In recent years, my goals have been very similar and they are unlikely to change much this year. I’d like to get to 10% fluency or so in Spanish according to Duolingo. Once again, it feels like the 2015 hunting season got away from me. I didn’t go bowhunting in October at all when the season first opened and just haven’t spent much time in the woods. I’m hoping to have a lease next year but we’ll see if that works out with everything else that is on the table. I’d like my exercise to be more consistent regardless of weather. I regularly use the heat of the summer as an excuse not to workout but I’m finding it harder and harder to come back from 2 months off. Probably the biggest goal for this year is to have some form of a passive income stream. I’m setting the bar pretty low I think in saying I’d like to be able to make one mortgage payment from passive income this year which would be $750. I feel like my best chance at that is to write books that people want to read so the main focus in the first part of 2016 will be on that. That will probably require an entire post in itself though.

I’ve had a goal of writing letters for two years now and it’s never even sort of been achieved. Neither did last year’s “Write 52 things”. I might have written 10 things. I’d like to reattempt both of those again. The key to goals though is having set times and habits for achieving them and I worry that there are too many things I think I want to do. Spanish is easy enough with consistent train rides but writing letters and blog posts and exercising require set times in the schedule. Something as specific as “write a letter on the 1st and 15th of each month” would probably be sufficient. So I’ll try these goals that have ways to track them built in.

  • Become 10% fluent in Spanish by studying for 180 hours
  • Be more fit by averaging 300 a minutes of exercise a week
  • Write 26 letters by writing one on the first and third Saturday of every month
  • Read 18 books (this will be a 50% increase over last year but again should be easier with regular train ride
  • Have a passive income stream of at least $750 a year by writing a book 1000 people buy

Looking Forward with Trepidation
If you read Collum’s tome linked above (or have a lick of sense or follow Zerohedge on Twitter), you probably realize things aren’t so good out in the real world. According to Credit Suisse, 25% of all Americans have a negative net worth. Pensions across the country are horribly underfunded. The six biggest banks in the world are now 50% bigger than they were at the beginning of the financial crisis that nearly destroyed the world (or so we’re told). We are now in the 6th longest recovery since the Civil War (read: we are long overdue for a correction). The Fed has expanded their balance sheet to extremes we’ve never seen before. S&P 500 forward earnings are plummeting while the S&P continues to saunter northward. The dollar is getting stronger and stronger while other currencies are getting weaker and weaker. I have a tendency of reading sources that just strengthen my confirmation bias (don’t we all?) but it seems to me that the US economy is teetering on the brink. This “recovery” has been just about as weak as it could be while still being considered a recovery. Collum makes the analogy of walking into your kid’s room and pulling out some building blocks. Start stacking them up as high as you can. Eventually you reach a point where some seemingly unrelated random event causes the whole thing to come crashing down. A cat sneezes or a branch falls on the roof or a dust mite gets a wild hair and lands on top. When things are structurally unsound, it doesn’t take much to push them over. The US economy (and to an equal or even greater degree, the entire world) feels like it’s a big stack of children’s blocks.

What to do about that? It seems to me that being a contrarian is almost always the way to go as it relates to stocks, gambling or Settlers of Cataan. That is, do what other people aren’t. The American people have more debt that they know what to do with? You should do everything in your power to have zero debt. Stocks going up in spite of bad news and bad forward earnings? Sell. Gold and silver and oil at multi-year lows? Maybe time to buy some. Governments declaring war on cash? Make sure you have some around, preferably in harder assets than the paper they print.

I’m no economist though that should hardly disqualify me from writing about the economy given most economists dismal track records. But I do understand regression to the mean and law of averages and how evolution works to some degree. And so if we’re in one of the longest recoveries on record without a recession and none of the crap financial genetic material that caused the last disaster got cleaned out, I feel like we’re overdue for some pain. And that tends to worry me a little. But who knows? Let’s just go buy something at the after Christmas sale and we’ll all feel better.

I don’t have any. If you came here for conclusions, you’ve been horribly misled. Overall, we had a pretty good year here at the Experiment. Here’s to a successful and prepared 2016 as well.

Ruby Arrays of Objects and Unions

I’m working through the Advent of Code and needed to union two Ruby arrays of objects together based on some properties on said objects. I wasn’t having much luck getting it to work and my Google fu was failing but I finally figured out the issue and want to post it here in case someone else ever manages to search using the right terms.

The key here is that you can’t just override eql?. You have to also override the hash method. So for a Position class, it might look like this:

This would allow the union of two arrays of Position objects to only include Positions that are unique by X and Y coordinates.

Shelby Joins The Band

The rest of Sunday and all of Monday flew by in a blur. All I could think about was the pit in my stomach and the ball of desire in my throat for that woman. School was useless. I managed to avoid both Wool and Bill. I saw Stilton once in the hall but ducked into a classroom before he saw me. I kept returning to the encounter, wondering why I didn’t ask for her name, why I didn’t ask for more information. She just sat there and I just stood there, quivering. I woke up Tuesday with what felt like a beetle in my stomach trying to gnaw its way out. Eating was out of the question. I half wanted practice to get here as quickly as possible, half wanted to run off into the woods and return in about a week. After school, I headed home to pick up equipment. I was loading it up in my car when Stilton drove up.

“Still on for practice?”


“I’ll follow you over.”

I backed the car out of the driveway. I had wanted to be the first one there. Now I had Stilton in tow and for all I knew, the woman was already knocking on Wool’s front door. I’d be like the lion tamer walking into the cage after someone had let all the lions in, helpless and out of control. Though frankly, I felt like I had such precious little control at this point anyway. Seemed like Fate was just unwinding before me like a blood red carpet rolled out towards an execution. We got to Wool’s house with only Bill’s old Nova there, no Chevy in the driveway. That did little to quiet my churning insides, for all I know she could have floated over from the next county. My grip on reality was fading fast. I grabbed my stuff and headed towards the door. Stilton was struggling with his guitar and amplifier. Wool opened the front door.

“Thought maybe you would have found a way to get rid of him since you’ve been ignoring us for the last two days,” he said.

“Well, I have a plan but I’m not sure it’s going to work.”

“What is it?”

“Probably best if I keep that to myself.”

“Fine. I hope it works. That guy makes me nervous.”

I took my stuff down into the basement. Stilton followed me, still struggling with the equipment. Bill was sitting behind the trap set looking at last year’s Sports Illustrated swimsuit issue. He didn’t look up as we came down the stairs. I started setting up the mike and putting my horn together. I hadn’t played it since Sunday at the rest stop. It looked practically foreign to me. I thought of her sitting up at her house somewhere behind the pines listening to me play. My hands got a little clammy. This was going to be an interesting afternoon.

“Where should I set up?” Stilton asked. Neither Wool or Bill offered any information.

“Probably over there on the right side. You can plug in behind that bookcase.’

The doorbell rang and stopped my heart. When it started back up, I thought I was dying.

“I’ll get it,” I said avoiding eye contact with Wool.

I ran up the stairs. The other three would have to be suspicious at this point. Why would I answer the door at Wool’s house? None of that mattered. I opened the door and again, my feet turned to concrete. She was wearing tennis shoes, blue jeans and a simple LSU sweatshirt. To me, it looked like she was wearing an evening gown. Her hair was pulled back in a tight pony tail. Her lips were the color of mahogany and I would swear her eyes were the size of granite colored saucers.

“Can I come in?”

“Oh yeah, sure, sorry. We were just setting up.”

Somehow, I managed to get my feet moving in the right direction and led the way back down the basement stairs. I opened the door to the basement and walked in. The other three guys looked up and I could tell I wasn’t going to have to worry about explaining her presence.

“Guys, this is…um…”


“Shelby,” I finished. “She’s going to be in the band. She can sing.”

“Actually, he doesn’t know if I can sing or not. I just told him I could and he said OK.” The woman had an uncanny way of making me feel uncomfortable. “He was out practicing at a rest stop on the Nacogdoches highway Sunday and I went to listen to him.“

The other three looked at me like I had two heads. There wasn’t any use explaining. No story could possibly make them understand.

“Look, let’s just finish getting set up and start practice. It’s getting late already,” I said. “Shelby, you can use my mike.“

We started off with “In A Sentimental Mood. The sound that came out of Shelby’s mouth caused the rest of her to melt away, as if the voice was a thing in itself, disengaged and unattached to the person producing it. I realized at that point that I was in love with her. Her singing picked the rest of us up and forced us to play in a different consciousness. The walls wept slightly at the sound of the band. We were suddenly better than good. I wasn’t sure what we were yet but we were definitely better than good. Well, most of us. When the song ended, she looked at Stilton.

“You’re not very good. Why are you in the band?” It was a question directed at me even while she looked at him.

“Well…I…” Stilton stammered.

“He’s got Harry by the short hairs and he’s yanking on them with tweezers.” Bill seemed overly proud of his explanation. Shelby looked at me.

“It’s a long story.”

“We ain’t go nothing but time.”

The story still sounded ridiculous and absurd in my head. She had this voice that demanded to be honored with a band that could stand up to it. I had a band that had a guy who couldn’t play his way out of a shoebox if you cut down four sides for him. I had to explain to her how I poisoned his dad’s dog and how he was blackmailing me.

“His dad works for my dad at the oil company,” Stilton said. “They wouldn’t let me in the band so I told him I’d get his dad fired if he didn’t let me in.” I looked at him in amazement. I wouldn’t have expected him to lie for me. I had no idea if she bought it. Given her prescience about me, I doubted it.

“Well you’re not very good. Do you practice?”


“That’s not enough. You have to practice all the time. You have to give up everything else and practice. You have to live with that guitar. It’s not enough to be talented. It’s not enough to have a rich daddy. If you’re going to be in this band, no matter how you managed to get in, you’re going to be good. If you can’t be good, you won’t be playing.” She said this all as a matter of fact, not threatening, not vindictive. Just an explanation of how things were going to go from here on out. She didn’t even act like it was her band. She was just making it clear that there were standards here, like everywhere else in life and no amount of money or influence or blackmail was going to allow anyone to subvert those standards. I couldn’t tell if they were her standards or something pre-existent beyond the realm of my experience.

“Give me your guitar.” For a brief fleeting moment, I thought she might beat him to death with it. I could tell by the look in his eyes, he was considering the same thing. Tentatively, he handed her the instrument.

“Play it like this.”

And then she showed him exactly how she expected it to be played. The notes were light and supplemental to the feeling of the song. There was no personal interpretation, just a perfect accompaniment. After 20 bars or so, she handed it back to him.

“That’s how you should play it next time we rehearse.”

Stilton looked like a car with four flat tires. He was visibly smaller as if someone had reached into his soul, pulled out his ego and let half the air out of it. I doubt he’d ever heard someone talk to him like that. To his credit, he took the guitar back quietly and without resentment.
She looked at me.

“What’s next? No use standing around gawking. This is your band, start acting like it.”

I knew that wasn’t the case anymore. Everyone else knew it too. Like a shadow corporation set up to funnel money from one place to another, I was just a shell. She was the substance and no amount of my “leading the band” would ever change that. Strangely, that suited me just fine.
The rest of rehearsal went in much the same manner. She seemed to just know all the music. If she had said she was born knowing the music, we wouldn’t have argued about it. She could sing anything we played and probably then some. We certainly didn’t run into any songs she didn’t know. She gave pointers to all of us, subtle changes in phrasing or tone or approach. She sang like there was an audience of thousands listening, each song given the same level of concentration and effort. Even when one of us screwed up and we had to start over, she jumped right back into the song as if nothing had happened. After we had run through all the songs we knew, we waited for directions.

“So do you want me in the band?” As usual, this was not what I expected from her. We all knew it was clear she was the most talented and we should have been asking her that question. The other three looked at me.

“Well, umm, sure we’d love to have you. You seem like you’re a good fit and you’re a great singer.”

“Great.” Her smile was radiant and honest. “When’s the next rehearsal?”

“Next Tuesday.”

“Cool, see you then.”

And she left, leaving the four of us staring at an open door to the basement stairs. Radically, in the span of two days, the band had changed in two fundamental ways. I wasn’t sure if things were better or worse but they were definitely different.

“Where did you find her?” Wool asked.

“I really don’t know. I think she found me more than anything.” I told them the story about the rest stop, how she had just appeared because she wanted to hear me play. I left out the part about falling in love with her. It didn’t seem that prudent.

“She’s good,” said Bill. “Real good.”

“Yeah. She is.” I didn’t say it so much for confirmation as out of a sense of wonder.

“I’ll get better,” Stilton said.

“I know. Thanks for not telling her about your dad’s dog.”

And with that, we started packing up. I put my horn in the case and realized I didn’t deserve to even have it. I had this talent, a river running through my veins that pulsed with the beat of music and emotion but I had been ignoring it my whole life. Sure I could play but not play, not like she could sing. I had been cheating my talent all these years like some fat old bastard sneaking across town to sleep with a whore while his wife went to a church social. I had pretended I could play, showed off for my parents but all I was doing was pretending. There was this ability I had that I had specifically chosen to short change, to push to the side while I went on about being a pretentious asshole. I thought I was dedicated but it was all just play acting. Listening to her sing, watching her work, I realized nothing I had done meant a damn thing as far as the sound coming out of my horn was concerned. I looked at it lying in the case and made a promise not to neglect it or my talent any longer. But promises are easy to make and hard to keep and Fate had other plans.