I don't have a lot of runway. Without going into the gritty financial details,
my goal is to land a new position by Monday, December 7th - about four weeks
from today. In light of that compressed timeline, my first order of business was
to get as many leads as possible, as quickly as possible.
To make this work, I needed to communicate with a lot of recruiters and hiring
managers very quickly. For that, I turned to my agent, Henry.
This post was written mid-way through the first week of my search. I plan to
write multiple posts on this topic, culminating in a comprehensive "wrap-up"
post once I land a job.
I'd like to share how I'm using AI to help find a new job in the nascent world
of agents and automation.
Last Friday, I found myself suddenly and unexpectedly unemployed. With as long
as I've been in the tech industry (and working for startups in particular), I've
come to realize that, well, these things happen, and the best thing to do in
response is to treat it as an opportunity - both as a person and as an engineer.
A lot has changed since the last time I did this. I had not updated my resume
in over seven years, preferring to rely directly on my professional network
instead, if that gives you some idea of where I started. That network is still
in place and I've put out feelers, but in the meantime I decided to take a
structured and automated approach to this.
My personal agent
Introducing Henry
My personal agent is Henry. Henry runs on Hermes on a dedicated Mac Mini.
For inference, I'm using the latest version of DeepSeek V4 Flash (medium
reasoning) via OpenRouter for inference. I've used other models in the past,
but I've found that V4 Flash is plenty capable for everything I've thrown at it,
cheap, and fast.
Henry has an interesting backstory - he's an experiment.
I wrote this a bit ago as part of a conversation with a friend about VR in
general. Reading it again, I thought others might be interested.
To be clear, this is my opinion. In particular, there are other players in
the high-end PCVR space than Pimax. I just know more about them because I
use their product. The story with their competitors (like Varjo, for
instance) is similar.
Apple nailed the hardware side of things. The software is a small subset of what
it needs to be - but, to be fair, that's the Apple way. The things it does it
does very well.
Pimax got the tech side of the hardware right, but the design aspect isn't
great. It's unwieldy. The software side is a garbage fire. It works great for
what I use it for, but that's powered either by F/OSS utilities, or by Steam
(via SteamVR).
Meta missed the mark in both areas IMO. Both their hardware and software are
"good enough". The hardware is cheap enough to be accessible, through
compromises and subsidization. The OS is adequate but not great. The software
ecosystem is thriving, because of the market penetration.
I recently had an issue with my Apple Vision Pro; the one that I received from
my initial order had a single "hot" pixel on the left screen.
Based on the behavior I saw and iFixit's excellent Apple Vision pro teardown
report,
I believe that there was a single pixel group where the red element was
incapable of emitting anything less than full brightness while the green and
blue elements were incapable of emitting light at all. In other words - rgb(0,
0, 0) rendered correctly, with no light being emitted, but if the value for the
red channel was anything greater than 0, it rendered at full brightness.
rgb(128, 128, 128)should render as 50% gray. On my device, that pixel
rendered as rgb(255, 0, 0).
I scheduled an appointment at the Genius Bar at my local Apple Store.
Unfortunately, "local" in my case is a two and a half hour drive away, so I
wanted to make sure everything was in place to take care of it in a single trip.
I called ahead to ensure that they had a Vision Pro with the same specifications
in stock.
At the Apple Store, the Genius that I worked with was excellent. He mentioned
that this was the first time he'd had a chance to work with the Vision Pro in a
support setting, so I went into the experience expecting some hiccups along the
way. I wasn't disappointed!
I'm bringing my blog back to life - or at least, that's my intention. I'm
subject to procrastination as much as anyone else, so there's a fair chance that
I'll get it up and running again, then promptly forget about it. It happens.
Having recently acquired a 3D printer, I've been diving in to 3D modeling. While
Fusion 360 seems to be the leader in that area generally, I've fallen for
OpenSCAD. I appreciate its use of code as the primary (read "only") design
environment because it mirrors the way I tend to think about problems. This has
the added benefits of making parametrized models being a core feature instead of
an afterthought, and readable diffs for files under version control with git.
Over the past few days I've been working hard at reaching competency with
OpenSCAD and have come to the point where I feel like I'm able to offer an
informed perspective on some of its strengths and limitations. The biggest
"rough edge" I've run into thus far is dealing with imports.
My annoyance of the day in Ruby: inconsistent usage of the inequality operator
in the standard library.
The generic inequality operator in Ruby throws an exception when objects of
differing types are compared. This, in my opinion, is a good thing. I don't
want to accidentally attempt to compare an integer and a class, for instance.
1<Class# ArgumentError: comparison of Fixnum with Class failed
This makes sense!
Today, I discovered that the inequality operators are overridden for classes
and modules to allow for checking inheritance:
While this code works fine, the RuntimeError being caught is expected to be raised when g._celery_tasks is accessed.
Because g is a werkzeug.LocalProxy object, the exception is raised if there is no active request context. My concern
was that if the next line raised a RuntimeError, it would also be caught. As this is not the intent of this handler
catching such an error would be unexpected behavior.
I've spent the last couple of days looking at conda, a Python environment
manager built by Continuum. In their own words, conda
is "git branching for site-packages, combined with yum for Python packages."
As I understand the project, it's actually quite a bit more than that.
I love git. Seriously, it's changed my life - before I used git, I was using
Microsoft's Visual SourceSafe. Those were dark days indeed.
Git is probably the most well-though-out and consistent tool I've ever used.
Innumerable developers around the world use it, from Linus hacking on the Linux
kernel to a guy on Github submitting his first pull request. It's mature.
When you reach so close to perfection, the smallest issue seems much larger
than it is. I think that's why this bothers me.