Today I attended Builder’s Roundtable: Generative AI for eCommerce. It was pretty good. 2x it, or, better - get your AI to watch the replay for you.

There were a few interesting ideas on customizing generative AI for eCommerce. Unfortunately I think the OctoAI product still has a long way to go, I frankly was not impressed with the onboarding experience after getting amped up by this webinar.

But one quote stuck with me all day. It has nothing to do with AI:

Find something that you’re really passionate about, find something that you can become the best in the world at, and find something that you can make money doing.

Hikary Senju, Omneky

I think this is fantastic advice for anyone, not just entrepreneurs. A trifecta of how to decide what to work on. (58:39 in the video)

Dalle3 made this diagram. I don't know what the symbol in the middle is, but I think you get the point.

Incentive Structures

“Show me the incentive, and I will show you the outcome.” - Charlie Munger

This weekend I’ve been thinking a lot about incentive structures. (RIP Charlie Munger)

I don’t think I have any new “crispy realizations”, but here are a few related items:

The Pace Is Exhausting

The pace of AI development over the last few months has been simply exhausting. Exhilarating, but exhausting.

Just look at this chart. This is just the open source LLMs.

I don’t check this leaderboard very often, but the Mistral models that were winning two weeks ago aren’t even in the top 20.

Here’s some cool stuff I found since I ate dinner an hour ago. (Sorry, I literally don’t know what else to do…there’s too much cool stuff.)

  • WikiChat on GitHub: WikiChat enhances the factuality of large language models by retrieving data from Wikipedia.
  • LLMCompiler on GitHub: LLMCompiler is a framework for efficient parallel function calling with both open-source and close-source large language models.
  • Flowise on GitHub: Flowise offers a drag & drop user interface to build customized flows for large language models.

For those that follow, you’ll know I’m currently obsessed with AI, voice to text transcription, and the intersection of AI and voice-to to text transcription.

I wrote some thoughts about “the perfect voice transcription tool” - which unfortunately still doesn’t exist.

But what did happen this week is that MacWhisper found a way to 3x the speed of their transcription model. And that boost in speed is enough to make it better than Otter or HappyScribe for my use case.

So yesterday I unsubscribed from HappyScribe.

MacWhisper transcribes locally on your machine. You can trade accuracy for speed, and it has a free tier. I’ve paid for it because I want to support Jordi, and because I want to run batches of audio files through it.

The quality isn’t quite as good as HappyScribe, but since its local I can quickly get ChatGPT (or Jordi’s MacGPT) to fix it up. The added time to fix the differential errors is less than the time it takes to upload to HappyScribe, wait for the transcription, and download the file.

Modular Frankenstein

I’ve been working on my AI “content machine” for polySpectra. As I wrote before, quantity is very easy, but quality is a challenge.

It is very easy to output nonsense. I have been able to achieve a high throughput of “SEO-optimized nonsense”, but I have been having a hard time getting technical content that isn’t more work to edit than it would have been to just write myself (or write step by step by “holding the AI’s hand”).

I also got “greedy” and was trying to build a system that would go “all the way” from ideas/keywords to fully written articles. This was too ambitious.

So now I’m taking a more modular approach. First building up the foundational concepts and research and structure, which will later serve as the training data for AI-assisted writing. My modular approach also involves a human-in-the-loop at every stage - because nothing is more annoying than propagating errors with AI.

But my eye is on scalability, so I’m making sure that each stage of the process is able to run in parallel, concurrently. In other words, the non-human steps should take the same amount of time for one or one thousand.

My big “it’s alive” moment today was getting GPTResearcher from Tavily to run concurrently:

🧟‍♂️ It's alive!

This did about 15 reports in about 3 minutes. I haven’t pushed to see when I hit my OpenAI API limit.

As breadcrumbs, here are the “resource reports” that I generated: https://polyspectra.com/tags/resource-reports/. These are not very engaging, nor are they meant to be, but they will serve as the foundation for the next step…

In addition to the human oversight at each step, this modular approach also let’s me mix and match the best tools for the job. Tavily is great for research, but the writing style is pretty rigid, and I don’t feel like re-writing it’s guts. So use it just for the step that it excels at.

Big Companies Love Big Data

There are three reasons why big companies are so obsessed with big data.

One, there are very few people inside the company that actually have a clue about what’s really important. (Or at least a low density of people who have a clue.)

Two, the people who do have a clue unfortunately have to justify every activity and expense to people who don’t have a clue. (And the people who don’t have a clue are usually the ones who are in charge of the budget.)

Three, big data makes it easier to draw spurious correlations. At least the people who don’t have a clue, and maybe the ones that do have a clue but just don’t understand statistics - they have no idea that the projection that they’re looking at, the extrapolation that justifies the decision, has no basis in reality.

Big hug for big data.

Happy Birthday polySpectra

Today is polySpectra’s 7th birthday.

I spent the morning walking slowly, reflecting on the past seven years…and the next seven.

(…As is my usual morning ritual, dictating into my Yealink BH71 Pro headset.)

Here are seven reflections to celebrate seven years of polySpectra.

For fun, I’ll share some of the rejected cakes that didn’t make it into the official company post.

(5th time was a charm, because DALL·E 3 Can Almost Spell.)

Time for Play

I’m not always the best at making time for play. It’s very easy as an entrepreneur to have everything be about work in some way or another. Once the vision is big enough, there is no practical end.

This evening I discovered something wonderful (to me): WebChuck

It instantly transported me back to my days in PLOrk, where I first learned computer science, in ChucK.

(I do not recommend ChucK as your first programming language, I had a lot of unlearning to do.)

I hacked one of the demos for fun. It’s a little arpeggiator that plays a harmonic series. I added a low pass filter and an echo. I also added a slider for the filter frequency and a slider for the echo mix. Change chop to change the base frequency. Change slow to change the tempo.

Today, I made just a little bit of time for play. I’m glad I did. Maybe I’ll try it again someday.

Hello, WebChuck

Copy and paste the code below into the editor at WebChuck to play with it yourself.

// Harmonic Series Arpeggiator
// Written by Terry Feng
// CHANGE ME! ADD MULTIPLE SHREDS!
// Completely ruined by Raymond Weitekamp

1 => float chop; //let's go bro
1 => float slow;

//GUI bro
0.5 => global float f; // global variables create a GUI slider
0 => global float e; 


220 => float baseFrequency; // starting frequency
12 => int numHarmonics; // number of harmonics to play
125::ms => dur noteDur; // note duration

// Unit Generator
SawOsc osc => LPF lpf => Echo a => dac;
osc.gain(0.5);

while (true) 
{
    // Loop through the number of harmonics
    for (0 => int i; i < numHarmonics; i++)
    {
        // Update the oscillator frequency to the next harmonic
        (baseFrequency + (i * baseFrequency))/chop  => osc.freq; 
        
        //gui freqs
        f * 20000 => lpf.freq;
        e => a.mix;
        
        // Advance time to play the note
        (noteDur * slow) => now;
    }
}

Trauma-Informed Marketing

Today I started thinking a lot about the fact that the 3D printing industry is “traumatized”. I am not necessarily using this word in a clinical (DSM-5) sense, but rather in the sense that the industry has been through a really hard time. It is hard to imagine more of a rock bottom.

So in this analogy, under the hypothesis that the collective behavior of the industry is influenced by this trauma, what does that mean for marketing?

I intend to write a longer post about this, but for now I will just say that I think it means that the industry is very sensitive to any kind of “salesy” or “hypey” marketing.

Big launches with the Chicago Bulls cheerleaders (actually happened and was as cringe-worthy as it sounds) are not going to work. Neither are the “we’re going to change the world” pitches. Everyone is too f*ing tired for that.

The customers are traumatized by 40 years of false promises. The OEMs are traumatized by the complete evaporation of any investor interest in the industry. The investors are traumatized by the fact that they lost a lot of money. The markets are traumatized by the hostile takeovers and failed merger attempts. The founders are traumatized by their balance sheets. The employees are traumatized by the never-ending re-orgs. (Again, hopefully “lower case t” trauma for most, but still trauma.)

What do we need to do instead?

Build trust and rapport. Be honest. Be transparent. Be vulnerable. Be human.

I think this will ultimately be a good thing for a historically frothy industry. The “fair weather” participants are already gone. I think it will lead to a healthier and more legitimate additive manufacturing sector. I think it will lead to better products. I think it will lead to better companies. I think it will lead to more trust and education between AM companies and engineers.

I’m curious to hear what you think, especially if there are lessons learned from other industries that have been through similar experiences.

We need some therapy for the 3D printing industry.