It was a full-stack project that I wasn't familiar with any of the tools being used. The authentication was fucked and I was thrown into the deep end to try to get a user working so I could look over the product and figure out what to do next.
Claude was told to add a user to the database for me because the front-end wasn't hooked up. Authentication would only work once because of how Claude was adding the user to the database. I guess the salt only worked once which doesn't make sense to me, but whatever.
What I have done recently has been better, but slower: I've used Grok (part of the Artist formerly known as Twitter) in a browser to help me work on a C++ app written against the Qt framework.
Now, when I was a teenager and still in high screwl, I bought a copy of Sam's Teach Yourself C in 21 Days. Later, I picked up a copy of Sam's Teach Yourself C++ in 21 days.
Pointers scared me for some reason and I was always afraid to work with files; I think the latter was due to how you have to detect when you're at the end of a file which could VERY easily lead to an off-by-one error.
As a language, C++ didn't progress for a long time.
I started my collegiate career at a school that used C++ to teach basic programming1, Intro to OOP and Data Structures, with the next course in the sequence a Java course that compared Java and C++; that course made Java look easy by comparison.
I didn't use C++ after I dropped out of school. Interestingly enough, C++ was used again when I returned to school. This was amusing because the school I graduated from was a so-called community school, but they only offered 300 and 400 level courses. But you had to go through their sequence which was Introduction to Programming, Intro to OOP and Data Structures, all of which was taught in/with C++.
I started working in industry before I went back to school. That first job was an Automated Testing role working in Java.
Starting my programming career as an Automated Tester pigeonholed me. Working on Packet Sender was the second time I worked as a Developer; the first time was as an iOS Developer on a defunct parking lot app. On that project, I wound up refactoring code and did more testing than I did developing.
So when Dan Nagle, creator and maintainer of Packet Sender said he had some contract work/private bounties he could give me working on Packet Sender, I didn't know if I'd be able to rise to the challenge. Packet Sender was written in a more modern C++ than I had learned/taught myself. And PacketSender is written against the Qt framework. Oh, and it cross-compiles for Debian, Ubuntu (Snapcraft), macOS, Windows and operates as both a GUI and a console app.
One of the first things we did was get the SnapCraft build working again; it had been broken for two years when I was assigned the task. There were two ancillary bonuses that came out of that work: the executable size went from 165 MB on disk to just under 6 MB on disk(!!!) and we got multi-architecture builds2 for very little effort.
That was my baptism by fire and the topic of the next article.
From there, we'll talk about getting the iOS version to build on Xcode Cloud, bundle ids and special permission entitlements. We'll then come back to the desktop app and talk about dynamically transitioning between light and dark mode when the OS changes from one mode to the other.
Then we'll spend a few posts looking at a crashing bug that was caused by an architecture problem and how I came up with a new architecture to solve the problem, where I will walk you through all the major decisions I made along the way.
Notice that I didn't say Intro to programming. Interestingly enough, there was an Intro to Programming in C and an Intro to Programming in Java. I took the C course my first semester and the Java course my second semester. The first core course that counted towards the major was Introduction in OOP in C++. ↩
both an x86_64 build and an ARM build ↩