<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>thebiglaskowski</title><description>neural network navigator, crypto enthusiast, command-line cowboy</description><link>https://thebiglaskowski.com/</link><item><title>911</title><link>https://thebiglaskowski.com/blog/911/</link><guid isPermaLink="true">https://thebiglaskowski.com/blog/911/</guid><description>Two and a half years off the blog. Divorce, walking, Rianna, my mother&apos;s dementia, a dream job in AI — and the slow, weird realization that the universe is finally paying down a long-overdue tab.</description><pubDate>Fri, 17 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There are eight billion people on this planet. I doubt more than twenty of them will ever read this post, and of those twenty I doubt a meaningful percentage will give much of a shit. Fine by me. The blog&amp;#39;s been dark for two and a half years. This one&amp;#39;s mostly for me — a marker I can stumble over years from now and remember, in specifics, the stretch where my whole life changed and the hell I had to walk through to get to the life I deserve.&lt;/p&gt;
&lt;p&gt;There&amp;#39;s a pile of fucked-up shit that came before this story even starts — decades of it, the kind that will almost certainly never be written down. I&amp;#39;ve paid those dues, and I&amp;#39;ve earned my peace.&lt;/p&gt;
&lt;p&gt;For most of my life I&amp;#39;ve been afflicted — and I&amp;#39;ll stand behind that word — with seeing the numbers 9-1-1. Every day, often multiple times a day. Clocks, license plates, the back of receipts, hotel rooms I didn&amp;#39;t pick, the timestamp on a text I didn&amp;#39;t want to open. Call it confirmation bias, call it pattern recognition, call it the universe trying to tell me something — depends on what kind of mood you catch me in. Here&amp;#39;s the part that used to bug me: I was born on 3/18/1979. Run that through the numerology math and it shakes out to a birthday number of 9 and a life path of 11. Nine, eleven. Believe in that stuff or don&amp;#39;t — the math is the math. For decades I had no idea what any of it was supposed to mean. Then on September 11, 2023, I found out my wife had been cheating on me again, and the number finally delivered its memo.&lt;/p&gt;
&lt;p&gt;That&amp;#39;s not the post, by the way. This is all I&amp;#39;m ever going to say on the subject — that shit is in my rearview mirror where it belongs. I&amp;#39;ll spare you the receipts here. It&amp;#39;s enough to say it was ugly in the specific way that only a long marriage to the right combination of character flaws can be ugly — somewhere in the neighborhood of battling Amber Heard and Jada Pinkett Smith rolled into one, with the legal fees to match. I lost everything I&amp;#39;d spent twenty-plus years working for. I have never in my life been happier to lose.&lt;/p&gt;
&lt;p&gt;This post is about what came after.&lt;/p&gt;
&lt;h2&gt;Walking&lt;/h2&gt;
&lt;p&gt;I&amp;#39;d spent most of my adult life behind a screen. Twenty-six years in IT will do that — my identity was my job, and my job was a keyboard, and when I got home the only thing I could bear to look at was a different keyboard. I was a workaholic by default. That was the shape of me.&lt;/p&gt;
&lt;p&gt;After I left, I couldn&amp;#39;t stomach the idea of sitting down in front of a computer for a single unnecessary second. Whatever I was going to rebuild, it wasn&amp;#39;t going to be that. I traded the screens for walking. I picked a spot — the &lt;strong&gt;Mishawaka Riverwalk&lt;/strong&gt; — and started going, and kept going, and fairly quickly I stopped being able to imagine the version of my life where I didn&amp;#39;t go. I&amp;#39;d read somewhere that walking heals the part of the brain that trauma wrecks. I don&amp;#39;t know if that holds up under a white coat, but I can tell you it held up under my shoes.&lt;/p&gt;
&lt;p&gt;I was fasting twenty hours a day. The anger — and there was a lot of it those first months — turned out to be excellent fuel. &lt;em&gt;Mindset rocket fuel&lt;/em&gt;. I dropped a serious amount of weight very quickly, which was a nice side effect of going through the worst chapter of my life. Credit where credit is due.&lt;/p&gt;
&lt;p&gt;The anger didn&amp;#39;t last long, though, and here&amp;#39;s the part that surprised me: this wasn&amp;#39;t the first time. Or the second. Or — I&amp;#39;m embarrassed to put a number on it. The pattern was old enough by September 2023 that the news didn&amp;#39;t hit like the first time anymore.&lt;/p&gt;
&lt;p&gt;Why did I stay? Because my parents split up when I was a kid for the same reason, and I&amp;#39;d promised myself my whole life I would never do that to my own family. I held onto that belief like it was load-bearing. It wasn&amp;#39;t. Keeping the family together was not, in fact, more important than my own happiness, and I was an idiot for thinking it was. I put up with what the next hundred men put together wouldn&amp;#39;t have. I&amp;#39;m still mad at myself for not having the self-respect to walk out earlier. Lesson learned, paid for in cash.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Been there, done that. Not dragging my own corpse through another round of dark-road self-pity.&lt;/em&gt; The stages of grief are supposed to take months or years. I kung-fu&amp;#39;d them in weeks. People say &amp;quot;I don&amp;#39;t recognize who I was before&amp;quot; — for me it was the opposite. I finally recognized who I was, and who I&amp;#39;d been pretending to be for a long time on someone else&amp;#39;s behalf.&lt;/p&gt;
&lt;p&gt;The silver lining showed up early. I was free. Free to do whatever I wanted whenever I wanted. I was happy — actually, measurably, day-to-day happy — for the first time in as long as I could remember. Stress still existed but had lost its grip on my nervous system. Losing everything I&amp;#39;d worked for turned out to be the cost of being myself again, and the math worked out cleanly: I&amp;#39;d have paid more. I traded a lifetime of insomnia for being an early bird. I&amp;#39;ve gotten up at 5 AM almost every day since I walked out of that house. I like it.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;Mitch&amp;#39;s Corner&lt;/h2&gt;
&lt;p&gt;I was nervous about figuring out how to meet a woman. I was also wrong about it — turns out the secret is &amp;quot;leave the house and go somewhere.&amp;quot; I know. I&amp;#39;m embarrassed I had to learn that as an adult, but I did, and if you&amp;#39;re coming out of something and quietly worrying that you&amp;#39;ve forgotten how human beings work, the answer is mostly just: show up.&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s something I picked up on the way: people who&amp;#39;ve lived under narcissistic abuse tend to stop going places. They cancel plans. They invent excuses. The pattern is subconscious — they&amp;#39;re hiding shame that isn&amp;#39;t theirs, on behalf of someone who made them feel it. When I started recognizing the pattern I&amp;#39;d been running, I started running a different one. I put myself in rooms with people.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mitch&amp;#39;s Corner&lt;/strong&gt; is a neighborhood sports bar, and that was the room. Small, unpretentious, the kind of place where by the third visit the bartender knows your drink and by the fifth you&amp;#39;re on a first-name basis with people whose last names you&amp;#39;ll never learn. I started going. I started staying. I started making actual friends — the first real new friends I&amp;#39;d made as an adult in I don&amp;#39;t want to say how long.&lt;/p&gt;
&lt;p&gt;Some random woman at the bar, a few visits in, told me I was &lt;em&gt;hypervigilant&lt;/em&gt;. I had to Google the word. Alien environment, no rules, no commitments, testing out freedom for the first time in my life — of course I was hypervigilant, I was a man freshly released from a cage and still checking the ceiling for bars. It took a while to loosen up. When I did, the strangest fucking thing started happening: women started giving me attention. For the first time in my entire life, at the age I am, at the weight I was, women were noticing &lt;em&gt;me&lt;/em&gt;. I can&amp;#39;t overstate how surreal that was. I kept turning around to see who they were actually talking to. Turns out it was me. Turns out it had been an option all along.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;Work&lt;/h2&gt;
&lt;p&gt;All of this — the walking, the bar, the slow rebuild — was happening while the divorce itself dragged on for over a year before it was finalized. Through that whole stretch I somehow kept my head above water at work. I&amp;#39;d taken an Internal IT role at &lt;strong&gt;Aunalytics&lt;/strong&gt; on a two-person team: me, and the lead engineer I&amp;#39;d been hired under.&lt;/p&gt;
&lt;p&gt;Call him my Yoda. I&amp;#39;m going to keep him anonymous, partly because of how this ends. The guy was an encyclopedia of IT knowledge — he could rattle off the seven layers of the OSI model from memory, no &lt;em&gt;Please Do Not Throw Sausage Pizza Away&lt;/em&gt; required. Which I&amp;#39;m technically supposed to be able to do but realistically Google like a human being with working common sense. He was the intellect; I was the grunt. I liked the split.&lt;/p&gt;
&lt;p&gt;The problem was focus. He was on prescribed Adderall and popping it like Skittles. At night he smoked weed the way other people watch the news. His brain was brilliant and scattered in equal measure, and he had a hell of a time actually finishing things. The last day I worked with him, he spent half the shift trying to figure out where on earth you buy a gallon of beaver anal gland secretions, because he&amp;#39;d just found out that &lt;em&gt;castoreum&lt;/em&gt; — which is, technically, beaver anal gland secretion — has historically been used as a vanilla flavoring. I wish I were making that up. It&amp;#39;s just not something a gainfully employed adult usually spends a Thursday trying to source a gallon of.&lt;/p&gt;
&lt;p&gt;The next morning I got pulled into a Teams chat and asked to disable his account. They&amp;#39;d let him go. I felt genuinely bad for him — good guy, heavy personal stuff of his own going on — but the HR side wasn&amp;#39;t my call. Wherever he landed, I hope he&amp;#39;s good. If we ever cross paths I owe him an IPA and an afternoon of catching up.&lt;/p&gt;
&lt;p&gt;The practical side, in the meantime, was: &lt;em&gt;what the fuck am I supposed to do now&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;For the next eight months the answer turned out to be &lt;em&gt;everything&lt;/em&gt;. I ran the entire internal IT operation alone, which was partly competence and partly pure stubbornness, since I was also finalizing a divorce and watching my mother slide into dementia in the same stretch. When a replacement finally landed — a good hire; I&amp;#39;ll call him Newblood, because that&amp;#39;s what he became in my head — I was genuinely thrilled to have a partner back on the team.&lt;/p&gt;
&lt;p&gt;And that&amp;#39;s when I hit burnout for the first time in my career.&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve been in IT since 2000. Twenty-six years of steady grinding across Microsoft 365, Active Directory, Intune, Entra, infrastructure, endpoints, tickets. I&amp;#39;d always found it interesting. Now I was tired, and I hated that I was tired — plenty of people would have killed for my role, and I did not want to be the ungrateful prick. But &lt;em&gt;interested&lt;/em&gt; had quietly turned into &lt;em&gt;done&lt;/em&gt;, and I didn&amp;#39;t know how to get it back.&lt;/p&gt;
&lt;p&gt;What broke the spell was a Teams chatbot.&lt;/p&gt;
&lt;p&gt;Quick context: the company I work for is effectively two companies stapled together. One half is an MSP serving hundreds of clients across Michigan, Indiana, and Ohio — data centers, cloud services, service desk, the whole shebang. The other half develops AI products on top of client data. Last year we started building &lt;strong&gt;MIKE&lt;/strong&gt; — &lt;em&gt;Managed Insights and Knowledge Engine&lt;/em&gt; — an internal LLM trained on our own company&amp;#39;s data, our clients&amp;#39; documentation, and our entire ticketing history, so our managed-services team could ask it a ChatGPT-style question and get answers grounded in what we actually know.&lt;/p&gt;
&lt;p&gt;MIKE started as a web interface. Someone wanted a Teams chatbot version, because all of us live in Teams anyway. I got pulled into the meeting as the M365 tenant admin — the one with the keys to plug it in — and halfway through I was asked if I could actually &lt;em&gt;build&lt;/em&gt; it. Which was a hell of a question, given the company employs dozens of real developers who do this for a living. I semi-volunteered. I&amp;#39;ve been an AI junkie for years — accounts on ChatGPT, Grok, Gemini, Claude, GitHub Copilot, used daily for my own projects and for anything at work that saves me keystrokes — and the idea of building a production chatbot on top of our own model was exactly the kind of challenge I hadn&amp;#39;t had in years.&lt;/p&gt;
&lt;p&gt;I built it. It turned out great. More importantly, it got me out of the loop I was stuck in. I turned into a black hole, obsessed with making the thing better.&lt;/p&gt;
&lt;p&gt;A few months into all of that, the company posted a job for &lt;strong&gt;AI Quality Analyst&lt;/strong&gt;. I read the post, thought &lt;em&gt;what the hell do I have to lose&lt;/em&gt;, and put my name in the hat. The interview ended up being with my own boss — who, if I got the role, would stay my boss. I love working for the guy. That helped. The offer came back fast, and on April 1, 2026, I officially moved into the new role full-time.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m two and a half weeks in as of this writing. I continue to work on the chatbot and on agent development, and I&amp;#39;m also responsible for making sure the data MIKE is trained on is accurate and complete. The difference between a useful AI product and a confident-sounding liar is mostly the training data. That&amp;#39;s the job. I&amp;#39;ve already done work I&amp;#39;m prouder of than most of what I shipped in the last two years. Burnout is gone. I am, for the first time in a long time, genuinely excited about the work I do every day. A job in AI, aligned with my personal interests more tightly than any role I could have designed for myself. Along the way the comp jumped — a couple of massive raises, which are basically the only reason I&amp;#39;ve kept my head above water through the divorce. I could not be happier with where I landed.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;Mom&lt;/h2&gt;
&lt;p&gt;My parents split when I was in fifth grade, so they weren&amp;#39;t together when my dad passed in 2020. About a year after he died, I started noticing the first cracks in my mother&amp;#39;s memory.&lt;/p&gt;
&lt;p&gt;The clearest early incident was her birthday in 2021. The four of us — me, my then-wife, my sons — made plans to meet her at &lt;strong&gt;Carrabba&amp;#39;s&lt;/strong&gt;. We showed up on time. We waited an hour. We called her, repeatedly. No answer. When she finally walked in she said she&amp;#39;d been stuck in traffic. She lived five minutes away.&lt;/p&gt;
&lt;p&gt;It kept happening. Plans she&amp;#39;d made with us — &lt;em&gt;come to the house for dinner&lt;/em&gt; — and we&amp;#39;d arrive to a dark house and an empty driveway. I&amp;#39;d track her phone and find her across town at a friend&amp;#39;s place, with no idea she&amp;#39;d had anywhere else to be. Her friends started pulling me aside, worried. For at least a year before I left my marital home I was calling her every day to check in and remind her of the things she used to hold without help.&lt;/p&gt;
&lt;p&gt;I believe in divine timing. I&amp;#39;d been worried about her living alone for a long time, and when the divorce blew up my life I moved in with her. That&amp;#39;s when I learned how bad it really was.&lt;/p&gt;
&lt;p&gt;The forgetting was one problem. The nights were a different one — sundowning, I learned later — where she&amp;#39;d surface into full delusions. I was being kidnapped and held against my will. She torched a lifelong friendship over a delusion she&amp;#39;d convinced herself was real. I&amp;#39;d walk her back to reality and in the morning she&amp;#39;d wave it off as a bad dream. Then it would happen again the next night. The summer her closest friend went to Croatia, I picked up dog-sitting at the friend&amp;#39;s empty house, and the few times I stayed over to get a few hours of distance, my mother would call me in the middle of the night screaming that she was going to send the police to &lt;em&gt;surround&lt;/em&gt; me. By morning she&amp;#39;d have no memory of it. I&amp;#39;d have to pretend it never happened or it would destabilize her for the day.&lt;/p&gt;
&lt;p&gt;Her doctor called me at work one afternoon and asked if I&amp;#39;d start coming to appointments and making sure my mother took her thyroid pill daily. Then she said the word out loud — &lt;em&gt;dementia&lt;/em&gt; — on a phone line, in the middle of a Tuesday. I&amp;#39;d already known for a year and a half. Hearing a doctor say it was still a punch in the gut.&lt;/p&gt;
&lt;p&gt;One morning she woke up convinced her car had been stolen from the driveway. It hadn&amp;#39;t. She had driven to a dollar store near the house the afternoon before and walked home without remembering she&amp;#39;d driven. By the time I got the car back to her driveway she&amp;#39;d already revised the theft story in her head — someone must have moved it as a prank, or I had done it to mess with her — because &amp;quot;I drove there and walked home and forgot&amp;quot; was not a version of events her brain could hold. That&amp;#39;s the shape of most of it. The real thing happens, the memory of the real thing disappears, and the brain backfills with something else, and then she&amp;#39;s certain.&lt;/p&gt;
&lt;p&gt;When I finally took her car keys away — because she&amp;#39;d been getting lost coming home from the grocery store and zig-zagging across town for hours, insisting she was fine — I became the villain of the story. She decided I was the one trying to control her. That I had diagnosed her, not her doctor. That her doctor had actually told her her brain was &lt;em&gt;99% good and 1% bad&lt;/em&gt;. She&amp;#39;d scream at me like I wasn&amp;#39;t her son. It was the scene from &lt;em&gt;The Exorcist&lt;/em&gt; where the mother is looking at her child and the thing looking back isn&amp;#39;t her anymore. Daily, for months.&lt;/p&gt;
&lt;p&gt;It&amp;#39;s not daily anymore, and it&amp;#39;s not a question mark anymore either — the diagnosis came back official: Alzheimer&amp;#39;s. Now it&amp;#39;s a rotation — normal days alongside days where she wakes up as a paranoid, delusional version of herself I cannot reach. I wouldn&amp;#39;t wish this on my worst enemy. I thought the divorce was the hardest thing I was going to go through. It turns out the divorce was the warmup.&lt;/p&gt;
&lt;p&gt;There&amp;#39;s nobody else to share this with. My older sister was killed in a car accident when I was 18; I have no other siblings. My oldest son &lt;strong&gt;Joey&lt;/strong&gt; moved in with me last year. The divorce was hard on him — he loves his mom and she&amp;#39;s been a good mom to him his whole life, but for reasons that are his to tell, not mine, he couldn&amp;#39;t live with her anymore. He needed his peace too. He helps where he can with my mother&amp;#39;s care, which is more than I had any right to expect. The brunt is still mine. I take it day by day, watching a slow-motion trainwreck I can&amp;#39;t stop, hoping she eventually comes to terms with what&amp;#39;s wrong so she can find whatever peace is still on the table.&lt;/p&gt;
&lt;p&gt;Life keeps handing me copious amounts of stress, so the man upstairs must think I can handle it. Or I was a rotten son of a bitch in a previous life and this is the bill coming due.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;Her&lt;/h2&gt;
&lt;p&gt;Have mercy.&lt;/p&gt;
&lt;p&gt;That&amp;#39;s Uncle Jesse from &lt;em&gt;Full House&lt;/em&gt;. &lt;strong&gt;Rianna&lt;/strong&gt; deserves the full Stamos.&lt;/p&gt;
&lt;p&gt;I first noticed her at Mitch&amp;#39;s sometime in late 2024. One of the regulars there — a guy who seemed to rotate through good-looking women on a roughly monthly cycle — had brought a new one around, and the new one was her. I was dating someone at the time, which meant my entire job whenever she was in the room was to NOT look at her. My inner monologue ran on a loop for weeks: &lt;em&gt;don&amp;#39;t look at her, don&amp;#39;t look at her, don&amp;#39;t look at her.&lt;/em&gt; Eventually I picked up her name secondhand. Rianna. &lt;em&gt;That&amp;#39;s cute, like the singer&lt;/em&gt;, I remember thinking. &lt;em&gt;Never met a Rianna before.&lt;/em&gt; I never actually had a conversation with her.&lt;/p&gt;
&lt;p&gt;Then one night we were both outside, and I overheard her telling someone, &lt;em&gt;I got married to the wrong person, had three awesome kids, and got divorced, and it was the best thing that ever happened to me.&lt;/em&gt; I straight up butted into the conversation. &lt;em&gt;Hey — that&amp;#39;s my story.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;By the end of the year both of our relationships had fizzled out independently. The morning of New Year&amp;#39;s Eve 2024 I was doing my usual morning routine, and for whatever cosmic reason she popped into my head for half a second as I was thinking about what I might be doing that night. Five minutes later my phone dinged. Facebook friend request. From her. &lt;em&gt;Oh damn, that&amp;#39;s cool. What are the odds.&lt;/em&gt; I accepted, scrolled her photos for a minute, told myself it didn&amp;#39;t mean anything and not to read into it. A lot of us at Mitch&amp;#39;s are Facebook friends.&lt;/p&gt;
&lt;p&gt;That evening I ended up where I always end up: Mitch&amp;#39;s. And there she was, at a table with a friend, being aggressively hit on by some drunk dude really shooting his shot. I wandered over and started bullshitting — the first real conversation I&amp;#39;d ever had with her. I read the room quickly: she and her friend were not opposed to the free drinks the dude was buying for the table, but she was not feeling him at all. I could feel a spark between us. I was still new to meeting women at this point in my life, but when you know, you know. We did shots to bring in the new year.&lt;/p&gt;
&lt;p&gt;Just after midnight she stepped outside for a cigarette. I kept thinking &lt;em&gt;she&amp;#39;s so out of my league&lt;/em&gt;, and right behind that thought was &lt;em&gt;but you have to bring in the new year with a kiss&lt;/em&gt;. I had no idea if I was about to get slapped, but the spark between us had me confident enough. I followed her out, spun her around, and planted one on her. Total fireworks. What a start to 2025.&lt;/p&gt;
&lt;p&gt;We were alone for the kiss, but right before we walked back inside, a couple of regulars stepped outside and saw us hugging. Pretty sure that kicked off the rumor mill on the spot — that place can be a little bit like high school with cliques and rivalries and the whole shebang. We didn&amp;#39;t care.&lt;/p&gt;
&lt;p&gt;We both left for the night not long after. I live two minutes from there, and I had to pull the car over behind &lt;strong&gt;Pet Supplies Plus&lt;/strong&gt; because I was in total shock. I must have said &lt;em&gt;oh my god&lt;/em&gt; out loud ten times before I could put it back in drive. We messaged each other to make sure we&amp;#39;d both gotten home okay. Woke up the next morning, and we&amp;#39;ve been Bonnie and Clyde ever since.&lt;/p&gt;
&lt;p&gt;In the months that followed we started noticing other coincidences. Her ex and mine have the same name, spelled differently. When we met, she was dating a guy named Nick. I was dating a girl named Nikki. We both have a heart with wings tattooed on the same spot on our left forearms, both of us predating the other by years. For a guy who opened this post talking about being &lt;em&gt;afflicted with seeing the numbers 9-1-1&lt;/em&gt;, I have a hard time waving any of that off as random.&lt;/p&gt;
&lt;p&gt;We talk from the moment we wake up to the moment we go to sleep, every single day, without missing a beat. It&amp;#39;s been that way ever since that morning. We had both been through toxic partners, and we both knew exactly what we wanted out of a relationship. I don&amp;#39;t want to jinx anything, but almost fifteen months in we have not had a single argument or disagreement. &lt;em&gt;Yet.&lt;/em&gt; I say &lt;em&gt;yet&lt;/em&gt; because I know it can&amp;#39;t last forever — but I really never knew a healthy, loving relationship like this could exist. For the first six months I was convinced I was actually in a hospital somewhere in a coma and imagining all of this, because she was too damn good to be true. I still feel that way.&lt;/p&gt;
&lt;p&gt;Every other weekend, we&amp;#39;re at Mitch&amp;#39;s together — playing darts (we&amp;#39;ve both gotten halfway decent) and bullshitting with the regulars. I never expected to be the guy with a regular bar at this age. I am now. One night last year, while we were there, we caught the tail end of a situation that ended up reshaping my relationship with the place. A couple was there on a first date. The girl had passed out cold in the bathroom — on the floor, in her own piss — and a group of regulars by the bar didn&amp;#39;t like the way her date was insisting on taking her home. They suspected he&amp;#39;d dosed her drink. Rianna went into the bathroom to take care of the girl. I went outside, where the South Bend cop who works Mitch&amp;#39;s on the weekends had already told the date he wasn&amp;#39;t leaving with her. The guy got aggressive. The cop tried to tase him; the prongs didn&amp;#39;t make it through the guy&amp;#39;s t-shirt. He stopped being aggressive and started threatening the cop&amp;#39;s life directly. I went over and pinned him in the corner of the lobby with one arm twisted behind his back until backup arrived.&lt;/p&gt;
&lt;p&gt;That&amp;#39;s how I got to know the cop. He and I have been friends ever since, and I now do the door at Mitch&amp;#39;s during Notre Dame home games and fill in when they&amp;#39;re short. Rianna had the bathroom while I had the lobby. We didn&amp;#39;t compare notes until afterward.&lt;/p&gt;
&lt;p&gt;I slowly started meeting her family, and her family is the biggest single Italian-American clan I have ever heard of in my life. Their family reunions need a soccer field to take the group photo. No joke — there are something like five hundred of them. There&amp;#39;s never a dull moment, because there are so many of them that there&amp;#39;s always a birthday or a graduation or a game night, and the holidays are an absolute blast. We can barely go anywhere in town without bumping into one of her cousins. I come from such a small family that this is genuinely alien to me, but I love it. I love how completely they&amp;#39;ve taken me in. Every moment I get to spend with them is a moment I&amp;#39;d take again.&lt;/p&gt;
&lt;p&gt;And then there are her three kids. I don&amp;#39;t say &lt;em&gt;amazing&lt;/em&gt; lightly, and I&amp;#39;m not saying it because I&amp;#39;m biased — she could have had three little shitheads. These kids are not. She&amp;#39;s genuinely blessed, and thankfully two of them are about the same age as my youngest, &lt;strong&gt;AJ&lt;/strong&gt;, and they all get along great. All three of my own kids love her. We&amp;#39;ve turned into our own little nuclear family, and given that family life is the only life I&amp;#39;ve ever known, I am in heaven right now.&lt;/p&gt;
&lt;p&gt;Our days are a chaotic circus — jobs, kids, schedules, the works — but we make it work, and we spend every minute we can together, and we are both genuinely excited about whatever comes next. This woman is the love of my life, and the reason I want to be the best version of myself I&amp;#39;ve ever been.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;The side stuff&lt;/h2&gt;
&lt;p&gt;I&amp;#39;ve been a busy fucking bee for the last five months or so. Somewhere around the end of 2025 I started using &lt;strong&gt;Claude Code&lt;/strong&gt;, and within a week I&amp;#39;d ripped through the regular plan&amp;#39;s usage limits and upgraded to MAX, which is the polite version of saying I had a problem. The honest version: I&amp;#39;m like a mad scientist cooking up everything I can imagine with Claude Code. That&amp;#39;s what I love about it so much — anything you can imagine, you can turn into a reality with it. I&amp;#39;m a true Claude junkie.&lt;/p&gt;
&lt;p&gt;The first wave was rebuilding old projects. I went back through stuff I&amp;#39;d shipped years ago — Faceoff among them, which has a post on this same blog from the Hugo era — and made them better than the originals. After that I just started building.&lt;/p&gt;
&lt;p&gt;Most of what I built is private. Some of it has potential SaaS implications and I want to keep that option open; the rest is because I&amp;#39;m obsessed with optimization and I&amp;#39;ll never stop polishing these things, and I&amp;#39;d rather not commit half-finished ideas to a public repo I&amp;#39;d have to apologize for later. I&amp;#39;ll write deep-dive posts on a few of them over the coming months. The current section is the catalog, not the manual.&lt;/p&gt;
&lt;p&gt;The meta-tools came first, because if I was going to spend serious time inside Claude Code I wanted infrastructure around it. I built &lt;strong&gt;&lt;a href=&quot;https://github.com/thebiglaskowski/claude-sentient&quot;&gt;Claude Sentient&lt;/a&gt;&lt;/strong&gt; — an orchestration layer that wraps Claude Code&amp;#39;s native features into an autonomous development loop with quality gates, profile detection, hooks, MCP integration, and a thousand-plus tests. I used it for months, kept improving it, and recently realized something: at the rate Claude is shipping new native features, my abstraction layer was becoming overhead. I started pulling Sentient out of my projects and going straight vanilla. The repo&amp;#39;s still public if anyone wants to pick over it.&lt;/p&gt;
&lt;p&gt;I also built &lt;strong&gt;PromptVault&lt;/strong&gt;, a personal prompting engine — deterministic compiler, card and template system, semantic search, the whole nine. I do not use this as much as I originally intended, but it&amp;#39;s still pretty cool to have on hand. Honest read on both: cool, instructive, no longer load-bearing.&lt;/p&gt;
&lt;p&gt;Then came the personal-utility wave. &lt;strong&gt;BudgetLedger&lt;/strong&gt; is a Flask app I built when my expense-tracking spreadsheet — the one I&amp;#39;ve maintained since 2009 — finally choked under the weight of new credit cards I&amp;#39;d opened to build credit. I wired BudgetLedger up to Plaid for live account sync, did the whole pay-period planning thing where the app auto-assigns bills to specific paychecks based on due dates, shipped split transactions and recurring schedulers and a bulk tag editor. It&amp;#39;s a real Flask app. I built it, I used it, and I went back to the spreadsheet — the system was just complex enough that maintaining it became more friction than running the sheet. The good news: the sheet is now on steroids compared to its 2009 self, because building BudgetLedger taught me what was missing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nexus Signals 2.0&lt;/strong&gt; is a market-analysis platform for crypto and stocks — FastAPI, async SQLAlchemy, Postgres with pgvector, React 19 with TradingView charts, seven stock-data providers with circuit-breaker fallback chains, twenty-three technical indicators, paper trading, LLM-powered sentiment, 3,764 passing tests. The &amp;quot;2.0&amp;quot; is real — I got far enough into v1 to realize I could do it better, and I scrapped it and started over. It&amp;#39;s parked right now because I switched gears to income-generating side stuff, but it&amp;#39;s parked on purpose, not abandoned.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/thebiglaskowski/xrp-ticker&quot;&gt;xrp-ticker&lt;/a&gt;&lt;/strong&gt; is a Textual TUI portfolio tracker for XRP — pulls live price from Coinbase, aggregates self-custody wallet balances over XRPL WebSocket, sparklines that cycle through four styles, two themes, keyboard-driven. It&amp;#39;s small. It still runs on my second monitor. The repo&amp;#39;s public.&lt;/p&gt;
&lt;p&gt;Then I got serious about turning some of this into income. I built an SEO content suite — a TypeScript monorepo with thirteen packages forming a pipeline from seed-keyword discovery through gap analysis, revenue-per-keyword scoring, competition analysis, AI content generation, AI image generation, static site building, all the way through to GEO scoring (Generative Engine Optimization — evaluating content for AI-citation readiness across ChatGPT, Perplexity, Google AI, Claude). SEO had been a passion of mine over a decade ago, and AI made it interesting again — the niche-finding game is fun when you have a real research engine behind it. The working name needs to change (the obvious one is taken) and I haven&amp;#39;t picked the replacement yet.&lt;/p&gt;
&lt;p&gt;Then I got distracted by TikTok dropshipping videos, the way you do, and built &lt;strong&gt;DropTok&lt;/strong&gt; — a multi-shop platform for running TikTok Shop dropshipping with AI-generated listings, a content pipeline that produces hooks and shot lists for short-form video, a creator CRM, an AI-scored opportunity board, and integrations into TikTok Shop Seller, TikTok for Business, TikTok Ads, CJ Dropshipping, and AutoDS. Both of these are deferred — still on the roadmap, just probably a year out before they get traction. It&amp;#39;s been a messy, ambitious five months trying to figure out which direction to commit to first. I&amp;#39;m in a better spot with it now.&lt;/p&gt;
&lt;p&gt;The legitimate-business side is &lt;strong&gt;AutoScript Studio LLC&lt;/strong&gt;, which I formed specifically because I wanted a real business entity before flipping any of these on. AutoScript is the parent; &lt;strong&gt;PixelDrops&lt;/strong&gt; is the digital-products brand that sits underneath it. PixelDrops is the current focus.&lt;/p&gt;
&lt;p&gt;While I was waiting on AutoScript Studio&amp;#39;s funding to clear, I wrote a romance novel using AI under a pen name (which I&amp;#39;m keeping pen-shaped on this blog — I want the book to stand on its own). It&amp;#39;s heading to Amazon as a test. If it sells, I&amp;#39;ll write more. If it doesn&amp;#39;t, I&amp;#39;ll have learned something useful about a workflow I expect to use a lot more of.&lt;/p&gt;
&lt;p&gt;I also started a YouTube channel: &lt;strong&gt;StackTrace Docs&lt;/strong&gt;, a documentary channel telling old IT stories from the eighties, nineties, and early two thousands. Episodes that don&amp;#39;t exist anywhere else, told the way I&amp;#39;d want to hear them — voice-driven narration, period-accurate visuals, real research underneath. The channel is still finding its visual feet, but the production pipeline behind it is the most interesting build of the bunch.&lt;/p&gt;
&lt;p&gt;The pipeline is three private tools that hand off to each other in a chain. Two of them are named &lt;code&gt;-cli&lt;/code&gt; and have GUIs anyway — bad naming on my part, but the names stuck. &lt;strong&gt;scriptcast-cli&lt;/strong&gt; is stage one — it takes a finished script and runs it through Fish Audio&amp;#39;s S2-Pro model to produce long-form narration audio, with inline emotion tags (&lt;code&gt;[tense, urgent]&lt;/code&gt;, &lt;code&gt;[measured, authoritative]&lt;/code&gt;) and beat markers that get aligned to the rendered audio with WhisperX, producing a Remotion-compatible &lt;code&gt;beats.json&lt;/code&gt;. The script itself comes out of a research process that runs through Claude on Cowork, ChatGPT, Perplexity Pro, Gemini, and NotebookLM — I use whatever&amp;#39;s best at each step.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;shotlist&lt;/strong&gt; is stage two, and it&amp;#39;s the one I spend the most time in. It&amp;#39;s the storyboard that pieces together the documentary I&amp;#39;m working on — a browser-based visual asset manager that parses the prompt sheet (also generated by Claude during scriptcast&amp;#39;s prompt-sheet step) into a grid of empty slots, hands me each prompt one at a time on a clipboard copy, and watches the assets folder for the images and video clips I generate. I still pick every shot myself — pasting prompts into Grok Imagine, Midjourney, and Kling, modifying each prompt until I like the result, downloading, assigning. A thirty-to-forty-minute episode runs about a hundred and fifty individual visual mixes. That&amp;#39;s the part where the AI does not do it for you.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;framecast-cli&lt;/strong&gt; is stage three — a Remotion-based assembly engine that takes the audio, the beats, the assigned images, and the project config, and renders a 1920×1080 H.264 MP4 at 30fps with Ken Burns motion on the stills, crossfade transitions, lower thirds at beat boundaries, and a per-era color grade and film texture so 1995 footage doesn&amp;#39;t look like 2025 footage — that era value flows from Claude&amp;#39;s classification all the way through the chain. I&amp;#39;ve had to work hard on getting everything synced up properly with the voice narration from scriptcast-cli and the way framecast-cli puts it all together. Several rebuilds later, I&amp;#39;m in a pretty good spot with this entire process and pipeline.&lt;/p&gt;
&lt;p&gt;I run all of this — AutoScript Studio, the channel, the side projects, finances, personal life, health — out of &lt;strong&gt;Cowork&lt;/strong&gt;, Anthropic&amp;#39;s desktop app. It&amp;#39;s where I draft this blog. It&amp;#39;s where I track the LLC formation paperwork. It&amp;#39;s where I outline novel revisions, sketch episode beats, and check off bills. Claude isn&amp;#39;t just a code generator for me anymore — it&amp;#39;s how I run my life.&lt;/p&gt;
&lt;p&gt;I need to cram thirty hours a day into twenty-four to do everything I want to do. The roadmap is the only thing keeping the chaos honest — PixelDrops first, then DropTok once the channel monetizes and starts pulling sponsors, then the SEO work after that. That&amp;#39;s the ladder. It&amp;#39;s deliberately stretched out, because I&amp;#39;d rather get one thing actually working than seven things half-working.&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s the part I haven&amp;#39;t said yet, which is also the part the chaos earns its weight from: the divorce left me empty-handed, and the deal I made on the way out left me responsible for paying for basically everything I paid for when I was married. Everything. I made that deal for two reasons that aren&amp;#39;t anybody else&amp;#39;s business in this post — but the upshot is I&amp;#39;m still on the hook, post-divorce, for every bill I was already paying when we were married. Indefinitely. I knew it would be a long sacrifice. I&amp;#39;ve always said I have the patience of ten monks, which is a gift and a curse. When I made the deal, I never imagined I&amp;#39;d fall in love again, and I never imagined I&amp;#39;d want to move forward as fast as I want to now. I&amp;#39;m patient. I&amp;#39;m also drowning under the obligations I agreed to, and I&amp;#39;d like to climb out.&lt;/p&gt;
&lt;p&gt;Either XRP appreciates the way I think it eventually will and I can start earning yield on it, or one of these side businesses gets off the ground and starts generating real income. I&amp;#39;m betting on both, hedging by working on both.&lt;/p&gt;
&lt;p&gt;With AI, it&amp;#39;s like having a hundred expert employees at my fingertips working on aspects of my business I&amp;#39;d never be able to do on my own. That&amp;#39;s the real story under all of this — one person can ship this much because the rules of the game changed. I get to be the mad scientist and the hundred employees and the editor at the same time. I&amp;#39;m excited to see the AI space grow, especially since I just landed my dream job working with AI.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;Landing&lt;/h2&gt;
&lt;p&gt;That&amp;#39;s the speed-run. Divorced, free, walking when I make myself, promoted and paid, in love, caregiving, occasional bouncer, building things, and back to writing.&lt;/p&gt;
&lt;p&gt;Some honest notes before I let you go. I still see the numbers 9-1-1 all the time — the universe didn&amp;#39;t lay off that one. The walking that powered the recovery year has slowed down a lot. Rianna is a good cook. Claude Code is a black hole. I dropped sixty-five pounds at the bottom of the divorce chapter and forty of them have crept back on, and I&amp;#39;m sitting at the same crossroads I always end up at. The screens are what they are — it&amp;#39;s the only life I know and I was never going to escape it entirely — but those couple of years away from a keyboard were the longest break I&amp;#39;d taken in twenty-three years, and I needed every minute of it. The early-bird part stuck. The 5 AM still happens. The walking is what I&amp;#39;m trying to put back in.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m still figuring out what this new life looks like. Building a future with Rianna while drowning in debt from the divorce is the next stretch of work, and none of it is solved yet.&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s the through-line, though — with the one obvious exception of what&amp;#39;s happening with my mother, every corner of my life has gotten better since I walked out. Friendships. Romance. Social standing. Work. Money. A sweet new car last year I still can&amp;#39;t quite believe I&amp;#39;m driving. I&amp;#39;ve paid my dues. I&amp;#39;ve taken more trips to hell and back than I want to count. Whatever you call this — karma circling back, the universe finally paying down a long-overdue tab — I&amp;#39;ll take it.&lt;/p&gt;
&lt;p&gt;This blog goes back to what it used to be — technical nerd posts about whatever I&amp;#39;m building. Maybe a beer review when one earns it. The occasional off-topic detour. This is probably the only personal post you&amp;#39;ll get out of me for a long while; I needed to mark the chapter once, in one piece, before going back to the work.&lt;/p&gt;
&lt;p&gt;More soon. Different kind of more.&lt;/p&gt;
</content:encoded></item><item><title>Faceoff: A Journey into the World of AI-Driven Face Swapping</title><link>https://thebiglaskowski.com/blog/face-swapping-with-ai/</link><guid isPermaLink="true">https://thebiglaskowski.com/blog/face-swapping-with-ai/</guid><description>Dive into the intriguing realm of AI-driven face swapping with this detailed exploration of the Faceoff app and InsightFace technologies. This article offers insights into the progression of face swapping, the impact of machine learning, and the use of Python scripts such as GFPGAN and Real-ESRGAN to improve image quality.</description><pubDate>Sat, 03 Jun 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Face swapping, the intriguing process of digitally interchanging faces in images, has been a fascinating concept in digital imagery for years. The ability to replace one person&amp;#39;s face with another in a photograph while maintaining the original image&amp;#39;s integrity is a testament to the advancements in artificial intelligence (AI) and machine learning. This article delves into the intricacies of face swapping, focusing on an application called Faceoff, which leverages a Python library known as InsightFace.&lt;/p&gt;
&lt;h2&gt;InsightFace and its Contributions&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://insightface.ai/&quot;&gt;InsightFace&lt;/a&gt;, a project initiated by the eponymous company, is a pivotal non-profit platform specializing in face recognition, analysis, and synthesis in the AI research landscape. This project stands out for its comprehensive approach to face analysis, encompassing both 2D and 3D aspects. It efficiently incorporates many cutting-edge algorithms, streamlining the processes of face recognition, detection, and alignment.&lt;/p&gt;
&lt;p&gt;The open-source technologies birthed by InsightFace have significantly contributed to the evolution of face detection and recognition applications. Their &lt;a href=&quot;https://github.com/deepinsight/insightface&quot;&gt;GitHub repository&lt;/a&gt;, a wellspring of resources, offers invaluable assets for developers engrossed in face-related technologies.&lt;/p&gt;
&lt;p&gt;The company&amp;#39;s tenacious commitment to propelling AI technologies forward has developed many innovative tools and libraries. Among these, the InsightFace Python library has been a cornerstone in creating the Faceoff app, demonstrating the practical application of these advanced technologies in real-world scenarios.&lt;/p&gt;
&lt;h2&gt;A Brief History of Face Swapping&lt;/h2&gt;
&lt;p&gt;Face-swapping technology has come a long way since its inception. Initially, it was a manual and time-consuming process requiring expert image editing software skills. With the introduction of AI and machine learning, the process has become automated, faster, and more accurate. The technology uses algorithms to identify facial features in an image, extract them, and superimpose them onto another face while maintaining the original image&amp;#39;s lighting, angle, and expression.&lt;/p&gt;
&lt;p&gt;The first instances of face swapping were seen in the film industry, where it was used to create special effects. As time passed, the technology became more available and eventually made it into mobile apps and social media platforms, allowing users to swap faces with friends, celebrities, or pets for entertainment. Notable examples include &lt;a href=&quot;https://www.snapchat.com/&quot;&gt;Snapchat&lt;/a&gt;&amp;#39;s face swap filter and &lt;a href=&quot;https://www.faceapp.com/&quot;&gt;FaceApp&lt;/a&gt;, which have brought face swap technology to the masses.&lt;/p&gt;
&lt;p&gt;However, the technology&amp;#39;s potential extends beyond entertainment. It has significant implications for security, identity verification, and medical research. For instance, face swapping can protect individuals&amp;#39; identities in sensitive photographs or videos or create realistic avatars for virtual reality environments. On the other hand, more advanced applications of face swapping, such as deepfakes, have raised serious concerns about misinformation, identity theft, and privacy.&lt;/p&gt;
&lt;div style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=H7KS8ZoulGw&quot; class=&quot;glightbox video-link&quot; data-glightbox=&quot;title: Faceoff Img2MP4 Deepfake Arnold Terminator&quot;&gt;
  
  &lt;span class=&quot;play-button&quot; aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;&lt;h2&gt;Faceoff App, a Personal Project Inspired by InsightFace&amp;#39;s Innovations&lt;/h2&gt;
&lt;p&gt;The Faceoff app utilizes an AI-trained model called inswapper_128.onnx, initially created by InsightFace for demonstration purposes. This model was designed to recognize and extract facial features from an input image and then superimpose them onto a target face in another photo. However, the demo version of the model was limited to a 128x128 resolution, which, when run on its own, resulted in pixelated and low-quality output images.&lt;/p&gt;
&lt;p&gt;What sets the inswapper model apart from other face-swapping technologies is its ability to generate high-quality results with just a single input image. This is a significant advancement over other methods, such as training LoRA models and Dreambooth, which require several to several dozen images and are semi-complex to train. Not only do these methods take considerable time to prepare properly, but they also need a substantial amount of computational resources.&lt;/p&gt;
&lt;p&gt;In contrast, the Faceoff app, leveraging the power of InsightFace&amp;#39;s AI model, can produce near-instant results comparable to these competing options. This is made possible by the advanced algorithms and techniques employed by the inswapper_128.onnx model, which can accurately extract and superimpose facial features even from a single image. The result is a high-quality face swap that maintains the integrity of the original image while seamlessly integrating the new face.&lt;/p&gt;
&lt;p&gt;When the demo model was released on GitHub, it attracted an influx of spammers. This unexpected surge prompted the developers to relocate the advanced version of the application to Discord, a more controlled environment. Consequently, the original inswapper_128.onnx file was removed from GitHub.&lt;/p&gt;
&lt;p&gt;InsightFace has expanded its reach to Discord, a popular communication platform, where they have introduced the InsightFaceSwap bot. This bot allows users to directly experience the power of InsightFace&amp;#39;s face-swapping technology. Users can create stunning, high-quality face swaps of themselves by using the bot in conjunction with Midjourney, a tool for creating personalized portraits.&lt;/p&gt;
&lt;p&gt;The InsightFaceSwap bot is free and provides an excellent way for users to test face-swapping technology. More information about the bot, including a tutorial on installation and commands, can be found here on InsightFace&amp;#39;s &lt;a href=&quot;https://github.com/deepinsight/insightface/tree/master/web-demos/swapping_discord&quot;&gt;GitHub page&lt;/a&gt;. This move to Discord represents InsightFace&amp;#39;s commitment to making its technology accessible to a broader audience and provides a glimpse into the potential future of AI face-swapping technology.&lt;/p&gt;
&lt;h2&gt;Improving Image Quality with CodeFormer and Real-ESRGAN&lt;/h2&gt;
&lt;p&gt;To overcome the limitations of the inswapper_128.onnx model, the Faceoff app employs two Python scripts, &lt;a href=&quot;https://github.com/sczhou/CodeFormer&quot;&gt;CodeFormer&lt;/a&gt; and &lt;a href=&quot;https://github.com/xinntao/Real-ESRGAN&quot;&gt;Real-ESRGAN&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;Real-ESRGAN is designed to develop practical algorithms for general image/video restoration. It also incorporates GFPGAN (Generative Face Prior GAN), a script that enhances the quality of face images. GFPGAN uses a generative adversarial network (GAN) to generate high-quality facial images from low-quality inputs, thereby improving the quality of the faces swapped using the inswapper_128.onnx model.&lt;/p&gt;
&lt;p&gt;On the other hand, CodeFormer, developed by S-Lab at Nanyang Technological University, is used as an alternative option for enhancing the final output. CodeFormer is an advanced tool that uses AI to improve the quality of the final face-swapped image, making the results even more impressive. It&amp;#39;s designed for robust blind face restoration with a Codebook Lookup Transformer, as detailed in their NeurIPS 2022 paper. CodeFormer can be used for various tasks, including face restoration, whole image enhancement, video enhancement, face colorization and face inpainting. It provides a balance between fidelity and quality, with the fidelity weight parameter &amp;#39;w&amp;#39; allowing users to adjust the output according to their needs.&lt;/p&gt;
&lt;p&gt;By combining these two powerful tools, the Faceoff app can produce high-quality, stunning results from low-resolution outputs. This allows the app to overcome the limitations of the inswapper_128.onnx model and produce face-swapped images that are of much higher quality than would otherwise be possible.&lt;/p&gt;
&lt;video width=&quot;480&quot; height=&quot;368&quot; autoPlay muted loop playsInline poster=&quot;/images/posts/2023-06-03/stone-cold-poster.webp&quot;&gt;
  &lt;source src=&quot;/images/posts/2023-06-03/stone-cold.mp4&quot; type=&quot;video/mp4&quot; /&gt;
&lt;/video&gt;&lt;h2&gt;Interfacing Faceoff with Gradio&lt;/h2&gt;
&lt;p&gt;In an effort to enhance user-friendliness and interactivity, the Faceoff application has been interfaced via &lt;a href=&quot;https://gradio.app/&quot;&gt;Gradio&lt;/a&gt;. Gradio is an open-source framework for creating and sharing machine learning models with easy-to-use UI components. It allows developers to quickly create web-based interfaces for their models, making them accessible to non-technical users.&lt;/p&gt;
&lt;p&gt;With Gradio, the Faceoff app can easily input images, select their desired options, and see the results of the face swap in real-time. This makes the app more accessible and easier to use than running it in my terminal. It also allows for quick iterations and testing, as I can immediately see the results of using different versions of this script.&lt;/p&gt;
&lt;p&gt;While I would love to publish a live demo of this application to showcase its capabilities, certain limitations prevent me from doing so. My blog is hosted on GitHub Pages as a static site, so there&amp;#39;s no server-side processing available to run the Faceoff app. The application requires a powerful GPU to run locally -- I use an Nvidia RTX 3060 Ti, and a 2000 series Nvidia RTX with sufficient onboard memory could also handle the task.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Gradio interface example&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;Try Faceoff for Yourself&lt;/h2&gt;
&lt;p&gt;If you&amp;#39;re intrigued by the possibilities of AI-driven face swapping and want to experience it firsthand, I invite you to try out the Faceoff app. It&amp;#39;s now available on &lt;a href=&quot;https://github.com/thebiglaskowski/faceoff&quot;&gt;GitHub&lt;/a&gt; and can be installed locally for personal use.&lt;/p&gt;
&lt;p&gt;Faceoff allows you to swap faces from a source image to a destination medium. It supports image-to-image, image-to-GIF, and image-to-MP4 face swaps. Each app runs independently in its own Gradio instance for ease of use.&lt;/p&gt;
&lt;p&gt;To get started, you&amp;#39;ll need to install some dependencies, including FFmpeg and CUDA (version 10.1 or higher). Once these are installed, you can clone the Faceoff repository and set up a Python environment to run the app. Detailed installation instructions are provided on the GitHub page.&lt;/p&gt;
&lt;p&gt;Once installed, you can access the different versions of the Faceoff app (Img2Img, Img2GIF, and Img2MP4) through your local server. The GitHub page also includes a demo comparing the results of Faceoff Img2MP4 with a deepfake created by DeepFaceLab.&lt;/p&gt;
&lt;p&gt;By trying out Faceoff, you&amp;#39;ll get a firsthand experience of the power and potential of AI-driven face swapping. Whether you&amp;#39;re interested in AI, digital imagery, or just want to have some fun, Faceoff offers a unique and engaging experience.&lt;/p&gt;
&lt;h2&gt;How It Works Under the Hood&lt;/h2&gt;
&lt;p&gt;At a high level, face swapping involves three steps: &lt;strong&gt;detection&lt;/strong&gt;, &lt;strong&gt;extraction&lt;/strong&gt;, and &lt;strong&gt;synthesis&lt;/strong&gt;. A convolutional neural network (CNN) first identifies faces in the input images. It then extracts key facial features -- eyes, nose, mouth, and face shape -- to create a face mask. Finally, the mask is aligned to the target face, with color and lighting adjusted to match, and the edges blended for a seamless result.&lt;/p&gt;
&lt;h2&gt;Looking Ahead&lt;/h2&gt;
&lt;p&gt;As AI and machine learning continue to advance, the applications for face swapping extend well beyond entertainment -- from protecting identities in sensitive media to creating realistic models for surgical training. However, with that potential comes responsibility. Issues like consent, privacy, and the risk of misuse through deepfakes are real concerns that developers and researchers must address as the technology matures.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The evolution of face-swapping technology, from its humble beginnings in the film industry to its current applications in apps like Faceoff, is a testament to the power and potential of AI and machine learning. As we continue to push the boundaries of what is possible with these technologies, we can look forward to a future where face swapping is not just a novelty but a valuable tool in various fields.&lt;/p&gt;
&lt;p&gt;Whether creating custom portraits for friends and family, crafting humorous memes, or generating professional headshots for LinkedIn and other social media sites, the Faceoff app opens a world of creative possibilities. The high-quality results produced by the app, thanks to the combination of InsightFace&amp;#39;s technology and the GFPGAN and Real-ESRGAN scripts, make it a versatile tool.&lt;/p&gt;
&lt;p&gt;Despite its limitation to personal use, the Faceoff app&amp;#39;s development represents a significant step forward in applying face-swapping technology. It demonstrates how open-source tools and libraries, such as those provided by InsightFace, can create powerful applications that push the boundaries of what is possible with AI and machine learning. As we continue to explore and develop these technologies, the possibilities for face-swapping&amp;#39;s future are endless.&lt;/p&gt;
</content:encoded></item><item><title>ShellGPT: Revolutionizing Command-Line Interactions with the Power of AI</title><link>https://thebiglaskowski.com/blog/shellgpt-revolutionizing-cli-with-the-power-of-ai/</link><guid isPermaLink="true">https://thebiglaskowski.com/blog/shellgpt-revolutionizing-cli-with-the-power-of-ai/</guid><description>ShellGPT: Harnessing AI Power in Your Terminal - A concise guide to installing and using ShellGPT, a revolutionary tool that transforms your command-line interactions and streamlines your workflow.</description><pubDate>Sun, 21 May 2023 12:22:34 GMT</pubDate><content:encoded>&lt;p&gt;ShellGPT, a powerful command-line tool, revolutionizes how developers and administrators interact with their terminals. I&amp;#39;ve used it in Powershell and WSL for the past few months, and it&amp;#39;s incredible and has quickly become my favorite CLI tool. By leveraging the capabilities of OpenAI&amp;#39;s GPT models, ShellGPT offers a wide range of functionalities, such as generating shell commands, code snippets, comments, and documentation. &lt;/p&gt;
&lt;p&gt;This tool eliminates the need for cheat sheets and notes, providing accurate answers directly in the terminal. This reduces the frequency of Google searches and saves valuable time and effort. &lt;/p&gt;
&lt;p&gt;One of the key strengths of ShellGPT is its ability to work with all major operating systems and shells. Whether you&amp;#39;re using Linux, macOS, Windows, PowerShell, CMD, Bash, Zsh, Fish, or any other shell, ShellGPT has got you covered.&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;To get started with ShellGPT, you need to install it on your system. The installation process is straightforward and requires only pip and an OpenAI API key, and you can generate one &lt;a href=&quot;https://platform.openai.com/account/api-keys&quot;&gt;here&lt;/a&gt;. Here&amp;#39;s a step-by-step guide on how to install ShellGPT:&lt;/p&gt;
&lt;p&gt;First, ensure that you have Python and pip installed on your system. You can verify the installation by typing&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;python --version
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pip --version
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;in your terminal. If Python and Pip are not installed, you can download them from the official Python website.&lt;/p&gt;
&lt;p&gt;Once Python and pip are installed, you can install ShellGPT by typing&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pip install shell-gpt==0.9.1 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;in your terminal and press enter.&lt;/p&gt;
&lt;p&gt;After the installation, you need an OpenAI API key to use ShellGPT. With the OpenAI API key, you&amp;#39;re all set to use ShellGPT. To access the OpenAI API, ensure that the $OPENAI_API_KEY environment variable is set. If it&amp;#39;s not set, you will be prompted to enter your key. Once entered, it will be securely stored in the ~/.config/shell_gpt/.sgptrc directory.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Demo&lt;/strong&gt;&lt;/p&gt;
&lt;div style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=_Ll-gsdTpO8&quot; class=&quot;glightbox video-link&quot; data-glightbox=&quot;title: ShellGPT Demo&quot;&gt;
  
  &lt;span class=&quot;play-button&quot; aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;&lt;h2&gt;Usage&lt;/h2&gt;
&lt;p&gt;Once installed, ShellGPT can be used for a variety of tasks. It can function as a standard search engine, answering any query. It can also summarize and analyze data, making it easier to understand complex information. One of the standout features of ShellGPT is its ability to generate shell commands and even code. &lt;/p&gt;
&lt;h2&gt;Generating Code&lt;/h2&gt;
&lt;p&gt;For instance, if you ask ShellGPT to implement Bubble Sort with Python, it will generate the Python code. Bubble Sort is a basic sorting method that works by going through a list, comparing adjacent elements, and swapping them if they are not in the correct order. The pass of the list is repeated until the list is sorted.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Generate a Python implementation of Bubble Sort:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sgpt --code &amp;quot;create an implementation of bubble sort with python.&amp;quot;

def bubble_sort(arr):
    n = len(arr)

    # Traverse through all array elements
    for i in range(n):
        # Last i elements are already in place, so inner loop goes until n-i-1
        for j in range(0, n-i-1):
            # Swap if the element found is greater than the next element
            if arr[j] &amp;gt; arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]

# Test the function
arr = [64, 34, 25, 12, 22, 11, 90]
bubble_sort(arr)
print(&amp;quot;Sorted array is:&amp;quot;, arr)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When you run this script, it will print: Sorted array is: [11, 12, 22, 25, 34, 64, 90]. And given that it&amp;#39;s valid Python code, we can redirect the output to file&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Redirect output to file:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sgpt --code &amp;quot;create an implementation of bubble sort with python&amp;quot; &amp;gt; bubble.py
python bubble.py
# Sorted array is: [11, 12, 22, 25, 34, 64, 90]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Users can also utilize the flexibility of pipes to pass input into sgpt&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use pipes to pass input into sgpt:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cat bubble.py | python -m sgpt --code &amp;quot;Generate comments for each line of my code.&amp;quot;
# Define a function called bubble_sort that takes in an array as an argument
def bubble_sort(arr):
    # Get the length of the array
    n = len(arr)
    # Loop through the array
    for i in range(n):
        # Loop through the array again, but only up to n-i-1
        for j in range(0, n-i-1):
            # If the current element is greater than the next element
            if arr[j] &amp;gt; arr[j+1] :
                # Swap the two elements
                arr[j], arr[j+1] = arr[j+1], arr[j]
    # Return the sorted array
    return arr

# Create an array to test the function
arr = [64, 34, 25, 12, 22, 11, 90]
# Call the bubble_sort function on the array
bubble_sort(arr)
# Print the sorted array
print(&amp;quot;Sorted array is:&amp;quot;, arr)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The code generation functionality of ShellGPT is a robust tool that can be used to generate valid, executable code in response to user queries. This feature can be handy for tasks such as implementing algorithms, generating code snippets, and data structures, creating test cases, making boilerplate code, writing database queries, creating API requests, regular expressions, and the list goes on and on.&lt;/p&gt;
&lt;h2&gt;Chat&lt;/h2&gt;
&lt;p&gt;ShellGPT also includes a chat feature that allows you to interact with it. You can start a chat session using the --chat option, followed by a unique session name and a prompt. This feature can improve GPT suggestions &lt;strong&gt;iteratively&lt;/strong&gt; by providing additional details.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Start a chat named &amp;#39;dinner-ideas&amp;#39;:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;sgpt --chat dinner-ideas &amp;quot;please provide three ideas for dinner tonight.&amp;quot; 
# 1. Grilled chicken with roasted vegetables
# 2. Spaghetti with meatballs and garlic bread
# 3. Fish tacos with avocado salsa and black beans

sgpt --chat dinner-ideas &amp;quot;what are some additional sides that would complement option #2?&amp;quot;
# Some additional sides that would complement spaghetti with meatballs and garlic bread could be:
# 1. Caesar salad
# 2. Roasted asparagus
# 3. Garlic roasted potatoes
# 4. Steamed broccoli
# 5. Caprese salad with fresh tomatoes and mozzarella.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To display all the ongoing chat sessions, utilize the --list-chats option:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sgpt --list-chats
# .../shell_gpt/chat_cache/food
# .../shell_gpt/chat_cache/python_code
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To view all the messages associated with a specific chat session, use the --show-chat option followed by the session identifier:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sgpt --show-chat food
# user: remember my favorite dish: spaghetti
# assistant: I&amp;#39;ll remember that your favorite dish is spaghetti.
# user: what would be a good wine pairing for my favorite dish?
# assistant: A good wine pairing for spaghetti, especially if it&amp;#39;s served with a tomato-based sauce, would be a medium-bodied red wine like a Chianti or a Sangiovese.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;These commands allow you to manage and review your chat sessions with ShellGPT, making it easier to keep track of your interactions and retrieve important information.&lt;/p&gt;
&lt;h2&gt;Summarization and Analysis&lt;/h2&gt;
&lt;p&gt;ShellGPT offers the flexibility to accept prompts from either standard input (stdin) or command line arguments, allowing you to choose the input method that best suits your needs. This adaptability is especially beneficial when you need to feed file content or pipe output from other commands to the GPT models for summarization or analysis.&lt;/p&gt;
&lt;p&gt;For instance, you can effortlessly &lt;strong&gt;generate a git commit message based on a diff:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git diff | sgpt &amp;quot;Craft a git commit message for my modifications.&amp;quot;
# -&amp;gt; Commit message: Refactor User class and update validation logic
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ShellGPT can also analyze logs from various sources by accepting them via stdin or command line arguments, along with an intuitive prompt. This empowers you to pinpoint errors and receive suggestions for potential solutions swiftly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Linux Example:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;tail -n 20 /var/log/syslog | sgpt &amp;quot;Analyze these logs, identify anomalies, and suggest potential fixes.&amp;quot;
# ...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Windows Example:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;Get-EventLog -LogName Application -EntryType Error -Newest 50 | sgpt &amp;quot;analyze output and suggest resolutions for issues found&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This robust feature significantly simplifies managing and interpreting data from various sources, particularly when troubleshooting system issues. By reviewing log files and suggesting potential solutions to identified errors, ShellGPT allows you to focus on the most crucial task: resolving issues and optimizing your systems and applications.&lt;/p&gt;
&lt;h2&gt;Shell Commands&lt;/h2&gt;
&lt;p&gt;Ever found yourself scratching your head over common shell commands, such as chmod, and having to search for the syntax online? With the --shell or -s option, ShellGPT allows you to swiftly find and execute the commands you need directly in the terminal.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sgpt --shell &amp;quot;set all files in the current directory to read-only.&amp;quot;
# -&amp;gt; chmod 444 *
# -&amp;gt; Execute shell command? [y/N]: y
# ...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ShellGPT is aware of your operating system and the shell you&amp;#39;re using, and it tailors the shell commands to your specific system. For example, if you ask ShellGPT to refresh your system, it will return a command based on your OS. Here&amp;#39;s an example using macOS:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;macOS:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sgpt -s &amp;quot;update my system&amp;quot;
# -&amp;gt; sudo softwareupdate -i -a
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The same prompt, when used on Ubuntu, will generate a different suggestion:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Linux:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sgpt -s &amp;quot;update my system&amp;quot;
# -&amp;gt; sudo apt update &amp;amp;&amp;amp; sudo apt upgrade -y
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Let&amp;#39;s experiment with some Docker containers:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sgpt -s &amp;quot;launch nginx using Docker, redirect ports 443 and 80, mount current directory containing index.html&amp;quot;
# -&amp;gt; docker run -d -p 443:443 -p 80:80 -v $(pwd):/usr/share/nginx/html nginx
# -&amp;gt; Execute shell command? [y/N]: y
# ...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can still utilize pipes to feed input to ShellGPT and receive shell commands as output:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;echo &amp;#39;{&amp;quot;key&amp;quot;: &amp;quot;value&amp;quot;}&amp;#39; | sgpt -s &amp;quot;use curl to POST this JSON to localhost&amp;quot;
# -&amp;gt; curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d &amp;#39;{&amp;quot;key&amp;quot;: &amp;quot;value&amp;quot;}&amp;#39; http://localhost
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We can incorporate additional shell tricks in our prompt. In this example, we&amp;#39;re passing file names to ffmpeg:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ls
# -&amp;gt; clip1.mp4 clip2.mp4 clip3.mp4
sgpt -s &amp;quot;use ffmpeg to merge these videos into one, without audio. Video file names: $(ls -m)&amp;quot;
# -&amp;gt; ffmpeg -i clip1.mp4 -i clip2.mp4 -i clip3.mp4 -filter_complex &amp;quot;[0:v] [1:v] [2:v] concat=n=3:v=1 [v]&amp;quot; -map &amp;quot;[v]&amp;quot; output.mp4
# -&amp;gt; Execute shell command? [y/N]: y
# ...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;These examples demonstrate the versatility and power of ShellGPT in generating shell commands, making it a valuable tool for both beginners and experienced users.&lt;/p&gt;
&lt;h2&gt;Full list of Arguments&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;╭─ Arguments ─────────────────────────────────────────────────────────────────────────────────────────────────╮
│   prompt      [PROMPT]  The prompt to generate completions for.                                             │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --model            [gpt-3.5-turbo|gpt-4|gpt-4-32k]  OpenAI GPT model to use. [default: gpt-3.5-turbo]       │
│ --temperature      FLOAT RANGE [0.0&amp;lt;=x&amp;lt;=2.0]        Randomness of generated output. [default: 0.1]          │
│ --top-probability  FLOAT RANGE [0.1&amp;lt;=x&amp;lt;=1.0]        Limits highest probable tokens (words). [default: 1.0]  │
│ --editor                                            Open $EDITOR to provide a prompt. [default: no-editor]  │
│ --cache                                             Cache completion results. [default: cache]              │
│ --help                                              Show this message and exit.                             │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Assistance Options ────────────────────────────────────────────────────────────────────────────────────────╮
│ --shell  -s                 Generate and execute shell commands.                                            │
│ --code       --no-code      Generate only code. [default: no-code]                                          │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Chat Options ──────────────────────────────────────────────────────────────────────────────────────────────╮
│ --chat        TEXT  Follow conversation with id, use &amp;quot;temp&amp;quot; for quick session. [default: None]              │
│ --repl        TEXT  Start a REPL (Read–eval–print loop) session. [default: None]                            │
│ --show-chat   TEXT  Show all messages from provided chat id. [default: None]                                │
│ --list-chats        List all existing chat ids. [default: no-list-chats]                                    │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Role Options ──────────────────────────────────────────────────────────────────────────────────────────────╮
│ --role         TEXT  System role for GPT model. [default: None]                                             │
│ --create-role  TEXT  Create role. [default: None]                                                           │
│ --show-role    TEXT  Show role. [default: None]                                                             │
│ --list-roles         List roles. [default: no-list-roles]                                                   │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;ShellGPT offers a wealth of features I&amp;#39;ve yet to explore fully, but they are readily available for you to utilize. Among these is the ability to create custom roles, which can be used to generate code, shell commands, or to fulfill your specific needs. ShellGPT also includes a runtime configuration file to set up some parameters, providing further customization options.&lt;/p&gt;
&lt;p&gt;Another feature worth mentioning is the REPL (Read-Eval-Print Loop) mode. This interactive mode allows you to chat with GPT models in real time, and it can work in conjunction with the --shell and --code options, making it incredibly useful for interactive shell commands and code generation.&lt;/p&gt;
&lt;p&gt;For Docker enthusiasts, ShellGPT can be run in a Docker container using the OPENAI_API_KEY environment variable and a Docker volume to store the cache. The provided Dockerfile can also be used to build your image, offering deployment flexibility.&lt;/p&gt;
&lt;p&gt;In conclusion, ShellGPT is a powerful tool that brings the capabilities of AI to your terminal, enhancing efficiency and accessibility in your daily tasks. For more detailed information and further exploration, visit the official &lt;a href=&quot;https://github.com/TheR1D/shell_gpt&quot;&gt;ShellGPT GitHub page&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>The Magic of Midjourney Prompts: How to Create Beautiful AI-Generated Images</title><link>https://thebiglaskowski.com/blog/the-magic-of-midjourney-prompts/</link><guid isPermaLink="true">https://thebiglaskowski.com/blog/the-magic-of-midjourney-prompts/</guid><description>Unleash the power of AI in art with Midjourney. Master the creation of photorealistic images using natural language prompts, grasp the advantages of Midjourney, and uncover advanced techniques. This guide, ideal for artists and tech enthusiasts, beckons you to venture into novel realms of digital art.</description><pubDate>Sun, 30 Apr 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;I. Introduction to Midjourney prompting&lt;/h2&gt;
&lt;h3&gt;Overview of Midjourney&lt;/h3&gt;
&lt;p&gt;Midjourney is an AI-based platform for generating images using natural language prompts. It is powered by the OpenAI GPT-3 model and DALL·E 2, which can create high-quality, photorealistic pictures from textual descriptions. Midjourney&amp;#39;s user-friendly interface makes it easy for anyone to create beautiful images with just a few clicks.&lt;/p&gt;
&lt;h3&gt;Advantages of Using Midjourney for Image Generation&lt;/h3&gt;
&lt;p&gt;There are several advantages to using Midjourney for image generation. First, it allows users to create images without extensive knowledge of design software. Second, it can generate photorealistic images that are difficult to develop using traditional design tools. Third, it saves time and resources, as the AI-based system can create images in seconds. Fourth, Midjourney&amp;#39;s user-friendly interface allows users to easily modify and refine their generated images to meet their needs.&lt;/p&gt;
&lt;h3&gt;Examples of Stunning Midjourney-Generated Images&lt;/h3&gt;
&lt;p&gt;Midjourney has been used to create various stunning images, from landscapes to people to abstract designs. Here are some examples of Midjourney-generated photos that showcase the platform&amp;#39;s capabilities:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Example Prompt 1&lt;/strong&gt;
An abstract, colorful design with fluid shapes and patterns that could be used as a background or texture.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Example Prompt 2&lt;/strong&gt;
A realistic portrait of a woman with flowing hair and intricate clothing, complete with subtle shadows and highlights that give it depth and realism.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Example Prompt 3&lt;/strong&gt;
A detailed, 3D rendering of a futuristic city skyline at night, complete with glowing skyscrapers, flying cars, and a moon in the background.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Example Prompt 4&lt;/strong&gt;
A beautiful, photorealistic mountain landscape complete with clouds, trees, and a river.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;These examples show how Midjourney can quickly and efficiently create a wide range of high-quality images, from realistic to abstract.&lt;/p&gt;
&lt;h2&gt;II. Understanding Midjourney prompts&lt;/h2&gt;
&lt;h3&gt;What are prompts?&lt;/h3&gt;
&lt;p&gt;In the context of Midjourney, prompts are inputs that are used to instruct the AI to generate images based on specific parameters. A prompt can be a simple phrase, a sentence, or a paragraph. It&amp;#39;s a set of instructions or criteria that the AI follows to create a unique image.&lt;/p&gt;
&lt;h3&gt;How do prompts work in Midjourney?&lt;/h3&gt;
&lt;p&gt;Midjourney prompts work by providing the AI with specific criteria and constraints for generating an image. These criteria include anything from particular colors or shapes to abstract concepts like emotions or feelings.&lt;/p&gt;
&lt;p&gt;The AI then uses these criteria to create a unique image. The more detailed and specific the prompt, the more precise and unique the image.&lt;/p&gt;
&lt;h3&gt;Examples of Midjourney prompts&lt;/h3&gt;
&lt;p&gt;Here are some examples of Midjourney prompts:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Example Prompt 1&lt;/strong&gt;
Generate an image of a happy dog playing in a park with a ball.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Example Prompt 2&lt;/strong&gt;
Produce an image of a surreal landscape with a giant moon in the background and a small person walking on a tightrope.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Example Prompt 3&lt;/strong&gt;
A detailed, high-resolution image of a sea turtle swimming in the ocean, complete with realistic lighting and textures.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Example Prompt 4&lt;/strong&gt;
Create an image of a sunset over a beach with palm trees in the foreground.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;These prompts provide specific instructions and criteria for the AI to follow when generating an image. The resulting photos will be unique and tailored to the specific criteria provided in the prompt.&lt;/p&gt;
&lt;h2&gt;III. Creating Effective Midjourney Prompts&lt;/h2&gt;
&lt;h3&gt;Best Practices for Creating Prompts&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Start with a clear idea:&lt;/strong&gt; Before creating a prompt, it&amp;#39;s essential to have a clear idea of the type of image you want to generate. Think about the subject matter, the style, the colors, and any other details you wish to include.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Keep it simple:&lt;/strong&gt; Midjourney works best with simple, straightforward prompts. Avoid long, complex prompts that may need clarification for the algorithm and result in subpar output.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use specific language:&lt;/strong&gt; Use particular language in your prompts to guide the algorithm toward creating the desired output. For example, instead of &amp;quot;a landscape with a house,&amp;quot; try &amp;quot;a sunset over a mountain range with a cabin in the foreground.&amp;quot;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Experiment with different prompts:&lt;/strong&gt; Be bold and experiment with various prompts to see what works best. Midjourney is a powerful tool that can generate a wide range of images. Take advantage of that flexibility to try out different ideas.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Tips for Maximizing Creativity and Output Quality&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Incorporate randomness:&lt;/strong&gt; Midjourney can generate surprising and unexpected results when given prompts with a degree of randomness. Try adding a random element to your prompts to see what output you can get.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use constraints:&lt;/strong&gt; Sometimes, adding controls can boost creativity. For example, limiting yourself to a specific color palette or style can help you develop unique and creative prompts that result in stunning images.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Incorporate real-world inspiration:&lt;/strong&gt; Take inspiration from the real world to create prompts that feel grounded in reality. This can include using photographs, paintings, or other visual references to create prompts that capture a specific mood or style.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Feel free to iterate:&lt;/strong&gt; Creating effective Midjourney prompts takes practice, like any creative process. Feel free to iterate and refine your prompts to improve your output quality.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Examples of Effective Midjourney Prompts&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Example Prompt 1&lt;/strong&gt;
A still life of a vase of flowers on a table, with a light source coming from the left.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Example Prompt 2&lt;/strong&gt;
A minimalist landscape with a single tree in the foreground, and a mountain range in the background.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Example Prompt 3&lt;/strong&gt;
A surrealist landscape with a giant mushroom forest and a small cabin in the center, with a rainbow in the sky.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Example Prompt 4&lt;/strong&gt;
A starry night sky over a cityscape, with the moon rising in the background.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;IV. Midjourney prompt commands and parameters&lt;/h2&gt;
&lt;p&gt;Midjourney provides a variety of commands and parameters to help users create unique and custom prompts for generating images. In this section, we will explore the different commands and parameters that Midjourney offers and how to use them effectively.&lt;/p&gt;
&lt;h2&gt;Commands Available&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;/ask&lt;/strong&gt; - get an answer to a question&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/blend&lt;/strong&gt; - easily blend two images together&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/daily_theme&lt;/strong&gt; - toggle notification pings for the #daily-theme channel update&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/describe&lt;/strong&gt; - generate four example prompts based on an image upload&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/faq&lt;/strong&gt; - generate a link to popular prompt craft channel FAQs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/fast&lt;/strong&gt; - switch to Fast mode&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/help&lt;/strong&gt; - show helpful basic information and tips about the Midjourney Bot&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/imagine&lt;/strong&gt; - generate an image using a prompt&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/info&lt;/strong&gt; - view information about your account and any queued or running jobs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/stealth&lt;/strong&gt; - switch to Stealth mode (for Pro Plan Subscribers)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/public&lt;/strong&gt; - switch to Public mode (for Pro Plan Subscribers)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/subscribe&lt;/strong&gt; - generate a personal link for a user&amp;#39;s account page&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/settings&lt;/strong&gt; - view and adjust the Midjourney Bot&amp;#39;s settings&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/prefer&lt;/strong&gt; option - create or manage a custom option&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/prefer&lt;/strong&gt; option list - view your current custom options&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/prefer&lt;/strong&gt; suffix - specify a suffix to add to the end of every prompt&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/show&lt;/strong&gt; - regenerate a job within Discord using its Job ID&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/relax&lt;/strong&gt; - switch to Relax mode&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/remix&lt;/strong&gt; - toggle Remix mode&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Parameters Available&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Aspect Ratio (--aspect, --ar)&lt;/strong&gt;
Change the aspect ratio of a generation.
&lt;em&gt;Example: &amp;quot;model:GPT-3, seed:dog, aspect:4:3&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Chaos (--chaos &amp;lt;number&amp;gt;)&lt;/strong&gt;
Change how varied the results will be. Higher values produce more unusual and unexpected generations.
&lt;em&gt;Example: &amp;quot;model:DALL-E 2, seed:tree, chaos:80&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Negative Prompting (--no)&lt;/strong&gt;
Remove specific elements from the generated image.
&lt;em&gt;Example: &amp;quot;model:ClipDraw, seed:car, no:sky&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Quality (--quality, --q)&lt;/strong&gt;
Control the rendering quality of the output. Higher values cost more and lower values cost less.
&lt;em&gt;Example: &amp;quot;model:VQGAN+CLIP, seed:flower, quality:.5&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Repeat (--repeat, --r)&lt;/strong&gt;
Create multiple jobs from a single prompt.
&lt;em&gt;Example: &amp;quot;model:BigGAN, seed:cat, repeat:5&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Seed (--seed)&lt;/strong&gt;
Set a seed number to generate the initial image grids.
&lt;em&gt;Example: &amp;quot;model:CLIPDraw, seed:city, seed:12345&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stop (--stop)&lt;/strong&gt;
Finish a job partway through the process.
&lt;em&gt;Example: &amp;quot;model:VQGAN+CLIP, seed:mountain, stop:50&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Style (--style)&lt;/strong&gt;
Switch between versions of the Midjourney model.
&lt;em&gt;Example: &amp;quot;model:BigGAN, seed:dog, style:4a&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stylize (--stylize, --s)&lt;/strong&gt;
Control how strongly Midjourney&amp;#39;s default aesthetic style is applied to jobs.
&lt;em&gt;Example: &amp;quot;model:DALL-E 2, seed:cup, stylize:500&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Upscaler Parameters (--uplight, --upbeta, --upanime)&lt;/strong&gt;
Upscale images to increase size and add additional details using different upscalers.
&lt;em&gt;Example: &amp;quot;model:VQGAN+CLIP, seed:landscape, uplight&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Niji Model (--niji)&lt;/strong&gt;
Use an alternative model focused on anime-style images.
&lt;em&gt;Example: &amp;quot;model:VQGAN+CLIP, seed:anime, niji&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;High Definition (--hd)&lt;/strong&gt;
Use an early alternative model that produces larger, less consistent images.
&lt;em&gt;Example: &amp;quot;model:BigGAN, seed:city, hd&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Test (--test)&lt;/strong&gt;
Use the Midjourney special test model.
&lt;em&gt;Example: &amp;quot;model:DALL-E, seed:dog, test&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Testp (--testp)&lt;/strong&gt;
Use the Midjourney special photography-focused test model.
&lt;em&gt;Example: &amp;quot;model:VQGAN+CLIP, seed:food, testp&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Version (--version, --v)&lt;/strong&gt;
Use a different version of the Midjourney algorithm.
&lt;em&gt;Example: &amp;quot;model:BigGAN, seed:animal, version:3&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Creative (--creative)&lt;/strong&gt;
Modify the test and testp models to be more varied and creative.
&lt;em&gt;Example: &amp;quot;model:VQGAN+CLIP, seed:portrait, creative&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Image Weight (--iw)&lt;/strong&gt;
Set the image prompt weight relative to text weight.
&lt;em&gt;Example: &amp;quot;model:DALL-E 2, seed:apple, iw:.75&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sameseed (--sameseed)&lt;/strong&gt;
The same seed value will be used to create a single random noise field applied across all images in the initial grid. When --sameseed is specified, all images in the initial grid use the same starting noise and will produce similar generated images.
&lt;em&gt;Example: &amp;quot;model:DALL-E 2, seed:cat, scale:2, upbeta, --sameseed&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Video (--video)&lt;/strong&gt;
Saves a progress video of the initial image grid being generated. Emoji reacts to the completed image grid with ✉️ to trigger the video being sent to your direct messages. --video does not work when upscaling an image.
&lt;em&gt;Example: &amp;quot;model:CLIPDraw, seed:mountains, iterations:10, --video&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Each Midjourney prompt command serves a specific purpose and can be used to create images, change default settings, monitor user info, and perform other helpful tasks. To use a command, simply type it in a Discord channel or direct message with the Midjourney Bot. You can also use parameters to further customize your command.&lt;/p&gt;
&lt;h3&gt;Examples of prompts using different commands and parameters&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Remix command with aspect ratio parameter:&lt;/strong&gt;
Toggle Remix mode and generate a generation with an aspect ratio of 4:3 using DALL-E 2 model by typing &amp;quot;/remix model:DALL-E 2, seed:tree, aspect:4:3&amp;quot; &lt;em&gt;&amp;quot;/imagine &lt;a href=&quot;https://s.mj.run/abcxyz&quot;&gt;https://s.mj.run/abcxyz&lt;/a&gt; cartoon style&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Imagine command with chaos parameter:&lt;/strong&gt;
Get a chaotic image of a tree with a more varied and unexpected response by typing &lt;em&gt;&amp;quot;/imagine model:DALL-E 2, seed:tree, chaos:80&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Imagine command with quality parameter:&lt;/strong&gt;
Generate a high-quality image of a flower using VQGAN+CLIP model by typing &lt;em&gt;&amp;quot;/imagine model:VQGAN+CLIP, seed:flower, quality:1&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Describe command with negative prompting parameter:&lt;/strong&gt;
Generate an image of a car, but remove the sky from the generated results by typing &lt;em&gt;&amp;quot;/describe model:ClipDraw, image:car.jpg, no:sky&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;V. Midjourney prompt resources&lt;/h2&gt;
&lt;h3&gt;Where to find inspiration for prompts&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Images:&lt;/strong&gt; The most common source of inspiration for Midjourney prompts are images. You can find inspiration by browsing image-sharing platforms like &lt;a href=&quot;https://instagram.com&quot;&gt;Instagram&lt;/a&gt;, &lt;a href=&quot;https://www.flickr.com/&quot;&gt;Flickr&lt;/a&gt;, or &lt;a href=&quot;https://unsplash.com/&quot;&gt;Unsplash&lt;/a&gt;, or by searching for specific keywords on &lt;a href=&quot;https://www.google.com/imghp?hl=en&amp;ogbl&quot;&gt;Google Images&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Writing prompts:&lt;/strong&gt; Another source of inspiration for Midjourney prompts is writing prompts. Several websites provide a variety of writing prompts, such as &lt;a href=&quot;https://blog.reedsy.com/creative-writing-prompts/&quot;&gt;Reedsy&lt;/a&gt;, &lt;a href=&quot;https://www.writersdigest.com/prompts&quot;&gt;Writer&amp;#39;s Digest&lt;/a&gt;, and &lt;a href=&quot;https://www.reddit.com/r/WritingPrompts/&quot;&gt;Reddit&amp;#39;s Writing Prompts&lt;/a&gt; subreddit.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Random generators:&lt;/strong&gt; If you&amp;#39;re looking for something more spontaneous, several online prompt generators can provide many ideas. One such generator is the &lt;a href=&quot;https://www.seventhsanctum.com/generate.php?Genname=writeprompt&quot;&gt;Seventh Sanctum&lt;/a&gt; prompt generator.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Community resources for sharing and learning about prompts&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Discord channels:&lt;/strong&gt; The Midjourney Discord server has several channels dedicated to sharing and discussing prompts. These include the #daily-theme, #prompt-craft, and #share-your-work channels.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reddit:&lt;/strong&gt; The &lt;a href=&quot;https://www.reddit.com/r/midjourney/&quot;&gt;/r/Midjourney&lt;/a&gt; subreddit is a community of Midjourney users who share their prompts, discuss their experiences, and offer tips and advice to others.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Twitter:&lt;/strong&gt; The &lt;a href=&quot;https://twitter.com/search?q=%23midjourney&amp;src=typeahead_click&quot;&gt;#Midjourney&lt;/a&gt; hashtag is a great place to find inspiration and connect with other Midjourney users.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Tools and websites for generating Midjourney prompts&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Artbreeder:&lt;/strong&gt; &lt;a href=&quot;https://www.artbreeder.com/&quot;&gt;Artbreeder&lt;/a&gt; is a website that allows you to generate images using machine learning. It&amp;#39;s an excellent tool for generating Midjourney prompts. You can use the images you generate as starting points for your prompts.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Deep Dream Generator:&lt;/strong&gt; &lt;a href=&quot;https://deepdreamgenerator.com/&quot;&gt;Deep Dream Generator&lt;/a&gt; is another website that uses machine learning to generate images. It allows you to adjust several parameters to create unique and exciting images.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Text generators:&lt;/strong&gt; Several websites generate text prompts that you can use with Midjourney. One such website is &lt;a href=&quot;https://aidungeon.io/&quot;&gt;AI Dungeon&lt;/a&gt;, which allows you to generate text-based prompts for various genres.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Prompt generators:&lt;/strong&gt; Several websites generate random prompts specifically for Midjourney. One such website is the &lt;a href=&quot;https://huggingface.co/spaces/doevent/prompt-generator&quot;&gt;Midjourney prompt generator&lt;/a&gt;, which provides a variety of prompts based on different models and parameters.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Utilizing these resources allows you to find inspiration, connect with other Midjourney users, and generate various prompts to feed into the Midjourney bot.&lt;/p&gt;
&lt;h2&gt;VI. Advanced Midjourney prompt techniques&lt;/h2&gt;
&lt;p&gt;Midjourney is a powerful AI tool that can generate stunning images from just a few prompts. While simple prompts can produce excellent results, combining different techniques can take your creations to the next level. This section will explore some advanced Midjourney prompt techniques to help you get the most out of this incredible tool.&lt;/p&gt;
&lt;h3&gt;Layering prompts for more complex images&lt;/h3&gt;
&lt;p&gt;One way to create more complex and detailed images is by layering multiple prompts on top of each other. By combining prompts, you can give Midjourney more information to work with and create images with more depth and complexity.&lt;/p&gt;
&lt;p&gt;For example, you can layer a prompt for a landscape with a prompt for a specific object, such as a tree or a building, to create an image incorporating both elements. You can layer prompts for different styles or colors to create unique and eye-catching compositions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Here are some examples of layered prompts:&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Layered Prompt 1&lt;/strong&gt;
&lt;strong&gt;Prompt:&lt;/strong&gt; &amp;quot;/imagine seed:ocean,seed:sunset beach&amp;quot; - &lt;strong&gt;Result:&lt;/strong&gt; &lt;em&gt;A stunning image of an island with water, trees and some mountains.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Layered Prompt 2&lt;/strong&gt;
&lt;strong&gt;Prompt:&lt;/strong&gt; &amp;quot;/imagine model:midjourney-1 seed:mountain,seed:cabin&amp;quot; - &lt;strong&gt;Result:&lt;/strong&gt; &lt;em&gt;A beautiful landscape image with a cozy cabin nestled in the mountains.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Using AI-generated text as prompts&lt;/h3&gt;
&lt;p&gt;Midjourney can generate images based on text prompts, which means you can use AI-generated text as a starting point for your creations. This technique can produce surprising and fascinating results, as the AI can develop ideas you may not have considered.&lt;/p&gt;
&lt;p&gt;For example, you can use an AI text generator to create a short story or a poem and then use that text as a prompt for Midjourney. You can also use text from books or articles to generate images representing certain concepts or themes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Here are some examples of AI-generated text prompts:&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AI Prompt Example 1&lt;/strong&gt;
&lt;strong&gt;Text prompt:&lt;/strong&gt; &amp;quot;A city made of clouds, floating in the sky.&amp;quot;
&lt;strong&gt;Result:&lt;/strong&gt; &lt;em&gt;An ethereal image of a cityscape made entirely of clouds, floating in a dreamlike sky.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AI Prompt Example 2&lt;/strong&gt;
&lt;strong&gt;Text prompt:&lt;/strong&gt; &amp;quot;A forest of rainbow-colored trees, with glowing mushrooms growing at their base.&amp;quot;
&lt;strong&gt;Result:&lt;/strong&gt; &lt;em&gt;An imaginative image of a fantastical forest, with trees and glowing mushrooms in every color of the rainbow at their roots.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Creating custom datasets for Midjourney&lt;/h3&gt;
&lt;p&gt;Another advanced technique for Midjourney prompts is to create custom datasets for the AI to learn from. By curating your own dataset of images or text, you can guide Midjourney&amp;#39;s output toward a specific style or theme.&lt;/p&gt;
&lt;p&gt;For example, you can create a dataset of images with a specific color scheme or a dataset of text related to a particular topic. You can then use those datasets as prompts for Midjourney, and the AI will generate images that reflect the style or theme of the dataset.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;To create a custom dataset in Midjourney, you can use the prefer command with the option parameter. Here&amp;#39;s an example:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/prefer option mydataset
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This will create a new option called &lt;em&gt;mydataset&lt;/em&gt; in your Midjourney account. You can then add images or text to this dataset using the prefer command with the add parameter:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/prefer add mydataset https://example.com/image1.jpg
/prefer add mydataset https://example.com/image2.jpg
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can also remove items from the dataset using the prefer command with the remove parameter:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/prefer remove mydataset https://example.com/image1.jpg
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Once you have created your custom dataset, you can use it as a prompt for Midjourney by including the name of the dataset in your imagine command:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/imagine model:midjourney-1 seed:mydataset
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This will generate images based on the images or text in your custom dataset, allowing you to create custom themes and styles for your Midjourney prompts.&lt;/p&gt;
&lt;p&gt;These advanced Midjourney prompt techniques are just the tip of the iceberg regarding the possibilities of this amazing AI tool. You can create unique, captivating, genuinely unique images by experimenting with different prompts and techniques.&lt;/p&gt;
&lt;h2&gt;VII. Conclusion&lt;/h2&gt;
&lt;h3&gt;Recap of Midjourney prompting&lt;/h3&gt;
&lt;p&gt;Midjourney is an AI-powered tool that allows users to generate images based on various prompts. These prompts can be simple or complex and incorporate text and images. Midjourney offers a wide range of models and parameters to customize and fine-tune the output of the AI, as well as a variety of commands to control the process.&lt;/p&gt;
&lt;p&gt;In this article, we covered the basics of Midjourney prompting, including the different types of prompts, how to use commands and parameters to control the output, and how to find inspiration and resources for creating prompts. We also delved into more advanced techniques, such as layering prompts and creating custom datasets, to make even more complex and unique images.&lt;/p&gt;
&lt;h3&gt;Final thoughts and tips for using Midjourney effectively&lt;/h3&gt;
&lt;p&gt;To use Midjourney effectively, it&amp;#39;s essential to understand the different models and parameters available and how to use them to achieve the desired output. It&amp;#39;s also important to experiment with different prompts and use various sources for inspiration.&lt;/p&gt;
&lt;p&gt;When using Midjourney, it&amp;#39;s essential to remember that the AI could be better and may only sometimes produce the desired results. However, users can achieve impressive and creative results with practice and experimentation.&lt;/p&gt;
&lt;h3&gt;More Midjourney creations&lt;/h3&gt;
&lt;p&gt;Here are a few more examples of what&amp;#39;s possible with creative Midjourney prompting:&lt;/p&gt;
&lt;h3&gt;Try Midjourney for yourself and share your creations&lt;/h3&gt;
&lt;p&gt;I encourage everyone to try Midjourney and share their creations with the Midjourney community. Whether you&amp;#39;re a professional artist looking for new inspiration or someone with no artistic background looking to explore your creative side, Midjourney offers a unique and exciting way to generate art using AI technology.&lt;/p&gt;
&lt;p&gt;So why not give it a try? Use the prompts and techniques we&amp;#39;ve covered in this article to create your own unique images and share them with the world. Who knows what kind of unique creations you&amp;#39;ll come up with?&lt;/p&gt;
</content:encoded></item><item><title>Unleashing Creativity: Mastering AI-Generated Art with Midjourney</title><link>https://thebiglaskowski.com/blog/mastering-ai-generated-art-midjourney/</link><guid isPermaLink="true">https://thebiglaskowski.com/blog/mastering-ai-generated-art-midjourney/</guid><description>Explore the world of AI-generated art with Midjourney v5. This post features vibrant landscapes and imaginative animal portraits, all crafted with AI. Learn how tools like the Interrogator plugin can turn ideas into extraordinary art. Perfect for tech enthusiasts and art lovers, this post will inspire you to unlock new creative possibilities.</description><pubDate>Sun, 23 Apr 2023 22:22:34 GMT</pubDate><content:encoded>&lt;h2&gt;Midjourney&lt;/h2&gt;
&lt;p&gt;As a creative enthusiast with a knack for utilizing AI tools, I&amp;#39;ve recently dived into the world of AI-generated art. My latest adventure has been with Midjourney v5. This AI platform has helped me produce striking, colorful images featuring animals, dreamy landscapes, and breathtaking creations. These unique innovations are a testament to the boundless potential of AI-art collaboration.&lt;/p&gt;
&lt;h2&gt;The Creative Process&lt;/h2&gt;
&lt;p&gt;The creative process begins with an image similar to one that I would like to create. I run it locally through a Stable Diffusion plugin, &lt;a href=&quot;https://github.com/pharmapsychotic/clip-interrogator-ext&quot;&gt;Interrogator&lt;/a&gt;. This innovative reverse image-to-text generator assists in crafting detailed prompts that I use in Midjourney. With these well-thought-out prompts that I can customize and tweak, I can unlock the AI platform&amp;#39;s true capabilities and generate extraordinary art.&lt;/p&gt;
&lt;p&gt;Playing with different prompts and witnessing the stunning results has been a refreshing experience. Observing how AI interprets and transforms my ideas into vibrant and imaginative images is fascinating. Each piece stands out as a unique expression of the limitless potential at the intersection of technology and creativity.&lt;/p&gt;
&lt;h2&gt;Animal Portraits&lt;/h2&gt;
&lt;p&gt;These animal portraits showcase Midjourney&amp;#39;s ability to capture personality and emotion. From fierce predators to whimsical characters, each prompt produces a unique interpretation that brings these creatures to life with vivid color and striking detail.&lt;/p&gt;
&lt;h2&gt;Dreamscapes &amp;amp; Landscapes&lt;/h2&gt;
&lt;p&gt;Midjourney truly shines when creating otherworldly landscapes and nature scenes. These prompts explore everything from enchanted forests to cosmic vistas, each one transformed into a rich, immersive environment.&lt;/p&gt;
&lt;h2&gt;Creative Visions&lt;/h2&gt;
&lt;p&gt;Some of the most interesting results come from abstract and unconventional prompts. These pieces push the boundaries of what AI-generated art can express, blending surrealism with vivid artistic styles.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;I invite you to join me in embracing the world of AI-generated art and the endless possibilities that arise when we combine our creative instincts with powerful AI tools. Together, we can explore new horizons and unlock the infinite realms of imagination.&lt;/p&gt;
</content:encoded></item><item><title>Customize Your Terminal: A Comprehensive Guide to Enhancing Your Linux CLI Experience</title><link>https://thebiglaskowski.com/blog/riced-out-terminal/</link><guid isPermaLink="true">https://thebiglaskowski.com/blog/riced-out-terminal/</guid><description>A guide to make your terminal look and feel professional. Transform your boring default stock terminal into a riced-out beast.</description><pubDate>Sun, 08 Aug 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Enhancing the appearance and functionality of your Terminal can be a fun and rewarding way to personalize your workspace. This tutorial will demonstrate how to transform your Ubuntu terminal into a visually appealing and professional environment using color schemes, the Color LS Ruby gem, and other valuable tools. By the end of this guide, your Terminal will look fantastic and improve your daily workflow.&lt;/p&gt;
&lt;h2&gt;Customize Your Terminal in Ubuntu 20.04&lt;/h2&gt;
&lt;h3&gt;1. Install base-16-gnome-terminal&lt;/h3&gt;
&lt;p&gt;The default shell in Ubuntu 20.04 is the Gnome terminal. Follow the instructions on the &lt;a href=&quot;https://github.com/chriskempson/base16&quot;&gt;base16 github page&lt;/a&gt; to locate the shell you are using and install the desired color scheme.&lt;/p&gt;
&lt;h3&gt;2. Download and Install the Patched Hack Nerd Font&lt;/h3&gt;
&lt;p&gt;Nerd Fonts is a set of modified fonts with additional glyphs or symbols. Download the hack.zip file from the &lt;a href=&quot;https://www.nerdfonts.com/font-downloads&quot;&gt;Nerd fonts download page&lt;/a&gt;, extract the contents, and install the &amp;quot;Hack Regular Nerd Font Complete.ttf&amp;quot; font. Then, set it as your terminal font in Gnome terminal preferences.&lt;/p&gt;
&lt;h3&gt;3. Install Ruby and Color LS&lt;/h3&gt;
&lt;p&gt;Color LS is a Ruby gem that adds color to the ls command output. Install Ruby and Color LS with the following commands:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo apt install ruby-full
sudo gem install colorls
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;4. Install ZSH and Make It Your Default Shell&lt;/h3&gt;
&lt;p&gt;ZSH is a powerful command-line interpreter or shell for UNIX-based operating systems. Install ZSH and make it your default shell with the following commands:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo apt install zsh
chsh -s $(which zsh)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Log out and back in again to apply the changes in Ubuntu.&lt;/p&gt;
&lt;h3&gt;5. Install Oh My Zsh Framework&lt;/h3&gt;
&lt;p&gt;Oh-My-ZSH is an open-source framework for managing the ZSH shell. It provides a large collection of plugins and themes for ZSH. Install Oh-My-ZSH with the following command:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sh -c &amp;quot;$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;6. Install the PowerLevel10K Theme and Plugins&lt;/h3&gt;
&lt;p&gt;PowerLevel10K is a popular ZSH theme with a modern and powerful appearance. Install PowerLevel10K, auto suggestions, and syntax highlighting plugins with the following commands:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
git clone https://github.com/zsh-users/zsh-autosuggestions.git $ZSH_CUSTOM/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;7. Edit the .zshrc Configuration&lt;/h3&gt;
&lt;p&gt;Customize your .zshrc configuration file with the appropriate changes, including setting the PowerLevel10K theme, enabling command auto-correction, adding downloaded plugins, and creating aliases for Color LS.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Open .zshrc with your preferred text editor, e.g., vim or nano
vim ~/.zshrc

# Find the ZSH_THEME line and change it to
ZSH_THEME=&amp;quot;powerlevel10k/powerlevel10k&amp;quot;

# Add the following line right below ZSH_THEME to incorporate the patched Hack Nerd font installed earlier
POWERLEVEL10K_MODE=&amp;quot;nerdfont-complete&amp;quot;

# Uncomment the following line to enable command auto-correction
ENABLE_CORRECTION=&amp;quot;true&amp;quot;

# To add the plugins we downloaded, edit plugins=(git) as shown
plugins=(
git
zsh-autosuggestions
zsh-syntax-highlighting
)

# Add the following lines anywhere in your configuration
# Color LS
export LS_COLORS

# Create a few aliases to use Color LS by default
alias ls=&amp;#39;colorls -A --gs --sd&amp;#39;
alias ll=&amp;#39;colorls -lA --gs --sd&amp;#39;
alias lt=&amp;#39;colorls --tree --gs --sd&amp;#39;

# Save and exit the file
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Remember to replace vim with your preferred text editor if needed. After saving and closing the file, restart your terminal or run &lt;strong&gt;source ~/.zshrc&lt;/strong&gt; to apply the changes.&lt;/p&gt;
&lt;h3&gt;8. Run or Re-Run the Powerlevel10K Theme Setup&lt;/h3&gt;
&lt;p&gt;Configure the Powerlevel10K theme with the following command:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;p10k configure
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;You can run the configuration setup multiple times to fine-tune your Terminal&amp;#39;s appearance. Experiment with various options provided by Powerlevel10K to create a unique and personalized terminal interface that meets your specific needs and preferences.&lt;/p&gt;
&lt;p&gt;With these steps, you can enjoy a visually appealing and functionally efficient terminal experience. By using the customization options available in Powerlevel10K, Color LS, and other tools, you can create an aesthetically pleasing terminal interface tailored to your workflow.&lt;/p&gt;
&lt;h2&gt;Additional Customizations and Tools&lt;/h2&gt;
&lt;p&gt;To further enhance your terminal experience, consider exploring additional customizations and tools:&lt;/p&gt;
&lt;h3&gt;1. Explore Additional ZSH Plugins&lt;/h3&gt;
&lt;p&gt;There are numerous ZSH plugins available that can improve your terminal experience. Browse the &lt;a href=&quot;https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins&quot;&gt;Oh-My-ZSH plugins page&lt;/a&gt; for a comprehensive list of available plugins, and choose ones that suit your needs.&lt;/p&gt;
&lt;h3&gt;2. Customize Your Terminal Colors&lt;/h3&gt;
&lt;p&gt;Suppose you want to further customize your Terminal&amp;#39;s colors. In that case, you can use tools like &lt;a href=&quot;https://terminal.sexy/&quot;&gt;Terminal.sexy&lt;/a&gt; or &lt;a href=&quot;https://github.com/Mayccoll/Gogh&quot;&gt;Gogh&lt;/a&gt; to create or choose from a wide range of color schemes that can be easily imported into your terminal preferences.&lt;/p&gt;
&lt;h3&gt;3. Customize Your Shell Prompt&lt;/h3&gt;
&lt;p&gt;Customize your shell prompt to display additional information or to match your preferred style. You can use tools like &lt;a href=&quot;https://starship.rs/&quot;&gt;Starship&lt;/a&gt; or &lt;a href=&quot;https://github.com/sindresorhus/pure&quot;&gt;Pure&lt;/a&gt; to create a minimalist and informative prompt. You can also manually customize your prompt by editing your .zshrc or .bashrc files.&lt;/p&gt;
&lt;h3&gt;4. Use a Terminal Multiplexer&lt;/h3&gt;
&lt;p&gt;A terminal multiplexer, like &lt;a href=&quot;https://github.com/tmux/tmux&quot;&gt;tmux&lt;/a&gt; or &lt;a href=&quot;https://www.gnu.org/software/screen/&quot;&gt;screen&lt;/a&gt;, allows you to create multiple terminal sessions within a single terminal window. This can improve your productivity by allowing you to easily switch between tasks without opening multiple terminal windows.&lt;/p&gt;
&lt;h3&gt;5. Integrate Git and Other Version Control Systems&lt;/h3&gt;
&lt;p&gt;Integrate your Terminal with Git or other version control systems to streamline your development workflow. You can install plugins like &lt;a href=&quot;https://github.com/olivierverdier/zsh-git-prompt&quot;&gt;zsh-git-prompt&lt;/a&gt; or &lt;a href=&quot;https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/git-flow&quot;&gt;zsh-git-flow&lt;/a&gt; to display branch and status information directly in your terminal prompt.&lt;/p&gt;
&lt;p&gt;By experimenting with these additional customizations and tools, you can create a truly unique and efficient terminal environment tailored to your specific needs and preferences. A well-configured terminal can improve your productivity, make it easier to navigate your filesystem, and provide a visually pleasing workspace that you&amp;#39;ll enjoy using daily.&lt;/p&gt;
</content:encoded></item></channel></rss>