<?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: Conor Meagher</title>
    <description>The latest articles on DEV Community by Conor Meagher (@conr).</description>
    <link>https://dev.to/conr</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%2F892030%2F6c4696ee-0a4c-44a5-95ff-4658050afbe7.jpeg</url>
      <title>DEV Community: Conor Meagher</title>
      <link>https://dev.to/conr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/conr"/>
    <language>en</language>
    <item>
      <title>Announcing Discord-RSS</title>
      <dc:creator>Conor Meagher</dc:creator>
      <pubDate>Wed, 10 Jan 2024 17:00:00 +0000</pubDate>
      <link>https://dev.to/conr/announcing-discord-rss-558l</link>
      <guid>https://dev.to/conr/announcing-discord-rss-558l</guid>
      <description>&lt;p&gt;Announcing a fork of &lt;a href="https://github.com/3ventic/discord-rss"&gt;Discord-RSS&lt;/a&gt; using the latest versions of &lt;a href="https://nodejs.org"&gt;Node.js&lt;/a&gt;, &lt;a href="https://kit.svelte.dev"&gt;Svelte-Kit&lt;/a&gt; and &lt;a href="https://authjs.dev/"&gt;Auth.js&lt;/a&gt;. This unique tool will provide an innovative way to manage and share RSS feed content across Discord channels, with a focus on simplicity and speed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Unique Features #
&lt;/h3&gt;

&lt;p&gt;The new Discord-RSS bot boasts several unique features that will enhance user experience and functionality.&lt;/p&gt;

&lt;h3&gt;
  
  
  Simple Web Management UI #
&lt;/h3&gt;

&lt;p&gt;Using modern &lt;a href="https://tailwindcss.com"&gt;TailwindCSS&lt;/a&gt; to incorporates a simple web management UI. This is a significant feature as it allows non-technical users to easily manage the admin user-interface. No coding skills required. It eliminates the intimidation that often comes with managing technical platforms, making it accessible to a wider range of users.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qZ7FKDzx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/conrmahr/image/upload/q_auto%2Cf_auto%2Cw_400/conr.dev/discord-rss-web.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qZ7FKDzx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/conrmahr/image/upload/q_auto%2Cf_auto%2Cw_400/conr.dev/discord-rss-web.webp" alt="Discord RSS Feed Manager Screenshot" width="400" height="300"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Discord RSS Feed Manager Screenshot&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  User Mentions in Posts #
&lt;/h3&gt;

&lt;p&gt;This new Discord-RSS bot also brings the addition of cleaner user mentions in posts. This feature enhances the functionality by showing the ownership of posts. It also provides instant notifications to the author when their post is shared.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--noDfOIIt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/conrmahr/image/upload/q_auto%2Cf_auto%2Cw_400/conr.dev/discord-rss-webhook.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--noDfOIIt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/conrmahr/image/upload/q_auto%2Cf_auto%2Cw_400/conr.dev/discord-rss-webhook.webp" alt="Webhook Post Screenshot" width="400" height="302"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Webhook Post Screenshot&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Enhanced Logging #
&lt;/h3&gt;

&lt;p&gt;The runner outputs more robust logs that gives better observability on the bot. This better helps to troubleshoot malconfigured, timed-out, invalid, RSS feeds with fun emojis. 🎉&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SDu96Ovx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/conrmahr/image/upload/q_auto%2Cf_auto%2Cw_400/conr.dev/discord-rss-runner.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SDu96Ovx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/conrmahr/image/upload/q_auto%2Cf_auto%2Cw_400/conr.dev/discord-rss-runner.webp" alt="Runner Logging via CLI" width="400" height="210"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Runner Logging via CLI&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Post to Any Channel Webhook #
&lt;/h3&gt;

&lt;p&gt;The Node.js runner gives users the flexibility to post to any channel webhook. This is a notable improvement from most RSS integrations to Discord which limit you to just the channel or server. The webhook is only tied to a channel and is not restricted by any other factors.&lt;/p&gt;

&lt;h3&gt;
  
  
  Power of Node.js, Svelte, and Redis &lt;a href="//#power-of-node.js%2C-svelte%2C-and-redis"&gt;#&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;The bot leverages the power of three key technologies: Node.js, Svelte, and Redis.&lt;/p&gt;

&lt;p&gt;Svelte-Kit provides a host of great features out of the box. It offers &lt;em&gt;fast setup, fast development, fast builds, fast page loads, and fast navigation&lt;/em&gt;&lt;sup&gt;[1]&lt;/sup&gt;. At the same time, &lt;a href="https://learn.svelte.dev/"&gt;learn.svelte.dev&lt;/a&gt; is a great way to learn with user docs integrated with a coding playground. This makes it very easy to build and learn quickly. The coding sytax has got an old-school "HTML written on Notepad.exe" feel to it with HTML, JavaScript, and Svelte all in one file. Meanwhile, Node.js is just a trusty way to have of a script runner digesting RSS Feeds via its built-in fetch API. The combination of these two technologies results in a high-performing and efficient tool.&lt;/p&gt;

&lt;p&gt;Where do you store all the RSS feed meta? Since only an object of feeds is needed, a Redis instance is more than enough because it's a good caching layer and it has lack of complexity. Svelte-Kit can handle the rest with writable &lt;a href="https://svelte.dev/docs/svelte-store#readable"&gt;svelte/stores&lt;/a&gt; and &lt;a href="https://github.com/redis/ioredis"&gt;redis/ioredis&lt;/a&gt; for &lt;em&gt;a robust, performance-focused, and full-featured Redis client for Node.js&lt;/em&gt;&lt;sup&gt;[2]&lt;/sup&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Promoting RSS Feed Use #
&lt;/h3&gt;

&lt;p&gt;The Discord RSS is not just a tool; it is a medium to promote the use of adding &lt;a href="https://aboutfeeds.com/"&gt;RSS feeds&lt;/a&gt; for personal and professional blogs. By integrating this tool, Discord users can easily promote their latest blog posts. Adding an RSS feed to their blog ensures that their content can be easily added to Discord RSS, thereby increasing visibility and engagement.&lt;/p&gt;

&lt;h3&gt;
  
  
  Open-Sourced #
&lt;/h3&gt;

&lt;p&gt;The best feature of all is that this is available for anyone! Self-host this repo on a VM or locally and get it integrated with your own Discord server. Bug issues and features are welcomed too. Check it out:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/conrmahr/discord-rss"&gt;https://github.com/conrmahr/discord-rss&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li id="fn1"&gt;
&lt;p&gt;&lt;a href="https://kit.svelte.dev" rel="noreferrer"&gt;"SvelteKit • Web development, streamlined"&lt;/a&gt;. Retrieved January 18, 2024. ↩︎&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn2"&gt;
&lt;p&gt;&lt;a href="https://github.com/redis/ioredis" rel="noreferrer"&gt;"redis/ioredis: 🚀 A robust, performance-focused, and full-featured Redis client for Node.js."&lt;/a&gt;. Retrieved January 18, 2024. ↩︎&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>Polywork is Dead to Me</title>
      <dc:creator>Conor Meagher</dc:creator>
      <pubDate>Sun, 05 Nov 2023 17:00:00 +0000</pubDate>
      <link>https://dev.to/conr/polywork-is-dead-to-me-153j</link>
      <guid>https://dev.to/conr/polywork-is-dead-to-me-153j</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Going forward, Polywork will enable professionals to express all the things they do through a personal website builder of sorts.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After reading that blog post&lt;sup&gt;[1]&lt;/sup&gt;, I was gutted. &lt;em&gt;Yet-Another-Personal-Website-Builder (YAPWB)&lt;/em&gt; should be the name. Now that I'm removing my Polywork references throughout this website, I wanted to write this post to selfishly cope. Thanks for reading.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.producthunt.com/products/polywork"&gt;Polywork v1&lt;/a&gt; was a great place to microblog your projects, accomplishments, awards, wins, cheers, or whatever you wanted. But what made it special was the social aspect of linking others to the same items and building a network of relationships behind those items. Even without it, it was a great portfolio timeline that was live on the internet and linkable. There might have been a website that I built as a side project that didn't need to be listed on my personal site and resume, so this was a great place for it to live instead. You could always link to it later if you needed to show it for a job or for inspiration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RlMiHo81--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/conrmahr/image/upload/q_auto%2Cf_auto%2Cw_400/conr.dev/polywork-v1-post.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RlMiHo81--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/conrmahr/image/upload/q_auto%2Cf_auto%2Cw_400/conr.dev/polywork-v1-post.webp" alt="Original Polywork post layout" width="400" height="269"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Original Polywork post layout via producthunt.com&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I shilled for it. Posting it everywhere that had my personal brand attached to it. I told all my friends and colleagues to sign up and add me as a friend. I even went through the manual process of getting verified through a scheduled Zoom call when being verified actually meant something.&lt;/p&gt;

&lt;p&gt;Now I have this...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cLz2dKW9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/conrmahr/image/upload/q_auto%2Cf_auto%2Cw_400/conr.dev/polywork-v2-timeline.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cLz2dKW9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/conrmahr/image/upload/q_auto%2Cf_auto%2Cw_400/conr.dev/polywork-v2-timeline.webp" alt="New Polywork timeline" width="400" height="269"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;New Polywork timeline via producthunt.com&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That's why Polywork is dead to me. Maybe not to you, which is totally fine, and I hope it can succeed as a product because it has a great team and some pretty nice portfolio templates to use. But back to &lt;a href="https://www.linkedin.com/in/conrmahr"&gt;LinkedIn&lt;/a&gt; I go.&lt;/p&gt;

&lt;ol&gt;
&lt;li id="fn1"&gt;
&lt;p&gt;&lt;a href="https://blog.polywork.com/polywork-founder-product-update/" rel="noreferrer"&gt;"A letter from our CEO: Changes to Polywork"&lt;/a&gt;. Retrieved September 8, 2023. ↩︎&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>polywork</category>
      <category>writing</category>
    </item>
    <item>
      <title>Flow-State with Centered</title>
      <dc:creator>Conor Meagher</dc:creator>
      <pubDate>Fri, 31 Mar 2023 17:00:00 +0000</pubDate>
      <link>https://dev.to/conr/flow-state-with-centered-33ep</link>
      <guid>https://dev.to/conr/flow-state-with-centered-33ep</guid>
      <description>&lt;p&gt;&lt;a href="https://twitter.com/centered_app/status/1643240753441947648"&gt;https://twitter.com/centered_app/status/1643240753441947648&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Working in a world where your attention span is prime real-estate for push notifications from social media, email, text messages, and instant messaging apps, you need a way to block it all out and stay on task. Ok, let me use the macOS "Focus" setting for notifications. Ahhh, here we go, no more distractions, and time to get work done.&lt;/p&gt;

&lt;p&gt;It's 30 minutes later, and I've spent the whole time doing a deep dive on &lt;a href="https://www.youtube.com/watch?v=Ydpli6HztQo&amp;amp;list=PL5_4AmnEn4uuDsU5YDajVQVFRIVJfPM80"&gt;The Best of Chris Farley via YouTube&lt;/a&gt;. It's like I need something to keep me on-task. A voice... a reminder... a coach.&lt;/p&gt;

&lt;p&gt;"Ready to dive in? Let's get flowin'." - &lt;a href="https://centered.app/g/freakin-nerds?from=p3y2qZFuzmV0vhUUkRLRJP8yExC2"&gt;Cassidy Williams&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you, Cassidy. My colleague and friend, but also my coach, who recommended &lt;a href="https://centered.app"&gt;Centered.app&lt;/a&gt; to me to solve this very problem that we face when working on a computer all day. If I do well, there are encouraging messages to keep me going. If I get off-track and start checking Twitter or email, I get &lt;del&gt;yelled at&lt;/del&gt; , I mean, nudged to come back to my task. That's the core of what I need it to do for me, but it can do so much more. Here are some of the many features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A coach of your choice to encourage you&lt;/li&gt;
&lt;li&gt;Pomodoro technique for time management&lt;/li&gt;
&lt;li&gt;An integrated todo list&lt;/li&gt;
&lt;li&gt;A variety of music choices&lt;/li&gt;
&lt;li&gt;Muted notifications&lt;/li&gt;
&lt;li&gt;Nudges when you get distracted&lt;/li&gt;
&lt;li&gt;Breathing exercises&lt;/li&gt;
&lt;li&gt;A leaderboard&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--x7gP-2aF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/conrmahr/image/upload/q_auto%2Cf_auto%2Cw_400/conormeagher.com/macos-centered-app.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--x7gP-2aF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/conrmahr/image/upload/q_auto%2Cf_auto%2Cw_400/conormeagher.com/macos-centered-app.webp" alt="Dashboard of Centered App on macOS" width="400" height="251"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Dashboard of Centered App on macOS&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I don't shill for much but why not give it a try? &lt;a href="https://centered.app/g/freakin-nerds?from=p3y2qZFuzmV0vhUUkRLRJP8yExC2"&gt;Join me today and get a 14-day free trial of Centered PRO!&lt;/a&gt;&lt;/p&gt;

</description>
      <category>centeredapp</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Sync Obsidian with iCloud</title>
      <dc:creator>Conor Meagher</dc:creator>
      <pubDate>Tue, 28 Feb 2023 17:00:00 +0000</pubDate>
      <link>https://dev.to/conr/sync-obsidian-with-icloud-27lg</link>
      <guid>https://dev.to/conr/sync-obsidian-with-icloud-27lg</guid>
      <description>&lt;p&gt;&lt;a href="https://twitter.com/bencodezen/status/1458484105331585028" rel="noopener noreferrer"&gt;https://twitter.com/bencodezen/status/1458484105331585028&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Being a Obsidian Power-User, I always wanted to update my notes from any of my devices from the beginning but didn't have a great use case to host my notes with the paid version of &lt;a href="https://obsidian.md/sync" rel="noopener noreferrer"&gt;Obsidian Sync&lt;/a&gt;. iCloud Drive would be the best option and it's free! These steps are not the only way to sync with iCloud but I found this order easiest way to setup.&lt;/p&gt;

&lt;h3&gt;
  
  
  Requirements #
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://obsidian.md/download" rel="noopener noreferrer"&gt;Obsidian for macOS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apps.apple.com/us/app/obsidian-connected-notes/id1557175442" rel="noopener noreferrer"&gt;Obsidian for iOS or iPadOS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://appleid.apple.com/" rel="noopener noreferrer"&gt;Apple ID account&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Setup #
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Setup and enable iCloud Drive on all devices you want to sync.&lt;sup&gt;[1]&lt;/sup&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open the Obsidian iOS or iPadOS app and select "Create new vault".&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Type a vault name and check "Store in iCloud" then tap "Create".&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fconrmahr%2Fimage%2Fupload%2Fq_auto%2Cf_auto%2Cw_400%2Fconormeagher.com%2Fios-store-in-icloud.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fconrmahr%2Fimage%2Fupload%2Fq_auto%2Cf_auto%2Cw_400%2Fconormeagher.com%2Fios-store-in-icloud.webp" alt="iOS Obsidian - Store in iCloud" width="800" height="400"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;iOS Obsidian - Store in iCloud&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Move to your macOS device and open the Obsidian app.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open the newly create vault with File &amp;gt; Open Vault...&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Browse to iCloud Drive &amp;gt; Obsidian &amp;gt; &lt;code&gt;vault name&lt;/code&gt; and click "Open".&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a new note for testing with File &amp;gt; New Note&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fconrmahr%2Fimage%2Fupload%2Fq_auto%2Cf_auto%2Cw_400%2Fconormeagher.com%2Fmacos-hello-world.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fconrmahr%2Fimage%2Fupload%2Fq_auto%2Cf_auto%2Cw_400%2Fconormeagher.com%2Fmacos-hello-world.webp" alt="macOS Obisidan - Hello World" width="800" height="400"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;macOS Obisidan - Hello World&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Return to your Obsidian app on iOS and see if your file synced.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fconrmahr%2Fimage%2Fupload%2Fq_auto%2Cf_auto%2Cw_400%2Fconormeagher.com%2Fios-hello-world.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fconrmahr%2Fimage%2Fupload%2Fq_auto%2Cf_auto%2Cw_400%2Fconormeagher.com%2Fios-hello-world.webp" alt="iOS Obsidian - Hello World" width="800" height="400"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;iOS Obsidian - Hello World&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Success!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Existing Obsidian Users: Copy all your previous vault files and directory structure to this iCloud folder&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;*Note: You can also download &lt;a href="https://support.apple.com/en-us/HT204283" rel="noopener noreferrer"&gt;iCloud Drive for Windows&lt;/a&gt; and keep your Obsidian vault insync on a Windows device.&lt;/p&gt;

&lt;p&gt;I've got one vault synced across, macOS, iOS, iPadOS, and Windows 11 devices.&lt;/p&gt;

&lt;ol&gt;
&lt;li id="fn1"&gt;
&lt;p&gt;&lt;a href="https://support.apple.com/en-us/HT204025" rel="noreferrer noopener"&gt;"Set up iCloud Drive"&lt;/a&gt;. Retrieved November 3, 2022. ↩︎&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>obsidian</category>
      <category>icloud</category>
      <category>backup</category>
      <category>productivity</category>
    </item>
    <item>
      <title>2022 Spotify Wrapped</title>
      <dc:creator>Conor Meagher</dc:creator>
      <pubDate>Sat, 31 Dec 2022 12:00:00 +0000</pubDate>
      <link>https://dev.to/conr/2022-spotify-wrapped-47gh</link>
      <guid>https://dev.to/conr/2022-spotify-wrapped-47gh</guid>
      <description>&lt;p&gt;Wow, 2022 is ending in a couple of hours. What a great year of growth and productivity. One thing that helped with that was switching from Apple Music to Spotify. The interface, music library, and shareability are top-notch. I frequently binged on my &lt;a href="https://open.spotify.com/playlist/1PYjhP7IagKgGMaQVxvYiF?si=0091ec72aa14420d" rel="noopener noreferrer"&gt;144 BPM playlist&lt;/a&gt; to keep my JavaScript or newly learned TypeScript code fresh and flowing. &lt;a href="https://open.spotify.com/playlist/7mncNgMcNKRMh3I2N5Lu6g?si=9f988332e9fa44de" rel="noopener noreferrer"&gt;80's Cheese&lt;/a&gt; was a fun way to re-live my childhood during a weird decade while coding in a modern era. The best part is that this is my first year to open my &lt;a href="https://www.newsroom.spotify.com/2022-wrapped/" rel="noopener noreferrer"&gt;Spotify Wrapped&lt;/a&gt; present. Yay!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fconrmahr%2Fimage%2Fupload%2Fq_auto%2Cf_auto%2Cw_400%2Fconormeagher.com%2F2022-spotify-wrapped.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fconrmahr%2Fimage%2Fupload%2Fq_auto%2Cf_auto%2Cw_400%2Fconormeagher.com%2F2022-spotify-wrapped.webp" alt="My Spotify Wrapped Lists" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>spotify</category>
      <category>codemusic</category>
    </item>
    <item>
      <title>RSS Feed in a 11ty site</title>
      <dc:creator>Conor Meagher</dc:creator>
      <pubDate>Thu, 14 Jul 2022 15:00:00 +0000</pubDate>
      <link>https://dev.to/conr/rss-feed-in-a-11ty-site-3ilc</link>
      <guid>https://dev.to/conr/rss-feed-in-a-11ty-site-3ilc</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CHXVqRxM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kzpbah0eh31xl2gafpq8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CHXVqRxM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kzpbah0eh31xl2gafpq8.png" alt="RSS Logo" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/conrmahr/status/1479151678637187079(https://twitter.com/davatron5000/status/1308404187299012616?s=20&amp;amp;t=e4vdBOpt8sEjbCJp21Qz7A)"&gt;https://twitter.com/conrmahr/status/1479151678637187079(https://twitter.com/davatron5000/status/1308404187299012616?s=20&amp;amp;t=e4vdBOpt8sEjbCJp21Qz7A)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://daverupert.com/"&gt;Dave Rupert&lt;/a&gt; is right. Really Simple Syndication or &lt;a href="https://en.wikipedia.org/wiki/RSS"&gt;RSS&lt;/a&gt; is a great way for people to digest their favorite blog articles with a RSS reader of their choice not be bombarded with ads, click-bait, and spam. So why not do your readers a favor and add it to your 11ty blog?&lt;/p&gt;

&lt;h3&gt;
  
  
  Install package &lt;a href="https://conormeagher.com/posts/2022/07/rss-for-11ty/#install-package"&gt;#&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Start in your 11ty project folder and install this package.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install @11ty/eleventy-plugin-rss --save-dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Include in your 11ty configuration &lt;a href="https://conormeagher.com/posts/2022/07/rss-for-11ty/#include-in-your-11ty-configuration"&gt;#&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;In the &lt;code&gt;.eleventy.js&lt;/code&gt; file, require the plugin and include it in the &lt;code&gt;module.exports&lt;/code&gt; function with any other plugins you may have.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const pluginRss = require("@11ty/eleventy-plugin-rss");
  module.exports = function(eleventyConfig) { eleventyConfig.addPlugin(pluginRss);
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Add to feed metadata &lt;a href="https://conormeagher.com/posts/2022/07/rss-for-11ty/#add-to-feed-metadata"&gt;#&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;In the &lt;code&gt;_data/metadata.json&lt;/code&gt; file, add the unique metadata for the feed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "feed": {
     "subtitle": "Tech posts to educate, elevate, but mostly entertain.",
     "filename": "feed.xml",
     "path": "/feed/feed.xml", 
     "url": "https://conormeagher.com/feed/feed.xml",
     "id": "https://conormeagher.com/"
  },
},
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Create a RSS feed &lt;a href="https://conormeagher.com/posts/2022/07/rss-for-11ty/#create-a-rss-feed"&gt;#&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;From your top-level of your 11ty project folder, create this template file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;touch src/feed.xml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Atom has several advantages over RSS: less restrictive licensing, IANA-registered MIME type, XML namespace, URI support, RELAX NG support. &lt;sup&gt;&lt;a href="https://conormeagher.com/posts/2022/07/rss-for-11ty/#fn1" id="fnref1"&gt;[1]&lt;/a&gt;&lt;/sup&gt; Knowing this, we will copy and paste the Atom format to produce our feed template. Other formats are available such as RSS and JSON. &lt;sup&gt;&lt;a href="https://conormeagher.com/posts/2022/07/rss-for-11ty/#fn2" id="fnref2"&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;---
# Metadata comes from _data/metadata.jsonpermalink: "{{ metadata.feed.path }}"eleventyExcludeFromCollections: true
---
&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&amp;lt;feed xmlns="http://www.w3.org/2005/Atom"&amp;gt;
&amp;lt;title&amp;gt;{{ metadata.title }}&amp;lt;/title&amp;gt;
&amp;lt;subtitle&amp;gt;{{ metadata.feed.subtitle }}&amp;lt;/subtitle&amp;gt;
&amp;lt;link href="{{ metadata.feed.url }}" rel="self"/&amp;gt; &amp;lt;link href="{{ metadata.url }}"/&amp;gt;
&amp;lt;updated&amp;gt;{{ collections.posts | getNewestCollectionItemDate | dateToRfc3339 }}&amp;lt;/updated&amp;gt;
&amp;lt;id&amp;gt;{{ metadata.url }}&amp;lt;/id&amp;gt;
&amp;lt;author&amp;gt;
  &amp;lt;name&amp;gt;{{ metadata.author.name }}&amp;lt;/name&amp;gt;
  &amp;lt;email&amp;gt;{{ metadata.author.email }}&amp;lt;/email&amp;gt;
&amp;lt;/author&amp;gt;
{%- for post in collections.posts | reverse %}
{% set absolutePostUrl %}{{ post.url | url | absoluteUrl(metadata.url) }}{% endset %}
&amp;lt;entry&amp;gt;
  &amp;lt;title&amp;gt;{{ post.data.title }}&amp;lt;/title&amp;gt;
  &amp;lt;link href="{{ absolutePostUrl }}"/&amp;gt;
  &amp;lt;updated&amp;gt;{{ post.date | dateToRfc3339 }}&amp;lt;/updated&amp;gt;
  &amp;lt;id&amp;gt;{{ absolutePostUrl }}&amp;lt;/id&amp;gt;
  &amp;lt;content type="html"&amp;gt;{{ post.templateContent | htmlToAbsoluteUrls(absolutePostUrl) }}&amp;lt;/content&amp;gt;
&amp;lt;/entry&amp;gt;
{%- endfor %}
&amp;lt;/feed&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; This code assumes you save your date frontmatter in UTC format, not your local timezone.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;---
date: 2022-01-01T00:00:00Z
---
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. You now have a Atom v1.0 feed on your 11ty website when you serve or build the project.&lt;/p&gt;

&lt;p&gt;Check out mine and subscribe!&lt;br&gt;&lt;br&gt;
&lt;a href="https://conormeagher.com/feed/"&gt;https://conormeagher.com/feed/&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li id="fn1"&gt;
&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/RSS#RSS_compared_with_Atom" rel="noreferrer"&gt;"RSS compared with Atom"&lt;/a&gt;. Retrieved June 14, 2022 &lt;a href="https://conormeagher.com/posts/2022/07/rss-for-11ty/#fnref1"&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn2"&gt;
&lt;p&gt;&lt;a href="https://www.11ty.dev/docs/plugins/rss/#sample-feed-templates" rel="noreferrer"&gt;"Sample Feed Templates"&lt;/a&gt;. Retrieved July 12, 2022 &lt;a href="https://conormeagher.com/posts/2022/07/rss-for-11ty/#fnref2"&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>11ty</category>
      <category>rss</category>
      <category>xml</category>
    </item>
    <item>
      <title>Goodbye WordPress, Hello 11ty!</title>
      <dc:creator>Conor Meagher</dc:creator>
      <pubDate>Thu, 06 Jan 2022 23:00:00 +0000</pubDate>
      <link>https://dev.to/conr/goodbye-wordpress-hello-11ty-40ge</link>
      <guid>https://dev.to/conr/goodbye-wordpress-hello-11ty-40ge</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hYsOJe0u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l2uu3oheblvb0rum5ms9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hYsOJe0u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l2uu3oheblvb0rum5ms9.png" alt="Image description" width="880" height="460"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--iMQst4f0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1395459314467418120/LefippHy_normal.jpg" alt="conor meagher 💉💉💉 profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        conor meagher 💉💉💉
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @conrmahr
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ir1kO05j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      this is &lt;a href="https://twitter.com/hashtag/jamstack"&gt;#jamstack&lt;/a&gt;. &lt;a href="https://t.co/oQAEHx2ubX"&gt;conormeagher.com&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/11ty"&gt;#11ty&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/tailwindcss"&gt;#tailwindcss&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/netlify"&gt;#netlify&lt;/a&gt; ht &lt;a href="https://twitter.com/ximenavf92"&gt;@ximenavf92&lt;/a&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      18:03 PM - 06 Jan 2022
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1479151678637187079" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fFnoeFxk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-reply-action-238fe0a37991706a6880ed13941c3efd6b371e4aefe288fe8e0db85250708bc4.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1479151678637187079" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k6dcrOn8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-retweet-action-632c83532a4e7de573c5c08dbb090ee18b348b13e2793175fea914827bc42046.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/like?tweet_id=1479151678637187079" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SRQc9lOp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-like-action-1ea89f4b87c7d37465b0eb78d51fcb7fe6c03a089805d7ea014ba71365be5171.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


&lt;h3&gt;
  
  
  Past &lt;a href="https://conormeagher.com/posts/2022/01/goodbye-wordpress-hello-11ty/#past"&gt;#&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;I have been using WordPress (WP) since 2010. Back then there wasn't a lot of open-source software (OSS) choices for hosting your own website with a blog. The thought of having a live website 24/7 that could be edited with a web browser and access to internet was what intrigued me.&lt;/p&gt;

&lt;h3&gt;
  
  
  Present &lt;a href="https://conormeagher.com/posts/2022/01/goodbye-wordpress-hello-11ty/#present"&gt;#&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;The Monolithic architecture of WP made it so massive and bulky for a simple blog site with a single-user, it was hard to get away from it until now.&lt;/p&gt;

&lt;p&gt;Say hello to the &lt;a href="https://jamstack.org/"&gt;Jamstack&lt;/a&gt; architecture generated by a static site generator, &lt;a href="https://11ty.dev/"&gt;Eleventy&lt;/a&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;J&lt;/strong&gt; avaScript&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A&lt;/strong&gt; PIs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;M&lt;/strong&gt; arkup&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Jamstack architecture has many benefits, whether you’re building a large e-commerce site, SaaS application or personal blog.&lt;/p&gt;

&lt;h4&gt;
  
  
  Better Performance &lt;a href="https://conormeagher.com/posts/2022/01/goodbye-wordpress-hello-11ty/#better-performance"&gt;#&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Why wait for pages to build on the fly when you can generate them at deploy time? When it comes to minimizing the time to first byte, nothing beats pre-built files served over a CDN.&lt;/p&gt;

&lt;h4&gt;
  
  
  Higher Security &lt;a href="https://conormeagher.com/posts/2022/01/goodbye-wordpress-hello-11ty/#higher-security"&gt;#&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;With server-side processes abstracted into microservice APIs, surface areas for attacks are reduced. You can also leverage the domain expertise of specialist third-party services.&lt;/p&gt;

&lt;h4&gt;
  
  
  Cheaper, Easier Scaling &lt;a href="https://conormeagher.com/posts/2022/01/goodbye-wordpress-hello-11ty/#cheaper%2C-easier-scaling"&gt;#&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;When your deployment amounts to a stack of files that can be served anywhere, scaling is a matter of serving those files in more places. CDNs are perfect for this, and often include scaling in all of their plans.&lt;/p&gt;

&lt;h4&gt;
  
  
  Better Developer Experience &lt;a href="https://conormeagher.com/posts/2022/01/goodbye-wordpress-hello-11ty/#better-developer-experience"&gt;#&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Loose coupling and separation of controls allow for more targeted development and debugging, and the expanding selection of CMS options for site generators remove the need to maintain a separate stack for content and marketing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jtcdNqoL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/conrmahr/image/upload/q_auto%2Cf_auto%2Cw_400/conormeagher.com/jamstack-architecture.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jtcdNqoL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/conrmahr/image/upload/q_auto%2Cf_auto%2Cw_400/conormeagher.com/jamstack-architecture.webp" alt="Jamstack architecture diagram, Bidirectional arrows between Client and CDN, Client and Microservices" width="400" height="308"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Jamstack architecture diagam via jamstack.org&lt;/em&gt;&lt;/p&gt;

</description>
      <category>11ty</category>
      <category>tailwindcss</category>
      <category>netlify</category>
    </item>
  </channel>
</rss>
