<?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: Leon</title>
    <description>The latest articles on DEV Community by Leon (@laconicleon).</description>
    <link>https://dev.to/laconicleon</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%2F4059719%2F41d9b1c3-d318-4507-a4d7-64357dba5687.png</url>
      <title>DEV Community: Leon</title>
      <link>https://dev.to/laconicleon</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/laconicleon"/>
    <language>en</language>
    <item>
      <title>Building a Browser-Local Moving Checklist Without User Accounts</title>
      <dc:creator>Leon</dc:creator>
      <pubDate>Thu, 10 Sep 2026 03:27:47 +0000</pubDate>
      <link>https://dev.to/laconicleon/building-a-browser-local-moving-checklist-without-user-accounts-3fgk</link>
      <guid>https://dev.to/laconicleon/building-a-browser-local-moving-checklist-without-user-accounts-3fgk</guid>
      <description>&lt;p&gt;Many planning tools begin with sign-up, cloud storage, and collaboration features. For a moving checklist, I wanted to test a narrower idea: can a useful planning tool work without requiring an account?&lt;/p&gt;

&lt;p&gt;MovePlaybook is a browser-based moving checklist. A user starts with a move date, reviews a generated task plan, adjusts tasks when circumstances change, and can print or save the plan as a PDF.&lt;/p&gt;

&lt;p&gt;The technical constraint was privacy: the product should remain useful even when the plan is stored locally in the browser. That shaped several decisions.&lt;/p&gt;

&lt;p&gt;First, task identity needs to be stable. A user may complete, reschedule, hide, restore, or annotate a task, so those changes must attach to a durable task ID rather than a display position.&lt;/p&gt;

&lt;p&gt;Second, temporary hiding must not mean deletion. A hidden task is excluded from the active checklist and PDF, but it remains recoverable through a dedicated Hidden view.&lt;/p&gt;

&lt;p&gt;Third, schedule changes need explanations. When a user adjusts a date, the interface should distinguish between a recommended date, a tight timing window, a conflict, or something the user must confirm locally.&lt;/p&gt;

&lt;p&gt;The product is available at &lt;a href="https://moveplaybook.app/" rel="noopener noreferrer"&gt;https://moveplaybook.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I built it as a practical experiment in local-first planning. I would be interested in how other developers approach versioned browser storage, printable application state, and explainable scheduling rules.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>privacy</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How to convert a folder of PNGs to one PDF without uploading the files</title>
      <dc:creator>Leon</dc:creator>
      <pubDate>Sat, 05 Sep 2026 12:48:21 +0000</pubDate>
      <link>https://dev.to/laconicleon/how-to-convert-a-folder-of-pngs-to-one-pdf-without-uploading-the-files-19pe</link>
      <guid>https://dev.to/laconicleon/how-to-convert-a-folder-of-pngs-to-one-pdf-without-uploading-the-files-19pe</guid>
      <description>&lt;h2&gt;
  
  
  A simple browser-local PNG-to-PDF workflow
&lt;/h2&gt;

&lt;p&gt;For this kind of job, the useful workflow is straightforward:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select the PNG, JPG, or JPEG files.&lt;/li&gt;
&lt;li&gt;Put the pages in the order they should appear.&lt;/li&gt;
&lt;li&gt;Choose a page size and margins if the document needs them.&lt;/li&gt;
&lt;li&gt;Export one PDF.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The important detail is where the conversion happens. A browser-local PNG-to-PDF tool processes the images in the browser instead of uploading them to a conversion server. That makes it easier to keep control of source files while still producing one shareable PDF.&lt;/p&gt;

&lt;h2&gt;
  
  
  When this is useful
&lt;/h2&gt;

&lt;p&gt;This workflow is handy for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;combining screenshots into a bug report or handoff document;&lt;/li&gt;
&lt;li&gt;turning scanned pages into one file for email or printing;&lt;/li&gt;
&lt;li&gt;arranging portfolio images or design exports in a deliberate order; and&lt;/li&gt;
&lt;li&gt;collecting receipts or reference images without making a separate document first.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Before exporting, check the page order and decide whether each page should match the image, A4, or US Letter. A preview is useful here: it catches a stray portrait page, an oversized margin, or a screenshot in the wrong position before the PDF is created.&lt;/p&gt;

&lt;h2&gt;
  
  
  The tool I use for this
&lt;/h2&gt;

&lt;p&gt;I maintain &lt;a href="https://pngbinder.com/" rel="noopener noreferrer"&gt;PNG Binder&lt;/a&gt;, a free PNG-to-PDF converter for this specific workflow. It accepts up to 50 PNG, JPG, or JPEG images, lets you arrange them, and creates one PDF locally in the browser. It does not require an account, and the images are not sent to a conversion server.&lt;/p&gt;

&lt;p&gt;It creates an image-based PDF, so it does not perform OCR or rebuild text and tables. If that is the kind of result you need, try it and let me know whether page ordering, page settings, or browser compatibility could be improved.&lt;/p&gt;




&lt;p&gt;Disclosure: I am the maker and operator of PNG Binder.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>privacy</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>A small privacy decision that changed my web calculator</title>
      <dc:creator>Leon</dc:creator>
      <pubDate>Thu, 03 Sep 2026 10:00:20 +0000</pubDate>
      <link>https://dev.to/laconicleon/a-small-privacy-decision-that-changed-my-web-calculator-5c99</link>
      <guid>https://dev.to/laconicleon/a-small-privacy-decision-that-changed-my-web-calculator-5c99</guid>
      <description>&lt;p&gt;I built Calculator Toolkit for a narrow moment: someone has a restaurant bill, wants to check the tip and tax math, then needs to split the total with a few people.&lt;/p&gt;

&lt;p&gt;At first I treated the no-account requirement as a small feature. It turned out to be the decision that shaped most of the interface.&lt;/p&gt;

&lt;p&gt;A saved-history feature would be convenient. It would also mean sign-in, account recovery, data retention, and an extra decision for someone who only wants to settle a dinner bill. I decided that the calculator should run locally in the browser instead. There is no account and no bill-data upload.&lt;/p&gt;

&lt;p&gt;That creates constraints. A person cannot return tomorrow and recover an earlier calculation. There is no dashboard where an unclear result can be explained later. The current screen has to do the work. It needs to make the bill amount, tax, tip basis, total, and each person's share understandable before the group pays.&lt;/p&gt;

&lt;p&gt;I found that this was less about adding a privacy notice and more about removing places where the product could hide complexity. If the calculation is temporary, the result needs to be legible now. If somebody changes the tip basis, the change needs to be obvious. If one diner pays a different share, the total still has to add up.&lt;/p&gt;

&lt;p&gt;I do not think local-only is a universal rule. It is a poor fit for products where history, collaboration, or handoffs are the reason people use the product. For a one-off restaurant calculation, it felt like the more honest default.&lt;/p&gt;

&lt;p&gt;I am Leon, the maker of &lt;a href="https://calculator-toolkit.com/" rel="noopener noreferrer"&gt;Calculator Toolkit&lt;/a&gt;. I would like feedback from other developers: when you remove accounts or saved state from a small tool, which parts of the interface become harder to get right?&lt;/p&gt;

&lt;p&gt;Disclosure: This article was drafted with AI and reviewed by Leon.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>privacy</category>
      <category>ux</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
