<?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: Patrick Neise</title>
    <description>The latest articles on DEV Community by Patrick Neise (@patrickneise).</description>
    <link>https://dev.to/patrickneise</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%2F102211%2F6eabd246-018d-46a7-880e-5cc2e37d0c93.png</url>
      <title>DEV Community: Patrick Neise</title>
      <link>https://dev.to/patrickneise</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/patrickneise"/>
    <language>en</language>
    <item>
      <title>Go + Hypermedia - A Learning Journey (Part 1)</title>
      <dc:creator>Patrick Neise</dc:creator>
      <pubDate>Fri, 23 Feb 2024 18:47:45 +0000</pubDate>
      <link>https://dev.to/patrickneise/go-hypermedia-a-learning-journey-part-1-3oof</link>
      <guid>https://dev.to/patrickneise/go-hypermedia-a-learning-journey-part-1-3oof</guid>
      <description>&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;This is the first post in a series where we use Go to build a full web project with a web framework, templating, HTMX, and TailwindCSS. The goal is to build something from the ground up, utilizing frameworks and packages that are both interesting and new (to me at least), and document the learning process as we go along.&lt;/p&gt;

&lt;h2&gt;
  
  
  Motivation
&lt;/h2&gt;

&lt;p&gt;I am constantly tinkering with and learning new tools, techniques, languages, etc., but primarily in private with varying levels of success/completion. To be clear, I am a 'coder', not a 'developer', but enjoy learning new tech and building things.&lt;/p&gt;

&lt;p&gt;I've been digging into &lt;a href="https://htmx.org/"&gt;HTMX&lt;/a&gt; lately (using Python web frameworks) and find the concepts and approach to be interesting and promising. The idea of hypermedia driven systems over the current practice of JavaScript based frameworks (I never really got into React, played with Vue, and enjoy Svelte/SvelteKit) and the ability to chose your language/framework for the backend while primarily leveraging HTML/CSS on the frontend just seems refreshing.&lt;/p&gt;

&lt;p&gt;With that said, I tend to do most of my 'learning' in private...private GitHub repos, no external collaboration/feedback, etc. But a recent tweet by &lt;a href="https://twitter.com/kelseyhightower"&gt;Kelsey Hightower&lt;/a&gt; motivated me to move some of that learning into public eye.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1760321330682151154-28" src="https://platform.twitter.com/embed/Tweet.html?id=1760321330682151154"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1760321330682151154-28');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1760321330682151154&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;By doing this in public, I hope to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Improve ability to communicate thought process and progress through documentation and walkthrough&lt;/li&gt;
&lt;li&gt;Drive the project through completion -&amp;gt; accountability to readers that are interested in what we are doing here&lt;/li&gt;
&lt;li&gt;Get feedback and input from readers, both on the technology/approach and how best to communicate said progress to the reader&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Outside of learning the fundamentals of the language (which won't really be covered in this series), having an actual "thing" to build helps me to maximize breadth and depth of the tech and stay motivated to keep going.&lt;/p&gt;

&lt;p&gt;I try to pick something that:&lt;/p&gt;

&lt;p&gt;1) has practical use (at least for me, even better if more broadly applicable to others)&lt;br&gt;
2) incorporates full functionality (frontend, backend, database, etc.)&lt;br&gt;
3) pushes me into unfamiliar territory (new languages, concepts, patterns, etc.)&lt;/p&gt;

&lt;h2&gt;
  
  
  The Project
&lt;/h2&gt;

&lt;p&gt;With the background and motivation out of the way, what are we going to build? I think a blogging platform hits all the points covered in the previous section while also allowing for progressive addition of new functionality as the project progresses.&lt;/p&gt;

&lt;p&gt;Initial thoughts on the major steps/milestones in the project:&lt;/p&gt;

&lt;h3&gt;
  
  
  Foundation
&lt;/h3&gt;

&lt;p&gt;Get the initial stack wired up&lt;/p&gt;

&lt;p&gt;1) &lt;strong&gt;Setting up the development environment&lt;/strong&gt; - I currently use &lt;a href="https://code.visualstudio.com/docs/devcontainers/containers"&gt;devcontainers&lt;/a&gt; for most things, but may also dig into &lt;a href="https://nixos.org/"&gt;nix&lt;/a&gt; -&amp;gt; isolated, portable, repeatable development environment&lt;br&gt;
2) &lt;strong&gt;Exploring Echo&lt;/strong&gt; - understand routing, requests, response, etc.&lt;br&gt;
3) &lt;strong&gt;Incorporate Templ&lt;/strong&gt; - integration with Echo, template composition, etc.&lt;br&gt;
4) &lt;strong&gt;Integrating TailwindCSS&lt;/strong&gt; - config for use with Echo/Templ, development cycle, deployment, etc.&lt;br&gt;
5) &lt;strong&gt;Add in HTMX&lt;/strong&gt; - endpoints, template structure, concepts, etc.&lt;br&gt;
6) &lt;strong&gt;hyperscript for interactivity&lt;/strong&gt; - client side interactivity&lt;/p&gt;

&lt;h3&gt;
  
  
  Basic Blog
&lt;/h3&gt;

&lt;p&gt;Be able to render posts written in Markdown&lt;/p&gt;

&lt;p&gt;1) &lt;strong&gt;Routes&lt;/strong&gt; - basic routes (home, about, posts, individual post, etc.)&lt;br&gt;
2) &lt;strong&gt;Templates&lt;/strong&gt; - template composition, HTMX, hyperscript, TailwindCSS, etc.&lt;br&gt;
3) &lt;strong&gt;Markdown Processing&lt;/strong&gt; - Markdown files just embedded into the app, basically just a static site builder&lt;/p&gt;

&lt;h3&gt;
  
  
  Functional Platform
&lt;/h3&gt;

&lt;p&gt;Blog post CRUD&lt;/p&gt;

&lt;p&gt;1) &lt;strong&gt;Database&lt;/strong&gt; - incorporate DB into the app, persist blog posts, etc.&lt;br&gt;
2) &lt;strong&gt;Build in Editor&lt;/strong&gt; - Markdown editor built into the platform&lt;/p&gt;

&lt;h3&gt;
  
  
  Further Out
&lt;/h3&gt;

&lt;p&gt;1) &lt;strong&gt;Authentication&lt;/strong&gt; - interested in adding &lt;a href="https://webauthn.io/"&gt;passkeys/webauthn&lt;/a&gt; as the primary authentication mechanism&lt;br&gt;
2) &lt;strong&gt;User Management&lt;/strong&gt; - owner can create/edit posts, users can comment on posts&lt;br&gt;
3) &lt;strong&gt;Comments&lt;/strong&gt; - support user post comments&lt;br&gt;
4) &lt;strong&gt;Deployment&lt;/strong&gt; - get this thing up and running in the real world (service provider selection, end to end deployment process, etc.)&lt;br&gt;
5) &lt;strong&gt;??????&lt;/strong&gt; - we'll see where things take us&lt;/p&gt;

&lt;h2&gt;
  
  
  The Stack (for now)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://go.dev"&gt;Go&lt;/a&gt; - programming language&lt;/p&gt;

&lt;p&gt;&lt;a href="https://echo.labstack.com/"&gt;Echo&lt;/a&gt; - web framework for Go&lt;/p&gt;

&lt;p&gt;&lt;a href="https://templ.guide/"&gt;Templ&lt;/a&gt; - HTML templating for Go&lt;/p&gt;

&lt;p&gt;&lt;a href="https://htmx.org/"&gt;HTMX&lt;/a&gt; - hypermedia functionality in HTML&lt;/p&gt;

&lt;p&gt;&lt;a href="https://hyperscript.org/"&gt;hyperscript&lt;/a&gt; - frontend interactivity&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tailwindcss.com/"&gt;TailwindCSS&lt;/a&gt; - utility-first CSS framework&lt;/p&gt;

&lt;h2&gt;
  
  
  Up Next
&lt;/h2&gt;

&lt;p&gt;Getting the development environment setup is the first order of business. I use Windows with WSL for most of my dev work, using VSCode with devcontainers, so you &lt;em&gt;should&lt;/em&gt; be able to use the repo on any platform with VSCode, Docker, and the VSCode remote development extension installed.&lt;/p&gt;

&lt;p&gt;We will cover getting the prerequisites installed (VSCode, Docker, extension) and setting up the devcontainer with the required tooling, extensions, etc. in hopes that you can follow along regardless of your OS of choice.&lt;/p&gt;

&lt;p&gt;If this project sounds interesting or your have any ideas/feedback along the way, please let me know in the comments. Looking forward to building and learning with you.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>htmx</category>
      <category>go</category>
      <category>learning</category>
    </item>
    <item>
      <title>Svelte &amp; Tailwind CSS Development in VSCode Remote Container</title>
      <dc:creator>Patrick Neise</dc:creator>
      <pubDate>Mon, 15 Feb 2021 20:49:40 +0000</pubDate>
      <link>https://dev.to/patrickneise/svelte-tailwind-css-development-in-vscode-remote-container-2156</link>
      <guid>https://dev.to/patrickneise/svelte-tailwind-css-development-in-vscode-remote-container-2156</guid>
      <description>&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;It's been a while since my first &lt;a href="https://dev.to/patrickneise/svelte-development-with-vscode-remote-containers-2p80"&gt;post&lt;/a&gt;, so figured I would update the Svelte Remote Container example with some new additions and changes.&lt;/p&gt;

&lt;p&gt;Features of the new VSCode devcontainer include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Svelte with Tailwind CSS starter app&lt;/li&gt;
&lt;li&gt;Tailwind CSS Debug Screens to show screen size during development&lt;/li&gt;
&lt;li&gt;Snowpack configured to optimize production build&lt;/li&gt;
&lt;li&gt;Dockerfile and nginx configuration for production build&lt;/li&gt;
&lt;li&gt;nginx config with caching and compression enabled&lt;/li&gt;
&lt;li&gt;Several VSCode extensions to support Svelte/Tailwind development&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This setup has evolved over time as I've continued to learn Svelte and now Tailwind CSS (a great combination imho) and swapped out Rollup for Snowpack.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/patrickneise" rel="noopener noreferrer"&gt;
        patrickneise
      &lt;/a&gt; / &lt;a href="https://github.com/patrickneise/svelte-snowpack-tailwind" rel="noopener noreferrer"&gt;
        svelte-snowpack-tailwind
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;Clone this repo into a folder for your project&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/patrickneise/svelte-snowpack-tailwind.git &amp;lt;your-project-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Change the origin to your project git repo&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote set-url origin &amp;lt;path-to-your-project git repo&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install dependencies&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yarn &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start the dev server&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yarn start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Build something amazing with Svelte and Tailwind CSS&lt;/p&gt;

&lt;h2&gt;
  
  
  Major Frameworks and Tools in the devcontainer
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://svelte.dev/" rel="noopener noreferrer"&gt;Svelte&lt;/a&gt; - Front end development framework&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://tailwindcss.com" rel="noopener noreferrer"&gt;Tailwind CSS&lt;/a&gt; - Utility-first CSS framework&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.snowpack.dev/" rel="noopener noreferrer"&gt;Snowpack&lt;/a&gt; - Frontend build tool&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/jorenvanhee/tailwindcss-debug-screens" rel="noopener noreferrer"&gt;Tailwind CSS Debug Screens&lt;/a&gt; - Shows the currently active screen&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  VSCode Extensions in the devcontainer
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode" rel="noopener noreferrer"&gt;Svelte&lt;/a&gt; - Syntax highlighting, code formatting, and rich intellisense for Svelte components.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss" rel="noopener noreferrer"&gt;Tailwind CSS IntelliSense&lt;/a&gt; - Intelligent Tailwind CSS tooling&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=urbantrout.refactor-css" rel="noopener noreferrer"&gt;Refactor CSS&lt;/a&gt; - Helps identify reoccuring CSS class name combinations in markup&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=heybourn.headwind" rel="noopener noreferrer"&gt;Headwind&lt;/a&gt; - Opinionated Tailwind CSS class sorter&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Future Work
&lt;/h2&gt;

&lt;p&gt;A few thoughts around what to add/update into the devcontainer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Typescript support&lt;/li&gt;
&lt;li&gt;Build out a more realistic starter app (components, pages, router, etc.)&lt;/li&gt;
&lt;li&gt;Eslint and prettier configs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Any other input/recommendations for how to make this devcontainer better would be greatly appreciated.&lt;/p&gt;

</description>
      <category>svelte</category>
      <category>tailwindcss</category>
      <category>vscode</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Svelte Development with VSCode Remote - Containers</title>
      <dc:creator>Patrick Neise</dc:creator>
      <pubDate>Fri, 27 Mar 2020 17:56:40 +0000</pubDate>
      <link>https://dev.to/patrickneise/svelte-development-with-vscode-remote-containers-2p80</link>
      <guid>https://dev.to/patrickneise/svelte-development-with-vscode-remote-containers-2p80</guid>
      <description>&lt;p&gt;As my first post here, I thought I would write about three of the favorite things I have been using/learning lately:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://code.visualstudio.com/"&gt;Visual Studio Code&lt;/a&gt; Code and the &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack"&gt;Remote Development extension&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.docker.com/products/docker-desktop"&gt;Docker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://svelte.dev/"&gt;Svelte&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The combination of VSCode and the Remote Development-Containers with Docker has really changed my workflow for web apps and python apps.&lt;/p&gt;

&lt;p&gt;And as someone still learning front end web development, I found that I really enjoy developing with Svelte over React and Vue (although I still like Vue).&lt;/p&gt;

&lt;p&gt;The repo below contains a full development environment to get up and running with Svelte in VSCode in a few simple steps without having to worry about installing anything on your local machine other that VSCode, the Remote Development extension, and Docker.&lt;/p&gt;

&lt;p&gt;After cloning the repo, you just need to open the folder as a remote container and you now have an Alpine Linux host with Node, Yarn, and Svelte ready for development.&lt;/p&gt;

&lt;p&gt;Also, no need to worry about which extensions for VSCode to install, the remote container already has ESLint, Prettier, and Svelte-VSCode extentions for VSCode installed.&lt;/p&gt;

&lt;p&gt;Please give it a try and let me know what you think.  Next up will be development container with Svelte-Sapper.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/patrickneise"&gt;
        patrickneise
      &lt;/a&gt; / &lt;a href="https://github.com/patrickneise/vscode-remote-svelte"&gt;
        vscode-remote-svelte
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Remote Docker Container for Svelte development
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


</description>
      <category>svelte</category>
      <category>vscode</category>
      <category>docker</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
