[{"content":"Redis is an essential part of many Django applications. It powers caching, queues, sessions, and real-time features. But if you’ve ever wanted a simple, browser-based UI to inspect or modify Redis data while developing or debugging, you’ve probably reached for a terminal tool like redis-cli or a standalone GUI. That’s where dj-redis-panel comes in.\ndj-redis-panel adds a Redis browser right into your Django admin interface, letting you explore keys and values without leaving your Django workflow. …","date":"November 23, 2025","permalink":"https://yassi.dev/projects/dj-redis-panel/","section":"projects","summary":"The missing admin interface for managing Redis in Django applications","title":"DJ Redis Panel","type":"projects"},{"content":"Django has always given developers a clean and powerful caching API, but it has always lacked visibility. Sometimes you just need a way to look into all of your keys or directly add and edit keys without having to open up a shell. I\u0026amp;rsquo;ve been developing both dj-redis-panel and dj-cache-panel with these situations in mind.\nI\u0026amp;rsquo;m excited to launch dj-cache-panel today; Its a project that has been on my mind for quite some time. I know it\u0026amp;rsquo;s existence is well justified since it\u0026amp;rsquo;s …","date":"December 13, 2025","permalink":"https://yassi.dev/projects/dj-cache-panel/","section":"projects","summary":"A universal cache inspector for Django.","title":"DJ Cache Panel","type":"projects"},{"content":"Celery is one of the most popular async task frameworks in the python ecosystem. And if you are also running Django, then celery is often considering the defacto task system to pair it with.\nIf you\u0026amp;rsquo;re running Celery in production, you will eventually need basic operational visibility for your tasks and workers. You\u0026amp;rsquo;ll need to know if your workers are alive, what they are currently running and whether any tasks are currently stuck or queues are backed up. These are very common …","date":"January 20, 2026","permalink":"https://yassi.dev/projects/dj-celery-panel/","section":"projects","summary":"DJ Celery Panel brings Celery monitoring directly into Django Admin.","title":"DJ Celery Panel","type":"projects"},{"content":"Django’s URL routing system is straightforward and powerful. urlpatterns, include(), and namespaces make it easy to organize routes cleanly. But as a project grows with multiple apps, third-party packages, and layered APIs - it becomes harder to keep track of what’s actually registered.\nIf you\u0026amp;rsquo;ve ever installed a popular library like django-allauth or dj-stripe, you’ve likely surfaced endpoints you didn’t explicitly write yourself. That may be fine. But Django doesn’t give you great …","date":"February 6, 2026","permalink":"https://yassi.dev/projects/dj-urls-panel/","section":"projects","summary":"Django URL introspection and testing - right inside the admin","title":"DJ Urls Panel","type":"projects"},{"content":"This blog is written using the hugo static site generator. I\u0026amp;rsquo;ve created this current theme and it is also available free and open source\nyassi theme hugo It used to be a rite of passage for developers to make their own blogs or blog engines. They can still do that, but it has become fashionable to use static site generators these days. This still continues the spirit in my opinion, as the larger population has centralized any blogging onto larger platforms or social media. I published this …","date":"November 25, 2025","permalink":"https://yassi.dev/projects/yassi-theme/","section":"projects","summary":"Like this blog\u0026rsquo;s look? Build a site using the same hugo theme - yassi","title":"Yassi Blog Theme","type":"projects"},{"content":"In honor of Pi day, I\u0026amp;rsquo;ve built a image generator that can visualize sequnces of digits in pi.\nPi Patterns Pi is thought to be a normal number, meaning any sequence of digits is thought to appear inside it at some point. I find this both absurd and amazing - anything that can be represented at a sequence of digits can therefore be in pi. Somewhere in there is a picture of your grandmother doing a kickflip but only if you know how to find it.\nPi has been shown to be a normal number when …","date":"March 14, 2026","permalink":"https://yassi.dev/projects/pi-patterns/","section":"projects","summary":"Generate amazing visual art from sequences in pi","title":"Pi Patterns","type":"projects"},{"content":"Discourse around AI tends to collapse into two camps: true believers and luddites. A recent piece, Agentic Coding is a Trap, highlights what the author calls the “paradox of supervision” - where the very judgment needed to oversee AI delegation is undermined by the habit of delegating to it. This is a signal that something is broken in how we are thinking about AI delegation. If blind delegation is clearly problematic, then we are missing a clear framework on when AI should be relied on. I think …","date":"May 19, 2026","permalink":"https://yassi.dev/posts/not_all_software_systems_are_agent_friendly/","section":"posts","summary":"System sensitivity matters more than AI capability.","title":"Not All Software Systems Are Agent Friendly","type":"posts"},{"content":"Django signals are one of those features that sit in an awkward place. On the one hand, they allow decoupling of logic across apps, but they also introduce lines across your project that become difficult to reason about. Most teams I\u0026amp;rsquo;ve worked on don\u0026amp;rsquo;t reach for signals first. Not because they\u0026amp;rsquo;re bad, but because once you introduce them, you lose some visibility and explicitness within your project.\nWith a function call, you can trace everything. With a signal, you’re relying …","date":"April 3, 2026","permalink":"https://yassi.dev/projects/dj-signals-panel/","section":"projects","summary":"See every Django signal and receiver, and where they fire","title":"Dj Signals Panel","type":"projects"},{"content":"I\u0026amp;rsquo;ve been writing Django apps for a long time (since 2011 that I can remember.) For as long as I have been using Django, I have also had to have a constellation of other applications for all sorts of purposes. Most of the time these function all require their own separate account and login.\nMonitoring system status Visualizing queue systems GUIs for databases Error tracking Request profiling Django Control Room offers a simpler approach: Operational tooling should live inside the Django …","date":"February 23, 2026","permalink":"https://yassi.dev/projects/dj-control-room/","section":"projects","summary":"A control room for your django app","title":"Django Control Room","type":"projects"},{"content":"Everybody is writing an AI generated take on Tailwind’s monetization issues. Here’s a human one, from someone who writes open source software.\nThe news of the day is that Tailwind has laid off roughly 75% of its development staff. While that percentage sounds dramatic, it amounts to three people. Framing this as a massive industry wide signal feels a bit scandalous.\nThat said, this didn’t come out of nowhere.\nOver the past few years, a clear trend has been emerging that disproportionately …","date":"January 8, 2026","permalink":"https://yassi.dev/posts/tailwind_monetization/","section":"posts","summary":"Reflections on Tailwind, LLMs, and the future of OSS sustainability","title":"Tailwind's Monetization Problem","type":"posts"},{"content":"This is my first blog post in decades, and it feels strange to write that. The last time I maintained a blog I was a young teenager running a GeoCities site dedicated to video games (mostly Chrono Trigger and Chrono Cross). The world has moved on pretty severely since then. Even now I’m writing this in Markdown with a static site generator (Hugo) - tools that would have seemed very strange to my thirteen-year-old self.\nFor all the tools and technological changes that have come and gone since my …","date":"November 22, 2025","permalink":"https://yassi.dev/posts/blogs-post-llms/","section":"posts","summary":"The importance of human generated content","title":"Blogs in a Post LLM world","type":"posts"}]