<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: leony</title>
    <description>The latest articles on DEV Community by leony (@leony).</description>
    <link>https://dev.to/leony</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4154259%2Fd87df0ce-075c-4e8b-916f-a192163f10f3.png</url>
      <title>DEV Community: leony</title>
      <link>https://dev.to/leony</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/leony"/>
    <language>en</language>
    <item>
      <title>How to Remove a Stranger From Your Travel Photo (Step by Step)</title>
      <dc:creator>leony</dc:creator>
      <pubDate>Fri, 16 Oct 2026 15:38:48 +0000</pubDate>
      <link>https://dev.to/leony/how-to-remove-a-stranger-from-your-travel-photo-step-by-step-2noc</link>
      <guid>https://dev.to/leony/how-to-remove-a-stranger-from-your-travel-photo-step-by-step-2noc</guid>
      <description>&lt;p&gt;You finally get the shot. Good light, clear sky, the sea behind you. Then you check the screen and there's a man in a blue T-shirt walking straight through the frame.&lt;/p&gt;

&lt;p&gt;That's happened to me more times than I can count, and it's the main reason I built the people removal tool in RemoveGenie. I'll use one of my own test images for the walkthrough, and the last section covers the photos it still gets wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  When it's worth doing
&lt;/h2&gt;

&lt;p&gt;I mostly use it on travel shots, where someone walks behind you just as the shutter fires and you can't get the moment back. Busy landmarks are the other big one. Popular viewpoints are rarely empty, and clearing one or two people out of the background makes the photo feel a lot calmer.&lt;/p&gt;

&lt;p&gt;It also comes up with product and real-estate photos: your own reflection in a shop window, or a neighbour standing in the corner of a listing shot.&lt;/p&gt;

&lt;p&gt;In all of these, the thing I remove was never meant to be the subject of the photo.&lt;/p&gt;

&lt;h2&gt;
  
  
  The example photo
&lt;/h2&gt;

&lt;p&gt;Here's the starting image. A woman is posing on a seaside promenade, and a man is walking through the background on the right.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhcn6esofe6tjqyivzu81.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhcn6esofe6tjqyivzu81.webp" alt="Original travel photo with a passerby walking behind the subject" width="800" height="600"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Before: the passerby on the right pulls attention away from the subject.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step by step
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Open the tool and upload your photo.&lt;/strong&gt; Go to the &lt;a href="https://removegenie.com/remove-people-from-photo?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=rg-tutorial-people" rel="noopener noreferrer"&gt;people removal tool&lt;/a&gt; and drop in your image. JPG, PNG and WebP all work. Use the biggest version of the photo you've got.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Brush over the person.&lt;/strong&gt; Paint over the whole person. Don't trace the edges exactly; go a little past them, because the area just outside the outline helps the fill blend in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Brush the shadow too.&lt;/strong&gt; This is the step people skip most. Here the man casts a long shadow across the paving, so I painted over that as well.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz0l8ksado195wrntxkbj.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz0l8ksado195wrntxkbj.webp" alt="The passerby and his shadow highlighted with the brush" width="800" height="600"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Brush the person and his shadow. Leftover shadows are the most common giveaway.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Run the removal.&lt;/strong&gt; The tool fills the brushed area from the scene around it. In this case that's the railing, the sea and the stone paving.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Check it at full size, then download.&lt;/strong&gt; Zoom in on the edited spot before you save. If it looks off, undo and brush again.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpfv3gr58nh56t8a8dk37.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpfv3gr58nh56t8a8dk37.webp" alt="Final photo with the passerby removed" width="800" height="600"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Result: the railing and paving continue naturally where the man used to be.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A few habits make a bigger difference than you'd expect. Always include the shadow, because a shadow with nobody attached looks weirder than the person did. If there are several people, remove them one at a time instead of brushing everyone at once; smaller gaps give the tool more real context and usually come out cleaner. Brush a bit wider than the person, since a tight outline can leave a faint halo of the original colours. And start from the original file. Screenshots and photos re-sent through messaging apps lose detail, which makes the fill harder.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it still struggles
&lt;/h2&gt;

&lt;p&gt;If the person takes up a big chunk of the frame, the tool has to invent a lot of background, and you may see smudges or repeated textures. Crowds, ornate tiles and signs full of text are hard to rebuild convincingly, while sky, water, sand and plain walls work much better. Very low-resolution images tend to come out soft or blotchy, simply because there aren't many pixels to work from.&lt;/p&gt;

&lt;p&gt;When I hit one of these, splitting the job into smaller passes often helps. Sometimes a light crop is the better fix.&lt;/p&gt;

&lt;p&gt;The same approach works on things that aren't people, like a stray bag on a bench or a cable across a wall. For those there's the &lt;a href="https://removegenie.com/remove-object-from-photo?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=rg-tutorial-people" rel="noopener noreferrer"&gt;object removal tool&lt;/a&gt;, which uses the same brush-and-fill workflow, and the shadow and small-areas advice applies there too.&lt;/p&gt;

&lt;p&gt;Removing a passerby used to mean a long session with the clone stamp. If you've got a travel photo with an uninvited guest in it, try the &lt;a href="https://removegenie.com/remove-people-from-photo?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=rg-tutorial-people" rel="noopener noreferrer"&gt;people removal tool&lt;/a&gt; on it.&lt;/p&gt;

&lt;p&gt;And if you tried it on a tricky photo and got a weird result, tell me in the comments. Those edge cases are what I use to improve the tool.&lt;/p&gt;

</description>
      <category>photography</category>
      <category>ai</category>
      <category>tutorial</category>
      <category>imageediting</category>
    </item>
    <item>
      <title>Writing better prompts for image-to-video: camera moves, motion and start frames</title>
      <dc:creator>leony</dc:creator>
      <pubDate>Sun, 11 Oct 2026 04:02:13 +0000</pubDate>
      <link>https://dev.to/leony/writing-better-prompts-for-image-to-video-camera-moves-motion-and-start-frames-pim</link>
      <guid>https://dev.to/leony/writing-better-prompts-for-image-to-video-camera-moves-motion-and-start-frames-pim</guid>
      <description>&lt;p&gt;Image-to-video models are surprisingly literal. Give them a vague prompt and they invent motion you didn't want; give them a clear start frame and a short, specific motion brief and they behave much more like a camera operator. Here is the checklist I use.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Let the start frame carry the composition
&lt;/h2&gt;

&lt;p&gt;The single biggest upgrade is to stop describing what is already in the image. If your start frame shows a red bicycle leaning on a brick wall at dusk, the model can see that. Repeating it in the prompt mostly adds noise and invites the model to "re-imagine" the scene.&lt;/p&gt;

&lt;p&gt;Instead, spend your words on what should &lt;strong&gt;change&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what moves (the subject, the background, the light)&lt;/li&gt;
&lt;li&gt;how the camera moves&lt;/li&gt;
&lt;li&gt;how fast things happen&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A good rule of thumb: if a sentence in your prompt would still be true of the frozen image, cut it.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. One camera move per clip
&lt;/h2&gt;

&lt;p&gt;Short clips (5–10 seconds) rarely survive two camera moves. Pick one:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Move&lt;/th&gt;
&lt;th&gt;What to write&lt;/th&gt;
&lt;th&gt;Good for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Push in&lt;/td&gt;
&lt;td&gt;"slow push-in toward the subject's face"&lt;/td&gt;
&lt;td&gt;emotion, reveals&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pull out&lt;/td&gt;
&lt;td&gt;"camera slowly pulls back to reveal the street"&lt;/td&gt;
&lt;td&gt;context, endings&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Orbit&lt;/td&gt;
&lt;td&gt;"gentle 30-degree orbit around the product"&lt;/td&gt;
&lt;td&gt;products, objects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pan&lt;/td&gt;
&lt;td&gt;"slow pan left following the cyclist"&lt;/td&gt;
&lt;td&gt;landscapes, tracking&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Static&lt;/td&gt;
&lt;td&gt;"locked-off camera, no camera movement"&lt;/td&gt;
&lt;td&gt;dialogue, subtle motion&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Writing "locked-off camera" explicitly is underrated. Without it, many models add a drifting handheld feel you didn't ask for.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Describe motion with verbs and pace
&lt;/h2&gt;

&lt;p&gt;"The woman moves" gives the model nothing. "The woman turns her head toward the window, then smiles slightly" gives it a beat sheet. Useful pace words: &lt;em&gt;slowly, gradually, a sudden gust, in one smooth motion&lt;/em&gt;. Keep it to one or two actions; three is where faces and hands start to warp.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Keep secondary motion small
&lt;/h2&gt;

&lt;p&gt;Ambient motion makes a clip feel alive: hair in a light breeze, steam rising from a cup, leaves drifting. Ask for it in small amounts ("subtle", "light") so it doesn't compete with the main action.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. A template you can copy
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[camera move], [main subject action with pace], [secondary ambient motion], [lighting change if any], [style/mood constraint]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example for that bicycle frame:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Slow push-in, a cyclist walks into frame from the right and grabs the handlebars,
a few leaves drift across the pavement, streetlights flicker on, calm cinematic mood
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  6. Compare models with the same frame
&lt;/h2&gt;

&lt;p&gt;Different video models interpret the same prompt differently: some favor smooth camera work, others are better at faces or physics. When a shot matters, I run the same start frame and prompt through two models and keep the better one. Hailuo3, an independent studio (not affiliated with MiniMax), puts several of these side by side, for example Hailuo 02 and Hailuo 2.3, on its &lt;a href="https://hailuo3.co/image-to-video" rel="noopener noreferrer"&gt;image-to-video page&lt;/a&gt;. It also shows the credit cost before you submit, which helps when you're testing variations.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Debugging checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Subject morphs into something else&lt;/strong&gt; → shorten the prompt, remove adjectives that redescribe the frame.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Camera drifts&lt;/strong&gt; → add "locked-off camera" or name exactly one move.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Motion too fast&lt;/strong&gt; → add "slowly" and reduce the number of actions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flicker in textures&lt;/strong&gt; → simplify the start frame (less fine pattern detail) and ask for less secondary motion.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Start frames do the heavy lifting; the prompt is the direction. Keep the two jobs separate and your clips get much more predictable.&lt;/p&gt;

</description>
      <category>aivideotutorialbeginners</category>
    </item>
    <item>
      <title>How to Make an Instagram Grid Puzzle from One Photo (Without Photoshop)</title>
      <dc:creator>leony</dc:creator>
      <pubDate>Thu, 08 Oct 2026 02:35:54 +0000</pubDate>
      <link>https://dev.to/leony/how-to-make-an-instagram-grid-puzzle-from-one-photo-without-photoshop-1e0g</link>
      <guid>https://dev.to/leony/how-to-make-an-instagram-grid-puzzle-from-one-photo-without-photoshop-1e0g</guid>
      <description>&lt;p&gt;I'm leony, an indie maker. I built &lt;a href="https://imagesplit.net/" rel="noopener noreferrer"&gt;ImageSplit&lt;/a&gt; because I kept needing the same small job: take one photo and turn it into a clean set of equal tiles for an Instagram profile puzzle, a carousel, or a multi-page print — without sending the source file to a random upload server.&lt;/p&gt;

&lt;p&gt;This is a practical walkthrough of that workflow. It is &lt;strong&gt;not&lt;/strong&gt; AI segmentation or background removal. ImageSplit only does geometric grid splits in the browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why profile puzzles break so often
&lt;/h2&gt;

&lt;p&gt;An Instagram profile is a three-column grid. The newest post always lands in the &lt;strong&gt;top-left&lt;/strong&gt; thumbnail. Older posts shift right, then down.&lt;/p&gt;

&lt;p&gt;That means a 3×3 puzzle is not “upload left-to-right like you read a book.” If you post the top-left tile first, that piece ends up in the wrong slot by the time you finish. Most scrambled mosaics are just reverse-order mistakes, not bad crops.&lt;/p&gt;

&lt;p&gt;A second trap: a normal “split in 9” export often numbers tiles in &lt;strong&gt;reading order&lt;/strong&gt; (top-left = 1). A profile puzzle needs a &lt;strong&gt;posting order&lt;/strong&gt; where file 1 is the first upload — usually the bottom-right tile — so the newest post ends where you expect. Mixing those two numbering systems is how people get mirrored or upside-down feeds.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Pick a source that can survive the cuts
&lt;/h2&gt;

&lt;p&gt;Start with a sharp photo. For a classic 3×3 profile puzzle, you want enough resolution that each tile stays clear after Instagram compresses it. Keep faces, logos, and headline text away from the seam lines. If a face sits on a cut, the puzzle looks broken even when the math is perfect.&lt;/p&gt;

&lt;p&gt;Crop for the profile layout first. ImageSplit’s &lt;a href="https://imagesplit.net/instagram-grid-maker/" rel="noopener noreferrer"&gt;Instagram Grid Maker&lt;/a&gt; is built for this: reframe the artwork on a profile-oriented crop, preview a mockup of the grid, and export tiles numbered for upload order (file 1 first = bottom-right). Processing stays in your browser — there is no image upload API.&lt;/p&gt;

&lt;p&gt;Quick templates there include 3×3, 2×3, 3×2, and 4×3. Output can be PNG, JPG, or WebP.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Split, preview, then download a numbered set
&lt;/h2&gt;

&lt;p&gt;Workflow in plain terms:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Drop in JPG, PNG, WebP, GIF, BMP, or AVIF (GIF uses the first frame).&lt;/li&gt;
&lt;li&gt;Choose a template or a custom grid (home splitter supports about 1×1 through 10×10).&lt;/li&gt;
&lt;li&gt;Check the numbered preview so seams do not slice through the subject.&lt;/li&gt;
&lt;li&gt;Download individual tiles or a numbered ZIP.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you only need a reading-order print stack or a simple equal cut — not an Instagram posting sequence — the home splitter’s “Split in 9” (and similar) pages are enough. For profile puzzles, prefer Grid Maker so the file numbers match how Instagram fills the feed.&lt;/p&gt;

&lt;p&gt;ImageSplit does not claim to auto-fix Instagram for you. You still post the tiles in the app, one after another, in the order the tool shows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Post in the recommended sequence
&lt;/h2&gt;

&lt;p&gt;Practical posting checklist:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Post the tiles in one session, without unrelated posts in between, or the mosaic will shift.&lt;/li&gt;
&lt;li&gt;Follow the in-tool order (for Grid Maker: post file 1 first).&lt;/li&gt;
&lt;li&gt;Refresh the profile when you finish and confirm the newest tile landed top-left.&lt;/li&gt;
&lt;li&gt;Plan the posts around the puzzle too — the next random photo can knock the whole block out of alignment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is also a short guide on the site: &lt;a href="https://imagesplit.net/how-to-post-split-image-on-instagram/" rel="noopener noreferrer"&gt;How to post a split image on Instagram&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Carousels vs profile grids
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;carousel&lt;/strong&gt; (swipeable multi-image post) is a different problem from a &lt;strong&gt;profile puzzle&lt;/strong&gt;. Carousel slides are usually forward order on a wide canvas. Profile tiles need reverse chronology awareness. ImageSplit has a dedicated &lt;a href="https://imagesplit.net/instagram-carousel-splitter/" rel="noopener noreferrer"&gt;Instagram Carousel Splitter&lt;/a&gt; for seamless 4:5 swipeable slides when that is what you want — do not reuse a profile ZIP for a carousel and expect the same order rules.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bonus: same tiles for print posters
&lt;/h2&gt;

&lt;p&gt;If the goal is paper instead of Instagram, use &lt;a href="https://imagesplit.net/split-image-to-pdf/" rel="noopener noreferrer"&gt;Split image to PDF&lt;/a&gt;. It builds one ordered PDF with paper size (A4 / US Letter), margins, overlap, trim lines, and numbered sheets so you can assemble a poster across multiple pages. Again, everything runs locally in the browser. No account, no watermark on the tool itself.&lt;/p&gt;

&lt;p&gt;That print flow is useful for classroom posters, booth backdrops, or any large image that will not fit on a single sheet.&lt;/p&gt;

&lt;h2&gt;
  
  
  What ImageSplit is (and is not)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is:&lt;/strong&gt; free, browser-based equal grid splitter; templates + custom grids; numbered preview; ZIP / individual PNG·JPG·WebP; Instagram-oriented Grid Maker and carousel tools; Split to PDF for print; local processing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is not:&lt;/strong&gt; Photoshop replacement, AI object cutout, layer export, or an official Instagram/Meta product.&lt;/p&gt;

&lt;p&gt;I kept the scope narrow on purpose. When one photo needs to become a tidy, numbered set of tiles — for a feed puzzle, a carousel, or a multi-page print — a small local tool beats a full editor.&lt;/p&gt;

&lt;p&gt;If you try it, start with Grid Maker for profile puzzles or Split to PDF for paper. Feedback on the numbering UX is always welcome.&lt;/p&gt;

&lt;p&gt;— leony&lt;/p&gt;

</description>
      <category>instagram</category>
      <category>design</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Getting Real Work Out of Two Kimi K2 Conversations: A Prompt Template for Code and Data Tasks</title>
      <dc:creator>leony</dc:creator>
      <pubDate>Thu, 08 Oct 2026 02:16:22 +0000</pubDate>
      <link>https://dev.to/leony/getting-real-work-out-of-two-kimi-k2-conversations-a-prompt-template-for-code-and-data-tasks-p90</link>
      <guid>https://dev.to/leony/getting-real-work-out-of-two-kimi-k2-conversations-a-prompt-template-for-code-and-data-tasks-p90</guid>
      <description>&lt;p&gt;I'm leony, an indie maker. I run &lt;a href="https://kimi-k2.net/" rel="noopener noreferrer"&gt;kimi-k2.net&lt;/a&gt;, a small independent web chat for Kimi models (it calls the Moonshot AI API under the hood, but it isn't affiliated with Moonshot AI). New accounts get &lt;strong&gt;two free conversations&lt;/strong&gt;. That limit forced me to think hard about one question: &lt;em&gt;how do you get a finished result out of an LLM in as few turns as possible?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The answer turned out to be useful well beyond my own site, so here's the template I now use with any chat model — Kimi, or anything else.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why "few turns" matters
&lt;/h2&gt;

&lt;p&gt;Most wasted LLM sessions follow the same pattern: a vague first message, a generic answer, then five rounds of "no, I meant…". Each round costs time (and on paid tools, credits). If you front-load the decisions, the model can usually get it right in one or two passes.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four-block prompt
&lt;/h2&gt;

&lt;p&gt;I structure every serious request into four blocks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Objective&lt;/strong&gt; – one sentence: what you want and who it's for.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verified context&lt;/strong&gt; – the data, code, or notes the model should rely on. Paste it or attach it; don't make the model guess.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Constraints&lt;/strong&gt; – what &lt;em&gt;not&lt;/em&gt; to assume, what to avoid, which tools/versions to target.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output schema&lt;/strong&gt; – the exact shape of the answer: a markdown table, a single shell command, a file, a numbered plan.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Then add one line at the end: &lt;strong&gt;"Before answering, list your assumptions and any edge cases you're unsure about."&lt;/strong&gt; That single instruction catches most misunderstandings in the first reply instead of the fourth.&lt;/p&gt;

&lt;p&gt;(The &lt;a href="https://kimi-k2.net/models/kimi-k3" rel="noopener noreferrer"&gt;Kimi K3 guide on kimi-k2.net&lt;/a&gt; uses the same idea — Prompt → Context → Format → Verify — with copyable templates.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Example 1: a shell command you can actually run
&lt;/h2&gt;

&lt;p&gt;Vague:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;find big log files and zip them&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Four-block:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Objective: Generate one shell command for macOS/Linux (bash).
Context: Log files live anywhere under my home directory and end in .log.
Constraints: Only files larger than 10MB. Don't delete originals. Avoid GNU-only flags if possible.
Output: The command on one line, then a 3-bullet explanation of each part.
Before answering, list assumptions and edge cases (spaces in filenames, symlinks).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The second version almost always produces something like a &lt;code&gt;find ~ -name "*.log" -size +10M -exec gzip -k {} \;&lt;/code&gt; style answer &lt;strong&gt;plus&lt;/strong&gt; a note about filenames with spaces — which is exactly the edge case you'd otherwise discover the hard way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example 2: from a CSV to a chart page
&lt;/h2&gt;

&lt;p&gt;This is one of the example prompts on the &lt;a href="https://kimi-k2.net/" rel="noopener noreferrer"&gt;kimi-k2.net homepage&lt;/a&gt;, and it's a good stress test:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Objective: Analyze the attached CSV of housing prices and build a single-file web page that visualizes it.
Context: Columns are date, city, price_usd, sqft. (attached)
Constraints: Plain HTML + one CDN chart library. No build step. Handle missing values.
Output: 1) a 5-line summary of the distribution and trend, 2) the complete HTML file in one code block.
Before answering, list assumptions about the data.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two things make this work in one turn: telling the model the column names (so it doesn't hallucinate a schema), and asking for the summary &lt;em&gt;before&lt;/em&gt; the code (so you can sanity-check its reading of the data before trusting the chart).&lt;/p&gt;

&lt;h2&gt;
  
  
  Example 3: comparing two documents
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Compare the Q3 reports (attached) and summarize the key performance indicators in a markdown table.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Add an output schema — &lt;code&gt;| Metric | Company A | Company B | Change vs Q2 | Source page |&lt;/code&gt; — and the "source page" column forces the model to point at where each number came from. That makes verification fast, which matters because any LLM can misread a table.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use the second turn for review, not rework
&lt;/h2&gt;

&lt;p&gt;If you only have two turns (or just want to stay efficient), don't spend the second one re-explaining the task. Spend it on a review pass:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Review your previous answer. Check each number/command against the context I gave.
List anything you're not certain about, then output the corrected final version only.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This turns turn #2 into a self-check instead of a do-over.&lt;/p&gt;

&lt;h2&gt;
  
  
  A few habits that save the most time
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Paste the error, not a description of the error.&lt;/strong&gt; Stack traces beat "it doesn't work".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pin versions.&lt;/strong&gt; "Python 3.11, pandas 2.x" removes a whole class of wrong answers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask for one artifact per message.&lt;/strong&gt; One script, one table, one plan — combine later.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verify anything important.&lt;/strong&gt; Models can be confidently wrong about facts, numbers, and APIs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;If you want to test the template on Kimi without setting up an API key, the &lt;a href="https://kimi-k2.net/kimi-chat" rel="noopener noreferrer"&gt;Kimi Chat workspace&lt;/a&gt; gives you two free conversations after a Google sign-in; extra usage is one-time credit packs that don't expire (&lt;a href="https://kimi-k2.net/pricing" rel="noopener noreferrer"&gt;pricing&lt;/a&gt;). If you'd rather call the API directly, the site also has an independent &lt;a href="https://kimi-k2.net/posts/kimi-k2-developer-guide" rel="noopener noreferrer"&gt;Kimi K2 developer guide&lt;/a&gt; — just double-check model names and prices against Moonshot AI's official docs, since those change.&lt;/p&gt;

&lt;p&gt;Either way, the four-block prompt works with any chat model. Front-load the decisions, ask for assumptions, and use your follow-up for review. Your future self (and your credit balance) will thank you.&lt;/p&gt;

&lt;p&gt;What's your go-to structure for one-shot prompts? I'd love to steal a few ideas in the comments.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>productivity</category>
      <category>promptengineering</category>
    </item>
    <item>
      <title>Free AI Image &amp; Video Prompt Libraries: Learn Faster from Real Outputs (Nano Banana + Seedance)</title>
      <dc:creator>leony</dc:creator>
      <pubDate>Wed, 07 Oct 2026 18:03:05 +0000</pubDate>
      <link>https://dev.to/leony/free-ai-image-video-prompt-libraries-learn-faster-from-real-outputs-nano-banana-seedance-1fe3</link>
      <guid>https://dev.to/leony/free-ai-image-video-prompt-libraries-learn-faster-from-real-outputs-nano-banana-seedance-1fe3</guid>
      <description>&lt;p&gt;Writing prompts from scratch is the slowest part of working with AI image and video models. The fastest shortcut I have found is to start from a &lt;strong&gt;prompt library that shows the actual output&lt;/strong&gt; next to each prompt, copy the one closest to what you want, and edit from there.&lt;/p&gt;

&lt;p&gt;Here is what to look for in a free prompt library, plus the two I use most for Gemini Nano Banana (images) and Seedance (video).&lt;/p&gt;

&lt;h2&gt;
  
  
  What makes a prompt library actually useful
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Real previews.&lt;/strong&gt; A prompt without its result is just a guess. You want to see the image or clip it produced.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Copy-ready wording.&lt;/strong&gt; Full prompts, not keyword soup, so you can see how style, lighting and constraints are phrased.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Filters that match how you work.&lt;/strong&gt; Aspect ratio (16:9 vs 9:16) for video, and categories like portraits, product shots or restorations for images.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Free to browse.&lt;/strong&gt; You should be able to study and copy prompts without paying first.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Nano Banana (Gemini image) prompts
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://soutine.ai/banana-prompts" rel="noopener noreferrer"&gt;Soutine Nano Banana prompt library&lt;/a&gt; has 1,400+ free image prompts covering photoreal portraits, product staging, anime, interiors, photo restoration and surreal concepts. Each card shows the result, and you can copy the prompt or open it straight in a generator.&lt;/p&gt;

&lt;p&gt;Patterns that show up again and again in the prompts that work well:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Say what must stay the same&lt;/strong&gt; when editing a photo ("keep the face, pose and background unchanged").&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Name the light&lt;/strong&gt; ("soft window light from the left", "golden hour rim light").&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Give the camera a job&lt;/strong&gt; ("85mm portrait, shallow depth of field").&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Seedance (AI video) prompts
&lt;/h2&gt;

&lt;p&gt;For video, the &lt;a href="https://soutine.ai/seedance-prompts" rel="noopener noreferrer"&gt;Seedance prompt library&lt;/a&gt; pairs about 66 prompts with the clips they generated. You can hover to play, filter by 16:9 or 9:16, and copy the exact shot description.&lt;/p&gt;

&lt;p&gt;Three habits from those prompts that noticeably improve clips:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Name the camera move&lt;/strong&gt; ("slow dolly-in", "orbit around the subject").&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Put one beat in the middle&lt;/strong&gt; of the clip, e.g. a turn, a reveal or a splash, so the motion has a purpose.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;End with hard constraints&lt;/strong&gt; like "no text" or "seamless loop".&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A simple workflow
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Browse a library and pick the closest result to your idea.&lt;/li&gt;
&lt;li&gt;Copy the prompt and change only the subject first.&lt;/li&gt;
&lt;li&gt;Adjust style and lighting words one at a time so you learn what each change does.&lt;/li&gt;
&lt;li&gt;Save the versions that work. Your own mini library compounds quickly.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;You don't need a paid course to get better AI images and videos. Studying prompts next to their real outputs teaches you faster than anything else. Both libraries above are free to browse and copy at &lt;a href="https://soutine.ai/" rel="noopener noreferrer"&gt;Soutine AI&lt;/a&gt;. Generating new images or clips there uses credits, but the prompts themselves work as a reference for any model.&lt;/p&gt;

&lt;p&gt;What prompt patterns have worked best for you? Share them in the comments.&lt;/p&gt;

</description>
      <category>resources</category>
      <category>ai</category>
      <category>promptengineering</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to Edit Text in an Image Without Photoshop (Quick Workflow)</title>
      <dc:creator>leony</dc:creator>
      <pubDate>Wed, 07 Oct 2026 17:21:58 +0000</pubDate>
      <link>https://dev.to/leony/how-to-edit-text-in-an-image-without-photoshop-quick-workflow-1dgi</link>
      <guid>https://dev.to/leony/how-to-edit-text-in-an-image-without-photoshop-quick-workflow-1dgi</guid>
      <description>&lt;p&gt;Ever exported a poster, slide, or app screenshot and &lt;em&gt;then&lt;/em&gt; spotted a typo? Re-opening the original design file (if you even still have it) just to change three words is painful.&lt;/p&gt;

&lt;p&gt;Here's the lightweight workflow I've been using to &lt;strong&gt;edit text directly inside a finished image&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Flattened images (PNG/JPEG/WebP) don't have editable text layers. Classic options are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clone-stamp the old text and retype it in an image editor, then hunt for a matching font&lt;/li&gt;
&lt;li&gt;Ask the designer to re-export&lt;/li&gt;
&lt;li&gt;Live with the typo&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A faster option: AI text replacement
&lt;/h2&gt;

&lt;p&gt;Tools like &lt;a href="https://edittextinimage.com/" rel="noopener noreferrer"&gt;EditTextInImage&lt;/a&gt; let you:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Upload or paste the image (PNG / JPEG / WebP, up to 10 MB)&lt;/li&gt;
&lt;li&gt;Type the &lt;strong&gt;original text&lt;/strong&gt; exactly as it appears&lt;/li&gt;
&lt;li&gt;Type the &lt;strong&gt;replacement text&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Generate — the tool locates matching text automatically (you can draw an area if needed)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It tries to keep the surrounding font, color, size, perspective, and background, so the result looks like it was designed that way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Good use cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Fixing a heading or typo in an exported slide&lt;/li&gt;
&lt;li&gt;Updating a date or venue on an event flyer&lt;/li&gt;
&lt;li&gt;Localizing UI screenshots for docs&lt;/li&gt;
&lt;li&gt;A/B testing ad headlines without a full redesign&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tips for clean results
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Edit &lt;strong&gt;one text area at a time&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Use the Compare view to check the edges before downloading&lt;/li&gt;
&lt;li&gt;Keep replacement length similar to the original for the most natural fit&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's it — a small tool, but it has saved me plenty of "can you re-export this?" messages. Try it at &lt;a href="https://edittextinimage.com/" rel="noopener noreferrer"&gt;https://edittextinimage.com/&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>design</category>
      <category>ai</category>
      <category>productivity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Upscaling Low-Res Video to 4K in the Browser with FlashVSR</title>
      <dc:creator>leony</dc:creator>
      <pubDate>Wed, 07 Oct 2026 16:40:36 +0000</pubDate>
      <link>https://dev.to/leony/upscaling-low-res-video-to-4k-in-the-browser-with-flashvsr-chp</link>
      <guid>https://dev.to/leony/upscaling-low-res-video-to-4k-in-the-browser-with-flashvsr-chp</guid>
      <description>&lt;p&gt;If you've ever had a great clip ruined by low resolution or heavy compression, AI video super-resolution is worth a look.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flashvsr.com/" rel="noopener noreferrer"&gt;FlashVSR&lt;/a&gt; is an online AI video upscaler built on OpenImagingLab's FlashVSR research (streaming / single-step diffusion video super-resolution).&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Upload an MP4&lt;/li&gt;
&lt;li&gt;Pick a target resolution: 720p, 1080p, 2K or 4K&lt;/li&gt;
&lt;li&gt;Download the enhanced MP4&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Processing runs in the cloud, so there's no local GPU setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it focuses on
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Detail reconstruction&lt;/strong&gt; – rebuilds natural texture&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Artifact reduction&lt;/strong&gt; – cleans up compression junk&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Temporal consistency&lt;/strong&gt; – stable motion across frames&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's handy for AI-generated clips, archival footage and social exports that need a cleaner finish. New accounts get limited free trial credits (watermarked / lower-res / non-commercial); paid plans add higher resolution, private generation and commercial use.&lt;/p&gt;

&lt;p&gt;Try it: &lt;a href="https://flashvsr.com/" rel="noopener noreferrer"&gt;https://flashvsr.com/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>machinelearning</category>
    </item>
    <item>
      <title>I built a Nano Banana 2.1 workspace for generate + reference edit</title>
      <dc:creator>leony</dc:creator>
      <pubDate>Wed, 07 Oct 2026 07:24:41 +0000</pubDate>
      <link>https://dev.to/leony/i-built-a-nano-banana-21-workspace-for-generate-reference-edit-5a3i</link>
      <guid>https://dev.to/leony/i-built-a-nano-banana-21-workspace-for-generate-reference-edit-5a3i</guid>
      <description>&lt;p&gt;I’m leony, an indie maker. I wanted one browser tab where I could draft with a text prompt, then switch to a model that accepts references for outfit changes, product scenes, or exact lettering — without bouncing between tools.&lt;/p&gt;

&lt;p&gt;So I shipped &lt;strong&gt;&lt;a href="https://nanobanana21.co/" rel="noopener noreferrer"&gt;Nano Banana 21&lt;/a&gt;&lt;/strong&gt;: a workspace around Nano Banana 2.1 models.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's in the workspace
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Nano Banana 2 Lite&lt;/strong&gt; — text-to-image for drafts and everyday visuals&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nano Banana Pro&lt;/strong&gt; — reference-led edits with 1K / 2K / 4K options&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Qwen Image 2.1&lt;/strong&gt; — multi-reference compositions, lettering, transparent PNG&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPT Image 2.5&lt;/strong&gt; — design assets, product scenes, selectable output settings&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Credits are quoted before each task. Paid plans and credit packs include commercial use under the terms — confirm rights to your own inputs.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I usually run a task
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Start with a short scene brief (subject + setting + lighting), not a keyword soup&lt;/li&gt;
&lt;li&gt;Generate a Lite draft&lt;/li&gt;
&lt;li&gt;If I need a change, upload the result (or a photo) into a reference model and spell out what to preserve vs change&lt;/li&gt;
&lt;li&gt;Check faces, labels, and quoted text before downloading&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;Live site: &lt;a href="https://nanobanana21.co/" rel="noopener noreferrer"&gt;https://nanobanana21.co/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feedback welcome — especially around reference workflows and credit clarity.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>showdev</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I Built a Brush-Based AI Photo Eraser (People, Objects, Text, Watermarks)</title>
      <dc:creator>leony</dc:creator>
      <pubDate>Wed, 07 Oct 2026 04:24:08 +0000</pubDate>
      <link>https://dev.to/leony/i-built-a-brush-based-ai-photo-eraser-people-objects-text-watermarks-24bg</link>
      <guid>https://dev.to/leony/i-built-a-brush-based-ai-photo-eraser-people-objects-text-watermarks-24bg</guid>
      <description>&lt;p&gt;I’m leony, an indie maker. I kept wanting a small, focused flow for cleaning a photo: paint over the distraction, let AI rebuild that patch from the surrounding scene, download, done. Full design suites are overkill for that, and generic “generate a new image” tools don’t preserve the rest of the frame the way a local erase-and-fill does.&lt;/p&gt;

&lt;p&gt;So I built &lt;a href="https://removegenie.com/" rel="noopener noreferrer"&gt;RemoveGenie&lt;/a&gt; — a brush-based AI photo eraser for people, objects, text, watermarks, and stickers.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the brush + fill works
&lt;/h2&gt;

&lt;p&gt;The product loop is intentionally short:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Upload a JPG, PNG, or WebP (up to 20 MB).&lt;/li&gt;
&lt;li&gt;Paint a red mask over what you want gone. Undo, Clear, and a brush-size slider are there when the first pass is messy.&lt;/li&gt;
&lt;li&gt;Sign in with Google and submit when the cost/credits look right.&lt;/li&gt;
&lt;li&gt;The model reconstructs the masked region from context around it. Covered pixels are &lt;strong&gt;generated&lt;/strong&gt;, not recovered from under the object.&lt;/li&gt;
&lt;li&gt;Download a PNG. Large inputs are resized so the longest edge is at most 1536 px — check dimensions before anything print-related.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That “generated, not recovered” line matters. If a tourist’s head covered a storefront sign, you get a plausible wall or window, not the real letters that were behind them.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I use it for
&lt;/h2&gt;

&lt;p&gt;Same editor, six focused tool pages so the intent is obvious:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;People&lt;/strong&gt; — strangers in a coastal portrait, photobombers on a trip shot (&lt;a href="https://removegenie.com/remove-people-from-photo" rel="noopener noreferrer"&gt;remove people from photo&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Objects&lt;/strong&gt; — a cyclist at the edge of a street frame, clutter on a desk (&lt;a href="https://removegenie.com/remove-object-from-photo" rel="noopener noreferrer"&gt;AI object remover&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Text&lt;/strong&gt; — burned-in captions, date stamps, a few short words on an image.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watermarks&lt;/strong&gt; — only on images you have the right to edit. Removing a mark does not transfer copyright.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stickers / emojis&lt;/strong&gt; — overlays on screenshots or shared photos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Magic eraser&lt;/strong&gt; — the same brush/fill loop when you just want “erase this blob.”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Include shadows and reflections in the mask when you can; the model does not reliably invent unmarked ones.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest limits (so you don’t burn credits)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Login to submit.&lt;/strong&gt; You can prepare the mask first, but Google sign-in is required to run a removal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;16 credits per removal.&lt;/strong&gt; New accounts get 16 credits (enough for one try), valid 30 days. Confirmed failed tasks are refunded automatically per the site FAQ.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PNG out, resized.&lt;/strong&gt; Expect a PNG download and the 1536 px long-edge cap — not print-archive fidelity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Area size.&lt;/strong&gt; It works best when the erase region is under roughly a third of the frame. Huge masks leave the model with too little context and tend to fail or look muddy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not OCR, not recovery.&lt;/strong&gt; Text removal does not extract wording for you, and stickers/blurs over faces or copy cannot reveal the real hidden detail — only a plausible fill.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Checkout.&lt;/strong&gt; One-time credit packs are listed on the pricing page; as of early October 2026 buy buttons could show checkout unavailable. Don’t plan a paid run until checkout is live for your account.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;Product home: &lt;a href="https://removegenie.com/" rel="noopener noreferrer"&gt;https://removegenie.com/&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Owned repo: &lt;a href="https://github.com/wayperlee/removegenie" rel="noopener noreferrer"&gt;https://github.com/wayperlee/removegenie&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you clean travel portraits or marketing stills often, I’d love feedback on edge cases — crowded overlaps, tiny wires on busy backgrounds, and dense UI screenshots are the hardest for me right now.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>photography</category>
      <category>imageprocessing</category>
      <category>showdev</category>
    </item>
    <item>
      <title>GeminiTTS: Gemini 3.8 TTS Online for Single-Voice and Two-Speaker Dialogue</title>
      <dc:creator>leony</dc:creator>
      <pubDate>Wed, 07 Oct 2026 02:52:04 +0000</pubDate>
      <link>https://dev.to/leony/geminitts-gemini-38-tts-online-for-single-voice-and-two-speaker-dialogue-3a9a</link>
      <guid>https://dev.to/leony/geminitts-gemini-38-tts-online-for-single-voice-and-two-speaker-dialogue-3a9a</guid>
      <description>&lt;p&gt;If you have ever needed a quick voiceover for a demo video, a podcast intro, or a language-learning clip, you know the usual options: record it yourself, hire a voice actor, or wrestle with a robotic-sounding TTS engine. I wanted something faster and more expressive, so I have been using &lt;a href="https://geminitts.app/" rel="noopener noreferrer"&gt;GeminiTTS&lt;/a&gt;, an online text-to-speech studio powered by Gemini 3.8 TTS.&lt;/p&gt;

&lt;h2&gt;
  
  
  What GeminiTTS does
&lt;/h2&gt;

&lt;p&gt;GeminiTTS is a browser-based tool: paste your script, choose a voice, and generate audio you can play back or download as WAV. There is nothing to install and no API key to manage.&lt;/p&gt;

&lt;p&gt;Key features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Two models&lt;/strong&gt; – Gemini 3.8 Flash for expressive, natural delivery, and Flash Lite for faster drafts when you are iterating on a script.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;30 preset voices&lt;/strong&gt; – a wide range of tones, from calm narration to energetic promo reads.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Single voice or two-speaker dialogue&lt;/strong&gt; – write a conversation between two speakers and get one audio file back. Great for podcast-style explainers, interview mockups, or language lessons.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delivery controls&lt;/strong&gt; – adjust accent, style, and pace, and add short vocal cues to shape how lines are read.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Library + WAV download&lt;/strong&gt; – every generation is saved to your library so you can replay or download it later.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why two-speaker dialogue matters
&lt;/h2&gt;

&lt;p&gt;Most TTS tools give you one voice at a time. If you want a dialogue, you end up generating separate clips and stitching them in an audio editor. With Gemini 3.8 TTS in GeminiTTS, you write the dialogue once, assign speakers, and the model handles turn-taking and pacing. For quick prototypes of podcasts, explainer videos, or app onboarding flows, that saves a surprising amount of time.&lt;/p&gt;

&lt;h2&gt;
  
  
  A simple workflow
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open &lt;a href="https://geminitts.app/" rel="noopener noreferrer"&gt;geminitts.app&lt;/a&gt; and sign in.&lt;/li&gt;
&lt;li&gt;Pick &lt;strong&gt;Flash Lite&lt;/strong&gt; while drafting your script so iterations are quick.&lt;/li&gt;
&lt;li&gt;Choose a voice (or two, for dialogue) and tweak accent, style, and pace.&lt;/li&gt;
&lt;li&gt;Add short vocal cues where you want emphasis or a change of tone.&lt;/li&gt;
&lt;li&gt;Switch to &lt;strong&gt;Flash&lt;/strong&gt; for the final take, then download the WAV.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Use cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Voiceovers for product demos and side-project launch videos&lt;/li&gt;
&lt;li&gt;Podcast intros, outros, and two-host explainer segments&lt;/li&gt;
&lt;li&gt;Language-learning dialogues&lt;/li&gt;
&lt;li&gt;Accessibility: turning blog posts into audio&lt;/li&gt;
&lt;li&gt;Placeholder audio for games and prototypes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Pricing
&lt;/h2&gt;

&lt;p&gt;GeminiTTS is freemium: new accounts receive &lt;strong&gt;20 free starter credits&lt;/strong&gt;, which is enough to try both models and test the dialogue mode before deciding whether you need more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Note
&lt;/h2&gt;

&lt;p&gt;GeminiTTS is an independent app built on top of Gemini 3.8 TTS — it is not a Google product.&lt;/p&gt;

&lt;p&gt;If you are building side projects and need natural-sounding text to speech online without setting up an API pipeline, give &lt;a href="https://geminitts.app/" rel="noopener noreferrer"&gt;GeminiTTS&lt;/a&gt; a try and let me know what you make with it in the comments.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>tts</category>
      <category>speech</category>
      <category>sideprojects</category>
    </item>
    <item>
      <title>Zombie Trend Prompts + Photo Checklist (two photos 15s hug video)</title>
      <dc:creator>leony</dc:creator>
      <pubDate>Tue, 06 Oct 2026 05:05:00 +0000</pubDate>
      <link>https://dev.to/leony/zombie-trend-prompts-photo-checklist-two-photos-15s-hug-video-2k34</link>
      <guid>https://dev.to/leony/zombie-trend-prompts-photo-checklist-two-photos-15s-hug-video-2k34</guid>
      <description>&lt;p&gt;I’m leony, an indie maker. Over the last few weeks I kept seeing the same “zombie hug” / zombie trend clips on social feeds — two people (or a person and a pet) meeting in a short cinematic beat. A lot of DIY attempts look soft, glitchy, or oddly cropped. Most of the time it wasn’t the model; it was the prompt and the source photos.&lt;/p&gt;

&lt;p&gt;I built &lt;a href="https://zombietrend.com/" rel="noopener noreferrer"&gt;ZombieTrend&lt;/a&gt; as a narrow tool for that niche: upload two photos, pick portrait or landscape, choose standard or HD, and get a personalized ~15-second zombie trend video emailed after processing. Credits are one-time packs (no subscription). This post is the practical guide I wish I’d had when iterating — prompts first, then photos.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a usable zombie-trend prompt needs
&lt;/h2&gt;

&lt;p&gt;A vague line like “make us into zombies hugging” leaves too many decisions open. The prompts that held up better for me usually named:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Roles and relationship:&lt;/strong&gt; couple, friends, or pet-and-me — who is who in the frame.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Beat / story beat:&lt;/strong&gt; approach → recognition → hug (or a four-beat mini-arc if the tool supports it).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mood and look:&lt;/strong&gt; soft dusk light, cinematic grade, gentle motion — not “horror movie gore” unless that’s the brief.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Constraints:&lt;/strong&gt; no extra limbs, keep faces readable, avoid random text overlays.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I collected the patterns we reuse into a longer write-up: &lt;a href="https://zombietrend.com/blog/zombie-trend-prompts" rel="noopener noreferrer"&gt;Zombie Trend Prompts Guide&lt;/a&gt;. If you’re writing DIY prompts for another generator, treat that page as a checklist rather than a magic spell — change one variable at a time (subject, lighting, or motion) so you know what improved the clip.&lt;/p&gt;

&lt;h2&gt;
  
  
  Photo checklist before you spend credits
&lt;/h2&gt;

&lt;p&gt;Bad inputs waste more time than bad prompts. Before uploading:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Faces clear and forward-ish&lt;/strong&gt; — sunglasses, heavy occlusion, or tiny faces in a crowd usually collapse identity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Even light&lt;/strong&gt; — harsh backlight or neon blobs confuse skin/fur and silhouette.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Similar framing&lt;/strong&gt; — two waist-up portraits of similar scale beat one selfie and one distant group shot.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pets&lt;/strong&gt; — eyes and face visible; avoid motion blur. We support pet &amp;amp; me stories; details live on &lt;a href="https://zombietrend.com/zombie-trend-with-pets" rel="noopener noreferrer"&gt;Zombie Trend with Pets&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Format&lt;/strong&gt; — know whether you need 9:16 (Stories/Reels) or 16:9 before you lock the shoot.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The fuller checklist (including “what not to upload”) is here: &lt;a href="https://zombietrend.com/blog/zombie-trend-photo-guide" rel="noopener noreferrer"&gt;Zombie Trend Photo Guide&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Couples and occasion framing
&lt;/h2&gt;

&lt;p&gt;If the clip is for an anniversary, long-distance check-in, or a silly friendship bit, the prompt and caption matter as much as the grade. I sketched a few occasion-ready angles in &lt;a href="https://zombietrend.com/blog/zombie-trend-couple-ideas" rel="noopener noreferrer"&gt;Zombie Trend Couple Ideas&lt;/a&gt; — useful even if you never touch our product and just want cleaner social copy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest limits
&lt;/h2&gt;

&lt;p&gt;ZombieTrend is not instant online generation today; after a successful credit submission the finished video is emailed within about 12 hours. Don’t use photos you don’t have rights to, and don’t upload children’s images. Likeness won’t be pixel-perfect every time — treat it as a fun trend clip, not an ID photo.&lt;/p&gt;

&lt;p&gt;If you’re iterating on your own stack, start with the &lt;a href="https://zombietrend.com/blog/zombie-trend-prompts" rel="noopener noreferrer"&gt;prompt guide&lt;/a&gt; and &lt;a href="https://zombietrend.com/blog/zombie-trend-photo-guide" rel="noopener noreferrer"&gt;photo checklist&lt;/a&gt;, then try a clean two-portrait test on &lt;a href="https://zombietrend.com/" rel="noopener noreferrer"&gt;zombietrend.com&lt;/a&gt;. I’d love to hear which prompt constraints actually moved the needle for you.&lt;/p&gt;

&lt;p&gt;Pricing (one-time credit packs, no subscription): &lt;a href="https://zombietrend.com/pricing" rel="noopener noreferrer"&gt;zombietrend.com/pricing&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>video</category>
      <category>prompts</category>
      <category>sideprojects</category>
    </item>
    <item>
      <title>Kling 4 Is Announced. What You Can Actually Run Today</title>
      <dc:creator>leony</dc:creator>
      <pubDate>Sat, 03 Oct 2026 12:30:16 +0000</pubDate>
      <link>https://dev.to/leony/kling-4-is-announced-what-you-can-actually-run-today-3efg</link>
      <guid>https://dev.to/leony/kling-4-is-announced-what-you-can-actually-run-today-3efg</guid>
      <description>&lt;p&gt;I’m leony, an indie maker, and I’ve been tracking Kling’s video models because the version numbers move faster than the products that actually let you generate with them.&lt;/p&gt;

&lt;p&gt;Kling 4.0 has been announced, and there is also a 4.0 Flash early-access path on the official side. That does not mean every third-party page that says “Kling 4” can generate Kling 4 clips today. I put the distinction on one page so I would stop mixing the two up: the &lt;a href="https://soutine.ai/models/kling-4" rel="noopener noreferrer"&gt;Soutine Kling 4 model page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the page is, and is not
&lt;/h2&gt;

&lt;p&gt;The page is a coming-soon landing for Kling 4.0 on Soutine. It says Kling 4.0 generation is not available yet, and Soutine has not published an access date.&lt;/p&gt;

&lt;p&gt;The generator on that same page currently runs &lt;strong&gt;Kling 3.0&lt;/strong&gt;. Today that means text-to-video, start and end frames, optional original audio, clips of about 3 to 15 seconds, and 720p, 1080p, or 4K. You spend credits to generate, and you can see an estimate before you submit.&lt;/p&gt;

&lt;p&gt;The comparison on the page treats announced Kling 4.0 as longer clips (claimed up to about 30 seconds), more keyframes, and multimodal references. 4.0 Flash is described as official early access, with a shorter claimed max (about 20 seconds) at 720p. Those are announced specs, not something I can generate inside Soutine right now.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I separated them
&lt;/h2&gt;

&lt;p&gt;A title that only says “Kling 4” is easy to misread as “click generate and you get 4.0.” I would rather the page say what is announced, what is early access, and what the form will actually run if you press generate today.&lt;/p&gt;

&lt;p&gt;If you are comparing official Kling with a hosted 3.0 workflow, start at the &lt;a href="https://soutine.ai/models/kling-4" rel="noopener noreferrer"&gt;Kling 4 model page&lt;/a&gt; and read the generator note before you spend credits. A small reference repo with the same link is &lt;a href="https://github.com/wayperlee/soutine-kling-4" rel="noopener noreferrer"&gt;soutine-kling-4 on GitHub&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>promptengineering</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
