<?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: Ian</title>
    <description>The latest articles on DEV Community by Ian (@ianwieds).</description>
    <link>https://dev.to/ianwieds</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%2F384278%2F61b90b66-d678-4b60-b1a2-a008abb006d0.jpg</url>
      <title>DEV Community: Ian</title>
      <link>https://dev.to/ianwieds</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ianwieds"/>
    <language>en</language>
    <item>
      <title>This week: payments in the framework, nine brands migrated in an hour, and the start of a video pipeline</title>
      <dc:creator>Ian</dc:creator>
      <pubDate>Thu, 27 Aug 2026 22:49:46 +0000</pubDate>
      <link>https://dev.to/ianwieds/this-week-payments-in-the-framework-nine-brands-migrated-in-an-hour-and-the-start-of-a-video-3a6p</link>
      <guid>https://dev.to/ianwieds/this-week-payments-in-the-framework-nine-brands-migrated-in-an-hour-and-the-start-of-a-video-3a6p</guid>
      <description>&lt;p&gt;This was a consolidation week. I run a bunch of small products under &lt;a href="https://itwcreativeworks.com" rel="noopener noreferrer"&gt;ITW Creative Works&lt;/a&gt;, and for years each one carried its own slightly different website, backend, and config. This week most of that duplication died.&lt;/p&gt;

&lt;h2&gt;
  
  
  OMEGA, the framework under everything
&lt;/h2&gt;

&lt;p&gt;Most of the week went into &lt;a href="https://omegajs.dev" rel="noopener noreferrer"&gt;OMEGA&lt;/a&gt;, the framework I'm building to run every brand: ten minor releases in seven days (0.29 → 0.43).&lt;/p&gt;

&lt;p&gt;The headline pieces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Payments, end to end.&lt;/strong&gt; Checkout, billing UI, discount handling, and production gating now live in the framework. A brand turns payments on with config, not code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One analytics contract.&lt;/strong&gt; Every target (website, backend, desktop, extension) now reports events through a single typed contract. One definition, no per-app drift.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lifecycle plumbing.&lt;/strong&gt; A retention dialog, a winback flow, and offline mode, all shipped once and inherited by every brand.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The reason this is cool: fixing something in one product used to mean fixing it in ten places. Now every brand picks it up on its next update.&lt;/p&gt;

&lt;h2&gt;
  
  
  Nine brands, one template, one hour
&lt;/h2&gt;

&lt;p&gt;The payoff moment. I scaffolded monorepos for nine brands, including &lt;a href="https://studymonkey.ai" rel="noopener noreferrer"&gt;StudyMonkey&lt;/a&gt;, Giftly, DashQR, Bink, Ghostii, Chatsy, Kirue, Clockii, and the ITW site itself, all from a single brand template, all within the same hour.&lt;/p&gt;

&lt;p&gt;Migration was config conversion, not a rewrite: each legacy site and backend got ported onto the framework packages, and its old settings were translated into one &lt;code&gt;omega.json5&lt;/code&gt;. The brands with the most legacy baggage took a few extra commits; the clean ones were nearly free.&lt;/p&gt;

&lt;h2&gt;
  
  
  StreamForge: the start of a video pipeline
&lt;/h2&gt;

&lt;p&gt;New project. I want long working sessions to become edited videos without me living in a timeline editor. This week its first repo, cutroom, got a working recap pipeline: ingest the footage, render a longform cut, then frame shorts out of it with proper edge anchoring. A second repo, switchboard, is seeded and waiting. No public site yet; when the first output is watchable, that will be the post.&lt;/p&gt;

&lt;h2&gt;
  
  
  The agent workflow engine
&lt;/h2&gt;

&lt;p&gt;My Claude Code workflow tooling (an engine I call &lt;a href="https://github.com/itw-creative-works/workkit" rel="noopener noreferrer"&gt;workkit&lt;/a&gt;) went 0.41 → 0.47: a live board for every project's issues, stale-work alarms, and documentation-density enforcement. The idea it encodes: GitHub issues are the single source of truth, and the agents' job is to keep them true. It manages a small fleet of coding sessions across all the repos above.&lt;/p&gt;

&lt;h2&gt;
  
  
  Small but satisfying
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Dotfiles shipped 3.20.4 and 3.21.0: a Chrome E2E teardown fix and pinning &lt;code&gt;jq&lt;/code&gt; so hooks stop resolving to the system build.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next week: first real output from the video pipeline, and the brand rollout continues. If you have gone through a many-products-one-framework consolidation, I would genuinely like to hear what broke for you. Comments open.&lt;/p&gt;

</description>
      <category>devlog</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>How 'me' became 'us'</title>
      <dc:creator>Ian</dc:creator>
      <pubDate>Mon, 11 May 2020 23:51:23 +0000</pubDate>
      <link>https://dev.to/ianwieds/me-1ep6</link>
      <guid>https://dev.to/ianwieds/me-1ep6</guid>
      <description>&lt;p&gt;Hi! I'm Ian and I build apps that help entrepreneurs succeed. &lt;/p&gt;

&lt;p&gt;I started programming at age 12 with simple game development using a visual programming language known as MMF2. It taught me the basics but the language is juvenile compared to most others so I eventually graduated to Java where I honed my skills a bit more. &lt;/p&gt;

&lt;p&gt;I built nothing of note until I picked up web technologies (JS, HTML, CSS) and eventually Node.js where I began building my first successful project &lt;a href="https://somiibo.com" rel="noopener noreferrer"&gt;Somiibo&lt;/a&gt;: a social media automation platform. Somiibo was launched on November 20th, 2017, and would change everything for me. &lt;/p&gt;

&lt;p&gt;The project &lt;strong&gt;took off&lt;/strong&gt; with &lt;em&gt;tens of thousands&lt;/em&gt; of signups and a &lt;em&gt;few thousand&lt;/em&gt; paying users in just the first few months. I decided it was time to get serious so I started a company called &lt;a href="https://itwcreativeworks.com" rel="noopener noreferrer"&gt;ITW Creative Works&lt;/a&gt; to act as the parent company to Somiibo as well as all future projects. &lt;/p&gt;

&lt;p&gt;After that, our company began building a diverse set of apps and tools including:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://app.soundgrail.com" rel="noopener noreferrer"&gt;SoundGrail&lt;/a&gt;: A toolkit for musicians and DJs&lt;br&gt;
&lt;a href="https://slapform.com" rel="noopener noreferrer"&gt;Slapform&lt;/a&gt;: A form backend for web developers&lt;br&gt;
&lt;a href="https://proxifly.com" rel="noopener noreferrer"&gt;Proxifly&lt;/a&gt;: A free https proxy API&lt;br&gt;
&lt;a href="https://socialetto.com" rel="noopener noreferrer"&gt;Socialetto&lt;/a&gt;: An influencer search engine and database&lt;/p&gt;

&lt;p&gt;I now run the company as my full-time job and manage the development of all of the above projects. At our company, we are constantly innovating and creating new things that make the world a better place and we have &lt;strong&gt;so&lt;/strong&gt; much fun doing it!&lt;/p&gt;

&lt;p&gt;Thanks for taking a second to hear my story and I hope we inspire you to build something great too! &lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>backend</category>
    </item>
  </channel>
</rss>
