Chris Padilla/Blog
My passion project! Posts spanning music, art, software, books, and more. Equal parts journal, sketchbook, mixtape, dev diary, and commonplace book.
delay
is the time between frames. If you only have a two frame image, 100 will be a 1 second difference between the two.loop
set loop to 0 for infinite loops.dispose
setting this to previous will remove previous frames. Otherwise, you may get a smeared effect.
The Haps - May 2025
Boulder, Colorado
My fiancée Miranda has accepted an associate's role in Boulder, and we're moving on out there!! It's my first time living outside of Texas ever! I'm thrilled for the new adventure. I can't wait to wake up to mountains every day.
Software
Still doing it, still working at AptAmigo, still loving it.
AI is a thing. I've appreciated having it as a resource. Meanwhile, like wine, I'm trying to be mindful not to overdo it.
Still dabbling in side projects in my free time. At this moment, I'm spending time with React Native. Mobile development has been fun to explore! Currently working on a toy app, soon to be revealed.
You can keep up with my tech articles through the tech tag on my blog. You can also find me on LinkedIn.
Music

Still jumping between playing guitar, piano, and writing my own music. I simply love how they talk to each other.
These days, I'm zero'd in on jazz transcriptions on piano and guitar. The harmony is so rich, I don't mind all that much practicing slowly. Even just two chords at a time.
As far as writing goes, I've been really nostalgic for tech-related music, and how technology can intersect with music. Amethyst linked above is a great example. Liquid Drum and Bass paired with early CG visuals are very evocative in my mind.
You can browse my mini albums here. You can keep up with my guitar and piano playing through the music tag on my blog. I'm also sharing recordings on Instagram.
Art
For the past couple of years, I've been pursuing a long-time dream of making art. This last year I focused on color and digital art. It's been a blast, and I'm amazed at how the horizon spans infinitely off in the distance. There's so much to explore here!
I've since dabbled some with Blender. CG is a wicked fun medium! Though I feel myself still fascinated by 2D styles.
We'll see where I go from here. Now that I've drilled some fundamentals, I'm trying to keep things open. Leading with curiosity here!
You can see what I've made so far through the Art tag on my blog. I'm also sharing drawings on Instagram.
Blogging
I do it when I can! All of the above makes it here, of course, though writing is a medium unto itself. I continually enjoy having a stage to openly reflect and share on. It keeps me honest. I like to think, perhaps, it's helpful to the stray lurker here and there.
In this climate, I can't help but think a fully-made-by-a-human-website is something worth cultivating. A flower poking out between the cracks of a sidewalk in a concrete jungle.
Thanks for stopping by!
👋
Two Chords
We move pretty quick at work. With code completion and fine-tuned IDE autocompletion, it's easy to really skate through writing software. I love it, it's a thrill to move so rapidly and to be firing on all cylinders.
At the end of the day, I need something to balance it out. A reflex-based video game is not much of a respite.
It's part of why I still play instruments. There's a great deal of repetition involved. Not only that, but it often takes zooming into fine details and spending time dialed in. A nice counter to the day after GitHub Copilot is encouraging me to let it handle the details.
Recently, I started learning a new tune on guitar. After smoothing out the easier sections, I dialed into two chords. G sus 2 and A sus 4. Back and forth, adjusting my hand position, listening to see if all strings rang out, coordinating my strumming. Back and forth. It's painful at first, shifting down to a lower gear. Eventually, though, it's soothing. Even at a fraction of the speed, the sound of these chords together is dazzling.
I wrapped up my practice session. My ears were now awake. A bird sang as it flew by the window. G sharp to A sharp, down to F sharp.
But Beautiful
Ness
Thinking about EarthBound. 👽
Software Without Scale
There's a self help type question meant to inspire action and catalyze motivation:
"What would you do if you knew you could not fail?"
While well-meaning, there's some baggage that comes with that question depending on the context. If we're talking about business ventures: What it's really asking is "what would you do if you were guaranteed something in return?" Often times, with an expectation of financial or social capital.
Perhaps I'm splitting hairs, but success and failure in my mind usually connotate an external win condition.
I prefer the inverse of that question:
"What would you do if you knew you would fail?"
In other words: what's worth doing regardless of the outcome?
I've been waiting to tell this story:
A while ago, I had a run in with someone who previously worked in The Music Industry. We were chatting and I mentioned I was writing my own music as a hobby.
They gave it a listen. They then promptly told me I was heading in the wrong direction. The type of music I made simply was not very popular. Apparently, it was going to require their expertise to "keep it sellable."
I was flabbergasted by how off the mark they were. Not only was I not asking for advice, but I like to think that it's obvious that what I'm writing is pretty personal. I tried to clarify this but was still given more of the sales pitch.
I'll give them some grace in hindsight. I'm sure when you're "In The Biz", you get asked by hoards of musicians for feedback on "Breaking In". I imagine this whole interaction was a knee-jerk response, in a way.
Still. It's a sad worldview, weighing music solely on a scale that measures the value against trends in the market. An assumption that the point of writing music was to receive something in return: fame, fortune, a contract, exposure. I'm all for musicians getting paid well to do their craft, but there's a whole spectrum of reasons outside of that for entangling with sound.
I had a bucket of cold water poured over me while reading the other day.
Robin Sloan in 2020 developed BoopSnoop: an app targeted at a user base of 4 people. The gist is that Robin wanted to replicate the functionality of the Snapchat-like app Tapstack for keeping in touch with his family. He's described the whole thing as similar to making a home cooked meal.
The exhortation “learn to code” has its foundations in market value. “Learn to code” is suggested as a way up, a way out. “Learn to code” offers economic leverage, professional transformation. “Learn to code” goes on your resume...
The list of reasons to “learn to cook” overflows, and only a handful have anything to do with the marketplace. Cooking reaches beyond buying and selling to touch nearly all of human experience. It connects to domesticity and curiosity; to history and culture; to care and love...
When you liberate programming from the requirement to be professional and scalable, it becomes a different activity altogether, just as cooking at home is really nothing like cooking in a commercial kitchen. I can report to you: not only is this different activity rewarding in almost exactly the same way that cooking for someone you love is rewarding, there’s another feeling, too, specific to this realm.
On app feel:
The app I'm posting to can shape the message. The caption box for Instagram feels different from my email client which feels different from my blog post editor.
Reading on those apps have a feel to them as well. The warmth of an app is directly related to the lack of noise and the smallness of scale in it's contents.
I lurk on Substack. Many folks talk about how nice it feels compared to Twitter and Instagram since it (at least for a time) was a smaller, more targeted community. We're likely already well beyond that point.
My personal favorite is Patreon. Patreon is not by any stretch of the imagination a small and intimate community. However, unlike instagram or twitter, I only follow less than 10 accounts, and they are accounts I'm highly invested in.
This is thanks to the barrier of entry: it requires paying the monthly subscription fee for patronage. The financial commitment both ensures that I highly value those accounts, and it's a mechanism for reigning in an otherwise unwieldy amount of accounts that I'm only partially interested in. It ends up feeling very cozy and I'm genuinely excited to get a notification from Patreon.
Derek Sivers talks about having a private email account that only close friends and family have access to. This yields a similar effect of warmth.
Some people will say that Discord has a similar feel. I suppose it can, but most of the channels I'm in are overpopulated and too over-stimulating for that to feel true for me.
Finding a digital home in this sense used to be easier. Even MySpace and Facebook friends were largely just your circle of IRL friends. Before that, forums and online groups were small due to the limited number of people using the internet. Largely, scale is the culprit.
Even when scaled down, the thing that keeps all apps from feeling truly comfortable is measured performance. Public access to number of likes, subs, listens, comments, etc. communicates clearly that the purpose of these platforms is scaling engagement. A tone that is ever present, even if you try to ignore the numbers.
A personal blog can have all of that. But, importantly, it's your choice to turn it on or off. The medium is the message, and you can shape your medium to reflect a priority that goes beyond the assumption that value and scale are equivalent.
Dan Blank writes often about not taking a handful of readers for granted. (His piece Would you write for just one reader? encapsulates the case of doing just that.) Kyle Webster advocates for appreciating those that are always supportive of your work: Friends, family, partners.
The fact that scale is a seductive possibility online dilutes the significance of having your work connect with an audience in the single digits.
I'll never forget my first professional software accomplishment. The company was smaller at the time. We had a local mixer where I got to shake hands with the users of a new feature that I developed. "It's amazing! It makes my job so much easier!!"
That experience will forever be hard to top, no matter how the scope of my work expands.
Following the links in Robin's post will find you reading Clay Shirky's observations around "Situated Software": A term he's coined after observing NYU ITP student colaborative projects. Robin highlights a portion of this quote, though it's great in context:
Situated software isn't a technological strategy so much as an attitude about closeness of fit between software and its group of users, and a refusal to embrace scale, generality or completeness as unqualified virtues. Seen in this light, the obsession with personalization of Web School ("scalable") software is an apology for the obvious truth -- most web applications are impersonal by design, as they are built for a generic user. Allowing the user to customize the interface of a Web site might make it more useful, but it doesn't make it any more personal than the ATM putting your name on the screen while it spits out your money.
Situated software, by contrast, doesn't need to be personalized -- it is personal from its inception.
The whole piece is a fascinating read. Multiple case studies look at leaning on what happens when software is developed without generalization, but instead utilizes smaller groups and social values as its leverage.
The greatest takeaway is how an app developed for a small community becomes more enticing because it's so form-fitting. There's still a need for enterprise solutions in the same way there's still a need for mass-produced furniture and tools. But there's a unique value to the targeted apps, dare I say, labors of love in some cases.
I confess: A while ago I was deeply entrenched in a mindset that my side projects had to contribute something to my resume. I essentially scanned requirements on job postings across my LinkedIn and setup a curriculum that I would gradually work through.
I'm not going to argue against this. As a professional, this is a Smart Thing To Do. Part of the gig is keeping up with modern tooling and best practices. It's not unique to engineers, either. Teachers, medical professionals, and accountants all need to receive continuing education credits to keep their licenses. And you know what — I like doing it!
However, all that said, career can't be the only driver in side projects.
In the same way that the Music Industry pro made an assumption about why we make music, I had an assumption about why I was writing software.
For some people, there's no problem here. The thrill of software to them is it's intersection with commerce. For others, they prefer a separation between their personal and professional lives.
However, we miss out on a buffet of opportunity when we're looking to get something out of every line of code we write.
Really smart people intertwine the two. They build a fun project with some sort of marketable tooling.
There's a difference though between building a personal project that scratches an itch — an art project, a game, a custom messaging app — and building a todo app or a faux employee management app.
What does the alternative look like? Here are a few examples that I like:
Indie Games. For some, maybe part of the allure is the chance to go big a la Undertale or Stardew Valley. However, for others, there is plenty of value in the act of making something in a medium they grew up loving. (I've fallen into the latter bucket with AC: New Murder.)
Wes Bos regularly makes neat doodads with JavaScript. This is in part to promote JS related courses, but clearly the guy is having fun with what he builds.
While on the subject of robots: Robot fighting leagues are a wild example. I don't personally have experience with them, but I do admittedly love that a community exists around them. A mix of engineering, sport, and the child-like instinct of stacking the blocks only to topple them down again.
Open Source Software, by definition, is the separation of software and commerce. Scale is still a factor, but profit is not a requirement. The examples are numerous. My favorites are Blender, Krita, and Kdenlive.
haikU by Nanette Wylde from 2001 generates a poem by combining three lines from different haikus at random for interesting juxtapositions.
For examples that target small groups specifically, dive into Clay Shirky's "Situated Software" mentioned earlier.
There's a whole spectrum of reasons to develop software. As many as there are for any art form: expression, advocacy, the experience alone, an opportunity for infinite learning, the chance to give to people you care about, to solve your own problems, to bring order to a small part of the world... Take your pick on any given day!
There's certainly no one answer. It's more important to keep in mind a few of the questions: "What would I do if I wasn't worried about success?" "What would I make if I didn't need it to scale?"
Time is limited. Life is short. There are only so many hours in the day. I hope that you have the opportunity to find projects where you are truly playing in your text editor. Where you are taking hard-earned skills from professional-grade work to find another dimension of personal fulfillment in your craft.
Roger Miller — Whistle Stop
Watched Disney's Robin Hood the other day. I was sold on revisiting it after Breadsword's fascinating analysis of the movie. So much charm oozing from the film!
Listen at 2x speed for the Hamster Dance!
Dark Forest
Converting Image Sequences to Gifs
Writing to scratch my own itch: I know I'll forget how to do this in the future if I don't write this down. 😅 Why not make it public while I'm at it!
Programs such as Krita and Blender spit out image sequences as part of their animation process. If you want to target the gif file format, it gets tricky. Blender does not support gif output. And Krita's gif rendering, based on ffmpeg, will not support transparency data when outputting to gif.
The way to handle this is to spit out your image sequence, then use the CLI tool ImageMagick. Here's the prompt that got me to the finish line:
magick -delay 100 -loop 0 -dispose previous *.png MyCoolAnimation.gif
A breakdown of options:
Violà!
Animated Gifs on Android with Expo and React Native
Gifs work great out of the box in React Native using expo... except! When building to android.
On Android natively, this is accomplishes with Fresco. However, to use this package in Expo with React Native, we have to do a bit more work.
Cedric van Putten has thankfully already done the heavy lifting. The meaningful config file setup is demonstrated in this PR.
I'll See You In My Dreams
✩₊˚.⋆☾⋆⁺₊✧
Bork
Metal Mario & Textures
I have an annual ritual of playing through Super Mario 64. I'm super familiar with the game proper.
A delightful new discovery has been the original CGI renders developed to promote the game. This one takes the cake for me.
Another fun crate that I've been digging in is Render96's texture libraries. (The Bakku no Oni collection is particularly fun.)
They specifically archive texture collections that were used for games like Mario 64. Now knowing how the sausage is made, looking through these really gets the imagination going. In both directions: Trying to see if I recognize a pattern, or imagining what type of model a texture could be applied to.
I'm Old Fashioned
This years fancies are passing fancies
But sighing sighs, holding hands
These my heart understands
Mystery in the Water
The Garden and The Kitchen
It's helpful to think of projects in a couple of ways: one organic, one structured.
A grapevine doesn't bear its fruit right away. The garden is a messy place where plants can come and go. Some bloom before others. Make a dish with what's on hand.
The Kitchen, however, is where those fruits need to be pulled together to make a dish. After seeing what has grown, a meal can be decided on, additional ingredients picked up from the grocer, and so on.
You see what I'm trying to say here?
It's good in your practice to have a garden. To let the organic nature flow through what you're doing. Let curiosity lead, and allow yourself failures and dead ends. Don't feel too tied to any project.
Then, take a set time to give shape to your work. See what's gained traction and what's ready to be harvested. From there, you can start dicing tomatoes, peeling carrots, and boiling potatoes. There's a goal and a structure here. Though, it's all the more delishish because the dish is cooked with fresh, homegrown ingredients.
The other approach is to pick a recipe, go to the store, and buy the necessary ingredients. Sometimes, that's what you have to do. It's purely goal-oriented, without the spontaneity of what's in season.
So pull from the garden. See what ripens next for your kitchen.