Revisiting the politics of fear and the common enemy

posted by Jeff | Saturday, February 18, 2017, 7:32 PM | comments: 0

I've written before about how fear seems to be at the core of American politics in recent years. As I've said, this is not something that is the exclusive domain of either side. While the focus now is on the right's desire to make sure you're scared of brown people and the extraordinary threat they pose to you, the left wants you to be scared of rich people and your own inevitable financial ruin. Scared people have a strong tendency to get beyond people that say they can protect you from the threats, but beyond the fear, what they're really doing is gathering support to confront a common enemy, real or not.

Donald Trump has managed to turn this into an art form, and takes it one step beyond the common enemy. He has learned to identify the enemy, and then blame that enemy for his own failures. This isn't a new tactic, certainly, as taking responsibility for anything isn't really his thing. It's awfully convenient now that the new enemy to unite against is the press, because in his mind, they are the reason there's a perception that he's not doing particularly well. I thought that participation trophies were the exclusive domain of bed-wetting liberals, but apparently not.

This isn't the end of the scapegoating, however. Even Fox "News" is starting to turn on Trump. Congress, even the GOP side of the aisle, will not be far behind. At that point, it won't just be the press, it will be Congress that is the enemy. The judiciary is already the enemy.

We have to do better than this. The right will have us believe that we're more likely to be killed by a terrorist than win the lottery, when the reverse is true. The response is not logical. We can't let the other side have us believe that financial success is the result of nefarious intent either. We get the government we deserve when we allow these ridiculous fear-based policies dominate our politics. Identifying an enemy is not the thing that makes us better. Identifying a problem and objectively looking for solutions is what makes us better.

A new found love for American history

posted by Jeff | Thursday, February 16, 2017, 4:30 PM | comments: 0

I read an interview recently with some prominent anthropologist and historian who explained why humanity has managed to keep a pretty consistent cycle of destroying itself periodically. He was basically validating the theory that history tends to repeat itself, and he explained why. Generally, the worst of human action is spaced out by several generations, and he suggested that this is why the "war to end all wars" was not, in fact, the last world war, or any war for that matter. He said that as the reality of human suffering becomes less distributed and separated by more generations, we simply forget about it and do dumb things, oblivious to history. Another story I read made the point that the Internet may have changed that, but it's hard to say if it makes things deteriorate or get better faster. On on hand, information is freer than ever, but on the other hand, humans have a strange desire to live in willful ignorance.

Bright and cheery thoughts, right? Regardless, this fascinates me in part because one could argue that history can serve as a way to both predict a possible future and absorb some serious knowledge. Of course, there's a certain historical musical that no one has ever head of (wink, nudge) that obviously has sparked a great interest in American history. I've been reading the Chernow biography of Alexander Hamilton, and I can't wait to read his George Washington book as well. Going deeper than the superficial stuff that you might get to learn in high school (if you got anything out of it at all) has been extraordinary. The United States almost never came to be, and if we're being honest, the founding fathers were kind of a bunch of dicks. They were brilliant, well-intentioned people, certainly, but they weren't people I'd go get a beer with. They kind of gloss over in school that Washington was a slave owner, you know? The self-evident truths were a lot of talk that didn't extend far beyond white men who didn't want to be accountable to the king, unfortunately.

Despite the character issues, they got it more right than wrong, and it took a fair amount of humility to leave space for the Constitution to be changed and improved. There's no question that the gears of progress have been painfully slow, and even after the abolishment of slavery and granting women the right to vote, filling in the blanks took entirely too long, and it's not finished. It's staggering to think that Jim Crow laws were still a thing until a few years before I was born. That's nuts. Still, when I read some of the theory behind the structure of the US government, I can see how things moving faster could have disastrous consequences. Washington may have had slaves, but the humility he exhibited in his farewell address is brilliant:

"Though, in reviewing the incidents of my administration, I am unconscious of intentional error, I am nevertheless too sensible of my defects not to think it probable that I may have committed many errors. Whatever they may be, I fervently beseech the Almighty to avert or mitigate the evils to which they may tend. I shall also carry with me the hope that my country will never cease to view them with indulgence; and that, after forty five years of my life dedicated to its service with an upright zeal, the faults of incompetent abilities will be consigned to oblivion, as myself must soon be to the mansions of rest."

Which leads to the present. Equality for the LGBT community was a slow-moving train as well, then, in the span of a few years, the marriage issue was settled. We've gone from an arbitrary war on drugs to the legalization of weed in a few years. I'm not particularly interested in it, but I've been swayed and understand now how destructive the fake war was. Now I see a slow awakening around carbon and energy policy, and I think that's going to blow up next. Information, history, knowledge can drive people forward if they choose to see it.

American history, and really world history, has been pretty much on the better side of what humans are capable of, and the cycles of suck do seem to get shorter over time. In a bizarre time when indifference and apathy has led us to the hottest mess of government I've seen in my lifetime, it's that historical context that I lean on. The American way has been one of persistence, and I hope we can keep that up.

Packages, libraries and frameworks, oh my!

posted by Jeff | Tuesday, February 14, 2017, 8:12 PM | comments: 0

Last night I wrapped up about 16-ish development hours rewriting and refactoring some code used to integrate with a third-party service. (Actually, I spent double that time, but the other half was spent on a lot of peripheral refactoring and unit testing, as well as significant changes to the feature set.) The TL;DR version is that the previous integration work used an open source library that didn't quite do things right in wrapping a REST service, so a lot of the normal kinds of failures you expect to get were difficult to get instrumentation around. I completely dropped the dependency on that library. Now it works, works fast and fails in a predictable and observable way. Hopefully my team and customers will be happier for it.

Interestingly, the dev team of the product we're integrating with once wrote a blog post suggesting that you really don't need a library, SDK or whatever wrapped around their API, because REST is pretty simple. There was a time when I might have said that I also wasn't interested in reinventing stuff, but I've eventually come around to see their point. In fact, as much as I've embraced the open source world and taken shortcuts to reach my destination faster, I've come to realize that this conflicts to some degree with my hiring philosophy.

I can't stand the developer types that think that quizzing people on encyclopedic knowledge of algorithms and design patterns is a good use of time. Sure, you should have a good understanding of how HTTP works, but I don't care if you remember what SOLID stands for as long as you practice it. I'm absolutely in the column of putting a candidate through a coding exercise, and I don't care what they need to do to arrive at the end product, because it's that journey that I'm most interested in. The most valuable developers, in a world of managed code and countless open source projects, are the ones that can skillfully compose solutions in a way that makes the product maintainable, extensible and scaleable. If they have to get all over StackOverflow to do that, I don't care, so long as they thoughtfully compose and don't just cut-and-paste.

That brings me back to my point about dependencies. Packages, libraries and frameworks definitely have their place in your project, but taking those dependencies should never be taken lightly. Should you endeavor to write your own front-end UI framework or a back-end dependency injection container? No, that's a waste of time, and you probably won't be good at it. Should you take a dependency on some package that you could write yourself in 17 lines of code? No, because those kinds of trivial dependencies can "break the Internet." The reality is that you need to look at the cost-benefit ratio of taking these dependencies, because sometimes the shortcuts don't save as much time as you'll use later on supporting something you don't own.

Remote work works

posted by Jeff | Monday, February 13, 2017, 11:00 AM | comments: 0

Facebook kindly reminded me recently of my start for my first 100% remote gig, and it occurs to me now that I've been doing it for four of the last five years. The break occurred during my contract year at SeaWorld corporate. That was a fun year, and while I didn't mind the commute, there's no reason I could not have done the same job remotely.

I've had teams composed of people from Seattle to Tampa. The distance has never been a deterrent to getting work done. The technology to collaborate and make things happen is pretty mature, and it has been for a long time. I see my coworkers every single day, even though my current team is spread out all over Florida (plus Atlanta and soon, Oklahoma City). Despite the distance, I feel like I know them pretty well. Colocation may have some benefits, but honestly, they're limited to being able to go out for lunch together.

I still found it weird a couple of years ago when Yahoo decided to end remote work. Think about what that means: Everyone had to live in a more expensive place, Yahoo had to pay for real estate in an expensive market, people who bailed had to be replaced at enormous cost, morale took a hit. The company line was that they wanted higher levels of collaboration, but as someone who has delivered outstanding work with distributed teams, I call nonsense on that one. I think it was based on the desire to command and control. The problem is that there's no truth to that scenario. Physically seeing someone in a seat is not indicative of their ability to do the job. In fact, the thing I've been saying about remote work for years is the opposite: When you're remote, the only thing you really have to show for your work is results (or lack thereof). That's a pretty powerful motivator to do your job well.

There are benefits for the worker that go beyond the basic flexibility of time management. You don't lose literally weeks of your life to time spent commuting. (A half-hour each way commute sucks 7.5 weeks of your year away from you.) Heck, that's good for your employer too, because I think generally one agrees that time not spent commuting ends up being time spent working. You're not using energy to move your car. Even with Diana working part-time and me occasionally going to the office, we scarcely drive 600 miles per month. We could probably get away with one car about 95% of the time.

I'm not opposed to commuting, but remote work makes so much sense.

Now, it's not all perfect. I have two related challenges. First, I don't always respect boundaries in terms of time. I've been that crappy dad who has asked my kid to not bother me at 6, 90 minutes before his bedtime, and I don't like myself for that. Second, I don't move around enough, and I'm making a lot of poor decisions about exercise. Sure, I could go walk a few miles in the morning, but I talk myself into knocking out some email as soon as I get up. That's dumb.

The people in your path that make you want to be more

posted by Jeff | Friday, February 10, 2017, 1:00 PM | comments: 0

As my friends all know, I have a Hamilton problem. I'm not listening to it as much now, but as one of the more exceptional pieces of art created in my lifetime (I don't think I'm overselling it), it sure has opened up a lot of things to think about in terms of history, finding our place in the world, the way our government works, the way we as humans affect each other. So I was struck by an interview that 60 Minutes re-aired and updated a bit with Lin-Manuel Miranda, when he mentioned that it's often the crossing of other people in our lives, in his case Alexander Hamilton, centuries after he died, that inspire us to be more. That's really profound.

Indeed, it's easy for most of us to encounter people and wonder, "What am I really doing with my life?" I've written countless times before that scope doesn't matter that much. I think that frankly if you can raise a child and not screw them up too much, you've already achieved one of the hardest things ever regardless of whether or not anyone recognizes you for it. But sometimes people still challenge you, whether it's in person, in books, in the past or the present. Sometimes the people may not even be real, as a work of fiction.

Like a lot of things in life, I don't believe that this is simply the result of randomness (though it may help). You can make this situation happen for yourself if you choose. I live by the idea that you're only as good as the people you surround yourself, so that's part of it. Beyond that, you seek out others who make things happen. You read books, especially more non-fiction. You study history and its most interesting people. There is a lot to draw on out there, but you have to want to see it.

If the world can get through the next decade or so, beyond all of the willful ignorance, the optimist in me sees a renaissance. Creative, driven people can and will solve problems. Knowledge, learning, science will be celebrated. I think our humanity depends on it, and we can be motivated to do it.

Disney Wonder, February 2-5, 2017

posted by Jeff | Sunday, February 5, 2017, 10:21 PM | comments: 0

Given the frequency of our cruising the last few years, I suppose I make these little trip reports mostly for my own reference, so I can look back at the way things changed, to catalog the moments so I understand the sequence. The truth is, I think I appreciate the opportunity for these vacations more as time goes on. My child is growing up fast, and as I close in on mid-life, I'm highly aware of how brief these moments are, and how fortunate I am to have them.

The Disney Wonder had an extensive dry dock rehab in October, some months after we sailed on it in Alaska. As the second-oldest ship in the fleet, some 17 years and change, certainly it had been well maintained, but it was looking a little dated in places, tired in others. What I noticed in particular included restrooms with broken tile, a buffet that looked old and was laid-out inefficient, an insufficient kids pool area, and aging restaurants. Of course, using the improvements to the Magic, the year-older ship, as a blueprint, they brought the Wonder up to date and nailed it almost every way. There are no signs showing that this ship is the age that it is. I was talking to an officer that mentioned the exterior in particular, using modern paint, is much easier to maintain, much shinier, much less prone to fading. It's really a beautiful ship, and when you're in port with some of the hideous ships of other cruise lines, you have to appreciate Disney's desire to build something classic in appearance.

This was a 3-night cruise, but because of the off-season placement of the ship (it spends much of the year on the west coast), it departed on a Thursday and did not stop at Nassau. The Bahamas are a little crowded this time of year, I imagine, which is good because the fares are all lower. So the second day was spent at sea, the next at Castaway Cay. As it turned out, our day at sea included turning around and getting close to Freeport on Grand Bahama to transfer off a passenger for a medical emergency, but otherwise the ship was in no hurry until the return trip to Canaveral. We never get off the ship in Nassau anyway, and there's plenty to do onboard.

From a food standpoint, there have been some tweaks to the menus in Triton's and Animator's Palate, but they're about the same. Animator's Palate has upgraded video screens (and probably audio) for the animation show, but the teases they made showing kids drawings animated on screen were not there. The big dining story is the creation of Tiana's Place, and it's amazing. It's a new menu, and there is live music. My only criticism is that the staff does a parade around the restaurant, and it gets loud, and in our case it came at the expense of getting our desserts in a timely fashion. When you have a kid having long, busy days, drawing out dinner time is not ideal.

Also, minor complaint, the Wonder has soft pretzels, but they insist that they only offer them when they're at sea, and that sucks. They said this in Alaska as well, even though it didn't seem to be true. Major complaint: They made the one bar a "proper English pub," and removed Strongbow (the dry stuff from the UK) and replaced it with... wait for it... Angry Orchard. Gross. Having "real" Strongbow has been one of my favorite things about DCL beverages.

The Oceaneer's Club and Lab kids areas were completely rebuilt, which is good because they were tired and dated. However, aside from programmed activities, it didn't seem like there was that much for an enterprising kid to just pick up and do. To make matters worse, the new Slinky Dog slide, Simon's incentive to enter the club, was almost never open because apparently they have to staff it. That meant we couldn't unload the kid for an hour or so. Finally, on the last night, they opened it right before dinner, and he went in. Then, unexpectedly, they served macaroni and cheese for dinner in the club, and Simon made friends and stayed there.

The live entertainment on our July sailing was a little mediocre, in part because the old Toy Story musical was not very good, and also the other shows have tracked chorus parts. That's still true, unfortunately, but they ditched Toy Story for a very ambitious adaptation of Frozen. I love the movie, but I try to keep my expectations reasonable. I've seen a lot of high quality, union theater lately, so I guess I'm more critical than I used to be. Disney has a lot of great art to work from, and we've seen great stage adaptations of other films. I'm happy to report that they almost completely nailed it. You wouldn't know that it was the same company doing the other two revue-style shows.

In terms of technical execution, this was the best design we've seen from any onboard show. It was a skillful mix of scenery, video projections and puppetry, carrying on the traditions of The Lion King and Finding Nemo: The Musical at Animal Kingdom. The choreography was great to watch. Vocally, the chorus was live, addressing my biggest complaint. Most importantly, the actresses playing Anna and Elsa were not directed to emulate Kristen and Idina. In fact, I would even say that the performances they gave were outstanding, but played to their strengths. Elsa's "Let It Go" had different "wow" moments, and it was great. It's everything that you want theater at sea to be, but almost never is. I think they deserve a lot of credit.

It wasn't just the theatrical shows, however, that were fun. As I said, the live musicians in Tiana's Place were above average. The lobby and bar singers were all much better than I've seen on previous sailings. Heck, even the bingo crew was pretty entertaining. I finally saw Rogue One (whoa, that was dark) and Moana (Lin-Manuel can do no wrong).

We had a perfect day at Castaway Cay. Well, the water was too cold for my soft Florida body, but we had a cloudless blue sky, 75 degrees and a light breeze. That's not a bad way to spend a day at the beach.

There were a few challenges we had with Simon, but a lot of that is rooted in the fact that Diana and I really want to do a cruise without him. I love him dearly, but he's been very challenging lately (that's a post all to itself). Fortunately, we had my dad aboard this time, so we did get a few hours to enjoy a couples' massage, something we haven't done in years.

Another successful trip in the books, for sure, even with a few relatively minor hiccups. DCL does an amazing job.

Taking back patriotism

posted by Jeff | Sunday, January 29, 2017, 10:37 AM | comments: 0

I have fond memories of learning American history in grade school. There was something fascinating about the framing of our government, the struggles for equality, the innovation during the Industrial Revolution. There was a clear and obvious reason to feel patriotic about our nation. It seemed even more relevant in the midst of school desegregation.

Patriotism meant pride with humility. It meant we embraced our flawed and often tragic past, but reveled in our accomplishment to get beyond it. We were always a key player in a narrative that benefited a world greater then ourselves. We invented medicines, new industries, and defended friends from fascism and tyranny.

At some point, patriotism was co-opted to be something else. Humility was the first thing to go. Treating war and conflict like a sports rivalry replaced the reluctant gravity of causing death among our fellow humans. Blind flag-waving took precedence over engaged, intelligent discourse. Nationalism replaced patriotism as a means to divide and marginalize segments of the population. Patriotism meant you were with us or against us.

This is not what I learned in school.

Political apathy caused us to elect a reality TV show host, someone more obsessed with his own popularity than solving problems. This isn't normal, but what we've seen in the first week of his presidency has been extraordinary. I'm not referring to his actions, but rather the responses to them. The apathy has transformed into extreme engagement and protest. In fact, I would argue that this is the definition of patriotism that I learned in grade school.

I feel like what I've heard the last two years is that America has become a real shit hole. Obviously, a lot of people believe this. We have challenges, for sure. Technology is radically changing our economy and the labor landscape. Working people live in poverty. The environment puts our way of life at risk because of the way we disregard it. The renewable energy transformation is occurring too slowly.

Despite these challenges, we are still a nation that changes the world with our inventions. We launch and land rockets. We make the world's information searchable and connect friends around the world online. We make electric cars here. Some of the most brilliant scientists and medical minds live here. Perhaps most impressive, we invented devices, supercomputers in our pockets, that fundamentally changed everything about our lives. That's the extraordinary America that I know.

Socially, we continue to slowly erode our foundation of injustice. The hold outs of institutional racism are being identified and dealt with. Our LGBT friends can marry and enjoy the legal protections that match their love. Women are slowly having their rights codified, and the cultural admission of inequality is taking hold as a precursor to action. Religious freedoms are guaranteed but not given as a basis for legal discrimination. That's the extraordinary America I know.

With this week's actions by the president threatening all of this extraordinary progress, the people have found their patriotism. The time has come to take patriotism back, to send the message that we are better then this. Going on about how much we suck serves as an effective means to instill fear and establish control, but we're not having it.

Patriotism means standing up, with pride and humility, acknowledging our flawed past and fragile future, and demanding better. A better outcome that proves that "we the people" includes all of the people. That's the America that we were destined to be.

Science, equality and human decency are not left or right issues

posted by Jeff | Thursday, January 26, 2017, 4:00 PM | comments: 0

I've never seen people as politically charged as I do now. Maybe that's a good thing, because apathy is what led a minority (and by most measures, it is a minority) to gain power in government. The apathy has been getting worse for my entire adult life, so perhaps this the collective kick in the nuts we needed.

Regardless, there are several areas of our society that are bizarrely being painted as partisan issues, and that has to stop. It's particularly disturbing in just the first week of the Trump administration.


OK, this one I get why people make it political, because of a misguided sense of obligation to protecting incumbent industries and corporations (something ironically at odds with the desire for less government and regulation... because it's just the same government and different regulation). That's a horrible idea in terms of overall economic policy, because by protecting the incumbents and deincentivizing new industry, you leave those opportunities to someone else, probably China, who gains the first-mover advantage while the incumbents fail to evolve and die. You shouldn't need a degree in economics to understand this.

That aside, science cares not what you believe. You may not believe the sky is blue, but it still is. Nowhere is this more true than with climate change. One of the surprising side effects of this is that, after years of a GOP-run Congress, the states are starting to take matters into their own hands. California and New York are taking extraordinary steps toward securing their own futures in terms of energy and the environment. As Conan The Republican found in the NatGeo doc Years Of Living Dangerously, his own party continues to put the military and the nation at risk by suppressing science and rational energy policy. Inflexible ideology doesn't make science go away, it only leaves you on the hook for ignoring what is right in front of you.

More concerning now though is this insane effort to erase from the Internet the results of scientific study by government agencies. As a taxpayer, I paid for that research, and regardless of whether or not it suits anyone's agenda, I'm entitled to see it. That's what a transparent government does. I'll be watching very carefully, because if anything changes there, my own political involvement is going to get extreme.

Science, you see, is not a partisan issue. As Webster puts it, science is "knowledge or a system of knowledge covering general truths or the operation of general laws especially as obtained and tested through scientific method." It doesn't matter who you voted for, the atomic weight of Nitrogen is still about 14, and it still makes up about 78% of our atmosphere.


The worst strawman I've seen this week is that women marching on Washington (and around the world) last weekend was totally unnecessary, because women are equal under the law. That's the most delusional thing I've ever heard. Equality in American history is funny like that, because even outside of the Jim Crow era, inequality that is not explicitly defined leaves room for implied, legal inequality. American history has in the long run been on the right side of this, but it's slow going. Our most recent victory in that sense is the recognition that same-sex couples are due the same rights as heterosexual couples.

This too, is not a left or right issue, but the reason that it becomes political is that the absence of explicit law allows for implied legal discrimination. I admit that the last year has been an eye-opening experience for me, because in the diverse field that I work in, and the diverse places I've lived, I don't fear people who are different than me. However, a vocal minority, now in power because of the aforementioned apathy, is trying very hard to codify their fears from people of different races, ethnicities, religions, sexual orientation and, still, gender. I thought we were over this.

Human Decency

As anyone with even the most basic education knows, we all look pretty much the same when we peel off the skin and the human constructs that we apply to our identities. And even though I don't actively practice the Christian faith that I was brought up in, the most important lesson that I took from that experience was that we need to take care of our fellow human beings, regardless of any of the circumstances or identities that they possess.

Human decency is not a left or right issue.

But practicing human decency means being a lot more flexible in how we see the world, and it requires a great deal of courage to move beyond fear of the people we don't know or understand. Ask yourself, as objectively as possible: Are the people we appoint to lead capable of exhibiting that courage to move beyond fear and embrace human decency? Do you have the self-awareness to answer that honestly?

Simon has a new roller coaster problem

posted by Jeff | Tuesday, January 24, 2017, 2:00 PM | comments: 0

I'm not sure if I've written about it, but Planet Coaster came out recently, and I think it's a solid game. Like RollerCoaster Tycoon 1 and 2 from way back, I've played through the bulk of the scenarios, and now I kind of hang out in the sandbox to build stuff. It's pretty cool.

Simon, not surprisingly, also thinks it's cool. His playroom is currently occupied by an aging K'nex Serpent roller coaster, and a bunch of wood tracks, a Hot Wheels garage and countless cars of various sizes and shapes. Oh, and a bunch of Duplo blocks. Collectively, this is a "ride" that he likes building, and as is the case with actual amusement rides, he's mostly interested in the mechanics and procedure of the rides and not really the ride experience itself.

For some time, he was all about watching me build stuff in PC, but he wanted to try and do stuff himself. I'm not sure if he's ready for physics and how coasters work (my gut says challenge him and see what his almost-7-year-old brain can absorb), but he gets that he can drop a pre-built ride on the ground and build some paths to the entrance and exit. He also gets that he can do what the game calls track rides, which are things like cars, log flumes and the like. So I let him go nuts.

He dropped in some pre-built coasters that came with the game, or those that I saved, but otherwise, he managed to do some serious work as he sat there, going at it for six hours. He built a custom monorail, some car rides and a log flume, and a ton of flat rides and food stands. I wasn't sure how he would do, because navigating in 3D space with some weird mouse and button movements isn't very natural, but he did it.

In fact, he overdid it. When it came time for dinner, he was complaining about a headache, which isn't entirely surprising because I'm not sure he actually blinked during that time. I should probably have enforced a break. Still, I'm careful about how I limit his time, because I think that there is some developmental benefit there in terms of fine motor skills, problem solving, patience and focus. I also remember how adults were constantly treating me like an inconvenience or burden because I wanted to mess with their computers. I might be a little bitter about that.

We'll try to do the roller coaster physics, and see how that goes.

Women in global unity

posted by Jeff | Tuesday, January 24, 2017, 8:41 AM | comments: 0

The march on Washington, and really all over the US and even abroad, was a wonderful occasion. This was a hastily assembled effort that came with an uncomplicated concern: That the civil rights of many people, and women specifically, are at risk because of the current sentiment in government.

Why is this important? First off, there is nothing more American than massive, peaceful protest. Democracy in this country has always been well intentioned, but even the founding fathers knew that "we the people" did not include all of the people. It's a legacy we still haven't beat, for reasons as violent as intimidation and legal as gerrymandering. This kind of protest is self-energizing and sends a message to those in power.

Second, it shows the importance of action. Anonymous social media activism isn't activism. Like and share doesn't mean shit in the greater scheme of things. But get like minded people out into the world, and things happen.

I've read some criticism of the march by people genuinely unsure about why it was necessary. For that, I was struck by a photo I saw of an elderly woman holding a sign that suggested she couldn't believe she still had to protest for civil rights. Indeed, it seems absurd to me that women still do not have an equal place at the table. It's not about butthurt over the election, but the amount of hostility toward the rights of women and minorities has come to a head. It's not OK to continue this way.

I'm proud of all the friends that went to Washington last weekend, or participated in other cities (including Orlando). I have to wonder if we'll ever get to a point where this isn't a political issue, and rather just something that is a result of basic human respect. It's easy to criticize the discontent when you have nothing at stake. That seems to be our cultural climate right now.

Looking back at the Obama years

posted by Jeff | Sunday, January 22, 2017, 11:44 AM | comments: 0

I realized today that, in my adult life, there have only been three presidents: Obama, Bush and Clinton. The elder Bush was president in my first two years as a voter, but he was elected prior to my turning 18. Looking back at those presidents, I remember being both stunned that Clinton could pull off a balanced budget, the only one to do it in my lifetime, while pissing away his legacy by humping interns. I didn't vote for Bush, but Gore and Kerry were not particularly compelling alternatives either. I still think that Bush is fundamentally a good man, but his obsession with going to war with Iraq, on what turned out to be false pretenses, will forever overshadow his service. There are no winners to pick.

Which brings us to Barack Obama. He campaigned on the promise of hope and change. In my lifetime, I've been struck by our inability to move beyond race, because as a kid growing up in the inner-city as a white minority, it has appeared absurd that racism is still a thing. Yet, in high school and college, I learned that not only is it a thing, but it's a strikingly commonplace problem. Indeed, just the election of an African-American president implied that we were finally over it. I could not have been more wrong.

So let's just go to the race thing straight up. Obama being elected as the first black president is absolutely an achievement of historic proportions. And I don't believe that it's something that just anyone could have achieved. He truly had the right temperament and appeal to make that happen. At times, "preacher" Obama delivered on the promise to inspire. It was something that we sorely needed more of throughout his presidency, in my opinion.

I'm not going to go through eight years of policy and pick winners and losers, but it was, at best, a mixed bag. Presidents, by nature of the structure of our government, can set agendas and have striking social and foreign policy impact, but getting laws passed requires congress. We know how that went. A lot of people will defend that kind of impotence with "but Republicans," but I think truly transformational leadership figures out how to get beyond that, and that's what I was hoping for.

He did OK on foreign policy. Getting the regular inspections and access in Iran was a big deal, and banning the use of torture was the moral thing to do. On the other hand, he never did close the Guantanamo prison, where we hold people indefinitely without charging them. Few things are less American than that. He failed on the issue of domestic spying until the Snowden leaks, and even then, his corrective action was inadequate.

The bulk of the economic metrics show we're in a better place than we were in the recession, but the speed of the recovery hasn't been ideal or all encompassing. I'm not sure if that's really a problem that government can solve. Politicians in general fail to define the problems correctly (hint: it's not globalization or trade affecting jobs, it's automation). Personally, I'm in no position to complain at all. I've been steadily employed since 2009 and doing well, but a lot of that has to do with my profession (which is, ironically, partly responsible for the aforementioned automation).

The thing that a lot of people are looking at right now though, in light of the election of Trump, is the way a president applies humility and decorum to the office itself. There is a dignity required of the office, and every man who has occupied it in my lifetime has possessed those qualities, regardless of where they were on the political spectrum. The Obamas were a classy family, for sure. The man rarely got too riled up, and he respected the office and institution of government, as those did before him. For that, he will be sorely missed.

Revisiting ASD and inflexibility

posted by Jeff | Wednesday, January 18, 2017, 8:01 PM | comments: 0

How strange that almost two years ago to the day I wrote about the struggle with ASD-related flexibility that Simon has, because we're dealing with it a lot lately. The difference is that now the issues surround things more relevant to an almost-7-year-old. For example, when the tap water is much colder, as it is in the winter in Florida, you have to adjust the shower differently, and my boy freaks out when the perfect temperature is not achieved with the handle at the 12 o'clock position. He's getting better at cutting his food with a knife, but if he can't make a clean cut, he won't eat it. Similarly, if I don't cut a sandwich into fourths, it's inviting drama. The other day he freaked out when his bus was late, and the one that picked up the route meant he couldn't sit in "his" spot.

Now sprinkle in all of the typical stuff where an early grade school kid is just trying to manipulate a situation to get his way, and that's the world we're living in. Inflexibility is, at this point, the most dominant "ASD thing" that Simon deals with (though we're getting him tested for ADHD given some issues at school, which is frequently a co-occurring issue with ASD). The thing that I find difficult to keep in mind is that all things, to him, carry the same weight in severity, so while most situations are minor to anyone else, to him they are dire conditions.

This is something that, as a parent, I've not been particularly good at rolling with. I've been pretty wrapped up in my own world the last six months with work, contemplating life and what not to really think deeply about how to help Simon. This has led to some suboptimal fathering moments that usually involve me getting emotional in a non-helpful way. What I would like to do is find everyday situations where I can switch something up on purpose, and encourage him to deal with the change. I also try to recall situations where "plan B" ended up being an acceptable outcome. He wants the opportunities to make his own decisions, but the frustration can be epic when he can't arrive at the desired outcome.

Fortunately, he's making strides in other areas. Academically, math has really clicked, and reading is finally getting beyond recalling words and into actual comprehension (even if he hates doing the homework that works those muscles). I feel like we're just one step ahead, but we worry a lot about him not keeping up. I'm so grateful for his teacher this year. She's been super collaborative and really looks out for him, but letting him struggle when appropriate.

Maybe we don't need another MLK, maybe we just need to be more like him

posted by Jeff | Monday, January 16, 2017, 8:26 PM | comments: 0

If there's anything I can really complain about with regard to my education, it's the lack of history. In high school, world history rarely got much beyond the crusades, and American history never got further than the Civil War. That leaves a whole lot out! I think I was fortunate though for going to inner-city schools, not just for the diversity, but for the fact that Black History Month was always taken very seriously, and it filled in a lot of blanks that about the civil rights era that I would never learn about later in high school or college. Dr. Martin Luther King, Jr. day was not just a day off, it was a celebration of his legacy.

We're fortunate that this particular figure in history is one that really liked to write. We don't need to guess what he was thinking, because he wrote his thoughts down. Combined with writings to him, we have a remarkable record of what the man was about in a time where his leadership was so desperately needed. Of the many figures in American history that I wish I could meet, he's easily at the top of the list. His message was essential, and he put himself at great risk sharing that message. Ultimately, he paid for it with his life.

I often wonder if he would be thrilled or disappointed with the progress we've made since that time. After more than a half-century, it seems like his dream should be a reality by now, but I do understand that sometimes it takes generations for change to take hold. I have to remind myself that my great grandmother, who lived to be 96 and died when I was in high school, was born just three decades after the Civil War. We're still a very new nation.

I feel like the last few years have served as a harsh reminder that the brotherhood of man that Dr. King so passionately dreamt of has not become a reality. When I look at the worst parts of the Civil Rights era, I keep wondering where we can find those similarly charismatic leaders that will some day have monuments built for them in Washington. Where is our Dr. King?

It occurs to me, however, that maybe we don't need that kind of revolutionary leadership. Perhaps what we really need is for each of us to try to be more like him. Dr. King was committed to non-violence as a means for change. One of his core principles was to put love over hate in engaging with those who oppressed others. He believed that it was injustice that must be defeated, not people. That's a fascinating bit of nuance to me, because it truly means that you aren't out to take down others, but rather the symptoms of their hate.

I don't hate anybody. I'm strongly discouraged, and sometimes outraged, at the actions of others, but I can't hate anyone. It's just not an emotion that I have the bandwidth for. It's hard not to dismiss those people. But I'm starting to feel more strongly than ever that we, as a nation, are getting a little too old for the 'isms that have plagued us since before the Declaration of Independence was written. If we hold these truths self-evident, that all men are created equal, than let's start walking that walk, and talking the talk. If we can all do it, then we don't need another Dr. King to remind us.

The dream is long overdue for reality.

The promise of talented people

posted by Jeff | Monday, January 16, 2017, 5:52 PM | comments: 0

I'm in the process of hiring someone at work, and while I'm not going to sugarcoat it and say that it's an awesome and fantastic experience hiring software developers, I will say that there's something satisfying about meeting a bunch of new people and seeing the potential of how they may affect your life and your job.

I've said it a hundred times: You're only as good as the people you surround yourself with. I attribute my own success largely to the people that I've worked with. Sure, experience qualifies me to gather a team and handle all of the glue that makes it work, but at the end of the day those skills aren't super valuable without people who are really good at what they do. It's great to have people that you can learn from, and who are willing to learn. There's a kind of self-perpetuating energy that comes from those work relationships, and it absolutely comes through in the quality and value of the end product.

Those qualities in people are probably one of the highest influencers of job satisfaction as well. I worked very briefly some years ago at a company where every sentence started with "I can't" or "I don't know how," and it was a real drag. But the teams where I've enjoyed success have all been filled with people convinced that they can do anything (as time and money allows, at least), and those gigs always produce a natural high.

So right now, that's where I am, imagining a world where the right person fits in and creates that ultimate cycle of revolving awesomeness. It's a torturous process, but fingers crossed that it results in the aforementioned awesomeness.

Yes, people have opinions

posted by Jeff | Friday, January 13, 2017, 9:39 PM | comments: 1

It has been interesting to see the reaction to Meryl Streep's recent Golden Globes speech, which called out Donald Trump's behavior without even using his name. What she said seemed, to me, to not be something that most anyone could really be offended by. It could really be distilled to this:

And this instinct to humiliate, when it's modeled by someone in the public platform, by someone powerful, it filters down into everybody's life, because it kind of gives permission for other people to do the same thing. Disrespect invites disrespect. Violence incites violence. When the powerful use their position to bully others, we all lose.

On closer inspection though, it doesn't seem like it was the things she said that bothered people, it's that she said anything at all. The commentary was generally along the lines of, "She's an actor, she should stick to entertainment!" There's a bizarre double standard that we hold for our celebrities. When they screw up, we criticize them for not being role models. Yet, when they don't screw up, and in fact achieve things in their profession, we criticize them for speaking up. That's pretty weird, right?

But then, this seems to connect pretty well with American politics in the last year, and in fact Streep's point, that it seems to be increasingly OK to marginalize those who are different or don't agree with you. Disagreement is not the same as marginalization. It's not even a political issue. The economy, national security, whatever... it's all secondary when people in positions of authority use their words to marginalize groups of people based on gender, ethnicity, race, religion or sexuality.

I've been called out twice recently for speaking my mind, and accused of much the same thing. And sure, I'm basically nobody. But the one title I have that counts is father, and I take it very seriously. I have a child that is a little different, and while I'm the last person in the world who wants to hover around him and try to defend him from the bullshit he will inevitably encounter, it's important to me that he learn by example that the truth allegedly held self-evident, that all men are created equal, must not simply be a slogan. We have to stop rationalizing going after every person who isn't like us, because that's what it is.

Who needs Medium in a spicy world?

posted by Jeff | Wednesday, January 4, 2017, 8:40 PM | comments: 0

I admit that since Medium was launched, I didn't get it. But I never really got Twitter either, the other thing that Ev Williams co-founded, and that's certainly useful to someone (in particular inarticulate politicians, it would seem). And if that weren't enough, I thought it was weird that anyone needed yet another blogging platform. Williams suggested that it could give a voice to people who wrote quality stuff with meaning. I still don't understand how or why Medium is better for that, because social media has a way of getting things people care about in front of people regardless of quality. People have to want it, and if they do, it doesn't matter where it lives.

Ugh, I feel like I'm writing a tear-down here, but I'm bothered by two things: Valley thinking and slightly misplaced ideas about the value of content.

Today, Mr. Williams announced they were cutting a third of their staff of 150, and closing two of the three offices they had, in Washington and New York. Now, if you're fans of the folks over at Basecamp, and have read Rework, then you know they're probably throwing some WTF's at the Ev-ster right now. Or they might not be, because moving their blog to Medium has been really good for them. But the company formerly known as 37signals has been ever passionate about bootstrapping itself, not taking VC money, not being in Silicon Valley and most importantly building a sustainable business over chasing an exit strategy. Their books are about questioning the nonsense, and I can't think of anything more ridiculous than opening offices in three of the most expensive real estate markets in the country. And also, having 150 people to build up a platform that, to the naked eye, is super pretty and clean, but lacks the functionality of LiveJournal 15 years ago.

I get that it has the feel of Instagram for words, but that's why I don't think it works. What's the business model? Long-form text isn't something you rapidly scroll through the way you do pictures, so even if they're trying to adopt Instagram's model, who wants to buy that? Beyond that, there seems to be a lofty goal of being super cool and intellectual and it'll make you smarter and all of that, but really, if I want that, why would I ever focus on one place to do so? It just seems convenient that Williams believes publishing on the web won't make sense in the long run, because, well, obviously he thinks Medium is the answer.

Here's the other thing that bothers me about his "refocusing" announcement. He really lays into the whole system of advertising and such, insisting that it doesn't serve anyone. And yes, that's a little ironic when he is simultaneously implying that they don't make any money. While it's certainly possible that advertising as we know it is not ideal, what I feel like he's saying is that all of the free love and exchange of ideas and information should happen for free. By now we should understand that isn't possible. Someone, somewhere, has to pay for it. I've been publishing stuff on the Interwebs now for 18 years (shit, I'm old), and there is a cost for everything whether it comes from ads, the exchange of money or whatever. Don't make this a moral issue. If I write the modern day version of the Federalist Papers, I'm sorry, but I'm not throwing away my shot. (#nonstop, y'all!) It's OK to make a business of distributing content, because that's the only business that Medium can be.

More than anything, content wants to be free. Medium wants to be a closed system. I get a ton of content about stuff that I'm interested in via an RSS reader and stuff my friends throw up on Facebook. It comes from a million places, and that's OK. That's what makes the web awesome, and I don't understand why we keep trying to "fix" that. We've seen that a closed system accessed largely by mobile app, like Facebook, can act as a gateway to that, but there's a reason that the Facebook "notes" functionality never really took off, despite most of the world having an account. Content wants to be out there. It's where the flavor is.

Years later, I still don't get Medium. And that's why I'm so publishing this there.

Admiration for people who make things

posted by Jeff | Sunday, January 1, 2017, 6:38 PM | comments: 0

A former coworker posted a photo today of a piece of furniture that he made. I apologize if that sounds wholly unremarkable to you, because to me it seems pretty amazing. To take raw materials and create something is, I think, one of the most amazing abilities of human beings.

While I don't see any universe where you can argue that technology hasn't advanced human civilization (in a net gain sort of way), there is something to be said for making tangible stuff. My grandfather worked his entire life at a machine shop where he would draft machines, on a drafting board, by hand, and they would transform his drawings into things made right there. Some people value craftsmanship enough to pay whatever it takes to buy goods made by human hands, especially furniture. When you walk into an old building, especially a theater, and see the detail in the architecture and decorative patterns, you know that skilled people had to make that happen.

I admire people who have these abilities. Heck, it doesn't even have to be something glamorous. I was impressed when a couple of guys did some electrical work in my garage. I certainly don't have that expertise. It's kind of weird in our culture that we don't seem to value the trades the way we used to. I realize that a lot of the work is done by machines (and they don't get it right either, as a number of people in my neighborhood discovered when we had walls that weren't flat), but you still need people to assemble stuff, lay bricks, install pipes, etc. Those are important jobs, and the result of their work is the places that people live and work for many years after.

Making durable things isn't exclusively about the trades though. I might be selling my profession short here, but we don't make durable things. The Silicon Valley culture with billions of dollars being spent on yet another "app" or something isn't very interesting to me. Admittedly, my frustration in that case is less about the output and more about the goals, which is often to fund something until you can sell it and cash out. Those people think they're making "value" which in and of itself is not really a thing. This is, perhaps, one of the reasons why I find Tesla so intriguing. It's a technology company, yes, but their business is to take raw materials in one door, and cars and batteries and solar panels come out the other door. They make stuff, with skilled people (and a lot of robots) doing the work.

So I tip my hat to people who make things.

2016 Review: Personal life

posted by Jeff | Saturday, December 31, 2016, 12:30 PM | comments: 0

I've been writing these year-end retrospectives now for a very long time. At some point, I started asking the fundamental question about whether or not I end the year in a happy state, and this is the first year where I addressed that long before December rolled around. (Spoiler alert: Yes, I'm happy now, but I wouldn't characterize this as a great year.)


It's often helpful to look back to see if you are getting along to the place that you want to be. Moving to Orange County in 2013 was easily one of the best decisions we ever made, and from a career standpoint, it was even better than that. My contract year at SeaWorld Entertainment was a lot of fun, and gave me more of the administrative and technical experience I wanted. That set me up to a great 2.5 years at AgileThought, where I was able to run development teams and kick ass from a delivery standpoint. I've had some time to think more about my departure from AT for awhile now, and while it was still the hardest decision ever (easily more difficult than leaving Microsoft, and that wasn't a good decision), it makes a lot of sense.

Really it came down to two things. The first was my relentless pursuit to make sure I was heading toward a bigger world with more responsibility. I've known since 2008 that my sweet spot was to build teams that build awesome things and #WINNING. I was doing that at AT, but it wasn't consistent. I started the year in what was essentially a staff augmentation role, and while the client loved me and I delivered, I wasn't running anything. I had two amazing projects with mounds of praise after that, but then I was headed back down the staff aug path. It was clear that the agency model of the company made it hard to advance into a more permanent role that involved leadership and long-term delivery accountability.

Second, I think a part of me was starting to see that the first thing I needed is better served in a company that builds software-as-a-service (SaaS) products. AT has done some product work like that in the past, but it's not the core business. This realization frustrated me to no end, because I adore the people there, and I miss working with them every day. But I've made the mistake of letting career happen to me instead of making it happen for too long, and I had to resolve that.

The new gig is pretty intense, there's a ton of work to do, and being small means that in the short term I need to rely on myself a great deal. That's OK. It's a lot of fun, the product and business has enormous potential, and I'm enjoying it. The anxiety of leaving the previous job and the people will certainly fade over time, but it's hard to leave something you loved for the uncertain promise of something you will hopefully love more.


This was a challenging year for us. Diana struggled through much of the year with migraines, which means she wasn't entirely her normal self. One medication worked at first, but faded over time even with higher doses. Then a different med was prescribed, and we're hoping it has more long-term success. It's a strange condition, because it's not that she wasn't functional, she just wasn't always her "normal" self. I haven't known many people in my life that were as awesome and switched-on as her, and to see her even fractionally less than that was hard.

I addressed my own health in two ways this year. First of all, I finally did an annual diagnostic, after three years. The results were pretty much what I expected. My cholesterol and triglycerides are just over the normal range. This was also the first time I've ever had blood pressure just high enough to be outside of normal. While not at risk tomorrow for hypertension, it's a pretty clear sign that I have to stop neglecting myself in terms of weight and activity. It was another year of neutral weight gain/loss, but I'm no closer than I was a year ago to dropping another 20. I don't have any valid excuse as to why I haven't done it, I just know it hasn't ranked very high in my priorities.

I also took the time to see a therapist for the first time in about a decade. By late spring, I was just feeling... off. I don't think I was unhappy, but I wasn't feeling like myself and found that I was often anxious. There is a lot of depression in my family, and I owe it to myself and my family to head that off if I'm at risk for any kind of hereditary depression. Once I got over the guilt associated with the "my life isn't so bad and I shouldn't complain" thing, it was super productive. I learned a few core things about where my head was. The first was that the work situation, regarding long-term goals, was real. I was feeling comfortably trapped, and that's probably where most of the anxiety came from. Making the change was hard, but there was a weight lifted when I did. I also wasn't doing enough of the things that I liked, and likely over-emphasizing my provider role. I resolved to do more for me, because it really doesn't detract from my obligations to my wife and child. Parenting didn't feel like it was going well, and maybe that was a lack of perspective with the rest of life feeling like a challenge (or struggle). Finally, I was directing too much energy to things largely outside of my control, causing me stress. It really started with the Pulse shootings, and continued through the summer with the toxic politics of the election. I think I fooled myself into thinking that racism, xenophobia, homophobia, misogyny, etc., were all things from the fringe of our society, but it turns out they're not.

I wrapped up the therapy in the late fall, and it made a huge difference. I don't know why we stigmatize this sort of thing. It's the third time in my life I've seen a therapist, and I've come out better from it every time. We take care of our bodies, but it's every bit as important to take care of our heads and our hearts.

Epic vacations

About a year ago, we committed to doing a cruise to Alaska. By that time, we had logged seven voyages with the Disney Cruise Line, and you could say we have a cruise problem. As I've said before, the appeal of cruising for me is the inherent ability to unplug and have everything taken care of for you. No (useful) Internet, no cooking or responsibilities. Applying that care-free approach to travel with a more exotic locale seemed like a pretty good idea, and Alaska looked pretty epic. We started the year with a "local" cruise that our Seattle family came down for, and on that cruise, they signed up to go with us to Alaska. This worked out really well, because as it turns out, flying to Vancouver was going to be way more expensive for us, like $250 more per person, so we flew to Seattle, had bonus days with the family there, and drove up to Vancouver with them for the cruise.

I won't rehash the trip (see here and here), but calling it life changing would be only slightly dramatic. I got to see two glaciers and ride in a train up to almost 3,000 feet. It was one of the most stunningly beautiful places I've been, second only to Hawaii. We want to do more of this, though we're a little torn now because of Simon's age. Yes, we should do some trips without him, but most of the time we like having him around. (Alaska was a mixed bag in that respect, actually.) I hate that I still haven't been to Europe, and I'm sure not getting any younger. Also, we've achieved platinum status with DCL, so my OCD desire to collect certain things is satisfied.


I don't know if it's just our age or what, but we don't end up going to a lot of weddings anymore. Prior to this year, the only one we've been to for years was a couple of friends early last year, and a lot of that had to do with the fact that two dudes getting married only recently became a legal thing. This year, we had my mom remarrying in July, my father-in-law and our neighbors in October, and my best friend in December. And finally, I got to be in a wedding as a "bridesmaid," or "bridesbro" or whatever you want to call it. One of the great things about that last one is that it reminded me of the quality and diversity of my friends. I admit that I don't engage socially as much as I would like to or should, but when I do, I love the people that I hang out with.


This has been a challenging year. I love that little boy and the beautiful personality that's coming together. But man, there have been days where I just don't feel like I can get it right. Of all the things I'm self-aware of, and hyper-critical of myself for, being Simon's dad is at the top.

I don't have any specific revelations to share here, it's just a general recurring feeling this year. I guess it's just what parenting sometimes is. It's less the ASD or developmental challenges now, and more of the typical 6-year-old things. I don't feel like we've set up expectations for an on-demand and absolute world, but many of his issues revolve around inflexibility when he doesn't get his way.

2016: Shit show

Putting aside my own challenges this year, I think we can generally agree that 2016 was a total shit show of a year. The weather, with a serious hurricane, along with fires, earthquakes and volcanos took countless lives, police were ambushed and killed, black lives are still less important, and we witnessed a tragedy unlike anything else here in Orlando when a homophobe killed 49 people. If you live here, it's likely you were not further than one degree separated from someone who died in Pulse. OK, so maybe I'm generalizing, but in our circle of friends and acquaintances, it didn't take long to find those connections. We live in a very diverse county. A number of friends still aren't sure what "normal" looks like, but they've worked hard to bring the community together. Six months later, the thing that disappoints me the most is how quickly the rest of the world seemed to forget.

The biggest shit show was of course the presidential election. Reality was simply unimportant, as was policy. The nation elected a fascist, racist, xenophobic misogynist. It's not so much the election itself that disappoints me, as much as the people who voted for him. Not one can rationalize the thing I keep coming back to: If you did any of these things at your job, you would most certainly be fired. He has publicly done things that would disqualify you from minimum wage jobs, or suitability as a mate for your daughter. We have erased the dignity of the office completely by electing an attention whoring reality TV host. There's no universe where that's OK. Hillary Clinton would have been the status quo, at best, but that would have been far preferable to a man that panders to hate. The idea that there is, or ever was, some kind of moral equivalency is intellectually dishonest.

We lost an extraordinary number of our artists and pop culture icons. It was jarring. Maybe it's partly just the shock to the system that us Gen-X folks would eventually feel, but it was a brutal year. It went right to the end, with George Michael and Carrie Fisher.

I can't say that the year was without joy, but between the death and destruction, and everything else, it was a suboptimal year.

Technology, my shelter

It's not news that I enjoy thinking about, learning about and using technology. This was a great year for it, even though I didn't really buy any outside of a last-minute phone purchase. Technology is where I put my head when the world around me seems impossible. I genuinely look at my phone as a thing of wonder. If I could show myself this device ten years ago, just before the original iPhone was announced, I would have certainly considered it science fiction. This was a time when that Mac Pro on my desk, with a massive 2 GB of RAM, was state of the art. My Pixel phone has twice that amount of RAM.

I also had a streak of commitment to start porting my forum app to the newer frameworks, and I really enjoyed it. It's still not in any kind of release state, which is lame, but it's hard to dive in when you're writing a lot of code in your day job.

This was a great year for Tesla, and as the owner of an electric space car, I was blown away at the progress the company made in terms of manufacturing capacity, energy products and the acquisition of Solar City. The sustainable energy future is coming, and we're getting close to the point where you just can't get that cat back in the bag. Entire islands are now going solar, and distributed generation is becoming a thing. Florida defeated a messed up amendment that would have thwarted efforts for net metering and distributed generation. Oh, and it looks like we're now qualified to get a free Tesla Powerwall 2, a 14 kWh battery for the home, because of customer referrals. If we had solar, it would offset some or all of our night consumption, but until we go down that road, it's the ultimate UPS and backup during an extended power outage.

Am I happy?

The answer is yes, absolutely... now. There were times throughout the year that I wasn't, for all of the reasons above. It's funny, because I think I spent a lot of time trying to outsmart myself with the typical, "Relative to x and y, life ain't so bad!" arguments. But you know, relative to the last three years, this was at best an uneven year, with extreme highs (Alaska, weddings), and serious lows (Pulse, the election). As I sit here now, and look at my darling wife and child, in my warm home, stoked about the work ahead at my job, it's smile inducing.

2016 Review: The business

posted by Jeff | Saturday, December 31, 2016, 10:55 AM | comments: 0

My 16-year-running side business this year suffered, because I hit a historic low in time spent maintaining it. What can I say, other than I was distracted by the rest of life. This doesn't mean it was all bad, and in fact it was "profitable" this year. I use that term in quotes, because when it takes a loss, it's generally because I bought stuff like computers, cameras and such to support the business. This year, I did none of that.

I did some real work though, just not very much. First, CoasterBuzz and PointBuzz went all-HTTPS this year, something I've wanted to do for a year or two but just didn't follow through. Mind you, posting or reading a deep commentary on the pros and cons of virtual queueing probably doesn't need to be secure, but why not? Now it's not just the logins and credit card entries that are encrypted. There's allegedly some potential Google-juice to gain from this at some point, but that's hard to measure.

The other thing I did is finally ditch Chase Paymentech for a merchant account. It was a total rip off. While I process a fair number of transactions in the spring for club memberships, some months in the fall and winter there may be three or four at best. The fees were $35 per month before charging a single credit card. There are a ton of great options now, and Stripe had the best tooling and fee structure. Now, I pay $1.03 to process a $25 CoasterBuzz Club membership, which is 2.9% + 30 cents. Chase was 3.79% + 25 cents per transaction, minimum $25 per month, plus another $10 for the payment gateway. I waited way too long to switch.

We also brought back PointBuzz Premium, after I started using Stripe. It doesn't make a ton of money, but it's a little something for the biggest fans of the site, kind of a tip jar, if you will.

The only other thing that I spent time on was the PointBuzz database for Cedar Point history. And when I say I spent time on it, I mean I wrote the bits of code to apply Walt's design and a place for him to compile the lists. It's massive.

As for the traffic, PointBuzz had essentially flat visits, but fewer page views. Summer was soft because apparently there wasn't that much to talk about, but it picked up in the fall as people endlessly argued about what would happen with Mean Streak. CoasterBuzz actually had slightly more visits, 3% more unique visitors, but page views were down in May and September. I can't really explain that.

Club memberships took a serious hit this year, for reasons I always understood: It was tied heavily to the Coastermania event at Cedar Point. This year's event limited the number of attendees and charged for it (I'm surprised this didn't happen years ago), whereas it used to be free and unlimited. If I had to guess, this dropped memberships by around 50, so I missed out on about a grand. Coaster events in the general sense aren't what they used to be in terms of volume and popularity, so I imagine that the club will eventually filter down to the people who mostly support the site. That's OK, but those years where you had Cedar Point, Kings Island and Holiday World all doing free-for-alls were lucrative years!

I want to complain about ad revenue again this year, but the truth is that it's... changing. Google's AdSense is the first in the chain, and two remarkable things happened this year. The first is that the CPM's in general are higher, and that led to a 70% increase in Googlebucks even with about 400k fewer page views between the sites. The other thing is that Google's fill rate, the percentage of times where they actually fill the spot on the page with an ad, went from 25% to 40%. This is important because the CPM and fill rate have been going down for years. It's the first positive thing that I've seen from ads since 2010 (that was a really good year).

Unfortunately, while Google looks like it's staging a comeback for my ad revenue, we completely lost an ad provider that has been with me since the start. Burst Media was, at one time, paying out more than a grand a month. At some point it was purchased, and it paid less and less, until this year it stopped entirely. This is particularly bad on the PointBuzz side, because for whatever reason, it always did really well there (and terrible on CoasterBuzz). We've got a lot of unfilled inventory right now. I've experimented with a few providers, but they almost universally serve the worst, spammy crap, tripping Google's malware warnings. I have taken time to research replacements in the last week, but it's slow going because of the holidays and lack of choice.

At the other end of the balance sheet, it's important to note that I've reduced a ton of expenses. Moving to Azure a few years ago has cut hosting costs in half. Ditching the merchant account for Stripe was a big one this year. I'll also save on cell phone bills (I write them off as an expense since I need to be able to monitor the sites), because I recently moved from AT&T to Project Fi. Sometimes you can make money by spending less of it.

While not strictly a part of the business, I did spend time working on POP Forums a bit, porting it to the new .NET Core platform. Part of that effort has been to work on making it scale across multiple nodes. The truth is, it can pretty easily scale up a long way before it needs to scale out, as I found out with some basic load testing earlier this year. The new framework is so fast, and being able to handle 2 million requests per hour on a single box is fantastic. I'll take that! This week, I got Azure search indexing working, too. It's a great tool, but priced too high for what I need, so I probably won't use it.

It was a decent year, considering how little I cared for and fed the hobby-business. I hope the ad situation gets better. Yeah, this is all for fun, and I know that time investment in it goes in streaks, but it wouldn't be that fun if it was all without some kind of compensation. Content is a terrible business to go into intentionally. If I were to start something new, it would be something that asks people for regular, recurring revenue.

The very slow move of POP Forums to .NET Core

posted by Jeff | Friday, December 30, 2016, 11:47 AM | comments: 0

I started to work on migrating POP Forums to the new ASP.NET Core more than a year ago, but as the framework and tooling changed a bunch of times, I kind of got tired of trying to keep up, and I let it just hang out for a long time. As I've been engaged at various levels of deep coding at work (usually 0 or 100 mph, never somewhere in between), so goes the mental bandwidth for my little open source project, which has existed in one form or another for more than 16 years. The progress was in spurts, but there was progress. Heck, I even have a CI build now! Here's the timeline:

  • In June, I switched over to the RTM bits for Core.
  • August was about getting rid of all of the full framework references, which I had kept at that point to handle email sending (SmtpClient) and image resizing (WPF). At that point, I was able to defer mail to MailKit, and resizing to ImageSharp (which was previously called ImageProcessor Core), so the whole thing runs on Core now.
  • I also moved some of the unit tests over, but I don't have the controllers covered yet. There are two reasons for that, one of which is that I haven't decided where the controllers should live, and also because they're the messiest part of the app. They desperately need refactoring.
  • The background tasks are all safe now to run across many instances. The email, award calculation and search indexing all work on proper queues now. Session updating doesn't, but it's transient data where concurrency is unimportant. For the moment, these processes still run in the context of the web app itself, but they don't have to. It should be easy enough to drop them into a WebJob, service, worker role, whatever. They also now report in with a heartbeat to the database so you can see in admin when they last ran, and from what instance.
  • In September I started going deeper into the authentication and authorization bits, now that we're free of FormsAuth and all of that. I'm not entirely sure that I'm "done" there, but because you can now wire up claims auth by default, you can have more than one identity in an ASP.NET app. (You could before, but the mix of various frameworks made this world difficult.)
  • I also wrote a new Redis cache provider in the AzureKit project, and it's modeled conceptually at least after what StackOverflow does. I use a 2-level cache where the local instance will check for the data in memory, and if it isn't found, go to the central Redis cache. To invalidate across all instances, the local instance will listen to the Redis messaging for invalidation signals. Redis is pretty awesome.
  • I started, but just finished, new search plumbing to use Azure Search, also in the AzureKit project. It was pretty easy to swap out a few parts via dependency injection to replace the old, works-just-barely SQL-based search I wrote a billion years ago. Azure Search is awesome, but I'm not sure I'll use it in my own sites. It's way too expensive, priced the way they used to do SQL Azure... based mostly on storage instead of throughput.

That's the year in review, but what's next?

  • SignalR needs some attention, because the Core version isn't done and it's still a somewhat moving target. I also don't have it piping in to a backplane so it can message to other instances and their respective clients, so it won't work multi-instance yet. There is no real-time updating of the Q&A style forums yet (Q&A as in StackOverflow), so that needs to be added. SignalR provides the messaging to inform a reader of new posts. Everyone loves SignalR, but sometimes it seems like it's the neglected step-child of the .NET world. I hope that's not the case.
  • I desperately need to refactor the controllers in the app, as well as the unit testing. I imagine that this will be easier than before, since a controller isn't nearly as coupled to HttpContext as it used to be.
  • I've already laid the ground work for the email all users functionality to reference a single instance of the email, instead of writing out the email times number of users.
  • There are a number of other miscellaneous optimizations in the backlog.
  • Still waiting for the dust to settle on the .csproj vs. .xproj thing, and then Visual Studio 2017.
  • I'd like to explore some way to simply add a reference to the forums, and bam, you have the area.

The goal for Core was always to have functional equivalency, and position the codebase in a broader sense for improvements and new features. For example, I'm sure there's a case to be made for the use of a modern client framework, in the admin area at the very least, and probably around posting. There's room for innovation there. I don't have dates for any of this... but I want to use the new version in one of my sites this year.