<?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: Martin Grüner</title>
    <description>The latest articles on DEV Community by Martin Grüner (@martingruner).</description>
    <link>https://dev.to/martingruner</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%2F4085350%2Fbf107504-f459-41f5-845c-d627cf599a2e.jpg</url>
      <title>DEV Community: Martin Grüner</title>
      <link>https://dev.to/martingruner</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/martingruner"/>
    <language>en</language>
    <item>
      <title>Keeping 3D device-frame perspective editable through native export</title>
      <dc:creator>Martin Grüner</dc:creator>
      <pubDate>Wed, 19 Aug 2026 16:43:21 +0000</pubDate>
      <link>https://dev.to/martingruner/keeping-3d-device-frame-perspective-editable-through-native-export-1in9</link>
      <guid>https://dev.to/martingruner/keeping-3d-device-frame-perspective-editable-through-native-export-1in9</guid>
      <description>&lt;p&gt;A device frame can explain what kind of app is being shown, but a flat mockup often sits on top of the composition instead of belonging to it. In Screen Studio Kit 1.2, I added controlled depth without flattening the frame into a finished bitmap.&lt;/p&gt;

&lt;p&gt;Device-frame layers now store independent Turn and Tilt angles. The hardware body, screen content, finish, shadows, and perspective remain connected to the same editable layer. Both angles are constrained from -60° to 60°, and the canvas updates immediately while the frame is edited.&lt;/p&gt;

&lt;p&gt;The detail that mattered most was export parity. The interactive canvas is not the final renderer, so the native export engine consumes the same stored angles. Existing projects migrate with zero-degree values, preserving their previous appearance until a frame is deliberately changed. Perspective is scene data, not a preview-only effect.&lt;/p&gt;

&lt;p&gt;This also needs restraint. Screen Studio Kit warns when a rotated custom iPhone frame is used for an App Store output so the artwork can be checked against Apple’s current requirements. The same reusable project can keep a 3D treatment for another store or campaign and reset the App Store version.&lt;/p&gt;

&lt;p&gt;The complete editor, local projects, asset management, preview, validation, device-frame editing, one size and one language per export, and up to 10 full-resolution exports per local day are in the Free tier.&lt;/p&gt;

&lt;p&gt;The release notes show the real editor and exported artwork: &lt;a href="https://martingruner.com/blog/screen-studio-kit-1-2" rel="noopener noreferrer"&gt;https://martingruner.com/blog/screen-studio-kit-1-2&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>design</category>
      <category>productivity</category>
      <category>appdev</category>
    </item>
    <item>
      <title>A diff tool should fail honestly when the input gets difficult</title>
      <dc:creator>Martin Grüner</dc:creator>
      <pubDate>Wed, 19 Aug 2026 16:24:29 +0000</pubDate>
      <link>https://dev.to/martingruner/a-diff-tool-should-fail-honestly-when-the-input-gets-difficult-2gh9</link>
      <guid>https://dev.to/martingruner/a-diff-tool-should-fail-honestly-when-the-input-gets-difficult-2gh9</guid>
      <description>&lt;p&gt;Diff Anything 1.2 is a quality release in the literal sense: the same files produce more faithful results, difficult inputs fail more honestly, and every route into a comparison follows the same rules.&lt;/p&gt;

&lt;p&gt;The visible change is a broader Free tier. The desktop app can now preview YAML, XML, CSV, environment files, HTTP responses, API schemas, folders, archives, PDF and Office documents, images, and binary files. Free previews are explicitly bounded: files up to 5 MiB per side, 10 new sessions per local day, the first 100 collection items, and the first 3 PDF page previews. The Free CLI remains focused on text and JSON.&lt;/p&gt;

&lt;p&gt;The less visible work is in awkward inputs. Structured comparison now handles cases such as duplicate keys, repeated CSV keys, repeated HTTP headers, YAML multi-documents, XML namespace meaning, and masked environment values with explicit warnings when a result cannot be represented without ambiguity. Image comparison handles transparency and decoded-size budgets more carefully. PDF and Office handling keeps extracted text and rendered evidence distinct.&lt;/p&gt;

&lt;p&gt;Everything stays local: there is no account, cloud comparison service, analytics, or telemetry. The point is not to claim that one engine can perfectly understand every format. It is to select a bounded specialist engine, show its limits, and keep desktop, CLI, Git, and CI behavior aligned.&lt;/p&gt;

&lt;p&gt;The full release notes include the exact boundaries and screenshots: &lt;a href="https://martingruner.com/blog/diff-anything-1-2" rel="noopener noreferrer"&gt;https://martingruner.com/blog/diff-anything-1-2&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>devtools</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>What a Windows developer workspace should remember between context switches</title>
      <dc:creator>Martin Grüner</dc:creator>
      <pubDate>Wed, 19 Aug 2026 16:23:48 +0000</pubDate>
      <link>https://dev.to/martingruner/what-a-windows-developer-workspace-should-remember-between-context-switches-3omi</link>
      <guid>https://dev.to/martingruner/what-a-windows-developer-workspace-should-remember-between-context-switches-3omi</guid>
      <description>&lt;p&gt;I built DevDock because reopening a codebase is not the same as recovering the context needed to work on it. A product may span several folders, and the useful state is scattered across commands, Docker, Git, databases, project health, and the checks I want to run before release.&lt;/p&gt;

&lt;p&gt;DevDock is my attempt to keep that context in one local Windows workspace. Each registered project gets an overview, saved commands, run history, Docker and Git state, database operations, local security findings, settings, and tools. A Today view keeps recent projects and saved daily workflows close when I switch between products.&lt;/p&gt;

&lt;p&gt;The important boundary is that it is a local tool. It does not upload source code. The security audit checks registered folders for exposed secrets, private keys, tracked credential files, unsafe permissions, escaping symlinks, and missing lockfiles, while withholding matched secret values. Database tools are deliberately bounded around schema inspection, constrained record lookups, migration review, diagnostics, and confirmed backup operations.&lt;/p&gt;

&lt;p&gt;The Free tier supports up to three local projects with core commands, Git, Docker, Project Doctor, and security audits. Pro is a one-time purchase for unlimited and multi-folder projects, custom workflows, complete history and insights, database tools, SSH transfers, and configuration backup and restore.&lt;/p&gt;

&lt;p&gt;I would especially value feedback from developers who work across several local repositories: which piece of context costs you the most time when you return to a project?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://martingruner.com/projects/devdock" rel="noopener noreferrer"&gt;https://martingruner.com/projects/devdock&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>devtools</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
