I’m not quite #1000mphclub, since I’m not actively pursuing contracts, but today seems busy anyway.

At 3pm ET I’ll be streaming some more Phoenix and LiveView game development. We’re trying for a mobile-controlled version of Jeopardy, kinda the way Jackbox games work. It’s very much me stumbling around and trying not to write Ruby in Elixir. Check it out.

At 7pm ET I’ll be joining Guy Royse, pairing on development of a MUD powered by Redis Graph. It sounds amazing, so I’m reviewing code and trying to remember how Redis works so I don’t completely embarrass myself. Catch it on Guy’s stream, or it should also be playing on mine.

Also I’m trying to smoke a rack of ribs, which I haven’t done in at least a year.

And I still have normal kid and house stuff I gotta do.

So yeah. I’m not busy, objectively, but it sure feels like it today.



Supposed to see my sister yesterday, one of the only people I think are taking social isolation as seriously as we are. The plan was to make some delicious food and hang out on the back patio — them on one side, us on the other, outdoors with plenty of space and a drinks cooler between us.

It ended up not happening. They were having some nausea and some other symptoms that we’re pretty sure weren’t COVID-19 but they weren’t going to bring some kind of sickness around and we weren’t going to let them.

So another week goes by where we’ve only seen people over computer screens, and precious few of those.

At least we ended up making Rusty Chicken, which you can see in-progress. Look I saw that marinade recipe with mayonnaise and maple syrup and I had to see if it was as vile as I imagined. Reader: it was absolutely delightful.

I stayed up too late last night and worked on the script for GUMBO DAY, which is literally just me in the kitchen making gumbo, but I’m being peer-pressured into making this video at long last. Which also means I get to play with lav and shotgun mic placement and please stop me from buying a wireless lav system and prompter setup I probably don’t need.


kitchen improv

  • Leeks, just the white/light green parts, ditch the dark green leaves. Slice them in half, rinse all the sand and dirt out, and slice them.
  • Onion, sliced.
  • Garlic, crushed or minced.
  • All that goes in a bowl. Then:
  • Potatoes. Wash ’em, skin ’em — or don’t if you like the skin on — and chop them up. Put them aside for later.
  • Stock. I’ve got some homemade beef stock my brother dropped off, and it’s fatty and smoky and delicious. Learn to make stock. Or just use boxed, it’s fine. The kind doesn’t matter. Beef or chicken or vegetable, whatever you’ve got on hand.

How much of these things to use depends on how many people you intend to feed, how much you like each ingredient, or how much of it you let sit in the back of the fridge and it’s about to spoil so you’d better cook it up soon.

Drop some butter into a big soup pot or dutch oven or whatever you’ve got. Melt that on medium-low heat, then toss the leek/onion/garlic in there, salt it a bit, and let it sweat down until everything’s soft and smells amazing.

Once that’s good, put some rosemary and thyme in there. If you have fresh, obviously that. If all you have is dried, it’ll work just fine.

Put the potatoes in.

Pour in stock, just enough to cover the ingredients.

Salt and freshly ground black pepper.

Cover the pot and let it roll on medium-low until you can crush the potatoes easily with the back of your spoon.

Now, Nat, when he made this, also put in some cream and then used an immersion blender to puree the soup. I don’t like pureed soups and I can do without the dairy, so I skipped those steps and the soup turned out delicious.

I considered putting in some celery and carrots, but I was strapped for time. Might try that next go.


may 2020 crb day

I sincerely miss in-person meetups. Columbus Ruby Brigade hasn’t hosted an in-person meetup since February. I’m obviously not advocating we rush back to holding meetings full of infectious computer dorks, but I do miss it.

And of course, this has brought up a bunch of weird feelings because CRB used to be hosted at CoverMyMeds and probably never will be again. I’m looking forward to finally getting to see our new sponsor Root‘s space though.

But hey, we can at least video conference. This month we’re doing a Demo Day, or Grownup Show & Tell. You can always join us and show off something cool you’re doing, or a library or tool you’ve found, or whatever. I guarantee you have something interesting to show.


google hates me

Google does not hate me, Google is incapable of hate. It’s a gigantic corporate monolith that does not have feelings. Cool that it gets to donate to political campaigns though.

Today I tried to sign up for Youtube TV.

During the sign up process, twice, they dissuaded me from signing up.

“Use a different account, you probably don’t want to use this G Suite corporate account. You won’t be able to get as many features on it.” I’m paraphrasing here.

I didn’t ask for a G Suite account! Google turned my GAFYD (Google Apps For Your Domain) account into this against my will, and since then they’ve treated me as someone operating a corporate enterprise who does not want cutting-edge consumer-facing features.

Also they disabled Reminders on my phone which is just about the stupidest thing.

I would adore a way to turn my G Suite account into a “yes this is at my domain but I’m just some dork you signed up for a product you then changed, please let me have family sharing and assistant features” kind of Google account.

Alternatively I may just have to divest myself of Google altogether, which sounds honestly difficult and awful. I’ve been using this magic grandfathered G Suite account for some 14 years. It’s got purchase history that Google won’t let me transfer. All my dark digital demons and ghosts live here, and FWIW they seem comfortable.


the stall

I am awake and pounding coffee and ibuprofen to reawaken the husk that was once my body.

Up until 0200 because I took the pork shoulder off the smoker at 145°F instead of 201°F. Thus, it was inedible for dinner and needed to go back on the smoker afterward, and it took forever.

At least the pork turned out.

In the far-gone world of the Late Nineties, I could pull all-nighters without problem. 5 am Civilization games, all-night L5R deck tuning, or just fighting with some Perl abomination for too long were all fine, hop up in the morning and get to it.

Might force myself into the gym anyway, just to remind my body that we used to be able to do these things.


crossing the streams

Stayed up far too late dorking around with streaming software and watching old episodes of THE NEWSROOM.

The king of streaming software is OBS Studio — the Open Broadcaster Software — but it’s Very Clearly open source software. It’s got some rough edges, UX-wise, and I’m currently battling a bug where if I try to play desktop audio, like background music, not only is that audio not captured but suddenly my mic audio is choppy and awful.

So I figured I’d give Streamlabs OBS a shot. Streamlabs is engaged in the time-honored “gussy up an open-source project and sell it” business model. They’ve made some great improvements to OBS’ user-experience, but also…every other screen seems like it’s nonfunctional unless I pay Streamlabs a subscription fee.

Hahaha, no.

Props to making a piece of software you can call SLOBS though. That’s gold.


consistency is key

Cancelled yesterday’s Phoenix LiveView stream because I was busy with the family. Hate cancelling, but I’d rather cancel on the 0.8 average people who watch my stream than cancel on my kids. So we’ll just hit it Friday with attempts to test a LiveView Jeopardy game.

Alex is busy running what I’d consider his first TTRPG campaign. There are no rules or dice or anything, just him imagining scenarios and me responding. It’s very on-rails and full of deus ex machina, but that’s okay because it’s his first go at this and I’m just super proud.

I told him about “modules” — books that tell you how to run a pre-made story and a bunch of characters for folks to play. He loved the idea, so if anyone has any recommendations for kid-friendly systems with box sets or modules, send them my way! I don’t think my old Otosan Uchi box is going to do it for him.

Also how the hell is that box going for over $100.

Otherwise just preparing for summer with no summer camps and no friends. Setting folks up with video chat software so they can stay in touch with friends and planning how I’m going to keep my sanity. If my wife keeps baking sourdough loaves I’ll never lose any weight, but also safe to say if I don’t cut second breakfast and afternoon cocktails with my imaginary friends, I’ll probably also not lose weight.

Come hang out with the Columbus Ruby Brigade on Monday. Virtual meetings aren’t nearly as fun as in-person meetings, but it’s better than never seeing anyone.


jon c dot today

I’m not writing enough, and I’m not actively pursuing enough projects, so I’m going to start here. Daily-ish status updates from Canady Compound in Ohio.

Streaming my experiments with Phoenix and LiveView Mondays, Wednesdays, and Fridays at 3pm Eastern has been fun. This is not a polished video product, this is me jamming code into an editor and hoping it compiles while trying not to swear into the mic.

If that sounds like your kind of thing, it’s over here.

Blogging about blogging below, so close the tab now.

There used to be a blog at, but it had begun to experience bit rot; and honestly I’m a product of the early-2000s “Web 2.0” nonsense and the software running that blog didn’t support things like trackbacks or pingbacks or MetaweblogAPI, none of which I ever expect to use but damnit I will not be forced to live without.

There was only one post I consider to have had value from that blog. I wrote On Letting Go, and Being Let Go after having been unceremoniously fired from what would have been an absolutely shit job, and abandoned by most of my friends and peers.

Those friends would later be fired by the same company — some in grand fashion –because that company is run by constantly erupting assholes. So we’re now all on speaking terms again.

Anyway the dozen or so other posts have been abandoned to the net-aether, because I chose the one blog platform WordPress doesn’t have an easy importer for and I just can’t be bothered to write one myself.


On Letting Go, and Being Let Go

Letting Go

In October 2017, I resigned from CoverMyMeds after around eleven years of service, which was an incredibly difficult decision to make.

I wasn’t instrumental in getting the company to it’s 1.3 billion dollar acquisition, but I contributed significantly to the company’s success, and had been rewarded justly for it.

I spent a third of my life (from age 22 to 33) building products and internal tools, leading and/or managing teams (yes, there is a distinction and a difference there), stressing over deadlines and launches and hiring and team dynamics and composition and policy/procedure documents and HIPAA regulations and all the stuff that goes into a successful Healthcare Technology company.

Deciding to leave wasn’t a thing that happened one morning, I didn’t decide it over coffee. It was months of debate. It was heart-wrenching. I couldn’t decide if I really wanted to. I was terrified of leaving, basically my entire adult life was spent working there, and nearly all my friends either worked there or had. In the end, I had to admit some things to myself:

  • Burnout had hit me hard some years ago. I read all the things and learned how folks cope, the time and space and therapy, then I said “pfft I’m awesome I got this” and went back in the very next day. That’s what you’re supposed to do, right?
  • I wanted to move into Serious Technology Leadership, since the company didn’t have a CTO or VP of Engineering then and I thought I could work my way there. CoverMyMeds was very clear that they didn’t want those roles filled at all by anyone, so I said “pfft I’m awesome I got this” and burned all of my political capital trying to convince them they did. They were unmoved.
  • After eleven years, I wasn’t excited by the work there anymore. Not that they weren’t doing cool things, or that there weren’t teams I could move to. I just couldn’t imagine being a part of any team in the company and being happy.
  • Oh yeah, I was unhappy. That crept in at some point. Probably because of that burnout, you think?
  • I could. I was lucky enough that financially, I could resign from the company and take some time to chill myself out and figure out what’s next.

It was clearly time for me to move on. Maybe it had been for a while, and I was too stubborn to see it. But I struggled. It felt like I was giving up on this thing I’d help launch into the world. This was the first non-student job that I’d held for longer than a year, and it was woven into my concept of self pretty deeply. It also felt like I was giving up on me, that I’d tried my hardest to be what they needed me to be and came up short.

My last day felt awkward. I wanted badly to be done, but I also wanted badly to stay. To not pack up my decades worth of accumulated desk toys and office detritus. Folks were shaking my hand, hugging me, wishing me well, and that felt good. Plans were made to stay in touch, and I knew that it was likely I’d drift away from many of these folks. That felt bad.

The first full day at home felt freeing, like a weight I didn’t know I was carrying had been lifted off of me. I dropped the kids off at school and came back home and sat down. I didn’t know what I was going to do next, but I was elated to have the opportunity to figure it out in my own time.

Being Let Go

I won’t be naming any names here. The names aren’t secret, and as of publication you could probably figure them out if you had five minutes to spare, but that doesn’t feel right to me.

Two months after I left CoverMyMeds, I started working for Beard’s consultancy. He’d started it six months previously and had a few employees, but needed an extra hand on a project. I wasn’t doing anything except worrying; it turns out I don’t know how to be funemployed. I accepted.

Nearly a  year later, Local Startup bought Beard’s consultancy. They needed to drastically expand their software development capabilities, and Beard was excited about transitioning to building a product. He’d said that they wanted to hire the entire crew, and he asked me what role I wanted to play on the new team. I told him I’d wanted to help run the software team and grow it and myself into the things I’d wanted at CoverMyMeds. He agreed. Discussions were had with Local Startup. They agreed. We worked out what my title and responsibilities would be.

Three days in, Founder and COO of Local Startup – both of whom I knew prior to this, and one of whom I have a side venture with – stepped into my office, closed the door, and sat in the two chairs opposite my desk.

“This isn’t working out, we’re not going to hire you,” Founder told me.

He said things after that I can hardly recall. I was on complete autopilot after that. I’m relieved to say that my autopilot setting defaults to shake hands, wish well, depart silently and not rage hard, destroy property, shout at people. I remember putting things into my bag, first neatly and organized, and then panicky and rushed, forcing the laptop satchel into a sphere containing everything except a laptop. I threw my big overcoat on and walked the long way around to the door to avoid everyone, eyes ahead, mind fuzzy and trying my damnedest not to shed tears before I got to my car.

I hadn’t even been given the opportunity to screw the job up. I was out.


When I left CoverMyMeds, it was sad and difficult, but it was my choice. I missed (and miss) those folks. I miss what it could have been for me. I still refer people to work there, and celebrate their accomplishments. They earned it. I earned it.

When I left Local Startup, it was sad and difficult in a completely different way. It was not my choice, and the folks I thought were going to stand behind me were literally behind me, growing distant as I drove away from the office for good.

I’d never been fired; or wait, I guess not hired after verbal agreement but after starting the job? Does that make it better?

Does knowing that you didn’t do anything to deserve this make it better?

Are you sure you didn’t do anything to deserve it?

I mean it was two and a half days, right? You’d know if you did something. It’d be obvious, and they’d have told you. “Here is the line, here’s what you did that crossed it, here’s why we’ve decided to renege after weeks of building you up for this position.” Is that too much to expect?

At least your finances are in order, so you don’t have to suffer the indignity of job hunting right before the holidays or last minute changing of plans. Does that make it better? Does the knowledge that it definitely makes it better but you still can’t sleep right make it worse?

Who of the folks you used to call colleagues (or friends) can you still trust? How many called to check up on you afterwards, to express their shock and outrage and ensure you knew they cared? If that number is close to zero, does it validate your fear that you’re some kind of asshole that brought this on yourself?

Do you think you can finish the whole bottle of scotch in one sitting? If you do, is there more?

It’s been a week. Every morning, I wake up and try my best to shake off the bad feelings. I try my best to keep them from coming back during the day, and so far I have had limited success.

I’ve been writing this thing for days, editing, rewriting, changing the tense, the structure. I’m writing this for me, because I have to get it all out of my head or it will continue eating me. It is shameful and embarrassing to write these things down, but it’s good for me.

I’m also writing this for you, if you’ve ever been fired or ever do, so you know that these feelings happen to people. I haven’t recovered yet, but every day I get a little closer. Zach Holman‘s pieces FIRED, FIRING PEOPLE, and THE DEPRESSION THING helped me, and they are interesting reads besides. I read them when they were originally published and immediately had to go back to re-read them to remind me that someone else had gone through something like what I was going through, and it would be okay.

If you want to chat, I’m @joncanady and also