Chris Padilla/Blog


My passion project! Posts spanning music, art, software, books, and more. Equal parts journal, sketchbook, mixtape, dev diary, and commonplace book.


    Torso Skeleton Study

    🩻
    Simplified Torso Skeleton

    April & May have been all about simplifying the torso's skeleton.

    Part of Proko's Anatomy of the Human Body course. Big, thorough, and rich with material.


    Playing the Game Wrong

    Gif of mario sleeping alongside a piranha plant from SM64 😴

    The drop in the stomach returns — I sit down at the keyboard, pick up the guitar, or sit at the drawing board. Either way, it all feels the same — ugh.

    The resistance is coming from a long stretch of, well, stretching. After my move back to Texas, I was eager to continue learning new things across all the disciplines. This always starts out as really thrilling, but eventually a few symptoms arise after going strictly on that path in the practice for a while: blank page syndrome, procrastination, and frustration.

    Alas, still learning this one! Something that continually takes defining is how much new and how much familiar to keep in the routine.

    I'm not a great adherent to the 50% rule from drawabox. There's a reason it's hard. It's almost a comforting thing learning new material; the payoff is clearly defined. There's more courage required to goof around. Hoping to make this my written reminder to adhere more closely to keeping a balance!

    Maybe it's just my style. Having spent most of my life in school eaither as a student or a teacher, I'm pretty hard-wired to the rhythm of the academic calendar and the release that comes with summer break.

    Speaking of, a helpful connection: I played Super Mario 64 to death as a kid. I still do — I come back to cruise through 100% it somewhat annually. Part of what makes this game special is how open it is. You are in levels, and there are objectives, but you're given a lot of freedom in what order and how to accomplish them for the most part. Today, I can play it with clear targets. But when I was a kid, it was more about exploration.

    And what made it so engrossing for long stretches of time, and why I don't really remember burning out from it, is that I approached it the way that a kid would. I played the game wrong! I would take in the scenery. Sit and enjoy the music. Make up my own goofy games within the game. (e.g., climbing slides backwards.) When hitting a wall, I found other ways to lighten the load to keep playing.

    So I'm searching for ways to do this in my mediums. Playing familiar pieces. Drawing favorite subjects — flowers, people, and little ghosts. Simply enjoying the production of sound and line. Playing my own goofy games of "what if I improvised with only these three strings?"

    A lot of that requires doing things that don't end up on this site. It has to happen off stage. More on this another time.

    Shifting the goal has helped so far. The question isn't how I can hit a target, but how I can keep playing. That's what it's all about at the end of the day, anyway.


    Manuela Boy

    🏝️

    Trying out Slack Key! From Ozzie Kotani's Guitar Playing Hawaiian Style.


    Dvorak — New World Finale (2026)

    Taking another swing, eyes of the hands!


    Testing Chat Bots with Personas

    Conversational AI can be tricky to integrate with an application due to the variability of response and, as a result, how slippery it is to have generative responses in tandem with an adherence to tone and an array of desired responses. The continual tuning and refinement is an ongoing task!

    Even before launch, developing a conversational flow requires regular feedback across multiple scenarios is necessary in the same way that developing an application requires a suite of tests, from unit tests to integration and end-to-end tests.

    One solution is evals, which alows us to measure what we anticipate as being critical requirements. Even so, it still takes a humans reviewer to verify if we are getting the response we're looking for. And yet — how tedious is it to manually write out a conversation after every change to the prompt?

    Enter — Personas! Not by any means a spec or an official design, but in my own work I've seen the need to have a quick way to generate a simulated conversation.

    The aim here is somewhat different from evals, even multi-turns that will measure responses across multiple messages. Namely that the LLM is not the judge. When prototyping, I needed a way to review the output myself cheaply and refine from there.


    The gist is not too different from actually developing a conversational AI. You give it a persona: An aim in their conversation and predefined intentions for how to respond to follow up questions.

    Why an AI? For the variety of response and the ability to dynamically respond to shifts in how the actual conversational bot conversed. Though, there are cases for hardcoding responses as well, such as a when trying to make a forbidden request.

    In my use so far, these are largely throw-aways. So my prompts are not too detailed. Here's an example of one that is meant to go off the rails:

    "You are a grocery shop customer who just finished placing an online order for food delivery. You tend to over-share and go off-topic — mention your day, your dog, your commute. You did enjoy the application but you bury that in tangential details. Keep responses 2-3 sentences."

    Here's an example of the output, where the goal is to see if the conversational AI continues to try to bring the tangents back into focus:

    AI Chatbot: Hey, just wanted to check in — how did your grocery order go?

    Client: Hey! Just got everything unpacked, and it was quite a trip — my dog kept nosing into every bag looking for treats while I was putting things away. Anyway, I'd love to hear what your go-to order is or any tips you might have!

    AI Chatbot: Sounds like quite the adventure. I'm curious — did anything about the ordering experience stand out in a positive way?

    Client: Oh, definitely! The produce was so fresh it reminded me of that farmers market by the park where I walk my dog; the tomatoes actually smelled like tomatoes. But honestly, I was half-distracted keeping my little guy from stealing the baguette, so I might have missed some of the details — my mind was all over the place today!

    AI Chatbot: That's helpful context! Besides the produce, was there anything else about the order that caught your attention?

    Client: Yeah, I also noticed the substitutions were handled really quickly, which is a plus since I've been trying to cook more at home — though my dog gave me the side-eye when...


    The benefit of setting this up is that then, after any meaningful change, I could fire multiple personas to walk through many different conversational scenarios. I could tweak the response for one in particular, or I could review them all in search for patterns.

    Of course, this has limited use. For one, it risks creating your own moltbook where, if you're not careful, you're only measuring synthetic scenarios instead of what would actually transpire when a user interfaces with the app. The primary benefit is in initial development, iterating quickly so that the obvious errors are taken care of before bringing in outside testers.


    Welp!

    That lasted long!

    The aim of the next stretch of X time here is to reclaim looseness and learning! A good digital garden is not meant to be overly performative, and the clean break gave me some space to unteather myself from a mental model of rigidity and expectation.

    So, proceeding is a new contract for a new chapter:

    This isn't YouTube or Twitter, but a quiet assumption of deadlines and routines arose as I got going. (Largely self imposed, of course.) Given this is a personal website — I'm giving myself permission to let things surface when ready. It's time to loosen the deadlines.

    Part of that pull was wanting to share as much as possible. As I'm compacting a few practices, that meant that there was only the stage, but no practice room. So, again — sharing when ready, not out of compulsion. What surfaces here should only be a fraction of what I'm working on, so I can stay loose off-stage, as it were.


    For the best bits, I've surfaced two new pages for art and instrumental playing: Gallery and Studio. The aim is to let most of my blog posts be about progress primarily and allow for a looser approach to that side of things. This is a big relief for me. Sharing music and art was meant to be primarily about documenting my learning process. That got complicated once I got kind of good and had less room to share experimentation or glimpeses into what I'm actively learning!


    And what about tech blogging??

    It's a wild time to be working in tech, needless to say. Transparently, there's been so much change in how we work, it's been challenging to consider what's still worth writing about. I've been stuck! What to write if knowledge is cheaply available synthetically at the snap of your fingers?

    It's only as I'm writing this now that I'm realizing what many have already said outside of tech — humanity is a premium resource. As good as these models are at certain tasks, it still takes incredibly thorough review and careful wielding. Judgement and learning can't come from a source that, even at it's most sophisticated, is prone to hallucination and whose "reasoning" is statistical. I'm still clicking through to find the human perspective behind it.

    Besides, this is ultimately a personal site, not API docs. So same ethos as music and art, then — I'll share the learning process.


    Sharing online is a tricky tightrope. Especially when sharing the journey of learning! The stage is something I've written about multiple times here, and the benefits are phenomenal for personal practices of all shapes and sizes. I continue to appreciate those that are generous enough to keep their garage doors open online, so I'll pick back up doing the same!


    Chapter's End

    Blogs are bad at goodbyes and intermissions.

    Part of the loveliness is that there are no chapters like a book, no page count to adhere to. They can go on and on. But we're all folks who generally like closures and order.

    A week ago marked 5 years of this blog going live. Though the themes and practices around it have been in the works for 7 years since 2019. At the time, I was itching to explore new mediums, searching for a more authentic voice, and ready to start contributing my piece after years of taking influence from so many sources. So I began! I wrote music, picked up new instruments, went pro on software work, and was soon putting words on the internet.

    Through the process of working on this dot com stage, I had real fuel to continually find the answer to what it was I wanted to make and share. Largely, it's been a mailbox full of love letters: to musicians, developers, writers, and artists. You end up learning to see these things more closely when trying to imitate and remix. And so I've had many years to deconstruct the inner workings of all sorts of genres and media.

    In my mind, I was reaching for destinations. I have so many peers who adore traveling. I like to think this is my version of it. Going behind the scenes of these practices, getting a tactile understanding of what the process looks like. Overly romantic, maybe, but true all the same.

    The more broadly I traveled, though, the more I realized that the sensations: flow state, inspiration, study, craft. These weren't mutually exclusive to any individual practice. The constellation made it clear that the cliché is correct — what you end up searching for has been here all along.

    Not only that, but after 7 years of devoted work, it turns out I've reached where I was aiming to go. There's always more to learn, of course, and no one ever fully arrives. But I've gradually gone from "It would be great to paint something like this" to "Hey, I've painted something like this!"

    It's that duality of a rewarding sensation from reaching the top of a mountain, and then wondering, a bit nervously, "What next?"


    All this to say I'm at a chapter's end.

    I'll be considering myself on hiatus from this site. No current plan or intent one way or the other on returning. To be determined. I'll be taking the time to see what comes up next.

    Many of the ideas that made it here were born during a stretch of time when I wasn't working on a major body of creative output. Closing out the site for a while is not saying no to meaningful work, but saying yes to the silence that allows for more to come through.

    It's not seen as much on here, but I'm also more interested in the sketches, drawn or otherwise. Any online bucket builds up expectation. There's the quiet thought, even if it's self-imposed, to rip through another finished piece. The pause is to help start fresh and see what blooms naturally.

    A big motivator of all creative practices, including the blog, has been a desire to capture life in a way that the beauty grabs even a fraction of the inspiration. And so what if the most creative work is in how we choose to live our days and be with them? As much as I adore all of these media: written, aural, and visual, they all pale in comparison to the lived experience. Perhaps it’s time to stop assuming that these feelings are only really had on the other side of a detailed rendering, a sweet phrasing of a melody, or finding the perfect word. It’s already here, and it always has been.

    I’m a big believer in an idea that has developed from all of this work. That life is richer when reflected on. That won’t be going away from my routine; there’s still plenty of room for sketchbooks, journals, and other private means of doing all that. The pause is here online.

    So who knows. Maybe a hiatus. Maybe a week, maybe a year. Maybe the end of the book on this particular project. It’s not so much about giving up on a site, an app, a painting, a project. So long as we’re still guided by curiosity, enthusiasm, and whatever is authentic. It doesn’t entirely matter what the canvas is, or how large it is, or how many rooms you can fill with paintings.

    Well, we'll see. For now — Au revoir!


    AI Feature Application Layer

    A curious thing about AI apps, given that there is minimal UI, and that largely the UI of an AI app is through text, is that from a user standpoint in this new world, it’s not clear what the business app is, and what the AI technology is. At the very least, it’s easy to conflate the two if you’re unfamiliar. The LLM, vendor, be it OpenAI, Anthropic, Gemini. And the logic that sits on top that makes it work to accomplish whatever business-specific goal needs accomplishing.

    An interesting illustration for this would be looking at the difference between LangGraph and LangChain’s ReAct Agent.

    The LangChain Reacts Agent is a quick wiring up of a few different things. A system, prompt, which guides the vendor’s LLM on what is trying to be accomplished. A series of tools, typically API interactions that the LLM can invoke if needed. And then the user prompt, of course. The actual input provided by your user.

    In LangGraph, unless you use this package, you don’t have access to this. What you’re doing instead is creating a series of nodes, edges, and logic, for how to incorporate all these pieces.

    As an example, say I want to know how the Houston Astros are doing during their game today. I ask my Astros AI app if there’s a game going on, and what the current score is.

    Here’s what needs to happen. This is all hypothetical, so we’ll walk through a few scenarios of how this could move around. My message is received by the application, let’s say the application is built with LangGraph. We may want to decipher the intent of the message, one way or another. Say that this AI is responsible for a number of things, sports scores for the Astros only being one of them. We may have our first node triaging what the question is that’s being asked. Once we ascertain that it’s about the score for the Astros, we can pass this along to the appropriate node for this. It’s best that we give each node individual responsibilities, in the same way that we have classes and components in our code bases individual responsibilities. Worth noting that we can have parent and child relationships here as well. Nodes can contain graphs within them.

    It gets tricky from here to have an example, because much of how we structure this is partly dependent on the supporting API. Let’s assume that I have an endpoint where I can simply pass in a sports team and a date of a game — getting a score back. Once we’ve brought these details our score node, I can then call the appropriate API. This is either accomplished manually there, by extracting the team at a previous point, and then passing it to my API, or it is provided as a tool when we insert a React agent.

    Once I get the score back, then I want to generate a human-readable message from the JSON. Perhaps there’s a separate node specifically for this once we have all the pertinent details. We navigate to that node, and another LLM is responsible for receiving a prompt specifically for turning the information we’ve gathered into a human-readable message. This could be a single-shot or a multi-shot interaction. Perhaps we generate an initial message as a draft, and then we clean it up with any communication policies. It’s at this point that we can then send the information off.

    It gets more sophisticated from here. Say that the user includes multiple requests within one message. There’s been a need for an iterative approach to this. Perhaps a paragraph is responsible for creating a to-do list based on the user’s input, and then cycling through indications of notes and subgraphs to check off each item on the list. And then a summarizing message can be formed and cleaned up at the end.

    A great deal of piping! But the development work doesn’t stop there. Given that these applications are famously non-deterministic, the amount of testing that goes into building these is high. There’s automated testing that can be done: unit, integration, graph traversal. For LLM-generated responses, evals will need to be put into place, and even so, these need manual review and iteration to match tone and catch hallucination.

    In the same swoop that AI assistant coding tools are becoming really sophisticated, so is the bar for the AI applications that we’re developing. The point of all this being that, even in what seems like simple requests, there’s still a heavy amount of engineering and iteration to get to these places. Some would argue that it turns out that the LLM is not actually the most interesting part. It’s the many ways that we can develop an application on top of these. Much like any typical backend feature, a great deal of magic to the user, an interesting puzzle to all the teams that are bringing these new features to life.


    Vivi Sketch

    Sketch of Vivi from FFIX on the piano keyboard, with a duck trinket nearby.

    Started playing a bit of FFIX the other day. Vivi is too sweet.


    I Ride an Old Paint

    🐴


    Liszt – Liebestraum No 3 (arranged) Revisited

    Revisiting this one. So romantic.


    Constructing Everyday Objects

    Sheets strewn about with construction studies of an amp and many other everyday objects.
    Studies!

    Construction studies while working through Draw A Box. I remember these looking pretty intimidating with all of the different additional lines to measure out the form. Not as bad once you get into the groove. Nice to have some pattern matching, feels similar to programming, even! 🤘


    David Whyte — Rainforest

    From The Heart Aroused:

    The abiding image of a diverse and rich ecology is the Amazon rainforest. As human beings, we look at the rainforest and see an ecology made up of thousands of species that fit together exquisitely. The image is so satisfying to us, because when we see the forest, and all the disparate forms, odors, and cries that make it up, we intuit a life where all our own strange and eccentrically exotic parts can fit too. A place where the cross-grain of experience makes not a disconnect, but a mysterious, embracing pattern. A balanced, intricate ecology, in effect, asks us to stop choosing between parts of ourselves, according to what we think belongs and what does not. A mature ecology needs its microscopic leaf molds as much as its panthers. It does not make a choice between them, saying, “I’ll take three dozen of those gorgeous Panthers, and cancel the tacky leaf molds.” If it did, the rainforest would soon, as the metaphor goes, be out of business. No leaf molds, no compost. No compost, no life.


    Ursula's Painting

    From The Art of Kiki's Delivery Service, Hayao Miyazaki on Ursula's painting:

    “It doesn’t matter what Ursula paints as long as it’s spirited. Given how her painting is thematically related to the film, the actual paintings had to be powerful. The paintings convey the life of a secluded female artist more than they do some message. I was looking forward to drawing them myself once I was done with the storyboards [laughs]. When I couldn’t afford to do so, I recalled the print, ‘Ship Flying Over the Rainbow.’ The print was made by a teacher at a school for the disabled, Hachinohe City Minato Special Junior High School. We obtained permission from the instructor and added a face to the original illustration. Replacing the horse’s face with Kiki’s would have been inconceivable.”

    The original illustration wasn't colored, so credits in the film show:

    "Ship Flying Over The Rainbow"

    Painted by students of Hachinohe City Minato Special Junior High School Handicapped Children's Class

    Lovely.


    99% Perspiration

    Perspective grid on paper
    A very calming time drawing this perspective grid study.

    From Walt Stanchfield's Gesture Drawing for Animation, a favorite around here:

    It all starts with preparation, which is the “open sesame” of all genius. Even the geniuses admit it’s 99% hard work and 1% genius.

    In context, this is talking about capturing "The Essence" of an image. For the layman to a craft, it's what they would imagine is most of the work going into the piece. The emotion, the story, the idea.

    Starting to learn drawing a few years ago, I thought ideas would be the hard part. Turned out that I had ideas pouring out of my ears! Enough so that I couldn't keep up with them all.

    And so the idea is the easy part. Most of the time is spent in the trenches, working with craft.

    A gesture is accomplished through a complex array of skills working in tandem: composition, perspective, anatomy, construction, expression, draftsmanship, inking, shading, and value. And each of those are sophistications unto itself.

    This is, mostly, relieving. Craft can be improved, and craft is much more sustainable to work at over a long stretch of time. I find craft to be grounding; it's the thing that aligns you with the beauty of it all, and it's the way we become the image, the piece, and so on.

    I write this as I'm slowing the pace of output on this ol' dot com so I can spend more time learning and honing craft. I'm trading finished works for etude books and study material. It's a quiet learning sabbatical, with occasional transmissions from the underground where the roots are being laid. With time, some nice fruit should bloom from it. But until then, on with craft.