惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
Martin Fowler
Martin Fowler
I
InfoQ
腾讯CDC
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
爱范儿
爱范儿
Microsoft Security Blog
Microsoft Security Blog
Google DeepMind News
Google DeepMind News
D
DataBreaches.Net
云风的 BLOG
云风的 BLOG
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
D
Docker
博客园 - 三生石上(FineUI控件)
Y
Y Combinator Blog
博客园 - Franky
Engineering at Meta
Engineering at Meta
B
Blog
罗磊的独立博客
Apple Machine Learning Research
Apple Machine Learning Research
Jina AI
Jina AI
V
Visual Studio Blog

Hacker News

GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis Bonsai 1-bit WebGPU - a Hugging Face Space by webml-community Moving a large-scale metrics pipeline from StatsD to OpenTelemetry / Prometheus GitHub - Nightmare-Eclipse/RedSun: The Red Sun vulnerability repository GitHub - SethPyle376/hiraeth: Local AWS emulator focused on fast integration testing, with SQS support, SQLite-backed state, and a debug-friendly web UI. GitHub - macOS26/Agent: Any AI, replaces Claude Code, Cursor, OpenClaw. Over 18 LLM providers (Claude, OpenAI, Gemini, Ollama, Zai, HF, Qwen) wired into a native Mac app that writes code, builds Xcode projects, bumps versions, manages git, automates Safari, use AppleScript, JS or Accessibility, extend Agent! w/ MCP Servers, run tasks from your iPhone via Messages. YouTube now lets you turn off Shorts I Made a Terminal Pager Burgers | マクドナルド公式 Commands — HackerNews CLI documentation ChatGPT for Excel PiCore - Raspberry Pi Port of Tiny Core Linux Live Nation illegally monopolized ticketing market, jury finds Google Broke Its Promise to Me. Now ICE Has My Data. Founding Engineer at Adaptional | Y Combinator CRISPR takes important step toward silencing Down syndrome’s extra chromosome GitHub - saffron-health/libretto: The AI toolkit for building reliable browser automations US v. Heppner (S.D.N.Y. 2026) no attorney-client privilege for AI chats [pdf] Retrofitting JIT Compilers into C Interpreters IPv6 – Google The Accursèd Alphabetical Clock Cybersecurity Looks Like Proof of Work Now Fragments: April 14 Cal.com Goes Closed Source: Why AI Security Is Forcing Our Decision | Cal.com - Scheduling Software for Online Bookings Laravel raised money and now injects ads directly into your agent When moving fast, talking is the first thing to break Too much Discussion of the XOR swap trick – Heather Cafe Introduction to Spherical Harmonics for Graphics Programmers The Grand Line
Writing Postcards With a 3D Printer
2026-06-19 · via Hacker News

I read Amy Goodchild’s blog post about digitizing her handwriting in JavaScript a while ago and couldn’t stop thinking about it. I didn’t end up digitizing my own handwriting, but it pushed me toward a smaller idea: clamp a ballpoint pen to my 3D printer and let it write postcards for me.

This post is the story of getting there, including the part where my printer almost drove the pen straight through the bed.

The pen adapter

I have an Elegoo Neptune 4 Plus. The first job was a way to mount a pen on the extruder, so I designed an adapter in OpenSCAD and printed it in PLA. It comes in three pieces.

Cross-section of the main adapter body in OpenSCAD, showing the channel for the pen cartridge and the spring
The main adapter body, sliced open in OpenSCAD. The channel holds the cartridge and the spring sits above it.

The main piece wraps around the extruder and holds the ballpoint cartridge and a spring. The spring matters more than I expected. It lets the pen push down a little into the paper, so there’s enough pressure to write even if the surface isn’t perfectly level.

The second piece is a small U-shaped part that presses against the top of the extruder. Without it, the screws holding everything together would bear directly on the extruder, and I didn’t want to risk that.

The third piece is a tiny clamp that keeps the cartridge spring in place.

The ballpoint cartridge next to the printed clamp that holds its spring
The ballpoint cartridge and the little clamp that keeps its spring in place.

None of the parts are precise. PLA was fine, and I’d guess almost any filament would work. If you want to print your own, the STL files are on Thingiverse.

The finished adapter mounted on the printer's extruder
The assembled adapter mounted on the extruder, ready to write.

First test

Before doing anything clever I just wanted to know if the concept held up. I mounted the adapter, used the printer’s manual controls to drive the pen down onto a sheet of paper, and moved the axes by hand.

It wrote. Cleanly, even. That was enough to keep going.

Software

To generate something to write, I used Inkscape. Newer versions ship with a Hershey Text extension that converts text into single-stroke SVG paths, which is exactly what you want for a pen plotter. I typed some text and converted it.

Then I fed that SVG into svg2gcode, a web tool that turns SVGs into G-code. The setup is a bit manual: I moved the pen by hand to the lower edge of the paper to set my X and Y origin, then lowered Z until the pen just touched the surface and used that height for the pen-down command.

For my machine, pen down is:

G1 Z10 F100

and pen up is:

G1 Z15 F100

Second test (the one that didn’t work)

My plan was simple: take the generated G-code, send it to the printer as if it were a normal print, and watch it write instead.

It didn’t write. The printer has a safety routine that homes every axis before a print starts. Homing X and Y is harmless, but homing Z is a problem, because the pen and adapter sit lower than the extruder normally does. With the pen attached, homing Z means driving the tip into the bed.

I ran this test at very low speed, so nothing got damaged and the cartridge spring absorbed the contact. But no matter what I tried, I couldn’t disable the forced homing. Time for a different approach.

Custom software

The first test had already shown me the way out: the printer writes fine when I drive it with the manual controls, and those don’t trigger a home cycle. So if I could send manual movement commands one at a time, I could skip the homing problem entirely.

Digging around, I found that the Neptune runs Moonraker, which exposes both a REST and a WebSocket API for talking to the printer. That was the missing piece.

So I wrote a small tool that takes a G-code file and a printer address and streams the file line by line over a WebSocket connection. It’s nothing fancy, and the code is on GitHub.

Third test

Same workflow as before: Inkscape for the SVG, svg2gcode for the G-code, then my streamer to send it to the printer. I kept the speed low and set a high Z value on the first run so the pen would trace everything in the air, well above the paper. That let me confirm the motion looked right before committing to ink. Once I was happy, I dropped Z down to actually write.

It worked.

Setting up a new writing project

For my own reference, here’s the full routine for writing on a fresh sheet:

  1. Start the printer and home all axes before attaching the adapter, so the printer knows where it is.
  2. Mount the adapter on the extruder.
  3. Place the paper or postcard on the bed, with its lower edge parallel to the front of the bed.
  4. Hold the paper down with a few magnets.
  5. Manually drive to the lower-left corner of the paper and lower Z until the pen touches it.
  6. Note the X, Y, and Z values.
  7. In Inkscape, create your SVG and set the document size to match the paper.
  8. In svg2gcode, set the X and Y origin to your noted values and use the Z value for the pen-down command.
  9. Stream the G-code to the printer with g-code-streamer.
  10. For writing several identical sheets, leave two magnets as end stops so the next sheet lands in the same spot.

Wrap-up

This was a fun weekend project, and watching the machine work is oddly relaxing. Since it writes any SVG, it draws pictures just as happily as text, and it’s gotten me to send actual postcards to friends and family for the first time in years. Here’s a short clip of the plotter in action.

The plotter writing a postcard.