Published 2025-11-17
tag(s): #programming #meta
https://tools.sebasmonia.com got a little make over, and one new tool.
The most important change, I guess, is that the Pastebin clone is the only tool that doesn't require a log in. For all others, you need an "account".
Let's start with the account stuff then.
A friend of mine made me notice that the Image Manipulator's ability to fetch an image for
you, from any URL, could be abused in many ways.
So I added logins to the site.
And that opened the door to the last new tool (more on that later).
Also, the code got a big makeover, I split things in
more packages.[1]
It is interesting how doing that made me realize that I was leaking a bit of behaviour here
and there. Functions to save pastes that also returned HTML, display code that accessed
internal structures of other things. I was really careful, but still.
The other realization I had with this, is that adding more packages isn't difficult or
complicated. Whenever I start another project, I will modularize it from the start. Pinky
promise.
With that clean up, I also decided I needed a better way to generate HTML than just
concatenating strings. Most of the HTML is still sourced from plain old files, but
for things that are generated on the fly, I am
using this generator: hsx.
It's easy to use and perfect for the little snippets I add some pages.
Behold!

I guess this will be the last one for a while, because I am out of ideas.
So much out of ideas that I basically created my own clone of a little tool someone else
showed me.[2]
It is a tool to store links to read later. It isn't "the poorest Instapaper knock off"...well,
it is. But it is also a "perfect clone" of the original work. If you look at it that way, it
isn't a knock off ;)
The only real difference is that the original uses a table for the list of links, and mine
an <article> for each link. So I can claim it is modern, I guess. Semantic
👌
I also used a Common Lisp system for SQLite, so the links are stored in a local database,
which is nice.
Taking advantage of this, I modified the auth stuff to use a database too, instead of a text
file in the server 👀 and then I figured I could make one more change...
I created Peanut Butter thinking it should be easy to use via curl, so I could
quickly call it via the CLI or Emacs to store pastes.
And then I made sure IMAN also supported that
usage, even though with all the typing, it is just more convenient to go to the
webpage.[3]
For "Stack of Links", I though why not make it convenient to add a link to your reading list via CLI (or, via an Emacs wrapper...). Which also required authentication, since you don't want people adding links to your stack. Everyone's stack is sacred, of course.
So, for example, to add a link to your reading list, you use...
curl -H "x-hoagie-key: the_api_key" --data-urlencode "link=https://example.com" https://tools.sebasmonia.com/sol/add
Calling the header x-hoagie-key is juvenile and silly, and I frigging love it. 🤣