<?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: bronifty</title>
    <description>The latest articles on DEV Community by bronifty (@bronifty).</description>
    <link>https://dev.to/bronifty</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%2F699562%2Fb6bc9819-82d0-4399-9042-4de502f398fa.png</url>
      <title>DEV Community: bronifty</title>
      <link>https://dev.to/bronifty</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bronifty"/>
    <language>en</language>
    <item>
      <title>Deno Deploy Static Site</title>
      <dc:creator>bronifty</dc:creator>
      <pubDate>Thu, 15 Jun 2023 16:26:13 +0000</pubDate>
      <link>https://dev.to/bronifty/deno-deploy-static-site-3lkp</link>
      <guid>https://dev.to/bronifty/deno-deploy-static-site-3lkp</guid>
      <description>&lt;p&gt;&lt;a href="https://youtu.be/qFJHedbTwOI"&gt;youtube video tutorial&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Use deployctl and Github Actions with a deploytcl task to deploy static sites to Deno Deploy&lt;/p&gt;

&lt;p&gt;&lt;a href="https://deno.com/deploy/docs/static-site"&gt;deploy static html site&lt;/a&gt;&lt;br&gt;
&lt;a href="https://deno.com/deploy/docs/vite"&gt;deploy vite&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create the static site content (either html etc or run the vite and then build, move into dist dir)&lt;/li&gt;
&lt;li&gt;run the deployctl script using http file server

&lt;ul&gt;
&lt;li&gt;You'll need the access token to run the deployctl from your command line &lt;/li&gt;
&lt;li&gt;when add the repo in settings with github action in a subsequent step and 'link' the repo to your account, you won't need the access token to deploy
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;DENO_DEPLOY_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;abcdefg
&lt;span class="nb"&gt;cd &lt;/span&gt;dist
deployctl deploy &lt;span class="nt"&gt;--project&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;careful-goat-90 https://deno.land/std@0.171.0/http/file_server.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Make sure you can get a deployment with that. Then we'll link the project to your github and use github action
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deno run &lt;span class="nt"&gt;--allow-read&lt;/span&gt; &lt;span class="nt"&gt;--allow-write&lt;/span&gt; &lt;span class="nt"&gt;--allow-env&lt;/span&gt; npm:create-vite-extra@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;the github action&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;name: Deploy

on: push

&lt;span class="nb"&gt;jobs&lt;/span&gt;:
  deploy:
    runs-on: ubuntu-latest

    permissions:
      id-token: write &lt;span class="c"&gt;# This is required to allow the GitHub Action to authenticate with Deno Deploy.&lt;/span&gt;
      contents: &lt;span class="nb"&gt;read

    &lt;/span&gt;steps:
      - name: Clone repository
        uses: actions/checkout@v3

      - name: Install Deno
        uses: denoland/setup-deno@v1

      - name: Build
        run: deno task build

      - name: Deploy to Deno Deploy
        uses: denoland/deployctl@v1
        with:
          project: late-duck-63 &lt;span class="c"&gt;# the name of the project on Deno Deploy&lt;/span&gt;
          entrypoint: https://deno.land/std/http/file_server.ts
          root: dist
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>React-Server-Components-From-Scratch</title>
      <dc:creator>bronifty</dc:creator>
      <pubDate>Thu, 08 Jun 2023 11:08:17 +0000</pubDate>
      <link>https://dev.to/bronifty/react-server-components-from-scratch-39ac</link>
      <guid>https://dev.to/bronifty/react-server-components-from-scratch-39ac</guid>
      <description>&lt;p&gt;&lt;a href="https://codesandbox.io/p/github/bronifty/reactwg-rsc-from-scratch/main?layout=%257B%2522sidebarPanel%2522%253A%2522EXPLORER%2522%252C%2522rootPanelGroup%2522%253A%257B%2522direction%2522%253A%2522horizontal%2522%252C%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522id%2522%253A%2522ROOT_LAYOUT%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522direction%2522%253A%2522horizontal%2522%252C%2522id%2522%253A%2522EDITOR%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522panelType%2522%253A%2522TABS%2522%252C%2522id%2522%253A%2522cligmnb0o000b3b6r8uinxhbz%2522%257D%255D%252C%2522sizes%2522%253A%255B100%255D%257D%252C%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522direction%2522%253A%2522horizontal%2522%252C%2522id%2522%253A%2522DEVTOOLS%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522panelType%2522%253A%2522TABS%2522%252C%2522id%2522%253A%2522cligmnb0o000d3b6rlf0r29jr%2522%257D%255D%252C%2522sizes%2522%253A%255B100%255D%257D%255D%252C%2522sizes%2522%253A%255B22.186684116987323%252C77.81331588301268%255D%257D%252C%2522tabbedPanels%2522%253A%257B%2522cligmnb0o000b3b6r8uinxhbz%2522%253A%257B%2522id%2522%253A%2522cligmnb0o000b3b6r8uinxhbz%2522%252C%2522tabs%2522%253A%255B%255D%257D%252C%2522cligmnb0o000d3b6rlf0r29jr%2522%253A%257B%2522id%2522%253A%2522cligmnb0o000d3b6rlf0r29jr%2522%252C%2522activeTabId%2522%253A%2522clin0wskz025l3b6rczqk0uy1%2522%252C%2522tabs%2522%253A%255B%257B%2522id%2522%253A%2522clin0wskz025l3b6rczqk0uy1%2522%252C%2522mode%2522%253A%2522permanent%2522%252C%2522type%2522%253A%2522TASK_PORT%2522%252C%2522port%2522%253A8080%252C%2522taskId%2522%253A%2522start%253Assr%2522%252C%2522path%2522%253A%2522%252F%2522%257D%252C%257B%2522type%2522%253A%2522UNASSIGNED_PORT%2522%252C%2522port%2522%253A8081%252C%2522id%2522%253A%2522clin0wtym02913b6rekw6x0xu%2522%252C%2522mode%2522%253A%2522permanent%2522%252C%2522path%2522%253A%2522%2522%257D%255D%257D%257D%252C%2522showDevtools%2522%253Atrue%252C%2522showSidebar%2522%253Atrue%252C%2522sidebarPanelSize%2522%253A15%257D"&gt;codsandbox link&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; takes a minute to load; make sure it's using node 18; web page runs on 8080; yarn or npm start&lt;/li&gt;
&lt;li&gt;codesandbox refreshes and acts weird especially with the browser history (back and fwd buttons) so you won't get a high fidelity experience with it; if you run it locally it is much better&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://github.com/bronifty/reactwg-rsc-from-scratch"&gt;github repo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/Gj5LL0ckdks"&gt;youtube tutorial&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>rsc</category>
      <category>node</category>
      <category>danabramov</category>
    </item>
    <item>
      <title>Add TLS/SSL to Your VPS With Let's Encrypt or Caddy Server (Portainer Edition)</title>
      <dc:creator>bronifty</dc:creator>
      <pubDate>Sun, 19 Feb 2023 11:00:57 +0000</pubDate>
      <link>https://dev.to/bronifty/add-tlsssl-to-your-vps-with-lets-encrypt-or-caddy-server-portainer-edition-23dm</link>
      <guid>https://dev.to/bronifty/add-tlsssl-to-your-vps-with-lets-encrypt-or-caddy-server-portainer-edition-23dm</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Q-i6dUiW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x1ghybuw6sd2kfvtjzpy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q-i6dUiW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x1ghybuw6sd2kfvtjzpy.png" alt="Image description" width="880" height="547"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=6IwhFQ-ir6E"&gt;youtube for this post&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is supplemental material for Rawkode's Portainer series, which shows the steps for initializing your environment with the VPS and DNS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=VrtBN5pQMo4&amp;amp;list=PLz0t90fOInA7aRYTguuowv6qrNsMB-zxM"&gt;rawkode playlist&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/bronifty/portainer-in-production.git"&gt;github&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  TLS
&lt;/h3&gt;

&lt;p&gt;1) launch ubuntu vm with access to ports 22 80 443 (aws &amp;amp; gcp)&lt;br&gt;
2) map ip address to domain in cloudflare&lt;br&gt;
3) install deps (snap certbot docker)&lt;/p&gt;

&lt;h5&gt;
  
  
  Certbot Method
&lt;/h5&gt;

&lt;p&gt;1) install certbot, symbollically link it to path and run the standalone server&lt;br&gt;
2) run portainer with the volumes mapped to the cert and key&lt;/p&gt;

&lt;h5&gt;
  
  
  Caddy Method
&lt;/h5&gt;

&lt;p&gt;1) update Caddyfile email and hostname&lt;br&gt;
2) remove existing portainer docker container&lt;br&gt;
3) run portainer without the mapping on 8000 and 9443&lt;br&gt;
4) run caddy to reverse proxy from 80 and 443 to portainer on 9443&lt;/p&gt;

&lt;h3&gt;
  
  
  Install Portainer on a VPS
&lt;/h3&gt;

&lt;h4&gt;
  
  
  AWS EC2
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Free tier eligible - t2.micro 

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


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

&lt;h4&gt;
  
  
  GCP
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Free tier: -
1 non-preemptible &lt;code&gt;e2-micro&lt;/code&gt; VM instance per month in one of the following US regions:

&lt;ul&gt;
&lt;li&gt;  Oregon: &lt;code&gt;us-west1&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  Iowa: &lt;code&gt;us-central1&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  South Carolina: &lt;code&gt;us-east1&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;  30 GB-months standard persistent disk&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>rawkode</category>
      <category>portainer</category>
      <category>tls</category>
      <category>ssl</category>
    </item>
    <item>
      <title>Use MinIO for AWS s3 Multipart Upload - Reference Implementation in Node.js</title>
      <dc:creator>bronifty</dc:creator>
      <pubDate>Sun, 12 Feb 2023 01:17:13 +0000</pubDate>
      <link>https://dev.to/bronifty/use-minio-for-aws-s3-multipart-upload-reference-implementation-in-nodejs-21h9</link>
      <guid>https://dev.to/bronifty/use-minio-for-aws-s3-multipart-upload-reference-implementation-in-nodejs-21h9</guid>
      <description>&lt;p&gt;Don't recreate the wheel with a multipart upload. MinIO has got you covered. Use their client (you don't need to install the server, it is generic S3 compatible)&lt;/p&gt;

&lt;p&gt;1 update the .env.example file to .env and provide your AWS creds with bucket name&lt;br&gt;
2 npm install and npm start&lt;br&gt;
3 navigate to localhost:3000 and upload a file&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;check the repo for code and youtube for demo&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/bronifty/use-minio-for-aws-s3-multipart-upload-reference-implementation-in-nodejs-21h9"&gt;blog&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/yNd7OelQAb4"&gt;youtube&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/bronifty/minio-aws-s3-multipart-upload"&gt;github&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>s3</category>
      <category>minio</category>
      <category>node</category>
    </item>
    <item>
      <title>Dependency Injection With Deno 1.29.1 (Node Compatibility)</title>
      <dc:creator>bronifty</dc:creator>
      <pubDate>Wed, 21 Dec 2022 13:25:00 +0000</pubDate>
      <link>https://dev.to/bronifty/dependency-injection-with-deno-1291-node-compatibility-4ame</link>
      <guid>https://dev.to/bronifty/dependency-injection-with-deno-1291-node-compatibility-4ame</guid>
      <description>&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnqf9s4z2jhng6fo72xy4.png" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnqf9s4z2jhng6fo72xy4.png" alt="Clean Architecture With Deno" width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/pjdtm5KAV2c" rel="noopener noreferrer"&gt;Youtube Link&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/bronifty/deno-dependency-injection" rel="noopener noreferrer"&gt;Github Repo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Leveraging Uncle Bob principles of Clean Code and Architecture to design some inversion of control and dependency injection in Deno's newest version with Node compatibility. The source uses classes instead of functions, because classes are cleaner (they house all properties and methods with access using a dot operator, instead of fishing around files and gathering exports). &lt;/p&gt;
&lt;h2&gt;
  
  
  To run this:
&lt;/h2&gt;

&lt;p&gt;-make sure latest version of deno is installed&lt;br&gt;
(deno 1.29.1) with npm: compatibility&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deno run src/server.ts &lt;span class="nt"&gt;--allow-all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;answer 'y' to all prompts&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  There are 2 endpoints
&lt;/h2&gt;

&lt;p&gt;1 GET /&lt;br&gt;
2 POST /users -d {name, age}&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl localhost:8080/

curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"name":"abc","age": 123}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
 localhost:8080/users
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Note
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;I did have an error in the node code because the post route kept creating duplicates despite the logic checking for that. For some reason, deno version runs much quicker and it doesn't have the bug.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Todo
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;add some tests&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>github</category>
      <category>community</category>
    </item>
    <item>
      <title>Obsidian Desktop Editor File System Bundle Splitting</title>
      <dc:creator>bronifty</dc:creator>
      <pubDate>Fri, 04 Nov 2022 21:50:40 +0000</pubDate>
      <link>https://dev.to/bronifty/obsidian-desktop-editor-file-system-bundle-splitting-3glj</link>
      <guid>https://dev.to/bronifty/obsidian-desktop-editor-file-system-bundle-splitting-3glj</guid>
      <description>&lt;p&gt;The Obsidian Editor splits your bundle of files on the os based on the folders you specify in the editor.&lt;/p&gt;

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

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

</description>
    </item>
    <item>
      <title>Analytics Engineering Study Topics</title>
      <dc:creator>bronifty</dc:creator>
      <pubDate>Mon, 31 Oct 2022 01:06:36 +0000</pubDate>
      <link>https://dev.to/bronifty/analytics-engineering-study-topics-367b</link>
      <guid>https://dev.to/bronifty/analytics-engineering-study-topics-367b</guid>
      <description>&lt;p&gt;&lt;a href="https://dagshub.com/get-started/learn-more"&gt;DagsHub (Github for Data)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://app.clear.ml/dashboard"&gt;ClearML (ML in browser) &lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dagster.io/blog/duckdb-data-lake"&gt;Dagster Blog - DuckDB Data Lake&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wes McKinney Stuff - &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/apache/arrow/tree/master/js"&gt;Apache Arrow for Node.js Github&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ibis-project.org/docs/3.2.0/"&gt;IBIS Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://wesmckinney.com/book/"&gt;Python Data Analysis Book&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://youtu.be/9fuyiqguB-c"&gt;Phillip in the Cloud (IBIS Duckdb project)&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Data Is a Wild West</title>
      <dc:creator>bronifty</dc:creator>
      <pubDate>Thu, 27 Oct 2022 00:54:19 +0000</pubDate>
      <link>https://dev.to/bronifty/data-is-a-wild-west-219h</link>
      <guid>https://dev.to/bronifty/data-is-a-wild-west-219h</guid>
      <description>&lt;p&gt;Data is a wild west even more than the web. We have different engines coming from different vendors doing different things. And even very sophisticated practitioners have difficulty categorizing all these things with abstractions that would make sense to a layperson. It even confuses practitioners who do nothing but data all day. &lt;/p&gt;

&lt;p&gt;Iceberg is metadata; Parquet is data. Iceberg is metadata about a file pointing to the physical file in object storage. A catalog like Arctic organizes the metadata and the metadata files provide query plans or pointers to the files and locations in those files where the data lives. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=RX2_zVh-zo0"&gt;Alex Merced shows us how to convert a csv file into Iceberg&lt;/a&gt;, which is the same process we use in query tools like mstr to map a semantic layer to a physical layer or a 'logical table' to a physical warehouse schema. In programming terminology, we are creating and assigning a struct or a tuple type to the data, which will help categorize it for queries related to the html form input, api format over the wire, and ultimately inside the data column in the db. &lt;/p&gt;

&lt;p&gt;Here is a reference to &lt;a href="https://docs.dremio.com/cloud/getting-started/arctic-architecture/"&gt;Dremio Artic&lt;/a&gt;, a catalog for the metadata which provides organization and what the &lt;a href="https://www.youtube.com/watch?v=C_R6VHJfQn4"&gt;modern data stack presentation&lt;/a&gt; refers to as 'awareness', which, when coupled with the Iceberg metadata file mapping to Parquet, provides version control to the object storage, allowing in-place transformation and time-travel debugging. &lt;/p&gt;

&lt;p&gt;As a personal anecdote, I have installed Dremio both on AWS and in Docker (have yet to try it in kubernetes on Okteto free tier). I do not know how to control my AWS bill when I fire up the cluster required to run this machinery. And the Docker instance is quite limited in terms of features, especially vis-a-vis various integrations. But it is great for a demo.&lt;/p&gt;

</description>
      <category>dremio</category>
      <category>arctic</category>
      <category>iceberg</category>
      <category>data</category>
    </item>
    <item>
      <title>Study Topics; Pre-Project Brainstorming</title>
      <dc:creator>bronifty</dc:creator>
      <pubDate>Sun, 23 Oct 2022 00:02:38 +0000</pubDate>
      <link>https://dev.to/bronifty/study-topics-pre-project-brainstorming-281e</link>
      <guid>https://dev.to/bronifty/study-topics-pre-project-brainstorming-281e</guid>
      <description>&lt;h1&gt;
  
  
  Study Topics
&lt;/h1&gt;

&lt;p&gt;Some study topics I'm pursuing are based on various posts vids and titles. Manning, in particular, has a few books and projects that I am looking to peruse.&lt;/p&gt;




&lt;h2&gt;
  
  
  Web
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.patterns.dev/posts/progressive-hydration/"&gt;React Patterns dot Dev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/reactwg/react-18/discussions/37"&gt;React 18 RSC Streaming Architecture - Suspense&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/bronifty/realtime-sync-with-phoenix-elixir-adm"&gt;Realtime Sync with Phoenix (Elixir)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kentcdodds.com/"&gt;KCD&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://justjavascript.com/login"&gt;Dan Abramov&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.jsmastery.pro/"&gt;Julien&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codedamn.com/login"&gt;Codedamn&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  API
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Node
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://oss.platformatic.dev/docs/getting-started/movie-quotes-app-tutorial/?utm_source=pocket_mylist"&gt;Platformatic DB&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ETL
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://courses.getdbt.com/collections"&gt;DBT U&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.manning.com/liveproject/build-a-self-serve-data-platform"&gt;Data Mesh Self Service Platform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://university.redpanda.com/"&gt;ELT Streaming Fundamentals - RedPanda U&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.macrometa.com/event-stream-processing"&gt;ELT Streaming Macrometa&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://scramjet.org/#join-beta"&gt;ELT Scramjet&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Video Distribution and Messaging
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://livebook.manning.com/book/bootstrapping-microservices-with-docker-kubernetes-and-terraform/chapter-1/1"&gt;Bootstrapping Microservices Build a Video Streaming Platform with Ashley&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Auth
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.manning.com/liveproject/login-with-oidc"&gt;SSO with OIDC&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Observability
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.manning.com/liveproject/observability"&gt;Data Pipeline Observability&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Reporting
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=d5QAKGdmcK4&amp;amp;t=1224s"&gt;BigQuery and BigLake (demo with Hasura)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Golang and Containers
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://courses.ardanlabs.com/"&gt;Ardan Labs Bill Kennedy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Web3
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://academy.moralis.io/"&gt;Moralis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dappuniversity.teachable.com/"&gt;Dapp U&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  OSS Contribution
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Node
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/bronifty/node-core-dev-starter-kit-m3"&gt;Node Core&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Qwik
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=Mi7udzhcCDQ&amp;amp;t=2156s"&gt;Qwik Core Dev Training&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Redux
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/rPJmnxDX9lY"&gt;Redux&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Footnotes:&lt;/p&gt;

&lt;h3&gt;
  
  
  ETL
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=C_R6VHJfQn4"&gt;Postmodern Data Stack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.dremio.com/cloud/getting-started/arctic-architecture/"&gt;Dremio Arctic Catalog and Iceberg Metadata&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Node
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nodesource.com/blog/understanding-streams-in-nodejs/"&gt;Node Streams&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Web
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dcode.domenade.com/tutorials/build-a-single-page-app-with-javascript-no-frameworks"&gt;Vanilla SPA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://courses.joshwcomeau.com/"&gt;CSS for JS Dev - Josh Comeau&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rive.app/"&gt;Rive Animation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  DSA
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://frontendmasters.com/courses/algorithms/"&gt;Prime&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Auth
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.authlete.com/developers/getting_started/"&gt;Authlete&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fusionauth.io/docs/"&gt;Fusion Auth&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Data Viz
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=3LYenkIIX8g&amp;amp;list=PU8uPlQw87Q7thRJY1leWZJw"&gt;Sencha&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tanstack.com/table/v8"&gt;Tanstack Table&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Graphql
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://oneweekgraphql.com/"&gt;Jamie Barton&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Realtime Sync with Phoenix (Elixir)</title>
      <dc:creator>bronifty</dc:creator>
      <pubDate>Sat, 22 Oct 2022 20:14:45 +0000</pubDate>
      <link>https://dev.to/bronifty/realtime-sync-with-phoenix-elixir-4848</link>
      <guid>https://dev.to/bronifty/realtime-sync-with-phoenix-elixir-4848</guid>
      <description>&lt;p&gt;Our fav product dev Theo uses Pusher and some other websocket tools for his app &lt;a href="https://ping.gg/"&gt;Ping.gg&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;
&lt;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4ynyv6XT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/FQ_m8eRVUAAqaFi.jpg" alt="unknown tweet media content"&gt;
      &lt;/div&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--mIWxQiLe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1582890773866942465/x-q9JUE8_normal.jpg" alt="Theo - ping.gg profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Theo - ping.gg
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="mentioned-user" href="https://dev.to/t3dotgg"&gt;@t3dotgg&lt;/a&gt;
      &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;
      Ping is so good that you can't actually tell &lt;a href="https://twitter.com/linusgsebastian"&gt;@linusgsebastian&lt;/a&gt; is calling in remotely 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      02:04 AM - 23 Apr 2022
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1517685787671683072" 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=1517685787671683072" 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=1517685787671683072" 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;p&gt;Our fav maple leaf is using Liveblocks and Convex, among other things&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--xPsb1Qs6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1580975340255576067/4eLix8Qg_normal.jpg" alt="MapleLeaf 🍁 profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        MapleLeaf 🍁
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @heyimmapleleaf
      &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;
      pubsub is not a solution, it's an implementation detail
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      20:24 PM - 21 Oct 2022
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1583554881687736321" 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=1583554881687736321" 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=1583554881687736321" 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;p&gt;Investigating realtime sync app state and stumbled upon this tweet.&lt;br&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--FoER2Q23--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1562667842088189952/-zO8wNGc_normal.jpg" alt="thomas 🌻 profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        thomas 🌻
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @thomasreggi
      &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;
      I love how &lt;a href="https://twitter.com/liveviewjs"&gt;@liveviewjs&lt;/a&gt; couples components with their server actions in one file, allowing you to not need an API for any event.
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      15:04 PM - 13 Oct 2022
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1580575138256281601" 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=1580575138256281601" 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=1580575138256281601" 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;p&gt;So I looked into LiveView and it is built on Elixir lang's Phoenix web framework. That reminded me of this &lt;a href="https://rustacean-station.org/episode/mrinal-wadhwa/"&gt;interview - Ockam with Mrinal Wadhwa&lt;/a&gt; with the Ockham boss who talks, specifically at @26:15 why they are using Elixir and the concerns around it compared to alternate solutions. This leads me to the conclusion that Phoenix built on Elixir is the framework to use for messaging or live syncing app state. &lt;/p&gt;




&lt;h2&gt;
  
  
  Video Live Streaming - a separate but not completely orthogonal (unrelated) subject
&lt;/h2&gt;

&lt;p&gt;This video, which is part of a great series of Tech Bytes, discusses a similar subject of video live streaming.&lt;br&gt;
TLDR; Whether you are capturing video from a camera or serving it from object storage, the process of streaming in chunks over the wire will be the same. It's similar to serving MD(X) from fs vs data from a remote API or CMS. Logic from the extraction step forward remains unchanged.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/7AMRfNKwuYo"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Web3 Version - LivePeer
&lt;/h2&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--XPzdBuS8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1422968961679994884/fA6eIyFm_normal.jpg" alt="boo 👻 nifty profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        boo 👻 nifty
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="mentioned-user" href="https://dev.to/bronifty"&gt;@bronifty&lt;/a&gt;
      &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;
      There is 1 legit use case for web3 besides trading GBP for USD via USDC: video love streaming. &lt;br&gt;&lt;br&gt;Live peer (or should I say love peer) distributes the workload from a centralized server to many nodes which -at once- 1. serve data &amp;amp; 2. get paid in tokens
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      14:38 PM - 18 Oct 2022
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1582380598114426882" 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=1582380598114426882" 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=1582380598114426882" 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;br&gt;
&lt;a href="https://livepeer.studio/"&gt;LivePeer&lt;/a&gt;

</description>
    </item>
    <item>
      <title>Node Core Dev Starter Kit</title>
      <dc:creator>bronifty</dc:creator>
      <pubDate>Fri, 21 Oct 2022 20:25:20 +0000</pubDate>
      <link>https://dev.to/bronifty/node-core-dev-starter-kit-m3</link>
      <guid>https://dev.to/bronifty/node-core-dev-starter-kit-m3</guid>
      <description>&lt;p&gt;&lt;a href="https://www.nodetodo.org/"&gt;Node TODO&lt;/a&gt; let's fire up the TODO app and commit a PR to node core.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://discord.gg/platformatic"&gt;Matteo Discord&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitch.tv/matteocollina/schedule?seriesID=eyJzZWdtZW50SUQiOiJhMDkwM2I1OS0xNDhiLTRkMmItODM4My05Yzk3YjAxOGIwZmUiLCJpc29ZZWFyIjoyMDIyLCJpc29XZWVrIjo0M30="&gt;Matteo Livestream on Twitch every Thursday at Noon EST&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://changelog.com/podcasts"&gt;Changelog Podcasts&lt;/a&gt; where you will find discussions with Matteo Collina (@matteocollina) who talks about the details.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.atdatabases.org/"&gt;At Databases&lt;/a&gt; because you don't need ORM.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Patterns.Dev Rendering Notes (Deleted Twitter Posts)</title>
      <dc:creator>bronifty</dc:creator>
      <pubDate>Thu, 20 Oct 2022 11:16:33 +0000</pubDate>
      <link>https://dev.to/bronifty/patternsdev-rendering-notes-deleted-twitter-posts-4p2i</link>
      <guid>https://dev.to/bronifty/patternsdev-rendering-notes-deleted-twitter-posts-4p2i</guid>
      <description>&lt;p&gt;I do expect someone to correct me because I’m on a limb &amp;amp; veering into meta framework territory but feeling cute so will say anyway. Full SSR is hydrated once at the root of the DOM tree once all html is written &amp;amp; global closure of closures is constructed…&lt;br&gt;
5:29 AM · Oct 20, 2022&lt;br&gt;
·Twitter for iPhone&lt;br&gt;
View Tweet analytics&lt;/p&gt;

&lt;p&gt;boo 👻 nifty&lt;/p&gt;

&lt;p&gt;·&lt;br&gt;
1h&lt;br&gt;
Replying to &lt;/p&gt;

&lt;p&gt;Selective hydration can hydrate the DOM (attach React js handlers) before data is sent because html elements are wrapped in Suspense (a lazy load boundary synched with the server).&lt;br&gt;
boo 👻 nifty&lt;/p&gt;

&lt;p&gt;·&lt;br&gt;
1h&lt;br&gt;
What is server “sent” vs server “streamed”? It is the difference between serializing the DOM (stringnifying it as a convenient method of marshaling it over the wire by hyper-“text”-transfer-protocol) and piping it in chunks one at a time or several that is also fine&lt;br&gt;
boo 👻 nifty&lt;/p&gt;

&lt;p&gt;·&lt;br&gt;
1h&lt;br&gt;
What is this chunks? It is an automated task of node to slice a file into equal sized pieces, which are kept in order (like a linked list), and introduced into memory such that the server process may operate on them (eg pipe them to the browser). In the end, it is just an array.&lt;br&gt;
boo 👻 nifty&lt;/p&gt;

&lt;p&gt;·&lt;br&gt;
1h&lt;br&gt;
Stream is just array processing that node handles automatically with respect to memory contract management. Or memory management. You might say there is a contract as well.&lt;br&gt;
boo 👻 nifty&lt;/p&gt;

&lt;p&gt;·&lt;br&gt;
45m&lt;br&gt;
I'm going to refer to Addy &amp;amp; Lydia's '&lt;a href="https://www.patterns.dev/posts/react-selective-hydration/"&gt;Selective Hydration&lt;/a&gt;' as 'hydrating the skeleton' because handlers are attached to DOM sans data &amp;amp; fetcher could be isomorphic (same code on client &amp;amp; server produces same result; eg same call to db for data retrieval)&lt;br&gt;
patterns.dev&lt;br&gt;
Selective Hydration&lt;br&gt;
How to use combine streaming server-side rendering with a new approach to hydration, selective hydration&lt;br&gt;
boo 👻 nifty&lt;/p&gt;

&lt;p&gt;·&lt;br&gt;
14m&lt;br&gt;
Finally, and I do expect pushback on this one, Islands Architecture is server rendered with JS sprinkles, meaning, like JQuery, it has multiple entry points without a single unified state lifecycle management paradigm...&lt;br&gt;
boo 👻 nifty&lt;/p&gt;

&lt;p&gt;·&lt;br&gt;
14m&lt;br&gt;
For instance, triggering a webhook would not send a message to the root of the app and cause it to rerender the component (to which the hook was attached as a handler during 'hydration') branch. The units of interactivity are as of yet (and for all time) unawares of one another&lt;/p&gt;

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