Category: AI

  • A beginners guide to vibe engineering: Welcome to Vegas

    |

    In this post, I will assume 1) you have no experience with LLMs at all and 2) you think the idea of AI writing 80-90% of our code in the future is complete poppycock. Personally, I feel….less certain about the future, but I agree the claims of AI CEOs sound like total BS.

    First we’ll define vibe engineering, then I’ll give you the 6 rules for surviving the LLM Casino.

    What is vibe coding and vibe engineering?

    Andrej Karpathy had a long definition on Twitter of vibe coding that in many ways has been misconstrued to mean all sorts of things, like one-shotting from prompt to final product, or writing full software but never looking at the code. Here is my earnest definition:

    Vibe coding is when you enter an addictive flow state with an LLM slot machine. You test the software, provide natural language feedback, and may occasionally look at code, but you NEVER write a single line of code.

    As you can imagine, vibe coding is FUN, but in the same way that going to Vegas is fun. And in the same way, both are dangerous. Sometimes you get a slick looking website to show your Nordic friends, sometimes your MSPaint alternate history clone looks like crap, sometimes you delete prod. Fun!

    Vibe engineering is a little bit closer to going to Vegas and card counting or going to Vegas but with strict rules. When me and my husband went for Fabcon, we did 5-dollar blackjack. We both have addictive personalities and I’ve never properly gambled before, so we needed a plan and we needed to hold each other accountable.

    We agreed in advance we wouldn’t spend more than an allocated amount. We were having so much fun we changed that to allocated amount + winnings. Well, so much for willpower. Ahead of time, we also agreed that we were okay if we lost all our starting money. This was a $75 entertainment expense and not a bet. Cheaper than our Penn and Teller tickets, but not as cool either.

    So, we entered the den of vice with $75 between us. I ended up wasting $15 on roulette because I’m stupid and didn’t understand I could cash the roulette chips back out to regular chips? Did I mention this was my first time in a casino?

    Miles did really well, so between the two of us we left with $10 more than we started. Overall, we had a wonderful, wonderful time. We got to socialize with some vacationers. The dealer had to follow robotic instructions for how she played but was free to give us helpful tips on when to hit and how to beat her. Just purely delightful.

    Also, whenever I see slot machines now, I feel sick to my stomach about all the dark UX patterns. They don’t look like they did in the movies anymore. They are just giant wraparound screens with bright lights and sounds.  Horrific iPads warped by Mammon.

    Slot machines at my dying mall

    Slot machines are the ultimate skinner box designed to manipulate and abuse you. Utterly disgusting🤢. Remember, some casino games are more dangerous than others, so pick your poison wisely.

    Anyway, this is vibe engineering. Play stupid games, get stupid prizes, and have a plan along the way. Ready to start?

    The 6 rules in the LLM casino

    1. The house always wins and LLMs always screw up

    In gambling, the house always wins in the long term. Maybe not if you can count cards. Maybe not if you are lucky. But in general, assume you are going to lose your shirt. Don’t bet more than you are willing to lose.

    In the same way, assume the LLM will screw up eventually. For example, maybe it will delete your prod database. Maybe it will cause an AWS outage.

    Accordingly, take as many steps as possible to reduce the negative consequences of screw-ups. Use Git and commit frequently. Consider using a sandbox or docker container. Implement linting, type checking, and CI/CD.

    Additionally, only bet what you are willing to lose. Start with side projects. Start with tasks where if the code is completely wrong, nothing is hurt. Do tasks that are easily verifiable and have a low risk of subtle errors.

    2.Pick the games with the best returns

    Different casino games have different odds. Blackjack is one of the best games to play if you want to lose your money slowly. Keno and roulette are the worst (whoops!). So how do you pick games with the best returns for LLMs?

    LLMs are pre-trained on massive, massive internet-sized amounts of data. So, to a first approximation, languages that have a large number of Github repos like Python and Typescript will do better.

    Modern “reasoning” LLMs are trained on Reinforcement Learning with Verifiable Rewards. These are math and coding tasks where there is a known correct answer, and the models can be rewarded for getting complete or partial credit towards those solutions. So, to a second approximation, you want languages and problems where there are clear and correct solutions.

    In an interesting study, one of the best languages for LLMs is Elixir, in part because of the fact that there is often a single right way to do things in that language, unlike say PowerShell.

    3. Understand your poker chips

    In a casino, you often bet with poker chips. In the LLM casino you have two types of chips: tokens and time.

    Tokens are subword chunks that are how LLMs think, speak, everything. Model provider charge in tokens with different rates for input tokens, output tokens, and cached prompt tokens. When it comes to cost, this will be the number one thing to think about. Imagine if when you send a text message you got charged 1 cent per word. It would affect how you wrote!

    The other thing that’s easy to blow in LLM Vegas, where there are no clocks or windows, is time. Time building the wrong thing. Time waiting for the AI. Time cleaning it up. One study found experienced devs in complex repos wasted 20% of their time trying out Cursor when they thought it was making them faster. Another study found junior devs were not significantly faster for basic tasks in an unfamiliar library.

    And what do these games pay out? Well in lines of code of course. And tech bros will brag about 10k lines of code per day. But I think the Dijkstra quote here is relevant here.

    My point today is that, if we wish to count lines of code, we should not regard them as ‘lines produced’ but as ‘lines spent’: the current conventional wisdom is so foolish as to book that count on the wrong side of the ledger.

    Remember, the house always wins and LLMs always screw up.

    4. Go in with a plan

    It is fun, and entertaining, to see if Claude can recreate sand physics games from a single prompt. But for anything that you actually care about, you should build out a plan. LLMs “think” as they type, one token at a time, so if you can get them to do the thinking before the building, they perform better.

    Claude Code has a planning mode, which you should use frequently. I personally like SpecKit if I need more intensive planning and scoping. That said, I think most Spec-driven-development is just playing Barbie Dreamhouse but with LLMs as the Barbies and scrum personas as the outfits, but I find a little bit of it useful sometimes.

    But in general, don’t just “YOLO” your way through this. Don’t just give it a single prompt and walk away. Take the time to define success criteria, failure criteria, and the sorts of automated tests you want.

    5. Don’t get distracted by shiny lights

    Vegas is a sensory overload, and as an introvert, I hate it. Noises, sounds, the brightest colors you’ve ever seen, free drinks at the blackjack table. Vegas is designed to overstimulate you and keep you distracted. When I got there, I decided it was an ideal vacation for three sorts of people: the rich, kids in their 20s, drunks. Ideally all 3.

    Your coding agent is also subject to distraction. It is your job to created automated ways for your computer to slap it on the wrist and say “hey, stop that.”. Some people refer to this as backpressure.

    AI agents do best when they can sort of bumble around like a dumb Roomba, and bump into walls until they find their way to the solution. How can you put up those walls to help it?

    Use a typed or compiled language. Use linters. Use language service protocols (think IDE tools). Use automated tests. Use end to end tests and tools like Playwright. Use git pre-commit and pre-push hooks.

    Anything and everything so when your LLM is dumb like me and wants to play roulette you have an automated way to go “ah, ah, ah! no, no, no!”.

    6. Get in and get out

    One of the keys to getting good results from an LLM is to provide it with just enough information and nothing more. This is measured by the “context window” which is the sum total of tokens an LLM can see at once. This includes the system prompt, the user prompt, any MCP servers, and the chat history. Context rot is the idea that the more of that window is filled the more “confused” the LLM will get.

    Get in, get out, clear the context window frequently. If you are letting it run for one long session and it performs multiple compactions, which is where it tries to summarize the previous session and continue working. It’s known that quality quickly degrades after multiple compactions.

  • How I keep up with AI, and why you honestly shouldn’t

    |

    In 2016, I thought I knew how to keep up with technology. In 2026, I’m less sure.

    AI feels a bit like fast fashion. Oh you are wearing cerulean? Pfft. Everyone knows that chartreuse is in now. How embarrassing.

    Oh you are using the Power BI MCP server? Skills are in. Oh you are using skills? Everyone is wrapping agents in for loops and naming it after the dumbest character in the Simpsons. How embarrassing.

    In the beginning of this, I’ll cover why keeping up with AI is bad for your mental health and well-being and at the end I’ll share how I do it, in case slamming your hand in a door isn’t available as an option instead.

    The AI community is unwell

    The AI community, defined broadly as everyone talking about AI, is mentally and emotionally unwell compared to other communities I’m in. I don’t mean that as a slight. I’m part of that community and I’m not as grounded and centered as I would like. I have to take regular intentional steps to stay grounded. When I look at the distributions of folks, I see more illness than wellness, on average.

    So what do I mean? Due to familial reasons, I’ve been exposed to fantastical thinking on a weekly basis since I was about 11. I think I have the shape of it. And I see it regularly when certain folks talk about AI. Saying “AI is going to take our jobs” but not stopping to say “Well, if taken as true, what consequences would that have?” or “What evidence would I need to see to convince me otherwise”.

    No, there’s just a gut feeling, a confirmation bias, and a seeking of information to affirm that bias. An entire AI agent system indistinguishable from LLM psychosis, parody, or performance art.

    An ungrounding.

    Memetic viruses

    Swimming in these waters is unsafe because you might catch a memetic virus. What’s a memetic virus? Well, in high school there was one that went around called The Game. The way you played The Game was to not think about it. The moment you remembered its existence, you lost. Thankfully the webcomic, XKCD, found a cure.

    There are memetic viruses floating around, and one hit me briefly. The phrase “permanent underclass”. You ever watch a horror movie and for the next day you are jumping at shadows and kinda spooked? This one spooked me. Until someone pointed out the concept was fairly selfish, individualistic, and narrow. Fairly American too if we are being honest. If there’s going to be a “permanent underclass”, wouldn’t you much rather “Rage, rage against the dying light”?

    AI culture is, largely, internet culture. Meme and jokes and “jokes” and AI bots pushing agendas. If you spend too much time online and not enough time touching grass, you’ll find your very own mind virus that you haven’t been inoculated for. Be wary.

    A sane approach

    I think there’s a better way to think about all of this uncertainty. Imagine you were recently hired to work for a foreign company, like me with Tabular Editor. Now imagine that you had a very, very strong uncertainty if you were going to emigrate to that country in the future. So your range of needs goes from “I should learn a few pleasantries” to “I NEED to become fluent”. How would you approach that uncertainty?

    Well, some things in language learning can be crammed and some things can’t. Tuning your ear takes time, no matter how much you cram. Of the Scandinavian languages, Danish is the hardest to hear.  There’s a Norwegian comedy skit about this even. So, a great investment would be to listen to slow Danish podcasts or Danish music. Minimal effort, but you start the clock on things that can’t be rushed.

    With AI, the equivalent is to get a sense of the jagged frontier of AI. Use arena.ai to compare model strength. Track AI failures to make your own personal evaluation benchmark for new models. Build stuff. Anything to build your intuition of what AI does well and when it fails catastrophically. This intuition cannot be developed from reading about AI.

    An insane approach

    Or, you could, like me use Feedly to follow a large number  (~50) of RSS feeds. You could listen to 10 different AI-related podcasts. You could scan Hacker News on a daily basis. But I wouldn’t recommend it.

    I have different goals. For whatever reason, I decided that I want to teach and consult on AI. Well, I don’t want to consult on it. If you hand me an AI project, I’ll hand you 2x my usual rate. But just last week a customer was asking if it made sense to have Claude review our Data Warehouse design. Being able to articulate the pros, cons, and limitations there is important to me.

    Good luck in whatever your goals are and remember to go outside and enjoy some sun.

  • Is AI taking our Power BI jobs? Not exactly, but it’s getting bumpy.

    |

    If anyone tells you with certainty what’s going to happen to Power BI jobs because of LLMs, they fall into one of two categories:

    1. Bullshitters
    2. People who fired a consultant because AI helped them successfully do it instead.

    I fall into the former category and I’m going to impart all of my great wisdom in this blog post. But be aware than anyone who tells you what will happen more than 3-6 months out is bullshitting you. We are all just guessing and extrapolating.

    Enough with the pithy cliches

    I’m pretty tired of the “AI won’t take your job, but someone with AI will” cliche. I get it, it makes sense. But it’s also fairly reductionist. AI doesn’t need to replace you to make you lose your job. And learning to use AI effectively isn’t a guarantee that you’ll keep it.

    Some jobs are just gone. Chegg was a company that helped students cheat on homework and ChatGPT was a death knell for them. StackOverflow was in decline for a while but ChatGPT accelerated it. No amount of AI will help those employees keep their prior jobs. Those jobs are gone.

    Other jobs may go away from efficiency gains. Historically, if a technology causes 10 workers to be 11% more efficient, what does the company do? They fire one of the workers. We aren’t getting a utopia with 4 day workweeks, folks. That’s not how capitalism works.

    There are exceptions, however. ATMs make bank branches cheaper to run, so the number of branches proliferated, and the number of bank employees increased. The invention of the digital spreadsheet led to huge growth in the field and a whole new category of worker.

    Sometimes making something cheaper or easier to access increases demand. See Jevon’s Paradox as AI enthusiasts like to spout. But just as often it doesn’t.

    I don’t have any reason to believe that AI efficiencies will lead to increased demand for BI developers, I just don’t. It’s far, far more likely that the things AI will be able to do increases the demand for self-service greatly and the things it can’t do will lead to stable demand for those tasks.

    People will be able to easily build and prototype the reports they need themselves, but making sure they are building the right thing and validating the business logic will remain difficult and needed. Get good at that.

    Bi-athletes

    BI developers are bi-athletes. I compare us to chessboxers (yes that’s a real thing) or people competing in a biathalon (which is completely different than a triathalon or decathalon? WTH). On the spectrum of coder to designer, BI developers sit smack dab in the middle. Users never know what they want and we have to tease it out of them.

    We are therapists for people’s data.

    And here’s the key thing. Those same skills make us well-positioned to handle what is coming. It’s time to lean into the therapy part because the coding part is becoming less important. Where we sit on that spectrum is shifting.

    You thought you were a boxer but you need to get better at chess. You thought you were a skier but you need to get better at sharpshooting. You thought you were a coder but you need to get better at design and iteration.

    The bitter reversal for BI developers

    Every skill and attitude gap you’ve ever complained about in your users or customers is going to swing right back around and hit you in the face like a karmic boomerang.

    • Users don’t know what they want? You don’t know what you want AI to do.
    • Users change their mind when they see the report? You will change your mind when you see what slop AI codes for you.
    • Users aren’t good at writing specs and requirements? You aren’t good at writing specs and requirements.

    Every single skill you wish your users had when you try to do work for them, those are skills that you should be improving on a daily basis. All of those “soft” skills just got a lot less soft and a lot more critical to your job 5 years from now. Get cracking.

    Ethan Mollick just put out a fascinating blog post about his “vibe entrepreneurship” course for MBA students, and everything resonates to me. Everyone who wants to use AI will benefit from classical communication and management skills.

    Why Power BI and Fabric are safer for longer

    Based on my experience with vibe coding a lot of things, I think a lot of an LLM agent’s success depends on these 4 factors:

    1. The ability to safely make changes. Source control, workspace branches, containers, etc.
    2. The ability to automatically verify the results. Compilers, typed languages, unit tests, integration tests, etc.
    3. The ability to automatically receive feedback. Compiler warnings, type check warnings, language linters, git commit hooks, etc.
    4. Reinforcement Learning with Verifiable Rewards. Much of the modern improvement in LLM reasoning comes from RLVR and fine tuning a model based on real problems and measurable success. That’s easy to do for Python, hard to do for Power BI.

    When I look at Power BI and Fabric, it just isn’t there yet. Git integration for Fabric has been a sore spot and is on-going. The modeling side of Power BI is rock-solid but the PBIR metadata is not and there isn’t a decade of PBIP support.

    My 2×2 matrix of ideal AI tasks

    I think folks in the Power BI and Fabric space are going to be safer for longer than say the backend coding space. But this will be unevenly distributed across types of tasks. Even today with the Power BI modeling MCP server, there are some tasks that are trivial to hand off to an AI and some that are very dangerous. Aim for the upper right quadrant here. Expect more tasks to move in that direction.

    Unfounded predictions for 2026

    If I had to guess where we will be by the end of 2026, and I am guessing, I think that the shockwaves that were sent out in December 2025 by Claude Opus 4.5 and ChatGPT 5.2 Codex will finally reach the shores of Power BI and Fabric by December 2026 at the latest.

    Change is coming.

    Now, if you are feeling overwhelmed, scared, or frustrated, I hear you. I feel you. My advice is don’t try to keep up. Try to keep situational awareness by picking a few bloggers or podcast to follow and try to learn by osmosis.

    It is much, much better for you to try to build something with AI for 15 minutes every day than it is to try to cram it in over a long weekend. Treat this like you would learn a new language or a new culture.

    No one learns a language by binging. No one ever feels FOMO because their friends are learning Danish.

    Although I will be learning Danish because of a new job I’m starting next week, so maybe you should feel a little FOMO 😜.