Our forthcoming EV dilemma

posted by Jeff | Friday, June 24, 2016, 8:47 PM | comments: 0

Being an electric vehicle enthusiast has been pretty exciting these last two years. It hasn't gone at all the way we expected, which is to say it has been an awfully expensive endeavor. Almost two years ago, we started by leasing a Nissan Leaf, and then last year, when it was clear that the Tesla Model 3 was a long way off, we pulled the trigger on the Model S. Today, the future is clear, but things still aren't moving as fast as we would like.

The Leaf ended up being an extraordinary deal, or at least, great for cash flow. We put down $5k, and had a payment of $100 a month. We did a 2-year lease because we wanted to minimize risk in terms of having a purely electric car. It turns out, there really wasn't any risk, and the car has been a really fantastic commuter. It's fun to drive, has that awesome EV torque, a fantastic small but tall size, plenty of room, and the range works out to nearly 100 miles. Plenty of distance for going almost anywhere in town. It didn't take us very long to learn that charging is a largely irrelevant issue, because you leave each day with a full "tank," and plug back in when you get home.

The Model S is only a year old. It really is the best car ever made. I do think it's too large, but otherwise, it's amazing. I've never been a car guy, but this thing blows my mind every time I drive it. That said, I don't imagine we'll keep it all that long, because it's expensive, even with the big down payment we made. I'd like to replace it after three years, when there are less expensive options.

What is clear is that we don't want to go back to gas cars. It's not even an environmental issue for me, it's just that combustion engines seem completely primitive. I like never having to stop at a gas station. It's an extraordinary convenience. The problem is, we need to do something as we approach the end of the lease with the Leaf. Diana called Nissan, and apparently we can extend it another six months, continuing to pay $100. That gets us to mid-February. Then what?

Well, we did put money in for a Model 3 reservation. Best case scenario is that it ships late in 2017, but the realist in me says early 2018. It isn't our next car. If we're staying electric, these are our options:

  • Chevy Bolt. This is a big question mark because we don't know if GM will meet its ship date late this year, and even if they do, there's no telling what the availability is going to be like. The press was impressed with it, and the pricing looks about right. I'm not sure if we would want to buy or lease. It will be eligible for the $7,500 federal tax credit. It will have range around 200 miles.
  • Nissan Leaf (30 kWh battery). I think we would consider the new, upgraded Leaf with slightly longer range. We like the car we have. Given the extraordinary depreciation of the Leaf, because of the increasing range (a 200-mile range model expected the next year), there's no way we would do anything but lease.
  • BMW i3. I love this car, but unless there's some crazy deal to be had, it's too expensive. It too is in the range upgrade cycle, making their value questionable. Definitely a lease car if at all. Again, we'll check to see if there's desperation to sell existing inventory, but it's not a likely choice.
  • Prius Prime. This would technically be a return to a gas car, but it kind of depends. The Prime is a high-tech plug-in version of the new hybrid, which can go entirely electric for about 22 miles. This would cover most of the local activity we engage in except for going downtown, before requiring gas. The problem is, no one knows how much it will cost or when exactly it will ship. The way that Toyota has been screwing around with hydrogen, I'm convinced that they may screw this up.

Regardless of what happens, I dread having to buy another car from a conventional dealer. It's just the worst fucking consumer experience anyone can have. Even the Leaf involved us walking away, telling the sales manager to go screw himself after dicking us around, when the floor sales rep called and asked what happened, inviting us back for the deal we wanted. Then when we closed the deal, it took almost three hours to get out of there and get stuff signed. The Model S, which admittedly was crazy expensive, involved no negotiation, precise specifications and ordering online, and even an online down payment. Paperwork was signing a few things, and we could have been in and out in five minutes if they weren't eager to give us a thorough tutorial on the car and answer questions.

I would imagine we will replace the Model S at three years with a Model 3. It will have a minimum of $17k in equity (likely more) at that point because of Tesla's guaranteed resale value. We'll see what happens. It all depends on the realistic ship targets of the 3.

These are exciting times for electric cars, but we're definitely not to the price/range ratios that all make sense. We're getting close though.


I drove down Orange Avenue yesterday

posted by Jeff | Friday, June 24, 2016, 5:30 PM | comments: 0

I was talking today with my client for my current project this afternoon, for the first time one-on-one. After mentioning that I was Orlando based, he asked how things have been going here since the shooting at Pulse. Things are definitely different here. While most of the world was getting into politics within a day or so, that transition hasn't happened yet here. In fact, I don't think it's viewed the same way here compared to the rest of the world. Also, press coverage has been very different domestically versus internationally.

Yesterday, I drove down Orange Avenue, passing Pulse. I've driven by it a hundred times, at least, by now. This time, there's a fence around it with a black screen, and temporary barriers in the road close down one lane. It looks so small now, with that huge sign out front. It doesn't seem like 49 people could have lost their lives there. It doesn't seem like a place that could be a mile and change from where we work. That's the thing that makes this different for me, because unlike the church shooting a year ago, any number of school shootings, or even 9/11, it's not possible to just compartmentalize what happened because of the proximity. None of my friends were there, but there is only one degree of separation to people who died there.

Locally, the politics of the murderer aren't that important, but it is absolutely viewed as an attack on the LGBT and Latino communities. The US press didn't seem to get that angle as much as the foreign press did. I'm not sure how to interpret that. There are rainbows everywhere you look here. I fear that most of the world has moved on, but it's been amazing to see people step up and donate to any number of non-profits, including giant employers like Disney and NBCUniversal. The local faith communities, including all of the major religions, have also come together to help the community heal.

I will say that there has been somewhat of a transition. The initial reaction was for people to take care of each other in a time of impossible sadness, and the community did that in an extraordinary fashion. It makes me happy to call this area home. By the time of the big vigil around Lake Eola last weekend, the focus had transitioned a little to one of joy that we could take care as well as we did. A friend of mine, who is very active with LGBT advocacy groups, mentioned yesterday that, while there are still a lot of intense emotions in play, people are starting to have a little fun again at events and gatherings. As I said, things aren't "normal" here, and I don't even know what that looks like. It's too close to home.

If you would like to donate to the victims and their families, consider a donation to the OneOrlando Fund. Heal Orlando also has a good round up of places to donate (and other ways to help).


Voltron reboot

posted by Jeff | Friday, June 24, 2016, 1:31 PM | comments: 0

Netflix brought back Voltron from the dead, and rebooted it. This was a treasured show for me. Along with Robotech, I remember it as being a kids show that wasn't afraid to actually develop a long-term story arc and not dumb everything down. So it's with great relief that I can say that the new Netflix version is faithful to the spirit of the original, while being its own thing. And best of all, no car Voltron.

I have the original series on DVD, but it's neat to see the ideas revisited in this new series. It's true in style to the original, Japanese animation, and it emulates it quite well. It translates well to high definition. There are well developed characters, significant back story, some light political commentary, and even a fair bit of humor.

In fact, my 6-year-old finds it hilarious. The exaggerated facial expressions they use crack him up. Thankfully, he is responsive to the idea that a bunch of robotic lions forming a giant super robot is really fucking cool. I think he has probably watched the first season start to finish three times at this point.

There's a bigger point to this, for me at least. I'm surprised at how much of my viewing habits have shifted from traditional network TV to original streaming services. All of my favorite things in the last year have been on Netflix, Amazon or Hulu. There are a few holdouts on network, probably just The Blacklist and Blindspot, but that's about it.


Sports championship drought

posted by Jeff | Monday, June 20, 2016, 12:09 PM | comments: 0

Much has been written about the championship drought that Cleveland has endured since 1960-something. As Cleveland is my original home town, I can agree that being a Cleveland sports fan is pretty much an act of masochism. The Browns toyed with almost going to a Superbowl when I was a kid, and have cosmically sucked ever since. The Indians made it to the World Series when I was in my 20's, and they got beat down pretty hard. But the Cavaliers, they've been to the NBA finals or conference finals more times than I can count. They've never been able to close the deal.

Then last night, after being down three games to one, they won three straight, ending in a real nail-biter, to win the championship. All of the Lebron James drama may have finally paid off. He cried like a big baby (or maybe he was still crying about his wrist that he fell on minutes before). Importantly though, this wasn't some contrived conglomeration of superstars, like Miami. This was him and some dudes who were pretty good, and worked their asses off. He went "home" knowing he had to work hard.

I don't watch sports on TV very often. I'll watch the Superbowl, mostly for the commercials and the terrible half-time shows, and I'll watch the Cavs in the playoffs when they're there. This time, I didn't get very invested, because it usually doesn't end well. With the shit storm of bad news here in Orlando in the last week, I was really disinterested. But then they made a series of it, and I had to watch game 7. It's too bad it couldn't have been played in Cleveland.

I'm happy to see my home town finally get a win. If you can deal with winter, the city is definitely trying its hardest to be awesome, and it succeeds in a lot of ways. I don't miss it, but hooray for Cleveland.


Two years, same job

posted by Jeff | Thursday, June 16, 2016, 4:00 PM | comments: 0

Today is my 2-year anniversary at my current job. I've felt for a long time that you're only as good as the people that you surround yourself with, so it says a lot about my coworkers that I'm still there. I feel like I'm moving forward.

I suspect for people who don't know the profession, two years seems like a non-achievement. That's fair, but consider this: I was laid-off in 2001, 2004, 2008 and 2009. Honestly, I changed jobs in 2001 to avoid a layoff. I also worked in a contract capacity in 2004, 2005, 2008, 2013 and 2014, so those are time-boxed engagements anyway. The bottom line is that with the nature of contracting in the software profession, along with economic volatility, and a strange attitude that treats people as interchangeable commodity workers (despite paying them really well), it's not unusual to move around a lot. Sometimes it's by choice, but often it's not.

My longest job ever was three years with the City of Medina, as the first cable TV guy there. Perfect for a know-it-all right out of college, but I got to do TV stuff from every angle (production, engineering, talent). I left because I made half of what my peers in neighboring cities made, and I was pretty sure that Internet thing was going to catch on. Second longest job was Insurance.com at two and a half years. I was laid-off as the company began to fall apart, and it was a mixed blessing because I kind of plateaued there in terms of skill acquisition and leadership potential. Third longest job was Microsoft at two years, which I left to return to Cleveland to live in my unsold house. Smart financial move, cosmically stupid from a professional and social angle. So my current gig will likely make second place, unless something unexpected happens.

Job hunting is exhausting, even in an environment where you're practically harassed by recruiters (mostly for poorly matched jobs). Maybe it's my stage in life, now as a parent, but I like to think of stability as an important aspect of work now. I also have to balance that against a need to advance, not monetarily, but in terms of career. Particularly during our transition in to Florida, I spent a lot of time thinking about where I want to be in the long run, and it's definitely leading groups of people to execute on technical work. I knew my gig at SeaWorld Parks provided relevant experience, and the appeal of my current job is the depth and breadth of the projects that I get to lead. I imagine that there will come a point where I want more responsibility, even if I'm not sure what it looks like. I do know that I'm not that interested in the heads-down developer role... something I essentially went back into at Microsoft. It's not that I don't enjoy writing code, and I'll always do it in some capacity and offer my open source project, but I've learned that I'm most effective leading with technical expertise.

So hurray for two years. I'm surprised it has mostly been a good fit as it has, because the short spurts I've had working with companies that have an agency model has been universally awful. This company gets it right, and the value I've been able to deliver to clients has been extraordinary and high quality. I can't predict how long it will last, but it's been a good two years so far.


There aren't any words

posted by Jeff | Tuesday, June 14, 2016, 7:17 PM | comments: 0

I got up kind of late Sunday, because Diana was out late after work, and I have a hard time sleeping when she's out without me. When I did get up, Simon was already up, and I was surprised to see a notification on my phone that I had never seen before. It was a friend using Facebook's Safety Check. Knowing how it has primarily been activated only for natural disasters and serious terrorist attacks, I wondered why it would be activated here. I don't have to tell you what happened.

It was a few hours before I saw all of the names I was looking for, and that was about the time that the victim count went from 20 to 49. The feeling of relief was only that the proximity of the murders at Pulse didn't include anyone I knew, but it didn't take that long to find that it did include friends and coworkers of friends.

For much of the day, we were checking in on TV to see what was going on, which led to some difficult conversations with Simon. How do you explain something like this to a 6-year-old? That Mr. Rogers quote (assuming it's real) about looking for the people who help in a crisis was the angle we played. I told him that someone went to hurt a lot of people, and the police and ambulance workers all were there to help. Then I tried to explain donating blood, and that was a wholly ineffective conversation.

While 9/11 did result in the loss of my job at the time, I admit that for the most part I could compartmentalize the event and keep it at arm's length. The proximity of this event is too close to do that. Diana was out almost until 2 that night, and one of her coworkers considered going to Pulse instead of out with them. We both work 1.4 miles down Orange Ave. My best friend works three blocks from the club, and we've had lunch at the Chipotle across the street countless times. There are no shortage of people, friends and coworkers, that are part of the LGBT and Latino communities. We might be Orlando transplants, but this is where we live our lives.

I didn't have any words, and I spent much of Sunday just kind of doing nothing. Monday had me fully engaged at work, though I did reach out to a friend to figure out where we (my employer) could direct a substantial donation for victim relief. Today I spent some time at the arts plaza to see some of the tributes, notes, signs and photos left there. There were hand-written notes to specific people that are no longer with us. I still don't have any words. I feel like I should be doing something other than making donations, but I don't know where to start.

The community response has been breathtaking. The unity of the city, safety forces, hospitals, advocacy groups, religious communities and various charities has been extraordinary. Equality Florida's victim fund is in the millions now, and Strengthen Orlando's OneOrlando Fund has been seeded with $1 million from Disney. I know the rest of the outside world is already content to talk about politics, but the local focus is about everyone taking care of each other. I wish we could bottle that and keep it long-term, and spread it around the world. It seems that it takes the worst of humanity to bring out its best at times.

Words can't reconcile something this terrible. All we can do is hug each other and look out for each other. We can work on fixing stuff later.


Review, Garbage: Strange Little Birds

posted by Jeff | Saturday, June 11, 2016, 10:22 PM | comments: 0

I've been a garbage fan from the start, and I've had so many opportunities to see them live. We watched the band's frustration with the music industry and each other lead to Bleed Like Me, an album that was good, if feeling a little lost. Years later, Not Your Kind Of People made us remember why we loved them. Strange Little Birds goes even further, hooking us almost immediately, start to finish, the way that "Supervixen" to "Milk" did. This album is brilliant.

With any band, you hope that they'll keep making music that brought you in, without making the same album over and over. I'm not a musician, but I imagine that's hard. Garbage manages to do it. You can tell as soon as you spin up Birds that the moody, atmospheric sounds are Garbage, with Shirley Manson's sweet vocal on top, but it's like hearing them for the first time. "Empty," the first single, is unmistakable Garbage, wonderfully dark and maybe even a little angry, but it feels more raw. Many of the other attracts make you wonder if they were listening to some combination of Nine Inch Nails and Jesus Jones (remember them?) until the influence rubbed off and made its way into the music.

Usually you don't associate simplicity with any music described as atmospheric, because of all the production that goes into such songs, but describing Garbage has always been hard. There are plenty of noisy guitars, but more interesting bass lines and harmonies. Many of the songs are longer than we're used to as well, something usually reserved for their live arrangements. "So We Can Stay Alive" is this brilliant journey of joy and loss, with stinging guitars, electronic sounds and a bass line that has to be seen live. It's like everything awesome about Garbage wrapped into a new package, in three acts (the second bridge is amazing), that makes you want to get up and cheer, right to the end.

This album deserves critical and commercial success. It might be a little dark in spots, but it's the brightest thing in music I've heard in a long time.


Kindergarten is done!

posted by Jeff | Friday, June 10, 2016, 10:01 PM | comments: 0

Simon finished kindergarten on Wednesday. I can't believe it. You know, where does the time go and all of that. Simon is, academically, where he needs to be for the most part. In terms of reading, he's already approaching a second grade level, if I'm to believe the online stuff he was using through school. I'm amazed at how well he reads and spells.

It may be easy to just dismiss this milestone as stuff kids do, but in the context of where he has been, it's a huge relief. He's been in school since he was 2 in order to address developmental delays, and a small army of teachers and therapists have been there to help. Even two years ago, there was some lingering question about him starting kindergarten on time, but it all worked out.

No one deserves more credit than Diana, the super mom. She's the one who has been on the front lines, especially in dealing with homework and managing deadlines, not to mention following the daily schedule. The amount of time she has spent engaging with him is staggering. I know it's been hard, and I've seen her emotionally spent when I get out of work more times than I can count.

I worry about him socially. He sometimes seems like the "weird kid," but he can also be completely sweet, even though kids can be dicks. I had a hard time in school, so naturally I worry about him. I'm not going to fight his battles though, and it's a constant struggle for me to let him "suffer" a little. He's also going through a very defiant phase, and doesn't really understand cause and effect when it comes to his behavior. On the flip side, he's very close to us, and can be very kind when he wants to be. For as much disciplinary action as we have to take, that's also a relief.

I can't help but think of the line that Bill Murray makes about having kids in the movie Lost in Translation:

"But they learn how to walk, and they learn how to talk... and you want to be with them. And they turn out to be the most delightful people you will ever meet in your life."

True words.


It's a sophisticated interlocking brick system

posted by Jeff | Wednesday, June 8, 2016, 7:00 PM | comments: 0

Simon has really got the Lego bug now. Over the last two or three years, we've introduced him to a few really small sets, but it wasn't until probably the last six months or so where he was willing to sit down with the instructions and actually build himself. My observation was that he was well on his way to understanding the spacial relationships to pieces, but the fine motor skills really didn't catch up enough until recently. He still can't always tightly snap pieces together.

Shortly before he was born, I started to gain a real awareness about toys in the bigger sense. We had just moved to Seattle, and there was a Lego Store in the Bellevue Square Mall. It was entirely too uppity for our shopping needs, and the only other interesting store was the Apple Store. I really had not thought much about Lego in a very long time, but there were some pretty amazing sets out there. I have very fond memories of the sets I had as a child. Back then, the boxes had a flip open front, and there were plastic trays where the pieces sat (now there are just bags of pieces inside of a box). I had a police station set and a space moon base, along with a few smaller sets. While I did manage to put together some pretty sweet imitation Transformer models with the limited dynamic pieces I had, mostly it was enough fun to follow the instructions and build the sets as designed. It was super critical in my mind that every piece make it back to the right place on disassembly.

Back to 2010 though... as ridiculous as the cost was, I bought the Carousel anyway. I think it was something absurd like $250, but after the big move and about to have a child and being in a new place, I wanted to buy something for myself that was just about me. Almost two years later, I got a train to put around our Christmas tree. It would be three years before the next thing, which was the Fairground Mixer, a trailer-mounted Scrambler ride. A year after that, the completely amazing Ferris Wheel, then another train and a train station. These are all kind of expensive, really more for grownups, I think.

Which leads us to The Lego Movie. Simon has wanted to watch that thing almost every day lately. (I'm thrilled that the sequel will be about Lego Batman, who was hilarious in the first one.) That movie has a funny way of relating to our real life though, because ultimately it's about being creative and building whatever comes to your imagination, and not always following the instructions. The bad guy, President Business, wants to use the KRAGLE (i.e., KRAzy GLuE) to permanently put everything together so "people stop messing with my stuff." There's a heartwarming plot with real humans where the father doesn't want his stuff being messed with.

My big sets are obviously the coolest thing ever, and surprisingly, Simon mostly respects them as "Daddy's toys." He has a few small sets, typically in the sub-$30 range and usually some kind of vehicles, where I have to use all of my restraint to be zen about how he wants to play with them. As the kid used to play in the less interesting, autism stereotype ways almost exclusively (mostly lining up cars), now he uses his imagination. He likes to build platforms, as if the toys are amusement rides. He also likes to use the various wheel pieces propped up on wooden blocks to pretend they're the drive wheels found on roller coasters in the station. It's pretty cool to see that. He gets how things work.

To be fair, I'm not totally like the dad in the movie. His thing was about stuff being "weird" and deviating from the instructions, whereas my concern is more about, "Hey, this stuff is expensive and breaking a set is by extension expensive." While I'm not going to let him borrow pieces from the carousel or the Ferris wheel, I'm getting better about him otherwise playing the way he wants. I'm mostly thrilled that he has taken an interest, and he's getting pretty good at helping me build even the complex stuff.


Your online persona is a lie (or at the very least, incomplete)

posted by Jeff | Tuesday, June 7, 2016, 4:40 PM | comments: 0

My favorite band ever, Garbage, has a new album coming out Friday. These rare gems take entirely too long in between, but I'm pretty excited. (Rant: Super sad that they have no tour dates in Florida.) The new album is described as being pretty dark, and the first single, "Empty," definitely goes there. In an interview with drummer and producer ninja Butch Vig, he talks about how we all need a little darkness (I love Shirley's hair in that promo shot):

Well I know Shirley has talked about this. When she wrote the lyrics to ‘Empty’ she kind of wrote the antithesis to what everybody is posting on social media and Facebook and Twitter. Everyone is like “Look this is amazing, we are having a wonderful time!” And she doesn’t always feel that way. Look at your phone and look at the great time everyone is having – so why do I feel so miserable? I think that is why she wrote the lyrics to that song.

That sure struck a chord with me. Quite honestly, I don't want to see people having a tough go of life when I'm looking at Facebook, and I avoid posting my baggage and issues unless there's a really good reason to. I suspect that what many people post online of themselves isn't real at all. (Sidebar: I believe this is more an analog of the way people are in real life than some might think.) At the very least, most people filter the shitshow, which is not a lie exactly, but definitely an omission.

In fact, if we're friends on Facebook, or even if you just read this blog, you probably think, "Here's a guy with a lovely wife and child, who drives EV's and hangs out at theme parks." This is very much the case, but it's not even remotely comprehensive in terms of my life's big picture.

The last few months have been very challenging at Puzzoni World Headquarters, to say the least. Don't worry, it's not in the relationship department. We've faced a lot of things that keep us up at night, and there have been instances where I've felt like I could barely keep my shit together. I think we're very nearly a place where we'll turn a corner, but it's been rough.

Do I have a point? Yes, of course. The point is that we as human beings need to allow for a little darkness in life, and also understand that others may be wallowing in it as well.


20,000 miles in the electric non-space car

posted by Jeff | Monday, June 6, 2016, 4:45 PM | comments: 0

My last post was about our first 10k in the Model S, but I realized today while running an errand that our EV story does not start with Tesla. It starts with the noble Nissan Leaf, and it deserves a lot of love.

We're closing in on 19k miles on our 2015 model, which we've had for almost two years. It's a lease, and I'm not sure what happens when we're done, but Nissan generally seems pretty cool about extending leases for this particular car (more on that in a minute). We're way under-budget on miles, because Diana works part-time, and I rarely go into an office more than twice a week. Our combined driving mileage annually is probably around 20k miles at most.

I remember first seeing the Leaf when we lived in Seattle, and while the limited range seemed like a problem at the time, it didn't deter the early adopters. When I came down to Orlando in June, 2013, to interview for my contract gig and also do some recon around the area for places to live, I was able to rent a Leaf out of MCO. I was immediately intrigued when I was driving westbound on Sand Lake, and floored it on a green light. It was giggle-inducing, in fact. I ended up driving it about 120 miles in the 48 hours I was there, with a free charge at GKTW. It was a lot of fun to drive for a car that I expected to be practical and uninteresting.

Fast forward to the summer of 2014, and Diana's 2008 Hyundai Elantra suffered a catastrophic loss of transmission fluid (it had a hose to the radiator to cool it, and it broke). Fortunately, the fix was covered under the drivetrain warranty (100k miles), but we figured that six years was a good run, and the years in Cleveland winters probably didn't do it any favors. There were some good deals to be had for the leases on Leafs (Leaves?), so we investigated. A short lease seemed like a great way to try on an EV without over-committing.

We really liked the car immediately. Most of my cars have been small, the Prius V being the only one that was somewhat bigger (being a wagon), but the Leaf drives like an electric go-kart. The instant torque, which I suspect is somewhat moderated to accommodate the battery technology they use, is fantastic. It won't win any drag races, but you'll definitely surprise the little shit next to you at a red light driving some shitty Honda with a dropped suspension and ridiculous wheels. It's a tall car with all of the room you need to cart a bunch of crap around town, or luggage to the airport. It's damn near the perfect commuter car, in my opinion. And best of all, we plug it into a standard 110v outlet in the garage.

Our model has a 24 kWh battery (for context, our Model S has a 70 kWh battery). It's rated for something like 84 miles of range, but in practical terms, we could generally go 100 unless it's all highway and we've got the AC cranked to frigid. As there isn't really anywhere we would typically go in excess of 40 miles from our house, the range is good enough for 99% of our driving scenarios, and we charge overnight. I can't quite describe how fantastic it is to never stop for gas, ever. Leaving every morning with a "full tank" is a convenience that I don't think non-EV drivers fully understand.

While it has been a great car for us, Nissan is definitely getting beat up a bit lately. A lot of people (including us) were so convinced by the EV goodness that they bought a car they would otherwise never spend ridiculous money for in the form of a Model S. While they bumped the 2016 model to a 30 kWh battery, extending the rated range from 84 to 107 miles, persistent rumors of a future higher capacity model are dogging sales. If that weren't enough, Chevy plans to ship the 200-mile Bolt before the end of the year, and Tesla hysteria has caused hundreds of thousands of people to reserve a Model 3. What's bad for Nissan is good for us though, because from what I've read online, they're not anxious to take these cars back after the lease. They aren't selling well used. If we can keep paying $100 a month to keep it, I suspect that we might do that for awhile.

It's kind of a bummer for Nissan, because I really feel like they cracked the code for mass-market EV's, at least initially. In a 2-car family where there are no cases of both cars needing to do long-distances (a scenario that has 100% worked for us in two years), it's a fantastic car. The purchase price is a little high, even with the $7,500 federal tax credit (MSRP probably averages $35k), but the lease deals have been solid if you could put some money down. But the problem stands that the cars aren't very popular right now with longer range options coming. BMW seems to be in a similar boat with its i3.

What a great little car, though. It will be a shame if Nissan can't turn it around next year, because the Leaf definitely has an important place in EV history.


10,000 Miles in the electric space car

posted by Jeff | Sunday, June 5, 2016, 10:27 PM | comments: 0

Today we crossed the 10,000 mile mark on the odometer of the electric space car. My friends convinced me that buying a Tesla Model S would be OK because it would enable great experiences, and thus skirt around our "experiences not stuff" philosophy. I hate admitting that they were right.

Not much has changed about my opinions and experience with electric vehicles. I still believe that the only real barrier to long-distance EV driving is the cost of the car. Public charging infrastructure is mostly irrelevant, since you leave the house every day with 200+ miles of range. If you have a Model S, the distance thing is covered by the supercharging network. In these first 10k miles, we've only needed the network on our drive to NC, and just for a little extra comfort coming back from Clearwater once.

The car seems to draw more attention now that the Model 3 has been announced. Folks ask the usual questions about charging and such. It also seems like a lot of the online communities are being permeated by the people who crave status, which is unfortunate because for the first few years it seems like Tesla customers were all about EV's and science and the technology. I think the dirty little secret about how much fun EV's can be is out, too.

I'm still not much of a car guy, and I still feel a sort of guilt over having an expensive car because it isn't necessary. I don't enjoy the cost. I also wish it was smaller. Rear seat cup holders and some door pockets wouldn't hurt either. That's about as critical as I can be. The flip side is that I very much appreciate the precision and performance of the engineering. You really can feel it at highway speed and in slowly pulling in the garage. Regenerative braking completely changes the way you approach slowing down. The crazy and instant torque, launching off the line at a green light, does not get old, because it's like having your own launched roller coaster. It's super comfortable, especially when you go for those longer trips.

Last month we had the Autopilot trial, and that was neat. That enables the features for auto-steering, stop-and-go cruise, automatic lane changing, etc. It's a $2,500 option, or $3k to enable after the fact. I don't think it's worth the money, but it is cool.

The technology and the smooth driving experience of an EV makes you never want to go back. I look forward to the day when this is the normal thing for everyone. Next year it gets a little closer with the Chevy Bolt and the Model 3 (and presumably an updated Nissan Leaf). I rented a gas car a few weeks ago on a quick trip and it just felt prehistoric. It's not even the environmental thing, it just feels inefficient and silly to burn something that makes thousands of tiny explosions over and over again to move.

I don't know how long we'll have this car, but I don't imagine that expensive cars will be in our garage five years down the road. Cheaper EV's are coming. For now, I'm just thrilled to be a part of the transition with a car that happens to be the only fun I've ever had owning a car.


I'm not the coaster nerd that I used to be

posted by Jeff | Saturday, June 4, 2016, 10:08 AM | comments: 1

It's fun to see all of the photos on Facebook from people attending either Coastermania at Cedar Point or HoliWood Nights at Holiday World. As far as events go, those have always been two of my favorites because of the sheer number of friends you're likely to encounter at either one of them. Some of my local friends have managed to work their way into previews for SeaWorld's new coaster in the last few days as well. There's a lot of nerding out right now, for sure!

I made it a point to get up to Cedar Point for their new ride (photos here), and I'll be checking out the SeaWorld ride next week. It's always kind of neat to get in and experience that new ride smell, with the shiny trains and fresh landscaping. I think I've been to about 15 ride openings, which has mostly been constrained by the fact that traveling to more would have been cost prohibitive. As time has gone on though, I've been less inclined to go unless there is a significant social opportunity. These are mostly about, "Which friends can I see that I haven't seen in awhile?" Obviously, moving out west had a lot to do with that change in priority.

I love roller coasters. Any day I can ride one is a pretty good day. In the early oughts, I traveled a lot to ride new coasters, and managed to get my "track record" up over 100 pretty quickly. But around the time that I started having a big of a life crisis, around 2005, my enthusiasm changed. It started to feel like a lot of the rides were close enough in experience that it didn't seem necessary to travel all over. Between Cedar Point and Geauga Lake, and Kings Island on occasion, I had enough to cover what I needed. More importantly, that's where my friends would hang out. While friends have been on 500+ coasters, I'm at 188, and that's OK.

Maybe what I mean is that I'm still a nerd, but not to the extreme that I used to be. Changing priorities, I suppose. I do think that, once Simon is a little more eager to ride new things, and is a few inches taller, I may want to travel more with him for rides.


Go sports team!

posted by Jeff | Thursday, June 2, 2016, 11:07 PM | comments: 0

There have been various points in my life where I've engaged in professional sports fandom, though it has never been a passion. Tonight is the first game of the NBA finals, with the Cavs again playing Golden State, and I go into it pretty much assuming that Cleveland will not win. I'm not a hater or anything, it's just... history.

Cleveland sports fans are nuts. While I've only lived in two other major metros, I have to admire the dedication and persistence of Cleveland fans. But that's also why I think I don't engage at that level. I mean, you get burned enough times, you kind of give up. The Indians have been to the World Series, the Cavs to the finals countless times, and the Browns... well, they've been to some conference finals (I don't remember when). That borders on mental abuse. And that makes Cleveland fans masochists, especially the Browns fans.

Here in Orlando, nobody cares about the Magic. The Solar Bears I think play minor league hockey. People are pretty excited about Orlando City Club though, and they did OK the last couple of years, if not awesome. Soccer makes me want to take a nap. I just don't get it.

I do wish I cared more. I'd like to go to some Magic games, because I do enjoy the arena atmosphere. Simon doesn't do well in there, unfortunately. I suppose I should be thankful that pro sports aren't a big deal to me. That might be an expensive hobby.


The future of POP Forums and ASP.NET Core

posted by Jeff | Wednesday, June 1, 2016, 5:18 PM | comments: 0

The new release, or reboot, of ASP.NET has been rough, to say the least. I'm not going to spend a lot of time offering opinions about it, except to say that the expectations set by Microsoft were not very well defined. I think that's why there has been so much webrage compared to previous releases. It used to be that you could get on board in the previews, start using it, and be most of the way there by the time RTM came along. I waited until RC1, but even that was too early, with massive changes in RC2, and still more coming for RTM around the project system. All the while, the tooling has naturally been way behind because of all the changes.

POP Forums has been my pet project for about a decade and a half at this point. I run it as an open source project mostly because I would be doing it anyway. It's my playground to experiment outside of any particular job, and the backbone of sites like CoasterBuzz and PointBuzz. From a developer's view, it isn't terrible, but it isn't what it could be either. In many ways I've been cool with that, because again the open source part is the secondary intention. To that end, the last release is over a year old now (though I was excited to get Q&A style threading in there). Part of the reason for that is that I'm content enough with the feature set, and part of the reason is the lack of stability in ASP.NET Core. Despite that, I've started to dive back in, and there is a wholly non-functional branch already in the works based on the new frameworks.

The roadmap and my intentions going forward look something like this:

  • v14 will be a port with an emphasis on architectural changes for performance and modularity. New user-focused features are not really on the radar.
  • The app may not be straight on Core, but it might get close. The two things that are missing so far is a Core library for image manipulation (to resize images) and an implementation of SmtpClient to send mail. It looks like the latter has some options already, but I'm not sure about the former.
  • I have a dependency on SignalR for all of the real-time updating (topics, topic lists, forum index, recent topics), and SignalR will not be a part of the ASP.NET Core RTM release. If the interim builds are at least compatible, but not perfect, that's OK.
  • The SQL data library is pretty much finished, though I haven't split out the caching yet (more on that below).
  • Step 1 in the port is to adopt all of the new hotness at the MVC level. This means wiring up things via the middleware pipeline, replacing HtmlHelpers with TagHelpers, adopting view components where applicable, etc.
  • Step 2 is to start breaking out the components of the app to work in a multi-node environment, and make it easy to swap them out. Since I happen to run the app in Azure, I'll likely focus on Azure services first.
    • Caching: The app used to use HttpRuntime.Cache, and to this day it's one of the things that makes it faster than it deserves to be. The port to use in-app memory is done, but I want to be able to swap out for Redis or other new things when/if they show up. Since Redis can do pub/sub, it might even be a hybrid, L1/L2 style cache.
    • Queued processing: There was already a crude mechanism to queue email, another one to queue search indexing, yet another for points and award processing. Would like to make that legit, and probably start with an Azure queue provider.
    • Versatile background processing: Right now, a single instance of a background processor runs within the context of the app itself. Everyone said never do this, but honestly it has worked for at least a decade. This process manages sessions, sends email, indexes for search, and calculates points and awards for profiles. I would much rather host this in any container that works, including console apps, webjobs, worker roles, etc.
    • Search: The "search engine" that I built years ago kind of works, though the algorithm is very crude. To this day I'm surprised at how fast it returns results, even if they're not great results. I'd like to make it possible to swap out the included code to use a third-party service.
  • Step 3 is to load test. The baseline will come from the generic, single-node components.
  • Step 4 is to react to the results of the load testing. This will be hard not to timebox, because there's more than a decade of cruft. Most people don't like the code they wrote last week, let alone ten years ago.

I don't have a timeline for this, and that's hard, because I do have a day job. I suspect that once the final bits for ASP.NET Core are out in June, and the project is generally building and more or less working, I'll have an idea, or at least some potential targets.


Most popular blog post ever: Complaining about Applebees

posted by Jeff | Tuesday, May 31, 2016, 11:47 PM | comments: 0

As I've been thinking about my blog lately, mostly because I've been messing around and updating the software behind it, I started to wonder what the most popular post has been. Hilariously, it turns out to be one I wrote in 2011, complaining about how crappy Applebees is. Mind you, it has only been viewed about 2,500 times (in the context of a quarter-million overall views during that period), but it's funny how you just don't know what might stick.

That experience put me off from chain restaurants in general pretty badly.


My priorities cause financial anxiety

posted by Jeff | Tuesday, May 31, 2016, 11:40 PM | comments: 0

One of the goals of our post-Seattle financial makeover was to eliminate as much debt as possible and have a respectable savings situation. I'm glad we achieved that, because God knows moving back to Cleveland sure wasn't a great idea. There aren't many grownup things I'm particularly proud of, but turning it around is on the list. I suppose it wasn't that big of a miracle, getting down to one housing payment while maintaining income, but after carrying various levels of revolving debt for around 17 years, it was a big deal to me.

As I've mentioned before, this swing has also made me cash-obsessed. I still use revolving credit (a lot), but I always pay it off. I also have to remind myself that because long-term credit is so cheap, it doesn't make sense to throw too much cash into things when your money works harder elsewhere. Finding a sweet spot to target with our house, and even the car, took some restraint. It just seems like the right thing though to have liquid cash, ready to go if it's needed for an emergency, and I keep these arbitrary targets in mind that I feel like I have to meet. I'm not even sure what the targets are supposed to protect me from.

Those targets cause me anxiety, because for the last six months we haven't really moved toward them. We're in a great place in terms of conventional wisdom, and I'm still putting money away via 401k, but I imagine better. We haven't reached "better" mostly because of our priorities. Sure, part of it was buying that silly car, but we have also placed travel very high on our priority list, and it's not cheap. Last fall we decided it was time to go to a new place, and Alaska (via cruise) was at the top of the list. The cruise itself was only about double the 3-day excursions we had been making, but pile on the airfare and activities in the various ports, and it's certainly the most expensive vacation I've ever taken. (To be fair, it does include three people instead of two.)

Again, priorities matter. We don't spend a lot of money on "stuff," but we'll spend quite liberally on doing things to create fantastic experiences. Heck, even the EV, which is technically "stuff," has led to a lot of great experiences. I've been accused of being "rich," but I'm far from it. We just make deliberate choices about how we prioritize the income we have. I wish my 20-something self would have understood this, because I think I would have had a very different, more interesting life.

On the plus side, the vacation, since most of it had to be paid for well in advance, is already paid-off. The airfare hit in last month's cycle. At this point, we will be able to take the trip and not have to think about paying for it. No more anxiety.


Nine years with Red Delicious

posted by Jeff | Tuesday, May 31, 2016, 11:42 AM | comments: 0

Today is the ninth anniversary of my first date with Diana. I have it on my calendar. I'm not sure why, but to for me this is the day that I most associate with what would be one of the most extraordinary changes in my life. Our wedding, while important and amazing, signified a transition to be sure, but the day we met was a pivot point.

I remember sitting in that bar, outside, while the Cavs were playing in the background. Diana was lovely (and finally I got to date a redhead), and she was exactly the kind of positive nerdy type that I dig. She was passionate about certain things and had interesting experiences. I wouldn't describe it as love at first sight (because really, that sort of thing is really just horny at first site), but there was a feeling like this was someone I should have connected with sooner.

I still like to joke that it almost didn't last, because according to Diana's BFF in Cleveland, she needed convincing to give me a chance. Diana says it wasn't like that. The first few dates were fun, but I certainly didn't know what I was doing. Fortunately, my hot tub and a trip to a wine festival helped, as did the local Irish festival and a Cedar Point trip. Our early dates were mini-adventures. Then we would have weekly dates, mostly at her house during the week, where she would kick me out so she could get up early in the morning. Weekends were more fun. She moved in less than six months after that first date.

One of the most striking things about this anniversary is that it just doesn't seem that long ago. I remember that first date so vividly. It's the miles in between that make it seem so staggeringly impossible to reconcile (five moves, one child, six significant jobs, lots of airline miles, many roller coasters). I could not have imagined anything we've done so far, so I don't know what to expect going forward. That's pretty exciting, actually. I think that, together, we've managed to build a relationship where we're free to pursue the things that we want, when we want. That has led to the spontaneous ordering of a house, big moves (one mistake, one slam dunk), job changes, solid parenting choices, etc. We're pretty good at making big decisions together, and most of the time we get it right.

It feels like there's another transition that we're going to make, but I don't know what it is. Maybe it's professional, for one or both of us. Maybe it's the realization of some larger calling. Maybe it's just trying to figure out how to keep Simon busy, engaged and social over the summer. I don't know, but like I said, it's an adventure that I look forward to.

Here's to many more happy years, reddelicious! I love you and can't wait to see what we do next!


ASP.NET Core middleware to measure request processing time

posted by Jeff | Monday, May 30, 2016, 11:37 AM | comments: 0

One of the things that ASP.NET Core promises is a faster, streamlined processing pipeline. Naturally, you start to wonder how fast your pages render before being spit out into the tubes. With the fantastic ability to chain middleware in the pipeline (think HttpModules and HttpHandlers, only without the bazillion events), it's super easy to wrap most of the processing in a timer.

In high level terms, a request comes into the app and it is then "seen" by whatever middleware you have configured in the Startup class. If you've fired up a new project, you've already seen some of the included middleware configured in the Configure method using extension methods like app.UseMvc(), for example. These helper methods are likely calling something like app.UseMiddleware<T>(), where T is some type that includes an Invoke() method to do stuff, and a delegate to hand off processing to the next middleware. (This is all well documented, so I won't get deep here.)

It makes sense, then, that you can create your own middleware, and register it first in Configure to capture the time it takes for the entire process. Even better, you can do it inline without having to create a class for this simple output. It goes like this in the Startup class:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
	app.Use(async (context, next) =>
	{
		var sw = new Stopwatch();
		sw.Start();
		await next.Invoke();
		sw.Stop();
		await context.Response.WriteAsync(String.Format("<!-- {0} ms -->", sw.ElapsedMilliseconds));
	});

	// all the other middlware configured here, including UseStaticFiles() and UseMvc()

Hopefully that's straight forward. Each middleware calls the next, so while they execute in order up until they reach those next calls, they execute in reverse order after that for any code that falls after the next call in each middleware. The important part here is that it injects a comment at the end of the stream with the number of milliseconds it took to execute the rest of the middleware pipeline, which likely includes all of the MVC bits. So with that in mind, a few caveats:

  • This is not well tested. I can see it write out some (really fast) execution times on pages, but I'm not aware of any unintended consequences.
  • I would rather write to the headers collection, but unfortunately it's read-only by the time the last line fires. I'm sure someone more clever than me can figure out a way to do this.
  • I'm not sure what the consequences of doing this are on non-HTML output. I don't see the time being appended to static files, for example, but I'm not sure what it does to images that are streamed out from the MVC framework, for example (i.e., images taken from a database blob and written out from an action method).
  • This doesn't measure whatever overhead is involved in creating and managing the pipeline itself. I haven't looked very deeply into this to know what's going on, but as the point for ASP.NET Core is to ditch a lot of the crusties that came with old ASP.NET, I imagine it's not significant.

Have fun, and if you have ideas about how to improve this, do let me know!


Comments back, running the ASP.NET Core RC2 bits

posted by Jeff | Monday, May 30, 2016, 12:48 AM | comments: 0

I finally got around to updating my blog app to ASP.NET Core RC2, which is to say I spent a lot of time on it because it's so different than RC1. The tooling isn't great yet, and I encountered new weirdness with Entity Framework Core, plus deployment issues. I'm sure there will be blog posts about it all eventually, and a lot of opinions about how the brave new world of .NET as OSS hasn't exactly been a great experience. I see the vision, but it has been rough.

That said, RC2 means the bug I had before is gone, where the CAPTCHA on comments broke because the framework couldn't read your IP address. People don't comment on the blog itself much anyway (usually it's just friends on Facebook), but it works again.