<?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: Emma Hotakainen</title>
    <description>The latest articles on DEV Community by Emma Hotakainen (@emma_hotakainen).</description>
    <link>https://dev.to/emma_hotakainen</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%2F4005954%2Fa34eff07-598c-4030-bf9a-2b8e7e448e12.png</url>
      <title>DEV Community: Emma Hotakainen</title>
      <link>https://dev.to/emma_hotakainen</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/emma_hotakainen"/>
    <language>en</language>
    <item>
      <title>I can't knit, and I built a knitting app for the one person who doesn't need it</title>
      <dc:creator>Emma Hotakainen</dc:creator>
      <pubDate>Mon, 29 Jun 2026 06:45:05 +0000</pubDate>
      <link>https://dev.to/emma_hotakainen/i-cant-knit-and-i-built-a-knitting-app-for-the-one-person-who-doesnt-need-it-5dl1</link>
      <guid>https://dev.to/emma_hotakainen/i-cant-knit-and-i-built-a-knitting-app-for-the-one-person-who-doesnt-need-it-5dl1</guid>
      <description>&lt;p&gt;I can't knit. Never finished a row, probably never will. The knitter in our house is my partner. She's the real thing, properly good, the kind of good where you stop asking how she does it because the answer is just "I don't know, I look at it and it happens."&lt;/p&gt;

&lt;p&gt;Here's the part that makes this whole project a little absurd. She doesn't count rows. She doesn't lose her place. She has never used a knitting app and has never wanted one. The entire thing lives in her hands and her head, and the needles just sort of obey her. I find it mildly unfair, as someone who can't make a single stitch behave.&lt;/p&gt;

&lt;p&gt;So naturally I decided to build her a knitting app.&lt;/p&gt;

&lt;p&gt;I'm a solo Android developer from Finland, working alone under the name Finnvek. The app is KnitTools, a tracker for knitting and crochet. And it didn't start as a product at all. It started as a gift. I wanted to make her something, and the one thing I actually know how to make is software, so that's what she was getting.&lt;/p&gt;

&lt;p&gt;The obvious flaw, which took me embarrassingly long to admit, is that she doesn't need a row counter. She's too good for one. I was building a tool for possibly the one knitter alive who would manage perfectly fine without it. As a starting point for a product, I can't really recommend it.&lt;/p&gt;

&lt;p&gt;But the longer I worked on it, the less it stayed a gift. Because most people who knit are not her. Most people do lose their place, do want to remember which yarn went into which project, do want the pattern and the progress photos and the row count in one spot instead of scattered across sticky notes and memory. The thing I was making for one person turned out to be the thing a lot of people actually wanted. So I kept going.&lt;/p&gt;

&lt;p&gt;A few decisions, since people always ask about them.&lt;/p&gt;

&lt;h2&gt;
  
  
  It doesn't track you
&lt;/h2&gt;

&lt;p&gt;I looked at what was already out there and a lot of it was rough. Ads dropped into the middle of a project. Monthly fees to count rows. So I set some rules early. No ads, no ad networks, no behavioral analytics. A knitting app has no business knowing where you are or what else is on your phone. The only other thing that touches the internet is Ravelry, which is optional. Run it offline and it doesn't complain.&lt;/p&gt;

&lt;p&gt;On the technical side it's Kotlin and Jetpack Compose with Material 3, Room for storage, Hilt for the wiring, a Glance widget, and Ravelry over OAuth. Nothing exotic.&lt;br&gt;
The part people seem surprised by in 2026 is that there is no AI in it at all. No cloud model, no on-device ML, no "smart" anything. When you paste a row of a pattern and the app pulls out the stitch counts, that is a plain local regex parser doing the work, not a model. It runs on the phone, it never calls out anywhere, and it doesn't need to. &lt;/p&gt;

&lt;h2&gt;
  
  
  You pay once
&lt;/h2&gt;

&lt;p&gt;KnitTools is a one time purchase. You buy it, it's yours, done. No subscription, no monthly fee to keep your own scarf count alive. Everyone tells me subscriptions are the smart move and the numbers probably back them up. I just couldn't make peace with charging someone every month to keep track of a jumper. There's a free trial too, no card, the full app for two weeks, then you decide.&lt;/p&gt;

&lt;h2&gt;
  
  
  She's still the best tester I have
&lt;/h2&gt;

&lt;p&gt;I can write the code, fight with the UI, redo things I was sure were finished. What I can't do is knit. So my best tester is her, not because she uses the app but because she knows knitting cold. She tells me when a term is wrong, when something wouldn't make sense to a real knitter, when I've built something that looks tidy in code and is complete nonsense on needles. She'll never be a daily user. She's the one who keeps me honest.&lt;/p&gt;

&lt;p&gt;KnitTools isn't out yet. Still building, still polishing, still finding small things that bother me at 2AM. I've poked at the whole "build in public" thing a little, put up some clips, and then ran out of steam and ideas somewhere around the fifteenth one. This is me poking at it again from a different angle, partly in case someone else is out there making something small and stubborn on their own, or for someone they love.&lt;/p&gt;

&lt;p&gt;If you knit, or you live with someone who makes it look easy, you can follow along at knittoolsapp.com. And if you ever catch yourself building something elaborate for a person who never asked for it, my unhelpful advice is to do it anyway. Worst case you learn something. Best case you accidentally build the thing a lot of other people were waiting for.&lt;/p&gt;

</description>
      <category>androiddev</category>
      <category>kotlin</category>
      <category>buildinpublic</category>
      <category>privacy</category>
    </item>
  </channel>
</rss>
