Now Loading ...
-
The End of March, Looking Forward to April
In my last post, I talked about maybe trying out tutorial video production—and honestly, I’m having a nice time with it. Like anything new, though, there have been plenty of challenges.
What’s Been Happening
It’s the end of March, and while I didn’t land that sales job, I did pick up a temporary gig canvassing for a local political activism group. I’m actually looking forward to it—it pays well, and I think it’ll be a good experience overall. Definitely going to need some sunscreen and decent clothes, though. Talking to strangers and getting signatures is the game plan, with a target of 60 signatures and a 65% validity rate. From what I hear, success just depends on being in the right places and talking to as many people as possible.
I joked with my barber recently about it—how I’ve definitely told signature collectors to “buzz off” before, and now I’m the one who might get told to buzz off. Karma, huh? We laughed about it, but it’s a good reminder to stay humble and give it my best.
Video Production Adventures
On top of canvassing, I’ve started spinning up the ol’ video production machine again. You’d think I’d be more seasoned by now, given how often I’ve kept my setup ready “just in case.” But getting back into it reminded me just how tricky the whole pipeline can be—especially on Linux.
I’m using OBS (pretty much the go-to for screen recording), but on Linux it didn’t come bundled with some of the plugins I needed. And while Kdenlive is available for editing, it’s not very GPU-friendly or particularly robust. DaVinci Resolve, on the other hand, is a powerhouse—but getting it to run on Linux is a whole journey on its own.
OBS, Plugins, and File Types
One lesson learned: Advanced Scene Switcher. It’s an OBS plugin that automatically switches scenes based on the window you’re focused on. Super useful when you’re bouncing between your code editor and browser mid-recording. I didn’t have it for my Quantum Russian Roulette GenServer video and without it, it made editing harder than it needed to be.
Installing it wasn’t super straightforward—there aren’t great Linux-specific guides for OBS plugins. But the short version: find your OBS plugins folder, drag the .so file in, and boom.
Now, let’s talk file types—because DaVinci Resolve is very particular. The file extension (like .mp4 or .mov) is just a container; the real concern is the codec. Resolve on Linux doesn’t play well with h264/h265. Instead, I had to use ffmpeg to re-encode files into something Resolve would accept—specifically, .mov files using MPEG-4 part 2 video and PCM 24-bit audio. A weird combo, but it worked.
Installing DaVinci Resolve on Linux
Okay. This one was wild.
First off, I’m on Ubuntu—which is oddly not officially supported by DaVinci Resolve. They support RedHat and RockyLinux instead. So right out of the gate, it was a challenge.
I’m also using an AMD GPU, and Resolve heavily favors Nvidia. I had to dig through logs and tinker with environment variables before I finally figured out the magic incantation:
RUSTICL_ENABLE=1 /opt/resolve/bin/resolve
That RUSTICL_ENABLE variable got Resolve to use a better OpenCL implementation (apparently it works better than AMD’s native one on Linux). No guide mentioned this—I just pieced it together through experimentation and log-surfing.
Once I did get it running, editing worked decently. But rendering? Ugh. It barely used the GPU. Rendering at 14 FPS on Linux vs. up to 240 FPS on Windows. My solution: do everything in Linux—record, edit, prep—then boot into Windows just to render. Frustrating, but it works.
Making the Video Happen
This was the hardest part. All the tech challenges led up to finally producing the GenServer video. And when I realized I was at risk of never finishing it, I told myself: “It’s better to submit any homework than none at all.”
Was it perfect? No. Could I have polished it more? Probably. But when a video’s an hour long, reviewing it gets time-consuming, and you can only speed it up so much before the speech becomes unintelligible.
There were also editing quirks—like DaVinci’s “ripple editing,” which sometimes caused weird duplicates or jump cuts. Plus, scripting and recording code explanations live? That’s hard. No wonder so many people split tutorials into parts. I eventually shifted to chunking: code a part, record a part, repeat.
That approach really helped. Having a working project already made it easier to stay on track during the tutorial. It also gave me more chances to internalize what I was teaching—kind of like learning through repetition. I now firmly believe: pause the recorder when you’re unsure, figure things out, then come back when you’re ready.
Looking Ahead to April
In April, my goals are pretty simple:
Make it through the canvassing gig—hopefully in one piece.
Keep iterating on this video production pipeline.
Build consistency and quality over time.
Big takeaways from March:
Setting up a Linux-to-Windows workflow is tricky, but doable.
Talking through code is a skill. The more I practice, the better I get at communicating what I’m doing.
Ship something. Done is better than perfect—especially early on.
And honestly? I’m excited. People have told me they see value in these tutorials, and I believe that too. I’d hate to let all this knowledge go to waste. Sure, I might explore other paths—but I need to share what I’ve learned before I move on.
Also, a highlight from today:
I had an interview with Kuali! It went really well, and there was a live coding section I actually felt confident in. I credit that to the practice I’ve gotten recording videos and explaining code aloud. Fingers crossed I move to the next round—but if not, I’m still in a good spot. I took the canvassing job because I wanted to, not because I had to.
I got to also mention, the interviewer had told me at the end not to give up. He can see that I am an engineer and maybe my skill might not be at a particular place, but it’s there. This fills me with determination and inspiration. Thank you interviewer! You know who you are if you’re reading this. Thank you!
If things don’t pan out, I’m open to exploring trades like HVAC. Sales sounded interesting, but I’m not sure it’s for me. Canvassing is a great, low-stakes way to test the waters.
The weather’s been beautiful—green grass, blue skies, warm sun. Feels like the start of something. And speaking of starts—I owe a big shoutout to Jason Brown from the UK. He helped me polish my resume, and I’m certain his advice helped land me the Kuali interview. Jason knows the Elixir hiring space cold. If this leads to a job, he’s getting a big thank-you.
I know I might be punching above my weight right now. But hey—no risk, no reward. You miss 100% of the shots you don’t take. Let’s see what April brings.
-
Looking Forward on 2025
I think there are things to hopeful about for 2025
Elixir and Gaming
Well, although I have entered into 2025 being unemployed again, there is definitely some stuff to be looking forward to.
For one thing, I’m kind of a free agent at the moment. I’ve been able to spend my time however I see fit which has been great. This has given me an opportunity to be able to spend some time studying up on game development more and to work on a presentation featuring a Poker application I had been working on in Elixir.
I spent all of this time learning Elixir and I’m coming out of my last job feeling like switching gears into something different. Hence, been looking into game development. Not to completely abandon Elixir, I’ve been looking into PhoenixSharp which looks like it would be interesting because it provides a client to Phoenix Channels from Unity.
This is interesting because I believe with it I could be able to send information about a Unity game to Elixir and possibly use Elixir as a game server. Where I could use it to hold information about players moving around a world and be able to distribute that information back to all of the other players. It’s worth a shot to see if it’s even feasible.
Community Building
I’ve recently began helping someone in the Elixir community with an ERP project they’re working on. This person is an amazing programmer and can program incredibly quickly. They’ve been writing since they were 11 or 12 and at that age for me, I was still copying and pasting HTML.
I don’t think I’m too much of a help to them. Although I want to be helpful and perhaps at times I’ve been helpful, I’ve not been as helpful as I wonder I could be. I’ve had a difficult time with this because I don’t mind talking with this person about their project, but I’m not sure about putting time writing code into it myself because I don’t understand it well. This guy would get through something much faster than myself.
But I think I can find other ways to be helpful.
Life and Living
I think there is much more to life than practing leetcode all day for a programming job. I think what I would like for myself is to get some kind of job where I’m happy, I’m making money consistently, I can be there for a couple of years, and pay off my student loan debt.
However, it’s possible that a job alone is not the answer and I’m going to need to find other ways of getting income for myself. I had watched a video today from a woman who had talked about how she had got herself 7 income streams but it took time for her to do this. She had done some of this by putting together videos for her YouTube channel talking about language learning and over time, developed an audience, put together courses, and makes some extra money. I wonder if I’d be capable of doing the same.
I’m the type of person who jumps around from idea to idea and don’t tend to stick to anything long so whatever I decide, I really need to just dedicate myself to it wholely. However, there is nothing that I find so enjoyable that I would want to devote myself wholely too it, which might be part of my problem.
Well, I’m going to take advantage of my ability to go into anything and see if I might do well in sales. I might do well in all kinds of other things and speccing into IT and computers, probably just was not the right decision for me. At this point, all I can do is share what I have learned and that’s one way I can keep what I learned from going to waste.
-
Looking Back on my 2024 Job
Just some thoughts on the start of this year and reviewing the last year.
The Year So Far
Well, today I am unemployed again. I’ve been unemployed again since January of 2025. This time I had done a lot better because I had managed to save a little bit of money and I had learned so much about being an engineer while at my last employer.
For the most part, I had always done development by myself. Which honestly, being the solo developer with no one reviewing your code really sucks. You’re unable to address bad habits that other more senior developers would notice quite quickly. While I was at my last job, I found myself submitting PRs that usually went through tons of revisions before it was finally accepted and merged. Each PR required tests and my contemporaries were great at helping define tests. Overall, I think learning testing and this kind of code review was good.
I had also learned some other things about running a system well. There was telemetry built into the application that would send back to another system metrics about how the system was behaving. We could define in a module a span function that would create a span log in the system with whatever metadata we could think to put into it. I appreciated this a ton when debugging something.
I think where I struggled most while working here was understanding fine details for a PR. It feels like writing English but people having different ways of constructing those same English sentences. For example, where I might have piped a few |> Map.get I had learned from my then boss that I could use a get_in and use much less pipes.
I remember one of my last tasks was to put together something that would delete the child records of a parent record in our database. I had implemented this using a transaction which would rollback the database deletions if something went wrong. However, my boss was disappointed that I had not implemented it where it would just delete things and the transaction was not necessary. The one thing that was important was that the parent object be deleted last.
I think it was carrying out small details like this where I had struggled. The boss had thought of one thing when he defined the tickets he wanted. Sometimes they were quite short, but that’s fine. I’d just ask for more detail later. But when getting the final implementation down, the way I had did things just never seemed to be quite right. I only had a few PRs where there were not much needed to be changed.
I’m not entirely sure if this is normal for the industry. I guess if it is, this makes for what I feel like is kind of a shitty industry. Inb4 people tell me to get good, I know.
As I see it though, it is hard to get good without a community and people around you who actually care about your growth. In my life, I’ve only known maybe 1 or 2 people who are actually concerned with seeing my growth and they aren’t family. At work, coworkers are okay with you growing as long as it’s within the same priorities of the business too. I think if you’re growing slow, you’ll get kicked to the curb.
So, since it’s hard to have a community as a lone developer on their own, I’ve kind of been thinking about putting some serious work into building out a YouTube channel. I’ve been doing all kinds of different things through my life and could teach people all kinds of different things. As it would turn out too, I had put together a video a while ago teaching how to use the GitHub API with Elixir. Since 2021, it’s gained 1000 views which is meager but certainly alright.
I’ll bet I could put together more videos teaching topics on Elixir. I’ll bet they could do decently well. I could probably spent plenty of time talking about other technology topics and have a good time of it. We’ll see. The point though is that I could build some community around videos where I share the value of my knowledge with others and maybe others would share the value of their knowledge with me.
Thoughts On The Elixir Job Market and Software Job Market
This job market sucks.
There are not many jobs in the market and I’ve started to conclude that in order for there to be more jobs in this space, someone must create jobs in the space. I think I should be someone who is making jobs for others to work but I have no capital and nothing that’s solving a problem for anyone.
Because of how bad this market is though, it has me thinking about taking up work in other languages. However, I’ve had one hell of a time interviewing with my next best language, JavaScript.
It feels like the software engineering industry and IT as a whole feels like the most “Dark Souls” of all of the job fields. You need to test into every job. In software engineering the tests are much more straightforward, although one might get some assignment with vague requirements; so a hiring team can reject it later, I’m sure. But even for IT jobs, I’ve been asked a bizzare question about, “I’m asking you to cut a pizza, how would you cut the pizza?” and what this interviewer was looking for was if I’d be wondering if the pizza is for a party or not.
It feels like the requirements for any particular job just aren’t clear and I have started to feel like this field just is not something for me. Despite all of the effort I’ve put in, I don’t think I’m great at recalling information with the accuracy required of passing interviews and surviving in the workplace.
With how the market place has a lack of junior positions and it doesn’t seem there are companies looking to hire people and help them learn and grow, I think I might just try something else. However it’s leaving me feeling like if I were an online game character, I’m maxing into being a super novice.
Lately I’ve been wondering if I’ll do okay with sales. I like talking to people and if I’m selling a product I really believe in, I think I can do well talking about it.
Well anyways, thanks for reading.
-
Some Thoughts on Building Bet Buddies Part 1
I’m definitely not doing anything ground breaking, but I wanted to talk a little about some of what I have learned from working on making a Texas Hold’em Poker application in Elixir.
GenServers, Registries, and DynamicSupervisors Are Lovely
Elixir is a very cool language because it’s grandpappy Erlang is cool. It’s cool because you have processes as a primitive within the language and these processes are decoupled from one another. So if one process encounters a bug and dies, it doesn’t take down the entire application with it. One common use of this in Elixir land is setting up a GenServer, registering it to a Registry, and having a DynamicSupervisor supervise the GenServer.
Starting with this kind of knowledge base and having seen other examples of how this can be used with a game, I figured I would start building out a Texas Hold’em poker application. As it would turn out too, there aren’t a lot of great multiplayer poker applications and I’m out here building probably the worst one. However, it’s mine and I love it.
So what does this GenServer do? Well, you can put the state of the poker game as the state of the GenServer. So this GenServer process is holding onto some data structure representing what’s going on in the game and I can show what this looks like.
defmodule Poker.GameState do
use Ecto.Schema
alias Poker.Card
alias Poker.Player
embedded_schema do
field :game_id, :string
field :game_started_at, :utc_datetime
field :password, :string
field :game_stage, :string
embeds_many :dealer_hand, Poker.Card
embeds_many :dealer_deck, Poker.Card
field :pot, :integer
field :side_pot, :integer
embeds_many :players, Poker.Player
field :turn_number, :integer
field :minimum_bet, :integer, default: 0
field :most_recent_max_bet, :integer, default: 0
field :big_blind, :integer, default: 800
field :small_blind, :integer, default: 400
end
...
end
Now this structure will likely change from what I’m showing in this article, but essentially this is what is being tracked for a poker game. What is particularly nice is that we can give unique poker games unique game ids. These get registered to the Registry and supervised by the DynamicSupervisor. In this way with Elixir, we can have a hypothetical millions of poker games going on each decoupled from each other so if there were some issue in one poker game, it wouldn’t affect anyone else’s poker games. It’s really the multiple poker games going on that’s nice though.
None of that would be possible without the fact that GenServers, Registries, and DynamicSupervisors exist and I find myself while building out the program and debugging just going and creating a new poker game and running through it. Make some changes, make a new game, validate changes–wash, rinse, repeat.
Now continuing with the GenServer, because it’s a server, we can send it messages like, “Hey man, in the ‘Eevee’ game, player 1 had just bet 400.”
Then the GenServer can handle the processing for making 400 leave player 1’s wallet, go into the pot, and move onto the next player. Really cool stuff!
Some of the Challenges
Now probably the biggest challenge that I found myself encountering while building out this thing was figuring out how to handle sidepots, and managing whose turn it is.
What has been great about living in 2024 is now we have YouTube and AI chatbots and I found myself watching YouTube videos on how to handle side-pots and asking chatbots how to handle side pots and between the two, one can begin to close knowledge gaps.
So just to share about these knowledge gaps, let’s talk about side-pots.
Side-pots are created when there are 3 or more players betting but one player has decided to all-in but they had less money than everyone else. Suppose that we have three players: Alice, Bob, and Charlie. Suppose that Alice bets 1000, Bob calls for 1000, and Charlie only has 50. Charlie, desperate to win or lose, bets it all. This means that for Alice and Bob, their 1000 bet will have 50s added to the main-pot and the overflow 950 will go into a side-pot. Although Alice, Bob, and Charlie are all competing for the main-pot, only Alice and Bob can win the side-pot. It took me a while to learn this.
Next, we have managing whose turn it is. Naively, I had thought, “Let me just assign a turn number to everyone. Alice is first, Bob is second, Charlie is third. Then when they make a move, we’ll increment between 0, 1, and 2 respectively.”
Although this manages to get a game where you can loop through players, poker is tricky. When someone folds, they aren’t part of the turns happening the rest of the hand. If someone bets, then everyone else has to call up to the same amount. If everyone called, then the first person to have moved has a chance to check. With all of this complexity to moving around players, I ended up learning to set up a “Player Queue” where this queue will remove players who had just made some kind of move, however if someone bets, then everyone gets added back into the queue except for the better unless someone bets even more.
So with the next updates of my poker app at this time, I’m working on implementing this stuff. Recently I had just started to write up getting the dealer to put cards on the table and needing to edit some of that front-end UI displaying that.
Thanks for reading!
-
Elixir and Astronomy Could Be Friends
Astropy exists for being able to utilize FITS files however I think it would be really cool to have it in Elixir.
FITS files and where to get them
I happen to be a bit of an astronomy nerd.
Now in my astronomical pursuits, I have been looking to be able to use Elixir for reading FITS files–a specific file standard endorsed by NASA and the International Astronomical Union.
These files are cool because they can contain information such as spectra about star systems, planets, galaxies, etc. So if one was curious as to the presence of hydrogen in the atmosphere of some planet, they could pull down the FITS data for that planet at a repository like the Mikulski Archive for Space Telescopes (MAST).
With your FITS file in hand, you’ll start having a fit trying to utilize it for anything. Now what one could do is get ahold of the Astropy library, some Jupyter Notebook, and some of your boy DESI ASTRO’s videos on YouTube.
But I’m built different. I really like Elixir. Unfortunately, there are no Elixir libraries for reading FITS files–so I decided to make one that doesn’t work yet. However, FITS files have a primer provided by NASA on how to at least get started doing something with them.
The big thing that I learned is that FITS files can be broken apart, byte by byte, into 80 byte chunks. When you do this, you’ll start to get information that almost looks like something useable.
Although this is great, I’ve recently heard from some of the good folks on the Elixir slack that you can simply invoke Python from Elixir and doing some more digging into that, it seems that one simply could do that.
So perhaps pursuing building some “AstroPy, but in Elixir so obviously it’ll be AstroEx” is probably something that doesn’t need to be done.
However, where I’m at with my little library–perhaps one day it could get there. Admittedly with how little progress I’ve made on though, perhaps someone would beat me to that.
-
Job Hunting Sucks
2024 has seen some horrible layoffs especially in the technology market and boy howdy it sucks. So here is a rant on my 2024 job hunt.
Rant on 2024’s Job Hunt
Well, it’s quite unfortunate but in December of 2023 I got laid off and received the lovely privilege of being promoted to possible future customer with my former employer.
Now why did this happen?
Well I’d definitely accept that there is probably some of my own personal responsibility involved however the company did admit it is a layoff, so they are admitting their own fault. Solar companies are incredibly sensitive to changing economics and in 2024, interest rates got hiked up more. For those who haven’t bought a solar panel system before, you’re likely taking out a loan to purchase it. These loans of course are going to have interest rates and of course, they’ve been raised an amount substantial enough that during 2023 the company had 40% less sales than they had expected.
Pretty unfortunate for everyone involved if we’re being honest. Now the main point of my writing is to rant about how the job market just sucks.
I have heard some word from friends that this is probably the worst job market since 2008–which although I wasn’t in the workforce at the time, I understand that it was a horrible time for everyone who was, especially those who were homeowners.
So why exactly has this job market sucked?
It’s been bad because there isn’t an abundance of hiring jobs. The technology industry in The United States had let go of a lot of technology workers which had significantly increased the amount of competition in the industry.
Now that just means that you have to get good and that I haven’t gotten a job yet clearly signals to me, “Skill Issue” however I’ve also been told that this is just a normal amount of time to be looking for a job.
Is there anything that’ll make things better? At this point, I really don’t think so. One will see that during the pandemic, a lot of companies had begun growing a ton. This all looked good on paper but it was all synthetic and fake. These companies were growing because they were accepting a ton of COVID relief money and using that money to grow. Once the money tap was shut off, these companies had to scale back operations significantly and that included letting go a lot of good people.
If you’re out there working on the job hunt, I’m sorry. I understand your struggle and I think we’re going to make it. However, we might have to take up jobs that we don’t want to be able to survive for an amount of time. Consider yourself lucky if you’re able to collect unemployment insurance. Luckier still if you don’t have a lot of bills to pay such as a mortgage or child care.
Everyone out there looking for jobs right now should continue grinding and bettering their skills in whatever category they’re in. Although I’ve been told that certifications are a waste of time, they’re probably worth considering to acquire in this time because it certainly helps one to stand out in the sea of competition–and the competition is fierce.
Don’t forget to also take care of your physical health. There is a real mind-body connection where if you’re taking care of your body by getting physical activity, taking omega3s and ashwagandha, then you might just make it. This has been my strategy for the last while and it seems to be quite helpful.
Good luck out there everyone. I wish you all the best. We’re going to make it.
Touch background to close