Archive: March, 2019

A budget for the new college graduate

posted by Jeff | Sunday, March 31, 2019, 2:06 PM | comments: 12

In today's edition of "no one in politics gets me," I'd like to talk a little about the cost of college. While I'll be the first to say that I'm all for some kind of socialized healthcare (in part because nearly every industrialized nation but the US does it), I can't get on board with the free college thing. I don't understand the problem that it's trying to solve, or even the problem that college solves. This may seem counter to my general advocacy around education, but I'm not convinced that college is the answer that solves some particular problem.

So let me get this out of the way: I know college costs in real dollars have been on the rise for the last two decades, which is to say they significantly outpace inflation (source: US Department of Education). This narrative also often suggests that wages have not increased, which is true, but they have kept pace with inflation for about 40 years (source: Pew Research). I'm going to put all of that aside, because I'm saying the current debt loads being incurred by college grads is in fact manageable with the right budget.

Every figure I'm going to use here on out is in 2018 dollars, using the fed's numbers. Let's start with the basics from the DOE: The average debt for a 2018 graduate was $33,000, and interest rates varied between 3.76% and 4.66%. Let's say that averages at 4.5% even though it would be less. The loan term is 10 years. This puts the payments at $342 per month. Again, we're working with averages here, so don't bother me with anecdotes higher or lower.

I can't find an authoritative source about average starting salaries out of college, but for 2018 the sources tend to average about $50,000. (I found a lot of studies about expectations that put the number at $60k, with a fifth of people expecting $80k!) Let's work with a lower than average salary at $45,000. Assume that 30% comes out for benefits and taxes (and that should even cover a 401k contribution if it's available), and that gets us to a monthly budget of $2,625.

Quicken has a simple budget calculator, so let's use that! I'm going to roll with expenses here in Central Florida, which is generally not bad but the rent here is crazy high, like almost mortgage territory. Let's make some assumptions here: You share a place with a roommate, your car is a new leased Toyota Corolla with nothing down, a functional but inexpensive phone on Google Fi, etc. Here's what I came up with:

Rent (your half) $600
Renter's Insurance (your half) $50 
Utilities (your half) $150
Cable/Internet (your half) $50
Cell phone $50 
Car payment $250 
Car insurance $100
Gas $100
Student loan payment (see above) $342
Groceries $150
Clothing $50 
Entertainment $100 
Savings (5%) $131
TOTAL: $2,123 ($502 unbudgeted... save or make extra loan payments!)

Is this doable? It was for me, because believe it or not I still use the same version of Microsoft Money I did when I was right out of college, and I actually know what I spent money on. It was very nearly this budget, I drove a Toyota Corolla and had a roommate (then-future first wife) who was in grad school, no less. Things were tight for me, but where I went horribly wrong is that I was paying another $200 in credit card debt every month which I was actively replacing with about $200 worth of eating out and buying CD's and DVD's (these small plastic discs that once contained music and movies). I also didn't do any of the saving or retirement account deductions, so I really pissed away a lot of money.

Let's also keep in mind that I went to school for radio/TV and journalism, careers that I abandoned after four years to chase dotcom dreams. I never had any illusions of making a ton of money. Because I went to a private school, my student loan debt was actually more than today's average at $40k (adjusted), and my loans were all at 8%, so my payments were higher, too. My schooling had zero impact on my career: Nobody has ever cared where I went to school, and in recent years, didn't even care that I went at all.

But I digress... I didn't want to get into whether or not college was worth it, I wanted to look at the cost for today's graduate. There are all kinds of variables you could throw in here, like, "But I work in San Francisco!" or whatever. Countless people will say, "But I needed a masters degree, so my student loan debt is twice that!" Sure, we all make choices. I know a lot of MBA's who used to argue that they "needed" that degree to get ahead, but now say they're not ahead because the ROI wasn't there.

I know a ton of software developers who didn't go to college at all making six figures before they're 30. I've met trades people making a comfortable living on $60k a year contracting on their own terms. I know a guy who moved to Nowhere, Montana to work in radio there on $35k a year who lived comfortably. The more I look at the college debt "problem," the more I wonder if the underlying issue is a combination of choices and expectations. I'm not convinced that these factors have significantly changed in 20 years, even if the cost of college has. And if more people go to college, then the pure economics dictate that the cost goes up because of demand while the value of a degree goes down because of market saturation.

I'm digressing again. Tell me why that budget can't work?

Routine busting

posted by Jeff | Friday, March 29, 2019, 10:21 PM | comments: 0

A good indicator that a job has run its course for me has been when I find myself watching the clock or the days just drag on and on. Conversely, when I'm into a job, or at the very least keeping very busy with it, time goes quickly, week after week. The biggest thing that I notice is that my kid keeps getting taller. It's not a grind, but I'm acutely aware of a certain amount of monotony. This is made worse by the fact that right now I don't take time off frequently enough. I've committed to taking a week off quarterly, but each time I hit that point I'm anxious to bust out.

Which gets to the real problem: I need to bust my routine from time to time. It felt pretty obvious to me today. I started the day by going to work when I intended to take the day off, because I did not stand my ground, took meetings and had lunch with a new peer of mine (that part wasn't like work). After that, I got into the car to head to the hotel on the far side of town near the place where we have our annual Orlando Code Camp. This is my sixth year doing it, and it involves a speaker party the night before. Most of the time, I don't feel a great need to do stuff without my family, but this is a rare exception. Just driving out and doing something not routine during the work day feels good.

I'm off this week, with a little adventure travel for our 10th anniversary. I have to not wait for special occasions for routine busting.

First burn

posted by Jeff | Saturday, March 23, 2019, 11:32 PM | comments: 0

Diana and I were comparing notes today, and discovered that we both took the remarkably stupid action as young children of putting our hands on hot electric stoves. I don't know why kids would do something like that, and by the way, I remember it vividly. That's not a memory I have ever been able to forget.

Simon had his first burn today, which I'm campaigning for parent of the year on, because I probably should have seen this coming. Generally speaking, we want the kid to learn how to do stuff and be self-sufficient, so today we helped him load a pan in the oven with some french fries. All went well getting them in. All went well getting them out, too. Then I encouraged him to dump the fries on to a plate, and that's where things went horribly wrong.

First, a little background. Simon has horrible situational awareness. Try as we might, it doesn't seem like a skill that we can teach him. It's part of the reason that he spent the better part of his first six or seven years finding new and inventive ways of hitting me in the balls. He often does things that cause spills, things to break or other things that hurt one of us. He immediately follows the event with, "It was an accident," but he's just not good at accident prevention.

Anyway, he lifts the hot tray, with oven mitts, and tilts it away from him. I'm behind him, so I don't entirely see what he's doing, but he tags the underside of his chin with the tray. He quickly puts down the tray, looks at me with the most panicked eyes possible, and bursts into screams and tears. I look, and I can see the skin peeled back where he hit it. The screams are not good. Eventually we get him calmed down enough that I can hold a bag of ice under his chin. Diana uses the video call doctor thing we get through our insurance ($10 beats an urgent care visit), and the doctor is able to basically see the damage and prescribe a cream to put on it. With some instruction about care, we're off in 15 minutes and the prescription is available within an hour or so.

We went on with our day after that, but of course I feel terrible. He didn't do the ridiculous thing we did as kids, he's just kind of clumsy. How he can have such poor situational awareness but master Portal is beyond me.

Red curry chicken

posted by Jeff | Monday, March 18, 2019, 7:13 PM | comments: 0

I do enjoy curry in various forms. I love the smells of Thai-style curry, and you can get about the same thing everywhere that serves Thai food. Indian curries don't smell as good, but they're often a little thicker, depending on what they're made with, and most importantly, they're hot. It's my understanding that Indian restaurants often use the powders made elsewhere, but some do make their own.

So here's the recipe I've been refining. Like everything I've tried to recreate at home, it doesn't quite taste like anything I've had in restaurants, but I like where this landed. I think it's a combination of what I like about Thai and Indian curries put together, which makes sense since I'm using Thai paste and Indian style powder together. It has the great smell along with the sweet richness of Thai curry with the kick of Indian curry. (I know you can make Thai curry hot by request, but the base doesn't seem to start there.)

  • 1 can coconut milk
  • 5 cloves minced garlic
  • 2 tsp Penzey's hot curry powder
  • 1/2 jar of Thai Kitchen red curry paste
  • 2 tsp brown sugar
  • 1/2 tsp salt
  • 2 chicken breasts
  • 2 cups of rice
  • rice vinegar
  • salt

Bring everything to a slight simmer in a frying pan except the chicken. Gently stir it until it's a smooth consistency. Taste it to see if it's seasoned to taste. Cut the chicken into small pieces, add to the sauce. Increase heat, bring to a slightly higher simmer and keep stirring until the chicken is cooked through. Make 2 cups of rice (preferably in a rice cooker), when finished, add a pinch of salt and some rice vinegar. Serve the chicken and sauce over rice. Serves two people.

The unrealistic expectations of theme park workers

posted by Jeff | Sunday, March 17, 2019, 3:46 PM | comments: 0

The realization that I could buy a season pass to Cedar Point, because I was a grown up, came to me about 20 years ago now. Starting PointBuzz (then Guide to The Point) came shortly thereafter. The thing that I recognized almost immediately when entering that community was that a lot of people looked at a job in the theme park business as the ultimate gig. However, the expectations about that arrangement tend to be, on the whole, fairly unrealistic. Now that I live next to Walt Disney World, I see it even more.

The first unacknowledged reality is that supply and demand tends to drive wages down significantly. Seasonal jobs at regional parks are getting a little more competitive in some markets, but if you're a college kid wanting to dispatch roller coasters, there are 30 people lined up behind you to take that job if you don't want it. The front line jobs in particular are not high skill jobs, so they aren't going to pay a ton, even if you stay in them for a long time.

That leads to the fact that there isn't a ton of upward mobility in your average park organization. Managers that did come from within tend to stay there for a very long time, and aren't likely to give up those jobs if they like them. They don't pay particularly well either, but again, there are a bunch of people who would love to have those jobs. Paying your dues isn't a path to advancement, because there isn't much opportunity to advance.

There's also a gross misunderstanding about the difference between front-end line jobs and professional office jobs. Things like finance, IT, communications, engineering and the like require experience in those areas, just as they do at any other company. Experience selling churros doesn't count. Having worked in the corporate office of a theme park company, there tend to be a lot of professional managers from different industries, and professionals from all walks of life. (There were a fair amount of B-players from another theme park company, but that's another story.)

Salaries for professional gigs tend to vary a lot by company as well. I encountered one job here in Orlando that was at least $50,000 below the market rate, and they eventually hired someone willing to take it (with matching skills and experience for that salary). On the other hand, another company pays market rate, and another pays above it.

One of my best friends was a total park nerd in high school, went to college, and within a year of graduating reached the job that she thought she wanted on the marketing side of the business. She was underwhelmed by the job (and probably the pay), and eventually found something else with greater purpose. I worked in a corporate headquarters here in Orlando and made solid money as a contractor, but even if they could have converted it to full-time, it wouldn't have been enough to keep me there. That's just the nature of the business.

I say all of this not to discourage anyone. I get the allure of snorting pixie dust and being in the business of fun. But it's important to be realistic about what that means in terms of career and salary outlook. I see young people on Twitter frustrated that they only make $10 an hour herding kids on to Dumbo, with a strange sense of entitlement that implies they deserve more. Maybe they do deserve more, but they'll never get it in that job.

I know some people who have been in the business for a long time, many of them among the best at what they do... general managers, vice presidents, directors... all-around top notch professionals in every case. They work a ton of hours and in many cases don't make as much as counterparts in other industries, but they love it. If you don't have that love, or it doesn't counter the shortcomings, it's not the business for you. If you're expecting to make a good living in a line job, I can't urge you enough to pursue a skilled career in anything else.

Software development really is getting easier

posted by Jeff | Saturday, March 16, 2019, 9:12 PM | comments: 0

I've been on something of a streak committing stuff to my open source project, POP Forums. This app has been OSS for 15 years now, through several rewrites, countless improvements and deployments to CoasterBuzz and (less frequently) PointBuzz. Now that I'm back to a job where I'm not writing code, permanently I assume, it's important to me to stay in it, if not for street cred, then to simply engage in a creative endeavour that's relevant to my job.

In the years of neglect, one of the things that bothered me about the app is that I never really made it into something that could scale out. For non-nerds, scale out means making it so it runs on many "servers" (in quotes because it's all virtualized these days), so when your browser talks to it, it can be a different server every time. This is good to handle load, certainly, but it's also nice just to have that redundancy.

That gets to the point of this post: It's so flipping easy to do this these days. Logically, the app has to do a few things. It has to response to requests from web browsers, it has to do stuff in the background (like index a thread for searching) and it has to persist data somewhere, like a database. To make it faster, I've been storing data in memory when it doesn't have to change often. No point in going to a database for that. The problem is that if you're running it on a multi-node arrangement, you can't refer to stuff in memory because there are a bunch of servers, and they don't all know what's current. So you have to use a separate thing, a cache, to keep that stuff, and every server uses that instead of its own memory.

You'll also want to use some kind of third-party entity to index and search all of your stuff. There are lots of choices for that in a cloud world, like ElasticSearch running on all kinds of stuff (like AWS), or Azure Search. Then you'll need something to run all of that background stuff outside of your web serving, because you don't want multiple copies of that running. This is that "serverless" thing that's all the rage, like Azure Functions or AWS Lambdas. 

If it weren't enough that you can provision all of this stuff with a few clicks (and automate the provisioning), you can also run it all locally with emulators and Docker containers. Specifically, I'm able to run locally with the web server associated with .Net Core, docker containers for Redis caching and ElasticSearch, and the Azure emulators for Functions and storage (for queues). It's like magic, and it all just runs and works together. When I commit code, there are free mechanisms to make it all build and deploy into the cloud and be running a few minutes later.

This is not a recent revelation, mind you, but when I think about how hard and expensive it was to do this back in the day, it's crazy. If you're starting something up, you can run all of this for less than $200 per month, when you used to have to spend thousands, before you even had a single customer. And more to the point, you can run it all on a single laptop by running a few command line entries to spin up the stuff virtually. You don't even need to install stuff anymore.

The evolution of software development in recent years reinforces my m.o. about what the job is really about for most people: composition. We'll always need people who are really good at writing algorithms and managing memory, but I suspect that the overwhelming majority of the work these days involves composing solutions. The best people in most jobs are those who write the best glue.

My historic allergies

posted by Jeff | Thursday, March 14, 2019, 6:58 PM | comments: 0

My allergies got so bad yesterday that I stayed home from work. The night before was a perfect storm of congestion and mouth breathing, leading to a sore throat, and then taking Benadryl so as to completely knock me out. It felt like someone had poured concrete into my sinuses. I can't really remember feeling this bad over allergies, and in almost six years living in Florida, they've barely been an issue. I sucked it up and went to work today since I felt "better," but it took caffeine a bunch of snot rags.

From puberty to my mid-20's, allergies in the Cleveland area meant I would endure about one miserable month, typically the last two weeks of May and first two weeks of June. Since that time, the misery period has been more like two weeks. When I moved to Seattle, I had no allergy problem at all, or if I did, it was minor and short-lived. Moving here to Florida, I noticed some minor and short-lived reactions early in spring (i.e., right now), but nothing serious enough to cause discomfort. I think I may have taken a Claritin once. The worst part is that even the "non-drowsy" medications knock me out. I seriously won't drive after a single Benadryl.

Anyway, I'm over this. I'm hoping that we'll finally get some rain this weekend and washout the air. It's so dry that we're seeing brush fires on the freeway because of the fuckwits that flick cigarettes out their windows.

Nostalgia gaming

posted by Jeff | Saturday, March 9, 2019, 10:46 AM | comments: 0

Last week, I busted out the old Portal 2 and the Orange Box, which has the original Portal. I remembered seeing somewhere that they were now compatible on the Xbox One, so while they're 8 to 11-years-old, I have fond memories of them. I played them through to the finish, staying up way later than I should have. I can't even tell you how satisfying those games are, and they were just the right amount of challenging to me.

Those games aren't that old, but they're definitely not new. There's a huge market for old games, as evidenced by Nintendo's reissue of their NES Classic and SNES Classic. Of course I bought both of them, even if I don't really spend that much time playing them. Just holding the old controllers evokes a satisfying feeling. Those old 8-bit and 16-bit games don't really capture my imagination all that much, in most cases, but they're fun to mess with for a bit. The old Xbox games are a lot of fun, too, and I'm glad I didn't purge those over the years.

Gaming as an industry hasn't gone away, certainly, but I'm so much less likely to buy games. I'll typically buy the Lego smash-and-collect games whenever they're released, but that's about it. The Tomb Raider reboot grabbed me too. Beyond that, I'm not sure why I generally don't seek new games, given how much I used to enjoy playing them. I'm not even plugged into what's out most of the time. Maybe it's just a change in life priorities, and I should readjust them.

Simon, 9

posted by Jeff | Tuesday, March 5, 2019, 10:14 PM | comments: 0

The last two years I did a "year in pictures" post with Simon, but after going through the stack for the last year, I didn't really take a ton of photos of him that were particularly interesting. That, and it was hard to get candids of him, thus I'm left with a lot of "my two big front adult teeth" smiles.

This year has had its ups and downs, for sure. We've watched him academically catch up even while we struggle to get the right balance of ADHD meds in him. His mechanical understanding of things, and curiosity about them, is stronger than ever, which is usually a good thing (though he doesn't just accept the "magic" of theater and theme park attractions). He's tried new rides and found that he enjoys them. He struggles socially more than ever. He's becoming an extraordinary swimmer. The kid who doesn't understand sarcasm can be intentionally funny. He's all of these things.

Nine means he's half-way to legal adulthood. That scares the shit out of me because I feel like there isn't enough time to really prepare him for the world and give him a happy childhood at the same time. And puberty is only a few years away, so it won't be long before he doesn't want to cuddle up to you on the couch for a movie. It feels like it was just last year that I could football-hold him, and now he has opinions and complex emotions. I can't believe how fast time has gone.

But Simon still does the things that has made parenthood amazing. I'll never get tired of his greetings when I get home from work or he gets home from school. We like to do some of the same things, like build giant Lego sets, but he loves board games and I... don't. Thankfully Diana can tag in. His empathy skills are slowly coming around, and he sees the value he brings when he helps with chores. At the most fundamental level, Simon creates something few things other than a child can: lots of love.

Shortly after his last birthday, Simon finally took a chance and learned that he loves Space Mountain. I mean, we live 11,000 feet from Cinderella Castle, it would be a shame if that wasn't his thing. We've scored lots of excellent on-ride photos, but none as great as this one with this teen emo girl up front who clearly hated being here with her parents.

Simon once again managed to enjoy three cruises this year. The interesting thing is that in the last cruise, over the holidays, he was confident to start swimming without a life jacket.

Among the things we share interests in, we can now put pinball machines on the list. He went to a friend's birthday party where they had a couple of machines, and he really engaged. Screens aren't the only thing... this kid really loves the tactile experience of an actual thing moving around with physics.

In the fall, we made a weekend trip to Daytona Beach, where Diana had a quilt retreat. Daytona is a total dump, but the kid does love the ocean. We also toured the speedway.

I can't even tell you how important Lego has been in our lives. As a kid, I had three or four large sets, and the memory of those is among the best of my childhood. Today I'm able to buy the big grownup sets for me, but there's an entirely new set of classics that Simon has received as gifts. Whereas he would struggle to build them just a few years ago, he's now able to build things like the police and fire stations on his own.

It seems weird to post a photo of us in an elevator, but for better or worse, the kid loves elevators. It's carry over from his toddler days, when doors fascinated him, and now you add a mechanical component and a service component that he enjoys. He loves "helping" people get in and out, and holding the door for others. There's no shortage of opportunity to do this on a cruise ship.

Unfortunately this is the back of Simon, but the moment was sweet and I love that I at least captured it. On our New Year's cruise, there was a couple named Suzy & Alex that performed at various places on the ship, and Simon charmed this young Brit at every performance. Maybe it was the other way around. I dunno, either way, she sat down next to him to sing in the atrium, and it was a lovely moment.

Taking Simon to see Hamilton felt like a risk, because three hours is a long time for a kid to sit still and observe theater etiquette (many times over when ASD is at odds with such social contracts). But the kid loves the music, and no matter what the cost, I felt like he needed to see the show. He definitely struggled to hold his questions, but seeing him physically react to "Yorktown" was all the validation that I needed to know we made the right choice. At his age, who knows if he'll really remember it, but I hope he does.

When I was still regretting moving away from Seattle on a regular basis, one of the strongest reasons for that was that Simon didn't get to see his cousins very often. But his cousins have a house now on the gulf coast, and they visited us three times in the last year, including the better part of a week just recently. Naturally, they have passes to Walt Disney World, so that makes for some great cousin time, like the time they met Belle.

When you don't seek validation

posted by Jeff | Monday, March 4, 2019, 9:32 PM | comments: 0

I had an exceptional day, when I was able to observe some positive outcomes of some decisions I made. Then another person further validated those outcomes. I'm so not used to getting that kind of validation that it routinely surprises me. I'll unpack this in a moment, but I generally don't seek validation. I think people generally reach a point in their life where they just don't bother with looking for it if the absence of it causes you to question your value in the world. It's vaguely related to that thing where you stop caring about what others think of you.

Getting validation feels good though. That's reason enough to make sure you give it liberally to others. If you do seek it, I think you have to be careful about where you expect to get it from. There's so much about the world that you can't control, so whether or not you can get any meaningful validation from people, institutions, relationships, work... I'm not so sure you want to be fishing there.

I think the reason I don't seek validation is that there simply haven't been many times in my life where I've received it. I mean, this is total therapist material, but going back as far as I can remember, from childhood to college to adulthood, it just wasn't there. I'm sure my inner survivalist at some point decided that if I was going to derive some self-worth out of anything, it would be out of working toward outcomes that I wanted. Let the outcome be the validation. It sounds lonely when I put it that way, but it's probably not wrong.

Looking for validation isn't a terrible thing. I think it's one of the many things that make human connection different from the way animals interact. I imagine that it's appropriate to ask people for validation, to set that expectation that you need it from time to time. Without that, it's like that dysfunctional thing in relationships where people measure love by how much others do stuff for them.

Verizon sucks, and moving your service still isn't easy

posted by Jeff | Sunday, March 3, 2019, 10:30 PM | comments: 0

A little over a month ago, I was visiting my mom up in The Villages, and we got to talking about her cell phone service because her crappy phone was misbehaving regularly. The phone screen wouldn't come on when it was on a call, no matter what you did. Of course she took her year-old phone to Verizon, where the solution they offered was for her to buy a new phone, of course. Oh, and she was paying almost $70/month for a single line, and generally used less than a half-gig of data. Yeah, those bastards were trying to take advantage of my 70-year-old widowed (twice) mom.

I was pretty pissed about all that, so I talked her into moving her service to Google Fi where we would both get some service credits (referral link) and she would likely end up spending less than $35 per month, given her data usage. On the down side, she had to buy a phone, but the Motorola she got for $200 is actually pretty nice, and definitely an upgrade. I think she'll really enjoy it for what little she uses it for. She has a fingerprint sensor on this one too, so she's not walking around with an unlocked phone anymore.

That said, transferring service was not straight forward, because my mom doesn't know her passwords and such. I tried to walk her through it over the phone, but couldn't do it. She couldn't find her WiFi password, so that was the first barrier. So I drove the hour to her house and helped her out. By the time I got there, she found the WiFi password, but the menu sequence was still not super obvious to get service transferred, and I think the Fi software is pretty good. At first it just didn't ask for her Google account, which is what the service order was tied to. And then it asked for her Verizon PIN along with her billing info, which may or may not have been right. Fortunately, it took what we gave it, and her number rolled over to the new phone in about five minutes and I could call and text her on it.

There were some other quirks too, including the fact that it installed the crappy Verizon apps that came with her old phone. But we got those cleaned up and the important stuff like her photos worked out. On the negative side, fucking Verizon had its own contact app instead of using the one from Android, and there was no straight forward way to get those out. She spent this evening manually copying those from the old phone.

This stuff is still too hard for non-techy people, and if you buy your phone at retail, those assholes aren't going to help. Still, initial friction aside, Mom has a nicer phone with a better camera and will pay half as much for service.