Digital Dopamine

Digital Dopamine

Tune in for a weekly dose of digital dopamine! Explore productivity apps, uncover tech trends, and dive into short coding tutorials tailored for new developers. Subscribe for insights that supercharge your tech journey! digitaldopaminellc.substack.com

  1. Oct 21

    Is the AI Doom Talk a PSYOP??

    My Thoughts On The “AI Doom” Narrative I strongly believe the AI doom discussions in the media, from engineers at frontier labs, and even from the leaders of these labs, are only partly true. I believe what they got right is that AI, if left unregulated and unmonitored, can be a HUGE security risk for almost all industries, from Healthcare, Transportation, Logistics, Finance, and Government. But the truth is in that sentence: “left unregulated and unmonitored”. That is the ONLY reason we are here having these discussions in the first place, is because the AI industry (along with other big tech companies) has long been under-regulated for years, even before AI’s mainstream debut. There’s a reason Meta has hundreds of lawsuits against them that are unrelated to AI: the tech industry has been move quick and break things for years, and the lack of regulation for these tech companies has allowed them to get away with a LOT of exploitation. AI is no different, and the main culprit that no one in the media seems to be talking about is good ol’ capitalism. Now, I’m not saying that AI is incapable of harm WITHOUT American capitalism, but it’s the reason why these labs are moving so quickly with the development of increasingly more powerful, intelligent, and resourceful models, without the proper safeguards and monitoring. @ThePrimeTimeagen and Karl Brown, respected engineers in their own right, both have the same skepticism related to the recent hacks (most notably the HuggingFace hack) and rogue agents that I have, and that is: The issue lies on the doorstep of these frontier labs, NOT AI itself. I’ll let them explain it in these two combined clips (sourced from ColdFusion’s YT Channel): Clearly, this is a big problem, and I believe, more widespread than we are aware of. With the increasing decline in critical thinking and manual coding (it’s wild that i have to classify it as “Manual” coding 😮‍💨), we are going to see more and more incidents like this pop up in the coming months and years. The question is: Since the genie is already out of the bottle, is it even possible to put it back in at this point? If we can, would they?? Because recently, Anthropic CEO Dario Amodei, OpenAI’s Sam Altman, and Grok creator Elon Musk were among those arguing that the tech was simply moving too fast to ensure it doesn’t fly off the rails. Only to then all release new and more powerful models: * OpenAI launched the GPT-6 Astra model on September 21, 2026 * Anthropic continued its rapid release cycle, launching Claude Fable 5.1 and Claude Mythos 5.1 on September 1, 2026, followed by Claude Sonnet 5.5 on September 28, 2026. * xAI launched Grok 4.7 on September 21, 2026 It all makes 100% sense.....right???.... 🫩 . This makes me suspicious of the recent hoopla around “AI has a chance at destroying us all” and the statement from Jacob Coxon that stated the frontier labs are racing to superintelligence and gambling with our lives. These statements literally aren’t true, no matter how confident these engineers are that AI might soon become uncontrollable. There are many people living off-grid, on isolated islands, or in the mountains somewhere, that aren’t affected by modern society’s poor AI decisions. Coxon worked with a f٭ckin PR firm before making that tweet that garnered more than 170 MILLION views. And now he’s out here speaking to the New York council, giving them warnings about next year: AI will be at the point of self-improvement, and again states we need to slow down frontier AI development. The thing is, I agree with the slowdown. He also made a recent appearance on The Daily Show where Jon Stewart pressed him a bit, but he kept his same narrative, and I'm still on the fence about whether he’s a pawn in Big AI’s attempt to pass their insane amounts of debt on taxpayers. Like, it’s hard for me to fathom that NOW IS THE TIME TO HAVE A CONSCIOUS?!?!? Bruh, give me a break! The only saving grace I think he has is that he’s 28 and he genuinely could have been just glossy-eyed and naive. His appearance on The Daily Show is what has me leaning towards naivety (It’s a long one but worth the watch): But (tin hat moment) he said racing towards “super intelligence” in his tweet, and that seemed to be the first mainstream classification of that. Donald T then started saying we should change the name to “super intelligence” and to start calling data centers “super intelligence centers”. The mf also just created a new task force called “Super Intelligence Force”......🫩. Not only that, you now see CEOs like Jensen Huang ALSO saying “super intelligence”. I mean, buddy interviewing him, Elon, and some other dweeb I don’t know, made a frantic correction, referring to AI as......AI instead of Super Intelligence when he was responding to dweeb #3: So it seems all the important players in this game they’re playing are calling it super intelligence for a reason, and I believe Jacob is part of this bandwagon. *Tin Hat has been removed: Debuff “Conspiracy” Deactivated* Alright, now back to the matter at hand and what we currently know from recent actions, reports, and observations. These labs have hired the brightest minds to build these AI models, and they have tons of work going into research alone. I refuse to believe that this couldn’t have been slowed down years ago. Moore’s law and exponential growth is proof enough that they for sure knew how quickly this kind of technology could get out of hand, but that doesn’t matter as long as the investors are happy and getting rich. Who are these investors? Millionaires, Billionaires, and Big Corporations who have little to worry about a catastrophe if one were to happen. So that just reinforces the actual problem, and it’s a tale as old as time.....or as old as the Citizens United v. FEC case, where elections and corporate interests changed for the worse. That’s why so many AI and Crypto companies were making their offering to get favorable decisions when it comes to laws and regulations. Again, AI and Blockchain/Crypto are NOT THE PROBLEM. Greed and corrupt capitalism are. I mean, just look at the amount of money that has been pouring into campaigns since the ruling: There are a few politicians out there who’ve called for overturning the court decision, but not enough in my opinion. Let’s not veer too far into politics, though. The point is, time and time again we get shown exactly how late-stage capitalism is a plague to the society working within it. We see the problem; the people who rushed advancement and created the problem show concern and point a finger, then they continue to do what they claim is not good for humanity. The simplest analogy I can think of is a person holding a knife, pointing at and running towards someone while also yelling, “You shouldn’t run with knives; they’re dangerous!” but they won’t stop running towards you. A former Fidelity fund manager, George Noble (who worked under Peter Lynch) made a statement about the AI bubble that resonated with me, in that “if you took the DotCom bubble and injected the 2008 financial crisis with its smoke and mirrors/ponzi schemes, you get the AI Bubble”. Concluding that he believes this will go down as the biggest miscalculation of capital ever. I 100% agree with him, and it just reiterates my statement that AI as a technology is only as poorly implemented as our government officials allow it to be, and this admin is pretty much letting leading AI companies do whatever they want. But you’re probably wondering, “Where are these assumptions coming from?” There are a few big red flags we can cover that will hopefully catch you all up on why I, along with other respected independent journalists, believe this is truly a last-ditch effort from the frontier AI labs not to crash and burn when this bubble pops, ultimately resulting in a gov bailout, funded by our tax dollars. Let’s start with all this insane circular financing. Circular AI Financing Ballooned Into $1 Trillion Systemic Risk The Bank for Internatio… Get full access to Digital Dopamine at digitaldopaminellc.substack.com/subscribe

  2. Oct 4

    Deploying your RAG Pipeline

    Welcome Back! So you came back for seconds, huh? Well, that was a great choice because now you’ll get to see how we can set up our RAG kit for production deployment. But that’s not all we’re gonna do. We will be creating and setting up a PostHog account for analytics as well as getting an OpenRouter Account created so we can utilize the API for our open-weight cloud models. If you haven’t read part one, you can check it out here: (Click on the title to get to the technical article if you prefer to read 🤓) For those who are caught up, let’s get started! Setting up Evals Now we need to address our grounding. We need a set of evals to make sure our pipeline is up to par during new iterations. So what we want to do is create a brand new folder for evals. Our tree structure should look similar to this: rag-starter-kit/ ├── core/ ├── app/ ├── evals/ │ ├── questions.json │ └── run.ts ├── docker-compose.yml └── rag.config.ts *NOTE: the app folder is he front end of the project if you decided to run the SvelteKit CLI. That’s where your frontend will live. But I will leave that up to the reader to decide how they want to proceed with their frontend + UI. We need to create a single JSON file to hold all of our premade questions. Here is a little example of the questions we will have: [ { "question": "What does Digital Dopamine charge for a RAG integration?", "mustCiteSource": "digital-dopamine.md", "mustContain": ["$"], "mustRefuse": false }, { "question": "What's the capital of France?", "mustCiteSource": null, "mustContain": ["I don't have that information"], "mustRefuse": true } ] So the path will be evals/questions.json at the repo root. And if you check the full repo, you can see the full list of questions i have for my use case, but you can create whatever questions you want, so long as they align with grounding and it’s a fixed list of (question, expected-source, expected-answer-shape) tuples drawn from your sample docs. The point of a fixed set is that re-running it is the only way you can trust an improvement. A good rule of thumb: * 5–10 in-scope questions answerable only from your docs. * 3–5 out-of-scope questions that should trigger the refusal string. Now we will need a script to run our evals in the first place. Since we are using TypeScript, we will create a new file called run.ts and the path will be rag-starter-kit/evals/run.ts . The full typescript file is below and you can see the order of operations that happen when running this file: // evals/run.ts import questions from './questions.json'; import cfg from '../core/config'; import { getCollection } from '../core/store/vectorStore'; import { retrieve } from '../core/retrieve/retriever'; import { answer } from '../core/generate/chain'; type Result = { q: string; pass: boolean; why: string }; async function run() { const results: Result[] = []; const collection = await getCollection(cfg); for (const q of questions) { const chunks = await retrieve(collection, q.question); const { text, citations } = await answer(cfg, q.question, chunks); let pass = true; const whys: string[] = []; if (q.mustRefuse) { pass = text.includes("I don't have that information"); if (!pass) whys.push('expected refusal, got answer'); } else { for (const term of q.mustContain ?? []) { if (!text.includes(term)) { pass = false; whys.push(`missing "${term}"`); } } if (q.mustCiteSource) { const cited = citations?.some((c) => c.source.includes(q.mustCiteSource)); if (!cited) { pass = false; whys.push(`did not cite ${q.mustCiteSource}`); } } } results.push({ q: q.question, pass, why: whys.join('; ') || 'ok' }); } const score = results.filter((r) => r.pass).length / results.length; console.table(results); console.log(`\nGrounded-answer score: ${(score * 100).toFixed(1)}%`); } run(); We then just need to add the eval script to our package.json file (just don’t add the // comment I included next to the updated line since JSON doesn’t allow comments and the file would fail to parse): "scripts": { "dev": "tsx core/index.ts", "typecheck": "tsc --noEmit", "test": "echo \"Error: no test specified\" && exit 1", "eval": "tsx evals/run.ts" // NOTE: Re-run this on every change Every pipeline tweak (new chunk size, new prompt wording, new model) gets pnpm run eval before you trust it, a score that goes down is how you catch regressions; the game plan explicitly calls this “regression-catching, same philosophy as Forge.” This file is also your proof artifact for the README/case study. Now it’s time to wire in PostHog Got that HOG In Me PostHog is a fantastic product that has a generous free tier. They allow you to get up to a million requests before you're charged for anything, but it’s dynamic depending on the events you are monitoring. You don’t even have to add a credit card if you only wire in a single project. However, if you end up creating multiple projects, they will require you to add a credit card before you can actually finalize the setup for the 2nd project. Still, you aren’t charged a dime until a given tool’s own monthly allowance runs out (1M analytics events, 5K replays, 1,500 survey responses, 100K error exceptions, etc.). I mean, on their front page, they claim that 97% of companies use them for free, which is absolutely insane. And they even have a general measurement tool to get a decent guesstimate on how much you can get before you start getting charged. As you can see here, identified events and anonymous events share the same 1M/month free allowance; There’s no separate bucket for each one and where they actually differ is cost once you’re past the free tier: anonymous events are up to ~4x cheaper, which is why you’d lean on them for logged-out traffic. That’s the lever the calculator is showing you, not two separate free pools. That’s just analytics though, all of the other tabs you see in the screenshot above ALSO allow you to measure the extent of their free limits. So you can pretty much use this premium product for free or very cheaply if you know how to manage the data you’re trying to capture. And to just give a quick overview of the tool as a whole, which is open-source too, is best said below: PostHog is the open-source platform for building self-driving products PostHog provides every tool you need to build a successful product, and captures all the context agents need to proactively diagnose problems, uncover opportunities, and ship fixes: * Self-driving mode: Turn signals in your product data (errors, rage clicks, failed queries, and more) into researched reports and pull requests you review and merge. * Product analytics: Autocapture or manually instrument event-based analytics to understand user behavior and analyze data with visualization or SQL. * Web analytics: Monitor web traffic and user sessions with a GA-like dashboard. Easily monitor conversion, web vitals, and revenue. * Session replays: Watch real user sessions of interactions with your website or mobile app to diagnose issues and understand user behavior. * Feature flags: Safely roll out features to select users or cohorts with feature flags. * Experiments: Test changes and measure their statistical impact on goal metrics. Set up experiments with no-code too. * Error tracking: Track errors, get alerts, and resolve issues to improve your product. * Logs: Ingest, search, and analyze log data alongside the rest of your product data. * Surveys: Ask anything with our collection of no-code survey templates, or build custom surveys with our survey builder. * Data warehouse: Sync data from external tools like Stripe, Hubspot, your data warehouse, and more. Query it alongside your product data. * Data pipelines: Run custom filters and transformations on your incoming data. Send it to 25+ tools or any webhook in real time or batch export large amounts to your warehouse. * AI observability: Capture traces, generations, latenc… Get full access to Digital Dopamine at digitaldopaminellc.substack.com/subscribe

  3. Sep 11

    Just Throw It In The RAG

    Sup folks! Built a local-first RAG system from scratch: a chat tool that only answers from the documents I feed it, cites every claim, and refuses to answer what it doesn't know. No cloud spend and no hallucinations slipping through. This is the video/audio companion to my technical article "Just Throw It In The RAG": https://digitaldopaminellc.substack.com/p/just-throw-it-in-the-rag WHAT YOU'LL SEE: - What RAG actually is, and why it's the unlock for small businesses. - One config file that runs the whole product. With a one-field flip between local (Ollama) and cloud (OpenRouter) - The full pipeline: load → chunk → embed → store → retrieve → generate - Verified citations: the model literally cannot fake a source - Live demo: grounded answers, refusals ("Am I pretty?" is a real eval question 😂), and the re-index feature. 💻 Repo: https://github.com/kdleonard93/rag-starter-kit STACK: TypeScript · LangChain.js · Ollama (gemma3:4b + nomic-embed-text) · Chroma · SvelteKit · Cheerio · Docker PART 2 next week: the eval harness, PostHog observability, one-command Docker deploy, and the cloud path. Subscribe so you don't miss it ✌🏾 - 🦋 Bluesky - https://bsky.app/profile/digitaldopamine.dev - 📸 Instagram - https://www.instagram.com/digital_dopamine_llc/ - 💻 GitHub - https://github.com/kdleonard93 - 👾 Discord - https://discord.com/users/407639833146818570 - 📖 Substack - https://digitaldopaminellc.substack.com/ Get full access to Digital Dopamine at digitaldopaminellc.substack.com/subscribe

  4. Aug 9

    Building Learning + Project Guides for NestJS

    New Framework, Who Dis???? Okay, so maybe not new in general, but definitely new to me. So this felt like the perfect opportunity to dive into some fresh docs to see if this framework would be useful for me in my future projects. I’ve been focusing on the Python ecosystem when it comes to AI, but if I'm being honest, I feel like the polyglot codebase of needing to run Python for your backend and having a JS/TS frontend. It’s kind of a pain. Even though Python is much easier to get up and running with AI + it has a MASSIVE ecosystem within the AI space already, NestJS is starting to emerge as one of the go-to JS/TS frameworks to use for building out AI tooling and RAG systems. So today, I wanted to explore what NestJS is as a framework, get into a bit of its lore, and then run through an example of using local AI models to build you a lesson and project plan so you can curate the best way for YOU to learn this framework. We will NOT be using AI to build the project, and I implore you to try building out the application just using docs and forums, even if you have to struggle a bit. The project guide that will have the local model built for us will be small, so it shouldn’t be too difficult to run through on your own. But for now, let’s dive into the docs of NestJS. The Rising Star in the League of JS Frameworks Quite a statement, right? Well, it’s not me that’s praising this Framework. There are plenty of forums and posts out there from fellow devs that love it and claim it to be the future leader for building your Node backend. As you can see here, this dev gives a good example of what a call to the Claude AI would look like in NestJS. That same call in Python would look something like the following: import os import httpx class AiService: def __init__(self): self.api_key = os.environ["ANTHROPIC_API_KEY"] async def ask(self, prompt: str) -> str: async with httpx.AsyncClient() as client: response = await client.post( "https://api.anthropic.com/v1/messages", headers={ "x-api-key": self.api_key, "anthropic-version": "2023-06-01", "content-type": "application/json", }, json={ "model": "claude-sonnet-4-5", "max_tokens": 1024, "messages": [{"role": "user", "content": prompt}], }, ) response.raise_for_status() data = response.json() return data["content"][0]["text"] Now, at first glance, one may think: “The Python code looks simpler and is much easier to understand”. Well, you’re not wrong at all 😂, the NestJS code example from the screenshot has an @Injectable() decorator, which I learned is an explicit constructor with typed parameter injection that relies on Nest’s DI(Dependency Injection) container to actually provide a ConfigService. This is one of the drawbacks to using such a strict framework for smaller projects, products, or services. But this is EXACTLY what you want when working on a larger-scale application. Nest’s DI and module system are what make large codebases easier to test, mock, and reason about at scale when you’ve got a real app in production with dozens of services. Some Quick Definitions and Notes From the Docs Here, I’m gonna pull a couple sections straight from the docs, word for word. Intro NestJS uses progressive JavaScript, is built with and fully supports TypeScript (yet still enables developers to code in pure JavaScript) and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Reactive Programming). Under the hood, Nest makes use of robust HTTP Server frameworks like Express (the default) and optionally can be configured to use Fastify as well! Nest provides a level of abstraction above these common Node.js frameworks (Express/Fastify), but also exposes their APIs directly to the developer. This gives developers the freedom to use the myriad of third-party modules which are available for the underlying platform. Philosophy In recent years, thanks to Node.js, JavaScript has become the “lingua franca” of the web for both front and backend applications. This has given rise to awesome projects like Angular, React, and Vue, which improve developer productivity and enable the creation of fast, testable, and extensible frontend applications. However, while plenty of superb libraries, helpers, and tools exist for Node (and server-side JavaScript), none of them effectively solve the main problem of architecture. Nest provides an out-of-the-box application architecture which allows developers and teams to create highly testable, scalable, loosely coupled, and easily maintainable applications. The architecture is heavily inspired by Angular. Hopefully that little intro into what NestJS is and why it was built helps show the possible use case for your own projects. Or you could be like “naaa son, this is a lame framework”, that’s acceptable too 😂. Here is a link to their docs -> https://docs.nestjs.com/ And I recommend taking a gander through it to get a better understanding of the framework. But I wanna get to the fun stuff and start working on setting up our personal learning guide and project guide. Gemma Steps Up to Bat... As I mentioned earlier, we will be sticking with local open-weight models for building us our learning and project guides. But just like last time.... ...Swing and a Miss, But Not Out With this task being much simpler than the remotion animation creation we did in the last episode, I expected it to handle this task with much more ease. At first we hit a couple of roadblocks because of some directory confusion and vagueness in my prompt, but after some tweaking and after opening up the agent in the proper Obsidian folder, Gemma 4 12b actually got the job done, and it took only 7 min! I need to build a learning guide and a project guide for learning about NestJS. The learning guide should be very thorough and reference the official docs (https://docs.nestjs.com/) when making the learning sections. The project guide should be a very easy and simple project that a new dev can do by just referencing the official docs and online forums. The goal for the project is to not use AI to build any of it, so please when creating the guide, make sure that each build step is very detailed on what the dev needs to do, so they aren't second guessing about the ambiguity. You are in my project directory now so I just need you to create these guides in the current folder and label them Version 2. Do not go outside of your requested tasks. I know some tools that will be used in my project (only if needed) are https://www.npmjs.com/package/quick-rag and https://www.npmjs.com/package/@qvac/rag so add those to the guides as well if they are useful. There are version 1 guides in the same folder if you need a reference. After the first attempts, I did think there was an issue with the model not being able to complete this simple task, but I realized that I was the error after running it in a newly created directory. THAT task only took just under 6 min, but I should note that the prompt was slightly different: I need to build a learning guide and a project guide for learning about NestJS. The learning guide should be very thorough and reference the official docs (https://docs.nestjs.com/) when making the learning sections. The project guide should be a very easy and simple project that a new dev can do by just referencing the official docs and online forums. The goal for the project is to not use AI to build any of it, so please when creating the guide, make sure that each build step is very detailed on what the dev needs to do, so they aren't second guessing about the ambiguity. You are in my project directory now so I just need you to create these guides in the current folder and label them Version 2. Do not go outside of you… Get full access to Digital Dopamine at digitaldopaminellc.substack.com/subscribe

  5. Jul 24

    Local Remotion Animations W/ Ollama, OpenCode, and Gemma4

    Local Model Aspirations For all of the folks out there who want to embrace AI but also have issues with the energy consumption and cost, I’m right there with you. When AI started to become mainstream and then eventually mandatory in enterprise work, I was very reluctant to use it and train these models that my company will eventually replace me with. Well…….that happened verbatim 😅. My previous place of work has been going through rounds of layoffs after a new set of C-suite execs strolled in to make “improvements” to the business, aka, “the company isn’t making enough money so, hire offshore, fire employees with IP knowledge, and go heavy on using AI.” I’m obviously exaggerating (kinda), but the point I’m trying to make is that AI is great when you have a solid plan on how to use it and try not to rush the process. Most companies didn’t take that approach, though, and got shot in the foot because of it. Does that mean we should oppose AI? Absolutely not. I actually love what AI can be used for, and I think there isn’t enough fine-tuning out there for specific use cases. Now, with Chinese models becoming much more competitive in intelligence, the cost difference is a no-brainer, and many companies are switching to these cheaper yet very capable models. (Image Source: https://techstartups.com/2026/06/29/western-companies-are-quietly-switching-to-chinese-ai-models-as-u-s-frontier-ai-prices-rise/) Then, when you use platforms like DeepInfra as your provider, scaling becomes less of an issue, and you only pay for usage and not a monthly subscription. Add the OpenRouter API in the mix, and you have the ability to swap providers at will. If costs ever change, if one provider hits you with rate limits, or if a provider goes down completely, OpenRouter is the failsafe that will forward your request to a different provider automatically (with the proper configurations) so your clients won’t have issues with the products/software you built for them. This just goes to show how far we’ve come with AI development, and like it or not, it’s a tool almost as important as the internet itself but potentially much more dangerous. While that danger may include physical harm, I’m more worried about the mental and intellectual harm that it’s doing and will continue to do if we don’t make some major changes in how the average person should approach AI. This is why I started diving into local models, with the understanding that they are not as capable as the frontier models, but that’s the point. They are SLMs and MLMs that you can leverage, but it will still require you to do some sort of critical thinking, which is a good thing. There is absolutely no reason for people who are using AI to just chat or ask a simple question, to be using the compute power and energy consumption of the frontier models. That’s one reason why I marveled over Google’s Gemma 4 series because, in theory, they have a model that should serve on just about any device. In practice, though, I’m learning some major limitations with these models, but most of them have to do with local compute power (as well as my current lack of knowledge on how to fine-tune these systems). That isn’t to say local models will never work; we have come so far with local models already that I'm sure in the next year or so, there will be a better generation of local 1st models that will work as smoothly as using a frontier cloud model. And “smoothly” is the keyword here, because in terms of intelligence, that’s not the main selling point of these local and more ethical models. Local Model Experimentation So that leads us to this lil ol’ experiment with me trying to build a “lower third” animation for my podcast intro. A “lower third” is just an animation on the lower left or right of your screen with the host name and title, or whatever you’d like to pop up there briefly (or at least that’s how I understand it 😄). So you’d think that a local model would be able to knock this out no problem, right?? If you have a beefy enough local machine, you’re golden. However, most people do not have a $5k+ home lab that can run these local models without major lag and bottlenecks. When the Gemma4:12b model was released, I was ecstatic because it was small enough for my Mac Mini (M4) not to hit memory limits, and it allowed enough headroom for me to record on OBS without OBS crashing. But reality hit me hard when I needed this model to run efficiently in any capacity for the task at hand. So I crafted 3 separate prompts for this task since, given the small context window limit of 32k I had to set, we needed to make sure to break up the tasks into individual prompts and sessions so the 12B model can stay as focused as possible. The original prompts are below: [1/3] Create src/LowerThird.tsx. Transparent background. Static layout only, no animation yet: a 12px-tall horizontal gradient bar (linear-gradient 90deg, #7B5BF0 to #4B7BE5) at x=120 y=880, an off-white (#F4F4F6) rounded rectangle behind two lines of text: primaryText in Archivo bold 48px #111111, secondaryText in Space Grotesk 32px below it. Props: primaryText, secondaryText (zod schema). Register in src/Root.tsx: id "LowerThird", 1920x1080, 30fps, 150 frames. [2/3] Animate the entrance (frames 0-21): the gradient bar scales in from the left using spring({frame, fps, config: {damping: 200}}), the rectangle then expands from behind it, the two text lines slide up 20px and fade in with a 4-frame stagger. Use only useCurrentFrame/interpolate/spring. [3/3] Animate the exit: frames 129-150 reverse the entrance. Hold frames 21-129. Then I'll run pnpm lint and paste any errors. But these evolved greatly throughout my multiple rounds. Before we get into what the final prompts were, we need to make sure that folks who want to follow along can get set up with the tools I used during this process. Setup 0. Scaffold the Remotion project # Prereqs: Node 18+ and pnpm pnpm create video # → name the project, pick a template (Blank is fine — the agent writes the rest) cd pnpm dev Then install the skills: npx skills add remotion-dev/skills That drops remotion-best-practices into the agent folders (.opencode/skills/, .claude/skills/, .agents/skills/, …) and records it in skills-lock.json, so OpenCode — and any other agent you point at the repo — picks it up automatically. 1. Serve the model with a real context window Ollama’s default context (~4k tokens) is far too small for agentic coding — OpenCode stuffs system prompt + skill rules + file contents into context, and when it overflows, Ollama silently truncates the oldest tokens. The model “forgets” your instructions mid-task and the failure looks like model stupidity. It’s a config problem. Note for context We will be setting 2 different contexts for Gemma. One will allow me to record at the same time but will reduce my context window. The other will give a better context window for a lesser chance of hallucination. You will also need to create Modfiles for our customized models to reference. Each modfile will be above the cat call. You can name the files whatever you want, but I’ve named the models according to their context window. To bake it in permanently via a Modelfile: Smaller Context cat > /tmp/gemma4-12b-16k.Modelfile Larger Context cat > /tmp/gemma4-12b-32k.Modelfile 16k is the sweet spot on 24 GB: roughly 7.6 GB weights + a few GB of KV cache ≈ 11–12 GB, leaving headroom for Remotion Studio (Chrome) and OBS. 32k works too if you’re not recording at the same time. You can also serve whatever model you have with a bigger context by running it with that flag. # Quit the Ollama menu-bar app first, then serve with a bigger window: OLLAMA_CONTEXT_LENGTH=16384 ollama serve But it’s better to set a standard so that you don’t have to … Get full access to Digital Dopamine at digitaldopaminellc.substack.com/subscribe

  6. Jun 15

    The Quiet Deal That's Reshaping Wall Street | Digital Dopamine Ep. 9

    I Thought We Had More Time.... It feels like not too long ago, when I published my article and 5th episode of the Digital Dopamine podcast, “Tokenizing Private Credit, Real Estate, National Debt, and Everything Else“, where I warned about institutional efforts t start tokenizing assets and little did I know, some major players were relatively low key but making move swiftly. The biggest players are The DTCC and Stellar Foundation, who inked a deal to enable the tokenization of DTC-custodied assets on Stellar’s blockchain. This news in itself is actually pretty cool, in my opinion. My bias stems from knowing Stellar’s past and how far they’ve come since the inception and initial release in 2014. They set out to be one of the few blockchains that wanted to bridge the gap between traditional finance and exchange by making products that allowed people who had family in underdeveloped nations to supply their family members funds almost instantly with little to no fees as well as no major worry about exchange rate. This of course sounds amazing and you’d think everyone would be on board with this adaptation but, as you can probably tell, the Society for Worldwide Interbank Financial Telecom (SWIFT), would not be a fan of losing it’s grip on international exchanges. SWIFT is a Belgium based cooperative that is essentially owned by the banks and other member firms that use its service. Which further supports evidence that the banking system fights so hard to stonewall blockchain based companies in order to make their own similar product to then move their customers on before they lose them to new and leaner companies working natively in blockchain. Now some might say that this isn’t really a “bank vs blockchain” situation and more so a question of if SWIFT can do what Stellar and XRP does, but in house. That’s the thing though, if SWIFT wanted to do it in house, why wouldn’t they try to stall regulations? You can’t convince me otherwise that the massive opposition and lobbying around regulatory frameworks for crypto isn’t influenced by big banks trying to keep money flowing through their pipelines. Link to article -> https://www.ccn.com/education/crypto/xrp-xlm-face-challenge-50-banks-back-swift-new-payments-framework/ I digress, though; The point of this article is to address the rapid adoption of tokenization. The deal the DTCC did with Stellar isn’t the first and probably won’t be the last deal it has done with Layer 1 and Layer 2 blockchains. Before Stellar, DTCC partnered with Digital Asset on the Canton Network to tokenize DTC-custodied U.S. Treasury securities, with DTCC serving as co-chair of the Canton Foundation alongside Euroclear. That MVP targeted the first half of 2026, and in July 2025 a broad industry group already completed live 24/7 trades with onchain intraday and after-hours financing using tokenized Treasuries on Canton. Separately, DTCC named Chainlink as the data and orchestration layer for its forthcoming tokenized collateral platform — another distinct partnership worth a mentioning. DTCC also has a concrete platform timeline independent of any single chain: limited production trades begin in July 2026 with a full platform launch in October, covering Russell 1000 stocks, ETFs, and Treasuries under an SEC no-action letter obtained in December 2025. So the DTCC is not new to this, they true to this. But they aren’t the only ones in the race to tokenized assets. You have ICE, the Intercontinental Exchange, not the useless and corrupt Immigration and Customs Enforcement agency. The Intercontinental Exchange is the owner of the NYSE and they are backing tokenized securities initiatives tied to OKX . Then you have the Nasdaq developing infrastructure for blockchain based stocks with Kraken parent company Payward. There are plenty more examples of big players making moves but the problem is that no one knows about it! I can go up to almost any one of my family or friends, intelligent folks, and 90% of them would not know that these institutions and depositories are trying to tokenize let alone know what the tokenization of assets even is. So we need more education around this subject and hopefully folks can start to pay attention to who’s making deals with who around these major changes, so that you can plan accordingly to either shuffle your assets around, learn more about blockchain and crypto to maybe invest in blockchain companies doing REAL and PROVEN work to improve our financial systems and railways, or just so that you understand it and not surprised when you see weird changes in your retirement account in terms of allocations and processes. Wait, We DO Have More Time.... With these changes, it doesn’t mean we don’t still have time to learn a bit about them and about the companies behind them. So I’m gonna focus on the 2 main players of this article, Stellar and the DTCC. Stellar (XLM) Stellar was launched in 2014 by Jed McCaleb and Joyce Kim. McCaleb was a notable figure in early crypto history — he had previously created the Mt. Gox bitcoin exchange and co-founded Ripple (XRP) before a falling out with Ripple’s other co-founders led him to start a new project. Stellar’s codebase initially forked from Ripple’s protocol, but the team rewrote the consensus mechanism, resulting in the Stellar Consensus Protocol (SCP) — a federated Byzantine agreement system designed to be more open and decentralized than Ripple’s approach. Unlike many crypto projects with a profit-driven corporate structure, Stellar is steered by the Stellar Development Foundation (SDF), a non-profit. You can probably see why I actually respect this blockchain company and strongly believe they deserve a role in our financial systems future. From the outset, its stated mission was explicitly aimed at financial inclusion and cross-border payments — connecting “people, payment systems, and banks” and serving populations underserved by traditional banking. Between it’s inception in 2014 to 2018, Stellar was making major moves inking partnerships and implementing their protocol overhaul. The amount of real world business deals made were a clear sign to me that this company will be insanely successful, and they were! Now I wasn’t invested in crypto during this time since I was still very new to the space. I was young and broke as well, so investing wasn’t the first thing I did with the bit of extra cash I had (even though I should have 😭). But from 2014-2018, Stellar exploded +7000%........... yeah i know, I’m salty as about it too. Even today, as of 6/13/026, its up 5,990% since it’s inception. The era of legit blockchain companies going to the moon like this is long gone. But that’s not to say this is no longer a good company to invest in. If anything, it might be an even better time since you wont have to worry about it being a really risky bet anymore. It’s intertwined in so many partnerships with new and legacy business alike, from a partnership with IBM to launch “World Wire,” a cross-border payments network built on Stellar’s rails, involving a number of banks experimenting with stablecoin-based settlement, to the expansion of anchors (regulated on/off ramps) across Latin America, Africa, and Southeast Asia, where remittance use cases gained the most traction. Even more with stablecoins, Stellar has become one of the better networks for stablecoin issuance due to its low transaction fees and quick settlement times. USDC, a stablecoin owned by Circle (ticker: CRCL), is a great example if a stablecoin issued via Stellar, given the fact that they are a pretty big public company now. And again, that’s just some of the partnerships and use cases it had BEFORE 2024. In 2024 they then released their next huge update, which was the launch of Soroban. Soroban was Stellar’s smart contract platform, in a way similar to how Ethereum has smart contracts. That’s about the only thing Stellar and Ethereum’s smart contracts have in common, the fact that they are smart contracts lol. Ethereum smart… Get full access to Digital Dopamine at digitaldopaminellc.substack.com/subscribe

    The Quiet Deal That's Reshaping Wall Street | Digital Dopamine Ep. 9
  7. May 31

    Obsidian Obliterates Opps

    Ohh, Where Have You Been, Obsidian… Very rocky life over the last month and a half, and I was kinda in a funk due to my recent layoff. I wasn’t able to avoid the fade this round 😭 Fuggin’ AI…. But I’m looking at this as a new chapter in my life to force my hand in exploring new opportunities while also being able to spend more time on Digital Dopamine. That being said, I realized that a lot of the organizational tools I used stemmed from tools I used at work. Most of these tools, though, were paid for by the company, and outside of my workday, I didn’t really need any personal organizational tools outside of generic Apple apps. When time started to feel like it was slipping away from me and being wasted on procrastination, bad timing, or just flat-out forgetting. Made me realize how much I need clear direction and organization to be productive, so I decided to do some hunting for some new and free tools I can use for my personal station. I went through a lot of options, and none of them seemed to be as geared towards developers as Obsidian was. Plenty of single-use cases within the other software, but Obsidian takes the cake because of its maturity and plugin ecosystem. I was looking for an all-in-one solution, and with the right plugins, Obsidian fulfils all of my (current) needs. That being said, Joplin and LocArk were close runner-ups, and depending on what you’re looking for, those options may serve you better. There was another open source product called Memos, and it’s a self-hosted note-taking timeline. It resembles Bluesky or a Facebook feed, but it’s just quick, timestamped notes. The devs put it nicely: “A self-hosted timeline for quick notes, daily logs, links, and snippets. Open it, write in Markdown, and move on.” So I plan to use this in tandem with Obsidian. Leaning In Given the state of AI, I have no choice but to lean in. And I’m not talking about using it here or and there or using Cursor as my IDE from now on, but really REALLY lean in. I’m talking certs, deeper research into the history and academic papers, Databricks proctored exam, projects, etc. In this world of capitalism, we have to adapt or get left behind. Not because we aren’t still capable of good work, but because company shareholders have no ethics and require consistent profits year in and year out. So if you work for a public company, know that you most likely will need to adapt to using AI if it hasn’t already been shoved down your throat. This is one of the main reasons I started using Obsidian. I needed a new tool that I can use to keep myself organized and on pace to get done what I need to get done. Calendar events and notifications can only do so much, and I started to find that the tools that I usually used with work or even my personal projects all started to limit the features behind subscriptions, and became more of pay-to-use software than having a pretty generous free tier for individual devs. Notion was one of my go-to apps for dev notes and runbooks, and while the free tier is still pretty generous, the tool as a whole is so bulky with other things that can’t be used without a subscription, and AI is also something that isn’t too subtle in the app anymore. So the hunt began, what was free that had the same capabilities as Notion and didn’t force you to have a subscription to use FREE PLUGINS…..😒 (a bit salty) The thing is, what Notion offers for free can be obtained by other products that aren’t as cluttered with all of the premium features Notion has to offer. Through my search, time and time again, I saw Obsidian as the top contender IF not the winner, of the best software to use as a knowledge base and notes app for devs. I could not have been happier with my discovery. Whatcha Got, Obsidian? Now that we know how much I have geeked out over Obsidian, let’s actually take a peek at just a bit of what it has to offer. The sheer scope of the plugin library makes this software such an extensible tool, and there’s no way I can (over ever will lol) cover all of them. We will cover some of the more important plugins, though the main focus is on Obsidian and what the tool includes by default. The Vault You Didn’t Know You Needed To me, the feature that stands out the most, since Notion was lacking it, is the vault concept (seems more common than not these days). Everything lives in a folder on your machine. Plain .md files. That’s it. No proprietary format, no data stored on AWS or Google Cloud servers. If Obsidian disappeared tomorrow, you’d still have all your notes, fully readable in any text editor or app that reads markdown files. That peace of mind alone is worth switching, and on top of that, this makes Obsidian the perfect tool for introducing AI agents into your knowledge base and note-taking process. You can have multiple vaults too — so if you want a clean separation between, say, your job search grind and your personal dev projects, that’s a two-second setup. Keeping It in Sync One question I immediately had after setting up my vault was, “Okay, how would I be able to sync up Obsidian with the mobile app without using Obsidian’s paid sync option?” Since we’re on Apple hardware, the answer was shockingly simple — iCloud Drive. In Obsidian on your Mac, when you create your vault, navigate to your iCloud Drive folder as the save location. Obsidian will create its own folder there automatically. Then, on your iPhone, download the free Obsidian app from the App Store, tap Create new vault, and toggle Store in iCloud on. From there, open the vault switcher, and your vault shows up ready to go. One thing to note — make sure your vault lives inside the Obsidian folder that the app creates in iCloud Drive, not a manually created folder. iCloud needs that app-generated folder to handle sync correctly. You can verify this in the Files app under Browse → iCloud Drive → Obsidian. Setup Docs → https://obsidian.md/help/sync-notes Markdown First, Always Everything in Obsidian is Markdown. If you’re a developer and you don’t already write in Markdown, you’re gonna learn to love it real fast. Headers, code blocks, callouts, tables, and checkboxes — it all renders beautifully in preview mode. And because it’s just .md files under the hood, your notes are version-control-friendly. Throw that vault in a Git repo, and now you’ve got note history. You’re welcome. # 1. cd into the vault folder cd /users/{my_username}/Documents/Obsdian # 2. git init git add -A git commit -m “Initial Commit” # 3 gh repo create project-name --public --source=. --remote=origin --push ⚠️ Heads up — that command above uses the GitHub CLI (gh). If you haven’t installed it yet, the push step will fail. You can grab it with Homebrew: brew install gh gh auth login Run gh auth login once follow the prompts, you’re good to go from that point on. Backlinks & Internal Linking — This Is Where It Gets Good This is the feature that will most likely be the catalyst for how my notes and doc creation evolve. In Obsidian, you can link any note to any other note using double brackets — [[like this]]. That seems simple enough, but the magic is the backlinks panel. Every note shows you a list of every other note that links to it, automatically. No manual cross-referencing. You start building a web of connected knowledge without a need for heavy configuration or reliance on plugins. The Graph View Okay, I’ll be honest — the graph view is 30% useful and 70% just deeply satisfying to look at. It renders a visual map of all your notes and how they connect to each other. As your vault grows, this thing becomes this sprawling network of nodes, and it genuinely feels like you’re looking at your own brain. Useful for spotting orphaned notes (stuff you wrote and never connected to anything) and identifying your knowledge clusters. Canvas Canvas is Obsidian’s infinite whiteboard feature, and it’s built right in. You can drag notes, images, cards, and web links onto a free-form board and arrange them however your brain needs them arranged. I’ve b… Get full access to Digital Dopamine at digitaldopaminellc.substack.com/subscribe

    Obsidian Obliterates Opps

About

Tune in for a weekly dose of digital dopamine! Explore productivity apps, uncover tech trends, and dive into short coding tutorials tailored for new developers. Subscribe for insights that supercharge your tech journey! digitaldopaminellc.substack.com