Categories


Recent Posts


Archives


Javascript Generators

This entry is part 2 of 4 in the series Four Steps to Async Iterators. Earlier posts include ES6 Symbols. Later posts include ES6's Many for Loops and Iterable Objects, and Async Generators and Async Iteration in Node.js. Generators are weird. They make programs behave in ways that are non-obvious. This weirdness easily turns into [...]

astorm

ES6 Symbols

This entry is part 1 of 4 in the series Four Steps to Async Iterators. Later posts include Javascript Generators, ES6's Many for Loops and Iterable Objects, and Async Generators and Async Iteration in Node.js. One pattern that keeps coming up when I’m spelunking older NPM packages for Node.js is using Symbols to define properties [...]

astorm

NPM’s Dependency Model

I’m coming up on about a year of full-time NodeJS work, and it’s only now that I’m starting to understand the true nature of NPM’s dependency management. When I’ve used other systems, (primarily composer), “management” of those dependencies meant your package manager will yell as you if [...]

astorm

OpenTelemetry’s NPM Packages

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

Tracing NodeJS Services with Open Telemetry

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

Instrumenting Traces with Zipkin

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

What is a Zipkin Trace?

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

How does Deno Use Rust

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

Async/Await and Recursion

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

Where does Deno Code Come From

This entry is part 1 of 1 in the series Exploring Deno. This is the first post in the series. 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 default, what can I [...]

astorm

@grpc/grpc-js Goes 1.0

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

What are OpenTelemetry Metrics and Exporters

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

What are Prometheus Exporters?

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

What is Prometheus?

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

TypeScript won’t Save us

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