<?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: jacak</title>
    <description>The latest articles on DEV Community by jacak (@jacak).</description>
    <link>https://dev.to/jacak</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%2F4080879%2F8d167727-8d54-45a5-8343-408488878d48.png</url>
      <title>DEV Community: jacak</title>
      <link>https://dev.to/jacak</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jacak"/>
    <language>en</language>
    <item>
      <title>How to Take a Passport or Visa Photo at Home (Without a Studio Visit)</title>
      <dc:creator>jacak</dc:creator>
      <pubDate>Sat, 26 Sep 2026 07:47:13 +0000</pubDate>
      <link>https://dev.to/jacak/how-to-take-a-passport-or-visa-photo-at-home-without-a-studio-visit-46o1</link>
      <guid>https://dev.to/jacak/how-to-take-a-passport-or-visa-photo-at-home-without-a-studio-visit-46o1</guid>
      <description>&lt;p&gt;Getting a passport or visa photo used to mean a trip to a booth or pharmacy, waiting in line, and hoping the print matched the exact size your application needed. Rules differ by country: US passports want a 2×2 inch square on a white background; UK passports use 35×45 mm; China visas often use 33×48 mm. Get any of those wrong and you risk a rejection.&lt;/p&gt;

&lt;p&gt;You can do this at home with a phone and a browser tool. Here is a practical workflow that works for most common documents.&lt;/p&gt;

&lt;h2&gt;
  
  
  What “compliant” usually means
&lt;/h2&gt;

&lt;p&gt;Most authorities care about the same basics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Exact dimensions in millimetres or inches (and matching pixel size for online uploads)&lt;/li&gt;
&lt;li&gt;Plain background (usually white or light gray)&lt;/li&gt;
&lt;li&gt;Head centered, eyes roughly on the right horizontal line, face fully visible&lt;/li&gt;
&lt;li&gt;Neutral expression, no heavy filters&lt;/li&gt;
&lt;li&gt;Sharp image at print-ready resolution (often around 300 DPI)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A generic crop in your phone’s photo editor rarely hits all of that at once. That is why document-specific tools exist.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Take a usable source photo
&lt;/h2&gt;

&lt;p&gt;You do not need studio lights. Soft daylight facing a plain wall is enough.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Face the camera straight on, head upright&lt;/li&gt;
&lt;li&gt;Use even frontal light; avoid hard shadows and flash glare&lt;/li&gt;
&lt;li&gt;Keep hair off the eyes and face outline&lt;/li&gt;
&lt;li&gt;Neutral expression, eyes open, mouth closed&lt;/li&gt;
&lt;li&gt;Remove glasses, hats, and accessories unless your document rules allow them&lt;/li&gt;
&lt;li&gt;Leave some space around the head and shoulders — do not pre-crop tightly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A clear phone selfie is fine. The source does not need to be the final size.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Pick the exact document before you upload
&lt;/h2&gt;

&lt;p&gt;Always choose the country and document type first (US Passport, UK Passport, China Visa, and so on). Size, background color, framing, and file rules are stored per format. Uploading first and guessing later is how people end up with a photo that looks fine but fails submission.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Let the tool handle crop, background, and sizing
&lt;/h2&gt;

&lt;p&gt;A tool like &lt;a href="https://photogovs.com" rel="noopener noreferrer"&gt;PhotoGov&lt;/a&gt; is built for this flow: select the document, upload the portrait, then automatic processing aligns the face, replaces the background, and crops to the required proportions. Typical turnaround is about 30 seconds. The catalog currently covers 49 passport, visa, residence-card, and licence formats across 17 countries and regions, with 300 DPI JPEG output plus a printable layout when you need a paper sheet.&lt;/p&gt;

&lt;p&gt;What you want from any such service:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Correct millimetre and pixel output for the selected document&lt;/li&gt;
&lt;li&gt;Automatic head alignment and eye-level crop&lt;/li&gt;
&lt;li&gt;Plain background matching that standard&lt;/li&gt;
&lt;li&gt;Digital file for online applications and a print-ready sheet for home or store printing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No app install should be required if you are working from a laptop or phone browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Download both digital and print versions when available
&lt;/h2&gt;

&lt;p&gt;Online applications often want a square JPEG at a stated pixel size. Paper applications want a printed photo on a standard sheet. Download both if the tool offers them, then keep the original output files — do not re-export through another editor that might change DPI or compression.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick check before you submit
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Does the size match the document you selected?&lt;/li&gt;
&lt;li&gt;Is the background plain and the correct color?&lt;/li&gt;
&lt;li&gt;Is the face sharp, fully visible, and not over-filtered?&lt;/li&gt;
&lt;li&gt;Did you meet any extra rules for that country (glasses, head covering, child photos)?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;PhotoGov and similar services prepare the file to published specs; final acceptance still sits with the issuing authority. If a consulate publishes updated guidance, follow that page over any third-party summary.&lt;/p&gt;

&lt;h2&gt;
  
  
  When a home photo is a bad idea
&lt;/h2&gt;

&lt;p&gt;Skip DIY and go to a professional if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need same-day wet prints with a guarantee stamp&lt;/li&gt;
&lt;li&gt;Your previous applications were rejected for photo issues&lt;/li&gt;
&lt;li&gt;You are photographing infants or someone who cannot hold a neutral pose easily&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For everyone else renewing a passport, filing a visa, or replacing a residence card, a careful phone portrait plus a document-aware online maker is usually enough — faster and cheaper than a studio visit, and sized for the form you actually need.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://photogovs.com" rel="noopener noreferrer"&gt;photogovs.com&lt;/a&gt; — choose your document, upload a clear portrait, download digital or print-ready output.&lt;/p&gt;

</description>
      <category>travel</category>
      <category>passport</category>
      <category>productivity</category>
      <category>photography</category>
    </item>
    <item>
      <title>Fake US addresses that fail real validation (and a few other tiny browser tools)</title>
      <dc:creator>jacak</dc:creator>
      <pubDate>Mon, 17 Aug 2026 04:59:21 +0000</pubDate>
      <link>https://dev.to/jacak/fake-us-addresses-that-fail-real-validation-and-a-few-other-tiny-browser-tools-j50</link>
      <guid>https://dev.to/jacak/fake-us-addresses-that-fail-real-validation-and-a-few-other-tiny-browser-tools-j50</guid>
      <description>&lt;p&gt;I keep a few one-page tools in the browser for work that is too small for a full app, and too annoying to fake by hand.&lt;/p&gt;

&lt;p&gt;This is not a directory dump. Below is how I actually use them while shipping forms, docs, and media.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem with "real looking" test addresses
&lt;/h2&gt;

&lt;p&gt;Checkout and KYC forms want a street, city, state, and ZIP that &lt;em&gt;look&lt;/em&gt; valid. If you paste a real address from Google Maps, you can accidentally trigger a live ship, a real card AVS check, or a real identity vendor.&lt;/p&gt;

&lt;p&gt;What I want in UI tests is the opposite:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;field lengths look familiar (so layout and masks do not break)&lt;/li&gt;
&lt;li&gt;ZIP / state combinations look like the US format&lt;/li&gt;
&lt;li&gt;checksums and real-world validation &lt;strong&gt;fail on purpose&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://www.usadizhi.com/" rel="noopener noreferrer"&gt;USA Dizhi&lt;/a&gt; generates fictional United States address-format samples for that job. Use it for format learning and QA. Do &lt;strong&gt;not&lt;/strong&gt; use the output for payments, shipping, or identity verification.&lt;/p&gt;

&lt;p&gt;A typical flow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the generator.&lt;/li&gt;
&lt;li&gt;Copy a sample into your form fixture.&lt;/li&gt;
&lt;li&gt;Assert the UI accepts the &lt;em&gt;shape&lt;/em&gt; (required fields, ZIP length, state dropdown).&lt;/li&gt;
&lt;li&gt;Keep a separate integration test that talks to the real validator with a sandbox account, not these samples.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If your test suite currently uses &lt;code&gt;123 Main St, Springfield&lt;/code&gt; copied from a coworker, replace it. That string is too famous, and some vendors treat it as a known dummy.&lt;/p&gt;

&lt;p&gt;Public notes: &lt;a href="https://github.com/xhlovexh-lang/usadizhi" rel="noopener noreferrer"&gt;github.com/xhlovexh-lang/usadizhi&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Morse in the browser when a ticket dumps &lt;code&gt;... --- ...&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Every few months a log, CTF write-up, or old radio-adjacent feature dumps Morse as ASCII dots and dashes. I do not want to paste that into a random "decoder" that uploads the string.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://morseclue.com/" rel="noopener noreferrer"&gt;MorseClue&lt;/a&gt; runs in the browser: English to Morse, Morse back to text, plus decode from audio or an image. Practice stays local.&lt;/p&gt;

&lt;p&gt;Useful when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;you are checking a &lt;code&gt;beep&lt;/code&gt; / &lt;code&gt;dash&lt;/code&gt; renderer&lt;/li&gt;
&lt;li&gt;a designer sent a screenshot of a code chart&lt;/li&gt;
&lt;li&gt;you want a round-trip: text → Morse → text before you ship a toy feature&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Notes: &lt;a href="https://github.com/xhlovexh-lang/morseclue" rel="noopener noreferrer"&gt;github.com/xhlovexh-lang/morseclue&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Passport-sized photos without installing an editor
&lt;/h2&gt;

&lt;p&gt;Government photo rules are picky (size, head position, background). For a visa or passport upload I use &lt;a href="https://www.photogovs.com/" rel="noopener noreferrer"&gt;PhotoGov&lt;/a&gt; instead of fighting crop handles in a generic editor. It targets 49 document formats across 17 countries.&lt;/p&gt;

&lt;p&gt;Notes: &lt;a href="https://github.com/xhlovexh-lang/photogovs" rel="noopener noreferrer"&gt;github.com/xhlovexh-lang/photogovs&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Watermarks and noise, only on files you own
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.clear-frames.com/" rel="noopener noreferrer"&gt;Clearframe&lt;/a&gt; is an inpainting watermark remover for images and video. Only run it on content you own or have permission to edit.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://noisewipe.com/" rel="noopener noreferrer"&gt;NoiseWipe&lt;/a&gt; cleans room tone, hum, and clicks. You get a preview first; full download is paid if you want the whole file. I use the preview to decide whether a podcast take is salvageable.&lt;/p&gt;

&lt;p&gt;Notes: &lt;a href="https://github.com/xhlovexh-lang/clear-frames" rel="noopener noreferrer"&gt;clear-frames&lt;/a&gt;, &lt;a href="https://github.com/xhlovexh-lang/noisewipe" rel="noopener noreferrer"&gt;noisewipe&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Checking which IP a request actually goes out on
&lt;/h2&gt;

&lt;p&gt;Two situations keep coming up. An API allowlist rejects me and I need to know my real egress IP. Or a geo-gated page behaves oddly while a VPN is supposedly on. Guessing is not useful in either case.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ipdet.app/" rel="noopener noreferrer"&gt;ipdet.app&lt;/a&gt; reports the public IPv4/IPv6 the page actually sees, and whether DNS or WebRTC is handing out a different one. That second part matters for browser testing specifically: the tunnel can be up while WebRTC still leaks the local address, which is exactly the situation that makes geo behaviour look nondeterministic. Latency, MTR, WHOIS, and DNS lookup are on the same page, so I am not bouncing between four sites mid-debug.&lt;/p&gt;

&lt;p&gt;No signup, which is most of why it stays in my bookmarks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Index
&lt;/h2&gt;

&lt;p&gt;They all sit in &lt;a href="https://github.com/xhlovexh-lang/free-web-tools" rel="noopener noreferrer"&gt;github.com/xhlovexh-lang/free-web-tools&lt;/a&gt;. I built them; this post is how I use them, not a ranking of "best AI tools".&lt;/p&gt;

</description>
      <category>software</category>
      <category>testing</category>
      <category>tools</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
