Did you know that Comic Sans is heavily based on the lettering of dark, gritty comics like Watchmen and The Dark Knight Returns.
Given it’s current reputation, I never would have guessed Comic Sans took inspiration back to two of the darkest and most influential comics of the 1980s, so I had to see it for myself.
Comic Sans version
original version
I started by replacing the lettering in a classic Batman panel with Comic Sans. Then I did the same thing with a few panels from Watchmen.
Comic Sans’d Watchmen
Original Watchmen
I was really impressed by how well Comic Sans worked in these comics, especially in that Watchmen panel. I mean… holy cow! Comic Sans looks nearly identical to Dave Gibbon’s original lettering.
I originally Comic Sans-ified these comics as a joke, but the results aren’t as weird as I had expected. Thinking about it more, I think it’s because we usually think of Comic Sans as mixed-case usage, but comics are usually lettered in all uppercase. Case in point:
Comic Sans’d with mixed case usage
The lesson here is that Comic Sans is surprisingly good for lettering comics, but only if you use it correctly (no lowercase!).
Also, Dave Gibbons deserve some heavy credit for his influence on Comic Sans font.
If you’re interested in learning more about Comic Sans, including why some people with dyslexia find it easier to read, check out this special episode of Very Special Episodes.
The post How The Watchmen Inspired Comic Sans appeared first on Doc Pop's Weblog.
I’ve had the melody to Ian McConnell’s “Bangladesh” floating in my head for weeks, so I decided to pull out my old Game Boy and record a chiptune version of the song:
You can download my chiptune versions (including a version closer to the original BPM) on Bandwagon. Huge thanks to Tanner4105 for mastering these.
And here’s Ian’s original version:
The post Bangladesh (chiptune cover) appeared first on Doc Pop's Weblog.
As much as I enjoy writing software, I generally won’t unless I have a particular problem to solve, even if it’s a manufactured and silly problem to solve. I’ve been itching to try out this newfangled way of working with AI development tooling, and I finally found a complex problem to try it out!
I write this post to capture my experience and reflections after building and shipping some real code. This post isn’t going to include any crazy revelations about AI development workflows – the internet is a firehose of AI-pilled one-upmanship already. But if nothing else, it’ll capture a moment in time that may be laughably different in 6-12 months.
My friend runs a small online school that trains laypeople on relevant religious topics to make them more effective in their jobs – think volunteers who teach Sunday School or teachers teaching at a Lutheran school for the first time. Like many schools of all sizes, he was using Canvas as a Learning Management System, and the massive outage ransomware attack gave him an opportunity, let’s say, to reevaluate his tech stack.
My first project was to host the open-source version of Canvas in our own AWS instance. There’s a repository, now a few years out of date, containing some simple docker-compose files to build and host the LMS. As much as I love being my own SRE, I have no interest in plodding through error logs in buildfiles, but with some copy-pasta in and out of the Claude web UI, I eventually got it working and upgraded to the latest version. Claude was scarily good at knowing what to try next. Where it really shone was in proposing some high-value monitoring for my new application and using the right incantations to set up the Cloudwatch metrics, alerts, and email subscriptions for those alerts. AWS is a very flexible service that allows one to do almost anything, but none of it comes easily. It’s been a while since I’d wrapped my head around the data model for AWS monitoring, and I certainly wasn’t comfortable with the syntax in the CLI for setting everything up. Claude crushed it, and when I had issues, we were able to debug them quickly.
My friend runs the administration of his school in spreadsheets. This includes setting up courses, and tracking contact information for instructors and students, whether the instructors had been paid, student registration and payment status, student cohorts, and grouping courses into programs. At the scale he was working with before, this was easy enough, but he got some more interest in his school, and you can see how this would get out of hand quickly. Larger schools use a Student Information System to track all this and sync it into their LMS.
After some iteration with Claude, my friend had generated an 8000-line single-page HTML file that largely expressed the feature set he was looking for using localStorage as a database. In itself, it’s wildly impressive that with Claude’s help an amateur who hasn’t developed software in decades could produce a functional proof of concept. My second project was to productionize this SIS, which gave me a chance to play around with Claude Code.
Breaking out the storage layer to use a server turned out to be relatively easy – the hard part was untangling the tech stack into something reasonably maintainable. Claude and I rearchitected the data layer away from an enormous blob that gets read/saved all at once, broke out the client-side JavaScript business logic into a decomposed TypeScript codebase, converted all the vanilla HTML components into React, restyled the whole thing for consistency, and then added ~500 unit and end-to-end tests to capture all the new behavior.
Holy goodness gracious, Claude did a fabulous job. Similar to learning the ins and outs of the AWS CLI, I have little interest in doing migrations to known-better frameworks or hunting down visual bugs on the web. It took some coaching to get Claude to create side-by-side setups of the original HTML app and the new frontend, programmatically take screenshots of each, compare them, and make changes based on the visual diffs on its own. But once I got it going, it got about 85% of the functionality and look/feel on its own. And now that everything is typed and well-tested, I feel confident in making iterative improvements and adding new features going forward. Bravo.
Claude Code is very powerful, but it still needs a lot of guidance in how to approach projects. After failed prior attempts at one-shot coding complex projects, I’ve learned to create a new git branch for a series of changes, ask Claude to generate plans for complex projects, and to use a shared task list with Claude, systematically guiding it through development, one task at a time. It was ~85% correct in building stuff, so I couldn’t just let it run on the task list, and when I tried to do a few tasks at once, Claude would sometimes go off on a crazy tangent trying to do something completely off the rails. I would have expected Claude to provide me more guidance on how best to make the most of its immense power.
I found that outlining my expectations for workflow and architectural guidance in a CLAUDE.md helped, but I don’t think that Claude would have done this on its own. For example, I had to instruct it to add tests after each change or tell me why it wouldn’t add tests for that change, and I needed to tell it to run tests and commit after each incremental feature. I’m surprised that it wouldn’t have done this on its own, and it has me worried about folks building without basic software engineering discipline (more on that below).
Especially for the major migrations to TypeScript and to React, Claude churned for a very long time refactoring and testing, refactoring and testing, etc. As a lowly Pro user with occasional usage credits, I found that it spent my tokens and exhausted my session limit quickly. When at my desk, this translated to a lot of sitting and waiting, nudging it along from time to time. But hooking my Claude Code session up to the mobile app was a gamechanger. I couldn’t do real development or poke-test the app, but I could easily guide it through a refactor. When my session ran out, I’d set an alarm and poke it from the mobile app once I had more tokens. Side note: I’m now very reacquainted with UTC time.
It wasn’t great to feel chained to my desk when I had tokens to burn, and I wasn’t thrilled to have yet another chat app on my phone, but it’s truly incredible to be able to guide Claude on the go.
Through my advising work, I’ve seen many companies that leverage AI for execution to great success, but those that are using it as a substitute for expertise end up creating tons of technical (and sometimes organizational) debt and are left struggling to dig themselves out of it. Execution without expertise is just debt on autopilot, and this was my experience on these projects, too.
Claude is fabulous at taking a scoped problem and executing on it quickly and with relatively high quality, and at times, it can go the extra step of proactively hardening, refactoring, or testing code. Truly unbelievable. However, I don’t think I would have gotten to a positive outcome without personally using my experience and expertise in software development to guide Claude.
The way my expertise manifested was in the approach to (re)building the app and in the vocabulary to discuss issues as they arose. I tried to get Claude to propose a way to restructure and productionize the code, but it ultimately took my strong direction to refactor the data model, to pull out a server layer, to extract client-side logic into TypeScript, and then to convert the frontend to React. When getting to visual parity, it couldn’t figure it out until I instructed it to use parallel servers and screenshots. And when things went wonky, my approach to debugging and fluency in engineering ultimately enabled us to get to root causes in a way that didn’t just stack up extra technical debt.
My primary takeaway from all of this is that we’re going to have SO MUCH MORE BAD SOFTWARE out there. Anyone can very quickly build an app that looks and feels correct, and for the right product and quality risk, this is incredible. But productionizing these apps and maintaining them, especially with more than one person, is a much harder problem that requires product development expertise, and I don’t see apps like this replacing all SaaS apps everywhere any time soon.
All that said, it’s really, really fun to build with these tools – they unlock an incredible level of execution and possibility for creativity. The future is now.
I’ll be selling art, comics, denim goods, and photo zines at @ape_sf (3386 18th St, San Francisco) this Sunday June 28th from noon till 6. I might even bring some old issues of Hamburger Eyes to sell too.
Also vending at this event are:
note: the featured image says June 21st, but the correct date is June 28th.
The post Selling comics and crafts at A*PE this Sunday. appeared first on Doc Pop's Weblog.
I recently met up with my old friend Mike Hales to try out a new drawing exercise I call “Character Telephone”. The goal is for each artist to spend ten minutes drawing a new character, then swapping their pages and redrawing each others character in their own unique style.
The timer isn’t super important, but I think it keeps the challenge moving nicely. I’m sure you could do a similar challenge with more artists by passing the pages around and encouraging each artist to only reference the most recent version of the character. That way the character sort of evolves as it gets passed around.
The post Character Telephone, a Drawing Game For Artists appeared first on Doc Pop's Weblog.
There’s a pretty wild story unfolding about one of the world’s most-followed artists, the New York Knicks, and an up-and-coming painter. At the center of this controversy are two Knicks paintings that are far too similar to ignore, so I’m going to do my best to document what we know so far.
Gavin Snider had only been a full-time artist for about 10 months when the New York Knicks hired him to create a painting ahead of the 2026 NBA Finals. After a tight turnaround, Gavin delivered and his painting was shared on the Knicks’ social media pages. Shortly afterwards, Devon Rodriguez shared an oil painting that depicted a nearly identical composition with many of the same characters and details in it… right down to the jersey numbers in the foreground.
According to Gavin, the overlap went far beyond the general idea of painting Knicks fans in New York, stating that his painting used 67 different reference photos, including screenshots from Instagram Reels and Google Street View.
After the controversy began, Gavin noticed that another one of Rodriguez’s recent works appeared compositionally similar to one of his paintings from 2025.
Devon Rodriguez is one of the world’s most-followed visual artists, second only to Banksy, with roughly 44 million followers across Instagram and TikTok. He’s demonstrated serious artistic skill over the years and painted portraits for celebrities like Oprah and Nicolas Cage.
Which raises an obvious question: why do Devon’s two newest paintings look so similar to works that Gavin had previously shared online?
An image from Threads accusing Devon of using generative AI
Some commenters have speculated that AI tools may have been involved, while others believe the similarities could be explained through heavy referencing, tracing, or other traditional techniques.
I can’t definitively say whose work came first or what process was used to create either piece. What strikes me is that both artists are unquestionably skilled painters. If one image was derived from the other, I wonder whether someone used AI tools to introduce small changes to the original composition before tracing and repainting it in their own style.
That’s only speculation on my part, but I don’t believe either of the images we see here are purely the result of generative AI output.
Gavin has since released a public statement addressing the situation here https://www.instagram.com/p/DZptTFdjZyC/
After the controversy began circulating online, Devon Rordriguez posted a behind-the-scenes video showing the creation of his painting on Instagram, but didn’t address the allegations directly.
Devon deleted that behind-the-scenes video shortly after posting it, but I’ve shared a copy on the Wayback Machine for reference.
I don’t know if we’ll ever get any definitive answer as to what happened here, but it looks to me like one of these artists copied the other.
What makes this story interesting is the popularity of the artists involved and the allegations of how generative AI may have been used, even if the final results were both hand painted.
Since this article was originally published, Devon Rodriguez has removed both Knicks-related paintings from his social media accounts and has taken the corresponding prints out of his online shop. I’ve included archived screenshots below showing the posts before they were removed.
ten of these posts have been removed from Instagram
removed from shop
deleted IG post
removed from shop
Of course, removing the posts does not confirm or disprove the plagiarism allegations. There are many reasons an artist might choose to remove artwork from public view.
Gavin Snider’s Knicks paintings remain online, and neither artist has issued any additional public statements since Gavin’s original response.
The post The Knicks, the Watercolor Painter, and the World’s Most-Popular Artist appeared first on Doc Pop's Weblog.
I like to keep an eye out for cool shapes during my walks and use them as inspiration for my #SidewalkFriends drawings. It’s like my version of hunting for Pokémon.
The tattered remains of stickers on a street pole inspired this drawing of a knight and an imp.
The post #SidewalkFriends: Best Fiends appeared first on Doc Pop's Weblog.
Happy #NationalYoYoDay, folks!
I’m hosting two delightfully nerdy events in San Francisco this week:
Tuesday, June 9 • 7–9pm • Finjan Qahwa Cafe
Bring drawing supplies (pen, eraser, etc), make comics, and meet fellow cartoonists.
Saturday, June 13 • 2–5pm • 826 Valencia St
Learn tricks, show off your skills, or just come throw a yo-yo with us.
Both of these events are free, all ages, and beginner-friendly. Come make something, learn something, and hang out with some wonderfully nerdy people.
And please support the awesome businesses that host us!
The post Upcoming Events in San Francisco appeared first on Doc Pop's Weblog.
As another big move comes to an end, it’s time to figure out where all the art goes. I’ve collected a lot of small paintings and sculptures over the years, so this process always fills me with nostalgia for the San Francisco artists I’ve met along the way. None hit me harder than these two paintings by Pete “Peet” Lum.
I think this is the fifth home where I’ve hung these two paintings over the past twenty years. Every time I unpack them, I end up thinking about Peet and that era of San Francisco all over again.
Peet was a fixture of the San Francisco art scene in the mid-2000s. He played drums with the Human Beans, painted graffiti as “Goonies”, and could regularly be found selling his paintings on sidewalks around the Mission District. His paintings often featured cassette tapes, clouds, telephone poles, and whimsical phrases like “The city is my sweetheart” or “We never sleep”. He frequently used found objects, like 2x4s and chunks of wood from construction sites, and kept his palette limited to 3 colors at a time.
photo by HabitForming
His pieces were incredibly cheap, probably ranging from $5-$50, which was perfect for broke-ass artists like myself who loved his work but didn’t have much to offer for it. Peet Lum wasn’t necessarily a famous artist, but if you lived in the Mission around 2005–2006, there’s a very good chance you have one of his paintings hanging somewhere in your home.
photo by Zachary Morriss
photo by Rio Coffelt Roth-Barreiro
photo by Maya Greven
photo by Eddie Coddel
When he wasn’t selling paintings, Peet was tagging the city with two recurring characters: a Pac-Man-style ghost with spiraled eyes and a melancholy little bear with a fang hanging out and a heart on its chest. His graffiti name was “Goonies,” though he rarely needed to write it. The characters, along with short phrases lifted from his paintings, were recognizable enough on their own.
photo by HabitForming
photo by SFrances
photo by Loser
photo by Jay Kullman
photo by RatRaceForSpace
photo by Loser
I can’t tell you how many times I’ve described Peet’s work to friends only to hear, “Oh yeah, I had one of his paintings. Whatever happened to that guy?” Sadly, Peet passed away on May 25th, 2006.
Photo by Petalum
Peet’s art had a huge influence on me, but I didn’t know him personally. Our bands played a few shows together, and I’d chat with him whenever I ran into him on the street, but we never really hung out beyond that. I loved his characters, his phrases, and the clean, crisp lines in his work, but mostly I loved how much Peet cared about this city.
San Francisco’s art scene in the 2000s felt so full of energy and possibility. There was amazing art and music everywhere, and the city still felt affordable enough for weird little scenes like this to thrive.
Whenever I see Peet’s work, I’m immediately transported back to my early days in this city and how exciting it all was.
If you have a story about Peet, or photos you think I should include in this post, you can leave a comment below or email me at doc@docpop.org. And if you have any of Peet’s old work laying around, I’d love to add it to my collection. I’m still broke, but maybe we could trade stories or yo-yos 
The post “The City Is My Sweetheart”: Remembering the Art of Peet Lum appeared first on Doc Pop's Weblog.
In the annals of post-talk-show-cancellation stunts, Stephen Colbert hosting an hour-long episode of a Michigan public access show might be my new favorite. Jack White serves as the “volunteer musical director,” playing the perfect straight man to Colbert’s silly schtick and the episode is full of other great cameos that I won’t spoil here.
The whole episode is charming, chaotic, and incredibly fun to watch. https://www.youtube.com/watch?v=jJTXB5uT_C4
I’m excited to see whatever Stephen does next, especially if it involves a tour of public access TV shows across the country.
And since I couldn’t find a more graceful place to put this: fuck Brendan Carr and Trump for pushing Colbert off the air because their fragile egos couldn’t take a joke. The right loves to pretend they are defenders of free speech… up until someone criticizes them. Then they use the full power of the state to censor their opponents, while bragging about it.
The post Stephen Colbert’s Best Post-Cancellation Stunt Yet appeared first on Doc Pop's Weblog.
After seeing a few cool Instagram videos about it, I decided to try out Rapid Serial Visual Presentation (aka RSVP) to see how well it worked for me. Mostly I was excited to try out John Decebal’s RSVP Nano app for ESP32-S3 microcontrollers. These devices are around $30 each and John’s app is totally free.
Exploring the world of Rapid Serial Visual Presentation via the RSVP Nano app on an ESP32 microcontroller.
Currently testing it out with @charliejane's "All The Birds In The Sky". #RSVP
RSVP is a method of presenting eBooks that doesn’t require the reader to move their eyes much. Text is displayed one word at a time, and you can control how fast it appears. Some people use this method to improve their reading speed, but I just thought it sounded fun to try.
It’s like a teleprompter for ebooks!
There are several free RSVP apps for mobile and the web that you can use to try this method out. I don’t have any specific recommendations yet, but you could copy the text from this post and try reading it in something like ReadRSVP to get a feel for the technique.
If you want to give RSVP Nano a try on your ESP32-S3 device, here’s what you’ll need:
Supported file types: EPUB, TXT, Markdown, HTML
Hardware: ESP32-S3 device + SD card (32GB or smaller)
Software: Chrome or Edge (for the web flasher)
Installing RSVP Nano was surprisingly easy thanks to John’s web flasher (Chrome or Edge required). I hooked my microcontroller up to Wi-Fi for over-the-air updates, and this thing is already packed with features.
I’m currently testing it out with Charlie Jane Anders’s All the Birds in the Sky. If you try it out, let me know your thoughts below.
If you’re interested in buying one of these ESP32-32 microcontrollers, consider using John’s affiliate link to help support his work-> https://www.waveshare.com/esp32-s3-touch-lcd-3.49.htm?&aff_id=153227
I’d also recommend giving John a follow on Instagram to see what cool new features he’s working on now.
The post Reading eBooks with RSVP Nano appeared first on Doc Pop's Weblog.
Mike Monteiro and I met up at Dynamo a few weeks ago to catch up and eat some Fernet-flavored donuts. We had a great chat and he even gave me a copy of his newest book, How to Die (And Other Stories). I’ve been carrying it around with me ever since.
This is partly because we are mid-move and all of my other books are in boxes, but it’s mostly because I enjoy Mike’s writing so much. I honestly don’t read as many books as I’d like to these days, but this one is such a fun read that I can’t put it down.
How To Die is a collection of beautiful, sarcastic, and funny essays about everyday life. Each chapter starts with a simple question like “How to wash the dishes” or “How to read a book”, but the answers always are far more thoughtful and interesting than you’d expect. It’s less like an advice book, and more like sharing stories over coffee (or donuts).
Mike has been answering reader-submitted questions like these in his weekly newsletter for years, and this book collects many of those, but I highly recommend it book form even if you’ve already subscribed to his weekly rambling.
You can grab How to Die (And Other Stories) as either a hardcover or an ebook.
I can’t recommend it enough.
If you happen to be in San Francisco on May 11th, you should check out Mike’s event at Booksmith with special guest Annalee Newitz.
The post “How To Die (and Other Stories)” by Mike Monteiro appeared first on Doc Pop's Weblog.
Today I stumbled on this insane music video for “Bubble” by Yorushika, and I fell in love with it. Within the first five seconds, a man finds himself in a chair in a hotel room. As he tries to figure out where he is, a stranger in a dark trench coat bursts in and shoots him. He dies… only to find himself once again sitting in the same chair, in the same hotel room.
As a jazzy guitar riff plays, this time loop repeats over and over as the man desperately tries to escape his fate. Watch the video here:
It’s perfect, absolutely perfect.
The best part of “Bubble” is that it reminds me of a choose-your-own-adventure-style comic by Jason Shiga. In “Knock Knock,” you find yourself in a similar time loop. Waking up in a bedroom with a few seconds to evade being murdered by a stranger for some unknown reason. You can try to hide under the bed, escape through a window, or fight back. There are hundreds of ways to die in “Knock Knock,” and about half of them show up in “Bubble,” too.
The post One of the Coolest Music Videos I’ve Ever Seen: A Brutal Time Loop Done Right appeared first on Doc Pop's Weblog.
The San Francisco Bay Area Bench Collective is an activist group that installs benches at public bus stops. A pretty awesome task, if you think about it. The benches are usually installed with a brown coat of paint, but some of them have been getting more decorative lately.
Like this jazzy bench at the corner of Mission and Valencia.
Or this cosmic bench on Telegraph in Oakland.
Or my favorite new bench at the corner of 18th and Mission.
That last piece was created by Noah Peacock. He did the mural on the smoke shop there, and when the bench was added in front, Noah must have decided to work it into the final piece. It looks great.
As a note, I didn’t want to bother folks who were waiting for the bus, so I waited until the benches were empty before taking my photos. So imagine these same benches, but with your friends and neighbors using them.
The post The Art of Bus Stop Benches in San Francisco appeared first on Doc Pop's Weblog.
We moved into our new place on 16th and Julian Ave, and I haven’t had time to install the curtains yet. So when the sun came out this morning at 6:30 AM, I was up with it. I decided to check out some new street art in the alleys and streets around us, starting with our own back alley, which seemed to have a ton of fresh paint.
Then I walked down Erie St, which was filled with awesome new pieces.
I headed back to 18th and Mission, a popular graffiti spot that is frequently covered with new pieces.
And I wrapped up my walk with a stroll through Clarion Alley.
The post Fresh new Art In New Hood appeared first on Doc Pop's Weblog.
The Artist’s Television Access is an art space on Valencia and 21st st in San Francisco. On Saturday evenings, they’ve been doing a series of short films, live electronic music, talks, and more. This week’s set featured some rare footage of Clara Rockmore performing theremin in Bob Moog’s house, vintage ads for IBM, and Joshua Ellingson demonstrating the Pepper’s Ghost illusion along with his modular synthesizer.
From the ATA’s description of the night:
Fine-tuning through the ultra-rich ether, we have discovered some, uh, “special” frequencies that ‘charm’, and re-animate concepts of contemporary A/V installation/performance, with jolts of juice both natural and ‘super’. Mission whiz Josh Ellingson marvels all with demos of his current works – thee eye-popping Pepper’s Ghost, as well as his re-wiring of cult director Sid Davis‘ Age 13. Anchoring the second half is a co-hit that threatens to crack through the ‘Quantum Consensus’: the US premiere of Riar Rizaldi‘s Tellurian Drama, a 20-min anomaly that asks way more that it answers, on the uses and possible abuses of an obscure Malabar Radio Antenna, on the island of Java in the Indonesian archipelago during the Dutch colonial period. Berlin skeptic Thorsten Fleisch contributes Astrogolem, his digital hypothesis on a time-traveling Nikolai Tesla, while Craig Baldwin shares his own revelations from his speculative history Spectres of the Spectrum (exc). PLUS Piercing the Unknown, Hippies High on Alpha, Clara Rockmore’s Theremin, and other inquiries into novel pop-music forms flowing from those magickal waves of electricity! $13
The post Joshua Ellingson demoing Pepper’s Ghost Illusions at Artist’s Television Access in SF appeared first on Doc Pop's Weblog.