Doug Self’s “The Design of Active Crossovers”

I just discovered that I got a mention in Doug Self’s book The Design of Active Crossovers for the work I did a while back on loudspeaker crossovers. If you don’t know who he is, he’s one of the big names in British audio engineering. He’s done work for Cambridge Audio, TAG-McLaren Audio, and other respected brands. Feeling warm and fuzzy.

Joys of Low-Voltage Audio: A journey begins

high-voltage lines

It turns out the world of low-voltage audio is a lot of fun, and I’d like to start sharing some of my journey through it.

I suspect everyone has a different reason for entering this world, lending each story a different color and set of priorities. Mine goes something like this.

Continue reading “Joys of Low-Voltage Audio: A journey begins”

FreeCAD for Industrial Design

The open source community has produced a number of serviceable tools for two-dimensional design. These include GIMP for bitmap graphics and photo editing, Inkscape for vector art, and Scribus for page layout. On the 3D side, Blender, Wings 3D, Art of Illusion, and a few others have served the needs of those doing surface and subdivision modeling. And while lots of good work has been done using those tools, I haven’t found surface and subdivision modelers very useful for industrial design work, except for occasional rapid ideation or visualization. FreeCAD is different in that it’s a parametric modeling tool, which has a history of effective use in ID.

Continue reading “FreeCAD for Industrial Design”

Timestamps for KiCad footprints

I’m bulk editing a bunch of KiCad footprints (a.k.a. modules) in a text editor. Said footprints have a tedit field, which turns out is a hex-coded timestamp. This means to properly edit a KiCad footprint in a text editor, you should update that field when you save it.

A one-liner for producing a hex-coded timestamp in Linux bash is:

printf "%X\n" $(date +%s)

JavaScript’s prototypal inheritance

In this final part of our series on JavaScript prototypes, we’re going to discuss using them to implement inheritance as it’s typically thought of in classical object-oriented design. Having said that, I once again suggest that you try to put aside what you may already know about how objects and inheritance work in other languages and treat the way JavaScript works as its OwnThing.

So, let’s get on with it.

Continue reading “JavaScript’s prototypal inheritance”

JavaScript and ‘this’, arrow function edition

In a previous installment, we took a dive into the this variable and how it behaves in different ES5 situations. In this installment, we’ll do the same but for so-called arrow functions, introduced in ES6.

Continue reading “JavaScript and ‘this’, arrow function edition”

The JavaScript prototype chain

So far we’ve learned what the relationship is between an object and its constructor’s prototype and what happens when we change properties set on the prototype. In particular, we learned that if you try to access a property of on object, the JavaScript engine will first look in the object itself for the property, and it if doesn’t find it there it looks in its __proto__ property, which is also the constructor’s prototype.

This leads to a good question: What happens if the property isn’t in the constructor’s prototype either? One possible answer is that the JavaScript engine gives up and says the property is undefined. But that’s not what happens.

Continue reading “The JavaScript prototype chain”

Designing out designers?

I’m teaching myself React, the JavaScript library du jour that’s meant “for building user interfaces.” Interestingly, it doesn’t use a templating language. Instead it offers JSX: an extension of the JavaScript language that lets you write JS code that looks very much like HTML and that can be rendered into HTML. On the surface this seems like a cool idea, but the apparent simplicity starts to break down when you want to do anything other than straight-line HTML.

Continue reading “Designing out designers?”