Laid Off in 2026

I was laid off at the end of March. Along with hundreds of other programmers and tech workers. This is a new experience for me and I can’t say that I care for it. What I really dislike about it is that I can’t point to a personal reason that I can control or improve. My boss didn’t want to let me go, but the lack of business from the customer led to several of us being let go in a surprise layoff round. Why was I among those picked? No reason was given. All I can do is speculate, and that is not productive.

Job hunting has never been my forte. Going out and contacting people, putting myself out there, etc… All my best jobs have kinda come to me. My dad recruited me while I was in college to be a code monkey while he was consulting, I was called by someone who had seen my résumé once, and I’ve been approached by recruiters twice. Now…

I’m using a recruiter again but the jobs in my area all want skillsets I haven’t been actively using in the past 5 years. Similar for remote. No one wants desktop or mobile; they want full-stack web developers. I’ve done web APIs and SQL Server, and even some Angular, but I don’t have 10 years of Angular/JavaScript under my belt, and that’s kinda holding me back.

So how do I solve this? I work on full-stack Angular projects and other things while I hunt. I go through all the classes on Pluralsight that I can. I start updating this blog again.

SortPaper doing a Cycle Sort on a blue and orange gradient.
SortPaper running a Cycle Sort on a gradient. I appear to have cut it off before it finished. Can you see the out of place cells at the end?

I’m starting with my labor of love though: SortPaper. Ah, beautiful SortPaper. My Android live-wallpaper that animates the scrambling and sorting of images. Originally written in C#, using Android’s drawing calls, it was a beautiful, if sometimes slow, hypnotic vision. It’s no longer up on the Play Store because I couldn’t maintain it due to reasons involving breaking changes in ad serving libraries. Which stinks because I have not made enough money on it to even cash out. I blame it on my lack of marketing, lack of time, and just generally prioritizing other things in my life (that I don’t regret).

That will not be the case this time though. This time, I’ve remade it in Godot. Let me tell you, what an IMPROVEMENT using a game engine for this has been! Battery drain is reduced, drawing is faster, and you can just open the app to watch the sorting without the home screen clutter if you want! It’s not out yet, but I hope it will be soon. Once I get my new developer account approved by Google. They closed my old one because I was not putting out enough content and was not getting enough downloads. THAT WILL CHANGE! I am planning on aggressively marketing it this time.

My Angular project, though, is going to be a gamified website. Think co-op Cookie Clicker, but the goal isn’t an endless run for a high score; it’s to reveal a prize. I did something similar before to announce the gender of my youngest. There was a large egg, and a two week timer. Each time someone clicked on the egg, the timer had an extra second removed. When it finished, it would reveal an embedded YouTube video of my son declaring he was going to have a sister! It was a hit! Friends and family were loading the site up and clicking and tapping away in their free time. They were sharing it on Facebook to get their friends to contribute clicks. Several people tried to cheat by examining the code and trying to trigger the API to send down the final video. They instead got a video of my son calling them a cheater! That was triggered by my dad and several programmer friends. In the end, they beat the game in less than five days.

My current concept is to monetize it with ads, and have the reveal be links to unlisted SteamGifts contests and other desirable links like that. I also want to make it available for people to make their own clickers, with their own reveals.

I have a working prototype, but it needs some visual improvement before it will be ready. Once it is though, fun times ahead!

Insomnia and Thoughts

It’s 1:28 am. I can’t sleep. I also can’t do anything productive because I should be sleeping.

WHEEEEEE!

That being said, man, I’ve really been neglecting this blog. A guy has two kids, a wife, and a fulfilling job, and he just abandons his blog.

Honestly, writing in this blog is something I very rarely think about. What I do think about are my hobbies.

I have a Raspberry Pi Zero with an e-paper hat and battery set up on my desk that I’m trying to come up with an idea for. One idea is a display of the most recent tweet from my Twitter feed. It’s not useful, but it might be entertaining.

Another is a display of upcoming meetings. I work from home now and sometimes don’t pay attention to the time. Outlook’s reminder has a bad tendency to pop under the VM I’m working in. I’d need to look into the MS Office or Teams API to get the event info I need for that. I could even wire in flashing LEDs or a speaker to alert me.

The last idea is just a clock with weather info. I’m not a fan of that one.

These thoughts have me wondering now: Is it possible to host VS Code on the pi and remotely access it to write the code directly on it? Just point a browser at https://[ipaddess:port] and see vs code there with the pi’s local display project, ripe for editing?

The things my brain locks onto instead of sleeping. Fun ideas, but I need sleep. C’mon brain, be tired.

??= In C#

C# has had the null coalescing operator ?? For a while now. It lets you condense

if (x = null)
{
y = x;
}
else
{
y = otherThing;
}

into

y = x ?? otherThing;

It’s a great tool for both condensing code and improving readability.

I found out recently though that C# 8.0 expanded on that idea. There is a common design pattern of caching a computed value in a variable so you only have to compute it once.

private int? _Example = null;
Public int? Example
{
get
{
if (_Example == null)
{
_Example = ComputeExample();
}
return _Example;
}
}

This isn’t that bad. It works. But it’s tedious to write (especially on mobile like I am now for this post). Enter the null coalescing assignment operator.

private int? _Example = null;
Public int? Example
{
get
{
return _Example ??= ComputeExample();
}
}

I love it!