<?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: tao li</title>
    <description>The latest articles on DEV Community by tao li (@tao_li_a9489b720b5123f192).</description>
    <link>https://dev.to/tao_li_a9489b720b5123f192</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%2F3362163%2F0caec811-5059-42f4-b140-aa13ca617d0d.png</url>
      <title>DEV Community: tao li</title>
      <link>https://dev.to/tao_li_a9489b720b5123f192</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tao_li_a9489b720b5123f192"/>
    <language>en</language>
    <item>
      <title>Show DEV: Six Browser Tools, Six Different Product Constraints</title>
      <dc:creator>tao li</dc:creator>
      <pubDate>Wed, 15 Jul 2026 13:11:50 +0000</pubDate>
      <link>https://dev.to/tao_li_a9489b720b5123f192/show-dev-six-browser-tools-six-different-product-constraints-383f</link>
      <guid>https://dev.to/tao_li_a9489b720b5123f192/show-dev-six-browser-tools-six-different-product-constraints-383f</guid>
      <description>&lt;p&gt;I have been working on a small portfolio of browser tools. They look unrelated at first: a real-world Minecraft map generator, two music workflows, a map-poster studio, an invoice maker, and a logo-motion editor.&lt;/p&gt;

&lt;p&gt;The common thread is narrower than the categories suggest. Each product starts with a task that is easy to describe but surprisingly easy to overcomplicate. The most useful product decisions were usually not new features. They were constraints: deciding what the tool should ask, what it should hide, and what a successful export should look like.&lt;/p&gt;

&lt;p&gt;Here are six examples and the product lesson behind each one.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. A map generator should start with a boundary, not a settings panel
&lt;/h2&gt;

&lt;p&gt;Turning a real place into a Minecraft world sounds like a data problem. It is also a scope problem.&lt;/p&gt;

&lt;p&gt;A user may type the name of a city, but “the city” is rarely the useful unit. A school project may need a campus. A server owner may need several connected blocks. A creator may care about one landmark and the route leading to it.&lt;/p&gt;

&lt;p&gt;That pushed the workflow in &lt;a href="https://cartovoxel.com/" rel="noopener noreferrer"&gt;CartoVoxel&lt;/a&gt; toward an explicit boundary: search for a place, choose the area, then select Java or Bedrock output. Terrain, roads, building footprints, and land cover matter, but they only become meaningful after the user decides what belongs inside the world.&lt;/p&gt;

&lt;p&gt;The lesson was simple: when computation and output size grow with scope, make scope visible early. A boundary is not an advanced option. It is part of the product definition.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Music prompts improve when the interface asks for constraints
&lt;/h2&gt;

&lt;p&gt;“Make a cinematic song” is not a very useful instruction. It names a broad expectation without explaining the job the track needs to do.&lt;/p&gt;

&lt;p&gt;A more useful prompt separates a few variables:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is the track for?&lt;/li&gt;
&lt;li&gt;What should the energy curve feel like?&lt;/li&gt;
&lt;li&gt;Which instruments or textures should dominate?&lt;/li&gt;
&lt;li&gt;Should vocals lead, support, or disappear?&lt;/li&gt;
&lt;li&gt;What must the result avoid?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is the thinking behind the prompt workflow in &lt;a href="https://sunoaimusical.com/ai-music-generator" rel="noopener noreferrer"&gt;AI Musical&lt;/a&gt;. The product is not improved by adding more adjectives to a single text box. It improves when the user can turn an idea into a testable direction for songs, vocals, instrumentals, or lyrics.&lt;/p&gt;

&lt;p&gt;The broader lesson: “simple” input is not always low-friction input. Sometimes one blank box creates more work because it gives the user no structure for making the next attempt better.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. A second music workflow can be organized around use cases
&lt;/h2&gt;

&lt;p&gt;Music generation also changes when the starting question is not “Which genre?” but “What should happen while this track is playing?”&lt;/p&gt;

&lt;p&gt;Study music, podcast music, a birthday song, a rap draft, and a short social clip all impose different constraints. Duration, density, vocal presence, repetition, and interruption matter at least as much as genre.&lt;/p&gt;

&lt;p&gt;In &lt;a href="https://musikalis.com/ai-music-generator" rel="noopener noreferrer"&gt;Musikalis&lt;/a&gt;, the useful product idea is the workflow around the output: prompts and lyrics lead into songs, vocals, or instrumentals, while supporting tools such as lyrics and vocal-removal flows serve different stages of creation.&lt;/p&gt;

&lt;p&gt;This reinforced a product-design rule I keep returning to: categories help discovery, but use cases help decisions. A user may arrive through “AI music,” yet they still need the interface to help answer what the audio is for.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Map art needs less information than a navigation map
&lt;/h2&gt;

&lt;p&gt;A navigation map is successful when it explains enough to get somewhere. A map poster is successful when it makes one place feel recognizable.&lt;/p&gt;

&lt;p&gt;Those goals conflict. More labels may improve navigation while weakening a poster. A wider crop may add context while removing the visual pattern that made the place interesting.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://vellumline.app/map-poster-maker" rel="noopener noreferrer"&gt;Vellum &amp;amp; Line&lt;/a&gt; is built around that editing problem. The user starts from a real city, neighborhood, venue, coordinate, or route, then changes the crop, label density, colors, typography, layers, and composition before exporting a poster.&lt;/p&gt;

&lt;p&gt;The product lesson was that deletion is a feature. A focused design tool should make it easy to remove information that is technically correct but visually unnecessary.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Invoice software can be useful without becoming accounting software
&lt;/h2&gt;

&lt;p&gt;Invoice products tend to expand. Once a tool has clients, line items, tax, discounts, and payment terms, it is tempting to keep adding bookkeeping, banking, payroll, and payment processing.&lt;/p&gt;

&lt;p&gt;But many freelancers need a smaller job completed: create a clear document, preview it, and download a PDF.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cedarbill.com/tools/invoice-generator" rel="noopener noreferrer"&gt;CedarBill&lt;/a&gt; keeps that workflow in the browser. It supports invoices, receipts, quotes, and estimates, along with the practical fields that make a document reviewable. Separate calculators cover questions such as markup, salary conversion, estimated 1099 taxes, net terms, and sales tax without pretending to replace professional accounting advice.&lt;/p&gt;

&lt;p&gt;The lesson: a tool can be connected to a large business process without owning the entire process. Refusing adjacent complexity can be a legitimate product advantage.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Logo animation does not always need a full timeline
&lt;/h2&gt;

&lt;p&gt;Motion-design software is powerful because it can express almost anything. That power also creates setup cost for a narrow job such as a two-second logo reveal.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://logofuse.app/" rel="noopener noreferrer"&gt;LogoFuse&lt;/a&gt; focuses on that narrow job. A user uploads PNG, SVG, JPEG, or WebP artwork, chooses a shader-based Logo Motion workflow or a frame-based Flash workflow, adjusts colors, scale, position, motion, timing, and audio, then exports a vertical video from the browser.&lt;/p&gt;

&lt;p&gt;The constraint is intentional: it is a logo-motion tool, not a generative logo maker and not a replacement for a full desktop video editor.&lt;/p&gt;

&lt;p&gt;The product lesson is that a preset is valuable when it removes setup without removing meaningful control. The user should still be able to make the result feel like their brand, but they should not need to construct the entire animation system first.&lt;/p&gt;

&lt;h2&gt;
  
  
  What these tools have in common
&lt;/h2&gt;

&lt;p&gt;Across all six products, the strongest decisions followed the same pattern:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Name the single job clearly.&lt;/li&gt;
&lt;li&gt;Ask for the constraint that changes the cost or quality of the output.&lt;/li&gt;
&lt;li&gt;Hide configuration that does not help the next decision.&lt;/li&gt;
&lt;li&gt;Make the export or final artifact obvious.&lt;/li&gt;
&lt;li&gt;Stop before the product turns into a general-purpose suite.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Browser tools are often described as lighter versions of desktop software. I think that framing misses the interesting part. The browser is useful because it makes a focused workflow immediately available. The real design work is deciding which workflow deserves to stay focused.&lt;/p&gt;

&lt;p&gt;Which of these product constraints would you keep, and which one would you remove?&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>tooling</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Prompting AI Lofi: A Practical Workflow for Focus Music</title>
      <dc:creator>tao li</dc:creator>
      <pubDate>Wed, 29 Apr 2026 01:07:18 +0000</pubDate>
      <link>https://dev.to/tao_li_a9489b720b5123f192/prompting-ai-lofi-a-practical-workflow-for-focus-music-2kep</link>
      <guid>https://dev.to/tao_li_a9489b720b5123f192/prompting-ai-lofi-a-practical-workflow-for-focus-music-2kep</guid>
      <description>&lt;p&gt;Most people treat study music as a playlist problem. They open a lofi mix, skip a few tracks, and hope the mood is right.&lt;/p&gt;

&lt;p&gt;For developers, writers, students, and makers, that is not always enough. The right focus track needs to stay out of the way. It should give the room a steady pulse without pulling attention into lyrics, sudden drops, or busy melodies.&lt;/p&gt;

&lt;p&gt;That is where AI lofi can be useful. Not because it is automatically better than human-made lofi, but because it lets you control the brief.&lt;/p&gt;

&lt;h2&gt;
  
  
  The goal is not better music. The goal is lower friction.
&lt;/h2&gt;

&lt;p&gt;When I test focus music, I care about four things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It should not compete with language tasks.&lt;/li&gt;
&lt;li&gt;It should loop without obvious fatigue.&lt;/li&gt;
&lt;li&gt;It should match the work session length.&lt;/li&gt;
&lt;li&gt;It should be easy to adjust when the first version is close but not right.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A normal playlist is good for discovery. AI generation is better when you already know the job the track needs to do.&lt;/p&gt;

&lt;h2&gt;
  
  
  A simple prompt structure for AI lofi
&lt;/h2&gt;

&lt;p&gt;The prompts that work best for focus music are usually not long. They are specific in the right places.&lt;/p&gt;

&lt;p&gt;Use this shape:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a [mood] lofi track for [use case].
Keep the tempo around [BPM range].
Use [instruments / texture].
Avoid [things that break focus].
Make it feel [reference adjectives].
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a calm lofi hip hop track for deep coding sessions.
Keep the tempo around 70-78 BPM.
Use soft drums, warm vinyl texture, mellow keys, and a simple bassline.
Avoid vocals, sharp synths, big drops, and busy lead melodies.
Make it feel steady, late-night, and unobtrusive.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That prompt is plain, but it works because it tells the model what to avoid. For background music, negative constraints matter as much as the style label.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prompt variables that change the result
&lt;/h2&gt;

&lt;p&gt;Small wording changes can create very different tracks. These are the controls I adjust first.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Tempo
&lt;/h3&gt;

&lt;p&gt;For reading or writing, I usually keep it slower. For design work or repetitive tasks, a slightly faster beat can help.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;60-70 BPM: reading, writing, slow study
70-82 BPM: coding, planning, research
82-95 BPM: design, light production, repetitive tasks
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Density
&lt;/h3&gt;

&lt;p&gt;If the track feels distracting, do not just ask for "more chill." Be more direct.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use fewer melodic layers.
Keep the arrangement sparse.
Avoid lead instruments that take attention.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Texture
&lt;/h3&gt;

&lt;p&gt;Texture is what makes AI lofi feel less sterile. I usually test a few variants:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;warm vinyl crackle
soft tape hiss
rain outside a window
late-night room tone
muted drum machine
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use one or two. Too many textures can turn into noise.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Use case
&lt;/h3&gt;

&lt;p&gt;The phrase "for studying" is broad. A better prompt names the real job.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for reading technical docs
for editing a long essay
for building a landing page
for a 25-minute Pomodoro session
for a quiet Twitch stream background
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The model usually responds better when the use case is concrete.&lt;/p&gt;

&lt;h2&gt;
  
  
  Human lofi still wins on taste
&lt;/h2&gt;

&lt;p&gt;Human-made lofi has stronger taste, better arrangement choices, and more personality. If I want music I will actively listen to, I still reach for artists and curated mixes.&lt;/p&gt;

&lt;p&gt;AI lofi is different. I use it when I need a custom utility track:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a loop for a tutorial video&lt;/li&gt;
&lt;li&gt;a calm bed for a stream&lt;/li&gt;
&lt;li&gt;background music for a product demo&lt;/li&gt;
&lt;li&gt;a study track with no vocals&lt;/li&gt;
&lt;li&gt;several mood variants for testing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is a practical use case, not a replacement claim.&lt;/p&gt;

&lt;h2&gt;
  
  
  The iteration loop
&lt;/h2&gt;

&lt;p&gt;My workflow is simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Generate one focused version.&lt;/li&gt;
&lt;li&gt;Listen for 30-60 seconds while doing real work.&lt;/li&gt;
&lt;li&gt;Identify the one thing that breaks focus.&lt;/li&gt;
&lt;li&gt;Rewrite only that part of the prompt.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;The drums are too sharp. Make the kick softer and reduce the snare brightness.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;The melody is too active. Keep the chord progression, but remove the lead line.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That gives better results than starting over with a totally new prompt.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Musikalis fits
&lt;/h2&gt;

&lt;p&gt;I tested this workflow with the &lt;a href="https://musikalis.com/ai-music-generator/lofi" rel="noopener noreferrer"&gt;Musikalis AI lofi generator&lt;/a&gt;. The useful part is quick iteration: you can move from a rough mood idea to a more specific lofi brief without treating every track like a full songwriting project.&lt;/p&gt;

&lt;p&gt;For SEO and product content, I also like this format because it turns a broad keyword like "AI music generator" into a practical use case: focus music, study music, stream background, video background, or demo music.&lt;/p&gt;

&lt;h2&gt;
  
  
  My rule of thumb
&lt;/h2&gt;

&lt;p&gt;Use human lofi when you want taste and discovery.&lt;/p&gt;

&lt;p&gt;Use AI lofi when you need control, variants, and a track built for a specific job.&lt;/p&gt;

&lt;p&gt;That distinction makes the tool more useful and keeps the claim honest.&lt;/p&gt;

&lt;p&gt;I wrote the longer comparison here: &lt;a href="https://musikalis.com/blog/lofi-music-for-study-ai-vs-human" rel="noopener noreferrer"&gt;AI lofi vs human lofi for study music&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>music</category>
      <category>productivity</category>
      <category>tooling</category>
    </item>
  </channel>
</rss>
