This entry is part 4 of 4 in the series Tracing Systems with Zipkin and OpenTracing. Earlier posts include What is a Zipkin Trace?, Instrumenting Traces with Zipkin, and Tracing NodeJS Services with Open Telemetry. This is the most recent post in the series. In our previous OpenTelemetry articles, we gave a broad “hello [...]
astorm
This entry is part 3 of 4 in the series Tracing Systems with Zipkin and OpenTracing. Earlier posts include What is a Zipkin Trace?, and Instrumenting Traces with Zipkin. Later posts include OpenTelemetry's NPM Packages. In the first two articles in this series we took a crash course in instrumenting a small three service system using [...]
astorm
This entry is part 2 of 4 in the series Tracing Systems with Zipkin and OpenTracing. Earlier posts include What is a Zipkin Trace?. Later posts include Tracing NodeJS Services with Open Telemetry, and OpenTelemetry's NPM Packages. Last time we ran a small, three service pre-instrumented system that reported spans into Zipkin. In this [...]
astorm
This entry is part 1 of 4 in the series Tracing Systems with Zipkin and OpenTracing. Later posts include Instrumenting Traces with Zipkin, Tracing NodeJS Services with Open Telemetry, and OpenTelemetry's NPM Packages. In our last series we took a look at Prometheus, its metric data types, and how it compares to the OpenTelemetry project. [...]
astorm
Quick link to a medium article outlining a number of different ways to run your own NPM server. Some self-hosted software, some SaaS solutions. The actual article has more context, but here are the links for (my) quick reference. MyGet NPM Org DIY NPM Git. Sinopia Cnpmjs.org Npm-register Verdaccio
astorm
Reddit is not my natural enviornment, but I occasionally hover around its various programming communities. This is a personal archive of an answer to a question about the Deno, the new “run javascript on your own computer” project. I’m far from an expert in all the real details here, but I’ll give this a go. Deno [...]
astorm
So here’s a “fun” side effect of async/await in NodeJS. I had a bug. It seemed like it might be run away recursion bug. NodeJS doesn’t let you set an explicit recursion depth limit, but it does limit the size of your call stack. So how could there be a recursion bug without Node throwing up errors and/or crashing [...]
astorm
This entry is part 1 of 2 in the series Exploring Deno. Later posts include Comparing a Deno and Node.js Hello World Program. Whenever I sit down with a new (either to me, or to the world) programming language, the first thing I end up doing is trying to understand where all the code I’ll use comes from. What’s available by [...]
astorm
A quick note to congratulate anyone working on the @grpc/grpc-js project for their 1.0 last month. There’s been a C++ native module of GRPC around for awhile now, but @grpc/grpc-js a pure TypeScript (that compiles to pretty clean javascript) implementation, and we’ve found That it’s mostly a drop in replacement for grpc [...]
astorm
This entry is part 3 of 3 in the series An Introduction to Prometheus and Metrics. Earlier posts include What is Prometheus?, and What are Prometheus Exporters?. This is the most recent post in the series. Last time we ended by musing that Prometheus, while an open source project, still creates a case of vendor lock-in for its users. [...]
astorm
This entry is part 2 of 3 in the series An Introduction to Prometheus and Metrics. Earlier posts include What is Prometheus?. Later posts include What are OpenTelemetry Metrics and Exporters. In our first article, we covered four core Prometheus concepts and used those four concepts to instrument a simple service written in NodeJS. One [...]
astorm
This entry is part 1 of 3 in the series An Introduction to Prometheus and Metrics. Later posts include What are Prometheus Exporters?, and What are OpenTelemetry Metrics and Exporters. One surprising thing about the software instrumentation world, a world that helps us see what our systems are doing, is how opaque the instrumentation [...]
astorm
A few weeks ago I started working with gRPC for the first time. These days gRPC stands for “general-purpose remote procedure call”, but I still think of it as “Google remote procedure call”, as it’s a project that came out of, and is primarily maintained, by Google engineers. It’s a system for building [...]
astorm
The pile of one-off command line scripts I’ve written for my current weekend projecting finally reached the critical mass where they needed some organizing, which led me to discover the yargs project. Yargs provides mature argument and option parsing for command line programs (both --foo and -b style options) and features for [...]
astorm
Here’s an API design pattern that drives me a little nuts. If you’re using the Apollo GraphQL client to make a data fetching query, your code looks like this. client.query({ query: gql`query { ... your query here ...}` } However, if you’re using the apollo client to make a graphql mutation query, your code looks like [...]
astorm
I reviewed the original Magento Ultimate Module Creator almost — six?! — years ago. Its creator, Marius Strajeru, just announced a new project that we’ll call Ultimate Modules Creator for C.R.U.D. This looks like it’s a Magento module (Umc_Crud) that provides a set of base classes and interfaces with a standard, opinionated [...]
astorm
A free-and-open-source (BSD 3 Clause) security checklist for anyone running (or with a vendor who’s running) a Magento 2 system themselves. Provided by security stalwart Talesh Seeparsan, who you should talk-to-slash-hire if you need any computer security work done (Magento or otherwise). The list is pretty bonkers. Seeing [...]
astorm
A bit of a coda to my post on Symfony HttpClient — I reported the bug to the Symfony project and it was, unsurprisingly, closed with one of those annoying engineering responses: Expected Behavior. In this case Expected Behavior means We acknowledge the behavior and don’t know how to fix it right now and don’t want to [...]
astorm
In traditional, “plain Blain” style javascript, it’s relatively simple to access an object’s property via a string // prop-of.ts class Foo { prop1 = 'foo' prop2 = 'baz' prop3 = 'bar' } const foo = new Foo() // using a string constant console.log(foo['prop1']) // using a string's variable const prop2 = 'prop2' [...]
astorm
A small post that’s a little off my normal beat — sometimes software feels like a never ending series of Y2K like paper cuts. ISBNs are cross-publisher serial numbers for books. If you’re publishing a book, and you want to tap into global supply chains (i.e. have stores be able to order and stock your book), you need to [...]
astorm