<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title><![CDATA[Grumpy Learning]]></title>
    <link href="https://grumpy-learning.com/atom.xml" rel="self"/>
    <link href="https://grumpy-learning.com/"/>
    <updated>2026-07-08T14:59:24+00:00</updated>
    <id>https://grumpy-learning.com/</id>
    <generator uri="http://sculpin.io/">Sculpin</generator>
            <entry>
                    <author>
                <name><![CDATA[Chris Hartjes]]></name>                            </author>
                    <title type="html"><![CDATA[I used LLM&#039;s and all I got was this lousy layoff]]></title>
            <link href="https://grumpy-learning.com/blog/2026/07/02/job-search/"/>
            <updated>2026-07-02T00:00:00+00:00</updated>
            <id>https://grumpy-learning.com/blog/2026/07/02/job-search/</id>
            <content type="html"><![CDATA[<p>TL;DR - I got let go from my job and am looking for the next thing. Check out my <a href="https://grumpy-learning.com">CV</a> to see what I could do for you.</p>

<p>My time at RetailMeNot Group (formerly Ziff Davis Shopping) is
abruptly over as I got laid off in what was explained to me as
"an immediate budget reduction due to revenue". It was
emphasized to me that it was a "purely financial decision" and
that they had been happy with my work and was thanked for all my
contributions to the project and the team.</p>

<p>That is pretty standard corporate stuff -- I got told a similar thing
when I get let go by Mozilla back in 2020. My experience at Mozilla
did teach me that loyalty in the corporate world means very little, so
to my former teammates at ZiffDavis -- I will miss working with you
and I hope the project goes well.</p>

<p>I am not upset about this -- I learned the harsh realities of Working For The Man
a long time ago.</p>

<p>A big undercurrent to all this was the decision (like many other companies)
to commit heavy resources to the use of LLM's as part of the software development
process. They want as far as to make the use of LLM's a part of your work
evaluation.</p>

<p>As many of you know, I am not a fan of these tools. The people who created them
very clearly stole most of the training data (my books were in the notorious 'libgen'
web site) and have made promises about their effectiveness that doesn't seem to match
reality.</p>

<p>I expressed my opinions to management (at several levels) and decided that I'd rather
keep my job than get fired for not using them. So, I used the tools they provided. They
were okay -- they helped get working code a lot faster but required the same level
of attention during the review process. I treated them like I was pair programming
and would slowly go through the work, telling the tool what I wanted done.</p>

<p>In the end, it didn't matter. I got let go and they are hoping that 
spending some percentage of my salary on LLM tokens instead of having me around
to help with stuff an LLM cannot do will work. They might be right...but there
is lots of evidence that LLM's are not delivering on the promises.</p>

<p>So, I am back on the market looking to help your team. Want to speed up getting 
your code into production? Tired of fixing the same bugs over and over again? 
Want to know some better ways to use LLM's to build maintainable software? I can
help you with all that.</p>
]]></content>
        </entry>
            <entry>
                    <author>
                <name><![CDATA[Chris Hartjes]]></name>                            </author>
                    <title type="html"><![CDATA[Weeknotes -- January 26, 2026]]></title>
            <link href="https://grumpy-learning.com/blog/2026/01/26/weeknotes/"/>
            <updated>2026-01-26T00:00:00+00:00</updated>
            <id>https://grumpy-learning.com/blog/2026/01/26/weeknotes/</id>
            <content type="html"><![CDATA[<p>Current mood - 3/5</p>

<h2 id="what-i-did">What I Did</h2>

<p>Winter snow blower usage count up to 18. Ugh.</p>

<p>At work:</p>

<p>It's Annual Review Time at work so I spent the week going over
my notes and GitHub commits to get a picture of what I was 
working on.</p>

<p>Also started working on some exploratory tickets to determine
what is necessary for us to start using a new "rules engine"
to process different types of transactions.</p>

<p>At home:</p>

<p>The Little 3D Printer That Could is working well after fixing
some weirdness with it complaining about a fan that doesn't 
exist. Next steps are printing out some more upgrades for my 
other printer that is currently disassembled while two more
upgrades for the little one: a new mount for a replacement
touch screen upgrade and a <a href="https://github.com/nevermore3d/Nevermore_Micro/">carbon activated filter for inside the printer</a>.</p>
]]></content>
        </entry>
            <entry>
                    <author>
                <name><![CDATA[Chris Hartjes]]></name>                            </author>
                    <title type="html"><![CDATA[Weeknotes -- January 17, 2026]]></title>
            <link href="https://grumpy-learning.com/blog/2026/01/17/weeknotes/"/>
            <updated>2026-01-17T00:00:00+00:00</updated>
            <id>https://grumpy-learning.com/blog/2026/01/17/weeknotes/</id>
            <content type="html"><![CDATA[<p>Current mood - 3/5</p>

<h2 id="what-i-did">What I Did</h2>

<p>This week I increased the winter 2025/2026 snowblower usage count 
to 15 since November 11, 2025. When you add in the other times 
where the driveway and path to the front door were cleared just 
with a shovel, we are up over 20.</p>

<p>Certainly feels like an endless winter around here.</p>

<p>At work:</p>

<p>My main focus was the work to port over a Python RabbitMQ-backed
worker to use PHP with Laravel and instead get the data from 
Kafka.</p>

<p>I discovered a pattern that should be familiar to anyone who ends 
up doing work at an "enterprise" sized organization: people replacing
data sources with new ones that do not contain the same information.</p>

<p>As an example, the queue worker was pulling the following information 
out of the queue:</p>

<ul>
<li>merchant name</li>
<li>merchant description</li>
<li>merchant domain name</li>
<li>merchant affiliate network membership</li>
<li>"suppression" windows where we do not allow cashback offers to be redeemed</li>
</ul>

<p>The new Kafka topic I am supposed to work doesn't have the affiliate network<br />
details and the suppression window stuff looks a little different than 
what we had before.</p>

<p>Ticket asking for this work has been updated to ask where I am expected 
to get the other information from.</p>

<p>At home:</p>

<p>I did a hardware update to my <a href="https://www.sovol3d.com/products/sovol-zero-3d-printer">small 3D printer</a>
where I added a <a href="https://www.sovol3d.com/products/zero-chamber-heater">chamber heater</a>
to it. The reason to do this is that some filaments require an 
enclosed printer or else they warp really easily and not adhere
to the print bed. By adding a chamber heater, you can get a very
consistent temperature inside the enclosure, which can lead to 
more consistent results.</p>

<p>I am not a handy person (I am getting better through practice) and 
was happy that the installation instructions where clear and 
straightforward. The chamber heater module was pre-assembled
and ready to go. Here's what I did:</p>

<ul>
<li>moved the printer bed down to it's lowest setting to give me room</li>
<li>remove the back panel of the printer</li>
<li>remove the acrylic safety cover for the power supply (power was off!)</li>
<li>thread the wiring harness through an opening inside the printer</li>
<li>connect the two power cables with fork connectors to the L and N power terminals (screw terminals)</li>
<li>connect two small cables with JST connectors to the printer's main control unit at specified locations</li>
<li>reassemble everything</li>
<li>modify a printer configuration file to include a chamber heating config file (already pre-existing)</li>
<li>restart</li>
<li>be happy I now have a working chamber heater</li>
</ul>

<p>As I type this out I am doing a <a href="https://www.printables.com/model/1252907-cali-cat-the-calibration-cat">calibration print</a>
before moving on to some other more functional prints.</p>
]]></content>
        </entry>
            <entry>
                    <author>
                <name><![CDATA[Chris Hartjes]]></name>                            </author>
                    <title type="html"><![CDATA[Weeknotes -- January 11, 2026]]></title>
            <link href="https://grumpy-learning.com/blog/2026/01/11/weeknotes/"/>
            <updated>2026-01-11T00:00:00+00:00</updated>
            <id>https://grumpy-learning.com/blog/2026/01/11/weeknotes/</id>
            <content type="html"><![CDATA[<p>Current mood - 2/5</p>

<h2 id="what-i-did">What I Did</h2>

<p>Back at work after three weeks off of vacation. I am normally a "CHRISTMAS!!!!"
person but the general state of things in 2025 made me feel 
pretty gloomy.</p>

<p>2026 isn't looking much better as I write this. I am feeling pretty angry
about a lot of things to start the year, and the constant drive to 
smash AI down my throat has me feeling particularly biting.</p>

<p>Like I said on my social media account -- there are some high-profile
folks in the PHP community who were AI boosters who are complaining 
about their businesses getting wrecked by it. I am always a fan of 
keeping receipts, so you will see no sympathy from me towards those
two.</p>

<p>At work:</p>

<ul>
<li>eased back into things with fixing another issue where imported records are being marked as synchronized
with external services but were not</li>
<li>started a longer task of porting over a Python RabbitMQ-backed queue worker that update merchant records
to be a PHP Kafka consumer instead</li>
</ul>

<p>Being weak coming back from holidays, I decided to let CoPilot convert a bunch
of stuff over. What a damn disaster. Never again. Thanks for the outline, bud,
but I had to cross check everything anyway. Saved me zero time.</p>

<p>At least there is an existing test suite for me to convert over and THAT 
has been way more useful than anything LLM tooling has done for me.</p>

<p>Self-loathing is not a good way to start off a year.</p>

<p>At home:</p>

<p>Continued tweaking my <a href="[https://www.sovol3d.com/products/sovol-zero-3d-printer">little 3D printer</a>
to make it a small printing beast. Along the way discovered a cool 
<a href="https://www.printables.com/model/1252907-cali-cat-the-calibration-cat/files">calibration print</a> to 
verify all the basic calibration steps (temperature, pressure advance, retraction length,
flow ratio, and shrinkage] have been confirmed to work.</p>

<p>Played board games this weekend with my usual monthly crew. We 
continues our <a href="http://apocalypse-world.com">Apocalypse World</a> game 
where we started out in what used to be Las Vegas and are headed
to The Magic Kingdom to try and rescue a teenaged girl who was kidnapped 
to be used as breeding stock. I play Thor Thorson, crazy cult leader 
who runs around covered in tattoos, wearing no shirt and tight leather
pants. He is absolutely convinced his gods will protect him, and I 
play him that way. So much fun.</p>

<p>We also got in a game of <a href="https://boardgamegeek.com/boardgame/713/nuclear-war">Nuclear War</a>
with every single expansion IN EXISTENCE as part of it. Great fun.</p>

<p>We than finished things off with a surprisingly chaotic game of 
<a href="https://boardgamegeek.com/boardgame/39463/cosmic-encounter">Cosmic Encounter</a> where 
I completely messed up the board setup so we had to wing it. One of 
the downsides of meeting 9-10 times a year and maybe playing a 
game once or twice a year -- you keep messing up the same setup steps
unless you write your own (which the other person in our group who 
owns a tons of games often does).</p>
]]></content>
        </entry>
            <entry>
                    <author>
                <name><![CDATA[Chris Hartjes]]></name>                            </author>
                    <title type="html"><![CDATA[I Ran A Pretend Baseball Team For 28 Years And All I Got Was This Blog Post]]></title>
            <link href="https://grumpy-learning.com/blog/2025/11/04/pretend-team/"/>
            <updated>2025-11-04T00:00:00+00:00</updated>
            <id>https://grumpy-learning.com/blog/2025/11/04/pretend-team/</id>
            <content type="html"><![CDATA[<p>For 28 years I ran a pretend baseball team in a simulation baseball 
league that used a tabletop baseball game (charts, cards, and dice)
and all I have to show for an effort that spanned more than half 
my life is this blog post.</p>

<p>The <a href="https://www.ibl.org">Internet Baseball League</a> was a hobby 
that consumed my life for almost three decades. I find it very hard 
to explain to people who are not competitive by nature why I did this 
for so long. I wanted to win. I wanted to prove I was smart about 
baseball, smart about building a team, smart about playing. This part 
of my personality has caused multiple blowouts in my personal life,
and has come up when playing Magic: The Gathering as well. I eventually 
had to stop doing any kind of "competitive play" with Magic too because
it was turning me into a raging lunatic.</p>

<p>In this post I wanted to take a deep dive into this particular hobby, and 
show you how a person who thought they were good at something turned out to 
not really be good at it all. I got stuck in a loop I was only starting to 
break out of but decided to stop doing it because I was miserable.</p>

<p>At the highest level to look at this hobby, you are running a baseball team 
through an entire season. You are competing against 23 other people in a 
scenario where only one person wins the very last game of the season.</p>

<p>If you zoom in a little bit, it really is a simulation revolving around
long-term resource acquisition and resource management. Can you identify players 
who can help your team? Once you have those players, can you use the 
rules of the game (and rules surrounding who you can and cannot keep 
on your team) to win more games than you lose in pursuit of a league 
championship season?</p>

<p>As I write this, I finished the last games of our 2025 regular season.
I ended up going 87-75, but likely finishing 4th and last in what is the hardest
division in the league. With the end of this season, I missed the playoffs 
in 10 of my last eleven seasons (last made it in 2020).</p>

<p>In 2009 I made it all the way to our World Series. I lost in 6 games.
Since that time, I made the playoffs an additional 4 times. I only won 
one playoff series in that time. 16 years of being incredibly mad at the 
end of every season. I would print out the cards we use for the game 
every years and when the season was over, I would angrily dump them in the garbage
and tear up the rules. I wanted to win. I could not accept the constant
lack of positive results.</p>

<p>For many years my wife asked me why I did not just quit if the experience
was making me unhappy. I never had a good answer other than "I want to win".
Which is what it really was. It was a selfish answer.</p>

<p>So where did it all go wrong? Why was I never able to get the results that 
I wanted? I'm sure there is enough here to make a therapist wealthy but I 
will attempt to explain what I think happened.</p>

<p>I believe I failed at the resource allocation stage
which caused any opportunities to have successful resource 
management to be few and far between.</p>

<p>One strategy for roster construction is that if your team is 
not already a "playoff contender", you are better off focusing
on "resource acquisition" than "resource management". In the 
league it means acquiring players who have a "bad card" in 
the year you play but will have a "good card".</p>

<p>After losing the division title in the last week of 2016
I decided to try and "build a better team" by committing to 
a plan as described above. If the team wasn't already a contender 
going into the season, spend that year trying to improve the roster 
and focus on the next season.</p>

<p>That culminated in a series of 3rd and 4th (out of 4) finishes
in the division and a wild card playoff spot in 2020 where I went 
94-68. 4 years to make it back. My team had multiple players drop 
from being good to being mediocre, and we were back in the "resource 
collection" phase.</p>

<p>Given how talent enters the league, for your team to remain good you 
can only have a few holes on your roster every year. Need a new CF?
You can probably get one via our "first card and guys teams could not
keep" draft. Or maybe you trade some excess talent you have for something 
you don't have.</p>

<p>My issue became that, for a variety of reasons, I always had more holes 
to fill than I could replace via the draft. When you draft players, you 
are getting prospects (for the most part) and it can take several years 
to see if who you picked becomes a positive contributor. In my case, I had 
several picks turn out to be duds. Pitchers who did not develop. Position 
players who turned out to not have what it took to be positive contributors
in the optimized player pool that exists when you have 30 teams worth of 
players but only 24 rosters to fill. When core players on your team become 
bad, replacing them while also keeping the talent level going becomes difficult.</p>

<p>Trading is another way to fill those holes but I never had enough "extra" to 
trade to fix things and because my teams were bad, I would be giving away draft 
picks to another team that could be used to draft building blocks.</p>

<p>I got stuck in a loop.</p>

<p>So, every year became "oh well, I guess next year is the year to try" from 2021
onwards. But I never got to the point where it was time to shove hard, trade 
away some future, and make a run to be a playoff team. In both 2023 and 2024
I thought I had teams that were on the fringes of being a playoff team so I 
felt I would play the games and see what happened. "Your team looks pretty good"
was something I heard a lot. Instead I finished 73-89 and 81-81.</p>

<p>I'd finally had enough of my own inability to generate good results despite what 
I had been told by other people was the "correct process". Being results-driven
is hard, but in a league where we are counting wins and losses, I just could not
avoid being angry at the outcomes.</p>

<p>So at the beginning of the year I decided this was going to be my last year.
I felt I had a team that was close to being a playoff team. I used my best 
draft pick on one of the best prospects in the game at a position where I needed 
help but their current card in the game would be terrible.</p>

<p>"Let's play it out and see where we are after the first third of the 
season" is what I said. If I felt I was still in it, then I would shovel some
resources into improving the team and make a run for the playoffs.</p>

<p>After week 8 of 25 of our season, I was still in it. I traded away my two 
best prospects to try and patch holes. I grabbed a great starting pitcher,
two outfielders, and some bullpen help.</p>

<p>The chase was on. Then the team stumbled hard. I had a stretch where I lost 
13 of 18 games and that was it. I got as close as 2 games out of a wild card 
spot. I had one of the league's best offenses for most of the year. In the end,
variance and inexplicably bad luck with my pitching pushed me out of contention.
13-22 in games decided by 1 run is how I ended up missing the playoffs as well.</p>

<p>It was a terrible end to a long participation in the hobby. I spent the first 
14 years trying to figure out how to win in the league. I spent the next 14 years
chasing that and failing to develop pitching good enough to contend while always 
having too many holes to fill on an ever-changing roster. There are people in this 
league who are really good at this. In the end I was not good at it.</p>

<p>I ended up managing 4600 games in this league. I went 2141-2455 in them. Roughly
half the time I finished .500 or better. The times I didn't my teams were very bad.
I could never figure out how to win consistently in this league and it stopped being 
fun a long time ago. I hung in there in a misguided attempt to "make it work".</p>

<p>It didn't work. I'm very sad that a core part of what I did for so long turned out to be such
a misery-inducing failure for me.</p>

<p>When I announced to the rest of the league I was leaving (just after our trade deadline
so any deals I made would not be suspect) I got some nice emails from people telling me 
they understood why I was leaving and thanked me for helping them over the years.</p>

<p>That was nice but there is a big hollow part of me now. I clearly cannot fill it with other 
competitive hobbies because it will lead to the same outcomes from where I sit now.</p>

<p>Thanks for reading all the way to the bottom of this post. Learn the lesson that took me 
too long -- a hobby that you no longer enjoy is now a job. Your hobbies need to have 
positive outcomes to them, or else they are just a job. Something you resent doing.
Something your loved ones have to hear you angrily complain about.</p>

<p>I am mad at myself for subjecting my friends (and league members) to my unhappy 
rants about my team. I wanted to win. I couldn't figure it out. Leaving is the only 
way for me to break that loop and try and pour the energy into wanting to succeed 
into other hobbies where I can have a much healthier relationship with them.</p>

<p>Failure at something you really want to succeed at hurts. It is never eased by 
being reminded "it's just a game". It wasn't just a game. I ran the league for a 
decade. I build the league web site. I even helped build the game we use.</p>

<p>In the end, all I have is this blog post.</p>
]]></content>
        </entry>
            <entry>
                    <author>
                <name><![CDATA[Chris Hartjes]]></name>                            </author>
                    <title type="html"><![CDATA[Weeknotes -- October 6, 2025]]></title>
            <link href="https://grumpy-learning.com/blog/2025/10/06/weeknotes/"/>
            <updated>2025-10-06T00:00:00+00:00</updated>
            <id>https://grumpy-learning.com/blog/2025/10/06/weeknotes/</id>
            <content type="html"><![CDATA[<p>Sometimes we need a break.</p>

<h2 id="what-i-did">What I Did</h2>

<ul>
<li>while my teammates work on transaction processing I am picking up bug fixes</li>
<li>let the rest of my simulation baseball league know that I am quitting when this season ends</li>
<li>watched the Toronto Blue Jays dominate the Yankees in the MLB playoffs for the first two games</li>
</ul>

<h2 id="longer-threads">Longer Threads</h2>

<p>One of the reasons I stopped doing the baseball hobby after 28 years
(I was in this league before I even met my wife) was that I no longer 
found the struggle to try and build a successful pretend baseball team 
to be enjoyable.</p>

<p>Perhaps I am wrong to be results-oriented, but after missing the playoffs
for 10 of the past 11 years I'd had enough. Hobbies are supposed to be fun,
and this was no longer fun. In fact, I had grown resentful of this team I 
had built and that the failure to create a team that could be a playoff 
contender was making me angry and frustrated.</p>

<p>I had gone through this before with other hobbies, and it took me a very 
long time to stop feeling that way and come to terms with my other hobbies 
and make them enjoyable. Mostly by dropping the competitive part and find a 
way to participate that makes me happy and not a raging lunatic (the bad 
behaviour is all on me, not other people).</p>

<p>For Magic it was easy -- switch to multi-player, resist attempts to make it
competitive, and run a weekly event encouraging others to do so. For my 
simulation baseball hobby, well, there is no casual outlet. We are playing 
games against each other where this a winner and loser, and the results are 
there to be shared with everyone else. The team you built is yours -- your choices
and your successes and your mistakes.</p>

<p>In the end, I could not figure out how to create a team that had, as the floor, being
a playoff team. Clearly I was doing something wrong. Could never quite figure out which
metaphorical levers to pull. Does the team I built have some talented players? Yes. I 
just could never figure out the complementary pieces to make it work.</p>

<p>It was very disappointing and it went on for years. I used to rip up all the cards
for the game after each season in a rage -- April to October spent trying to beat 
23 other people and, from my perspective, failing miserably at it.</p>

<p>I will miss some parts of being in the league -- I will not miss the blinding rage 
that came with failure, or the obsessive behaviour where I would try and figure out 
where it went wrong.</p>

<p>One of my good friends who has helped me out a lot over the years has basically stopped 
talking to me once I told him I was leaving at the end of the year. This is someone who
I have visited for 20 years to watch baseball games in Detroit. It's a shame, but I
can't really blame them -- they are even more invested in the league than I am.</p>

<p>I build the web site and some other administrative tools that are used to run the league.
I am going to transfer ownership of those projects to him and that will be the end of 
my involvement.</p>

<p>It will be very strange to change the hobby to just be trying to enjoy watching 
the Blue Jays on TV and not get upset when I player I have on my pretend team not 
do well.</p>

<p>Hobbies should be fun. I want to have the ones I participate in to be fun. The Monrovia Madness, 
the team I "owned" for 28 years, was no longer fun. Don't let your hobbies become 
obsessions. Take it from me.</p>

<p>Current mood: 3/5</p>
]]></content>
        </entry>
            <entry>
                    <author>
                <name><![CDATA[Chris Hartjes]]></name>                            </author>
                    <title type="html"><![CDATA[Weeknotes -- September 1, 2025]]></title>
            <link href="https://grumpy-learning.com/blog/2025/09/01/weeknotes/"/>
            <updated>2025-09-01T00:00:00+00:00</updated>
            <id>https://grumpy-learning.com/blog/2025/09/01/weeknotes/</id>
            <content type="html"><![CDATA[<p>My most frustrating week at ZiffDavis since I started.</p>

<h2 id="what-i-did">What I Did</h2>

<ul>
<li>Helped our team update some systems to work with a new authentication platform</li>
<li>Not-so good week for my pretend baseball team as we got swept in 3 games by the best team in the league with 3 more games to go</li>
<li>Continued printing updates for my bigger printer with my smaller printer, with a long print (90 minutes) failing when I couldn't break off support structures correctly</li>
</ul>

<h2 id="longer-threads">Longer Threads</h2>

<p>At work there has been a poorly-planned migration from one authentication service
to one that we have built internally. Our team was tasked with helping to try and
push this over the finish line. My task? Update a React application and change all
the internal calls to the authentication service to use the one built in-house.</p>

<p>Setting aside that my React and JavaScript skills suck, I quickly realized that this 
was going to be a task I was not going to be able to finish on my own.</p>

<p>Simply put, the state of the application is such that I was unable to get it running
locally. Which means it would be impossible for me to test my changes. Sure, we have 
instructions but when I followed them, I got error after error and was so frustrated
I eventually started asking Gemini and CoPilot for help.</p>

<p>They were absolutely useless, just helping to confirm my own biases against these
tools being useful.</p>

<p>There are other people on my team and in the org who have a working version of the 
application so eventually I handed it over to them. I, once again, reiterated to my 
manager that any application we have to work with must be in a state that anyone can 
install it locally with approved tools.</p>

<p>It was madness doing it the way I was -- make a change, push it,
see if the build in CI failed, repeat until I gave up.</p>

<p>To make matters more complicated, the system in question is one that we are trying
to replace with the system we are now building. My manager did not want to invest any 
time into fixing things so I could make it work. "We're replacing it, why would we 
fix it" he said. Which is true, but I remain unconvinced that this is the last time 
we will have to go into the codebase and make changes. Which means if it does need 
fixes I won't be the one doing them.</p>

<p>Current mood: 1/5</p>
]]></content>
        </entry>
            <entry>
                    <author>
                <name><![CDATA[Chris Hartjes]]></name>                            </author>
                    <title type="html"><![CDATA[Weeknotes -- August 26, 2025]]></title>
            <link href="https://grumpy-learning.com/blog/2025/08/26/weeknotes/"/>
            <updated>2025-08-26T00:00:00+00:00</updated>
            <id>https://grumpy-learning.com/blog/2025/08/26/weeknotes/</id>
            <content type="html"><![CDATA[<p>A day late but not a dollar short.</p>

<h2 id="what-i-did">What I Did</h2>

<ul>
<li>Built first pass an our audit logging scheme -- first attempt is dumping JSON of the objects into the database along with the date and what kind of action was stored</li>
<li>Continue to not be able to figure out how to bend NeoVim to my wishes and have it run our Pest tests inside the development containers like I can do in PhpStorm</li>
<li>Has a great week with my pretend baseball team, going 6-0 and making up ground in our playoff structure</li>
<li>Finished all the filament calibration prints on my small printer, now can start building parts for the larger printer again</li>
</ul>

<h2 id="longer-threads">Longer Threads</h2>

<p>As someone who suffers from a tendency to pick tasks that exceed my current skill level,
it has been a lot of growth that I have slowed down with all the 3d printer upgrades and
keep the pace slow but steady. My Sovol Zero prints fine now, which is good. My Sovol SV08
has not printed anything in over a month as I wait for a replacement fan to show up.</p>

<p>Ironically, the shipment of the first fan didn't happen as Ali Express silently refunded 
the order when the vendor "could not provide tracking data". Not to worry, I have ordered
from Amazon instead. It's okay to hate Amazon for a lot of what they have done, but they
make returning things that do not work or fit your needs super easy.</p>

<p>So the plan with the bigger printer is:</p>

<ul>
<li>replace the sheet metal bottom cover over the electronics with a 3d printed one that uses  better fans. I have the fans already</li>
<li>swap out the current toolhead with the one that comes with the Sovol Zero. I have the toolhead and all the parts. Minor wiring and crimping seems ok</li>
</ul>

<p>Current mood: 3/5</p>
]]></content>
        </entry>
            <entry>
                    <author>
                <name><![CDATA[Chris Hartjes]]></name>                            </author>
                    <title type="html"><![CDATA[Weeknotes -- August 18, 2025]]></title>
            <link href="https://grumpy-learning.com/blog/2025/08/18/weeknotes/"/>
            <updated>2025-08-18T00:00:00+00:00</updated>
            <id>https://grumpy-learning.com/blog/2025/08/18/weeknotes/</id>
            <content type="html"><![CDATA[<p>An uneventful week but the heat wave continues to oppress
Southwestern Ontario. I know it's really a "first world problem"
but our outdoor hot-tub is basically unusable when the outside
temperature matches the water temperature.</p>

<p>I miss my in-ground pool when it's hot like this.</p>

<h2 id="what-i-did">What I Did</h2>

<ul>
<li>Still thinking about the audit log implementation at work. Part of the issue is me wondering if there is actually any value in being able to replay events...</li>
<li>My <a href="https://www.ibl.org">pretend baseball</a> team went 3-0 so far this week with 3 games to go, my playoff odds script has me up to 25%</li>
<li>The replacement <a href="https://printingit3d.com/how-does-a-3d-printer-hotend-work/">hotend</a> for my <a href="https://www.sovol3d.com/products/sovol-zero-3d-printer">Sovol Zero</a> showed up. I installed it and got it printing again, this time with a <a href="https://www.obico.io/blog/temperature-tower-test-orcaslicer-comprehensive-guide/">temperature tower</a> test print</li>
</ul>

<h2 id="longer-threads">Longer Threads</h2>

<p>The 3D printing hobby has been a frustrating one for sure. My <a href="https://www.sovol3d.com/products/sovol-sv08-3d-printer">large printer</a>
is essentially a kit printer. Even though assembly is straightforward, their choices for a lot of the hardware is suboptimal when
compared to other printers in the <a href="https://www.vorondesign.com/voron2.4">same category</a>. I've already made some upgrades:</p>

<ul>
<li>replaced the <a href="https://cartographer3d.com">print bed probe</a>, which tells the printer how far the nozzle is from the printer bed</li>
<li>upgraded the hot-end to a <a href="https://store.micro-swiss.com/collections/sovol-sv08/products/microswiss-flowtech-hotend-for-sovol-sv08">FlowTech</a> one that leaks way less and can handle a higher flow rate of filament for faster printing</li>
<li>assembled an upgrade for the <a href="https://www.funssorlab.com/products/sovol-sv08-3d-printer-upgrade-hotbed-complete-kit-with-3d-printed-parts-design-by-nadircn3d-10mm-riser-heated-bed-upgrade-kit-120-240v-silicone-heater-01mm-flat-aluminum-bed">heated bed</a> but having to do some wiring work on it makes me nervous</li>
</ul>

<p>Part of me thinks I should've went with something a little more beginner-friendly, but I really wouldn't be learning much. The options
for upgrading and modifying this printer appears endless. It is a very interesting intersection of hardware and software, as these 
things are essentially computers that know how to take instructions done with an <a href="https://all3dp.com/2/3d-printer-g-code-commands-list-tutorial/">industry standard</a> into commands
for hardware to melt plastic filament and deposit it via a tiny nozzle.</p>

<p>Current mood: 3/5</p>
]]></content>
        </entry>
            <entry>
                    <author>
                <name><![CDATA[Chris Hartjes]]></name>                            </author>
                    <title type="html"><![CDATA[Weeknotes -- August 10, 2025]]></title>
            <link href="https://grumpy-learning.com/blog/2025/08/10/weekenotes/"/>
            <updated>2025-08-10T00:00:00+00:00</updated>
            <id>https://grumpy-learning.com/blog/2025/08/10/weekenotes/</id>
            <content type="html"><![CDATA[<p>Back on my bullshit again</p>

<h2 id="what-i-did">What I Did</h2>

<ul>
<li>Trying to figure out a good audit logging scheme for ZiffDavis work, want to do event sourcing but I think it is not a fit</li>
<li>my <a href="https://www.ibl.org">pretend baseball</a> team went 2-4, 4 back of a wild card spot and needing to pass 3 teams</li>
<li>my board game weekend was a lot of fun, played <a href="https://boardgamegeek.com/boardgame/422850/bat-flip-dynasty">Bat Flip Dynasty</a> and <a href="https://boardgamegeek.com/boardgame/422850/bat-flip-dynasty">Cosmic Encounter</a></li>
<li>still waiting for parts to show up to get my two broken 3d printers working</li>
</ul>

<h2 id="longer-threads">Longer Threads</h2>

<p>The current merger at the day job has been very unfulfilling. Lack of direction,
developer-related metrics that don't make any sense, and a personal frustration
that some of the solutions I've wanted to implement are now feeling like
pounding a square peg into a round hole.</p>

<p>Current mood: 2/5</p>
]]></content>
        </entry>
    </feed>