In search of the writing high

posted by Jeff | Monday, April 21, 2014, 10:42 PM | comments: 0

I'm about half-way through reading Roger Ebert's Life Itself: A Memoir. I suspect that much of what I've read so far probably isn't that unique to his life, in the context of the timespan he occupied, but when he writes about writing, I can identify with him at a deep level.

It seems that some of what made him a news guy and writer was the thrill of seeing your work go to print, and have it consumed by many others. I completely get this, as I was writing for my college paper at a time just before newspapers were disrupted by the Internet. At best, my column was read by a few thousand people, but it affected people. Some were moved by it, some hated it, and fortunately people weren't afraid to tell me. I could sit down behind my hand-me-down computer and dot-matrix printer, and craft something that, maybe in the smallest way, changed people. It was a rush.

Around the same time, and for a few years after that, I had radio, where I could assume that a few thousand people were listening to me at any given time. The government access TV I was doing also saw a few thousand eyeballs at a time. Later, I would have my Web sites, and those reached my biggest audiences yet, sometimes more than 10k people in a day. At Microsoft, I worked on an app that served 100 million pages every month. None of this compares to the high of that printed word.

In 2005, when my programming book hit the store shelves, I once again felt that buzz. It didn't sell particularly well, but it was still quite a feeling to have something you wrote appear on dead trees in a book store.

In the years since, I've obviously taken to writing on this blog, and to a lesser degree, my tech blog. For the most part, a few hundred people read the average blog post. There's something strangely empowering that anyone can write something and get it in front of people, but maybe that's why it feels like it's less special or impactful (or as the saying goes, opinions are like assholes, everyone has one). In recent years I've questioned who I'm writing for, and why.

To that end, I don't get the writing high the way I used to, and I think I mostly write here to remind myself later on what I was thinking about. Mind you, the gaps in that thought map are vast. When I look back at the posts from 2005, for example, there is no mention of my disappearing marriage, and certainly that was the biggest issue I had.

I do miss the writing high.


Trip Report: Banshee Media Day and Kings Island opening weekend

posted by Jeff | Monday, April 21, 2014, 7:43 PM | comments: 0

It has been a very long time since I've been to Kings Island. I want to put the last visit in 2009, for the Diamondback media day, but I think my last visit with Diana was the year before. I've always really enjoyed the park, and the early days of the BeastBuzz event were epic. I'm bummed that I missed it last year, because it sounds like those good times were back.

This year, the park opens Banshee, the longest inverted roller coaster in the world. I think they're pretty much my favorite variety of B&M coasters, so it was the perfect excuse to pack up the family and make my first trip back to Ohio since moving to Orlando nine months ago. To seal the deal, Diana had some free nights and food credits coming from Great Wolf Lodge after being on their ask-a-mom panel last year, so it made a lot of sense.

The media event was on Thursday, April 17, 2014, modeled after the event they did at sister park Cedar Point last year for GateKeeper. It's similar to what parks have done for years, but they also invite all card-carrying members of enthusiast clubs. It's a brilliant move, because it's a pretty inexpensive way to get thousands of people talking about the rides, and it creates a really amazing vibe that you can't manufacture with just a few hundred media folk and guests.

I was cautious about getting up for this one, because of the cold overnights. The riding started at 5:30 a.m., but I didn't get up until then. The temperature was 32, right at freezing. I was skeptical that they would even run the ride that early, but I could hear it from our hotel room, and sure enough, the photos were already flowing on Facebook. I jumped in the shower, and walked over, arriving around 6-something. There I met our friends Rob and Cindy, and I entered with them.

First ride was in the second to last row, left side. The cold was brutal, but it was clear from the first drop that this was a special ride. It's sharp, it's steep, and compact. From there it climbs into the dive loop, then loops vertically around the lift, and heads up to a zero-G roll. These three inversions come very quickly, with tight radius pull-outs. You really feel them.

From there, it gets more intense. The drop off of the zero-G roll takes you to a lower elevation, where you then climb into the double inversion batwing or bowtie or whatever the kids call it. I figured the sheer size of these elements would make them boring, but they weren't at all. They're perfectly paced and spaced, and the transition between them is impossibly fast. No sooner are you out of those that you're into another vertical loop, which pulls out tightly into an upward helix. This is where I experienced little gray-outs. Next you take a barrel roll, totally straight track. It's completely strange, kind of like Volcano at Kings Dominion. Next you're sucked into a powerful downward helix before entering the final brakes.

My first impression was that B&M took everything they learned about inverted coasters and improved on it. It's so very nearly perfect, start to finish. Even when I tried to be more critical of it on subsequent rides, I couldn't. It was that good. (Shoutout to the asshat enthusiast who I rode with once who said, "The general public will eat it up, but it's just OK.") After more rides, I was ready to declare this as the best in its class. While I haven't been on all of the inverts in North America, I think I've had most of them, and this just blows them all away.

It's also interesting that B&M decided to re-engineer the trains, after using essentially the same design for nearly two decades. Gone are the mechanical restraint releases, and the individual pillars for each seat. They adopted the restraint system from the wing coasters, and now use two columns to support the seats. The result is a more open feeling, and a far less obstructed view from the inside seats.

The theme around the ride is, as you would expect, something of a take on a gothic, graveyard theme, and it's really quite well done. The Cedar Fair planning and design folks are really hitting some home runs again, as they're doing the perfect level of design for a non-themed amusement park. The station is beautiful, the lighting is lovely, and the "memorial" to Son of Beast was a very nice touch (though I suspect no one will miss it). The makeover carries into the midway, which was significantly overhauled from the old "action zone" stuff created in the Paramount days.

There was catered food for media and VIP's, plus food from the overhauled counter service location. There was also ice cream, which seemed absurd at first, but was far more appropriate when the temperature warmed up to 70. They did a nice job taking care of everyone. When it was done, we bought platinum season passes, so we're definitely committed to visiting CP and Carowinds this year.

It's also worth noting that the ride formerly known as Top Gun and Flight Deck was repainted and renamed The Bat, to pay homage to the original Arrow suspended coaster that lived for a short period on the site of Vortex. While the original was a massive engineering failure, the newer ride is the best of its kind. It's a shame that Arrow finally got it right, only no one after that built one. They opened it up for attendees, and it was running beautifully (they also opened Delirium and their Skycoaster).

The next day was their season opener, coinciding with Good Friday. It was a perfect storm of insane busy conditions, with the new ride, opening day and near perfect weather. The park was mobbed in a way I've never seen any park. It took us about 20 minutes just to get in the front gate. Massive lines formed for pass processing (which was optional, because they were taking vouchers at the gate) and tickets. The park was generally crowded most of the day.

With Simon and my dad along, certainly we were most interested in doing kids stuff. Simon was very excited to ride Woodstock Express, his first wood roller coaster. We waited more than a half-hour, and he absolutely loved it. What a joy it was to see him get into it. Diana finally got her Diamondback credit, and we actually queued for 75 minutes. It took almost as long for Simon and my dad to get on the helicopter ride in the kids area.

Saturday, by contrast wasn't busy at all. We strolled in around 11-o'something, and enjoyed walking on to all kinds of stuff. Simon had a total of three more laps on Woodstock, and we even bought a family on-ride photo. It was a great distraction before having to go to the airport.

Another strong quality for Kings Island: Their season pass discounts are straight forward and logical. It's 10% off for food and merchandise. The souvenir cups with free refills are $10 instead of $15 (which is a good deal since a 20 oz. soda is an insane $4 this year).

Overall, I was shocked at how generally friendly the staff was all around the park. It was so much better than it was on my last visit. It's also worth noting that operationally, the park has come a very long way, to the point where it's on par with Cedar Point. That's a very welcome change. Kings Island has always felt like "the other" Ohio park, but on this particular trip, even though it was busy, it felt as though the park had "arrived." I no longer regard it with gentle indifference, and have really started to love it again. Can't wait to go back later in the summer!


Coming home to Orlando is weird

posted by Jeff | Sunday, April 20, 2014, 11:31 AM | comments: 1

We finally got out for an out-of-state vacation this weekend, visiting Kings Island near Cincinnati to open their new Banshee roller coaster (trip report forthcoming). Sure, we did the three-night Bahama cruise a few months ago, but since we drive to the port, I dunno, it just feels like an extension of Florida. For most of the last 15 years, I've probably averaged between 5 and 8 flying trips per year, so it's weird that I haven't been on a plane in 10 months. There were two forces at play here: I was saving money like it was my job so we could put money down on the house, and living in Florida, I seem to forget that one should take vacations elsewhere, because this is where I always used to go.

After arriving at MCO last night, it was weird to hear the recorded tram spiel in a totally different context. "Whether you're here to visit our world class attractions or returning home..." Yeah, this time it was home. Driving down the B-line, you see all of the billboards for the theme parks. There are palm trees. It was just such a strange context against the familiarity of Ohio, which didn't feel unusual at all.

Make no mistake, living here is fantastic. I just wonder if it will ever seem routine. It definitely feels comfortable, just not normal. I'm kind of hoping that continues for a very long time.


Reading from a queue in an Azure WebJob

posted by Jeff | Sunday, April 13, 2014, 10:52 PM | comments: 0

A few months ago, Microsoft introduced something called a WebJob in Azure. It's essentially a "thing" that can run as a background task to do "stuff." The reason this is cool has a lot to do with the way you would do this sort of thing in the pre-cloud days.

Handling some background task in the old days usually meant writing a Windows Service. It was this thing that you had to install, and it was kind of a pain. The scope of background tasks is pretty broad, ranging from image or queue processing to regularly doing something on a schedule to whatever. For those of us who have focused on the Web and services, they're definitely a weird thing to think about.

Azure made this more interesting with worker roles (or cloud services, which also include web roles), which are essentially virtual machines that do just one thing. Those are pretty cool, but of course the cost involves spinning up an entire VM. They start at $14 a month, per instance right now, but still, it's not like your Azure Websites are running at full utilization, so it makes sense to use that resource since you’re already paying for it.

That's where WebJobs are awesome, because they run on the VM that's already running your sites. If you have something to do that isn't going to overwork that VM, a WebJob is perfect. They run pretty much any flavor of code you can think of, but for the purpose of this post, I'm thinking C#. For added flavor, you can bind these jobs to the various forms of Azure storage, and do it without having to wire stuff up. See Scott Hanselman's intro for more info.

I just happen to have a use case where this totally makes sense. I have a project where I'm using Lucene.net, a port of the Java text search engine, to search tags and titles for various pieces of content. I'm also using the AzureDirectory Library with it, which allows me to use blob storage for the index. Updating the index happens when a user creates or edits content. Infrequent as that might be, it is time consuming, and it's a crappy user experience to make them wait. The solution then is to queue a message that says, "Hey, this content is updated, so update the index, please." Firing off a message to the queue is super fast, and the user is happy.

This is a pretty common pattern when you have to break stuff up into components, and a little latency is OK. In this case, it's not a big deal if the search index isn't updated instantly. If it doesn't happen even for a few minutes, that's probably good enough (even though it likely happens within a second or two).

As with the other examples out there, the code to set up the WebJob as a C# console app is really straight forward. In my case, I have some extra stuff in there to take care of the StructureMap plumbing, resolving dependencies between different assemblies and such.

internal class Program
{
	private static void Main(string[] args)
	{
		ObjectFactory.Initialize(x =>
			{
				x.Scan(scan =>
					{
						scan.TheCallingAssembly();
						scan.WithDefaultConventions();
						scan.AssembliesFromApplicationBaseDirectory();
					});
				x.For<IProjectSearchIndexer>().Use<ProjectSearchIndexer>();
				x.For<IProjectSearchRepository>().Use<Search.Repositories.ProjectSearchRepository>();
				x.For<IProjectSearchIndexQueueRepository>().Use<Search.Repositories.ProjectSearchIndexQueueRepository>();
			});
		var host = new JobHost();
		host.RunAndBlock();
	}

	public static void ProcessProjectSearchQueue([QueueInput("searchindexqueue")] ProjectSearchQueueMessage message)
	{
		var indexer = ObjectFactory.GetInstance<IProjectSearchIndexer>();
		indexer.Processor(message.ProjectID, message.ProjectSearchFunction);
	}
}

The ObjectFactory stuff is the StructureMap container setup, and right after that is the WebJob magic from the SDK. I’m pretty sure what those two lines are doing is saying, “Hey Azure, you’ve gotta run this stuff, so just hang out and don’t let the app close.”

The ProcessProjectSearchQueue is where the magic wireup to Azure storage takes place. The QueueInput attribute is looking for a queue to monitor, in this case “searchindexqueue.” The connection string, as mentioned in the other articles you can Google on Bing, show you how to put the storage account string in the Azure administration portal. In the case of this code, when a message hits that queue, this function reads it from the queue and acts on it. It’s like magic.

As of the time of this writing, WebJobs are in preview, so the documentation is a little thin. On the other hand, the product itself is really robust at this point. The monitoring stuff and ability to get a stack trace when something is broken is really awesome.

Here are the bumps I hit in implementing this:

  • My calling code has to talk to SQL via Entity Framework. The app.config for my WebJob did not have the EF configuration section that specifies to use System.Data.SqlClient, so it choked until I had that in place.
  • At first I had my StructureMap initialization after the RunAndBlock call, which was pretty silly because that method is pretty descriptive about what it’s doing.
  • I went down an ugly dependency hole of despair at first, where the WebJob required a ton of assemblies from a core library. In this case, I just needed to pull out the SQL data access to its own project in my solution. DI containers like StructureMap help with this (duh).
  • The deployment is a little ugly because there’s no tooling for it, but it’s still just a matter of zipping up the build and uploading via the Azure portal.
  • You can’t run it locally. I hope they’re going to figure out a way to simulate this, because having to test with real Azure can be a little awkward when you need to share your code (and connection strings) with other developers. To compensate, I took the two lines in the above method and put them in an MVC action to call at will by viewing the action in a browser.
  • If your code fails, the queue message is gone forever. I haven’t used Azure queues in awhile, but I do recall the mechanism that restores a message in the event you can’t process it. Normally you would have some retry logic, so I’m not sure what to do here.

This is a really exciting piece of technology, and I’m planning to use it next to pull out the background stuff in POP Forums, which currently runs on Timers out of an HttpModule. Ditching that ugly hack after more than a decade means finally getting the app to a multi-instance place. That makes me very happy.


Revisiting membership cards

posted by Jeff | Wednesday, April 9, 2014, 7:23 PM | comments: 0

I wrote recently about the options around doing membership cards for CoasterBuzz Club. Basically I'm going to do... nothing different. Obviously a lot has changed in a dozen years, but there are almost no compelling reasons to go plastic and many to stay where I am.

The thing is, my printer was fully depreciated years ago, and I don't want to buy a new one for plastic card stock. The difference in cost between the paper punch-out cards and plastic is about 12 cents compared to almost $1.10 when spreading out the cost of the printer over three years. That's not worth it. The margin on memberships is already taking a hit from the credit card discount rates, which keep getting worse.

The other thing is that there are all kinds of electronic means that I'm thinking about as a secondary means of distribution (or primary, if certain parks will take the lead). As you might imagine, thinking about how you do things like this is part of my daily routine, working for a theme park company. I've got some ideas that I might look into over the next year.


The end of the napping era

posted by Jeff | Tuesday, April 8, 2014, 8:22 PM | comments: 0

It's hard to believe, but Simon took his last regularly scheduled afternoon nap last week. He was starting to resist even lying down, and nap time was becoming dramatic. In the event that he would actually sleep, he would be too wired to go to bed in the evening, causing more drama. We were resistant to skipping naps entirely because a tired Simon in the evening was a bad scene.

To my surprise, things are actually going better than expected. He's fairly used to staying up all day, and when evening comes along, he's really ready to turn in. Before he was calling out at regular intervals between 8:30 and 10. Now, we get him to bed often before 8, and we don't hear a peep.

There are pros and cons for us as parents, of course. We don't get a short break in the afternoon, but we do get a longer evening, and it's a lot easier to go out and do stuff with him. That's a net win, I think.

Rolling with this is part of a bigger pattern of constantly trying to balance giving in to what he wants to do, because it's easier, and telling him what to do for a longer-term win. For example, he's terrible about staying on task for anything, whether it's brushing teeth, putting on shoes or eating. As is the case with many different behaviors, we never know how much of it is him being 4, having ASD or SPD. Tonight he wanted to open the garage door for Diana (coincidentally going to a seminar on behavior issues) while eating, and we told him no. It's slightly heartbreaking to see him react, because the optimist in me sees that he really just wants to help, but at some point we have to break the pattern of letting him get his way.

No telling yet on what happens when Daddy wants to take a nap on the weekend.


My experimental well-being

posted by Jeff | Monday, April 7, 2014, 10:59 PM | comments: 0

I think that one of the things that keeps people in technology at the top of their game is a certain willingness to experiment. I don't mean potentially lethal combinations of Mt. Dew and energy drinks, but rather with new technology that they're not already familiar with.

For me, in my career stage, I also think it's critical because I do a lot less hands-on, in-the-weeds work, but I do often work with others to lead them down the path of better software development. In that situation, I think it's important to be able to walk the walk and talk the talk, with a high degree of credibility. For me, that means building real things both in work when the situation allows, and also on my own time.

My brain bandwidth has been pretty thin the last few months, due to some combination of work, buying a house, and a great many other things that add up. The house part has largely been resolved, which has lifted enough psychic weight to let some of that experimentation desire to come back in, and it's amazing what that does for my enthusiasm. If that weren't enough, this is the time of year where all kinds of new and interesting stuff gets announced, especially with Microsoft-related stuff, so that helps too.

What have I been up to? I've been looking at pushing more of my sites to the cloud, I've been messing with Lucene.net (a search engine) for one of my projects, spending more time with client-side frameworks, exploring C# code written for iOS and Android... there is so much to learn and play with right now.

If working in technology isn't fun, you're doing it wrong. At no time in history has there been more opportunity.


When a cloudy future is good

posted by Jeff | Thursday, April 3, 2014, 11:12 PM | comments: 1

I'll never forget when I first flipped over to having a dedicated server of my own, I think it was in 2000. PointBuzz (then Guide to The Point) and CoasterBuzz could no longer live in a shared environment, on a server with a bunch of other sites, so I bit the bullet and started renting one. It was hundreds of dollars monthly at the time, and the cost of bandwidth was insane. It got to the point where I had to get a T-1 to my house where I could host my own server. That cost a grand a month, but it was all I could do! Things got a little cheaper after a few years, and you could get a dedicated server for "only" $300 or so.

I think I was at Insurance.com, when we were growing and not imploding, that I was first exposed to virtualized servers, probably in 2008. I don't specifically remember what they were used for, but already they were using networked storage for the databases, so my perception that you needed bare metal hardware to run stuff was already eroding. The tech press was gushing over virtualization, and at that point, I had been running Windows in virtual machines on my personal Macs for two years. This was the foundation for what we would later start calling "the cloud."

When I got to Microsoft to work on the MSDN and TechNet community apps, specifically the forums, we had an enormous pool of servers. Granted, the forums were in something of a disastrous state, but they required something like 50 servers to run, and it still didn't scale well. (And yes, we reduced that quite a bit in relatively short order.) In 2010 they were spinning up something called Azure, which at the time was mostly a platform-as-a-service offering where you would run stuff in virtualized instances that mostly hid the operating system from you. It was a little rough because the product wasn't fully baked, but it wasn't long before me and two and a half other dudes built the reputation system that was baked into the forums, and ran it all in Azure. I was sold... what used to take racks full of equipment we deployed to stuff we provisioned in minutes.

I went on to work briefly in the cloud services team before making the poor decision to move back to Cleveland to be with my unsold house (yes, I can't let that go). I've always kind of hated messing with infrastructure and maintaining it, and the promise of cloud resources have been with me ever since. Last year I did the live blog for PointBuzz, and overkill built it for Azure just because I could. (Open sourced the code, too.) Ever since I was involved in that reputation system in 2010, I was looking forward to the day when I could finally move all of my stuff off of a dedicated server, and into the cloud. The problem has been that the math didn't quite favor the cloud, but that is just about at the tipping point.

Amazon, Google and Microsoft have been in something of a price war, and the last round of price cuts are at a place where I think I can finally move my stuff. Google doesn't run .NET stuff, and Amazon doesn't have the sweet PaaS options, so it's going to be Azure. The real trick will be figuring out if some of the older stuff can run in SQL Azure. There might be some exotic things going on there.

One of the things I've talked about in my talk that I've given recently about cloud resources is how it greatly expands your toolbox. The idea that you can spin up a "server" to do some interesting thing in isolation for under fifteen bucks per month is pretty exciting. In fact, I've been looking at hosting a search app for one of my projects in just such an environment.

Assuming I can find the time, it's time to start moving stuff over to Azure. The cloud's time has come even for the enthusiast side business crowd. Now only if I could drag along the old school enterprises...


Five-year anniversary

posted by Jeff | Thursday, April 3, 2014, 10:06 PM | comments: 0

You know life is full when you see that you're celebrating a five-year wedding anniversary, and it feels both impossibly brief and impossibly long. I can't wrap my hear around that. Diana and I met just 7 years ago this May 31.

The reason it's so odd to think about is that we've packed a record amount of adventure into that amount of time. I can't think of any portion of my life, not even college, that is as dense with memories. There are the obvious things like having a child, which certainly dominates the story, to the 6,000 miles of moving we've done across five different houses.

I think I can generally say that being married to Diana has been easy. It's certainly not unicorns and puppies at all times, but I wouldn't characterize our relationship as difficult. We're susceptible to stress like anything else, and being parents would certainly wear us down even if Simon didn't have issues related to ASD or SPD. However, at the end of most any particular day, we can go to bed content with each other after six years of cohabitation.

Our roles have changed so much since we had Simon and moved to Seattle. Sometimes it feels very 1940's, where I'm the "breadwinner" and Diana is the "housewife." I hate those terms, but it has been hard at times, especially for Diana, to adapt to our current state. She worked her entire life prior to having Simon, and I never really had to be accountable for other people. It works though, because we both have provider personalities to some extent.

I love that Diana has been so open to the somewhat radical changes around location and work. I say that if it were all my idea, but she's the one who has been something of the world traveler prior to meeting me. She lived in New York, and went to school in exotic places like England and Cincinnati. I credit her with opening my eyes to what is possible.

What I love about Diana is how much she evolves. She never stops being interesting because there's always something new about her. She starts to listen to new music that I also like, she takes on new hobbies, and even her appearance changes in subtle ways over time. Boring she is not.

The truth is, I could not have predicted the future we now have, and that's pretty exciting. I have no idea how things will go in the future, but it's more exciting than scary with Red Delicious around!


5 Ways to surround yourself with awesome

posted by Jeff | Monday, March 31, 2014, 10:44 PM | comments: 0

I'm surprised at how often it comes up, the issue of creating a "culture of awesome" where you work. And honestly, as much as I think of it in terms of the software profession, the path to getting there likely applies to most any business. I've been fortunate to be a part of some awesome teams, and they don't happen by accident. Some would argue you can't create it, but I disagree.

1. Lead by listening

Yes, you probably reach a certain career band because you're good at managing people, process or product. That's awesome, and that's why you get paid the big bucks. Your wisdom is what makes you stand out. Still, my hope is that the wisdom comes with the acknowledgment that you do not in fact have all of the answers. It took me awhile to realize this.

A lot of things motivate us to not listen to people (which when you think about it, doesn't inspire a lot of confidence in our own staffing decisions). We often want to demonstrate control, we fear failure, or we just don't trust other people. But if we insist on having a hierarchy, then the one thing we can be sure of is that we don't have all of the answers because there aren't enough hours in the day to take all of the input. A lot of the time, others know better than we do. Strong leadership involves listening, and acting, on the information and opinions of others.

2. Challenge, and be challenged

There is some feeling in our line of work that toxic conflict helps us arrive at a better place. I don't agree with this at all. That doesn't mean that there isn't a whole lot of room for people to challenge each other. This has the nice side effect that egos are kept in check.

Leaders create a framework that fosters these challenges. You have to make sure that people are free to express their concerns and different views without the threat of negative repercussions. It doesn't matter if someone is new or bordering on retirement. Good ideas come from all over. The worst thing that can happen is that someone takes a ridiculous position, and learns why it's ridiculous. The best thing that can happen is you save time and money, and deliver something better.

3. Remember that you get what you pay for

While some organizations will scrutinize the strangest little expenses, many never think much about the money they spend on humans. This is a catastrophic error. In software circles, many believe that people are interchangeable, ignoring the very wide range of capability and domain knowledge that travels with the person. As it turns out, people like to be recognized for their ability to do good work, but they also want to be paid for that work.

Know your market. In most places in the US right now, software is a sellers market. The good people will chase the money not because they're greedy, but because the basics of supply and demand drive them there. Hiring "C" players won't get you the results that "A" players will.

4. Never be afraid to experiment and make radical changes

"We've always done it this way" is the innovation equivalent of ebola. It attacks quickly and turns you into a pile of goo in short order. It's not uncommon to be in a situation where everyone knows something isn't working, but no one does anything to change the outcome. What's that cliché about doing the same thing over and over and expecting a different result?

Sometimes things aren't working, and you need to make a serious change to right the ship. It might mean tossing aside a process, reorganizing people, a totally new approach, and sometimes even letting go of people. Aside from the letting go of people part, there's a good chance that the big changes you need to make aren't that risky if you're already in the midst of a tragedy. The worst thing that can happen is you continue to be tragic, but more than likely, you'll end up a little more awesome.

5. Find the awesomesauce that's already there

I've been fortunate (or not, if you consider the layoffs and flameouts I've been in) to have worked in a really diverse set of companies, large and small. There isn't one that I can name that didn't have little hints and glimmers of greatness just begging to get out.

We often focus a great deal on roles and responsibilities, and try to put everyone in a neat little box with a clear and well defined label. This breeds a lot of "not my job" precedent, and it hides that fact that some people are really good at a lot of different things. Enable those people. Not everyone is a born leader, but almost everyone does have something meaningful to contribute. Find it! Figure out how to make it fit into what you need.


Nesting in the palm trees

posted by Jeff | Saturday, March 29, 2014, 11:47 PM | comments: 1

It's hard to believe that we've been in the new house now for three weeks. There really hasn't been any sense of routine or settlement yet, because we've had house guests, spring break and a lack of school, and of course the piles of boxes. We haven't even 100% vacated the rental yet, as we have a few things there and some cleaning to do.

Still, the nesting process is well under way, and it is starting to feel like a home. Today we cracked open some boxes, full of books and framed photos, that we haven't seen since July. I put up the canvas photos of Mt. Rainier, and some things in my office. It feels a little more comfortable every day, though we've been so active that we haven't really enjoyed it much.

Some things were ready right away, most notably the kitchen. Stuff keeps migrating between cabinets, but Diana had that room functional almost immediately. We still desperately need a light fixture in there, but we'll find something. Her sewing room is mostly functional, too. Simon's room is really comfortable, and I love the ceiling fan we bought him. Our room needs a fan, and some stuff on the walls and windows (and I want a big round rug to put under the end of the bed), but it's also comfortable.

I think the important thing is that I'm allowing myself to feel a sense of home, which is really not something I've had since probably before Stephanie and I split. I've equated that feeling with stagnation and some lesser state, for no really rational reason. There were so many years of uncertainty. Now the only thing that feels uncertain is my next job (since I'm doing contract work), but hopefully I can land something that is not contract, and very long-term. That would definitely put me at ease.

We had a stormy afternoon, but it was around 80 degrees. When I was out at the grocery store, I remembered how much better life feels when you're not messing with snow and cold. Then sprinkle in things like train whistles, water skiers on the lake behind your house, great neighbors, a zip line, and you know, it ain't all bad. Settling into a place to live is not a bad way to go.


The return of the Disney animated musical

posted by Jeff | Monday, March 24, 2014, 10:41 PM | comments: 0

I went through a slight Disney phase in college. Not super hardcore (contrary to the understanding of my former mother-in-law), but there was a series of films that were really great, in my view: Little Mermaid, Beauty & The Beast, Aladdin and The Lion King. These all seemed like they were written for the stage and made into animated movies. There was a part of me that was really moved by musical theater, even though at the time I had not seen very much of it, and the soundtracks for those movies really reminded me of the "big" shows at the time, like Phantom or Les Mis, only you could watch them on VHS tape.

I remember the summer before my senior year going to a theater in Mansfield one afternoon, before my radio shift at WYHT, to see Lion King. That opening scene completely blew my mind. To this day, it's so visually overpowering, and the music is brilliant. It seemed like Disney could do no wrong, and the formula certainly wasn't getting old.

But the machine definitely fell into decline after that. Mulan, Hercules, Hunchback, Tarzan... none of them did much for me. It was kind of sad even. By that time, my film interest had drifted more into the "indie blockbuster" realm, including stuff like Pulp Fiction, and anything by the Coens. But I still loved a good musical.

When Pixar delivered the first Toy Story, it was clear that animated story telling was not only viable, but ready for a new generation. Most of the Pixar films, even after it was wholly acquired by Disney, were completely awesome. But they also weren't musicals.

Then Frozen was released. Honestly, it wasn't even on my radar, because even though I love movies, I've had to deemphasize them due to time constraints in my post-childbirth life. I had seen the title, but didn't know anything about it. Then I noticed that the princesses were drawing enormous crowds at Epcot. Friends on Facebook were going to see it multiple times, voluntarily. My niece was appearing in Facebook videos performing the big song. Clearly something was up here... this was not a failure.

Finally, I ordered it on BluRay and got it the day it was released. After more than 19 years since Lion King, Disney finally made another musical that was an instant classic. It really is impressive. The music is completely amazing. I didn't even know that Kristen Bell, one of my favorite actresses, was one of the two leads, and that she totally has the pipes.

Even though we tend to visit the theme parks once a week, I'm not sure I would consider myself a Disney nerd these days. Still, there's no denying, they really have a phenomenon on their hands this time.


Giving back is what moves us forward

posted by Jeff | Saturday, March 22, 2014, 11:24 PM | comments: 0

When I was in college, my advisor had on occasion done some favors for me, usually at minor cost, and made sure I understood that there was no need to pay him back. His logic was sound: "Eventually, you'll do the same for others."

A decade later, I found that he was right. Whether it was the kids I was coaching or my younger friends, it never seemed like a big deal to buy someone a meal or help them out with some kind of time consuming favor. It made sense that if I'm in a position where I can help someone, I should. Many others did the same for me. In a general sense, looking out for other people feels good, whether it's in the most serious of relationships or casual acquaintance. And frankly, it's feels good to receive help, too.

It's not purely a social thing, either. Professionally, this is critical in almost any line of work. It was a lot more common when most people were doing a lot of blue collar trade work, but somewhere along the line we reduced the transfer of knowledge in most other professions. I don't know if this is the result of people thinking it reduces their competitive edge or what, but it's totally counter to what, in my experience, yields higher success (working with smarter people should almost always work in your favor).

Today I did a couple of talks at a fantastic event run by the local user group. The event was totally free, and attended by more than 800 people. Sure, this kind of thing is always good for your reputation and networking, but to me it's also an investment in your profession. I complain a lot that it's hard to find good people to hire, so I'm obligated to help people get better at what they do.

Yeah, it all sounds very circle-of-life, but giving back something really is the thing that moves us forward. As I said, sharing knowledge or helping younger people out is critical, because at some point in your life, others did the same for you. The world gets better.


The membership card problem

posted by Jeff | Wednesday, March 19, 2014, 10:40 PM | comments: 0

It's hard to believe CoasterBuzz Club is over a dozen years old (and the site is older than that). While it was really born out of a difficult situation, where I lost the big money ad provider after committing to a T-1 contract to my house for hosting, in the long run it has helped because of the unpredictable ad market in general.

But from the start, being a software developer and not wanting to be ghetto about the way I run things, I always wanted to automate the production of the membership cards. My solution was to get card stock with a custom die-cut punch in them. I've only ordered them twice, in quantities of thousands. I'm down to a few hundred, and while I still have the die, I don't know if I can find a local printer to use it to rattle off thousands more.

Believe it or not, the cost on those damn things was a little high, just over a dime I think, but I've been able to use the same laser printer for a dozen years to print on them. I have a slightly crappy Access front end where I just push a button and print. So now I have to ask myself if I keep this up or explore a new solution.

At first I entertained the idea that there should be some kind of print-at-home option, with a simple online verification for those worried about fraud. Oddly enough, some of the parks complained that it was fraud prone. I don't really agree with that, and certainly the only one who has something to lose is me.

I've also thought about doing plastic cards. This could in theory be the most elegant solution. The cards cost under a dime a piece in volume, which is less than I paid for the cards, but of course they require a special printer, and those start at a grand. I can play all kinds of games with the numbers to figure out a cost per card, but even once you get the printer paid for, the "ink" is expensive. Over the course of five years, I arrive at a cost per card of around 85 cents.

There is one other problem though, and that's the fact that I would have to write new code for printing. As anyone who has ever had to do that knows, coding to print is the single worst task you could have. It just sucks. That's a serious draw back.

I wish I had a staff to worry about this stuff. I'm in a career stage where delegating is better. :)


It's all in the lighting

posted by Jeff | Friday, March 14, 2014, 11:28 PM | comments: 0

When we moved back to Cleveland, the first thing we did is replace all of the shitty faux-brass lighting and cheap fixtures in the house. I'm not sure why I lived there for eight years before and didn't do it, but it changed the look of the house dramatically. Here in the OC, we built the house with no lighting upgrades at all (because they were mostly a rip-off). Yes, that means that we've got some work to do.

There are a total of five super cheap fixtures in various hallway locations. I knew they would suck, but wow, as I sit here looking at one, they're hideous. They're good candidates for what everyone calls the "boob lights" at Home Depot. They have a brushed nickel base, and there's a "nipple" that caps them. I think they're under $30 for a pair, and we put up I think four or five of them in Cleveland.

We're struggling to find what we think we want for our kitchen. We got a pendant mount over the sink instead of more recessed cans (there are already five), but haven't found something to put there. We think we want a monorail-style set of pendants, two or maybe three, and probably red, so we can light the entire area from the sink to the end of the prep surface. We'll probably have to go to a lighting store. In the mean time, we scored some LED lighting to put under the cabinets on one side, and they're awesome. Well done, Ikea.

We did get most rooms pre-wired for fans (the bedrooms, office, loft and living room), but didn't actually get fans installed. Our thinking was that the wiring alone adds value to the house, but not knowing how the house heats and cools, it would be silly to just prematurely start putting fans in every room (though this seems like a common practice in Florida). After a few days, we learned that Simon's room got very warm starting in the afternoon, which makes sense since he's on the west side of the house and gets the afternoon sun. We bought him a fan right away, and I installed it this evening. Our bedroom may need one, but we want to find the right one. So far, I'm not sure the downstairs rooms need them.

I'm actually thinking a little about exterior lighting. I saw some neighbors had some epic pendant lights on their front porch, something I never considered. Maybe I should rethink that for the inevitable day we get a real tropical storm or hurricane, but they look cool. We'd like to do something interesting on the patio, too. I also think it might be neat to accent the exterior with a low voltage system of flood lights, but that's totally non-functional.

At this point, the optional stuff all has to wait, because I have spending fatigue. The cost of moving, a new fridge, a couch, paint, etc., is burning me out, and we have a lot of lingering medical bills to pay (individually purchased health insurance tends to suck). But since we hopefully are here for the long haul, there will be plenty of time for these projects. For now, I mostly want to enjoy what we've got.


Hesitant to embrace home

posted by Jeff | Wednesday, March 12, 2014, 10:55 PM | comments: 0

We haven't quite been in the new house for a week yet, but I do feel myself gradually getting comfortable with it. We have unfinished painting projects, and we've yet to get any photos on the wall, but we're heading in the right direction. While there's still work to do there, I'm really happy with my office/mancave.

The weird thing is that I feel a certain reluctance to really embrace this as my home. Home is a different concept than where you live. For many years, home is what I associated with safety and stability. In 2009, I threw out that association when we moved to Seattle. Discovering how awesome Seattle was, I started to feel that the sense of home, and the associated perception of safety and stability, had tied me down in a way that made me feel embarrassed and ashamed. I really felt like I missed out on something I can't quite describe. I still carry that with me, especially after going back to the house I couldn't sell (even if that was not motivated by "home" at all).

Settling in here, finally, after five moves in the last four and a half years, means accepting some level of stability, and I have to work out in my head that it doesn't mean stagnation. A little bit of consistency is good for Simon. I'm mostly confident that there's enough work around here, and even if there isn't, remote work is getting to be more common. For at least the next few years, it's unlikely I'll face a negative equity or depreciation slide, so we could move if there was a really good reason. Perhaps most obviously, it took some nuts to move down here for a contract gig in the first place, and that's about as non-safe as it gets.

I'm trying though. I think as the weeks go on, I'll be able to embrace the sense of home. We seem to have a lot of engaging neighbors, we hear train whistles, there's a zip line down the street and we have our very own palm trees. It's a pretty cool place to live, not a weakness.


The blessing and burden of social contracts

posted by Jeff | Wednesday, March 12, 2014, 10:38 PM | comments: 0

One of the most fascinating aspects of our culture to me is implied social contracts. These vary wildly in scope and application, from potentially good things like basic manners to extremely toxic things like racism. Take the breadth of these social contracts as applied to a "normal" person, and then look at them through the eyes of someone who falls in the autism spectrum, and you may even find yourself questioning the value of some of these arrangements yourself.

I think the hardest thing to explain to people about autism is that many kids (and indeed adults) don't process things in the same way that everyone else does. Social contracts in particular become tricky, because there's little interest in adhering to them if they don't obviously serve a purpose. For example, even at a very young age, a child will typically throw a tantrum and look for a response from the caregiver, because that's socially the interaction that is expected. An "autism meltdown" isn't cured by the response, and has to run its course.

I can relate. As an adult, for example, I find chit chat about the weather with strangers as completely unnecessary. Psychologically, I understand that it often happens because people aren't always comfortable sharing silence.

There's a double edged sword, for sure. I think we can all agree that manners and being polite to people is a good thing. But think about some of the more obsolete social contracts, like looking down on people of a different color, or even the classic aristocratic required respect arrangements. The problem is that someone who is wired differently may reject both varieties.


One weekend to start them all (at home)

posted by Jeff | Sunday, March 9, 2014, 10:44 PM | comments: 0

Friday was the big moving day, and by big I mean we moved five miles from our rental to our actual house. It's so strange to have a house again that I'm not renting. I'm still a little nervous about tying up equity in a house, but at least for now it seems to make sense.

First though, the financial hilarities continue, even though we've closed on the house. The first lender that the builder had us apply with, you may recall, wouldn't loan us money. But guess what, they bought the loan within days of closing. It is nice from a cash flow standpoint to be spending hundreds of dollars less on where we live, that is for sure.

The movers were, as I've come to expect now, total asshats. They scratched stuff up, lost parts of lamps, threw the mattress of our guest bed on the frame without actually assembling it. Diana has the fun task of trying to get some money back from them. But at least the whole thing was done, start to finish, in four hours. We've had car loads of stuff that we moved ourselves before and after, and honestly Diana did most of that.

The only real drama we had started after the movers left. The gas guy got here late in the afternoon, making us kind of nervous. The cable guy was on time, but was completely useless when my cable modem wouldn't connect. He made the excuse that he couldn't support it because it wasn't the cable company's which is bullshit, and I wonder if there aren't actually FCC rules that prohibit that as an excuse. I talked to someone on the phone who got me half way, but no connection. I called the next morning, and the person I talked to got us up and running. Strangely, the neighbors have a big box on the side of the house covering the connections, we don't. Going to have to call about that.

We made an Ikea run to try to cover some loose ends... curtains for Simon's room, hand towel hooks, etc., but were shocked to find most stuff we really wanted was not in stock. That's unusual for Ikea. We did get some new shelves to house the DVD collection, which seems weird to unbox after having it be essentially hidden the last eight months. We got out for a nice lunch, too.

Diana had the kitchen operational almost immediately, as well as Simon's room. I got my office ("The Lab") mostly functional by late Saturday night. The living room TV stuff didn't see setup time until Sunday morning. Diana has a ways to go in her sewing room. Our bedroom is functional, but we're making a painting detour. The secondary color looks too baby blue, so we're going to eat the cost of the paint (like we have a choice) and go with the darker blue we already have on the one wall (and two of the walls in my office).

Probably the biggest thing to make the place feel like a home is all of the photos and stuff, which have also been in boxes since the move to Florida. We're planning to get all kinds of additional photos printed and framed as well. I want to have a wider variety of photos in my office.

I dug in and got the irrigation system set right, because the installers had it running every night, and without regard to the rain sensor. That could have been expensive, and there's a restriction to one day a week anyway. I adjusted a few sprinkler heads that were pointing in suboptimal directions (including my office window). It's so strange to have sprinklers.

Last night we did a family walk to the somewhat disjointed area that is the house models and some recreation areas, including the pool and clubhouse. They just installed a zip line over there, and let me tell you, it's the most awesome thing ever. Simon likes it, but when it hits the end, for some reason he kind of just lets go with his noodle arms and falls off. We'll need to practice.

We already have guests, as my in-laws are here doing a Florida tour. Fortunately the guest room is good enough for guests. It's nice to have some people around, even if they have to dodge some boxes here and there.

I'm still thinking a lot about what it means to have a home, which may sound kind of weird, but it has been awhile since I've felt that I was somewhere not transient. I hope we're here for a good many years, but I honestly don't know what the future looks like. A part of me might even be hesitant to commit to the idea of committing to a place to live. I'm not sure why. Still working that out.

I need to buy a grill now.


Simon's 4th year, in pictures

posted by Jeff | Saturday, March 8, 2014, 3:35 PM | comments: 0

I did this last year, and it's the closest thing to a virtual annual photo book I could do. (The actual photo books are insanely time consuming to make.) So from March 5, 2013, to March 4, 2014, here's a quick look around at Simon's big year.

He wouldn't be my kid if he didn't get to visit Cedar Point in the middle of winter.

Diana was on the moms panel for Great Wolf Lodge, and we had many adventures there, learning to swim and play in the water.

Snow in late March? Yep, and our house in Brunswick, Ohio had a great hill in the back for sledding.

We had some indoor water park fun at Cedar Point's Castaway Bay as well. We took a break in the action for some snacks.

We were members of the Cleveland Metroparks Zoo, and definitely got our money's worth.

Once Cedar Point was finally open, we did the media event for GateKeeper, where Simon added to his collection of many lanyards.

Simon's first ride on Sky Ride, or as Mom calls it, "The Buckets!"

Jr. Gemini was Simon's first exposure to roller coaster addiction.

Once we moved to Florida, the boy found theme park ecstasy, living a few miles from Walt Disney World. This day, it was lunch at Pizza Planet at Disney Hollywood Studios.

Simon's new BFF and favorite babysitter took us to see the ducks at the former Peabody Hotel.

Thumbs up to fun times!

Reading about trucks is exhausting! Simon brought this book everywhere for awhile.

Finally, Simon met a real Blue Man at his first Blue Man Group show at Universal Orlando.

When Halloween came around, Diana put together this amazing pirate costume.

The fall and holiday season meant lots of visits to "the construction house." This is one of Simon's first photos in his new room.

One of Simon's favorite rides at Magic Kingdom is the People Mover.

Simon attended his first IAAPA trade show. Here he's sitting in one of the Gravity Group's sweet cars.

Right after Thanksgiving, Simon took Grammy to Magic Kingdom and the other parks to see the lights.

Simon is too young to volunteer at Give Kids The World Village, but he's the right age to help Kara marathon the carousel for a fundraiser.

Back at Magic Kingdom, we caught a ride on a beautiful January day on Goofy's Barnstormer roller coaster.

February brought Simon's second cruise, where he learned the joys of ice cream. Lots and lots of ice cream!

We finally made it out to the Kennedy Space Center, where we saw the Space Shuttle Atlantis.

Night out with Daddy at Epcot, means sitting in China for dinner.

We ended his year finally closing on the new headquarters for Team Puzzoni.

 


Simon, 4

posted by Jeff | Tuesday, March 4, 2014, 10:32 PM | comments: 0

Four years ago tonight, Diana and I were sitting in the Coho Cafe in Issaquah, Washington, facing the very real condition that we were going to be parents in a little more than 12 hours.

The day of Simon's birth was such a sleep-deprived birth, which is one of the reasons I wrote it down as fast as possible. In the four years since, being his parents has been easier and harder at the same time.

As with any aspect of your life, it's easy to get bogged down in being a parent. In recent months, we finally got the formal information around Simon's diagnosis for Sensory Processing Disorder and Autism Spectrum Disorder. Neither problem is for sure necessarily a long-term detriment, but it definitely adds extra layers of complexity to helping him develop.

That said, the difficulty does not outweigh the joy that Simon brings on most days. I love the way this kid loves to be outside and moving (a "symptom" of SPD, actually). Being in Florida has been good to a boy who preferred to walk as soon as he could, and he hasn't seen a stroller in more than a year. He has no problem dragging his Grammy around Disney World, walking more than 8 miles in a day.

Simon's sense of discovery is developing as fast as his language skills. Right now he wants to describe everything he encounters no matter how mundane it might be, even if he doesn't have all of the words. The biggest leap he has made in the last year, and really just the last few months, is his transformation into a conversationalist. He wants to talk to anyone who will listen and converse.

And what comes with conversation? Personality. Simon is loaded with personality. He loves to giggle over all kinds of things, and he's developing his own catch phrases, like, "What's going on here?" and, "That's OK, Dad." The best part though is that when he's sleepy and happy, he's quite the cuddle monkey. It's another thing that he didn't do as much in his early years, but now he'll be perfectly happy to crash with you in the beanbag chair or spread out on the couch under a blanket with you.

More than anything, it's his capacity to love that makes him a great contributor to the world. There's nothing more awesome than meeting up with him somewhere, and he runs with excitement to greet you. And it's not just family, but even new people he meets, especially kids. While he certainly has more than his share of defiant moments, he's also quite the warm soul.

And as of tomorrow, Simon is 25% of the way toward driving age. Yikes.