I’ve been building subwoofers for years now, and I’ve always used car audio drivers. However, I recently started building speakers using pro-audio drivers, specifically mid-woofers and horn loaded compression drivers. I love how dynamic and clean-sounding these drivers are, so it was only natural that I decided to give pro-audio subwoofers a try…| Lack of Imagination
A popular trope in science fiction movies set in space is running diagnostics whenever something goes wrong with a ship’s systems. The chief engineer might announce something like, “We’ve run a level 2 diagnostic on the thermal regulators…| Lack of Imagination
I previously built Valeria, a compact bookshelf speaker using pro-audio drivers. The dynamics offered by this small speaker are impressive, if I may say so myself. Lately, I’ve been thinking of building speakers with better bass response and improved horizontal and especially vertical directivity. This necessitated using an 8" mid-bass driver, a compression driver that rolls off below 1 kHz, and a horn that can control directivity better than the B&C ME10 I used in Valeria…| Lack of Imagination
I’ve been using a pair of KEF LS50 Metas as my front speakers and my DIY KEF LS50 clone as the center channel speaker in my home theater for a while now. I’ve been generally happy with the smooth sound they produce, but there’s one thing lacking: dynamics. Lately, I’ve been thinking about building high-sensitivity speakers using pro-audio drivers. Horn-loaded compression drivers, which are used to reproduce high frequencies, can get really loud with little distortion…| Lack of Imagination
In a relational database, foreign keys are normally used to associate records stored in different tables, but wouldn’t it be nice to define relationships dynamically without having to add extra columns or tables? And while we’re at it, how about having sparse relationships by associating a record directly with any other record like “post X was last edited by user #123” or “post X was flagged for review by user #456” (who happens to be a moderator)?| Lack of Imagination
The great majority of the software architectures currently in use are variations of the layered architecture, and what really sets them apart is the implementation details. Some might find this statement controversial, but in my experience, most software applications rely on code organized in layers to manage complexity. Some of the layers may utilize message queues or microservices, but that doesn’t necessarily make the architecture event or microservices based…| Lack of Imagination
Over the past two decades, I’ve worked as a software developer, tech lead, and CTO at various startups, including my own. I’ve accumulated a number of principles I use to make major technical decisions. Most of the principles outlined here were learned the hard way. You might not fully agree with all of the principles, but I hope at least some of them could help those who struggle with tough technical decisions…| Lack of Imagination
Software development would be a lot easier without so many bugs. In a typical software application, there’s a never-ending stream of bugs as far as the eye can see. Some of the bugs make users’ lives miserable, some of them are annoying but can be dealt with workarounds, and the rest are mostly minor inconveniences…| Lack of Imagination
When you work with software developers, especially those with less experience, it’s virtually guaranteed to hear one of them utter a version of the above expression when someone presents them with a situation they think is impossible (or more likely, improbable) to happen in the program they’ve written…| Lack of Imagination
Over the years I’ve seen all sorts of SQL mistakes made by developers on my teams, and I’ve made quite a few of them myself. I’d like to share what I’ve learned with you, starting with security first…| Lack of Imagination
Since you can buy two to three pairs of KEF Q150 for the price of one pair of LS50 Meta depending on whether there’s a sale or not, I decided to build an LS50 clone using a Q150 driver to see if they would sound similar after equalization. The clone wouldn’t have the beautiful curved front baffle and better crossover of LS50 Meta, but it would otherwise be very similar in construction….| Lack of Imagination
When Design Patterns first got published, the year was 1994, a rather primitive time when functional programming languages that support first class functions were rarely used outside academia. These days, though, we have mainstream languages such as JavaScript and Python that can be used to trivially implement many of the design patterns described in the book with only a few lines of code…| Lack of Imagination
There are many ways to write automated tests for testing code, and you may have heard about test doubles for making testing easier. Some of the code we write is hard to test, so we replace those parts with fake test doubles that are easier to test…| Lack of Imagination
If you are a cash-strapped startup, you can usually get away with a team of just one or two developers and hope for the best. There’s absolutely nothing wrong with that. But if you have the funds to add new members to your team, don’t just go with more developers. Developers aren’t generally very good at designing products people want to use – they are good at implementing well-specced features…| Lack of Imagination
I use pro audio power amps in my home theater. They provide tons of power for little money. There is one major downside though. Most models feature noisy fans, and for a good reason – pro audio power amps are often run at their limits, and many manufacturers prefer to err on the side of caution. For home use though, you can usually get away with replacing the built-in fans with quieter ones…| Lack of Imagination
A few months ago, I bought an entry-level CNC router from a local supplier, knowing full well that I would probably need to modify it extensively. The price of the machine was right, and in case I decide to build a better one on my own, this machine would be a good starting point to learn how all the parts are connected together…| Lack of Imagination
For the casual, not so casual, and advanced users who would like to integrate subwoofers to their music or home theater systems…| Lack of Imagination
First a little context: At Faradai we had been using PostgreSQL on the ext4 file system for a number of years until it recently became evident that the constantly growing database size (over 5 TB at the time) would start to cause issues in general performance, cloud costs, and the ability to have reliable backups. We reviewed a number of alternative file systems, and chose ZFS mainly for its following three features…| Lack of Imagination
Vendor lock-in: An unfortunate condition that forces a person or company to continue using a disliked product or service just because they invested in it so much. Vendor lock-in used to affect mostly large companies using mission critical legacy applications, but as more and more companies move to the cloud, cloud providers started to rediscover the joys of vendor lock-in by offering “value-added” services that simplify the lives of software developers who have better things in life than ...| Lack of Imagination
Recently, I had a conversation with a junior developer on my team. Let’s call him Alan. We were talking about a new notification feature that was going to be used to send reminder e-mails to potentially thousands of people if they had forgotten to enter certain data in the last month or so. Alan was confident that the code he’d written was correct. “I’ve tested it well.”, he said…| Lack of Imagination
Linux comes with all the basic tools necessary to deploy an application to development and production environments, and to roll back to any past version if something goes wrong. It takes just a few commands to set everything up…| Lack of Imagination
In the beginning, there was only HTML. The first official HTML specification focused on semantic markup. There were minimal styling tags and attributes. It was up to the web browser how to render the markup in an HTML document. The whole specification was refreshingly simple. You could easily read it in one sitting…| Lack of Imagination