Karson Kalt
.dev-
Managing View State and Client-side Routing in SPAs A scalable routing approach to address routing challenges and illustrates a common pattern involving a collection rendering and routing in React.
-
Functional Programming in Ruby with Blocks and Procs Contrasting object-oriented programming against functional programming. Introduces the concept of functional programming in Ruby through the lens of blocks and procs. Also touching on code modularity and reusability.
-
Recursive Thinking Using recursion in algorithmic challenges. Talking about transitioning from iterative to recursive thinking, identifying base cases and the recognition of patterns.
-
Building Efficient Algorithms Using Memoization and Closures in Javascript Looking at the essentials of memoization and closures in JavaScript, exploring how these techniques can significantly optimize algorithms. Through a simple example of multiplying numbers, I look at the concept of caching solutions to enhance efficiency and speed in programming tasks.
-
Understanding 'this' in JavaScript Navigating the concept of this in JavaScript can be a tricky, especially for those accustomed to the straightforward self in object-oriented languages like Ruby or Python. I contrast this with self, and dive into JavaScript's prototypal inheritance to explain why this behaves the way it does.
-
What is a 'Hash' and How to Build one from Scratch in Ruby In this article, I explore what a hash is, starting from the basics and moving towards understanding their underlying structure and then illustrate how to build one from scratch.
-
Using Query Parameters in Rails Controllers Sharing learnings from my personal project, Houseplant Helper, on efficiently handling query parameters in Rails. I go over a scalable approach using the request object and the .send method within controllers, demonstrating how to dynamically respond to query parameters across an application..
-
Using React and Rails to build a SPA Demonstrating learnings from my personal project, OnRotation, a web app aimed at helping electronic music fans identify tracks played by DJs. I highlight the challenges and solutions in developing a user-friendly platform for music identification and go over the project architecture and how I designed the application.
-
Building a Turn-based Game Using JS and Rails I share learnings from building my personal project, GamePage, a web application that allows two players to engage in the classic board game "Reversi" (also known as "Othello"). I detail the project's architecture, including a Rails API backend and a JavaScript-manipulated front end, highlighting the seamless integration between the two technologies to offer a dynamic single-page application experience.
-
Building a Web App with Rails A guide to building a web app with Rails for my personal project, Houseplant Helper, an application designed to assist users in tracking their plant watering schedules. The article talks about MVC architecture, ActiveRecord, and the strategic implementation of partials to manage views.
-
Building a Web App Using Sinatra and ActiveRecord A walkthrough of my personal proejct, Kickflip, a web application designed for skateboarders to track local skateparks, share new tricks, and encourage engagement through a check-in feature. The application uses Sinatra and ActiveRecord for a Model-View-Controller (MVC) setup, and discusses the integration of the geocoder gem to enhance park search functionality by converting addresses into geographical coordinates.
-
My First Ruby CLI Program Sharing my journey as I continue the Flatiron School curriculum. I share learnings from a personal CLI project, DJ Booth, designed to track songs played by DJ. I also discusses nokogiri and open-uri gems due to the lack of an API from 1001 Tracklists.
-
Why I am Studying Software Engineering Growing up, one of my favorite books was "The Way Things Work". In the book, a cartoon woolly mammoth takes apart and explores the inner workings of everyday tools and machines. From giant faucets to oversize locks, the charming, slow-moving character explores everything that amazed me as a kid.
-
localBunyanLogger.ts Wrapper for bunyan logs that write log messages to a log file instead of stdout.
-
Method Chaining Exploring method chaining in JavaScript and how it can be used to transform data in a more readable way.
-
cleanup-node-modules.sh A simple script to cleanup node_modules from a development directory.
-
First Week with Bash I’m learning bash to help me feel more comfortable in my command line and customizing my shell. It’s been very helpful and informative so far and I’m feeling much more comfortable in the cli.
- React for true web apps. I have mixed feelings about the framework but can't argue that there is a large community and ecosystem around it.
- TypeScript. I believe in strong types, especially in an enterprise codebase. And with node now testing running TS, it's a no-brainer.
- Node for backends and scripting. I love the ecosystem and the ability to share code between the client and server.
- CSS of course for styling. Though I used to use them, I now don't think CSS preprocessors are needed with all of the new developments in CSS. Modern CSS supports design tokens, theming, and handles a lot of interactions that used to be handled by JS.
- Vanilla JS and Browser APIs. When I can, I try to stick to native web standards do so much cool stuff. Web components, element anchoring, view transitions, nested CSS is super powerful, so I keep it simple if I can.
- Next.js if I need SSR and infra out of the box. I don't love the pricing model, but getting something spun up quickly is a huge win.
- Vite, it's my favorite build tool.
- Vitest for unit testing. RIP Jest and Mocha, I won't miss you.
- Cypress for E2E testing.
- AWS for serverless infra and quick horizontal scaling.
- Storybook and Chromatic for interaction testing, design system libraries, visual regression testing, and as a UI sandbox.
Software engineer, UX advocate, people person.
I create UI experiences for the web that enable organizations to build faster and scale effectively.
About Me
Growing up, I was always interested in design and technology. My favorite book was The Way Things Work by David Macaulay. I loved the illustrations and the way it explained how things worked in a simple and fun way. I built toy cars and buildings with K-NEX. With a math teacher for a mom and an industrial engineer for a dad, I naturally loved the space where logic-meets-design.
As an engineer, I love building and designing apps for humans. Design to me is not "making it pretty", but surfacing the right information, to the right person, with the right controls, at the right time. Reframing this from an engineering perspective, great UX is about the human-API. We naturally process information adhering to a set of rules -- and the best interfaces are the ones that understand and respect those rules.
Work History
I began my professional career in 2014 working as a store manager for Target. After a few very challenging, but very rewarding roles, I re-evaluated my career path and attended a coding bootcamp at Flatiron School in 2020.
In 2021 I joined JupiterOne as a Software Engineer focusing on UI in React. After becoming more comfortable with the codebase, I began to take on more responsibilities. A few projects I worked on include: rolling out a design system, upgrading our data viz library, implementing virtualization and data-grid features for query results, assisting transitioning to a microfrontend architecture , building natural language querying, and overhauling our multi-modal search experience.
In 2024 I became a Senior Software Engineer at JupiterOne with the help of great mentors. Some recent projects I've worked on include introducing continuous threat and exposure management and adding smart classes to our query language and data model.
My Resume LinkedInMy Stack
Here is a short list of things that I use most often when starting a new project.