<?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 Emmert</title>
    <description>The latest articles on DEV Community by Martin Emmert (@martinemmert).</description>
    <link>https://dev.to/martinemmert</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%2F207922%2Fd4d4e776-6fe2-4085-8704-090845d6b242.jpg</url>
      <title>DEV Community: Martin Emmert</title>
      <link>https://dev.to/martinemmert</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/martinemmert"/>
    <language>en</language>
    <item>
      <title>Devlog #01</title>
      <dc:creator>Martin Emmert</dc:creator>
      <pubDate>Wed, 26 Aug 2020 23:09:23 +0000</pubDate>
      <link>https://dev.to/martinemmert/endless-document-app-devlog-4id6</link>
      <guid>https://dev.to/martinemmert/endless-document-app-devlog-4id6</guid>
      <description>&lt;h1&gt;
  
  
  27.08.2020
&lt;/h1&gt;

&lt;p&gt;After bootstrapping my new application with my personal example NextJs application, I prepared the phrasing of test cases that should be passed to match the acceptance criteria of the first user story.&lt;/p&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/martinemmert/endless-document/issues/2"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg"&gt;
      &lt;span class="issue-title"&gt;
        As a user, I want to write down my thoughts in a bullet list so that I can see them all in one place.
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#2&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/martinemmert"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s--vNWCNFDO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars3.githubusercontent.com/u/558323%3Fv%3D4" alt="martinemmert avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/martinemmert"&gt;martinemmert&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/martinemmert/endless-document/issues/2"&gt;&lt;time&gt;Aug 26, 2020&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;&lt;strong&gt;Acceptance criteria:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[ ] the document is initially empty&lt;/li&gt;
&lt;li&gt;[ ] each bullet point has a unique id&lt;/li&gt;
&lt;li&gt;[ ] pressing enter exits the editing of the current bullet point, creates a new one below and enters its editing mode&lt;/li&gt;
&lt;li&gt;[ ] pressing escape discards the current changes, if nothing was written, the bullet point is removed&lt;/li&gt;
&lt;/ul&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/martinemmert/endless-document/issues/2"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XZHorYbE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1c780rb7dop8zkjz26vj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XZHorYbE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1c780rb7dop8zkjz26vj.png" alt="Screenshot of empty test descriptions" width="880" height="173"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;After that, I added some actual tests and wrote the code needed to pass them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ycG3BLML--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/m6c1l7nn27q7swooajb0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ycG3BLML--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/m6c1l7nn27q7swooajb0.png" alt="Screenshot of test cases that describe what my program should do if a button with the text Add is clicked" width="880" height="273"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WcE-MPsE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/cpq5ud2kum5umx478apt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WcE-MPsE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/cpq5ud2kum5umx478apt.png" alt="Screenshot of code that passes the updated test cases" width="880" height="724"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OO3tokQR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/a1sy5p49jbip97wxhkny.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OO3tokQR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/a1sy5p49jbip97wxhkny.png" alt="Screenshot of Terminal with green tests" width="880" height="602"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👍&lt;/p&gt;




&lt;p&gt;Finally, I updated the first test case with my expectations of what should happen if the 'Add' button is clicked twice. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Aa0kvE54--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/6qbl2uz6w226yeihtbge.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Aa0kvE54--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/6qbl2uz6w226yeihtbge.png" alt="Screenshot of test cases that describe what my program should do if a button with the text Add is clicked twice" width="880" height="485"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I really like writing tests with the &lt;code&gt;@testing-library&lt;/code&gt;. It gives the reader a clear picture of what to expect without going into the implementation details.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The implementation will be part of the next update.&lt;/p&gt;




&lt;p&gt;&lt;span&gt;Cover Photo by &lt;a href="https://unsplash.com/@lunarts?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Volodymyr Hryshchenko&lt;/a&gt; on &lt;a href="https://unsplash.com/collections/465326/workflow?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Hide RED console.error LOG WALL while testing errors with jest</title>
      <dc:creator>Martin Emmert</dc:creator>
      <pubDate>Wed, 26 Aug 2020 15:34:42 +0000</pubDate>
      <link>https://dev.to/martinemmert/hide-red-console-error-log-wall-while-testing-errors-with-jest-2bfn</link>
      <guid>https://dev.to/martinemmert/hide-red-console-error-log-wall-while-testing-errors-with-jest-2bfn</guid>
      <description>&lt;p&gt;While provoking errors on purpose during tests the red error logs can get really annoying and hide potential crucial information from your eyes.&lt;/p&gt;

&lt;p&gt;Following a discussion on this &lt;a href="https://github.com/facebook/jest/issues/5785" rel="noopener noreferrer"&gt;issue&lt;/a&gt; leads to a nice solution by Kent C. Dodds.&lt;/p&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/facebook/jest/pull/5267#issuecomment-356605468" rel="noopener noreferrer"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        Comment for
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#5267&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/kentcdodds" rel="noopener noreferrer"&gt;
        &lt;img class="github-liquid-tag-img" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars2.githubusercontent.com%2Fu%2F1500684%3Fu%3D1c014810361080e75ad80cdb8577ced97da65b11%26v%3D4" alt="kentcdodds avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/kentcdodds" rel="noopener noreferrer"&gt;kentcdodds&lt;/a&gt;
        &lt;/strong&gt; commented on &lt;a href="https://github.com/facebook/jest/pull/5267#issuecomment-356605468" rel="noopener noreferrer"&gt;&lt;time&gt;Jan 10, 2018&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;I decided to not use &lt;code&gt;omitJSDOMErrors&lt;/code&gt; for two reasons:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The giant log I was seeing which resulted in #5227 also appears in the browser so it makes sense we see it in the JSDOM environment as well.&lt;/li&gt;
&lt;li&gt;
&lt;a class="mentioned-user" href="https://dev.to/domenic"&gt;@domenic&lt;/a&gt; &lt;a href="https://github.com/facebook/jest/pull/5227#issuecomment-355428862" rel="noopener noreferrer"&gt;said&lt;/a&gt;: "jsdomErrors are fired for many other cases as well, besides JavaScript errors. E.g. failed CSS parsing or image loading."&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Because #5227, the console JSDOM uses is the same one you have in your tests, so it's mockable now. So if you don't like the errors that are logged, you can simply do:&lt;/p&gt;
&lt;div class="highlight highlight-source-js js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-en"&gt;beforeEach&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt; &lt;span class="pl-c1"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;
  &lt;span class="pl-s1"&gt;jest&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;spyOn&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-smi"&gt;console&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s"&gt;'error'&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;
  &lt;span class="pl-smi"&gt;console&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;error&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;mockImplementation&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt; &lt;span class="pl-c1"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;
&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;

&lt;span class="pl-en"&gt;afterEach&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt; &lt;span class="pl-c1"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;
  &lt;span class="pl-smi"&gt;console&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;error&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;mockRestore&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;
&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;So I would recommend against making this change.&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/facebook/jest/pull/5267#issuecomment-356605468" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;





&lt;p&gt;&lt;strong&gt;tl;dr;&lt;/strong&gt; A snippet to hide &lt;code&gt;console.error&lt;/code&gt; logs during testing error messages.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;

&lt;span class="nf"&gt;beforeEach&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;jest&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;spyOn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;error&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="c1"&gt;// @ts-ignore jest.spyOn adds this functionallity&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;mockImplementation&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nf"&gt;afterEach&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// @ts-ignore jest.spyOn adds this functionallity&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;mockRestore&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;p&gt;&lt;span&gt;Cover Photo by &lt;a href="https://unsplash.com/@markusspiske?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Markus Spiske&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/code-error?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>tutorial</category>
      <category>snippet</category>
      <category>jest</category>
    </item>
    <item>
      <title>Defining the MVP</title>
      <dc:creator>Martin Emmert</dc:creator>
      <pubDate>Mon, 24 Aug 2020 21:40:02 +0000</pubDate>
      <link>https://dev.to/martinemmert/defining-the-mvp-2efh</link>
      <guid>https://dev.to/martinemmert/defining-the-mvp-2efh</guid>
      <description>&lt;p&gt;Starting a new project on Github, creating a new app with CRA, pushing your first commits, see the CI pipeline running and publishing your application feels great. Staying productive, making progress, keeping the focus after the first lines of code have been written, is also something that makes projects fun. Planning a few steps helps to achieve exactly that. Not every detail of each feature has to be laid out perfectly. Use the planning phase to draw rough sketches of what needs to be done. Go into details while being at it and do not put yourself into tight constraints upfront.&lt;/p&gt;

&lt;p&gt;Describing the features of your app by using user stories does exactly that. It puts the focus on the &lt;strong&gt;what&lt;/strong&gt; and postpones the &lt;strong&gt;how&lt;/strong&gt; until the feature will be implemented.&lt;/p&gt;

&lt;p&gt;It is often not easy to find abstract enough formulations to describe features, which are already floating around as implementation details in your head. Take your time and do not overcomplicate them. A change of the space around you (context) may be helpful, too. &lt;/p&gt;

&lt;p&gt;The following template is often used to keep them in the same format.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;As a &lt;code&gt;&amp;lt;type of user&amp;gt;&lt;/code&gt;, I want &lt;code&gt;&amp;lt;some goal&amp;gt;&lt;/code&gt; so that &lt;code&gt;&amp;lt;some reason&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;To be fair; as I am sitting here, writing this post, I am also eager to get started already and skip the planning phase. But in the end, I also know that this process helps me building this application.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Some words of advice on shaping an MVP:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Do not wait until feature XY is ready, feature ABC reached a stable state and Max polished the designs for weeks.&lt;/p&gt;

&lt;p&gt;The first impression counts and mostly it's the only chance given by most users. But if the first impression is postponed until the product is ready by your definition, you will miss out on the chance of getting valuable feedback of users that see something in your product and want to help to shape it.&lt;/p&gt;

&lt;p&gt;I'll try to release something after each feature is implemented. Until the product is meant for production, stuff can and will break, data is lost and ideas change.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Finally, here are the user stories I'd like to implement first:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As a user, I want to write down my thoughts in a bullet list so that I can see them all in one place.&lt;/p&gt;

&lt;p&gt;As a user, I want to organize my bullet points in a hierarchy so that I can create a meaningful order of my thoughts.&lt;/p&gt;

&lt;p&gt;As a user, I want to freely move my bullet points within my list so that I don't have to think about any order while writing them down.&lt;/p&gt;

&lt;p&gt;As a user, I want to delete any of my written down bullet points so that I can keep only what is meaningful to me.&lt;/p&gt;




&lt;p&gt;You can find the user stories on the board of my &lt;a href="https://github.com/martinemmert/endless-document/projects/1"&gt;Github project&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As I said earlier, I don't go into that much detail upfront and like to keep them short. As a Team, you normally would define subtasks and delimitations for each user story to split the work into smaller chunks. Doing that helps to share the work in a team.&lt;/p&gt;

&lt;p&gt;Working solo on a project makes this an overhead, that I tend to skip ;-)&lt;/p&gt;




&lt;p&gt;&lt;span&gt;Cover Photo by &lt;a href="https://unsplash.com/@halacious?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Halacious&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/prototype?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Readme of my endless document app experiment</title>
      <dc:creator>Martin Emmert</dc:creator>
      <pubDate>Sun, 23 Aug 2020 20:26:20 +0000</pubDate>
      <link>https://dev.to/martinemmert/readme-of-my-endless-document-app-experiment-4a44</link>
      <guid>https://dev.to/martinemmert/readme-of-my-endless-document-app-experiment-4a44</guid>
      <description>&lt;p&gt;Attempt to replicate the &lt;a href="https://workflowy.com"&gt;Workflowy&lt;/a&gt; endless document concept, extended with features I am currently missing.&lt;/p&gt;

&lt;h2&gt;
  
  
  My thoughts on workflowy
&lt;/h2&gt;

&lt;p&gt;Overall I am really happy with what workflowy offers as a tool and I enjoy using it. I tried several of the bigger alternates to it. None of them could resemble the ease of use and often overwhelmed me with too many pointless features. Nevertheless, I miss some things, but these are mostly visual, little organizing helpers, or time savers. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;There are a bunch of browser extensions that are recommended to enrich the experience with workflowy, but they don't appeal to me. Security and my privacy are the main reasons I don't want to use them. Also, it feels somewhat hackish to use them; like some of these DIY videos, where everything is done with hot glue.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What do I like using workflowy?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;ease of use and limited feature set does emphasis the focus on the content&lt;/li&gt;
&lt;li&gt;nearly everything can be used via keyboard shortcuts&lt;/li&gt;
&lt;li&gt;it is &lt;strong&gt;fast&lt;/strong&gt;, &lt;strong&gt;responsive&lt;/strong&gt; and &lt;strong&gt;frictionless&lt;/strong&gt; &lt;em&gt;unlike its competitors&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;jotting down my thoughts as they come into my mind&lt;/li&gt;
&lt;li&gt;the search is easy to use and search settings can be saved as a favorite&lt;/li&gt;
&lt;li&gt;I am not constrained to a specific workflow and can do whatever works for me&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What features am I currently missing in workflowy?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;more text formatting options within a nodes description field&lt;/li&gt;
&lt;li&gt;document structuring through headlines and sections&lt;/li&gt;
&lt;li&gt;possibility to change the bullet icon of a node or coloring it&lt;/li&gt;
&lt;li&gt;spacer elements to structure documents&lt;/li&gt;
&lt;li&gt;linking to other nodes without using the title of the node automatically&lt;/li&gt;
&lt;li&gt;automatically receiving the title of inserted links&lt;/li&gt;
&lt;li&gt;coloring of tags&lt;/li&gt;
&lt;li&gt;collection of used tags&lt;/li&gt;
&lt;li&gt;grouping favorized searches in a tree structure&lt;/li&gt;
&lt;li&gt;native extensibility&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;span&gt;Cover Photo by &lt;a href="https://unsplash.com/@sctgrhm?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Scott Graham&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/project-management?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Recreating an endless document application</title>
      <dc:creator>Martin Emmert</dc:creator>
      <pubDate>Sun, 23 Aug 2020 20:25:02 +0000</pubDate>
      <link>https://dev.to/martinemmert/recreating-an-endless-document-application-16f5</link>
      <guid>https://dev.to/martinemmert/recreating-an-endless-document-application-16f5</guid>
      <description>&lt;p&gt;Writing about the stuff I do every day for more than 10 years in the tech industry, has always been something I wanted to do.&lt;/p&gt;

&lt;p&gt;Today I created a new repository to work on an experiment and decided it was a good time to start scratching that itch of mine. I'd be happy if I can share some exciting things with you and keep you interested in following me along. &lt;/p&gt;

&lt;p&gt;This will is an ongoing documentation of how I attempt to replicate the endless document concept of Worflowy and extend it with features I am currently missing.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Feedback is very welcome and highly appreciated.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Github Repository
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/martinemmert"&gt;
        martinemmert
      &lt;/a&gt; / &lt;a href="https://github.com/martinemmert/endless-document"&gt;
        endless-document
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Replica of the Workflowy endless document concept.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Endless Document&lt;/h1&gt;
&lt;p&gt;Attempt to replicate the &lt;a href="https://workflowy.com" rel="nofollow"&gt;Workflowy&lt;/a&gt; endless document concept, extended with features I am currently missing.&lt;/p&gt;
&lt;h2&gt;
My thoughts on workflowy&lt;/h2&gt;
&lt;p&gt;Overall I am really happy with what workflowy offers as a tool and I enjoy using it. I tried several of the bigger alternates to it. None of them could resemble the ease of use and often overwhelmed me with too many pointless features. Nevertheless, I miss some things, but these are mostly visual, little organizing helpers, or time savers.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;There are a bunch of browser extensions that are recommended to enrich the experience with workflowy, but they don't appeal to me. Security and my privacy are the main reasons I don't want to use them. Also, it feels somewhat hackish to use them; like some of these DIY videos, where everything is done with hot glue.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;
What do I like using workflowy?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;ease of use and limited feature…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/martinemmert/endless-document"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;p&gt;&lt;span&gt;Cover Photo by &lt;a href="https://unsplash.com/@sctgrhm?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Scott Graham&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/project-management?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
