This site runs best with JavaScript enabled.

UtahJS Conference 2024 Review

UtahJS Conference 2024 Review UtahJS Conference 2024 Review

UtahJS 2024 was very similar in format to 2023 - held at the same venue - Megaplex Theaters in Sandy - which I give a 5-star rating!

There are 3 tracks so you can choose the theater/presentation that interests you the most.

Kent C. Dodds

React and the Vanishing Network

If you have ever attended a conference talk by Kent C. Dodds, you're in for a treat. Even though I have no interest in React still, I chose this track because I always enjoy listening to and watching Kent work.

If you click the title of his talk above, you will be taken to a workshop that you can go through. He covers the progression of multi-page applications, single-page applications, progressive enhancement SPAs, and finally React Server Components.

While nice, I'm still not moving to React any time soon. I still hate JSX. Also, maybe I'm looking at things the wrong way, but how many applications do you really need to focus on making work well with a 3G internet speed or JavaScript disabled? So far in my career, it has been easy enough to assume JavaScript is enabled and it has never been an issue otherwise.

But, another reason I really enjoy conferences is because you can see the tools that presenters are using. One thing that has always impressed me with Kent was how fast he can live code. He gave a shout-out to Cursor AI, which made him even faster.

Cursor is interesting. I believe it is based on VS Code so you can use all the same extensions. It has AI built in to recognize the code in your project to give you better code suggestions. From what I saw, it seemed very similar to Sourcegraph's Cody, which I have settled into using on a daily basis.

![[./images/twitter.png]]

Another tool or library I heard mentioned a few times in talks, but didn't look into is TanStack and more specifically TanStack Query.

Jo jo

JavaScript Craftsmanship: Framework-less Async JS Components

This talk was about how to build web components with vanilla JS rather than using a library. There are demonstrations on his git repo.

The coolest thing I learned that was unrelated to his talk was due to technical difficulties he was having. He couldn't get his Linux machine to work with the projector, so he borrowed someone else's Mac. It was clear he was totally lost on macOS. So while he planned to do some live coding, he couldn't really do it on an unfamiliar machine.

Someone in the audience suggested he press period (.) while in his GitHub repo. This opens the project in a VS Code instance. He could then edit and run his code from an online VS Code instance.

Here is another little tip I saw: import the lit html package and with the right plugin, VS Code will highlight HTML code in your JavaScript

app.innerHTML = html`
  <div>
    <div class="card">
      <div id="lbar"></div>
      <div id="bar"></div>
    </div>
    <div class="card">
      <button id="counter" type="button"></button>
    </div>
    <div class="card">
      <button id="lazy" type="button">Load Async</button>
    </div>
  </div>
`;

Nate Hearns

Write once, deploy anywhere

Nate's talk was mainly about React Native and why you should use it to build web apps as well as mobile apps. He said it is really the only technology stack that can do mobile and web in one codebase.

I was surprised at this statement because I immediately thought of Flutter. I have tried Flutter and I was able to build web and desktop apps as well as iOS and Android apps. He even mentioned Flutter and said that you can only use it for iOS and Android, so I assume he wasn't aware of its capabilities.

I wasn't sure if he worked for Expo or not, but he really pushed this helper library that makes building for iOS and Android more seamless - for a price.

Another library he mentioned that he likes to use is Shopify Restyle which is a library for building UI components in React Native.

He mentioned that x.com uses React Native for the web application, but not their mobile applications.

Rob Richardson

Level-up Your DevOps with GitHub Actions and Kubernetes

Rob's presentation started with an empty git repo and he imported a simple .NET web app, then proceeded to manually write a Dockerfile and Kubernetes file and set up hosting for it. The code can be found here:

https://github.com/robrich/levelup-devops-github-actions-kubernetes

Todd Fisher

JavaScript AI Cookbook: Building AI-powered product features

Todd showed a lot of examples of how to utilize AI in your applications. He went through demos in this repo: https://github.com/toddwashere/ai-cookbook-learning/tree/main/api/src/examples

For simple stuff if you don't want to pay for API usage, use ollama

The more details you add to your prompt with examples, etc., the better results you will get.

One example I liked was where they were collecting customer information. They had various questions about the company the person worked for. They updated it so that after the customer entered the URL of their business, they would prompt AI to read the website and pre-populate the other business-related form questions.

Delaney Gillilan

Real-time Hypermedia

This talk may not be the most relevant to my day-to-day business, but it was the most interesting to me. Delaney has a background in game development so he is not your standard JavaScript developer and has different opinions on the way things should be done. These are unpopular opinions that I also share - even as a web developer.

For example, he says SPA (single page applications) are a bad idea for the modern web. They either have too much, or too little data. They are optimized for the wrong problem.

He mentioned he got into htmx and Alpine.js. I actually started a project and used these two frameworks with a Django app, as I longed to get back to the classic, simpler way of doing things.

Here is one of my own complaints about modern SPAs. Sure they perform fast - but generally AFTER you wait forever for the app to load! People have come up with creative ways to entertain you while the SPA is loading. Back when everything was being served up by the server à la Django, there may have been a slight delay in page loads, but generally if you needed to go to an app and get something done quickly, you don't spend ten seconds watching loading spinners.

To me HTMX is going back to the way we used to do "Ajax" in web apps, so I was surprised when I first heard about it.

But here is another opinionated statement from Delaney:

HTMX may be a bad idea for the modern web. Everyone seems to be missing the power of hypermedia.

I'll be honest, I haven't even heard of the term "Hypermedia" and I wouldn't even be able to explain it to anyone.

After working with HTMX and Alpine.js, Delaney wrote his own library called Datastar

He did a demo showing an interactive training app he built where it had video interactions and you could run commands in the terminal that would also update the tutorial website you were on. It was pretty cool and really fast.

He mentioned he was into NATS, Synadia, and Go and here are some resources:

He recommended this YouTube talk: Immediate Mode vs Retained GUIs

  • SPA -- Retained Mode
  • Hypermedia == Immediate Mode

Roei Berkovich

Beyond the Hype: Facing Micro Frontend Challenges in Large-Scale

Roei talked about how they manage various micro front-ends at his job using various frameworks and tools they use to connect and monitor.

I'll be honest, I zoned out because of the corporate tone of the presentation and perhaps a little PTSD from a previous job.

Nick Humrich

You Are the CPU: What CS Can Teach Us About Ourselves to Improve Developer Efficiency

Nick's talk was all about improving human efficiency - not really anything JavaScript or coding related specifically. Here are my notes from some of his slides:

You are your company's most expensive resource. You should be optimized.

DORA Metrics

  • Deployment Frequency 1/dev/day
  • Error rate < 15%
  • Change lead time < 1 hour
  • Mean Time to Recovery < 1 hour

We are using CPU cycles on things that are not needed.

Reduce Toil

"Improving daily work is even more important than doing daily work" --Phoenix Project

Reduce Cognitive Load

  • Smaller codebases
  • Smaller code reviews/PRs
  • Smaller feature chunks
  • Improve Observability
  • Testing
  • TypeScript

Some things are better done sync than async because context switching consumes more resources than not.

Reduce Context Switching

  • Reduce work in progress
  • Focus time for thought-intensive processes
  • Get into Flow State

If you could do one thing to improve today: move from large deployment to small deployment: Ship smaller batches

Lucas Castro

Getting Started with Passkeys and WebAuthn

Lucas gave a demo on how to set up passwordless authentication with WebAuthn.

In a nutshell, WebAuthn uses a private/public key pair. The server stores only your public key. When you authenticate, your device (like a phone, browser, security key, or authentication manager) uses the private key to sign a challenge. The server verifies this signature using the public key it has. This proves that you have the private key without ever sending it over the network, making it highly secure.

If the user loses access to their passkey (private key), they might lose access to the account unless there's a fallback recovery method, like an email or backup method (e.g., another registered device or security key). While this is somewhat true for many forms of authentication (like losing a password), passkeys are generally device-specific, so losing a device can be more problematic unless recovery options are in place.

To prevent lockout, it's important to offer fallback options or allow users to register multiple devices for authentication.

Share article
Dustin Davis

Dustin Davis is a software engineer, people manager, hacker, and entreprenuer. He loves to develop systems and automation. He lives with his wife and five kids in Utah.