RSSAmplifier

Blog

@jdx

Recent content on @jdx

jdx.devRSS feed ↗29 posts

Latest posts

Going Full Time on Open Source

For the last several years, I’ve been building and maintaining developer tools in my spare time, chiefly mise . What started as a simple rewrite of asdf in Rust has become an incredibly successful local dev manager. mise now has 27k+ stars on GitHub and is the 10th most downloaded Homebrew formula . In fact, roughly 1% of users typing brew install are running brew install mise . I’ve…

Contact

For sponsorships, consulting, speaking, or anything else — I read everything that comes through here. Website Your name Your email Your company optional Message Send message

Top 10 Features in Mise You're Not Using

1. Task sources and outputs Any task can declare input/output globs. If all outputs are newer than all sources, the task is skipped entirely: [tasks.build] run = 'cargo build' sources = [ 'Cargo.toml' , 'src/**/*.rs' ] outputs = [ 'target/debug/myapp' ] Don’t want to enumerate outputs? Set outputs = { auto = true } (which is actually the default when sources is defined) — mise tracks a hash…

Shims: How they work in mise-en-place

Assuming you’ve setup mise and have it configured in a couple of projects to switch between different versions of node, that will happen automatically when entering the project directories: $ cd ~/src/proj1 $ node -v 20.0.0 $ cd ~/src/proj2 $ node -v 18.0.0 The way that mise is able to switch this version depends on whether you’ve activated mise with shims or not. In this article,…

Shims: Build a version manager

I’ve spent the last decade of my career in the developer productivity space. In that time I’ve helped countless developers setup their dev environments. Something I see time and time again are developers struggling with version managers for their programming languages. These tools are generally fine, but developers often don’t understand how they work which leads to frustration…

10 features in rtx you may have missed

Goal #1 with rtx was to be a drop-in replacement for asdf . We quickly achieved parity with asdf and now thousands of people have moved to rtx and are loving how much faster and easier to use it is. Since then, though, we haven’t stopped and a lot more features have been added you might not have seen. 1. Arbitrary env vars You can now set arbitrary environment variables in your .rtx.toml…

Beginner's Guide to rtx

https://dev.to/jdxcode/beginners-guide-to-rtx-ac4

Introducing chim

I had a 3-day weekend and decided to learn Rust while also putting together an idea I’ve had for a few years now: chim . Background The problem I’ve wanted to solve is bootstrapping projects for local dev and CI/CD. Essentially, how tool versions are defined and installed—tools being things like programming language runtimes, package managers, and linters. For example, a project might…

10 Tips for Ramping Up as a Senior Engineer

I’ve learned the hard way that starting a job on a large engineering team as a senior engineer is more than simply writing good code. You have to drive initiatives at a social level and not simply because you know more about the codebase. For a new hire this is especially a challenge. You need to learn the system that your colleagues already understand. You might be a higher level but…

Async JavaScript Patterns for 2020

I’ve got a ton of different patterns I use when working with async code in JS. This article is a collection of them. I’ve split them into 3 parts: Promises , Async/Await and Async Iterables . I see this as more of a ctrl-f reference for tasks like “how do I timeout a promise” . Though I’ve also tried to keep it in rough order from beginner-advanced so if you want a…

Practical Guide to Closures

Closures are fairly common in JS but are also sometimes used in Go and Python and many other languages. This post is going to use JS but the concept is the same in all languages supporting closures. I found closures incredibly confusing for a long time—well after college and me working in the industry for years in fact. I found the concept confusing even when I was writing them all the time.

Pithy Guide to Kubernetes Part 2: Golang

If you haven’t done Part 1 you’ll need to start there. In Part 1 we setup Minikube and added an Ingress, Service, and Deployment to the k8s cluster. Now we’ll finish that work by giving the Deployment an image to load. The full example code is available on GitHub . Build the Go API First initialize this directory as a Go module: [optional, but recommended] $ go mod init Now…

Pithy Guide to Kubernetes Part 2: Node.JS

If you haven’t done Part 1 you’ll need to start there. In Part 1 we setup Minikube and added an Ingress, Service, and Deployment to the k8s cluster. Now we’ll finish that work by giving the Deployment an image to load. The full example code is available on GitHub . Build the Node API First create a package.json file for our dependencies and add express to the app: $ mkdir api $…

Pithy Guide to Kubernetes Part 1

This is a concise, opinionated guide to Kubernetes. I’m assuming you already know how to build software and are just looking to get started with Kubernetes. This is a 2-parter: the first is language-agnostic and the second is for a particular language. I have Go and Node right now. Assume we want to build a JSON web server managed by Kubernetes. At the end of this guide, we will be able to…

[video] oclifconf: The Future of oclif

https://www.youtube.com/watch?v=1TKh2YBxRMY

Golang Function Driven Tests

Dave Cheney had a fantastic post on improving test structure in Go code with table-driven tests. I want to expand on it just a tiny bit to show how table-driven tests can be made more concise with functions. If you haven’t read his article, read that before continuing. The end result of Dave’s post is the following example: func TestSplit (t * testing.T) { tests := map [ string ]…

[podcast] codeish: oclif: An Open Source CLI Framework

https://www.heroku.com/podcasts/codeish/13-oclif-an-open-source-cli-framework

[video] NodeConf: Building Great CLI Experiences in Node.js

https://www.youtube.com/watch?v=Izx3-KSuaM8

12 Factor CLI Apps

https://medium.com/@jdxcode/12-factor-cli-apps-dd3c227a0e46

[video] DevRelCon: Designing a delightful command line interface

https://www.youtube.com/watch?v=Izx3-KSuaM8

For the love of god, don’t use .npmignore

https://medium.com/@jdxcode/for-the-love-of-god-dont-use-npmignore-f93c08909d8d

Salesforce Blog: Open Sourcing oclif, the CLI Framework that Powers Our CLIs

https://engineering.salesforce.com/open-sourcing-oclif-the-cli-framework-that-powers-our-clis-21fbda99d33a

Heroku Blog: Evolution of the Heroku CLI: 2008-2017

https://blog.heroku.com/evolution-of-heroku-cli-2008-2017

How to Pair Program

https://medium.com/@jdxcode/how-to-pair-program-d6741077e513

[book] Write Modern Web Apps with the MEAN Stack

https://www.amazon.com/Write-Modern-Apps-MEAN-Stack/dp/0133930157

Best Practices for Building Angular.JS Apps

https://medium.com/@jdxcode/best-practices-for-building-angular-js-apps-266c1a4a6917

Older Posts

You can view my older posts on medium: https://medium.com/@jdxcode

Members

Sponsors