<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Carlos Tarjano</title>
    <description>The latest articles on DEV Community by Carlos Tarjano (@tesserato).</description>
    <link>https://dev.to/tesserato</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2906549%2F310887c8-ad92-4cda-9fc7-ff08877cb5e4.jpg</url>
      <title>DEV Community: Carlos Tarjano</title>
      <link>https://dev.to/tesserato</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tesserato"/>
    <language>en</language>
    <item>
      <title>The Fall of a Prolific Science Journal Exposes the Billion-Dollar Profits of Scientific Publishing</title>
      <dc:creator>Carlos Tarjano</dc:creator>
      <pubDate>Fri, 28 Nov 2025 00:00:00 +0000</pubDate>
      <link>https://dev.to/tesserato/the-fall-of-a-prolific-science-journal-exposes-the-billion-dollar-profits-of-scientific-publishing-48fe</link>
      <guid>https://dev.to/tesserato/the-fall-of-a-prolific-science-journal-exposes-the-billion-dollar-profits-of-scientific-publishing-48fe</guid>
      <description>&lt;p&gt;This El País article details the expulsion of &lt;em&gt;Science of the Total Environment&lt;/em&gt; (STOTEN) from the Clarivate indexing system, a major blow to its reputation. The journal, under the editorship of Damià Barceló, had ballooned its output to nearly 10,000 articles annually, including scientifically dubious papers such as one claiming jade amulets could prevent COVID-19.&lt;/p&gt;

&lt;p&gt;The scandal highlights the deep structural rot in academic publishing. With the shift to “Open Access,” the business model moved from “pay-to-read” to “pay-to-publish.” This created a perverse incentive: the more papers a journal accepts, the more money it makes. Elsevier, the owner of STOTEN, reportedly operates with a 38% profit margin—accumulating $1.5 billion in 2024 alone.&lt;/p&gt;

&lt;p&gt;The article argues that this “factory farm” approach to science, driven by the “publish or perish” culture in academia, is funneling billions of public research dollars into the pockets of private publishing giants like Elsevier, Springer Nature, and Wiley, often at the expense of scientific rigor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://english.elpais.com/science-tech/2025-11-28/the-fall-of-a-prolific-science-journal-exposes-the-billion-dollar-profits-of-scientific-publishing.html" rel="noopener noreferrer"&gt;link&lt;/a&gt;&lt;/p&gt;

</description>
      <category>science</category>
      <category>publishing</category>
    </item>
    <item>
      <title>The Animate and The Inanimate</title>
      <dc:creator>Carlos Tarjano</dc:creator>
      <pubDate>Tue, 04 Nov 2025 00:00:00 +0000</pubDate>
      <link>https://dev.to/tesserato/the-animate-and-the-inanimate-4j50</link>
      <guid>https://dev.to/tesserato/the-animate-and-the-inanimate-4j50</guid>
      <description>&lt;p&gt;A cosmological treatise written by the child prodigy William James Sidis in 1920, in which he theorizes about the origin of life in the context of thermodynamics and the second law, proposing a "reverse" universe.&lt;/p&gt;

&lt;p&gt;The book can be found freely in &lt;a href="https://www.sidis.net/animate.pdf" rel="noopener noreferrer"&gt;Sidis Archives&lt;/a&gt; or at the &lt;a href="https://archive.org/details/TheAnimateAndTheInanimate.W.J.Sidis/page/n3/mode/2up" rel="noopener noreferrer"&gt;Internet Archive&lt;/a&gt;, with and audiobook version in &lt;a href="https://librivox.org/the-animate-and-the-inanimate-by-william-james-sidis/" rel="noopener noreferrer"&gt;LibriVox&lt;/a&gt; and &lt;a href="https://www.youtube.com/watch?v=6453yOu_00Q" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>book</category>
      <category>nonfiction</category>
      <category>science</category>
    </item>
    <item>
      <title>Vibe-coding a markdown preprocessor for free in a weekend</title>
      <dc:creator>Carlos Tarjano</dc:creator>
      <pubDate>Mon, 13 Oct 2025 00:00:00 +0000</pubDate>
      <link>https://dev.to/tesserato/vibe-coding-a-markdown-preprocessor-for-free-in-a-weekend-4a55</link>
      <guid>https://dev.to/tesserato/vibe-coding-a-markdown-preprocessor-for-free-in-a-weekend-4a55</guid>
      <description>&lt;p&gt;While I am no stranger to coding, I decided to try to “vibe code” a markdown preprocessor from the ground up. The idea was to replace some mathematical manipulations I’ve been doing using Python notebooks with something cleaner. The basic idea was to have something that runs selected code fences in markdown files and replaces them with the actual result.&lt;/p&gt;

&lt;p&gt;The full history, including the reasoning from the models that feature this capability, is available at the app’s &lt;a href="https://github.com/tesserato/Inscribe" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; (make sure to give it a star!). From the initial concept to the choice of programming language, and even the name (twice!), everything was vibe coded.&lt;/p&gt;

&lt;p&gt;The Claude history was downloaded with the Claude Exporter &lt;a href="https://www.claudexporter.com/en" rel="noopener noreferrer"&gt;Chrome extension&lt;/a&gt;. To feed the codebase to the models when necessary, I used &lt;a href="https://github.com/tesserato/CodeWeaver" rel="noopener noreferrer"&gt;CodeWeaver&lt;/a&gt;, a CLI I made a while back.&lt;/p&gt;

&lt;p&gt;Without further ado:&lt;/p&gt;

&lt;p&gt;I started using Gemini 2.5 Pro via &lt;a href="https://aistudio.google.com/" rel="noopener noreferrer"&gt;https://aistudio.google.com/&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;I would like to make a markdown preprocessor CLI that runs code fences and replaces them with their result. Which language would be better? Rust, Haskell, or another one?&lt;/p&gt;

&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;The model provided a comprehensive breakdown of the options. It highlighted Rust for its best-in-class performance and safety, though it warned of a steep learning curve. It suggested Haskell for parsing elegance and Go or Python for rapid development. Crucially, it flagged the massive security vulnerability of running arbitrary code from a document, suggesting I implement sandboxing or whitelisting.&lt;/p&gt;

&lt;p&gt;Despite the warnings about the learning curve, I decided to go with &lt;strong&gt;Rust&lt;/strong&gt; for its robustness and the ability to ship a single binary.&lt;br&gt;&lt;br&gt;
If you intend to make an app public, it is important to think of a unique name for it from the beginning and check if the relevant repositories are available (which I only did later…), so I asked:&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;What could be nice names for this app?&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;The AI suggested several categories of names: descriptive ones like “MarkRun,” metaphorical ones like “Forge” or “Catalyst,” and punchy CLI names like “Etch” or “Ink.” One stood out for its evocation of ancient magic and reading, so I chose &lt;strong&gt;Scroll&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;With the language and name settled, I needed a blueprint.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;develop some specifications for this app i have chosen Rust as the programming language and Scroll as the name of the app. The idea is to have the following code run for example (both inline and the block code fences:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import pandas as pd
import plotly.graph_objects as go
from plotly.subplots import make_subplots

# CSV data as a string (replace with file reading if data is in a separate file)

# Save the data to a file (for this script's execution)
# In a real scenario, you'd just provide the filename
file_path = "health.csv"

for file_path in ["health.csv", "health Samara.csv"]:
    # 1. Read the data from disk
    try:
        df = pd.read_csv(file_path)
    except FileNotFoundError:
        print(f"Error: The file '{file_path}' was not found.")
        exit()
    except Exception as e:
        print(f"Error reading the CSV file: {e}")
        exit()

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;in place text &amp;gt;python&lt;code&gt;code to be run&lt;/code&gt; rest of the stuff&lt;/p&gt;

&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;The model drafted a detailed specification. It proposed using &lt;code&gt;clap&lt;/code&gt; for CLI arguments and &lt;code&gt;pulldown-cmark&lt;/code&gt; for parsing. It suggested a syntax similar to R Markdown (using curly braces &lt;code&gt;{}&lt;/code&gt; inside the code fence info string) and a TOML configuration file to manage runners. While solid, it felt a bit too heavy for the lightweight tool I envisioned.&lt;/p&gt;

&lt;p&gt;I wanted something cleaner that wouldn’t break syntax highlighting in editors.&lt;/p&gt;

&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;the syntax should be based on a comment before each block, so the syntax highlight is not broken. Also, a list of commands and languages could be passed as argument to the execution. […]&lt;/p&gt;

&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;The model pivoted to a “magic comment” syntax (e.g., &lt;code&gt;&amp;lt;!-- scroll: execute --&amp;gt;&lt;/code&gt;) placed before code blocks. However, it started adding complex state management for arguments and configurations. I realized I was letting the scope creep, so I told it to strip it back: no arguments, no config files, and—perhaps controversially—drop the security guardrails. If you run &lt;code&gt;scroll&lt;/code&gt; on a file, you trust that file.&lt;/p&gt;

&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;it is getting over complicated. The is no need to pass arguments to the scripts. Inline code should also be activated by comments. There is no need for a config file either. The comment will specify a language and optionally a command to run the following code. Once specified, this command is the default for that language until changed. Also, drop the security measures. If scroll is explicitly run to preprocess a file, the risks are known.&lt;/p&gt;

&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;We were getting closer, but the architecture still felt heavy. The model was designing a system to manage long-running processes and inter-process communication. I realized we could simplify everything by treating the whole operation as a batch job.&lt;/p&gt;

&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;how about not keeping track of running processes? Just read the md, assemble one script for each language, insert the necessary print statements, run the scripts get the results and replace them?&lt;/p&gt;

&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;This was the breakthrough moment. The model validated this &lt;strong&gt;“Batch Execution”&lt;/strong&gt; approach. Instead of keeping a complex REPL open, &lt;code&gt;Scroll&lt;/code&gt; would simply read the whole file, glue all Python blocks into one big script, run it once, and splice the output back in.&lt;/p&gt;

&lt;p&gt;I refined the spec one last time to ensure ease of use:&lt;/p&gt;

&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;1 if no directive to define the runner is given, use sensible defaults&lt;br&gt;&lt;br&gt;
2 no need to handle artifacts. Just make sure the script has the same working directory as the file, and the user can simply generate the artifact and create the markdown piece that user it&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;The model generated a final, clean specification: a two-pass batch system where the user is fully responsible for the code they write. A quick syntax tweak to make it even cleaner:&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;great! Just drop the lang and : from the syntax (&amp;lt;!-- scroll:lang  command="" --&amp;gt; should be &amp;lt;!-- scroll  command="" --&amp;gt; and we are good to go!&lt;/p&gt;

&lt;p&gt;Before writing code, I checked for any blind spots.&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;The model suggested adding &lt;strong&gt;Watch Mode&lt;/strong&gt; (re-running on file save) and &lt;strong&gt;Caching&lt;/strong&gt;. These were excellent ideas, so I asked to incorporate them into the plan immediately, along with better error handling.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;Change the following:&lt;br&gt;&lt;br&gt;
1 for the error, when some error ocurr, generate another file ie: .err.md, and not the original one&lt;br&gt;&lt;br&gt;
2 Watch Mode and Caching. Env vars should be setted normally and read from the generated scripts,&lt;br&gt;&lt;br&gt;
3 make sure the implementation is cross platform.&lt;/p&gt;

&lt;p&gt;Then, generate an implementation plan for the app&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;With the plan solid, it was time to generate the code.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;great! Generate the complete files and step by step instructions to implement scroll&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;The model generated the initial Rust code, split into &lt;code&gt;parser.rs&lt;/code&gt;, &lt;code&gt;executor.rs&lt;/code&gt;, and &lt;code&gt;main.rs&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I then started a new session with Gemini to iterate on this base code and handle specific implementation details, feeding it the code generated in the previous step.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;Change the codebase as little as possible so that the example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# My Report

This report demonstrates `scroll`. First, let's define a variable in Python.
&amp;lt;!-- scroll --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
python&lt;br&gt;
message = "Hello from a persistent Python script!"&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Now, let's print that variable in a separate code block.
&amp;lt;!-- scroll --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
python&lt;br&gt;
print(message + "\n")&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;And here is a calculation:
&amp;lt;!-- scroll --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
python&lt;br&gt;
x = 100&lt;br&gt;
y = 50&lt;br&gt;
print(f"The result is: {x + y}")&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
And here is a calculation `x + y` = &amp;lt;!-- scroll --&amp;gt;`x + y`:


is correctly transformed into:

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  My Report
&lt;/h1&gt;

&lt;p&gt;This report demonstrates &lt;code&gt;scroll&lt;/code&gt;. First, let's define a variable in Python.&lt;br&gt;
Now, let's print that variable in a separate code block.&lt;br&gt;
Hello from a persistent Python script!&lt;/p&gt;

&lt;p&gt;And here is a calculation:&lt;br&gt;
The result is: 150&lt;/p&gt;

&lt;p&gt;And here is a calculation &lt;code&gt;x + y&lt;/code&gt; = 150:&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;The model understood that to achieve this, we needed a more robust parsing strategy.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;Formulate a plan for a more elegant solution for engine.rs. Output only the plan.&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;The model proposed a complete architectural overhaul. Instead of messy regex replacements on the raw string, it suggested a &lt;strong&gt;Single-Pass Parser&lt;/strong&gt; creating an intermediate representation (&lt;code&gt;Vec&amp;lt;Segment&amp;gt;&lt;/code&gt;), followed by a &lt;strong&gt;Batch Execution&lt;/strong&gt; phase, and finally a &lt;strong&gt;Sequential Assembly&lt;/strong&gt; phase.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;Does this handles blocks that doesn’t generate outputs, and blocks that generate multiple outputs?&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;The model confirmed that by using a delimiter strategy (printing a unique string between blocks), it could correctly map empty outputs (side-effect only code) and multi-line outputs back to their respective blocks.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;great. but how we inject that in arbitrary languages, without knowing its &lt;code&gt;print&lt;/code&gt; keyword?&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;This was a tricky one. The model originally wanted to hardcode &lt;code&gt;print&lt;/code&gt; statements inside the engine. When challenged, it pivoted to a configuration-driven approach where the &lt;code&gt;Runner&lt;/code&gt; struct defines &lt;em&gt;how&lt;/em&gt; to print a delimiter for that specific language.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;there is no need for inline_template. The user should implement the print, if he wants to, himself (sorry for the malformed example)&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;I realized I was over-engineering the “magic.” I wanted the user to have full control. If they want output, they print it. The model simplified the &lt;code&gt;Runner&lt;/code&gt; struct to remove implicit formatting templates.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;great. One last think: During the md, the user can redefine the runner. How we deal with that?&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;This added a layer of complexity: state changes &lt;em&gt;mid-document&lt;/em&gt;. The model correctly identified that we needed to track the “Active Runner” state linearly as we parsed the document, grouping code blocks into batches based on the runner configuration active &lt;em&gt;at that moment&lt;/em&gt;.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;Great! Generate the complete changed files to implement this, for easy copy and paste!&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;The model generated the code. I pasted it in. It compiled, but runtime errors appeared immediately.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;Compiling scroll v0.1.0 (C:\Users\carlos.t.santos\Desktop\Files\Reps\Scroll)&lt;br&gt;&lt;br&gt;
Finished &lt;code&gt;dev&lt;/code&gt; profile [unoptimized + debuginfo] target(s) in 2.11s&lt;br&gt;&lt;br&gt;
Running &lt;code&gt;target\debug\scroll.exe -help&lt;/code&gt;&lt;br&gt;&lt;br&gt;
A markdown preprocessor that executes embedded code blocks&lt;br&gt;&lt;br&gt;
…&lt;br&gt;&lt;br&gt;
Finished &lt;code&gt;dev&lt;/code&gt; profile [unoptimized + debuginfo] target(s) in 0.05s&lt;br&gt;&lt;br&gt;
Running &lt;code&gt;target\debug\scroll.exe example.md -o example.out.md --watch&lt;/code&gt;&lt;br&gt;&lt;br&gt;
❌ Error: Runner for ‘–&amp;gt;’ is missing a ‘command’&lt;/p&gt;

&lt;p&gt;👀 Watching for changes in ’example.md’. Press Ctrl+C to exit.&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;The regex was too greedy. It was trying to parse the closing comment arrow &lt;code&gt;--&amp;gt;&lt;/code&gt; as a language name.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;the error persists. Let me make a test: how should be the output of the example, and why?&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;I forced the model to verbally walk through the logic to prove it understood the task before generating more code. It correctly identified that the regex was ambiguous and fixed it.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;Compiling scroll v0.1.0 (C:\Users\carlos.t.santos\Desktop\Files\Reps\Scroll)&lt;br&gt;&lt;br&gt;
Finished &lt;code&gt;dev&lt;/code&gt; profile [unoptimized + debuginfo] target(s) in 4.40s&lt;br&gt;&lt;br&gt;
Running &lt;code&gt;target\debug\scroll.exe -help&lt;/code&gt;&lt;br&gt;&lt;br&gt;
…&lt;br&gt;&lt;br&gt;
Finished &lt;code&gt;dev&lt;/code&gt; profile [unoptimized + debuginfo] target(s) in 0.14s&lt;br&gt;&lt;br&gt;
Running &lt;code&gt;target\debug\scroll.exe example.md -o example.out.md --watch&lt;/code&gt;&lt;br&gt;&lt;br&gt;
❌ Error: Execution failed for command ‘python’.&lt;br&gt;&lt;br&gt;
Stderr:&lt;br&gt;&lt;br&gt;
Traceback (most recent call last):&lt;br&gt;&lt;br&gt;
File “”, line 1, in &lt;br&gt;&lt;br&gt;
NameError: name ‘message’ is not defined&lt;/p&gt;

&lt;p&gt;👀 Watching for changes in ’example.md’. Press Ctrl+C to exit.&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;This error revealed a critical flaw in the batching logic. It was grouping &lt;em&gt;adjacent&lt;/em&gt; blocks, but if there was text between them, it started a new batch (and a new process), causing variables defined in the first block to be lost. The model had to rewrite the engine to collect &lt;em&gt;all&lt;/em&gt; blocks for a specific runner configuration across the entire file into a single batch.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;It works. Just a little problem with newlines:&lt;/p&gt;
&lt;h1&gt;
  
  
  My Report
&lt;/h1&gt;

&lt;p&gt;This report demonstrates &lt;code&gt;scroll&lt;/code&gt;. First, let’s define a variable in Python.&lt;/p&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;message = "Hello from a persistent Python script!"

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Now, let’s print that variable in a separate code block.&lt;/p&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;print(message + "\n")

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This problem actually persisted for about 10 more exchanges, at which point I decided to try Claude’s Sonnet 4.5. I try to use it sparingly because of the inferior requests limit. I do not find it particularly better or worse than other models, but sometimes it offers new insights.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;Can you simplify and fix this code? &lt;a href="https://github.com/tesserato/Inscribe/blob/main/example.md" rel="noopener noreferrer"&gt;example.md&lt;/a&gt; should be transformed exactly into &lt;a href="https://github.com/tesserato/Inscribe/blob/main/example.out.md" rel="noopener noreferrer"&gt;example.out.md&lt;/a&gt;, respecting the newlines&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;Claude analyzed the code and pointed out that the replacement logic was complex and error-prone.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;File: example.out.md&lt;/p&gt;

&lt;p&gt;that was the generated output…&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;Claude realized that the double newlines were coming from Python’s implicit newline and the tool adding another one.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;File: example.out.md&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;We went back and forth on the exact expected output structure.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;File: example.out.md&lt;/p&gt;

&lt;p&gt;Try to simplify the regexes and the implementation in general&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;Claude proposed a simplified regex strategy.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;runners must be able to be overwritten during the script&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;Claude fixed a regression: runners must be parsed linearly, not upfront.&lt;/p&gt;

&lt;p&gt;I decide to start a new prompt with Claude, and ask why the error:&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;File:&lt;br&gt;&lt;br&gt;
File: example.md&lt;br&gt;&lt;br&gt;
File: example.out.md&lt;/p&gt;

&lt;p&gt;why python x = 100 y = 50 print(f"The result is: {x + y}") is getting a newline before it?&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;The model found the regex wasn’t consuming the newline &lt;em&gt;before&lt;/em&gt; the block.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;the output is like this:&lt;/p&gt;
&lt;h1&gt;
  
  
  My Report
&lt;/h1&gt;

&lt;p&gt;This report demonstrates scroll. First, let’s define a variable in Python.&lt;/p&gt;

&lt;p&gt;…&lt;/p&gt;

&lt;p&gt;And here is a calculation x + y = 150:&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;Claude confirmed the blank lines were correct: they reflected the original file’s structure.&lt;/p&gt;
&lt;h3&gt;
  
  
  Branding and Documentation
&lt;/h3&gt;

&lt;p&gt;With the code finally working perfectly, I returned to Gemini to prepare for release. It was time to make it professional.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;create some nice examples to showcase the functionality of this codebase&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;Gemini generated examples:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;System reports&lt;/li&gt;
&lt;li&gt;Custom runners&lt;/li&gt;
&lt;li&gt;Data visualization with matplotlib&lt;/li&gt;
&lt;li&gt;Reading JSON files&lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;Can you improve the readme? Be sure to add a mention to Watch mode&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;It generated a polished, badge-rich README including Watch Mode.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;in key feature, generate a line about how the session is preserved for each language. Output only the new line&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stateful Execution:&lt;/strong&gt; Code blocks of the same language share a single runtime session, allowing variables and state to persist.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;the name scroll is taken. Can you think of other nice names?&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;It tried: MarkRun, Quill, Fuse…&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;nope. all taken&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;It tried harder: Sigil, Weft, Inscribe, Markout.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;Inscribe it is! Generate a professional readme for the app&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;It generated a new README for &lt;strong&gt;Inscribe&lt;/strong&gt;.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;change the codebase to reflect the renaming&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;It updated all references from &lt;code&gt;scroll&lt;/code&gt; to &lt;code&gt;inscribe&lt;/code&gt;: Cargo.toml, regexes, README, config, engine, docs.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;professionally comment this codebase so I can upload it to crates.io&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;The model added crate-level, module-level, and API-level documentation.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;generate a show hn text&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;It drafted three Show HN variants.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;just clear the list below for the body text&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Execute Code Fences:&lt;/strong&gt; Run code from various languages directly within your markdown.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Language Support:&lt;/strong&gt; Built-in runners for Python, JavaScript/Node, Ruby, Shell (&lt;code&gt;bash&lt;/code&gt;, &lt;code&gt;sh&lt;/code&gt;), and more.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customizable Runners:&lt;/strong&gt; Easily define custom commands for any language (e.g. use &lt;code&gt;python3.11&lt;/code&gt; instead of &lt;code&gt;python&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inline Code Execution:&lt;/strong&gt; Run and replace short, inline code snippets for dynamic text.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;File Watching:&lt;/strong&gt; Automatically reprocess your document whenever the source file changes for a seamless workflow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Post-Processing Hooks:&lt;/strong&gt; Run any command (like a static site generator or &lt;code&gt;pandoc&lt;/code&gt;) after a file is successfully processed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Standard I/O:&lt;/strong&gt; Works seamlessly with &lt;code&gt;stdin&lt;/code&gt; and &lt;code&gt;stdout&lt;/code&gt; for easy integration into Unix pipelines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stateful Execution:&lt;/strong&gt; Code blocks of the same language share a single runtime session, allowing variables and state to persist from one block to the next.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;A plain-text body list was produced for showHN/posting reuse.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;just clear the formatting, since there is plain text&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Execute Code Fences:&lt;/strong&gt; Run code from various languages directly within your markdown.
…&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;All markdown bolding and icons removed; plain text version output.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;change the code below to also output current date and time in human readable format:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;            println!(
                "\n🔄 Detected change, reprocessing '{}'...",
                input_path.display()
            );

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;&lt;code&gt;chrono&lt;/code&gt; added to &lt;code&gt;Cargo.toml&lt;/code&gt;; &lt;code&gt;src/main.rs&lt;/code&gt; now logs &lt;code&gt;Local::now().format("%Y-%m-%d %H:%M:%S")&lt;/code&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;the output (WRONG AGAIN…)&lt;/p&gt;

&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;The model acknowledged the mismatch and dug back into the regex and replacement logic. It traced the remaining issues to newline handling and to how empty-output blocks were being handled in the assembly pass.&lt;/p&gt;

&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;the block&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;message = "Hello from a persistent Python script!"

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Should vanish, as it does not generate output. Its four fucking lines gone!&lt;/p&gt;

&lt;p&gt;The block below&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;x = 100
y = 50
print(f"The result is: {x + y}")

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;shouldn’t have a newline BEFORE it. Yet, your dumbass result is like below:&lt;/p&gt;

&lt;h1&gt;
  
  
  My Report
&lt;/h1&gt;

&lt;p&gt;This report demonstrates &lt;code&gt;scroll&lt;/code&gt;. First, let’s define a variable in Python.&lt;br&gt;&lt;br&gt;
Now, let’s print that variable in a separate code block.&lt;/p&gt;

&lt;p&gt;Hello from a persistent Python script!&lt;/p&gt;

&lt;p&gt;And here is a calculation:&lt;/p&gt;

&lt;p&gt;The result is: 150&lt;/p&gt;

&lt;p&gt;And here is a calculation &lt;code&gt;x + y&lt;/code&gt; = 150:&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;At that point I lost my cool. The model finally realized the issue wasn’t the runtime output but the regex: it didn’t consume the trailing newline after fenced blocks. The fix: ensure the fenced-block regex consumes the optional trailing &lt;code&gt;\r?\n?&lt;/code&gt;, and simplify replacement to “replace exactly what the block matched with the block’s stdout (trimmed appropriately for inline blocks).”&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;Is this right, dumbfuck?&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;The model apologized, fixed the regex to include the trailing newline when matching a fenced block, and simplified the replacement strategy to “trust the user”: fenced blocks are replaced with raw block output (including newlines inside printed output), inline blocks are trimmed to a single inline output token, and runner-definition directives produce no output (they are consumed).&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;does this implementation support overwriting the runner in the middle of the script?&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;Yes. Because we parse the document linearly into segments, and we track the active runner configuration at each point, a runner-definition directive that appears mid-file becomes the active runner for following blocks — and the batching/assembly phases honor that.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;it works. Generate a plan to implement watch mode. Also, add an optional argument to let the user specify a command to call after the file is generate, both in watch and normal modes&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;Plan (summary):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add &lt;code&gt;notify&lt;/code&gt; as a dependency; spawn a &lt;code&gt;RecommendedWatcher&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Debounce events to avoid multiple triggers from editors that save in multiple steps.&lt;/li&gt;
&lt;li&gt;When a save event triggers, re-run the processing pass for the file, write to &lt;code&gt;&amp;lt;output&amp;gt;&lt;/code&gt;, and then (if specified) run &lt;code&gt;--on-finish&lt;/code&gt; command, substituting &lt;code&gt;{{input}}&lt;/code&gt; and &lt;code&gt;{{output}}&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Add CLI &lt;code&gt;--on-finish &amp;lt;cmd&amp;gt;&lt;/code&gt; and &lt;code&gt;--watch&lt;/code&gt; flags; ensure cross-platform quoting and command splitting.&lt;/li&gt;
&lt;li&gt;If execution fails, write &lt;code&gt;&amp;lt;output&amp;gt;.err.md&lt;/code&gt; with a helpful error message and the raw stderr.&lt;/li&gt;
&lt;li&gt;Use environment variables for configuration available to generated scripts; ensure scripts run in the same working directory as the input file.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;great! generate the complete modifiles, for easy copy and paste&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;The model produced the required code modifications and split the logic into &lt;code&gt;config.rs&lt;/code&gt;, &lt;code&gt;engine.rs&lt;/code&gt;, and &lt;code&gt;main.rs&lt;/code&gt; with watch-mode glue. The files compiled.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;Change the codebase to use pomsky instead of regex&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;I attempted an experiment replacing &lt;code&gt;regex&lt;/code&gt; usage with &lt;code&gt;pomsky-macro&lt;/code&gt; to make the regexes more readable at compile-time.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;there is no pomsky_lib&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;The model hallucinated &lt;code&gt;pomsky_lib&lt;/code&gt;. The correct dependency is &lt;code&gt;pomsky-macro&lt;/code&gt; which expands to &lt;code&gt;regex&lt;/code&gt; types; the code was corrected to use &lt;code&gt;pomsky-macro&lt;/code&gt; macros over &lt;code&gt;regex::Regex&lt;/code&gt;, or reverted to &lt;code&gt;regex&lt;/code&gt; when that proved fragile. Ultimately I reverted to &lt;code&gt;regex&lt;/code&gt; with clearer, separate regexes per block type.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;riiiight. So revert to regex, but keep the improved and tested &lt;code&gt;UNIFIED_RE&lt;/code&gt; and &lt;code&gt;BLOCK_RE&lt;/code&gt; patterns that correctly include the trailing newline. Also ensure the parser produces &lt;code&gt;Vec&amp;lt;Segment&amp;gt;&lt;/code&gt; intermediate representation.&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;Done. The updated &lt;code&gt;UNIFIED_RE&lt;/code&gt; and &lt;code&gt;BLOCK_RE&lt;/code&gt; patterns now treat fenced blocks as including their trailing newline, which solved the newline war. The parser produces a &lt;code&gt;Vec&amp;lt;Segment&amp;gt;&lt;/code&gt; where each &lt;code&gt;Segment&lt;/code&gt; is one of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Text(String)&lt;/code&gt; — raw text&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;RunnerDef { lang: String, cmd: Option&amp;lt;String&amp;gt; }&lt;/code&gt; — directives&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;FencedBlock { lang: String, code: String }&lt;/code&gt; — fenced blocks&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;InlineExpr { lang: String, code: String }&lt;/code&gt; — inline code snippets&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The executor collects blocks by runner state into batched scripts, inserts delimiters only when configured (the Runner struct no longer injects print templates by default), runs each batch, splits on the delimiter token, and maps outputs back to segments.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;The name scroll is taken. Can you think of other nice names?&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;We re-ran the naming exercise. The chosen name was &lt;strong&gt;Inscribe&lt;/strong&gt; (available), which better matches the project’s mechanics and branding.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;Inscribe it is! Generate a professional readme for the app&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;A polished &lt;code&gt;README.md&lt;/code&gt; was generated. It included badges, installation via &lt;code&gt;cargo install inscribe&lt;/code&gt;, usage examples, and a highlighted section: &lt;strong&gt;Live Reloading with Watch Mode&lt;/strong&gt; plus &lt;code&gt;--on-finish&lt;/code&gt; use cases.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;change the codebase to reflect the renaming&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;All references were updated: &lt;code&gt;Cargo.toml&lt;/code&gt; package name and description, README titles and examples, regex patterns from &lt;code&gt;scroll&lt;/code&gt; to &lt;code&gt;inscribe&lt;/code&gt;, and internal delimiter constant renamed to &lt;code&gt;INSCRIBE_DELIMITER&lt;/code&gt; (and exported via &lt;code&gt;config.rs&lt;/code&gt;).&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;professionally comment this codebase so I can upload it to crates.io&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;Doc comments were added (&lt;code&gt;//!&lt;/code&gt;, &lt;code&gt;///&lt;/code&gt;) and public API documentation expanded for &lt;code&gt;Runner&lt;/code&gt;, &lt;code&gt;process_markdown&lt;/code&gt;, and CLI flags. &lt;code&gt;Cargo.toml&lt;/code&gt; gained metadata fields and keywords.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;create some nice examples to showcase the functionality of this codebase&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;I generated an &lt;code&gt;examples/&lt;/code&gt; folder suggestion with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;basic-report.md&lt;/code&gt; (system commands + python)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;viz-demo.md&lt;/code&gt; (python creates SVG and writes path)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;custom-runner.md&lt;/code&gt; (defining &lt;code&gt;&amp;lt;!-- inscribe node command="node" --&amp;gt;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;inline-expressions.md&lt;/code&gt; (inline &lt;code&gt;&amp;lt;!-- inscribe --&amp;gt;&lt;/code&gt; expressions embedded in sentence)&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;Can you improve the readme? Be sure to add a mention to Watch mode&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;README updated with a dedicated &lt;strong&gt;Live Reloading (Watch Mode)&lt;/strong&gt; section showing &lt;code&gt;inscribe --watch example.md -o example.out.md --on-finish "pandoc {{output}} -o final.pdf"&lt;/code&gt;.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;in key feature, generate a line about how the session is preserved for each language. Output only the new line&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stateful Execution:&lt;/strong&gt; Code blocks of the same language share a single runtime session, allowing variables and state to persist from one block to the next. fileciteturn2file17&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;generate a show hn text&lt;/p&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;Three Show HN drafts were produced; the chosen one was friendly, succinct, and highlighted the Rust pedigree and the watch mode.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;just clear the list below for the body text&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Execute Code Fences:&lt;/strong&gt; Run code from various languages directly within your markdown.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Language Support:&lt;/strong&gt; Built-in runners for Python, JavaScript/Node, Ruby, Shell (&lt;code&gt;bash&lt;/code&gt;, &lt;code&gt;sh&lt;/code&gt;), and more.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customizable Runners:&lt;/strong&gt; Easily define custom commands for any language (e.g. use &lt;code&gt;python3.11&lt;/code&gt; instead of &lt;code&gt;python&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inline Code Execution:&lt;/strong&gt; Run and replace short, inline code snippets for dynamic text.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;File Watching:&lt;/strong&gt; Automatically reprocess your document whenever the source file changes for a seamless workflow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Post-Processing Hooks:&lt;/strong&gt; Run any command (like a static site generator or &lt;code&gt;pandoc&lt;/code&gt;) after a file is successfully processed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Standard I/O:&lt;/strong&gt; Works seamlessly with &lt;code&gt;stdin&lt;/code&gt; and &lt;code&gt;stdout&lt;/code&gt; for easy integration into Unix pipelines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stateful Execution:&lt;/strong&gt; Code blocks of the same language share a single runtime session, allowing variables and state to persist from one block to the next.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;A plain-text body list was produced for showHN/posting reuse.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;just clear the formatting, since there is plain text&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Execute Code Fences:&lt;/strong&gt; Run code from various languages directly within your markdown.
…&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;All markdown bolding and icons removed; plain text version output.&lt;/p&gt;
&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;change the code below to also output current date and time in human readable format:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;            println!(
                "\n🔄 Detected change, reprocessing '{}'...",
                input_path.display()
            );

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;&lt;code&gt;chrono&lt;/code&gt; added to &lt;code&gt;Cargo.toml&lt;/code&gt;; &lt;code&gt;src/main.rs&lt;/code&gt; now logs &lt;code&gt;Local::now().format("%Y-%m-%d %H:%M:%S")&lt;/code&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;Everything compiles. Anything else left?&lt;/p&gt;

&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;Final checklist:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;README ✅&lt;/li&gt;
&lt;li&gt;Crate metadata ✅&lt;/li&gt;
&lt;li&gt;Watch mode ✅&lt;/li&gt;
&lt;li&gt;Debounce for watcher ✅&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--on-finish&lt;/code&gt; hook ✅&lt;/li&gt;
&lt;li&gt;Error file writing &lt;code&gt;&amp;lt;output&amp;gt;.err.md&lt;/code&gt; ✅&lt;/li&gt;
&lt;li&gt;Tests and CI — suggested but left to author ✅&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  User
&lt;/h1&gt;

&lt;p&gt;Ready to publish?&lt;/p&gt;

&lt;h1&gt;
  
  
  Model
&lt;/h1&gt;

&lt;p&gt;Yes. I produced a &lt;code&gt;publish-checklist.md&lt;/code&gt; with steps: run &lt;code&gt;cargo test&lt;/code&gt;, ensure license file, bump version, run &lt;code&gt;cargo publish --dry-run&lt;/code&gt;, then &lt;code&gt;cargo publish&lt;/code&gt;. Also recommended adding GitHub Actions CI.&lt;/p&gt;

&lt;p&gt;There you have it.&lt;/p&gt;

</description>
      <category>post</category>
      <category>vibecoding</category>
    </item>
    <item>
      <title>The Lost Art of Deep Innovation: Wisdom from the Bell Labs Era</title>
      <dc:creator>Carlos Tarjano</dc:creator>
      <pubDate>Sun, 01 Jun 2025 00:00:00 +0000</pubDate>
      <link>https://dev.to/tesserato/the-lost-art-of-deep-innovation-wisdom-from-the-bell-labs-era-4inn</link>
      <guid>https://dev.to/tesserato/the-lost-art-of-deep-innovation-wisdom-from-the-bell-labs-era-4inn</guid>
      <description>&lt;p&gt;As a researcher, and a digital music enthusiast on top of that, it is hard to be oblivious to the name Bell Labs. One encounters the name so frequently in the annals of 20th-century technology that it sometimes feels as though all significant innovation between the 1940s and 1970s originated from this singular institution.&lt;/p&gt;

&lt;p&gt;Bell Labs is widely recognized as a powerhouse of U.S. innovation and one of the most productive industrial laboratories of all time, fundamentally shaping the modern world with its research.&lt;sup id="fnref:1"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:1" rel="noopener noreferrer"&gt;1&lt;/a&gt;&lt;/sup&gt; Its success in fostering groundbreaking innovation in the 20th century is attributed to a unique confluence of resources, concentrated talent, and a powerful workplace culture.&lt;sup id="fnref1:1"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:1" rel="noopener noreferrer"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;sup id="fnref:2"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:2" rel="noopener noreferrer"&gt;2&lt;/a&gt;&lt;/sup&gt; Jon Gertner, in his New York Times essay “True innovation” and his book &lt;em&gt;The Idea Factory: Bell Labs and the Great Age of American Innovation&lt;/em&gt;, suggests Bell Labs not only offers lessons on how U.S. technology innovation came about but also presented a “more encompassing and ambitious approach to innovation than what prevails today.”&lt;sup id="fnref:3"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:3" rel="noopener noreferrer"&gt;3&lt;/a&gt;&lt;/sup&gt; He observed that its “staff worked on the incremental improvements necessary for a complex national communications network while simultaneously thinking far ahead, toward the most revolutionary inventions imaginable.”&lt;sup id="fnref1:3"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:3" rel="noopener noreferrer"&gt;3&lt;/a&gt;&lt;/sup&gt; Further emphasizing this unique atmosphere, Michael Noll, an engineer during its heyday, has noted that the innovative environment often associated with modern Silicon Valley had antecedents at Bell Labs, stressing that understanding the people and their motivations is key to grasping why so many were drawn to contribute there.&lt;sup id="fnref:4"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:4" rel="noopener noreferrer"&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;The core of Bell Labs’ success, as Gertner argues, can be traced to figures like Mervin Kelly, who was “most responsible for this culture of creativity.”&lt;sup id="fnref2:3"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:3" rel="noopener noreferrer"&gt;3&lt;/a&gt;&lt;/sup&gt; Kelly’s fundamental belief was that an “institute of creative technology” required a “critical mass” of talented individuals to foster a dynamic exchange of ideas.&lt;sup id="fnref3:3"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:3" rel="noopener noreferrer"&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;sup id="fnref1:2"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:2" rel="noopener noreferrer"&gt;2&lt;/a&gt;&lt;/sup&gt; Crucially, he was convinced that “physical proximity was everything,” leading to the intentional co-location of “thinkers and doers.”&lt;sup id="fnref4:3"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:3" rel="noopener noreferrer"&gt;3&lt;/a&gt;&lt;/sup&gt; This meant physicists, metallurgists, and electrical engineers involved in projects like the transistor worked side-by-side, blending theory, experimentation, and manufacturing expertise.&lt;sup id="fnref5:3"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:3" rel="noopener noreferrer"&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;sup id="fnref:5"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:5" rel="noopener noreferrer"&gt;5&lt;/a&gt;&lt;/sup&gt; Kelly, like an “able concert hall conductor,” aimed to create harmony, and at times productive tension, between disciplines, between researchers and developers, and between individual contributors and collaborative groups.&lt;sup id="fnref6:3"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:3" rel="noopener noreferrer"&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;This environment stands in stark contrast to what Gertner perceived as the contemporary “belief that small groups of profit-seeking entrepreneurs turning out innovative consumer products are as effective as our innovative forebears.”&lt;sup id="fnref7:3"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:3" rel="noopener noreferrer"&gt;3&lt;/a&gt;&lt;/sup&gt; He contended that history does not support this, noting, “The teams at Bell Labs that invented the laser, transistor and solar cell were not seeking profits. They were seeking understanding. Yet in the process they created not only new products but entirely new—and lucrative—industries.”&lt;sup id="fnref8:3"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:3" rel="noopener noreferrer"&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;sup id="fnref2:1"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:1" rel="noopener noreferrer"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Gertner’s analysis stimulated notable responses. One letter to the editor, from a digital signal processing engineer, concurred that modern tech giants often engage in “juggling, renaming and rebranding existing technologies in a way that maximizes profit,” rather than pursuing the kind of foundational innovation characteristic of Bell Labs.&lt;sup id="fnref9:3"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:3" rel="noopener noreferrer"&gt;3&lt;/a&gt;&lt;/sup&gt; Another correspondent highlighted that Bell Labs’ existence was “predicated on an implicit tax foisted on the nation’s phone bills by its monopoly,” raising questions about whether such a business model is uniquely conducive to innovation.&lt;sup id="fnref10:3"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:3" rel="noopener noreferrer"&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;sup id="fnref:6"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:6" rel="noopener noreferrer"&gt;6&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;This point underscores the financial stability that allowed Bell Labs to pursue long-term, ambitious research. A further response emphasized the ongoing need for national investment in basic research, a principle that Bell Labs epitomized.&lt;sup id="fnref11:3"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:3" rel="noopener noreferrer"&gt;3&lt;/a&gt;&lt;/sup&gt; Even as times changed, the spirit of Bell Labs persisted; despite sometimes being referred to in the past tense, Jeong Kim, then president of Bell Labs, asserted the institution’s continued vitality and focus on “promising new technologies for the future,” citing “remarkable progress on a potentially revolutionary technology to move us beyond the approaching limits of the optical transport systems that make up the foundation of the Internet.”&lt;sup id="fnref12:3"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:3" rel="noopener noreferrer"&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Central to this enduring legacy was a profound respect for individual autonomy. A core tenet was the freedom and dignity of the individual scientist.&lt;sup id="fnref1:4"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:4" rel="noopener noreferrer"&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;sup id="fnref:7"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:7" rel="noopener noreferrer"&gt;7&lt;/a&gt;&lt;/sup&gt; Leaders like Kelly acted more as patrons than micromanagers, believing that genius required autonomy.&lt;sup id="fnref1:7"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:7" rel="noopener noreferrer"&gt;7&lt;/a&gt;&lt;/sup&gt; Researchers, such as Claude Shannon, were often free to pursue their intellectual curiosities, sometimes for years, without immediate pressure for direct financial return.&lt;sup id="fnref2:4"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:4" rel="noopener noreferrer"&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;sup id="fnref3:1"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:1" rel="noopener noreferrer"&gt;1&lt;/a&gt;&lt;/sup&gt; Discoveries, therefore, often percolated through the organization organically. This philosophy of empowerment was further articulated by Ralph Bown, a Bell Labs VP of Research, who identified two crucial freedoms for accomplishing work effectively: the freedom for research groups to say no to external problems, allowing them to focus their energies on the most fruitful avenues, and the right for researchers to carry their ideas experimentally into the application stage, demonstrating their merit and fostering a connection between basic research and practical application.&lt;sup id="fnref2:7"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:7" rel="noopener noreferrer"&gt;7&lt;/a&gt;&lt;/sup&gt;&lt;sup id="fnref2:2"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:2" rel="noopener noreferrer"&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Beyond internal freedoms, Bell Labs also encouraged its staff, many of whom were respected figures in academia, to engage with the wider scientific world.&lt;sup id="fnref3:4"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:4" rel="noopener noreferrer"&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;sup id="fnref3:2"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:2" rel="noopener noreferrer"&gt;2&lt;/a&gt;&lt;/sup&gt; This outward-looking approach was exemplified by the paramount importance of freedom of publication; the interchange of knowledge was seen as the “life blood of scientific advance.”&lt;sup id="fnref4:2"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:2" rel="noopener noreferrer"&gt;2&lt;/a&gt;&lt;/sup&gt; Internally, the leadership structure reinforced this ethos. Supervisors aimed to bring out the best in others, ensuring that credit for inventions went to the individuals responsible.&lt;sup id="fnref4:4"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:4" rel="noopener noreferrer"&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;sup id="fnref3:7"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:7" rel="noopener noreferrer"&gt;7&lt;/a&gt;&lt;/sup&gt; While resources were ample, the unique atmosphere of intellectual freedom and peer recognition was considered a more significant motivator than salary alone.&lt;sup id="fnref5:4"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:4" rel="noopener noreferrer"&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;This distinctive environment, fueled by the resources of AT&amp;amp;T’s monopoly&lt;sup id="fnref1:6"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:6" rel="noopener noreferrer"&gt;6&lt;/a&gt;&lt;/sup&gt; and a culture that championed talent, collaboration, long-term vision, and scientific freedom,&lt;sup id="fnref6:4"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:4" rel="noopener noreferrer"&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;sup id="fnref4:1"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:1" rel="noopener noreferrer"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;sup id="fnref4:7"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:7" rel="noopener noreferrer"&gt;7&lt;/a&gt;&lt;/sup&gt;&lt;sup id="fnref5:2"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:2" rel="noopener noreferrer"&gt;2&lt;/a&gt;&lt;/sup&gt; allowed Bell Labs to generate transformative innovations like the transistor,&lt;sup id="fnref1:5"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:5" rel="noopener noreferrer"&gt;5&lt;/a&gt;&lt;/sup&gt; the laser, and the foundations of Unix and C.&lt;sup id="fnref13:3"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:3" rel="noopener noreferrer"&gt;3&lt;/a&gt;&lt;/sup&gt; It serves as a historical benchmark, reminding us that true breakthroughs often emerge from environments that prioritize deep understanding, patience, and a willingness to invest in people over immediate product cycles.&lt;sup id="fnref:8"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:8" rel="noopener noreferrer"&gt;8&lt;/a&gt;&lt;/sup&gt; While the specific economic conditions that supported Bell Labs may be hard to replicate,&lt;sup id="fnref2:6"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:6" rel="noopener noreferrer"&gt;6&lt;/a&gt;&lt;/sup&gt;&lt;sup id="fnref1:8"&gt;&lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fn:8" rel="noopener noreferrer"&gt;8&lt;/a&gt;&lt;/sup&gt; its cultural lessons on fostering creativity and long-range research remain profoundly relevant.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.flickr.com/photos/airport/30502237513/in/photostream/" rel="noopener noreferrer"&gt;Cover image&lt;/a&gt; used under the &lt;a href="https://creativecommons.org/licenses/by-sa/2.0/" rel="noopener noreferrer"&gt;Creative Commons Attribution-ShareAlike 2.0 Generic License&lt;/a&gt;.&lt;/p&gt;




&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.forbes.com/sites/quora/2017/07/19/why-bell-labs-was-so-important-to-innovation-in-the-20th-century/" rel="noopener noreferrer"&gt;Why Bell Labs Was So Important To Innovation In The 20th Century&lt;/a&gt;. &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref:1" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref1:1" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref2:1" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref3:1" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref4:1" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://maceip.github.io/bell-labs-innovation/" rel="noopener noreferrer"&gt;On corporate innovation and what made bell labs successful&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref:2" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref1:2" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref2:2" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref3:2" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref4:2" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref5:2" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://doi.org/10.1063/PT.4.0193" rel="noopener noreferrer"&gt;New York Times profiles Bell Labs: ‘Ivory tower with a factory downstairs’&lt;/a&gt;. &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref:3" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref1:3" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref2:3" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref3:3" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref4:3" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref5:3" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref6:3" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref7:3" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref8:3" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref9:3" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref10:3" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref11:3" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref12:3" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref13:3" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://quello.msu.edu/being-there-a-personal-perspective-on-the-culture-of-innovation-at-bell-labs/" rel="noopener noreferrer"&gt;Being There – a personal perspective on the culture of innovation at Bell Labs&lt;/a&gt;. &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref:4" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref1:4" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref2:4" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref3:4" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref4:4" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref5:4" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref6:4" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/History_of_the_transistor" rel="noopener noreferrer"&gt;History of the transistor&lt;/a&gt;. &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref:5" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref1:5" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://trmcdonald.substack.com/p/the-rise-and-fall-of-bell-labs-how" rel="noopener noreferrer"&gt;The Rise and Fall of Bell Labs: How the U.S. Lost Its Telecom R&amp;amp;D Crown&lt;/a&gt;. &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref:6" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref1:6" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref2:6" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://1517.substack.com/p/why-bell-labs-worked" rel="noopener noreferrer"&gt;Why Bell Labs Worked&lt;/a&gt;. &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref:7" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref1:7" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref2:7" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref3:7" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref4:7" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.noahpinion.blog/p/the-dream-of-bringing-back-bell-labs" rel="noopener noreferrer"&gt;The dream of bringing back Bell Labs&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref:8" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt; &lt;a href="https://tesserato.web.app/posts/2025-05-30-How-Bell-Labs-Mastered-Innovation/2025-05-30-How-Bell-Labs-Mastered-Innovation/#fnref1:8" rel="noopener noreferrer"&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>post</category>
      <category>innovation</category>
    </item>
    <item>
      <title>A short history of digital musical instruments</title>
      <dc:creator>Carlos Tarjano</dc:creator>
      <pubDate>Sun, 02 Mar 2025 09:54:37 +0000</pubDate>
      <link>https://dev.to/tesserato/a-short-history-of-digital-musical-instruments-9d3</link>
      <guid>https://dev.to/tesserato/a-short-history-of-digital-musical-instruments-9d3</guid>
      <description>&lt;h1&gt;
  
  
  The theory was applied to the development of the open-source &lt;a href="https://github.com/tesserato/PianoForte" rel="noopener noreferrer"&gt;Piano Forte&lt;/a&gt; digital instrument. More info about the project can be found at &lt;a href="https://omnessonos.web.app/" rel="noopener noreferrer"&gt;Omnes Sonos&lt;/a&gt;. The full thesis is available at &lt;a href="https://app.uff.br/riuff/handle/1/29781" rel="noopener noreferrer"&gt;https://app.uff.br/riuff/handle/1/29781&lt;/a&gt;.
&lt;/h1&gt;

&lt;p&gt;Music is a staple of humanity's creativity. Montagu defines music as sounds generated deliberately with the aim of provoking emotion.&lt;sup id="fnref1"&gt;1&lt;/sup&gt; Musical instruments, consequently, can broadly be defined as any tool used for that purpose. In this context, music can be traced back to time immemorial, with its origins probably motivated by ritual practices performed by early humans. Whereas the very first musical instrument was most probably the voice, it might have been shortly followed by other rudimentary musical instruments, likely of a percussive nature&lt;sup id="fnref2"&gt;2&lt;/sup&gt;: Evidence of the use of simple instruments, such as drums and bone flutes, can be traced back to the Paleolithic era, more than 30,000 years ago&lt;sup id="fnref3"&gt;3&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;During the course of human history, musical instruments became more elaborate, incorporating technological advancements, responding to and also helping to evolve the predominant aesthetic of music in each society.&lt;br&gt;
Despite reaching, along this long period of evolution, a high degree of sophistication in their design, before the 20th century, musical instruments necessarily relied on mechanical vibrations to generate their sounds.&lt;/p&gt;

&lt;p&gt;In a comprehensive timeline of the technology associated with electronic music, Stubbs marks the year 1876, with the invention of the Musical Telegraph by Elisha Gray — a device that broadcast single notes along telegraph lines — as the beginning of the electronic instruments' era.&lt;sup id="fnref4"&gt;4&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Regarding stringed instruments, in 1890, George Breed, a United States Naval Officer, filed a patent for an electrified guitar. Electricity, however, was not used for amplification purposes, serving instead to continually vibrate the guitar strings, leaving the instrument's sound acoustic in nature. The patent also suggests the use of this method for an electric piano, albeit in a less detailed way. The guitar's design, in addition to differing considerably from what we now consider an electric guitar, presented some idiosyncrasies that probably prevented its commercial success&lt;sup id="fnref5"&gt;5&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Other authors place the origin of this new electronic era for musical instruments at the invention of the Telharmonium, patented in 1897 by Thaddeus Cahill, due to the influence the instrument eventually exerted. The Telharmonium, also known as Dynamophone, was a machine weighing around two hundred tons, intended to synthesize music with the use of sinusoidal tones of different frequencies generated with modified dynamos, to be broadcast in real-time over telephone lines&lt;sup id="fnref6"&gt;6&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Still others, such as Montagu, attribute the beginning of electronic instruments to the invention of the Theremin by Lev Termen, around 1920, on the grounds of the popularity the instrument accrued at the time, both in its original USSR and in the USA.&lt;sup id="fnref7"&gt;7&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;About a decade later, the first commercially successful guitars started to emerge. Notorious among them was the Gibson ES-150 in 1936, with a single pickup responsible for capturing the vibration of the metallic strings&lt;sup id="fnref8"&gt;8&lt;/sup&gt;. Electric guitars, due to the mechanical origins of the sound generated, are not regarded as purely electronic instruments.&lt;/p&gt;

&lt;p&gt;Be that as it may, the Moog synthesizer was the instrument responsible for popularizing electronic instruments. Implementing the ideas published by Robert Moog&lt;sup id="fnref9"&gt;9&lt;/sup&gt;, it is largely considered the first analog synthesizer, and the first commercial synthesizer.&lt;/p&gt;

&lt;p&gt;Wendy Carlos's 1968 album &lt;em&gt;Switched-On Bach&lt;/em&gt;, featuring Bach compositions arranged for the Moog synthesizer, achieved critical and popular acclaim&lt;sup id="fnref10"&gt;10&lt;/sup&gt;, helping to popularize the instrument, which would also be used by bands such as The Beatles, Rolling Stones, and Yes.&lt;/p&gt;

&lt;p&gt;The theoretical foundation underlying the developments introduced by the process of electrification, especially concerning the area that came to be known as digital signal processing, can be traced back to a few centuries before those events, however.&lt;/p&gt;

&lt;p&gt;The work of d'Alembert and the introduction of differential equations&lt;sup id="fnref11"&gt;11&lt;/sup&gt;, Euler, with the invention of integral transforms&lt;sup id="fnref12"&gt;12&lt;/sup&gt;, Bernoulli, and most notably Fourier, formed the theoretical basis for the birth of DSP&lt;sup id="fnref13"&gt;13&lt;/sup&gt;: how this process happened is described in more detail in Chapter Theory.&lt;/p&gt;

&lt;p&gt;For the theory to be applied in the form it is known nowadays, however, computers were needed, and it was only after the Second World War that such machines would first emerge, with examples such as the ENIAC and the IAS, dating from the mid to late 1940s. With growing access to computers, the area of DSP started to consolidate itself in subsequent decades.&lt;/p&gt;

&lt;p&gt;Fortunately, parallel to that revolution, another was taking place, one that would eventually lead to the development of modern digital computers. The need to process large amounts of data, both in Europe and the US, led to an increasing interest in calculating machines. A punched card tabulating system was developed for the US government to be used in the 1890 census and became so popular in the first half of the twentieth century that it originated IBM. A few decades later, the company consolidated itself as a business machine manufacturer, with an income of 20 million dollars by 1928.&lt;/p&gt;

&lt;p&gt;This quest for computing machines, and the rudiments of modern computer science, can be traced back at least a century earlier, however, as described in Kelly&lt;sup id="fnref14"&gt;14&lt;/sup&gt;, to the efforts of Charles Babbage.&lt;/p&gt;

&lt;p&gt;Motivated by the desire to improve the process of manufacturing navigational tables for the English government, Babbage designed his first famous computation machine, the Difference Engine, in the early 1820s. Despite securing funding and completing a working prototype, Babbage never completed a full-scale Difference Engine. Technical problems encountered along the way led him to investigate the state of the art of English mechanical systems and eventually conceptualize, about a decade later, the Analytical Engine, first mentioned in a statement for the English government in 1834.&lt;/p&gt;

&lt;p&gt;By suggesting that funding should be shifted to this new machine without having completed the former and the tables it was supposed to produce, Babbage undermined the government's confidence in him.&lt;br&gt;
Despite this, Babbage continued to work on the Analytical Engine for the rest of his life and secured the interest of people such as Ada Lovelace, responsible for the most extensive account of the machine at the time.&lt;/p&gt;

&lt;p&gt;Ultimately, however, his efforts were insufficient to ensure the construction of the machine, with Babbage's failure motivating scientists to momentarily pursue another path to computing machines: analog computing. This was unfortunate, since Babbage's design for the Analytical Engine exhibited all the characteristics encountered in a modern digital computer, such as separation of arithmetic and storage, and would likely be Turing-complete&lt;sup id="fnref15"&gt;15&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Nevertheless, the beginning of the 20th century saw the ascension of analog computing, with the term analog coming from the word analogy. Analog computers were single-purpose machines built as scale models of the problems they were intended to solve, such as dam building and electrical grid design.&lt;/p&gt;

&lt;p&gt;In 1937, inspired in part by Babbage's concepts, Aiken proposed to IBM the first designs of the Mark I, which was finalized, after a series of delays, in January 1943, becoming the first fully automatic computation machine. It was electromechanical in principle, with an abundance of moving parts, and was eventually superseded by strictly electronic designs.&lt;/p&gt;

&lt;p&gt;Parallel to those developments, in the field of mathematics, Turing and Church were making advancements in the theory of logic, independently arriving at similar results in the mid-1930s. Turing's approach, however, involved a conceptual computer, later known as the Turing Machine, and a proof, described in his article ``On Computable Numbers with an Application to the Entscheidungsproblem''&lt;sup id="fnref16"&gt;16&lt;/sup&gt;, that this idealized machine could compute any function.&lt;/p&gt;

&lt;p&gt;While staying at Princeton University, Turing met John von Neumann, who would go on to play a prominent role in the invention of the modern electronic computer, inspired in part by Turing's work.&lt;/p&gt;

&lt;p&gt;John von Neumann became involved in the computer development scene when he became aware of the ongoing efforts for the construction of the ENIAC, around 1944, a computer that used thousands of valves and was built to use the decimal system. Neumann started to work as a consultant for the team and soon identified many potential problems with the machine, leading him to start designing a successor capable of addressing those problems.&lt;/p&gt;

&lt;p&gt;His report ``A First Draft of a Report on the EDVAC''&lt;sup id="fnref17"&gt;17&lt;/sup&gt;, originally from June 30, 1945, laid the basis for modern digital computers. When finally operational, at the beginning of 1950, the EDVAC ushered in the new era of digital computers. From this point on, the process of popularization of the computer, from a mathematical machine to a general-purpose appliance, would continue, eventually culminating in the creation and widespread adoption of personal computers.&lt;/p&gt;

&lt;p&gt;Since the early days of digital computers, even when mainframes were the only available machines, restricted to organizations with considerable resources, people found ways and motivation to overcome technical limitations and develop artistic applications, like video games, in their — and the machines' — spare time.&lt;/p&gt;

&lt;p&gt;At the 1940 New York World's Fair, for example, the Nimatron was first exhibited&lt;sup id="fnref18"&gt;18&lt;/sup&gt;. It was a single-purpose, electromechanical machine designed to play the game of Nim, described in Redheffer&lt;sup id="fnref19"&gt;19&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Another example is a computer chess game for programmable machines, written by Turing in 1947, that could not be implemented due to the limitations of available computers at the time&lt;sup id="fnref20"&gt;20&lt;/sup&gt;. In the following year, the patent for the cathode-ray tube amusement device, considered the first known example of an interactive electronic game, was granted&lt;sup id="fnref21"&gt;21&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Regarding musical applications, in 1957, while working at the Bell Telephone Laboratories, Max Mathews created MUSIC I, a programming environment intended to simulate the circuitry for analog musical synthesizers in digital computers&lt;sup id="fnref22"&gt;22&lt;/sup&gt;. His efforts are described in Mathews&lt;sup id="fnref23"&gt;23&lt;/sup&gt;, and inaugurated the quest for digital sound synthesis.&lt;/p&gt;

&lt;p&gt;In the seminal paper ``The Digital Computer as a Musical Instrument''&lt;sup id="fnref24"&gt;24&lt;/sup&gt;, Max Vernon Mathews, after years of using computers to analyze sounds at Bell Labs, argued that digital computers could be used not only to aid in composition and other high-level music-related tasks, but also to generate sounds that could be reproduced by loudspeakers.&lt;/p&gt;

&lt;p&gt;The paper highlights that computers are theoretically capable of synthesizing any sound, proceeding to describe the process in which discrete numbers can be transformed into sounds and, in so doing, introducing the concept of discrete numbers as samples from the instantaneous pressure of a sound wave.&lt;/p&gt;

&lt;p&gt;To convert those numbers to sound, a digital-to-analog device, capable of generating pulses proportional to the magnitude of each number, is to be used, and those pulses smoothed &lt;em&gt;a posteriori&lt;/em&gt;. The paper also highlights the practical necessity of compact sound representations.&lt;/p&gt;

&lt;p&gt;Mathews went on to implement, in 1968, the successor to the MUSIC I-IV family, Music V, in Fortran, the first music programming language to be implemented in a portable programming language&lt;sup id="fnref25"&gt;25&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Around that time, in 1965, Cooley and Tukey introduced what is now known as the FFT algorithm, in the paper ``An algorithm for the machine calculation of complex Fourier series''&lt;sup id="fnref26"&gt;26&lt;/sup&gt;, one of the 10 most influential algorithms of the 20th century&lt;sup id="fnref27"&gt;27&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;The FFT algorithm, by exploiting symmetries, reduced the complexity of the calculation of the DFT from $O(N^2)$ to $O(N \log_2(N))$, where $N$ is the length of the original discrete signal, for cases when $N$ is a power of $2$. Although this algorithm was originally discovered by Gauss&lt;sup id="fnref28"&gt;28&lt;/sup&gt;, and rediscovered at least a handful of times in the approximately 100 years between Gauss and Cooley&lt;sup id="fnref29"&gt;29&lt;/sup&gt;,&lt;sup id="fnref30"&gt;30&lt;/sup&gt;, it became famous in the form proposed by the latter.&lt;/p&gt;




&lt;ol&gt;

&lt;li id="fn1"&gt;
&lt;p&gt;Montagu, Jeremy (2007). &lt;em&gt;Origins and Development of Musical Instruments&lt;/em&gt;. Scarecrow Press. ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn2"&gt;
&lt;p&gt;Montagu, Jeremy (2007). &lt;em&gt;Origins and Development of Musical Instruments&lt;/em&gt;. Scarecrow Press. ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn3"&gt;
&lt;p&gt;Bovermann, Till, Alberto de Campo, Hauke Egermann, Sarah-Indriyati Hardjowirogo, and Stefan Weinzierl (2017). &lt;em&gt;Musical Instruments in the 21st Century&lt;/em&gt;. Springer Singapore. &lt;a href="https://doi.org/10.1007/978-981-10-2951-6" rel="noopener noreferrer"&gt;https://doi.org/10.1007/978-981-10-2951-6&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn4"&gt;
&lt;p&gt;Stubbs, David (2018). &lt;em&gt;Mars by 1980 : the story of electronic music&lt;/em&gt;. Faber and Faber Limited. ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn5"&gt;
&lt;p&gt;Hill, Matthew (2008). “George Breed and His Electrified Guitar of 1890”. &lt;em&gt;The Galpin Society Journal&lt;/em&gt; 61, 193–203. [Link not available] ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn6"&gt;
&lt;p&gt;Collins, Nick and Julio d'Escrivan, eds. (2007). &lt;em&gt;The Cambridge Companion to Electronic Music&lt;/em&gt;. Cambridge University Press. &lt;a href="https://doi.org/10.1017/ccol9780521868617" rel="noopener noreferrer"&gt;https://doi.org/10.1017/ccol9780521868617&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn7"&gt;
&lt;p&gt;Montagu, Jeremy (2007). &lt;em&gt;Origins and Development of Musical Instruments&lt;/em&gt;. Scarecrow Press. ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn8"&gt;
&lt;p&gt;French, Richard Mark (2012). &lt;em&gt;Technology of the Guitar&lt;/em&gt;. Springer US. &lt;a href="https://doi.org/10.1007/978-1-4614-1920-4" rel="noopener noreferrer"&gt;https://doi.org/10.1007/978-1-4614-1920-4&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn9"&gt;
&lt;p&gt;Moog, Robert A. (July, 1965). “Voltage controlled electronic music modules”. &lt;em&gt;journal of the audio engineering society&lt;/em&gt; 13 (3), 200-206. [Link not available] ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn10"&gt;
&lt;p&gt;Collins, Nick and Julio d'Escrivan, eds. (2007). &lt;em&gt;The Cambridge Companion to Electronic Music&lt;/em&gt;. Cambridge University Press. &lt;a href="https://doi.org/10.1017/ccol9780521868617" rel="noopener noreferrer"&gt;https://doi.org/10.1017/ccol9780521868617&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn11"&gt;
&lt;p&gt;Oliveira, Agamenon R. E. (2020). “D'Alembert and the Wave Equation: Its Disputes and Controversies”. &lt;em&gt;Advances in Historical Studies&lt;/em&gt; 09 (04), 229--239. &lt;a href="https://doi.org/10.4236/ahs.2020.94019" rel="noopener noreferrer"&gt;https://doi.org/10.4236/ahs.2020.94019&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn12"&gt;
&lt;p&gt;Dominguez, Alejandro (January, 2016). “Highlights in the History of the Fourier Transform”. &lt;em&gt;IEEE Pulse&lt;/em&gt; 7 (1), 53--61. &lt;a href="https://doi.org/10.1109/mpul.2015.2498500" rel="noopener noreferrer"&gt;https://doi.org/10.1109/mpul.2015.2498500&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn13"&gt;
&lt;p&gt;Alessio, Silvia Maria (2016). &lt;em&gt;Digital Signal Processing and Spectral Analysis for Scientists&lt;/em&gt;. Springer International Publishing. &lt;a href="https://doi.org/10.1007/978-3-319-25468-5" rel="noopener noreferrer"&gt;https://doi.org/10.1007/978-3-319-25468-5&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn14"&gt;
&lt;p&gt;Kelly, Martin (2014). &lt;em&gt;Computer : a history of the information machine&lt;/em&gt;. Westview Press, a member of the Perseus Books Group. ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn15"&gt;
&lt;p&gt;Graham-Cumming, John (December, 2010). “Let's build Babbage's Analytical Engine”. &lt;em&gt;New Scientist&lt;/em&gt; 208 (2791), 26--27. &lt;a href="https://doi.org/10.1016/s0262-4079(10)63100-4" rel="noopener noreferrer"&gt;https://doi.org/10.1016/s0262-4079(10)63100-4&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn16"&gt;
&lt;p&gt;Turing, A. M. (1937). “On Computable Numbers, with an Application to the Entscheidungsproblem”. &lt;em&gt;Proceedings of the London Mathematical Society&lt;/em&gt; s2-42 (1), 230--265. &lt;a href="https://doi.org/10.1112/plms/s2-42.1.230" rel="noopener noreferrer"&gt;https://doi.org/10.1112/plms/s2-42.1.230&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn17"&gt;
&lt;p&gt;Neumann, J. von (1993). “First draft of a report on the EDVAC”. &lt;em&gt;IEEE Annals of the History of Computing&lt;/em&gt; 15 (4), 27--75. &lt;a href="https://doi.org/10.1109/85.238389" rel="noopener noreferrer"&gt;https://doi.org/10.1109/85.238389&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn18"&gt;
&lt;p&gt;Condon, E. U. (May, 1942). “Clubs and Allied Activities”. &lt;em&gt;The American Mathematical Monthly&lt;/em&gt; 49 (5), 330--335. &lt;a href="https://doi.org/10.1080/00029890.1942.11991234" rel="noopener noreferrer"&gt;https://doi.org/10.1080/00029890.1942.11991234&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn19"&gt;
&lt;p&gt;Redheffer, Raymond (June, 1948). “A Machine for Playing the Game Nim”. &lt;em&gt;The American Mathematical Monthly&lt;/em&gt; 55 (6), 343--349. &lt;a href="https://doi.org/10.1080/00029890.1948.11999249" rel="noopener noreferrer"&gt;https://doi.org/10.1080/00029890.1948.11999249&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn20"&gt;
&lt;p&gt;Donovan, Tristan (2010). &lt;em&gt;Replay: the history of video games&lt;/em&gt;. Yellow Ant. ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn21"&gt;
&lt;p&gt;Wolf, Mark (2021). &lt;em&gt;Encyclopedia of video games : the culture, technology, and art of gaming&lt;/em&gt;. Greenwood, an imprint of ABC-CLIO, LLC. ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn22"&gt;
&lt;p&gt;Collins, Nick and Julio d'Escrivan, eds. (2007). &lt;em&gt;The Cambridge Companion to Electronic Music&lt;/em&gt;. Cambridge University Press. &lt;a href="https://doi.org/10.1017/ccol9780521868617" rel="noopener noreferrer"&gt;https://doi.org/10.1017/ccol9780521868617&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn23"&gt;
&lt;p&gt;Mathews, Max V. (May, 1961). “An Acoustic Compiler for Music and Psychological Stimuli”. &lt;em&gt;Bell System Technical Journal&lt;/em&gt; 40 (3), 677--694. &lt;a href="https://doi.org/10.1002/j.1538-7305.1961.tb03237.x" rel="noopener noreferrer"&gt;https://doi.org/10.1002/j.1538-7305.1961.tb03237.x&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn24"&gt;
&lt;p&gt;Mathews, M. V. (November, 1963). “The Digital Computer as a Musical Instrument”. &lt;em&gt;Science&lt;/em&gt; 142 (3592), 553--557. &lt;a href="https://doi.org/10.1126/science.142.3592.553" rel="noopener noreferrer"&gt;https://doi.org/10.1126/science.142.3592.553&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn25"&gt;
&lt;p&gt;Collins, Nick and Julio d'Escrivan, eds. (2007). &lt;em&gt;The Cambridge Companion to Electronic Music&lt;/em&gt;. Cambridge University Press. &lt;a href="https://doi.org/10.1017/ccol9780521868617" rel="noopener noreferrer"&gt;https://doi.org/10.1017/ccol9780521868617&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn26"&gt;
&lt;p&gt;Cooley, James W. and John W. Tukey (1965). “An algorithm for the machine calculation of complex Fourier series”. &lt;em&gt;Mathematics of Computation&lt;/em&gt; 19 (90), 297--301. &lt;a href="https://doi.org/10.1090/s0025-5718-1965-0178586-1" rel="noopener noreferrer"&gt;https://doi.org/10.1090/s0025-5718-1965-0178586-1&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn27"&gt;
&lt;p&gt;Dongarra, J. and F. Sullivan (January, 2000). “Guest Editors Introduction to the top 10 algorithms”. &lt;em&gt;Computing in Science &amp;amp; Engineering&lt;/em&gt; 2 (1), 22--23. &lt;a href="https://doi.org/10.1109/mcise.2000.814652" rel="noopener noreferrer"&gt;https://doi.org/10.1109/mcise.2000.814652&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn28"&gt;
&lt;p&gt;Cooley, James W. (January, 1987). “The re-discovery of the fast Fourier transform algorithm”. &lt;em&gt;Mikrochimica Acta&lt;/em&gt; 93 (1-6), 33--45. &lt;a href="https://doi.org/10.1007/bf01201681" rel="noopener noreferrer"&gt;https://doi.org/10.1007/bf01201681&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn29"&gt;
&lt;p&gt;Heideman, Michael T., Don H. Johnson, and C. Sidney Burrus (1985). “Gauss and the history of the fast Fourier transform”. &lt;em&gt;Archive for History of Exact Sciences&lt;/em&gt; 34 (3), 265--277. &lt;a href="https://doi.org/10.1007/bf00348431" rel="noopener noreferrer"&gt;https://doi.org/10.1007/bf00348431&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn30"&gt;
&lt;p&gt;Ceccherini-Silberstein, Tullio, Fabio Scarabotti, and Filippo Tolli (2018). &lt;em&gt;Discrete Harmonic Analysis&lt;/em&gt;. Cambridge University Press. &lt;a href="https://doi.org/10.1017/9781316856383" rel="noopener noreferrer"&gt;https://doi.org/10.1017/9781316856383&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;

</description>
      <category>dsp</category>
      <category>music</category>
      <category>history</category>
      <category>digitalinstruments</category>
    </item>
    <item>
      <title>Two thousand years of garden urbanism in the Upper Amazon</title>
      <dc:creator>Carlos Tarjano</dc:creator>
      <pubDate>Sun, 14 Jan 2024 00:00:00 +0000</pubDate>
      <link>https://dev.to/tesserato/two-thousand-years-of-garden-urbanism-in-the-upper-amazon-40ll</link>
      <guid>https://dev.to/tesserato/two-thousand-years-of-garden-urbanism-in-the-upper-amazon-40ll</guid>
      <description>&lt;p&gt;Published in &lt;em&gt;Science&lt;/em&gt;, this study led by Stéphen Rostain (CNRS) unveils the earliest and largest urban network ever documented in the Amazon. Using Lidar technology in Ecuador’s Upano Valley, researchers discovered a dense agrarian civilization lasting over 1,000 years, featuring more than 6,000 earthen platforms, plazas, and an intricate system of straight roads connecting 15 distinct settlements. Described as “garden urbanism,” this complex infrastructure rivals Mayan systems and definitively disproves the notion that the pre-Columbian Amazon was sparsely populated by small nomadic tribes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.science.org/doi/10.1126/science.adi6317" rel="noopener noreferrer"&gt;Link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.bbc.com/news/science-environment-67940671" rel="noopener noreferrer"&gt;BBC Coverage&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.smithsonianmag.com/smart-news/archaeologists-discover-ancient-cities-hidden-in-the-ecuadorean-amazon-180983588/" rel="noopener noreferrer"&gt;Smithsonian Magazine&lt;/a&gt;&lt;/p&gt;

</description>
      <category>science</category>
      <category>history</category>
    </item>
  </channel>
</rss>
