<?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>Forem: Tom Szwaja</title>
    <description>The latest articles on Forem by Tom Szwaja (@tsxoxo).</description>
    <link>https://forem.com/tsxoxo</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F770304%2F2eb540a5-c626-49aa-b61d-c331d86a11ab.png</url>
      <title>Forem: Tom Szwaja</title>
      <link>https://forem.com/tsxoxo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/tsxoxo"/>
    <language>en</language>
    <item>
      <title>Failure and fit</title>
      <dc:creator>Tom Szwaja</dc:creator>
      <pubDate>Tue, 05 Sep 2023 07:05:28 +0000</pubDate>
      <link>https://forem.com/tsxoxo/failure-and-fit-1n0k</link>
      <guid>https://forem.com/tsxoxo/failure-and-fit-1n0k</guid>
      <description>&lt;p&gt;This one's a collection of semi-related ponderings.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hard facts since last time
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I've looked into ways of modeling this app\&lt;br&gt;
→ and decided to start from a template rather than from scratch.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I've researched animation tech\&lt;br&gt;
→ and decided to use vanilla Vue until I'm thirsty for more.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I've run into a &lt;em&gt;persistent&lt;/em&gt; bug\&lt;br&gt;
→ and decided to move on for now.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A roadblock
&lt;/h2&gt;

&lt;p&gt;I've put some time into this project since the last devlog. Did a lot of research. Rebooted the app.&lt;/p&gt;

&lt;p&gt;And I've unsuccessfully tried to solve a technical problem with Xstate.&lt;sup id="fnref1"&gt;1&lt;/sup&gt; It went a little like this in my Notion stream of consiousness:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;em&gt;task&lt;/em&gt;: add persistent storage&lt;/li&gt;
&lt;li&gt;  done -- 2 lines. thank goddess for vueuse. it’s so simple!&lt;/li&gt;
&lt;li&gt;  &lt;em&gt;task&lt;/em&gt;: add intro transition&lt;/li&gt;
&lt;li&gt;  whats this bug? Am I using &lt;code&gt;&amp;lt;Transition&amp;gt;&lt;/code&gt; wrong?&lt;/li&gt;
&lt;li&gt;  OK, this is seriously breaking this app. let’s remove everything I just added.&lt;/li&gt;
&lt;li&gt;  oh… it’s still broken. was it always broken?&lt;/li&gt;
&lt;li&gt;  yes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;... And then a few days of debugging.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is it failure yet?
&lt;/h3&gt;

&lt;p&gt;Funny thing, "failre". An involuntary violation of an expectation. Or something like that. Thing is, expectations can be wrong and ridiculous. &lt;em&gt;"This shouldn't take more than an hour"&lt;/em&gt;, it might say. Yet. Here. We. Are.&lt;sup id="fnref2"&gt;2&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Working on a tough problem can make me ponder such things. After scouring the Xstate docs, delving into Github issues and trying half a dozen different approaches, I'm still where I was days ago: the thing ain't working. And I start asking: Have I gone about this the wrong way? Have I wasted time here? Should I have moved on from this sooner or looked at other, more creative solutions instead of throwing myself against this wall over and over?&lt;/p&gt;

&lt;p&gt;I feel like if I were to do this again, I would at least ask for help sooner, instead of trying it on my own for so long.&lt;/p&gt;

&lt;h2&gt;
  
  
  When do I use it?
&lt;/h2&gt;

&lt;p&gt;So many words have been said about how to use GSAP with Vue. And so few about &lt;em&gt;when&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Nobody even mentions this question in the talks and articles I've seen. -- And this is all I care about! When I'm researching a new field and see half a dozen different tools doing 'basically the same thing', the big question on my mind is: &lt;em&gt;When do I use which?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Is this considered a stupid question? Is the answer maybe too obvious? Do the ppl with experience know in a coherent way or is that knowledge too intuitive? Or is it so context-dependent that you could at best say something trite like "whatever your project requires"? Or could it be that the pros forgot how burning of a question this is for a beginner?&lt;/p&gt;

&lt;p&gt;I don't know. I feel like even if this were a hard question (rather than an obvious one), we could give people some useful information to make informed choices. Maybe we could simplify and say,&lt;/p&gt;

&lt;p&gt;&lt;em&gt;with these things being equal:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  knowledge -- I'm gonna be learning any tool from scratch&lt;/li&gt;
&lt;li&gt;  the quality of each tool's documentation&lt;/li&gt;
&lt;li&gt;  the requirements of the codebase (e.g. Vue)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;this tool would make for the smallest bundle size, that tool would produce the smoothest animations, and that tool would give you advantages you didn't even know existed, because you're new to the field and that's ok.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  I wish...
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  stately.ai would allow me to put spawned actors on my statechart. Half the reason I wanted to use Xstate is to &lt;em&gt;see&lt;/em&gt; what I'm doing.&lt;/li&gt;
&lt;li&gt;  discussions of the type 'when to use X' were more common than none-at-all&lt;/li&gt;
&lt;li&gt;  'small' bugs would have the courtesy to stay small&lt;/li&gt;
&lt;/ul&gt;




&lt;ol&gt;

&lt;li id="fn1"&gt;
&lt;p&gt;For the nerds: it's about persisting state with spawned actors, see &lt;a href="https://github.com/statelyai/xstate/discussions/4226"&gt;this Github discussion&lt;/a&gt;. ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn2"&gt;
&lt;p&gt;See the &lt;a href="https://betterfamilytherapy.com/blog/burnout-pt2-how-do-deal-with-the-stressors"&gt;concept of the "&lt;em&gt;Monitor&lt;/em&gt;"&lt;/a&gt;, aka the "discrepancy-reducing/-increasing feedback loop". ↩&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;

</description>
      <category>devlog</category>
      <category>design</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Context and complexities</title>
      <dc:creator>Tom Szwaja</dc:creator>
      <pubDate>Mon, 21 Aug 2023 14:49:15 +0000</pubDate>
      <link>https://forem.com/tsxoxo/modelling-animations-with-xstate-and-vue-for-fun-and-profit-part-1-3448</link>
      <guid>https://forem.com/tsxoxo/modelling-animations-with-xstate-and-vue-for-fun-and-profit-part-1-3448</guid>
      <description>&lt;p&gt;This is my brain churning away after hours whether I want to or not. I might as well write this down.&lt;/p&gt;

&lt;p&gt;I'm doing some new things in my current project -- animations, state machines -- and I need an outlet for the inevitable frustrations.&lt;/p&gt;

&lt;p&gt;Just so You know, I'll be throwing around jargon relating to the stack. Not because it's cool, but because I wanna let this be a stream-of-consciousness kind of thing.&lt;/p&gt;

&lt;p&gt;If You want any of this to go into more detail, let me know. I can write a mean guide! (meaning, a very friendly one)&lt;/p&gt;

&lt;h2&gt;
  
  
  So what &lt;em&gt;are you doing&lt;/em&gt;?
&lt;/h2&gt;

&lt;p&gt;I'm building a todo app. I wanna focus on interactions. I wanna design and build some animations.&lt;/p&gt;

&lt;p&gt;Here's me trying to model just how to check off an item:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ml4mI-WI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fmknq7qk144k5tnosxbl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ml4mI-WI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fmknq7qk144k5tnosxbl.png" alt="Screenshot of a pretty convoluted statechart." width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I can already tell this is going to be fun.&lt;/p&gt;

&lt;h3&gt;
  
  
  More context
&lt;/h3&gt;

&lt;p&gt;My goals on this project are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  reality: build something interesting-looking for my portfolio&lt;/li&gt;
&lt;li&gt;  build a UI that &lt;em&gt;feels&lt;/em&gt; like something. I want feedback through animations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm also going to be using this app for my grocery shopping day-to-day, so I want this thing to shine ✨.&lt;/p&gt;

&lt;p&gt;Here's my level of expertise:&lt;/p&gt;

&lt;p&gt;I'm using state machines for the first time. I heard they were dope. Managing a UI like this has been on my &lt;em&gt;todo list&lt;/em&gt; for a long time.&lt;/p&gt;

&lt;p&gt;I'm pretty new to animations. I've played with CSS transitions and animations and react-spring before, but this will be on another level. The vision is to use the state machines to control the animations.&lt;/p&gt;

&lt;p&gt;Oh and I want there to be dragging. Also first time long time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  Figma for designing and prototyping&lt;/li&gt;
&lt;li&gt;  stately.ai to visualize\think through the application&lt;/li&gt;
&lt;li&gt;  Xstate to implement the state machine&lt;/li&gt;
&lt;li&gt;  Pinia?&lt;/li&gt;
&lt;li&gt;  Vue.js as UI framework&lt;/li&gt;
&lt;li&gt;  unoCSS&lt;/li&gt;
&lt;li&gt;&lt;p&gt;smth smth animations&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;started with the Vitesse Lite template (shoutout to &lt;a class="mentioned-user" href="https://dev.to/antfu"&gt;@antfu&lt;/a&gt; !)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Animations
&lt;/h2&gt;

&lt;p&gt;I have some tools on my radar. It feels like there's gonna be a lot to try out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Vue's native animation capabilities...&lt;/li&gt;
&lt;li&gt;  ... maybe combined with custom CSS animations&lt;/li&gt;
&lt;li&gt;  @vue/motion&lt;/li&gt;
&lt;li&gt;  GSAP&lt;/li&gt;
&lt;li&gt;  RIVE&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  So far
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Prelude
&lt;/h3&gt;

&lt;p&gt;I've built a todo app last year. Been using it ever since, buggy as it is. Messed around with animations there, quickly realized how midfuckingly complex they make everything and abandoned the concept. But now I've reworked the design, I've got the state machines, I've got insomnia, so let's goooo!&lt;/p&gt;

&lt;h3&gt;
  
  
  Design
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  Made some designs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uAZNieew--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fbgumq8r9bfj5wm6z236.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uAZNieew--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fbgumq8r9bfj5wm6z236.png" alt="Screenshot of 3 designs in Figma, one grey two green. Much gradients." width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Prototyped some animations (is there a simpler way to embed &lt;code&gt;webm&lt;/code&gt; here?)&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
      &lt;div class="c-embed__cover"&gt;
        &lt;a href="https://www.youtube.com/shorts/kDE4RxmrC9s?feature=share" class="c-link s:max-w-50 align-middle" rel="noopener noreferrer"&gt;
          &lt;img alt="" src="https://res.cloudinary.com/practicaldev/image/fetch/s--FCGkRfSD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i.ytimg.com/vi/kDE4RxmrC9s/hq2.jpg%3Fsqp%3D-oaymwEoCOADEOgC8quKqQMcGADwAQH4AY4CgALgA4oCDAgAEAEYLSBlKF0wDw%3D%3D%26rs%3DAOn4CLDqyosdPAa6uYzHqiTTYTMtUarYUQ" height="360" class="m-0" width="480"&gt;
        &lt;/a&gt;
      &lt;/div&gt;
    &lt;div class="c-embed__body"&gt;
      &lt;h2 class="fs-xl lh-tight"&gt;
        &lt;a href="https://www.youtube.com/shorts/kDE4RxmrC9s?feature=share" rel="noopener noreferrer" class="c-link"&gt;
          need app -- animation prototype 1 - YouTube
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;p class="truncate-at-3"&gt;
          When I can't embed WEBM, I make a Youtube short. Goes with this devlog about modelling animations with XState:https://tsxoxo.com/blog/thinking-through-animat...
        &lt;/p&gt;
      &lt;div class="color-secondary fs-s flex items-center"&gt;
          &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://res.cloudinary.com/practicaldev/image/fetch/s--Wd2tTYlJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.youtube.com/s/desktop/fc8159e8/img/favicon.ico" width="16" height="16"&gt;
        youtube.com
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
   &lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
      &lt;div class="c-embed__cover"&gt;
        &lt;a href="https://www.youtube.com/shorts/D9kMGqcEtU4?feature=share" class="c-link s:max-w-50 align-middle" rel="noopener noreferrer"&gt;
          &lt;img alt="" src="https://res.cloudinary.com/practicaldev/image/fetch/s--EF8w-wm1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i.ytimg.com/vi/D9kMGqcEtU4/hq2.jpg%3Fsqp%3D-oaymwEoCOADEOgC8quKqQMcGADwAQH4AY4CgALgA4oCDAgAEAEYKSBgKGUwDw%3D%3D%26rs%3DAOn4CLCZJWJiqGhwu0yREKkgOHrjyQRcMA" height="360" class="m-0" width="480"&gt;
        &lt;/a&gt;
      &lt;/div&gt;
    &lt;div class="c-embed__body"&gt;
      &lt;h2 class="fs-xl lh-tight"&gt;
        &lt;a href="https://www.youtube.com/shorts/D9kMGqcEtU4?feature=share" rel="noopener noreferrer" class="c-link"&gt;
          need app -- animation prototype 2 - YouTube
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;p class="truncate-at-3"&gt;
          When I can't embed WEBM, I make a Youtube short. Goes with this devlog about modelling animations with XState:https://tsxoxo.com/blog/thinking-through-animat...
        &lt;/p&gt;
      &lt;div class="color-secondary fs-s flex items-center"&gt;
          &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://res.cloudinary.com/practicaldev/image/fetch/s--Wd2tTYlJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.youtube.com/s/desktop/fc8159e8/img/favicon.ico" width="16" height="16"&gt;
        youtube.com
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;This is still pretty lo-fi. I realized I know so little about how to actually build and choreograph animations in the browser that I better not go to far into this. I feel there's gonna be iteration (compromises) here. I would maybe love for my todo items to become fluid like water when they get checked off, but building that (and keeping performance... fluid, hhehe) is another matter.&lt;/p&gt;

&lt;p&gt;I'm gonna come back to designing once I get a grip on the technical limitations. I wanna especially find out&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  how the spring animations of @vue/motion jibe with the dragging&lt;/li&gt;
&lt;li&gt;  how easy it is to choreograph animations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Especially with the dragging and checking off it will be a matter of trying it out with my hands to see what &lt;em&gt;feels right&lt;/em&gt;. And there's of course performance issues. I want no less than buttery smooth.&lt;/p&gt;

&lt;h3&gt;
  
  
  Project setup
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  Set up a basic Pinia store. Not sure how this will interact with Xstate&lt;/li&gt;
&lt;li&gt;  Implemented the C in CRUD. Items are stored in &lt;code&gt;localStorage&lt;/code&gt; &amp;lt;3&lt;/li&gt;
&lt;li&gt;  Skeleton styling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3e1Ez_ut--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ofod0amtrajw2ti2u9xq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3e1Ez_ut--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ofod0amtrajw2ti2u9xq.png" alt="Screenshot of the implemented project." width="377" height="665"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also, a Notion page because can't have anything in my life happening without managing it in Notion. I'll be writing about writing this article there, later.&lt;/p&gt;

&lt;h3&gt;
  
  
  Modelling
&lt;/h3&gt;

&lt;p&gt;I did this for the first time today -- making a statechart in the Xstate ecosystem. It got kind of intense. I think this is what made me write this piece here in the first place.&lt;/p&gt;

&lt;p&gt;This is me seriously learning Xstate and state machines for the first time. I come to it with like the most basic of basic understanding ("there are states and transitions, aha") but pretty much everything else is new.&lt;/p&gt;

&lt;p&gt;I spent most of the day reading the docs and designing several machines focusing on just a single interaction: checking off an item. Mind you, checking off an item will be done by dragging it to one side. Think archiving stuff in Gmail or adding a song to your queue in Spotify.&lt;/p&gt;

&lt;p&gt;So what's the big deal -- you drag, and it gets checked off, right?&lt;/p&gt;

&lt;p&gt;Right, easy stuff -- until you add transitions.&lt;/p&gt;

&lt;h3&gt;
  
  
  A sample problem
&lt;/h3&gt;

&lt;p&gt;Say you check off an item -- meaning you dragged it to the right -- what happens next? Well, I want it to pop out of existence and move on to the next life (on the DONE list). This popping out will be animated in some way. After it's gone, there will be a gap -- we'll miss you, todo item.&lt;/p&gt;

&lt;p&gt;Then I'd like the rest of the list to scooch and fill dat gap in a smooth motion. Seems easy enough to do with Vue's &lt;code&gt;&amp;lt;Transition&amp;gt;&lt;/code&gt;. (I call this part "list-reordering".)&lt;/p&gt;

&lt;p&gt;But, &lt;strong&gt;hmm&lt;/strong&gt;, I often open my todo app and then check off several items one after the other: bam bam bam! So how would that jive with the above sequence of events then?&lt;/p&gt;

&lt;p&gt;I see two options:&lt;/p&gt;

&lt;p&gt;A. After an item gets checked off, the app 'locks itself' into the list-reordering animation. I have to wait for that to finish, and onlt THEN I can check off the next item.&lt;/p&gt;

&lt;p&gt;B. OR, after an item gets checked off, the list doesn't fill dat gap immediately. Instead, there is a window of time where the list stays put and I can check off the next item right away. Only when I'm done and lift my finger from the screen for good, does the list reorder itself and fill all the gaps at once.&lt;/p&gt;

&lt;p&gt;I vote for option B. That seems like the road I wanna go. It also leaves room for implementing some kind of combo reward-feedback, which I'd also really like to do. (Nothing like a m-m-m-mULTIKILL in a supermarket.)&lt;/p&gt;

&lt;p&gt;So how do you model this process? I tried 3 ideas so far: first with an if-then (see the very first image in this article), then a flag, then a sub-state. This is the sub-state attempt:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zmIGhmVn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rbnza21efoa73dunr05x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zmIGhmVn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rbnza21efoa73dunr05x.png" alt="Screenshot of a statechart." width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Doing this one, I started to realize how deep my ignorance goes.&lt;/p&gt;

&lt;h3&gt;
  
  
  The depths
&lt;/h3&gt;

&lt;p&gt;It's all connected: how do I model animations? How do I model the items? Does it make sense to make them actors? What kind of actors? Would it cause performance issues to have many state machines 'running' at the same time? I'm sure it wouldn't help.&lt;/p&gt;

&lt;p&gt;So that's where I'm at now. I'm starting to scratch the surface of what I don't know. So I can at least put my confusion into words. Progress takes many forms.&lt;/p&gt;




&lt;h2&gt;
  
  
  Next steps
&lt;/h2&gt;

&lt;p&gt;I wanna get specific:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  research how to model animations with xstate -- read guides, look at examples&lt;/li&gt;
&lt;li&gt;  look at other relevant examples: todo-lists using xstate, vue apps using xstate&lt;/li&gt;
&lt;li&gt;  possibly, if I'm sick of looking and reading, implement dragging&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Let me know if You want more!&lt;br&gt;
Until next time,&lt;br&gt;
Tom&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>design</category>
      <category>devlog</category>
      <category>animation</category>
    </item>
  </channel>
</rss>
