Tom Lieber's Microblog

Jun 8, 2023

Introducing Chat Notebooks: Integrating LLMs into the Notebook Paradigm

What a time to be alive.

I think I’ve used more OpenAI credits in the last hour than I have over the last month. 😂

Jun 5, 2023

I just created a Google Doc from Mathematica. I feel unstoppable.

May 30, 2023

Today I wrote a quick little post about exploring JSON REST APIs in Wolfram Language.

I wouldn’t have thought that Mathematica would be such a great environment for manipulating JSON, but its built-in dataset query APIs and table renderer are just good!

May 28, 2023

People think that when they turn their eyes from the earth to the sky they see the heavens.

The One-Straw Revolution by Masanobu Fukuoka 📚

May 28, 2023

ChucK continues to shine. 🎵 Today’s find: a real-time audio mosaic that plays audio clips from another source (in this case, A Day in the Life by The Beatles) whose features match the audio from the microphone.

Thumbnail from the video

May 10, 2023

The latest draft of my Wolfram Language tensor math article is up! I get into function minimization (kind of important in ML?) and pack in several cool purpose-built visualizations that take only a few lines each.

I’ve already drafted the next few sections and there’s fun stuff coming up… 😎

May 10, 2023

Elmo can do no wrong… except the Happy Dance. My kids will not abide it. They yell, “No Happy Dance!” as soon as Elmo learns something new. I don’t know why.

May 6, 2023

I just posted a massive new update to my tensor programming article draft, with an expanded introduction, a worked neural network example, matrix equation pretty-printing, and several gorgeous plots! This article is proving exceptionally fun to write. :)

May 3, 2023

I have a big ol’ writing project planned for exploring fundamental ML concepts in Wolfram Language.

When I’m trying to get work done, I use JAX, but when I’m trying to understand and visualize, I prefer to work symbolically. This article is going to demonstrate why. :}

Read the first section today!

May 2, 2023

Look at how dramatically Wolfram is rebranding. In their own marketing email, they introduce the company’s primary product as “Wolfram Language—the language behind the Wolfram plugin for ChatGPT.”

Apr 30, 2023

My workflow is nascent, but this is the snippet that allowed me to drop that last Mathematica notebook into my site template with no modifications:

Export["body.html", EvaluationNotebook[], "HTML",
 "CSS" -> None,
 "FullDocument" -> False,
 "GraphicsOutput" -> "PNG",
 "ConversionRules" -> {
   "Title" -> {"<h1>", "</h1>"},
   "Section" -> {"<h2>", "</h2>"},
   "Subsection" -> {"<h3>", "</h3>"},
   "Text" -> {"<p>", "</p>"},
   "Input" -> {"<pre>", "</pre>"},
   "Item" -> {"<li>", "</li>"}

I follow that up with cat head.html body.html tail.html > index.html.

By default, Mathematica turns all those cell types into <p> with classes like “Title” and “Section”, but once I switched to the semantic equivalents, they just worked.

I still haven’t figured out how I want to do margin notes, or how to wrap lists in <ol> or <ul>, or how to embed text versions of all the inputs that it renders as PNG—but in this case I felt that perfect was the enemy of good!

Apr 29, 2023

First they trained ChatGPT to answer questions with Wolfram Language, then they built a library for making your own functions available.

I’m excited about Mathematica again!

As a warmup for publishing more, I upgraded my contrastive representation learning notebook from PDF to beautiful HTML.

Apr 27, 2023

I’ve been noodling on one to the tune of “Let It Be”:

When my planet’s spice is in trouble
It’s time to train a new army
Seeking words of killing
Like Muad’dib

Like Muad’dib
Like Muad’dib
Like Muad’dib
Like Muad’dib
Seeking words of killing
Like Muad’dib

Apr 12, 2023

These could be exactly the same oil and I don’t care. The containers are SO much fun.

Apr 11, 2023

Research wanders about aimlessly, each researcher seeing just one part of the infinite array of natural factors…

Currently reading: The One-Straw Revolution by Masanobu Fukuoka 📚

Apr 10, 2023

What are some examples of apps that are designed for you to use them for a while, then delete them?

Apr 10, 2023

Just based on the experience of using web sites with “aspx” in the URL, I’m going to guess that the only way to call a function is to redirect the user to it, with all the state in the query params.

Apr 10, 2023

Beeminder has shepherded me through my 40th strength training workout of the year! I didn’t think I was a betting man, but having $5 on the line apparently makes a big difference in the absence of the social pressure I had when I worked in the same office as my workout buddy.

Apr 9, 2023

TIL the difference between With and ReplaceAll in Mathematica. I thought this would produce the same value twice:

a = b;
With[{b = 42}, a]
ReplaceAll[a, b -> 42]

But the second line evaluates to b and the third line to 42.

With evaluates before the substitution from a to b.

Apr 9, 2023

Usually when I contradict ChatGPT, I get, “I apologize for the confusion earlier,” but today I actually managed, “You bring up an insightful point.” 😳

Apr 8, 2023

So long, Twitter.

Apr 7, 2023

The kids are finally old enough to LOVE roleplay, so I’ve been inventing characters for all their stuffed animals. This puppy doesn’t look it, but it’s the most erratic so far. 😂

Apr 7, 2023

I somehow convinced my wife to sign up for ChatGPT and have a conversation with it to figure out what show we should watch next. It made a great recommendation—Better Things! Binged for hours last night. :)

Apr 4, 2023

I’ve never been good at playlists, but I dipped my toe in the water a few months ago by starting what’s now become a tradition.

On the first of the month, I create a new playlist. Then I play it on shuffle the whole month.

Now I have a place to put new music I want to try out (MusicBox wasn’t working for me) and a place to re-find songs I was listening to recently. And a snapshot of how I was feeling any given month!

Apr 4, 2023

I think I understand RxJS pretty well now. I even muddled my way through writing a custom Observable. How come Combine is so hard for me to get right? How come posts like this make my head spin? 😅