<?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: Russ Brooks</title>
    <description>The latest articles on DEV Community by Russ Brooks (@iq9).</description>
    <link>https://dev.to/iq9</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%2F343659%2Fdbe66399-3801-4dc4-b5c1-8177b47e599c.jpg</url>
      <title>DEV Community: Russ Brooks</title>
      <link>https://dev.to/iq9</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/iq9"/>
    <language>en</language>
    <item>
      <title>🗒️ Best Alternatives to Apple Notes 📝</title>
      <dc:creator>Russ Brooks</dc:creator>
      <pubDate>Sun, 10 Sep 2023 04:38:33 +0000</pubDate>
      <link>https://dev.to/iq9/best-alternatives-to-apple-notes-3ja0</link>
      <guid>https://dev.to/iq9/best-alternatives-to-apple-notes-3ja0</guid>
      <description>&lt;p&gt;I’ve been researching replacement to Apple Notes that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Export to Markdown&lt;/strong&gt; (without plugins), including GitHub-flavored.

&lt;ul&gt;
&lt;li&gt;Seamless import into &lt;strong&gt;dev.to, GitHub Projects &amp;amp; Discussions&lt;/strong&gt;. I want to drop it in verbatim, and have to fix zero  Markdown.&lt;/li&gt;
&lt;li&gt;Would be cool if  it synced to these destinations, like &lt;a href="https://vercel.com/blog/visual-editing-meets-markdown"&gt;TinaCMS&lt;/a&gt; does.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Publishes to Web (HTML)&lt;/strong&gt;, but allows 100% &lt;strong&gt;&lt;em&gt;Anonymous&lt;/em&gt;&lt;/strong&gt; access.

&lt;ul&gt;
&lt;li&gt;Apple Notes requires a login with an Apple account.&lt;/li&gt;
&lt;li&gt;Google Docs also sometimes recipients log in.&lt;/li&gt;
&lt;li&gt;I need to send links to friends and family who don’t have a GH account.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Doesn’t get blocked by restrictive firewalls.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Google Docs** **sometimes does. I had that problem recently while job hunting. Several employers saying, “Sorry. Can’t open the Google Doc link. Can you send a PDF?”&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Doesn’t break images when published&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WebP support&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PNG&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decentralized&lt;/strong&gt; - Not tied to Evil Corp’s infra.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Muti-Plat&lt;/strong&gt; for recipients - May have to share notes with folks running Windows / Linux. But being able to publish to the Web solves that problem.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inexpensive&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MacOS native&lt;/strong&gt; - native ARM binaries. No Java. Mac-native ones are:

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://bear.app/"&gt;Bear&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.craft.do/"&gt;Craft&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.goodnotes.com/"&gt;Goodnotes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://notability.com/"&gt;Notability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.omnigroup.com/omnifocus"&gt;OmniFocus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.microsoft.com/en-us/microsoft-365/onenote/digital-note-taking-app?ms.url=onenotecom&amp;amp;rtc=1"&gt;OneNote&lt;/a&gt; - Wha? M$ one is Mac native?&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.taskade.com/"&gt;Taskade&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://culturedcode.com/things/"&gt;Things&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Standard KB Shortcuts&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Command 1 - H1&lt;/li&gt;
&lt;li&gt;Command 2 - H2&lt;/li&gt;
&lt;li&gt;Command 3 - H3&lt;/li&gt;
&lt;li&gt;Hyperlink - Command K&lt;/li&gt;
&lt;li&gt;etc&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Excellent GUI and UX&lt;/strong&gt; - designed by real designers, not programmers.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Ruled Out
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://keep.google.com/u/0/#home"&gt;Google Keep&lt;/a&gt;&lt;/strong&gt; - Can only publish via Google Docs. No Markdown.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Docs&lt;/strong&gt; - Np Markdown Export. Sometimes requires a valid Google acc for recipients, and the right permissions set.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MS OneNote&lt;/strong&gt; - No Publishing to anonymous users. No Markdown export.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MS Loop&lt;/strong&gt; - $2,000/mo for a &lt;a href="https://sourceforge.net/software/compare/ClickUp-vs-Loop-BI/"&gt;feature-crippled&lt;/a&gt; mess!? No thanks, M$. I realized it's brand new.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Natabilty&lt;/strong&gt; - iPen centric. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GoodNotes&lt;/strong&gt; - iPen centric&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Asana&lt;/strong&gt; - No Markdown. Steep learning curve. Hellish UX. Not an Agile tool. Too costly. Like Jira, can’t assign multiple users to a task.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evernote&lt;/strong&gt; - $129/yr&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monday&lt;/strong&gt; - Not a Notes app. More a PMS centered around Epics &amp;amp; Sprints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://zenkit.com/en/projects/"&gt;ZenKit&lt;/a&gt;&lt;/strong&gt; 

&lt;ul&gt;
&lt;li&gt;Pros

&lt;ul&gt;
&lt;li&gt;Low barrier to entry&lt;/li&gt;
&lt;li&gt;Slick UI&lt;/li&gt;
&lt;li&gt;Markdown&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Cons

&lt;ul&gt;
&lt;li&gt;The is 90% a PMS.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://app.standardnotes.com/"&gt;Standards Notes&lt;/a&gt;&lt;/strong&gt; 

&lt;ul&gt;
&lt;li&gt;Pros

&lt;ul&gt;
&lt;li&gt;Minimalist&lt;/li&gt;
&lt;li&gt;Security focused&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Cons

&lt;ul&gt;
&lt;li&gt;No Markdown on Free one. $90 / yr for MD. &lt;/li&gt;
&lt;li&gt;Not MacOS native&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://culturedcode.com/things/"&gt;Things&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;More Todo List than Productivity Platform&lt;/li&gt;
&lt;li&gt;$50 base price?  Yeah, no.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GoodNotes&lt;/strong&gt; - Mac native! No MD support&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notabiltiy&lt;/strong&gt; - Mac native! No MD support&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OmniFocus&lt;/strong&gt; - Mac native! No MD support&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.taskade.com/"&gt;TaskAde&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Pros

&lt;ul&gt;
&lt;li&gt;Markdown - Import Export&lt;/li&gt;
&lt;li&gt;AI powered&lt;/li&gt;
&lt;li&gt;Slick UI&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Cons

&lt;ul&gt;
&lt;li&gt;Not a lot of Export Formats&lt;/li&gt;
&lt;li&gt;No Syntax Highlighting&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Evaluated
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ClickUp
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Score: 10/10&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://clickup.com/"&gt;https://clickup.com/&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Anonymous&lt;/em&gt;&lt;/strong&gt; access to published things.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project management&lt;/strong&gt; features are more extensive than Notion.&lt;/li&gt;
&lt;li&gt;"&lt;strong&gt;&lt;a href="https://www.youtube.com/watch?v=3r0OGNy4NGg"&gt;ClickUp is the best parts of Notion and Asana&lt;/a&gt;&lt;/strong&gt;".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Markdown export&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Exported MarkDown pastes into GitHub nearly seamlessly. GH blocks external images. You have to reupload them.&lt;/li&gt;
&lt;li&gt;Imports into Dev.to seamlessly.&lt;/li&gt;
&lt;li&gt;Hosts the images at their service. Images don’t break when you paste the Markdown verbatim into Dev.to and other services that don't block External refs. Really cool feature. No other Notes app does this.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Great Syntax Highlighting&lt;/strong&gt; 

&lt;ul&gt;
&lt;li&gt;Better than Notion&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Whiteboard&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extremely rich Add-on set&lt;/strong&gt; - You can most likely find any feature in ClickUp that your meets your needs, from Task management to Time management.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vast Integration Set&lt;/strong&gt; - “For those functionalities that this feature-loaded software lacks, you will find an Integration for it. ClickUp is preferred by companies of all sizes from any industry and not just a niche audience.”

&lt;ul&gt;
&lt;li&gt;“Provides a library of functionalities for any company pertaining to any industry.”&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Great for &lt;strong&gt;solo workers&lt;/strong&gt; - “Huge fan base among &lt;strong&gt;solo&lt;/strong&gt; users for managing daily activities and not just teams.”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Views, like Boards, Lists, Gantt, Workloads, Boxes, Tables, Calendars, Activity, and Mind maps&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Custom Tags and Statuses&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Custom Permissions&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Good support&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI Designed by real Designers&lt;/strong&gt; - Feels Apple'y. Good use of space, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Thousands of Templates&lt;/strong&gt; - Better looking than Notion, and literally everything can be templated:

&lt;ul&gt;
&lt;li&gt;Checklist&lt;/li&gt;
&lt;li&gt;Subtask&lt;/li&gt;
&lt;li&gt;Task&lt;/li&gt;
&lt;li&gt;List&lt;/li&gt;
&lt;li&gt;Spaces&lt;/li&gt;
&lt;li&gt;Folder&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No PDF import&lt;/strong&gt; - Apple Notes only exports PDF (or Markdown via a non-Apple app). You have to manually copy and paste all your Notes.  It loses your Headings, text formatting (Bold, Italics) and Images, but sustained Lists and Links. I ported 167 notes in about a day and a half.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Default typeface is a little small&lt;/strong&gt; - I just Zoom it one level with &lt;code&gt;Command +&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Commercial&lt;/strong&gt; - Could be &lt;a href="https://clickup.com/privacy#:~:text=We%20will%20only%20collect%20and,you%20with%20access%20to%20ClickUp."&gt;selling your data&lt;/a&gt;. Altho, they claim to not be doing anything sketchy with it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dashboard isn't as good as Notion&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The very powerful/flexible Templating can be annoying&lt;/strong&gt; - Templates have to be their own Project. When you want to edit a Template you have to apply the Template to an active project, then change that project, then save that project as new template to override the old template.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cross-Linking between Tasks and Docs isn't as nice as Notion.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Notion
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Score: 9/10&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.notion.so/"&gt;https://www.notion.so/&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Anonymous access to published things!&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Markdown export&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Markdown export imports into GitHub fairly seamlessly, other than breaking images.&lt;/li&gt;
&lt;li&gt;Imports into Dev.to fairly seamlessly. Breaks images. &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cross-linking between Tasks and Docs is easier than is in ClickUp.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;20% of The Market Uses&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DB, Galleries, Tables, Lists, Kahban boards&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Can build almost anything with it.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dashboard better than ClickUp.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Syntax Highlighting&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Simple, 3-color style.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Templates easier to change than ClickUp&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Excellent application. I like it second best to ClickUp.&lt;/p&gt;

&lt;h4&gt;
  
  
  Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Markdown export breaks images&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Doesn’t host the images for you like ClickUp.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lackluster Syntax Highlighting&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Horrible light-gray Link color with no underline nor hover.&lt;/strong&gt; Very hard to tell what's clickable. No setting to change it, nor a plugin.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.smartkarrot.com/resources/blog/clickup-vs-notion-which-might-be-better-suited-for-your-organization/#:~:text=However%2C%20ClickUp%20has%20thousands%20of,on%20community%20support%20for%20more."&gt;Weak Collaboration features&lt;/a&gt;&lt;/strong&gt; - "ClickUp is a bit more collaborative than Notion".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weak Project Mgmnt features&lt;/strong&gt; - Missing Gantt charts with dependency visualization, Goals, OKRs, time tracking, and estimates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Slowest app in the Category&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Complicated&lt;/strong&gt; - Notion’s selling point is customizability, however this openness is also a problem. This extensive customizability makes onboarding difficult as it can be overwhelming for novice users. It's hard to establish a consistent workflow team-wide.

&lt;ul&gt;
&lt;li&gt;“Feels bloated due to the ton of functionalities that it provides, which is more than what's required, overwhelming and cluttered.”&lt;/li&gt;
&lt;li&gt;“Too many customization options which add to the overwhelming experience that this app radiates”&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cramped GUI designed by Engineers&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;“User Interface is intuitive but very complex and so has a steep learning curve that makes onboarding a nightmare”&lt;/li&gt;
&lt;li&gt;“Initial setup is incredibly challenging with high risks of messing up processes due to the complex design”&lt;/li&gt;
&lt;li&gt;“Agile capabilities but lacks the finesse of a dedicated, full-fledged agile tool like Zepel does.”&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;60+ templates included&lt;/strong&gt; - Have to rely on Community support for more.

&lt;ul&gt;
&lt;li&gt;Only Blocks and Pages (in a Databases) are templatable.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Commercial&lt;/strong&gt; - Could be &lt;a href="https://www.notion.so/Privacy-Policy-3468d120cf614d4c9014c09f6adc9091#f199ab7a9db340869743e507ccc1c50c"&gt;selling your data&lt;/a&gt;. Altho, they claim to not be doing anything sketchy with it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No whiteboard&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Bear
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Score: 9/10&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://bear.app/"&gt;https://bear.app/&lt;/a&gt; &lt;/p&gt;

&lt;h4&gt;
  
  
  Pros
&lt;/h4&gt;

&lt;p&gt;I’m already in Love. This is a developer’s dream. You write in actual Markdown, but you don’t see the Markdown while you type. It renders as beautiful WYSIWYG document. So export to Markdown-based systems is effortless. I think it stores it as Markdown. There is no conversion process.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Seamless import to dev.to and GH&lt;/strong&gt;. Just fix image links.

&lt;ul&gt;
&lt;li&gt;If check “Export Attachments”, It does export the images to a subfolder, and leaves them whatever format they were.**&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Syntax Highlighting&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;150 programming languages.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Easy on the eyes.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Themes&lt;/strong&gt; - 4 included. Pro plan gives you more. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Beautiful UI&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Beautiful Typography&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ligatures!&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mac Native!&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WebP support&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PNG&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Standard KB Shortcuts&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Command 1 - H1&lt;/li&gt;
&lt;li&gt;Command 2 - H2&lt;/li&gt;
&lt;li&gt;Command 3 - H3&lt;/li&gt;
&lt;li&gt;Command K - Hyperlink&lt;/li&gt;
&lt;li&gt;Apple Notes doesn’t support this for Headings. I have to take my hands off the KB, grab the mouse, and click an icon to make Headings.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;iCloud Sync&lt;/strong&gt; - keeps Notes in sync with other computers. Cool.&lt;/li&gt;
&lt;li&gt;online reviewer, "Feels like a combination of Evernote and Apple Notes."&lt;/li&gt;
&lt;li&gt;Ver 2 coming out soon.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Images break.&lt;/strong&gt; Gotta re-attach them upon Publishing.

&lt;ul&gt;
&lt;li&gt;Big win for ClickUp. Only one that hosts them at their service.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;No Cloud service to publish things to as HTML docs like ClickUp, Notion, and Joplin have.&lt;/li&gt;
&lt;li&gt;No Anonymous access to your Public notes. &lt;/li&gt;
&lt;li&gt;Win to Notion, Joplin, and ClickUp.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Joplin
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Score: 8/10&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://joplinapp.org/"&gt;https://joplinapp.org/&lt;/a&gt; &lt;/p&gt;

&lt;h4&gt;
  
  
  Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Public &lt;a href="https://w4lm1i5n3e.joplinusercontent.com/shares/OcYBm3KbAE0uJHLTQGEOPd"&gt;published notes&lt;/a&gt;&lt;/strong&gt;. &lt;strong&gt;No login required!&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Centered around Markdown&lt;/strong&gt; - stores its Notes in MD.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub Flavored MD&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Excellent Syntax Highlighting&lt;/strong&gt;. May be the prettiest of the lot.

&lt;ul&gt;
&lt;li&gt;The Aritim Dark theme looks very similar to my beloved “Tomorrow Night” in VSC, Terminal and Nova.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advanced Markdown&lt;/strong&gt;. Chemical Formulas, Math, Videos, PDFs Diagrams, and Audio.

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ligatures&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Images don’t break&lt;/strong&gt; when you publish to their Joplin Cloud service.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexible Syncing features not tied to EvilCorp&lt;/strong&gt;: Joplin Cloud, S3, &lt;strong&gt;WebDav&lt;/strong&gt;, NextCloud, DropBox, &lt;strong&gt;Local FS&lt;/strong&gt;, OneDrive

&lt;ul&gt;
&lt;li&gt;Really compelling! Using a local WebDav share on my MacMini, and expose it thru the Firewall. Point my MacBook at it.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CLI client&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full access to the CSS&lt;/strong&gt; it uses, to override UI look. It must be written in Electron.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugins&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kahban board&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Not free&lt;/strong&gt;. Base plan is $1.50 / mo. &lt;strong&gt;Acceptable, given those public-Hosting features it supports.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GUI is lackluster but acceptable&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No KB Shortcuts for&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Command 1 - H1&lt;/li&gt;
&lt;li&gt;Command 2 - H2&lt;/li&gt;
&lt;li&gt;Command 3 - H3&lt;/li&gt;
&lt;li&gt;But Command K - Hyperlink is there&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Development activity looks slow.&lt;/li&gt;
&lt;li&gt;Not Mac native&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Craft
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Score:&lt;/strong&gt; 10/10&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.craft.do/"&gt;https://www.craft.do/&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Pros
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mac Native&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decent Markdown&lt;/strong&gt; - Worked in GH and dev.to. But Pro version has better MD.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Public Publishing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Similar to Notion&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ascetically pleasing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Apple ecosystem centric&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Many reviews say this is their 2nd favorite to Notion.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Increble UI&lt;/strong&gt; - best of the lot.&lt;/li&gt;
&lt;li&gt;The &lt;a href="https://www.craft.me/s/rNFeOR6QD10W7l"&gt;documents it creates&lt;/a&gt; are &lt;a href="https://www.craft.me/s/NIaZIIICJNWLqz"&gt;stunning&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.craft.me/s/KFAr4KtnIoXZg9"&gt;Syntax Highlighting&lt;/a&gt; is amazing!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;YouTube Embed&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Cons
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Considering
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Mem
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://get.mem.ai/"&gt;https://get.mem.ai/&lt;/a&gt; &lt;/p&gt;

&lt;h5&gt;
  
  
  Pros
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;AI assistant. Really cool.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Obsidian
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://obsidian.md/"&gt;https://obsidian.md/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For gardener-style notetakers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;With the right plugins, you deck this thing out like ClickUp.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://noteapps.info/apps/compare?note_app=goodnotes%2Bjoplin%2Bobsidian%2Bstandard_notes&amp;amp;selected_group=import_export"&gt;https://noteapps.info/apps/compare?note_app=goodnotes%2Bjoplin%2Bobsidian%2Bstandard_notes&amp;amp;selected_group=import_export&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.smartkarrot.com/resources/blog/clickup-vs-notion-which-might-be-better-suited-for-your-organization/"&gt;https://www.smartkarrot.com/resources/blog/clickup-vs-notion-which-might-be-better-suited-for-your-organization/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>notes</category>
      <category>writing</category>
      <category>markdown</category>
      <category>documentation</category>
    </item>
    <item>
      <title>Bypass Any Paywall 💸</title>
      <dc:creator>Russ Brooks</dc:creator>
      <pubDate>Sun, 10 Sep 2023 01:16:59 +0000</pubDate>
      <link>https://dev.to/iq9/bypass-any-paywall-3281</link>
      <guid>https://dev.to/iq9/bypass-any-paywall-3281</guid>
      <description>&lt;p&gt;Use the free &lt;a href="https://chrome.google.com/webstore/detail/12ft-free/ljgfopbnjccdcbmaanglicbcbhndoofa"&gt;12ft&lt;/a&gt; Chrome ext. The huge benefit over other methods: &lt;strong&gt;&lt;em&gt;You can send anyone a link to the de-paywalled content.&lt;/em&gt;&lt;/strong&gt; Eg:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://12ft.io/proxy?q=https://medium.com/change-your-mind/doing-these-three-things-makes-you-look-like-a-jerk-1b7c5b5bedbc"&gt;https://12ft.io/proxy?q=https://medium.com/change-your-mind/doing-these-three-things-makes-you-look-like-a-jerk-1b7c5b5bedbc&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Note the &lt;code&gt;12ft.io&lt;/code&gt; domain it's hosted at. That link will survive forever. Really useful. I can't count the times I sent someone a Medium or NYT link, and they replied, "I can't see that content."&lt;/p&gt;

&lt;p&gt;"Shut off JavaScript" is a big ask for the average enduser, and Incognito mode is too. Now your links will work the first time you send to them to luddite friends and family members.&lt;/p&gt;

</description>
      <category>paywall</category>
      <category>chrome</category>
      <category>extensions</category>
    </item>
    <item>
      <title>👹🔥 How to Escape JS Framework Hell (Including React) 🔥👹</title>
      <dc:creator>Russ Brooks</dc:creator>
      <pubDate>Sat, 02 Sep 2023 02:59:25 +0000</pubDate>
      <link>https://dev.to/iq9/how-to-escape-js-framework-hell-including-react-1756</link>
      <guid>https://dev.to/iq9/how-to-escape-js-framework-hell-including-react-1756</guid>
      <description>&lt;p&gt;This &lt;a href="https://www.youtube.com/watch?v=iRo18pUs61Q"&gt;Why we should ditch React&lt;/a&gt; talk is must-watch stuff. Chris Hawkes, is a Senior Software Engineer with over 15 years of experience working for Fortune 500 companies. He has been coding on React for 5 years. He has coded on Angular, Vue.js, and all the smaller ones (jQuery). It’s a interesting chronology of JavaScript’s history.&lt;/p&gt;

&lt;h2&gt;
  
  
  Highlights
&lt;/h2&gt;

&lt;p&gt;I was so into this, I transcribed it. These are mostly his words, with mine mixed in.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Framework Hell&lt;/strong&gt; - “All the frameworks &amp;amp; libraries try to accomplish the same thing, from jQuery on.”

&lt;ul&gt;
&lt;li&gt;“Global Scope problems”&lt;/li&gt;
&lt;li&gt;“Toe-stepping from CSS rules bleeding into other elements. So we stuck &lt;code&gt;!important&lt;/code&gt;s everywhere, which is an anti-pattern. Now everything is &lt;code&gt;important&lt;/code&gt; and you’re back to the first problem again.”&lt;/li&gt;
&lt;li&gt;“DOM updates from JS sometimes bleed into other elements you didn’t expect.”&lt;/li&gt;
&lt;li&gt;“The problem compounded further when 6 different JS libraries are all doing DOM updates simultaneously. We had little control over which one ‘won’.”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;My Input&lt;/strong&gt;: All your code now coupled to that Framework or library’s code.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web Components&lt;/strong&gt; - “Solves the Global Scope (bleed) problem.” Solves the Element-idempotency problems.

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Virtual DOM&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;“JavaScript-based, in-RAM DOM layer in front of actual DOM. Queues updates until you call .render(). Performance gains. Also the Virtual DOM is smart about preventing no-op updates. It’s provides Idempotency. It won’t update elements that didn’t need to happen because the Element was already as you specified.”&lt;/li&gt;
&lt;li&gt;“React &amp;amp; Vue.js”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;My Input&lt;/strong&gt;: Hefty. Lots of code, transpilers, new tools, new workflows. Sharing state between siblings is tricky, etc.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shadow DOM&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;“Native in browsers. The browser manufactures solved these issues natively. The ShadowDOM has existed for years, but they are just exposing it to Devs so Devs have a way to do this “Component Pattern” natively.”&lt;/li&gt;
&lt;li&gt;“No longer need a JS lib like React to do your Virtual DOM.”&lt;/li&gt;
&lt;li&gt;Browser-Native Web Components&lt;/li&gt;
&lt;li&gt;My Input: Uses real DOM manipulation. There will be time before all browser manufacturers agree on specs an implement. Currently all Major ones support except legacy Edge. Latest Edge that is a Chrome instance does support it.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;“React was very successful because of Angular’s failure.”&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Angular&lt;/strong&gt; - Created by Google.

&lt;ul&gt;
&lt;li&gt;“Angular reacted to what React was doing and decided to rewrite their entirely library. Version 2.0 scrapped everything from 1.0. It wasn’t backward-compatible. They decided to use something new and young at the time, TypeScript. Devs lost their minds. They had to completely rewrite their libraries, completely relearn Angular, etc.”&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JSX / TSX&lt;/strong&gt; - Uses JS to write HTML. Has way to embed CSS using inline styling.

&lt;ul&gt;
&lt;li&gt;“This was a big problem for a lot of devs. The Golden Rule was to always separate your JS from HTML and CSS.“&lt;/li&gt;
&lt;li&gt;“All this learning had to be done.  Now we have to use all these tools to transpire everything: WebPack, Babel, etc.”&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React&lt;/strong&gt; - “Great encapsulation. No more bleeding DOM elements. Widgets are easily reusable in other systems.”

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;My Input&lt;/strong&gt;: Communicating events across sibling Elements is tricky. You have to bubble it up to a Root-level State, then Event it out to the other components using Properties.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;My Input&lt;/strong&gt;: Too complex. You don’t know which feature to use for which use case.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;My Input:&lt;/strong&gt; Not learnable thru experimentation.

&lt;ul&gt;
&lt;li&gt;You have to take a 100-hour Udemy course because it’s a:&lt;/li&gt;
&lt;li&gt;Proprietary framework with a very creative implementation.&lt;/li&gt;
&lt;li&gt;Svelte to me minutes to learn at my last job because it’s a conventional implementation. So did CoffeeScript. Producetive in days&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;My Input&lt;/strong&gt;: Not opinionated. Project structure gets very disorganized quickly, each dev doing radically different things in different parts of the codebase. You often see 3 or 4 different implementations in 1 repo. There is nothing enforcing the implementation of the dev who first  rolled it out.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flux Architecture “solved” that&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;“Facebook’s approach”&lt;/li&gt;
&lt;li&gt;“Nightmare: The architecture sucked. And it RAELLY did. I really did not like that experience.” Many developer threads out there about this problem.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redux&lt;/strong&gt; - Redux promised to be a “much easier to reason about State than Flux”.

&lt;ul&gt;
&lt;li&gt;“One centralized State Store. How did it achieve this?”&lt;/li&gt;
&lt;li&gt;“&lt;strong&gt;Synchronously&lt;/strong&gt;.”  Huge problem&lt;/li&gt;
&lt;li&gt;Problem: It breaks down if you tried to do anything with Promises. If you had an AJAX that used Promises, and you needed to update your State, you couldn’t do that. Even to this day, Redux doesn’t do that. To solve that, they brought out:&lt;/li&gt;
&lt;li&gt;ReduxFunc library. Workaround / hack. There’s also one called “ReduxSaga”, and “all this other crap”. His words.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;“&lt;strong&gt;Short-sighted React architecture gave way to all these other hacky tools&lt;/strong&gt;.”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Devs bitched&lt;/strong&gt;: “This is too much work for all these different components to work with each other. It’s too much code to write these Class-based Components.”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;“React reacted to that by creating Functional Components.”&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;“Everyone has to pump their breaks, figure out Functional Components, rethink how they’re doing Components, and rewrite everything to Functional.”&lt;/li&gt;
&lt;li&gt;“You don’t use Functional Components, you’re an asshole.”&lt;/li&gt;
&lt;li&gt;Functional were deigned to live along side (not replace) Class based, and be used in tandem depending on the use case. If you need State, use Class based. If you don’t, use Functional.

&lt;ul&gt;
&lt;li&gt;Since Functional components are not objects, you must use React hooks to manage State and lifecycle events. Hooks were not introduced into React until version 16.8, but they have effectively made Class components redundant.&lt;/li&gt;
&lt;li&gt;More cost porting the whole repo to Functional.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Svelte&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;“Instead of React’s library that you download into the browser, that has to do all sorts of internal manipulation and handling and DOM DIFFing. All this logic to determine what’s been updated so it minimizes re-updating.”&lt;/li&gt;
&lt;li&gt;“&lt;a href="https://svelte.dev/"&gt;Svelte&lt;/a&gt; comes along and says ‘We’re going to do all that work in advance. We’re going to compile all that into JS in advance.’&lt;/li&gt;
&lt;li&gt;“Smaller footprint. Easier on Client browser.”&lt;/li&gt;
&lt;li&gt;React reacts to Svelte&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React Hooks&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;“Write Func Components in a completely new way.”&lt;/li&gt;
&lt;li&gt;“Now Devs had to completely rethink and relearn the way they use React’s lifecycle.”&lt;/li&gt;
&lt;li&gt;“You don’t use React Hooks, you’re an asshole.”&lt;/li&gt;
&lt;li&gt;“More rewriting, etc.”&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;“&lt;strong&gt;The whole point, behind this video, is that maybe we should ditch React because of its shortsighted architecture.”&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;“Maybe we should stop being these herded animals following each other from one side of the field to the other. We keep going around in circles and getting nowhere.”&lt;/li&gt;
&lt;li&gt;“Ember, Glimmer, etc. All the same thing.”&lt;/li&gt;
&lt;li&gt;“We keep having to rewrite our architectures.“&lt;/li&gt;
&lt;li&gt;“Native HTML and CSS and JavaScript essentially do what most of this stuff does.”&lt;/li&gt;
&lt;li&gt;“Tons of companies out there using Redux, and they have no idea why.”&lt;/li&gt;
&lt;li&gt;“And we wonder why we have to pay Developers $140k a year.”&lt;/li&gt;
&lt;li&gt;“When we first started using React Components, they weren’t encapsulated. So we had to start using all these CSS libs that styled the Component specific to that style. Nothing’s worse than a bunch of inline styles, whether it’s in the Component or not. Granted, with React you can centralize the CSS. Even if we have tools that allows us to write CSS outside of the component, there’s all kinds of new problems to solve. When we were trying to solve the problems with the ShadowDOM 10 years ago.“&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Commenter on that YT video&lt;/strong&gt;: “Facebook never intended for React to be used as an application framework. They created React to be the "V" in their "MVC" variant called "Flux." For some reason, the developer community started using React as a stand-alone framework, which introduced the problem of defining models inside views, then using all kinds of spaghetti code to make those models accessible to other view (props drilling, context wrapper hell, etc..). Groupthink is truly fascinating.”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Another commenter, Dan Levin&lt;/strong&gt;: “Svelte is the only one so far that got it right. I started learning React recently for a job and I was pretty shocked from the amount of unintuitive convoluted code just to implement a glorified global variable. This problem that React has been trying to fix for a long time doesn't even exists in Svelte, Can you imagine? a framework that implement a global variable that whenever you change it all components update accordingly.”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Framework Hell&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THE SOLUTION TO THIS MESS!&lt;/strong&gt; Browser-native, or extremely light components.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Solution: Lit, Slim, or Vanilla-JS Components
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://lit.dev/"&gt;Lit&lt;/a&gt;&lt;/strong&gt; - Formerly:

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://polymer-library.polymer-project.org/3.0/docs/devguide/feature-overview"&gt;Polymer&lt;/a&gt; - Polymer was created by Google, and became Lit.&lt;/li&gt;
&lt;li&gt;“When Polymer first came out, it was a ‘utter piece of crap pre-1.0’. It was so large, you had to use all these Polyfills to support it. It’s much better now.”&lt;/li&gt;
&lt;li&gt;Best thing about this project: &lt;strong&gt;It’s goal is to not exists one day.&lt;/strong&gt; Eventually go away, and be replaced by the native-browser Shadow DOM. &lt;/li&gt;
&lt;li&gt;It’s a small Polyfill for the older browsers that don’t have a full Shadow DOM yet, and to abstract away differing implementations from you.&lt;/li&gt;
&lt;li&gt;It’s analogous to the old HTML5 “shim” library. Its purpose was to go away once the browsers caught up.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also similar to how we can write ES6 today, and Babel and WebPack abstract that away from us by transpiling to legacy JS. When ES6 browser support is wide enough, you can lose Babel, Vite, etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;There are better alternatives to React.&lt;/li&gt;
&lt;li&gt;We can use native-browser Web Components now!&lt;/li&gt;
&lt;li&gt;Never have to rewrite our components in the future.&lt;/li&gt;
&lt;li&gt;When they do become browser-native, think how light (in RAM) and fast they’ll be. No heaps of abstraction between your code and the Component.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Lightweight 🪶 JS Frameworks Are 😎
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://lit.dev/"&gt;Lit&lt;/a&gt;&lt;/strong&gt; libraries are awesome - formerly &lt;a href="https://en.wikipedia.org/wiki/Polymer_(library)"&gt;Polymer&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;Not immature. Polymer has been in development since 2013.&lt;/li&gt;
&lt;li&gt;Google's "Material Design" libs for widgets. I used them in my React project and liked them.&lt;/li&gt;
&lt;li&gt;Polymer is used by a number of aGoogle services and websites, including the redesigned YouTube, YouTube Gaming, the redesigned Google Earth, Google I/O websites, Google Play Music, redesign of Google Sites and Allo for web.&lt;/li&gt;
&lt;li&gt;Some non-Google cos using it: Netflix, Electronics Arts, Comcast, Nuxeo, ING, Coca-Cola, McDonald's, BBVA, IBM and General Electric. Not that “because Compony X use it” is any reason to adopt. That’s just me researching its legitimacy myself.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://preactjs.com/"&gt;Preact&lt;/a&gt;&lt;/strong&gt; - My &lt;a href="https://www.russbrooks.com/"&gt;personal site&lt;/a&gt; is built on it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://vanilla-js.com"&gt;Vanilla&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://slimjs.com"&gt;Slim&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://mithril.js.org/"&gt;Mithril&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>lit</category>
      <category>webdev</category>
    </item>
    <item>
      <title>🧑🏽‍💻 Set Up MacOS for Development Productivity</title>
      <dc:creator>Russ Brooks</dc:creator>
      <pubDate>Sun, 27 Aug 2023 16:24:52 +0000</pubDate>
      <link>https://dev.to/iq9/set-up-macos-for-development-productivity-3p22</link>
      <guid>https://dev.to/iq9/set-up-macos-for-development-productivity-3p22</guid>
      <description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=BMtG52U3cEY"&gt;https://www.youtube.com/watch?v=BMtG52U3cEY&lt;/a&gt; - Excellent Python tips on his channel. Now that I'm a Python developer again, I'm revisiting my toolset to make sure it's "New Hotness". The dev tool stack he recommends is excellent:&lt;/p&gt;

&lt;h2&gt;
  
  
  Package Mgr
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Brew &amp;amp; Git
&lt;/h3&gt;

&lt;p&gt;Obviously&lt;/p&gt;

&lt;h2&gt;
  
  
  Infrastructure as Code (IaC)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Pulimi
&lt;/h3&gt;

&lt;p&gt;Universal IaC for AWS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.pulumi.com/"&gt;https://www.pulumi.com/&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Dependency Management
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Poetry
&lt;/h3&gt;

&lt;p&gt;Python Dependency Management Made Easy&lt;/p&gt;

&lt;p&gt;&lt;a href="https://python-poetry.org/"&gt;https://python-poetry.org/&lt;/a&gt; - Poetry had me at &lt;a href="https://python-poetry.org/docs/managing-dependencies/"&gt;TOML&lt;/a&gt; a &lt;code&gt;.lock&lt;/code&gt; file, and behaving like Bundler. No having to manually manage Virtual Envs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Productivity Platforms
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Notion
&lt;/h3&gt;

&lt;p&gt;Notion is excellent. I have an article coming on the Pros and Cons of each Productivity Platform.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.notion.so/"&gt;https://www.notion.so/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ClickUp
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://clickup.com/"&gt;https://clickup.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ClickUp actual has a higher rating than Notion in &lt;a href="https://www.forbes.com/advisor/business/software/clickup-vs-notion/"&gt;this Forbes article&lt;/a&gt;. It also publishes your notes to the Web in MD format without breaking images. It uses their hosting service to store them, then your Markdown has absolute URLs in it to those images. Really innovative. I believe they are the only one that has this feature. &lt;/p&gt;

&lt;h3&gt;
  
  
  Things
&lt;/h3&gt;

&lt;p&gt;Some overlap with Notion and ClickUp, and Things has some automation tools with it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://culturedcode.com/things/"&gt;https://culturedcode.com/things/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Password Manager
&lt;/h2&gt;

&lt;h3&gt;
  
  
  BitWarden
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://bitwarden.com/"&gt;https://bitwarden.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👆 Also has Browser Plugin&lt;/p&gt;

&lt;h2&gt;
  
  
  Clipboard
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Maccy
&lt;/h3&gt;

&lt;p&gt;Better Clipboard for Mac&lt;/p&gt;

&lt;p&gt;&lt;a href="https://maccy.app/"&gt;https://maccy.app/&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ brew install maccy&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Window Management
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Rectangle
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://rectangleapp.com/"&gt;https://rectangleapp.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ brew install rectangle&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Time Logging
&lt;/h2&gt;

&lt;h3&gt;
  
  
  toggl Track
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://toggl.com/"&gt;https://toggl.com/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Terminal
&lt;/h2&gt;

&lt;h3&gt;
  
  
  iTerm2
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://iterm2.com/"&gt;https://iterm2.com/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Oh My Zsh
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Shell Swiss Army Knife
&lt;/h4&gt;

&lt;p&gt;I vouch for this. Been a fan for years.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ohmyz.sh/"&gt;https://ohmyz.sh/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Next-Gen Command Line
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Fig
&lt;/h3&gt;

&lt;p&gt;I eval'ed Fig at my last job. It was excellent. I turned my team onto it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://fig.io/"&gt;https://fig.io/&lt;/a&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Store Scripts in Cloud&lt;/li&gt;
&lt;li&gt;Awesome Autocomplete&lt;/li&gt;
&lt;li&gt;DotFile Presets&lt;/li&gt;
&lt;li&gt;Plug-in Store&lt;/li&gt;
&lt;li&gt;Themes&lt;/li&gt;
&lt;li&gt;Written in Rust 🦀&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  DevToys
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Developer Swiss Army Knife
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://devtoys.app/"&gt;https://devtoys.app/&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;It’s Microsoft PowerToys, but for Devs.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Convertors like JSON to YML, character formats, Number bases, etc.&lt;/li&gt;
&lt;li&gt;Genertors for Hashes, UUIDs, etc.&lt;/li&gt;
&lt;li&gt;URL convertors.&lt;/li&gt;
&lt;li&gt;"Loren Ipsum" generator&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/ObuchiYuki/DevToysMac"&gt;Mac Port&lt;/a&gt;! &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;$ brew instal devtoys&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Would be useful as an Extension for VSCode.&lt;/p&gt;

&lt;h2&gt;
  
  
  IDEs
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Nova
&lt;/h3&gt;

&lt;p&gt;Formerly Coda. Panic males great Mac software. I [re]adopted this full-time lately. I did use Coda for a bit prior to my 5 years of VSC use.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://nova.app/"&gt;https://nova.app/&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MacOS Native

&lt;ul&gt;
&lt;li&gt;Mac KB shortcuts are all there. VSC is missing a couple.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Beautiful UI&lt;/li&gt;
&lt;li&gt;Rich Extension community.&lt;/li&gt;
&lt;li&gt;Lightweight

&lt;ul&gt;
&lt;li&gt;Native binaries, not RAM-intensive Chrome/Electron instances.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Fast&lt;/li&gt;
&lt;li&gt;Ligatures&lt;/li&gt;
&lt;li&gt;Yes, commercial, but cheap. That's a positive for some. You know it will be supported infinitely.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  VSCode
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Extensions
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fig&lt;/strong&gt; - I can't find a "Fig" extension in Marketplace, but I did find:&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=figstack.vsc"&gt;FigStack&lt;/a&gt;&lt;/strong&gt; - He doesn’t mention it, but it looks 😎 too.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-python.python"&gt;Python&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=GitHub.copilot"&gt;GitHub Copilot&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Autocomplete and snippets&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=jebbs.markdown-extended"&gt;Markdown Extended&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=yzane.markdown-pdf"&gt;Markdown PDF&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=bierner.markdown-mermaid"&gt;Markdown Preview Mermaid&lt;/a&gt;&lt;/strong&gt; - Flowchart Support in Markdown. 😎&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=tomoki1207.pdf"&gt;vscode-pdf&lt;/a&gt;&lt;/strong&gt; - Display PDFs in VSC.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  DB Admin Tools
&lt;/h2&gt;

&lt;h3&gt;
  
  
  TablePlus
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://tableplus.com/"&gt;https://tableplus.com/&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;I couldn't be a bigger fan of this DB client.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fast, Mac native. Standard KB shortcuts all there.&lt;/li&gt;
&lt;li&gt;Supports 16 DB brands, including BigQuery, MySQL, SQL Server, MongoDB, Vertica, Oracle, PostgreSQL, Snowflake, Microsoft CockroachDB, and Redis.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Finder Settings
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Turn on Pathbar and Status Bar - from the "View" menu&lt;/li&gt;
&lt;li&gt;Customize the Toolbar

&lt;ul&gt;
&lt;li&gt;Add the "New Folder" icon&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Advanced Settings

&lt;ul&gt;
&lt;li&gt;Turn on "Search Current Folder". By default, the Mac searches the whole drive.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>python</category>
      <category>productivity</category>
      <category>tooling</category>
      <category>macos</category>
    </item>
    <item>
      <title>Deno on Fresh 1.4 Adds FTL Drives 🚀</title>
      <dc:creator>Russ Brooks</dc:creator>
      <pubDate>Wed, 23 Aug 2023 02:34:23 +0000</pubDate>
      <link>https://dev.to/iq9/deno-on-fresh-14-adds-ftl-drives-1eah</link>
      <guid>https://dev.to/iq9/deno-on-fresh-14-adds-ftl-drives-1eah</guid>
      <description>&lt;p&gt;I hereby confirm Fresh 1.4's perf-improvements are legit!&lt;/p&gt;

&lt;h2&gt;
  
  
  Fresh 1.1
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;❯ wrk &lt;span class="nt"&gt;-t12&lt;/span&gt; &lt;span class="nt"&gt;-c400&lt;/span&gt; &lt;span class="nt"&gt;-d10s&lt;/span&gt; http://www.russbrooks.com
Running 10s &lt;span class="nb"&gt;test&lt;/span&gt; @ http://www.russbrooks.com
  12 threads and 400 connections
Requests/sec:    121.80 👈
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Fresh 1.4.2
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;❯ wrk -t8 -c500 -d10s http://www.russbrooks.com
Running 10s test @ http://www.russbrooks.com
  8 threads and 500 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    27.93ms   38.66ms 514.91ms   93.96%
    Req/Sec     1.34k     0.98k    3.60k    65.40%
  105725 requests in 10.07s, 19.96MB read
  Socket errors: connect 253, read 0, write 0, timeout 0
Requests/sec:  10495.36 👈 🚀 🚀 🚀 🚀
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That jives with the &lt;a href="https://github.com/BuilderIO/framework-benchmarks"&gt;numbers here&lt;/a&gt;, where Fresh placed second-fastest framework.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lighthouse Score
&lt;/h2&gt;

&lt;p&gt;Equally incredible!&lt;/p&gt;

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

&lt;p&gt;Hosted on a &lt;strong&gt;free&lt;/strong&gt; account at &lt;a href="https://deno.com/deploy"&gt;Deno Deploy&lt;/a&gt;. Imagine what the numbers would be on Enterprise-class infra. This means we finally have Fire-and-Forget websites, because a single Node is able to handle a 10X more traffic than your Ruby/Node/Python ones. No more scrambling to scale every 8 weeks, after your team launches 1.0, having to answer pages at 3 AM because your Scripting-Language just collapsed at 500 R/s, then again at 1,000 2 mo later, then 1,500 2 mos later, then 2,000, then 2,500, etc.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Our Rust boxes never trigger PagerDuty.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;-- &lt;a href="https://steveklabnik.com/"&gt;Steve Klabnik&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm really pleased with the whole Deno experience, from toolset, to perf, to pkg mgmnt, to sensible defaults, to the TypeScript Std Lib that's bundled, to the Edge-First global deployment you get free.&lt;/p&gt;

</description>
      <category>deno</category>
      <category>rust</category>
      <category>webdev</category>
      <category>performance</category>
    </item>
    <item>
      <title>Leave Implementation Details to Implementation Time</title>
      <dc:creator>Russ Brooks</dc:creator>
      <pubDate>Wed, 21 Jun 2023 23:57:45 +0000</pubDate>
      <link>https://dev.to/iq9/leave-implementation-details-to-implementation-time-3d3c</link>
      <guid>https://dev.to/iq9/leave-implementation-details-to-implementation-time-3d3c</guid>
      <description>&lt;h2&gt;
  
  
  An Observation at Planning Meetings
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Assuming it's a mix of Engineers and non-Engineers (Product, PMs, Design, etc):&lt;/strong&gt; When Engineers get rabbit holey with implementation details trying to come to consensus on the specs, the non-techies in the room:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Eyes glaze over.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Get quiet.&lt;/strong&gt; There's obviously not much they can contribute. They're non-engineers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👆This is time they could have spent doing their actual work. Tech talk is tedious to non-technicals. Now we're just wasting their time.&lt;/p&gt;

&lt;p&gt;Then the Engineers rush to find those spots in code, live during the meeting, and try to quickly come to consensus. This 2 minutes is almost never enough time to arrive at such important details.&lt;/p&gt;

&lt;h2&gt;
  
  
  Significant Events Between Planning and Coding
&lt;/h2&gt;

&lt;p&gt;A number of important things happen between Planning meetings and us writing the code, even in a couple days:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;More public information is available now.&lt;/strong&gt; The Internet is growing at an astronomical rate.

&lt;ul&gt;
&lt;li&gt;Posts&lt;/li&gt;
&lt;li&gt;Comments&lt;/li&gt;
&lt;li&gt;Documentation&lt;/li&gt;
&lt;li&gt;Newer versions of libraries released&lt;/li&gt;
&lt;li&gt;Some libraries may have been deprecated since&lt;/li&gt;
&lt;li&gt;Best practices on how to do it right&lt;/li&gt;
&lt;li&gt;Posts on pitfalls&lt;/li&gt;
&lt;li&gt;Better alternative libraries&lt;/li&gt;
&lt;li&gt;Better alternative way of doing it&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;More Internal information&lt;/strong&gt; now exists in your Corporate Knoweledgebase.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;More lore has been exchanged between brains&lt;/strong&gt; - Verbal, Slack, etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most Engineers I know do a quick Googling to validate their assumptions, before beginning any fairly significant changeset. During that first hour of coding, you almost always find things that could never possibly have been discovered at Planning Meetings.&lt;/p&gt;

&lt;p&gt;I can't count the times I've started coding a ticket and go, "Oh, there's some new library or pattern that does that way better."&lt;/p&gt;

&lt;p&gt;Now those Implementation Details on the ticket are invalid.&lt;/p&gt;

&lt;p&gt;I've heard some devs defend this by saying, "The Planning Meeting &lt;strong&gt;&lt;em&gt;is&lt;/em&gt;&lt;/strong&gt; implementation time."&lt;/p&gt;

&lt;p&gt;Let's look at &lt;a href="https://www.techtarget.com/searchcustomerexperience/definition/implementation"&gt;the definition&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Implementation is the &lt;strong&gt;execution&lt;/strong&gt; or practice of a plan.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Otherwise known as "doing the work" (writing the code).&lt;/p&gt;

</description>
      <category>agile</category>
      <category>programming</category>
    </item>
    <item>
      <title>Framework Performance Results: Rust, Go, Node, Deno, vs Ruby</title>
      <dc:creator>Russ Brooks</dc:creator>
      <pubDate>Wed, 16 Mar 2022 00:54:45 +0000</pubDate>
      <link>https://dev.to/iq9/framework-performance-results-rust-go-node-deno-vs-ruby-489h</link>
      <guid>https://dev.to/iq9/framework-performance-results-rust-go-node-deno-vs-ruby-489h</guid>
      <description>&lt;p&gt;We have entered the age of Fire-and-Forget websites. Imagine a single process able to handle 100,000 RPS. You would never have to scale that application horizontally. No PagerDuty at 3 AM because your infra is collapsing under its own weight.&lt;/p&gt;

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

&lt;p&gt;My SpreadSheet: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.google.com/spreadsheets/d/1WiOBYR1FGnWh65IA-h_E0kcchS1y5J0CEFz5wHBHqBU/edit?usp=sharing"&gt;https://docs.google.com/spreadsheets/d/1WiOBYR1FGnWh65IA-h_E0kcchS1y5J0CEFz5wHBHqBU/edit?usp=sharing&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rust</category>
      <category>go</category>
      <category>performance</category>
      <category>ruby</category>
    </item>
    <item>
      <title>Code Splitting With Dynamic Imports</title>
      <dc:creator>Russ Brooks</dc:creator>
      <pubDate>Fri, 03 Sep 2021 23:44:04 +0000</pubDate>
      <link>https://dev.to/iq9/code-splitting-with-dynamic-imports-1700</link>
      <guid>https://dev.to/iq9/code-splitting-with-dynamic-imports-1700</guid>
      <description>&lt;h2&gt;
  
  
  Benefits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Better UX&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Breaks your JavaScript bundle into multiple modules that intelligently load only when a user uses that functionality. &lt;/li&gt;
&lt;li&gt;Loading and wait times are improved application-wide.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Hosting-Costs&lt;/strong&gt; - Lowers overall "Bytes Transferred" every month.&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  How To
&lt;/h2&gt;

&lt;p&gt;Dynamic Imports is already enabled by default in WebPack. All you need to do is make a small change to your "import" lines, and wrap the component in React's &lt;code&gt;&amp;lt;Suspense&amp;gt;&lt;/code&gt; component. Eg:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Suspense&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;SubComponent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lazy&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;mport&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./SubComponent&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;MyComponent&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Suspense&lt;/span&gt; &lt;span class="nx"&gt;fallback&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Loading&lt;/span&gt;&lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&amp;gt;}&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;SubComponent&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/Suspense&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&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;I had to comment out this line of our &lt;code&gt;tsconfig.json&lt;/code&gt; or I got an transpile error. This makes it default back to "CommonJS", which is an older JS standard, but that had no effect on our compiles. Our large React/TS application compiled fine. This is an Output setting; not an Input setting. It only changes the format of JS files that are output to the browser.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"compilerOptions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"allowSyntheticDefaultImports"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"declaration"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"emitDecoratorMetadata"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"experimentalDecorators"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"jsx"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"react"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"lib"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"es6"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"dom"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"module"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"es6"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"moduleResolution"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"node"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"sourceMap"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"strictNullChecks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"target"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"es5"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"types"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"jest"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"node"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"react"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@testing-library/jest-dom"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"esModuleInterop"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can see in CDT, this caused two additional "chunk.js" files to be created, and these files only loaded when that user clicked on that functionality - opened a modal in this case.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgcvu2mjsfoowcw09ijox.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgcvu2mjsfoowcw09ijox.png" alt="Screenshot of Chrome Dev Tools"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Have you team continue to adopt this import syntax, and gradually your JS code will be split into smartly loading modules. &lt;/p&gt;

</description>
      <category>react</category>
      <category>webpack</category>
      <category>performance</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Whisk Away Wi-Fi Woes: Mesh Network</title>
      <dc:creator>Russ Brooks</dc:creator>
      <pubDate>Sat, 09 Jan 2021 06:15:05 +0000</pubDate>
      <link>https://dev.to/iq9/whisk-away-wi-fi-woes-mesh-network-1i08</link>
      <guid>https://dev.to/iq9/whisk-away-wi-fi-woes-mesh-network-1i08</guid>
      <description>&lt;h2&gt;
  
  
  Problems
&lt;/h2&gt;

&lt;p&gt;I live in a 3-story townhouse. I have had a single Apple AirPort Extreme on the first floor for 6 years. The device has been fantastic, but there are naturally some issues due to the physics of electromagnetic waves traveling through solid objects, and having a 3-story home:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Very weak signal on 3rd floor.&lt;/strong&gt; Unable to stream HD content without “wait” cursors appearing constantly. Because of this, I haven’t been able to put Apple TV’s in the bedrooms, and I have had Ethernet running to my main desktop machines for 15 years. (My house is Ethernet wired.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weak spots on 2nd floor.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Couch with a MacBook Air:&lt;/strong&gt; Transfer Rate 150 to 200 Mb/s most of the time, compared to 800 Mb/s sitting closer to the router.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deck:&lt;/strong&gt; Also spotty coverage: dropouts, buffering, etc.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Gaming consoles (PS4 Pro and Xbox) sometimes having trouble connecting to the Cloud.&lt;/strong&gt; They throw occasional “can’t connect” errors.&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;To solve this, some might install “repeaters” or extra routers.  There are a few problems with that. You now have 3 separate wireless networks that your devices must manage. Very few devices seamlessly hop from Access Point (AP) to Access Point. Sometimes you have to manually switch your device to the other network, every time you walk to the underserved location in your home. You are also now burning undue bandwidth between your router and those endpoints - bandwidth that should be going to your personal devices. In most cases, those Access Points can only communicate directly with the Router, not with each other. (That’s an inefficient routing path.) You spent $900 to make all this happen, and you needed to hire your “I.T. buddy” to install and configure it, and you bribed him with old Comic Books (I mean “Graphic Novels”).&lt;/p&gt;

&lt;h2&gt;
  
  
  Solutions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Wi-Fi Mesh Network
&lt;/h3&gt;

&lt;p&gt;If you enlisted Geek Squad 3 years ago to “make my WiFi better”, odds are they put in some repeaters or more traditional Access Points.  With a network like that, each AP is a small, independent, unintelligent “bubble” with a highly local signal - no awareness of the other bubbles.  With a &lt;a href="https://www.linksys.com/us/r/resource-center/whole-home-mesh-wifi/" rel="noopener noreferrer"&gt;Mesh Network&lt;/a&gt;, it’s a single, giant Wi-Fi bubble that wraps your entire home.&lt;/p&gt;

&lt;p&gt;With a Mesh Network, each device is interconnected. Nodes can pass thru data to other Nodes. Signal strength is not lost, because it makes small jumps from device to device, rather than one large jump to the Router. Because of their decentralized nature, Mesh Networks scale endlessly, by adding more cheap $99 nodes, and maintain signal strength and reliability.&lt;/p&gt;

&lt;h3&gt;
  
  
  LinkSys Velop
&lt;/h3&gt;

&lt;p&gt;I got this one:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linksys.com/us/velop/" rel="noopener noreferrer"&gt;https://www.linksys.com/us/velop/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s one of two that they sell in Apple Stores, and I’ve had plenty of LinkSys gear, over the years, and trust the brand. I got the Mesh Router and 2 nodes (3-band), one for each floor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqo6peai1kvmi97v0d2vh.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqo6peai1kvmi97v0d2vh.jpeg" alt="LinkSys Wi-Fi Node"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The install could not have been easier:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Put router in the spot where my AirPort Extreme was, and connected it to the same FiOS ONT, via the same Ethernet cable.&lt;/li&gt;
&lt;li&gt;LinkSys’s mobile app guided me through the install.&lt;/li&gt;
&lt;li&gt;Plugged in 2 more nodes, and the app detected them and added them to the Mesh.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I connected various devices to the network and dog-fooded it for a few days.&lt;/p&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Wired reliability in a wireless network.&lt;/strong&gt; No drop-outs, buffering, flakiness, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dead spots:&lt;/strong&gt; gone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weak areas:&lt;/strong&gt; gone.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transmission rates consistently high.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The MacBook Air in this screenshot used to get 250 to 300 Mb/s while sitting on the 2nd-floor couch. Machines upstairs would get 100 to 200 Mb/s, and have buffering problems with video. Now, all 3 of these areas connects at 850 Mb/s, and suffer zero connectivity issues.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fixrn49qjgoiibkz9p7b4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fixrn49qjgoiibkz9p7b4.png" alt="mesh-tx-rate"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>wifi</category>
      <category>technology</category>
      <category>wireless</category>
      <category>network</category>
    </item>
    <item>
      <title>External Monitor for MacOS: Avoiding the Blurry Text Issues</title>
      <dc:creator>Russ Brooks</dc:creator>
      <pubDate>Mon, 04 Jan 2021 05:53:23 +0000</pubDate>
      <link>https://dev.to/iq9/external-monitor-for-macos-avoiding-the-blurry-text-issues-5o1</link>
      <guid>https://dev.to/iq9/external-monitor-for-macos-avoiding-the-blurry-text-issues-5o1</guid>
      <description>&lt;h2&gt;
  
  
  “Blurry Text” Problem
&lt;/h2&gt;

&lt;p&gt;Reports of the issue:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://discussions.apple.com/thread/251744830"&gt;https://discussions.apple.com/thread/251744830&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apple.stackexchange.com/questions/338834/fuzzy-fonts-in-external-monitor-dell"&gt;https://apple.stackexchange.com/questions/338834/fuzzy-fonts-in-external-monitor-dell&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://forums.macrumors.com/threads/blurry-text-on-external-monitor.2174363/"&gt;https://forums.macrumors.com/threads/blurry-text-on-external-monitor.2174363/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.chanhvuong.com/4403/fix-blurry-text-on-mac-using-external-non-apple-monitor/"&gt;https://www.chanhvuong.com/4403/fix-blurry-text-on-mac-using-external-non-apple-monitor/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@nvucuong/macos-blurry-texts-on-an-external-full-hd-monitor-d2a955c25607"&gt;https://medium.com/@nvucuong/macos-blurry-texts-on-an-external-full-hd-monitor-d2a955c25607&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://blog.leiy.me/post/mac-external-display/"&gt;This blog post has excellent advice&lt;/a&gt; on solving the clarity issues when you run a Retina-level external monitor - and you run it at lower-than-native resolutions, which is 90% of the time. Hardly anyone runs their Hi-DPI monitors in Native res. The type is too small. When you lower MacOS’s resolution down to anything below Native, now you’ve got blurred text. This is due to fractional-math problems because the external monitor is 163 PPI and your MacBook Pro is 221.&lt;/p&gt;

&lt;p&gt;The most important spec to pay attention to on these monitors is Pixels Per Inch (PPI).&lt;/p&gt;

&lt;h2&gt;
  
  
  Blurry Text Solution
&lt;/h2&gt;

&lt;p&gt;Buy a monitor with a PPI that matches your Retina MacBook or older MacBooks, but nothing in between. (The older ones were about half, at 128 PPI.)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MacBook Pro: &lt;strong&gt;221 PPI&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Old MacBooks and Airs: &lt;strong&gt;128 PPI&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Get a monitor that’s either 221 or 128 PPI (or as close as you can reasonably) - give or take 10 PPI.&lt;/p&gt;

&lt;p&gt;MacOS is has &lt;strong&gt;two&lt;/strong&gt; sets of UI widgets. It sends the Hi-Res ones to 4K+ displays, and the low-Res ones to anything under 4K. If you’re running one of these PPI’s in between 128 and 221, the OS is going to have to scale things in odd ways.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; MacOS only sends Retina assets to 4K or greater monitors. The PPI doesn’t matter. I’ve seen some confusion about this online. Folks buying a Hi-PPI monitor, but one that’s only 3K, and they’re wondering why it doesn’t have Retina assets. MacOS can only “see” the resolution (Pixel count) of the display. It can’t see its “PPI” specs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Monitor Specs
&lt;/h2&gt;

&lt;h3&gt;
  
  
  PPI
&lt;/h3&gt;

&lt;p&gt;Some PPI specs for comparison.&lt;/p&gt;

&lt;h4&gt;
  
  
  Apple Hardware
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;2012 MacBook Air - &lt;strong&gt;128 PPI&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;2020 MBP - &lt;strong&gt;226 PPI&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Apple’s $5,000 Pro Display - &lt;strong&gt;218 PPI&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  2K Monitors
&lt;/h4&gt;

&lt;p&gt;These will be sent non-Retina assets by MacOS. Note the PPI roughly matches old MacBooks and MBAs.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1080p - &lt;strong&gt;91 PPI&lt;/strong&gt; in a 24” mon 👍 - Good for Mac&lt;/li&gt;
&lt;li&gt;1080p - &lt;strong&gt;81 PPI&lt;/strong&gt; in a 27” mon 👍 - Good for Mac&lt;/li&gt;
&lt;li&gt;2560x1440 (Quad HD) - &lt;strong&gt;108 PPI&lt;/strong&gt; in a 27” mon 👍 - Good for Mac&lt;/li&gt;
&lt;li&gt;HP 27er display - &lt;strong&gt;82 PPI&lt;/strong&gt; 👍 - Good for Mac&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  4K Monitors
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;3,840 x 2,160 - &lt;strong&gt;163 PPI&lt;/strong&gt; in a 27” 👎 - Bad for Mac - PPI is at this dangerous midpoint between MacBooks and MBP.&lt;/li&gt;
&lt;li&gt;3,840 x 2,160 - &lt;strong&gt;138 PPI&lt;/strong&gt; in a 32” 👍 - Good for Mac - PPI roughly matches non-Retina Apple screens (128).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Panel Types
&lt;/h3&gt;

&lt;p&gt;For office and creative work, go with IPS. For gaming, go with TN:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;TN&lt;/strong&gt; - Most affordable. Low image quality but hi-refresh.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IPS&lt;/strong&gt; - Best overall quality. Higher input lag. For Pros doing graphics work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VA&lt;/strong&gt; - Better color and contrast than TN. Not as much as IPS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OLED&lt;/strong&gt; - Absolutely killer. Baller expensive.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Adaptive Sync is a variable-refresh technology. GSync is a brand name for one.&lt;/p&gt;

</description>
      <category>monitors</category>
    </item>
  </channel>
</rss>
