Improving SFDR in a Python Direct Digital Synthesis Model

Mon, Sep 20, 21

A first pass at digital frequency synthesis is relatively easy to pull off using some simple tricks in Python. It’s not rocket science to string together a basic accumulator and a sine lookup table to make a sine wave output. However, we left off noting some spurious output in the synthesized sine wave. What can we do about that?

Engineers, Don't Start Your Career at a Startup

Tue, Sep 07, 21

Hardware engineers: it’s a bad idea to start your career at a startup. I’ve cautioned this in private several times, to several different people, and I’ve decided that it’s time I release this hot take to the world.

Simulating a Direct Digital Frequency Synthesizer in Python

Thu, Aug 26, 21

I can’t seem to crack my obsession with Direct Digital Synthesis. I had to learn rather a lot about it as part of working on bFunc last year. Even though I’ve sort of decided to not build a second version of bFunc, I still find the concept of digital frequency synthesis really interesting. It’s a fun little mix of analog and digital signal processing. So, with that, I decided: why not try and build my own direct digital synthesis engine? I’ve got nothing but time on my hands, a Jupyter notebook, and an open source VHDL compiler. You can find my efforts thus far on GitHub.

Fixing Power Supply Noise in Guitar Pedals

Sun, Aug 22, 21

Works with many audio circuits that arent guitar pedals, too.

How to Drive LTSpice Simulations with Wav Files

Wed, Aug 18, 21

I’ve had a lot of fun over the past few years using LTSpice to analyze guitar effects pedals. One request that’s come in with relative frequency has been: “Can you use an MP3 or WAV file as an input to the simulation to see how the pedal would sound?”

Why there probably won't be a bFunc Version 2

Wed, Aug 11, 21

I spent a few weeks last year working on bFunc, a design I made for an open source function generator. I actually got to the point where I built, brought up, debugged, and sold copies of this first board version. I’ve considered making a second version that fixes some of the original issues, adds features, and generally makes it a more complete product, but I don’t think I will. Having done this once already and fallen on my face a bit, I’ve come to realize that the business incentives in the Engineering Test Equipment space are kind of stacked against me.

How I Run User Interviews for Report Card Writer

Thu, Aug 05, 21

I’ve developed a pretty good playbook for the user interviews I run for Report Card Writer. My process is heavily inspired by Rob Fitzpatrick’s book The Mom Test, so if you’ve read that, nothing here will surprise you. If you haven’t read it - well, read this page first, and then go read Rob’s book. It’s the best book I’ve ever read on running user interviews!

Report Card Writer: What I've Learned from One Year of User Interviews and Customer Feedback

Tue, Jul 27, 21

Almost exactly a year ago, I started a little boutique software company called Report Card Writer. As the name suggests, my flagship software product does pretty much one thing: it helps teachers write report card comments faster. Its core technical functionality is part survey form, part template-filler-inner, with a few extra bolt-on features that make it easy to create and populate the form and template, respectively.

Portfolio Project Ideas for the Embedded Developer

Mon, Jul 26, 21

A friend of mine recently reached out about moving his career back towards embedded systems. He asked for a few project ideas that he could do to demonstrate his understanding of the field to potential employers. This is a real simple, first-pass list of project ideas that we came up with.

Are you making placement diagrams?

Wed, Mar 10, 21

Whenever I’ve needed to spin a circuit board these last few years, I’ve taken a bit of time early on in the process to make a placement diagram. I don’t know if this is an industry standard thing that I’ve just never heard of before, but seeing as I’ve never heard of it, I’d like to take this opportunity to coin the term “placement diagram”. A placement diagram is nothing special: it’s a block diagram, where each block represents a chip in a circuit layout, with sub blocks representing pin groupings on each chip. Lines drawn between each pin grouping represents IO connections, or buses between chips. The idea is to have a really simple representation of where each set of pins (power, data buses, DAC/ADC pins) breaks out on the chips in your layout, so you can plan for arranging them on a printed circuit board. This need not be super time consuming. For a simple two or four layer design, I can whip one out in an hour. For a larger board with multiple ICs, voltage regulators, and a higher layer count, it’s probably the work of a day.