Archive: August, 2016

For real, do you even know how awesome technology is?

posted by Jeff | Wednesday, August 31, 2016, 8:35 PM | comments: 0

I caught an article that someone shared on Facebook that indicated that people born after 1985 don't really know life before the Internet. They may have some recollection of it, before they were in high school, but their formidable years are concretely in the Internet age. I can't really explain the concept of broadcast TV to my six-year-old. As far as he knows, video just magically appears, on demand, on his computer, his iPad, our phones and on the tiny little FireTV connected to our TV. (For the record, the computer and iPad are borderline ancient... he's not an entitled little douche with the latest gear.)

I was thinking about this a little around lunch time. Since I work from home, I've made my office as comfortable as possible. I fired up the latest John Oliver video on YouTube, full-screen on the 27" monitor on my desk, while I sat on the couch and checked the news feeds via Feedly my tablet, while nom'ing on some buffalo chicken strips I whipped up. Casting aside my culinary endeavors for a moment, think about that... I was watching a bit of high definition video, when I felt like it, in my office.

And it doesn't end there. I can capture video of my kid, doing whatever silly shit that kids do, with my phone, in high definition, and then share it with the world on any number of social platforms. For better or worse, I'm able to keep in touch with people I haven't seen in 20 years. Photos of my vacations flash on my TV via Amazon as a screensaver. I can play video games with friends in Chicago. Last time I was on a cruise, I sent photos from the deck of the ship while I was in the middle of the Alaskan inner passage to share with the world, from my "phone." (Seriously, we keep calling them phones, when it's at best the tertiary thing we use them as.) I work from home and people on the other side of the country can see what I'm doing and talk with me as if they're in the same room.

It kind of frustrates me that people don't really appreciate how fantastic this is. This is a world we could barely imagine even 10 years ago. It also frustrates me that with the ability to have a super computer in your pocket connected to all of the world's knowledge, people are often not interested in seeking truth over hyperbole and their echo chamber.

These are amazing times. Don't take them for granted.


Fun vs. boring coding

posted by Jeff | Wednesday, August 31, 2016, 6:28 PM | comments: 0

I've been writing code now in various capacities and at different percentages of my job since 1999. That's crazy to think about. Most of it has been C#, with a little Visual Basic and VBscript in the early days, a very brief flirtation with Java also early on, and Javascript almost continuously. I've toyed with other languages, too, like Ruby and Python. Regardless of the platform, all coding is not created equal. Some of it is fun, some of it is not.

My current project at work involves Java and Angular 1.5, and while I review the code, I'm not an expert in either one. In the last couple of weeks, I've been devoting some after-hours time to POP Forums, porting it to the new ASP.NET Core. A lot of what I have to do right now is fairly uninteresting. The new platform uses some different markup that I'm converting to, and that's boring. There are some changes in the way input is validated as well, and that isn't very interesting either. By contrast, I've identified different places where I can improve performance, and also change up some things to aid in scalability. Those are super interesting problems to solve, and I look forward to that work.

That's the thing about the work we do in our profession. While I might be coding 50% or less in my current career stage, there are absolutely different flavors of work. Some of it is exciting and interesting, some of it totally is not. It's the hardest thing about the work, because there are definitely levels of engagement and satisfaction for a developer, depending on what they're doing. Believe it or not, I actually enjoy the work where I'm mostly administrative (plays well to my history of coaching, and my personality type as a "directing motivator"), but when I do code, I definitely enjoy the "interesting" flavor of work.

Last year, I did a performance release for a project I had worked on previously. I would have liked a larger team, but the nature of that release was super interesting, and focused on performance. There were some challenges that made it more stressful than it should have been, but it was a lot of fun to figure out how to make an app that was struggling with 300 users completely blow people away at 500+ users. I emailed the product owner over the winter, and she indicated that no one complained about anything, and that was totally validating and awesome.

Still, part of the job is the often mundane and tedious work. When it's up to me to divvy up the work, I try to spread this around my team, but it's hard. The different frameworks and tools available are making less of this necessary, but we still have a ways to go. Work satisfaction is an important, and often overlooked aspect of our job. For now, we often have to take the boring with the fun.


Lucky weather

posted by Jeff | Wednesday, August 31, 2016, 11:00 AM | comments: 0

We've been living in Florida now for three years, and we've yet to encounter tropical weather. The odds of this are apparently wildly unlikely, but here we are. Today we're getting significant rain in advance of a tropical depression that should in earnest cross north of us starting late tomorrow. This won't be a big deal for us (though Tampa is going to get a whole lot of rain), but it's our first taste of tropical stuff.

Diana and I were in Ft. Myers in 2008 for Tropical Storm Fay, which didn't strengthen enough to be a full on hurricane. It was pretty strange to have that consistent strong wind. It was also weird because it didn't really shake the house or anything. We were at my then-future-father-in-law's house, and of course it's concrete block construction. I was surprised at how few people were out and about after it went through.

Being so far inland, Orange County is less at risk than the coasts, where coastal flooding in particular is a big hazard. It's still possible to sustain a fair amount of damage. I recall visiting Orlando in 2004, either between or after one of the three storms that crossed right through Central Florida, and I remember the blue tarps on roofs, visible as the plane landed. That was a crazy anomaly of a year. Fortunately, our house adheres to the latest standards for construction, but you never know.

I imagine the hardest thing in a significant storm would be the power outages. Going a few days without power would be rough.


Florida government is the worst, sometimes, but definitely for cable TV

posted by Jeff | Monday, August 29, 2016, 7:35 PM | comments: 0

Florida has a reputation for being barely functional in some ways. The moronic things written into the state constitution rival only the stupidity of Ohio. Not everything is broken though. I mean, the state gets a lot of money from tourists, and at least in Orange County, the school district isn't starving. In fact, it's amazing how easily they can plan and build new schools as needed.

Unfortunately, the one area where I know local government best, the regulation of cable TV, is a total train wreck. I worked part-time in high school in college for the City of Brunswick's cable office, which administered that city's franchise agreement with the various owners of the cable system, then I ran the newly created counterpart of that office in the City of Medina. They had just finished a new franchise agreement at the time, but it was a fairly short term, so had I stuck around I would've been there for the renewal. The key thing in both of those cities was that they collected franchise fees from the cable operator, which they rolled back in to local access for the city, school and public.

In 2007, Florida passed a state law designating the state as the single franchising authority. It neuters local municipalities entirely. It prohibits franchise fees entirely, for the municipalities or the state. No one can impose any kind of build-out requirements. Worst of all, there are no detailed performance requirements, and the state does little more than act as an arbiter for complaints. The operators are required to provide access channels, but what good is that if there are no fees to help pay for local production?

The Florida legislature got used, and municipalities lose.


Remembering 1993 (and the Super Nintendo Entertainment System)

posted by Jeff | Sunday, August 28, 2016, 4:32 PM | comments: 0

One of my friends posted a link to a Wired article about the outrage that Nintendo was selling a new system that was not compatible with the older system. That families were going to therapy over this is completely strange. But I do remember the system very vividly.

Half-way through college, in the summer of 1993, I stayed on-campus instead of going home. I barely had enough money for anything, and ate a lot of rice and ramen that summer. My room was being partially subsidized by the school while I worked at the radio station, to keep it on the air. At $4.25 an hour, it wasn't much for 20 hours a week. Amstutz Hall was hot as hell, too, and there was no air conditioning there. A friend of mine, well-off by comparison, had a new SNES, and the fantastic Super Mario World. I wasted some good hours playing that game.

This was a period of time where I was really trying to figure myself out. I didn't feel like I belonged anywhere, which in retrospect seems weird because of all the things that I was involved with. I was an RA, so I was part of the residence life scene. I had one of the staff positions with the radio station. I was producing a couple of TV shows for the TV station. I was to start writing for the school newspaper. But I still felt uncomfortable for some reason, and it's something I still don't entirely understand. I wanted to belong, but didn't feel like I did.

At the end of that summer, I remember being back home for a week or so before RA training started, and I bought a 21" TV and a Super Nintendo. It was my first big credit card buy, a little over $300, as I recall. It was a lot of money at the time! (I didn't start to really make poor choices with credit until two or three years later.) Those games gave me a lot of solitary joy over the next two years. I remember the soundtrack of Smashing Pumpkins, Radiohead and Pearl Jam while battling Bowser.

Fortunately, I did have a couple of close friends as that year ended. One was a loner himself, another eventually became my roommate and best friend at the time (female besties seems like a trend, in retrospect), another almost literally acted as my therapist, since he was a psych major. By the next summer, I think I started to adopt the sense that belonging isn't just about who likes you, that it's a two-way thing. I started to let go a bit and be who I wanted to be. Friends later suggested that I may have seemed somewhat aloof, but it was more a pattern of indifference, I think. It was a transitional period where I became more focused on my goals, something I've been inconsistent about my entire life.

I probably played through that Mario game a half-dozen times in that two year period. Donkey Kong Country was another stand-out, as was Super Metroid. It turns out that music may have soundtracked my life, but video games defined some of my free time as well.


It used to be a new roller coaster, now it's entire themed lands

posted by Jeff | Saturday, August 27, 2016, 8:05 PM | comments: 0

The fun thing about being a roller coaster nerd in the Midwest, and especially in Ohio, is that your favorite parks install new coasters now and then. I think I've attended the openings of six or seven new rides at Cedar Point alone, and it doesn't get old. This year was interesting because "we" got a new coaster at SeaWorld, and that's pretty rare here in Orlando. It's a pretty great ride, too.

One-off attractions like that are actually kind of rare for the theme parks down here. SeaWorld's Mako was a fringe case, as was the new Kong ride at Islands of Adventure. Normally you get something the scale of a Harry Potter area, or New Fantasyland (which did open in phases). Right now, they're working on that Avatar stuff at Animal Kingdom (totally strange choice), and they've gutted Hollywood Studios to build a new Toy Story Land and something grand for Star Wars. It's weird to see all of that massive construction, and that it takes years to finish something.

I don't know why I find construction of stuff to be so interesting. The novelty of houses being built has worn off (because I'm tired of the noise), but at least we have constant attraction building around us. I kind of wish I worked in Imagineering or something, so I could see stuff in progress.


The inflexible world view

posted by Jeff | Friday, August 26, 2016, 9:19 PM | comments: 0

If the political season of a presidential season has shown us anything, it's the strange and bizarre way that people will stick to a totally fucked up ideology for no other reason than it's the opposite of the people they don't agree with. For the record, arguing with people on the Internet doesn't do any good.

As weird and disturbing as that phenomenon might be, it's the more innocuous condition where people believe that certain conditions for life are the norm, or the standard by which they measure their own lives. I'm surprised by how many friends adhere to these standards, and even more surprised at how they stick to them. This isn't some kind of conservative of progressive agenda, it's more about the things that aren't political at all.

What do I mean? Concrete examples, you say? OK, the most common variety might be the way one measures success. It's the usual thing, about a certain income, a certain kind of car and a certain expense for a house, maybe private school for kids. Another example may be standards for relationships, in that the partner must meet certain demographic criteria (education, age, life experience, you name it). Maybe it's the "normal" for social experience, in terms of friends, social engagement, scope and depth of relationships and such. Heck, it even applies to work, in that certain levels or titles or even satisfaction are what they strive for.

Let's not confuse these with goals... these are views that constitute acceptable and proper arrangements for the standards of their lives. I see them in many of my closest friends, and wonder if they're not in some way destructive. They aren't flexible in these views, perhaps because deviation, in their minds, means compromise. I don't know what motivates these views, other than some process of domestication that happens throughout our lives.

I'm guilty of having these views myself, but I'm at a point now where I consciously try to avoid making them rigid. I suppose that some combination of divorce, a major career change and other flavors of turmoil have pushed me to a point where my view on the world has forcibly been made more fluid. As I see it, this is a practical matter. If I had inflexible views on what success is, or relationships or career, I would undoubtedly be miserable. It's not that I compromise, far from it. I've made life changes in the last six years that have been extreme and extraordinary (and wrong, too). It's that whatever I may have ingrained earlier in life has proven out to be not the ideal I thought it would be.

Consider that: Is there some aspect of your life that doesn't fit your ideal? Is the problem you or the ideal? When you start letting go of those ideals, it's very freeing. You aren't compromising as much as you're realizing that your ideals may have been arbitrary bullshit in the first place. Self-awareness is good.


How our Nissan Leaf deal got better

posted by Jeff | Wednesday, August 24, 2016, 3:00 PM | comments: 0

Today is the two year anniversary of the date we became EV people, when we brought home the 2015 Nissan Leaf. As we approached the end of the lease, we weren't sure what was next, but we wanted to try to extend the lease. I felt like we had a good deal, but now it's an absurdly good deal.

Leases can be good for cash flow, especially if you don't intend to hang on to a car for a long time. I tend to look at it from the view of how much money you put into it for the time you own the car, on a monthly basis. For a lease, that's whatever you put down plus your payments. For a purchased car, whatever you put down plus your payments, then whatever you get for selling it. Of course, if it's a cash purchase, even better, though that money can work a lot harder being invested when auto loans are 0 to 2% (borrowing money right now, in many scenarios is the right thing to do). I did the math when we got the car, and it worked out to $356/month for the $5k trade, $1k down and $106 payment times 24.

One of the reasons we leased was the fact that EV's are quickly evolving, especially in terms of battery capacity. I theorized that the Leaf wouldn't be particularly valuable as Nissan itself introduced new ones with bigger batteries, to say nothing of the competitors. I was right, and Nissan doesn't seem to be in a big hurry to take them back. We got a 1-year extension on the lease, and they agreed to pick up two months of payments. So now, when you do the math, $5k trade, $1k down and 34, $106 payments over 36 months, you end up with a per month cost averaging $267. For a new car, with relatively new technology, that seems like an extraordinary deal to me.

I feel validated, like I beat the system.


No! You don't need to use ASP.NET Identity!

posted by Jeff | Wednesday, August 24, 2016, 12:00 PM | comments: 2

Going way back to, I think, .NET v3, ASP.NET had this new thing called Membership. Maybe it was a version earlier. I dunno. "Neat," I thought, I can write a provider adhering to this interface and use my existing user and auth structure to plug into this system. Then I saw that the membership and role providers each had about a bazillion (maybe quadbazillion) members to implement, and reality set in that what I already had was working just fine. Some years later, ASP.NET offered Identity, this newer thing that did sort of the same thing. It even made its way into Core.

You don't need it. For real. I'm not saying that it isn't a useful piece of the framework, but you need to stop making it the default for user management. It's not hard or time consuming to build out your own system of user entities and permissions (roles, claims, etc.) as you see fit. The problem, as I see it, is that developers are confusing the act of persisting user information with authentication. I get why that may be, as Identity uses one line of code to both verify a user and sign them in (Core docs show how). But under the covers, there is code that first verifies the user/password against the database, then sets the auth cookie to indicate who the user is for future requests. You can in fact do one without the other.

Why would you do that? Part of it may just be an issue of control, but for me, it's because I want to be very specific about how I structure my user data. I also don't really want to use Entity Framework in many cases (read: most things I port from older apps), and EF is part of the magic of Identity. What I've seen in a number of projects is the use of Identity mixed with a home-grown set of user domain objects and a totally separate database or persistence mechanism. If you're doing all of that plumbing anyway, you definitely don't need the additional overhead of Identity.

Let's use ASP.NET Core as an example, first. In Startup, we use the Configure method to use cookie-based authentication:

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
   AuthenticationScheme = CookieAuthenticationDefaults.AuthenticationScheme,
   AutomaticAuthenticate = true
});

In some kind of login method, from our MVC controller, we look up the user in the code that we wrote, with whatever backing store we made, and then sign in. Let's pretend that myUser is some construct we've made up:

var myUser = _myUserLookerUpperService(email, password);
var claims = new List<Claim>
{
new Claim(ClaimTypes.Name, myUser.Name)
}; var props = new AuthenticationProperties
{
IsPersistent = persistCookie,
ExpiresUtc = DateTime.UtcNow.AddYears(1)
};
var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
await HttpContext.Authentication.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(identity), props);

The code should be pretty straightforward. Whatever our domain-specific user thingy is, it's something built for us, instead of the generic thing that the Identity framework has created. We use that to construct a set of claims and authentication properties, and then use the built-in Authentication system to sign in with our newly constructed principal. This is what creates the encrypted cookie on the user's browser. It's not as magic as the Identity service, but remember that you're welcome to use any kind of schema that you want to persist user data, and that means you can query it or normalize it (if you must) against any other bits of data you have.

Naturally, you may want to set up some other context, or simply verify that they're still a known-good user on each request. To do that, you can wireup middleware in the Startup's Config method (app.UseMiddleware<MyMiddleware>();). Middleware doesn't use an interface (and I don't know why they chose convention over an interface), but it does expect an Invoke method to do stuff. It's here that you would look up the user based on the identity:

public class MyMiddleware
{
private readonly RequestDelegate _next;
public MyMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
var name = context.User.Identity.Name;
if (!string.IsNullOrWhiteSpace(name))
{
var userService = context.RequestServices.GetService<IMyUserLookerUpperService>();
var user = userService.GetUserByName(name);
if (user != null)
{
// do stuff here
}
else
{
// do something about your bad user
}
}
await _next(context);
}
}

Again, I believe that the Identity framework has some plumbing for this, but if you're a control freak like me, this is better. The official documentation has a really great write up on using this cookie mechanism without Identity.

If you're still using ASP.NET 4.5 and MVC on top of it (or even WebForms), you don't need to use Identity here either. In your MVC action, or your event handler in WebForms, you can use Forms Authentication to do the same work, without any setup (though you can change the cookie name and some other things via web.config):

var user = _myUserLookerUpperService(email, password);
var ticket = new FormsAuthenticationTicket(1, user.Name, DateTime.Now, DateTime.Now.AddDays(30), createPersistentCookie, "");
var encryptedTicket = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
cookie.Expires = DateTime.Now.AddDays(30);
context.Response.Cookies.Add(cookie);

Neat, right? The static FormsAuthentication class also has a SignOut method. Instead of middleware, we can use an IHttpModule or an IActionFilter to act on user data as appropriate.

To circle back, the point here is that Identity is great to spin up some user account persistence and authentication quickly, but if you want to do your own thing, or don't want EF involved, or you're a control freak, understand that you don't need Identity to auth your users.


Feeding the learning desire

posted by Jeff | Tuesday, August 23, 2016, 7:47 PM | comments: 0

I've had a lot of conversations with people in the software profession about the need and desire to learn new stuff. The need is there because stuff changes, and if you want to keep at it, you need to learn. It's also, for many people (I would argue the people you want to work with), a strong desire as well. I don't know where that comes from exactly, but I imagine anyone driven by curiosity wants to learn new things.

I've struggled with this for the last year or so. My job varies quite a bit, in that I've had projects where I've been very hands-on and in the weeds writing code, while also running a project and filling roles around compliance, architecture and more administrative stuff. Other times, I'm coaching on process or consulting around some specific client need. Right now, I'm running a project in a tech stack that I don't know deeply, but know enough to be reviewing code and design. All of this variation results in varying levels of desire to learn. As this mostly goes on after work, on my own time, the ability to dive in is not consistent. When I'm in the weeds, my capacity for learning is low, I imagine because I'm not in a hurry to write experimental code when I've already been doing it for much of the day. When I'm on projects that are more in process and consulting, the mental bandwidth and desire to learn is much higher.

In the last year, there have been a number of different projects and prototypes that I've wanted to dive into, using a number of frameworks and tools that I'm not deep into today, but I've not had enough time and energy to really go all-in for any sustained time. I struggle with that, because it might be to some degree career-stage appropriate, but many of the peers that I've known who don't know the new stuff seem kind of dinosaur-ish. I don't want to be that guy.

It's possible, maybe likely, that if I continue down my current path that hands-on work will be less and less a part of my job. Still, I never want to stop learning. I'll keep up on my open source project and stay involved in the community.


Being hipster

posted by Jeff | Monday, August 22, 2016, 6:59 PM | comments: 0

I know I love to make hipster jokes, and there is a culture of hipsterness that drives me a little nuts, but sometimes that core hipster value, liking something before it's generally accepted as cool or mainstream, isn't entirely without its value. It's not about being cool as much as it is having something a bit more to yourself.

Yes, the dude who says they liked Arcade Fire before they won a Grammy is someone you may want to punch in the face, but if you're a hipster about anything, you know that something you really loved is in some ways better before it catches on. (In terms of music, I'm not sure why you wouldn't want the band you love to be popular, but whatever.)

I feel this way about the Internets. Sure, Usenet was always a wasteland of venom and piss (and porn, lots of porn), but the Web and its early communities were pretty neat. People with common interests showed up and filled a million little niches, and there was sharing and spirited debate. I know because I started communities during that time. I was a little obnoxious at first, and I imagine a lot of people were, but we quickly learned to be cool with "our" people. Then AOL came along, and the masses started getting online. Smart phones made it even worse. Read any YouTube comments section to see the worst of humanity. Or check out Amy Schumer's Instagram for a dose of moronic bile ("Amy, you are one fat cow and I am not talking about your beauty. Why don't you die and be useful as a manure to some plants!"). People ruin everything.

When we first started considering buying a Tesla, researching it revealed this amazing community of people who were kind of car people, but mostly people obsessed like me about the future of electric vehicles. The enthusiasm was infectious, and it was remarkable how many of them were former Prius drivers. Sure, it's an attractive car, and frankly not economically ideal, but it's the future! Then, in the course of a year, the status people seemed to enter the scene. What used to be "our" future of science fiction gone real started to be co-opted by people obsessed with shiny things and appearance. Discussions went from how you teased the car into a low miles per kWh to how big your silly wheels could be (and by extension how much you spent on tires).

Travel is like this too. I remember there was a campground we frequented when I was a kid, and it was generally not busy, so we would have these wonderfully quiet weekends. It was a state park, so it wasn't really actively marketed or anything. As years went by, it got more and more popular, to the point that it was often booked solid, crowded, and loud well into the night. What a drag.

Restaurants are like this too, though to be fair, being a hipster diner likely means that your choice in establishments would wither and die without being popular, so maybe that's a bad analogy.

The point is, enjoy the things in life that are your little secret, because people may ruin them.


Two weeks of Olympic volleyball awesomeness

posted by Jeff | Saturday, August 20, 2016, 8:59 PM | comments: 0

It's no secret that volleyball is the only sport I've really cared all that much about. In fact, I'm sure a fair amount of my Facebook friends that are female and from high school, or currently 20-something played for me or on "my" high school team. It's the only sport I was ever good at, and even then, not until I started coaching it. The sport is regionally a big deal, and unfortunately not at all here in Florida because high schools tend to be gigantic and spread out (as opposed to Ohio, where every 5-5 mile township or smaller municipality has its own school). The point is, I don't get to see a lot of volleyball.

But the Olympics is a chance to see lots of it, and I don't squander the opportunity. I'm still not a giant beach fan, though the whole Kerri Walsh Jennings story is certainly amazing and awesome, and she might be the greatest player of all time. She showed a lot of class when she and her partner, April Ross, lost in the semi-final. I'm not all that interested in the men, because honestly it's not as exciting to watch. Defense plays less of a role in their game.

This year, in Rio, NBC committed to streaming literally every event, so I didn't have to wait for the matches to show up on their normal TV schedule. This meant that some matches, I believe broadcast by the Olympics themselves, sometimes had no commentary at all, or really terrible commentary, but it was all there, and that's awesome. I did not miss a single match for the USA women, which is fantastic. As the favorites for the tournament, I wanted to see every last swing.

The first match I watched was in "our" Pool B, between the Netherlands and China. The Dutch were ranked something like 11th prior to the Olympics, so imagine my surprise when they wrestled away a win against China. There was something incredibly validating about their style of play, too, because they proved what I've always felt as a coach: Speed can beat power. The Chinese team was far stronger, but they weren't nearly as fast. You can get around powerful blockers and dig hard hits when you're fast.

The USA women won the pool, and the Netherlands only dropped their match to the USA. Pool B was definitely the stronger of the two (I thought), but when it came to the semi-finals, the USA lost to Serbia, and the Chinese (after shockingly beating Brazil) exacted revenge on the Dutch. My two favorites made so many unforced errors in their matches, and that made the difference. It was heartbreaking, but at least it meant I could be comfortable with either team winning the bronze (patriotism aside). The Netherlands should be extremely proud of their team, because no one expected them to go that far and they were amazing through most of the tournament. The Americans and their coach, the magnificent Karch Kiraly, walked away with bronze, and that's OK too.

The Serbia vs. China match is about to start, going for gold, and it should be a great match. I think it's going to go to Serbia. They have a lefty (Tijana Boskovic, the one with the braces and the dimples), who is one of the most consistent hitters and blockers I've ever seen, and she can pass all day, too. It's crazy how much of an impact she has on that team.

I'm thrilled to see so much good volleyball. I've watched as much as possible every games since college, and this has been the best tournament I've ever seen. It just sucks that I have to wait another four years, but thankful that the Internet made this possible.


Larry Wilmore's Nightly Show, cancelled

posted by Jeff | Thursday, August 18, 2016, 8:10 PM | comments: 0

I made a lot of Facebook posts expressing my enthusiasm for The Nightly Show with Larry Wilmore when it started on Comedy Central. Those first few weeks were pretty interesting. While they were constantly experimenting with the format, it was generally funny, and it seemed like it had potential.

Over the course of a year and a half, I slowly lost interest. I can't exactly tell you what happened. I was still watching it maybe once a week, but not religiously as I once had. I think that maybe the show was too tightly focused on a subset of race issues. It's not that they aren't important issues, but they aren't really funny. I remember a number of shows where he would finish the A-block, and I would be kind of angry or depressed in the way that I would be by watching news. That's probably not what you want out of a comedy show.

Politics in the context of comedy works so well that Jon Stewart did it for more than a decade and a half. Social issues, while often made political, don't work as well with comedy. I think that put Wilmore in a difficult position, because he was often quoted as saying that he wanted to give a voice to people who didn't have one in late night TV. It probably doesn't help that Trevor Noah's Daily Show, while also not scoring great ratings, has managed to be consistently good, so having to follow it isn't easy.

Wilmore has a series of TV successes as a writer and show runner, going as far back as In Living Color and as recent as Black-ish, including an Emmy for The Bernie Mac Show (I miss Bernie Mac). He'll have no issue working in the business, but I feel bad for his crew. Entertainment is a brutal business.


My kid is the clock that makes me hyperaware of time

posted by Jeff | Wednesday, August 17, 2016, 9:41 PM | comments: 0

Simon is, fortunately, a bit of a cuddle monkey. When he's not in his sensory seeking parental abuse mode, climbing on me, invading my space and otherwise likely to cause harm, he's content to prop himself up next to you to wind down with a book, or TV, or even playing with a small toy. Tonight he was tired and worn down from a sore mouth, and wanted to share the giant beanbag with me while he watched some video on his iPad. I was struck in this moment at how big he was. The little creature I could once football hold has personality and makes conversation. At 6, he's one-third of the way to legal adulthood.

I'm alarmed by this. Don't get me wrong, I don't want to go back to wiping his ass and waking up with him at insanely early times, but I'm also very aware of how fast his growing up seems to happening. By extension, this makes me aware of the passage of time in general, which I think people are already more sensitive to as they approach midlife. (I mean, a friend of mine, same age, is contemplating his approaching empty nest status... we got a late start.)

Look, I've said it before, it's not that I fear death per se. I accept and understand that I'm not here permanently, and I'm at peace with that. But if I found out I had three months to live, I'd likely skip the fear and sadness and go straight to being pissed. What is the alarm about? There are days when I feel that I haven't really done anything. Or maybe it's that I still have something to do. It's a ridiculous thing to have anxiety about, because if I look at my life, especially the last decade, I have seriously made it count, and it's been fairly epic.

I suppose I'm still not sure what I wanna be when I grow up, and watching my little boy grow up constantly reminds me of the wonder and fascination that goes with that age. Everything about where I've been and how it has shaped me has come into focus in ways I never expected. Heading toward middle age comes with some pretty outstanding self-awareness and experience. Now I actually know some of the things that I thought I knew when I was 21.

For now, I cherish those little moments with my little guy. He might have 12 years to graduation, but the time when Dad is uncool comes a lot sooner.


Respect the creators of things

posted by Jeff | Monday, August 15, 2016, 8:15 PM | comments: 0

Working in something of a technology bubble for most of my adult life, I'm sure that I've fallen into the trap of thinking that all of the great things being created are software. It was all web services at first, and now, everyone thinks they can change the world with an app, chasing unicorns. The latter seems almost like a cliche now, and I miss the days of calling them applications.

I'm starting to come around though to see that the things being created that inspire, entertain and serve us come from so many different places, and from so many people. Popular art, like movies and music, affect us in very real, emotional ways. Craftsmen make beautiful objects like furniture, and they can lead to a lifetime of something that you identify as home. Some professionals, like teachers, create processes and systems that serve as frameworks to better people. Huge teams of people create physical technology that potentially change the world, too (I'm thinking electric space cars, as you might expect).

Creativity, and the act of creation, is all around us. There is also a lot of noise being created at all times (thanks, Internet), but it's not hard to find the sheer will that makes stuff. I greatly respect the people who create things, regardless of the scope. Creativity, making things, is what drives humanity.


Why science literacy matters

posted by Jeff | Sunday, August 14, 2016, 1:43 PM | comments: 0

I'm genuinely concerned about the general disregard for science, or the desire to understand it at even a fundamental level in American culture. Certainly the most obvious example of this is people who think that climate change isn't a real thing, but we've also seen the pockets of anti-vaccination people (thanks, Jenny McCarthy) and anti-GMO people. Facts be damned, people will believe what they want to believe. Maybe the scariest thing is that looking at things in an intellectual manner is somehow being an elitist. What the hell is that about? People celebrating willful ignorance?

Therein lies the problem: Science is not a belief system. Science is a continuous cycle of observation and experimentation, with a fairly well developed intellectual scrutiny applied. You can believe in God because you can't really perform experiments to prove or disprove Her existence. Science reaches conclusions with a high standard of reasoning. While not a perfect process, it's the reason that we can cure diseases, put machines on Mars and look up virtually anything we want with a super computer we carry in our pocket. Culturally, we're not in awe of this capability, and I think that's a problem.

You probably saw during the Olympics that a number of athletes had what looked like big circular hickies all over their bodies. These were caused by a "treatment" called "cupping," which essentially creates a vacuum that pulls on the skin and underlying tissue. While it's proponents believe that it does... something... there is no actual scientific evidence that it does anything, and there is anecdotal evidence that it may be harmful. Calling it pseudoscience is probably giving it too much credit.

I saw countless people say, "Well what does it matter if it's just a placebo?" It matters for a few reasons. First of all, money changes hands for goods and services that have no benefit. Second, it's another way to discount critical thinking. Look, if people just said, "I think it feels good," that would be fine, but that's not what's going on. People who are, for better or worse, role models are making claims that have no basis in fact, and people just go along with it.

The Internet has spawned fake celebrities propagating nonsense and anti-science as well. The worst of these is someone like the "Food Babe" who is constantly talking about "toxins" and "natural" food. It's all bullshit. This is a willfully ignorant person who once claimed that airlines pumped up to 50% nitrogen into their planes to save money, and that it wasn't pure oxygen. I don't know about you, but I recall in middle school learning that our atmosphere is 78% nitrogen. Somewhere in high school I recall learning that pure oxygen would in fact cause your lungs to fill with fluid and kill you (this varies with pressure). So why do we take diet advice from someone who doesn't know fundamental chemistry?

Capitalism has had its share of science hating, too. "Alternative medicine" accounts for billions of dollars in sales every year, and worse, fake fitness science involves billions more. People spend $130 a month on Shakeology, where the fine print reads that it's a dietary supplement, not a meal. There isn't a reputable dietitian in the world that would prescribe the product as anything more than a snack. How many actual meals could you buy with $130? But you have an inherently evil multi-level marketing machine behind it that benefits only the company making the product, and a few of its top earners, under the guise of "helping people" achieve whatever kind of bullshit goals they're serving. That's not science. You want to eat and live healthier? Talk to an actual dietitian and a trainer and make lasting lifestyle changes. You can't drink that shit for the rest of your life.

The worst science denial of all is still climate change, or specifically the denial that man can affect it. Few scientific phenomena have been as carefully scrutinized as climate change, and yet, politicians continue to make it something other than science. Politicians being morons I kind of expect, but the average human who isn't seeking reelection has no excuse for the denial.

Crack a virtual book, humans. A little science isn't going to kill you. It will make you better.


POP Forums roadmap

posted by Jeff | Friday, August 12, 2016, 4:00 PM | comments: 0

The volatility over ASP.NET Core made me pause (twice) since last fall when it came to porting POP Forums to the new platform. Every new release broke things to the point of frustration, and the RC2 reboot was hard. With SignalR falling a bit behind, it made things worse. But alas, that seems to be mostly behind us, and I've started committing stuff to a branch again, a little at a time, to run on the new ASP.NET. It's not at all usable, and every change seems to invite more changes, but I'm starting to see the potential and love for ASP.NET Core.

With the experimentation behind me, and a reasonable amount of stability, I'll start populating the issue log with tasks to do. I wanted to explicitly create a roadmap so I can stay focused. I do not have a timeline in mind, which is probably fine because I don't think people are flocking just yet to the new framework. The truth is that porting is not straight forward, and a lot of stuff can break. With that in mind, here's the plan...

POP Forums v14:

  • A straight port to ASP.NET Core, no new feature work. Right now I'm developing against .NET v4.6, but the goal is to go all Core. The two dependencies I'm using from the "old" framework are for image manipulation (the WPF stuff), and calling an SMTP server. Fortunately, it looks like ImageProcessorCore and MailKit will, respectively solve those problems and allow me to go all Core and cross-platformy. I may even try writing code on a Mac with JetBrains' Project Rider, if I'm feeling sassy.
  • Get out of the single-node problem. The app today depends on in-process caching to be fast, which doesn't work if you have to spin up to additional nodes. This requires some changes:
    • Use external caching, probably Redis. I've done a little testing, and it's super easy. It's also an easy to use service in Azure, where my stuff lives anyway.
    • Revisit background processing. A number of "services" run in the background in the context of the web app (sessions, emailer, search indexer, point/award calculation). These can probably run multi-node, or maybe as an option run stand-alone, but at the very least needs some queueing mechanisms or something. You don't want two instances trying to send the same email at the same time. Solvable problem, just need to think it out.
    • Need to figure out configuration for SignalR backplanes. Knowing there is a new post before you hit "reply" is important, and to this day my favorite feature.
  • Developer friendly. The documentation has not been well kept, and as long as I could figure out how to get it working in my sites, good enough. I don't want to be that guy anymore.
  • Secondary objective: See if the app itself can be packaged in a way that you can hitch it on to an existing ASP.NET Core solution.
  • Secondary objective: Refactor as time allows. There is still stuff written in the WebForms days that lingers, like 2002 linger, and it's not my best work.

That's it. It sounds simple enough, but it's a ton of work. I've ported much of the base library and UI stuff, but I'm still sorting through views and the conversion of things like HtmlHelpers to TagHelpers and using view components where it makes sense. Adapting slowly to claims based auth and middleware, but still not going to take any dependencies on Identity or EF. I've yet to port unit tests, but part of that is because I'm trying to really break stuff out into places that make sense. Part of that was getting MVC and SignalR stuff out of the base library, for example.

POP Forums v15:

  • Modernize the UI. I'm not sure what this means yet, but you can do things in a web app that were not possible before, due to the rich world of open source software. I don't think it means going to a full on single-page application (SPA) model, because of the effects around indexability and SEO, but there is potential for new things. The classic "UBB" style has some long-standing conventions that work, so the idea is not to get radical, but keep text at the center of the world.
  • Optimize for performance. Come up with arbitrary targets for page render times. Look for database tweaking opportunities (probably not much there, after 15 years of tweaking). Make a real effort to load test.

Going to Core makes this the fourth platform in the 16-ish years I've been at this silly thing. It started on old ASP, then ASP.NET WebForms, then ASP.NET MVC and now we move on to ASP.NET Core. It still forms the basis of CoasterBuzz. It runs in six languages. I hope to continue to maintain it for a long time to come, and welcome this next iteration.


First grade, frequent tears and frustration

posted by Jeff | Thursday, August 11, 2016, 9:32 PM | comments: 0

We met Simon's new teacher today, and our initial impression is good. We kind of warned her that we're having some issues with him lately, and I'm crossing my fingers that she'll be able to help.

This has been a rough summer, filled with what feels like developmental regression. I don't even know if that's a thing, but the kid who ended kindergarten in an academically great place has fallen apart in other ways, and pushed us to the point of not really knowing what to do.

The first challenge is that his inability to adapt, in a wide range of situations, has gotten a lot worse. When something doesn't go as expected, a serious meltdown can come very fast. I think I've been incorrectly chalking this up to a lack of patience, but if I put my ASD hat on I'm pretty sure it's an inability to reconcile the actual versus desired outcome, and connect the cause and effect (not to mention the ranking of how important the thing is relative to other things). For example, today he ripped the top off of one of those yogurt tubes, and it came off at an angle, instead of straight across, and didn't easily come off. This led to an almost immediate meltdown, the inconsolable kind that has to work itself out and is not intended to seek comfort or help (that is, the difference between a "meltdown" and a "tantrum"). These have become more frequent, often because a toy isn't performing as desired, he can't easily manipulate his food, Netflix is down, etc. It happens so quick that often it's not even possible to understand what happened because he's too upset to verbalize anything. In fact, expressive language has become a struggle for him. It's so hard to see these visceral and intense reactions from him, when frankly they don't make a lot of sense in a neurotypical way, and as a parent it's hard to be rational when you see what appears to be genuine suffering by your kid.

This seemingly involuntary reaction to adversity seems to have inspired similar voluntary reactions to not getting his way. For example, he wants something other than what he gets for dinner, or isn't happy with a TV prohibition. These come with tantrums, not meltdowns, and they're clearly designed to prompt a reaction from us. I think this we've brought on ourselves a bit by not following through with consequences, but we've made some course corrections and I think he's starting to see we mean business. This scenario doesn't make me feel incapable as a parent. It will take time, but this we can fix.

The other challenge is that Simon's sensory issues have kicked into high gear, especially in the last month. He's become physically rough with us, and I'm not joking when I say we keep getting hurt. His "chin thing" has come back, too, where he will press his chin into whatever body part he can to get the resistance that his body seems to want. Some of this is certainly being holed up in the house for long periods, when it's raining or we just don't have time to get out with him, but it's present even on days when he had tennis camp or other activities. My hope is that this will get better just with the routine and activity of school, but my worry is that this manifests itself in ways that clearly violate the personal space of others, which we know adversely affects him socially.

The arrival of the school year is welcome, that's for sure. I'm concerned it's going to be a challenging year, but there's relief in the idea that professionals will again have an impact on him. We've had help since the time he was 1, and it has made a huge difference. I'm cautiously optimistic, because I don't know what else to be for Simon.


Borrowing my happy from the future

posted by Jeff | Tuesday, August 9, 2016, 8:18 PM | comments: 0

My last post about the excitement around big life change really got me to thinking about what makes me happy on a day to day basis. I have to admit that there have been mornings in the last few weeks where I woke up and thought, "Meh, what choices can I make that would let me go back to sleep and dream some more?" I don't think I've been depressed or anything, and I'm thankful every day for the miracle that is my life, but I've definitely felt like something was missing.

It didn't take long to figure this out. As soon as we returned from our Alaska cruise, I realized that we have absolutely nothing on the books to look forward to. No vacations or special events. Nothing to break the routine. (Not entirely true... we'll be celebrating the starting of school next week.) This realization brings the questions about enjoying the journey versus the destination. I definitely borrow some of my happiness from things to come.

Like many people, I suspect, some of what makes me feel alive is emotionally intense experiences. I have a theory that this might be why some people are so dramatic with their family, at work, or whatever, but it feels good to have these rich and exciting experiences. They vary in scope, and don't have to be cruises, but I do need them. They come from small gatherings of people that you like, a day out with your family, and yeah, from vacations.

In between, you have that excitement and anticipation, and hopefully a lot of smaller moments. I routinely have these with my wife and kid, and sometimes with little victories at work. I appreciate the moments "in the now," but I'm selfish I want to look forward to the bigger moments, too. Something about knowing that those are on the radar makes the routine more interesting. It's hard to explain.

The bottom line is that we need to get something on the books for some fun.


The magic and excitement of change

posted by Jeff | Friday, August 5, 2016, 6:51 PM | comments: 0

I was talking to someone about how we ended up here in Orange County, and I specifically recalled the process of flying down on my own to interview at SeaWorld Parks for a contract gig. That day is so vivid in my memory, I suppose in part because the physical place obviously became familiar very quickly, but mostly it's because of the intense feeling of hope and excitement for a significant change for life.

I wish I could bottle that. Those kinds of scenarios used to scare the shit out of me and cause anxiety, but now that's not the case. I had the same experience after my SeaWorld contract, as I moved to AgileThought and into a new house, and I had it when we moved out to Seattle too. It's hard to describe the feeling, but it's very cool.

Two years into home and job stability, I can tell you for sure that I have no interest in moving. I mean, never say never, but we've got a good thing going, and change just for the sake of change is unnecessary. I still crave that feeling. I'm not sure where else you get it.


Why can't I just like "old" music like my peers?

posted by Jeff | Thursday, August 4, 2016, 6:15 PM | comments: 1

I've noticed that a number of my friends from high school and college jump at the chance to see bands that they loved back in the day. I certainly can't blame anyone for that. As a teenager, I just didn't get the "adults" hanging on to classic rock (which in retrospect is terrifying, because that music at the time was no older than, say, Nirvana's Nevermind is now). But something weird happened when I got older. I abandoned most of the growing up music.

OK, so maybe "abandoned" is a strong word. Let's put it this way: I tend to listen to new stuff most of the time. For years I've made yearly playlists, compilations of stuff that I'm into, and I use those as a jumping off point to listen to various albums that those songs are from. When I'm at my desk, or taking a walk, I'll hit those lists most of the time, and go back maybe a year or two. I unfairly avoid 2012, because it reminds me of going back to Cleveland from Seattle and I still can't let that go. The lists also act as soundtracks to my life, apparently.

What I don't do is think, "Gosh, I really need to listen to Def Leppard." That was my favorite band in high school, though I was no stranger to Depeche Mode and Tears for Fears at the time. In fact, high school music in general is something I just kind of find cringeworthy now. Maybe once a year, I get a little fit of nostalgia, but it never lasts very long. I do have a stronger opinion about a lot of music from the 80's, but that '88 to '91 era didn't have much going for it.

Stuff from college, and the late 90's, still creeps into my head some of the time, and I still like it even if I don't actively listen to it. The grunge/alt rock thing resulted in a lot of fun and excellent stuff. A few bands have managed to keep going even today. I have playlists from those years, which at the time were things called "mix tapes." I had a really nice tape deck.

Still, my daily routine is mostly current stuff, and I don't know why that is. I resisted change so much in my early adulthood, and now I need certain kinds of it to be continuous, including the music. I realize that this is atypical of people my age.


Body movin'

posted by Jeff | Wednesday, August 3, 2016, 10:09 PM | comments: 0

I had to make the trip to Tampa today for work, which is normal to do every few weeks because we have clients there. It ends up being close to 200 miles round trip, and it's an incredibly stressful trip because Florida. Today I was surprised at how much my back hurt, not because my car is uncomfortable, but because I tend to be on high alert while driving, and that's where I hold that stress.

The thing is, the physical manifestation of driving stress doesn't usually bother me when I'm moving around daily. I started battling an annoying sore throat and fever last week, so I spent a ton of time on my back. In fact, I've been kind of inactive the last two weeks, mostly because I haven't prioritized moving around enough. I'm starting to get to an age where my body gets just as pissed moving around too little as it would too much.

To that end, living here has made it a lot easier to get off of my ass. While it is kind of gross outside in July and August, it doesn't entirely prevent you from going outside the way that snow and winter does. Having massive theme parks to around in doesn't hurt either. I weigh less than I did when I got here, and I generally feel better, too. The challenge though is being more consistent, because I think age is causing intolerance to inactivity.