Compare commits

...

6 Commits

Author SHA1 Message Date
vilmibm 081ff09c9c hack to fix anchor placement 2023-04-13 05:46:04 +00:00
vilmibm 4858b0121b fix link numbering 2023-04-13 05:41:21 +00:00
vilmibm 34b1a118a3 add support for (IMG) macro 2023-04-13 05:25:31 +00:00
vilmibm 8f39c5a1e9 new posts 2023-04-13 05:25:00 +00:00
vilmibm 304505700b hermeticum post 2023-01-28 07:00:45 +00:00
vilmibm 02b7c935ad update coffee research 2023-01-03 22:12:38 +00:00
6 changed files with 155 additions and 11 deletions

41
main.go
View File

@ -17,10 +17,15 @@ func _main(o opts) error {
return fmt.Errorf("could not read from stdin: %w", err)
}
r := regexp.MustCompile(`\(LINK ([^ ]+?) (.+?)\)`)
mms := r.FindAllSubmatch(t, -1)
// TODO replace imgs
if mms == nil {
linkRE := regexp.MustCompile(`\(LINK ([^ ]+?) (.+?)\)`)
linkMatches := linkRE.FindAllSubmatch(t, -1)
imgRE := regexp.MustCompile(`\(IMG ([^ ]+?) (.+?)\)`)
imgMatches := imgRE.FindAllSubmatch(t, -1)
if linkMatches == nil && imgMatches == nil {
fmt.Fprintf(o.Out, string(t))
return nil
}
@ -28,10 +33,13 @@ func _main(o opts) error {
output := string(t)
footer := ""
for ix, ms := range mms {
rawLink := string(ms[0])
link := string(ms[1])
title := string(ms[2])
linkIx := 0
for ix, lm := range linkMatches {
linkIx = ix
rawLink := string(lm[0])
link := string(lm[1])
title := string(lm[2])
switch o.Mode {
case "html":
output = strings.ReplaceAll(output, rawLink,
@ -49,6 +57,25 @@ func _main(o opts) error {
}
}
for ix, im := range imgMatches {
linkIx += ix
rawImg := string(im[0])
src := string(im[1])
alt := string(im[2])
switch o.Mode {
case "html":
output = strings.ReplaceAll(output, rawImg,
fmt.Sprintf("<img src=\"%s\" alt=\"%s\"/>", src, alt))
case "gopher":
output = strings.ReplaceAll(output, rawImg, fmt.Sprintf("%s[%d]", alt, linkIx))
linkType := "p"
footer += fmt.Sprintf("%s[%d]: %s %s\n", linkType, linkIx, alt, src)
case "gemini":
output = strings.ReplaceAll(output, rawImg, fmt.Sprintf("%s[%d]", alt, linkIx))
footer += fmt.Sprintf("=> %s [%d]: %s\n", src, linkIx, alt)
}
}
if footer != "" {
output = output + "\n\n" + footer
}

View File

@ -60,8 +60,8 @@ do
else
# HTML
echo "<div class=\"title\">" >> $htmlIndex
echo "<h2>${title}</h2>" >> $htmlIndex
echo "<a class=\"pubdate\" name=\"${slug}\" href=\"https://tilde.town/~vilmibm/blog#${slug}\">${pubdate}</a>" >> $htmlIndex
echo "<h2>${title}<a name=\"${slug}\"></a></h2>" >> $htmlIndex
echo "<a class=\"pubdate\" href=\"https://tilde.town/~vilmibm/blog#${slug}\">${pubdate}</a>" >> $htmlIndex
echo "</div>" >> $htmlIndex
echo "<div class=\"post\">" >> $htmlIndex
grep -v "pubdate:" $p | grep -v "title:" | grep -v "slug:" | $lp --mode "html" | pandoc -fmarkdown -thtml >> $htmlIndex

View File

@ -5,8 +5,12 @@ slug: berkeoffe
i have moved to berkeley. of chief importance is finding the coffee. the following is the result of initial recon bike rides.
1. artis. the first espresso i had here was capital P Perfect. the second two were Pretty Good. the cafe music switching over to top 40 at some point was disconcerting.
2. réveille coffee. it was pretty good, though i wasn't too into the breakfast burrito.
2. réveille coffee. it was pretty good, though i wasn't too into the breakfast burrito. Further recon revealed that their chilaquiles are really delicious, though.
3. highwire (san pablo). perfectly cromulent
4. cafenated. the espresso was in no way bad, just the one i was least excited about. i did rather enjoy their breakfast burrito, though.
5. coffee conscious. i really hate to say this. i do. but it's the worst coffee i have had in the city. i've been multiple times in disbelief. i also do not like the donuts they carry.
6. my coffee. have only been once but the espresso was very, very good.
7. signal. pretty good. similar tier as Cafenated.
8. the hidden cafe. i do not remember the coffee from here which means it was neither notably bad nor good. mostly i just remember how cramped it is trying to go there if the weather is at all nice out.
still to try: breadxcoffee, coro, royal ground, souvenir, hal's, coffee conscious, the OTHER highwire, etc
still to try: breadxcoffee, coro, royal ground, souvenir, hal's

View File

@ -0,0 +1,49 @@
pubdate: Sat Jan 7 02:34:49 UTC 2023
title: announcing Hermeticum (formerly tildemush)
slug: announcing-hermeticum
## tl;dr
I'm fully rewriting the (LINK https://github.com/vilmibm/tildemush tildemush) MOO engine as (LINK https://github.com/vilmibm/hermeticum hermeticum) and actually plan to release it for real this time ^_^
## huh what
A few years ago I shipped an alpha version of a new (LINK https://en.wikipedia.org/wiki/MOO MOO) style system called (LINK https://github.com/vilmibm/tildemush tildemush). It was crude in many respects, but did function. In addition to basic account creation and chatting features, it supported:
- a custom lisp-like language called WITCH for scripting objects
- a bidirectional key/value system for object metadata mutated through code
- a permission system for objects
- an in-client editing interface for objects' code
- ability to create rooms in client and move among them
- a way to view a map of the world's rooms using ascii graphics
- support for transitive and intrasitive verb handling
Unfortunately, it had an insurmountably large amount of technical debt and continuing development on it was not pleasant. I shelved the project for almost four years, seriously unwilling to admit that I felt it was unsalvagable. I was not able to shake the dream of seeing this project through, however, and decided it was worth a full rewrite.
Thus, this blog post serves as an announcement of (LINK https://github.com/vilmibm/hermeticum Hermeticum), a full rewrite and re-imagining of tildemush. I waited to make a statement like this until I actually had something working. I'm pleased to say I have a rudimentary client and server going in the Go language, including a new version of WITCH powered by Lua instead of Hy.
The vision of the project remains the same: a social, creative place targeted at the (LINK https://tilde.town tilde town) community that embraces the spirit of MOO/MUSH/MUD/MUCK engines with a fresh perspective.
Though huge features are still missing, I am very excited about the foundation I have laid and am more optimistic on delivering a compelling experience than I ever was with tildemush. If you want to follow along, I'm tracking progress in a (LINK https://github.com/vilmibm/hermeticum/blob/trunk/roadmap.md roadmap file).
## rambling pontification
You, dear hypothetical reader, might be asking why I'm bothering with all this. It's 2022; there are both decades-old existing MOO/MUSH/MUD/MUCK engines as well as a whole world that has moved on from them. Why not try and revitalize interest in existing technology? or just go live inside of the metaverse forging NFTs or whatever with my digital blood, cyber sweat, and virtual tears?
I have, since youth, been obsessed with the idea of being "inside" a computer. To this end I have created things like (LINK https://tilde.town tilde town), (LINK https://github.com/vilmibm/murepl murepl), and other communities and technologies long since dead. I have also tried a bunch of MUDs and MOOs. To date, however, none of my creations or dabbling with pre-existing communities has fully scratched the itch I have had since I first used a computer in like 1992 or whatever.
I feel that existing MOO/MUD/MUCK/MUSH technology is saddled by both technical and community debt. Technically, such engines had to make engineering trade-offs for very constrained execution environments. These trade-offs led to scripting experiences very difficult for beginners to understand. They are also from the telnet era, which seriously constrains both client capability and security. Community-wise, MOO/MUD/MUCK/MUSH engines rose up out of a kind of competitive and often exclusive nerd culture. There was a lot to love about this era of culture (most notably how it fostered techno-utopian feminist thinkers), but I like less RTFM-style environments in favor of those that welcome the kind of spontaneous creativity that newcomers can bring to a place if they feel sufficiently welcomed.
As far as why I'm still so invested in "antiquated" text-based experiences in this (cursed) world of ponzicoins and addiction-oriented graphical MMOs? Text is a perfect jumping-off point for imagination and creativity. It's endlessly mutable and highly accessible. I love text and don't see a reason to abandon it, especially in a post-unicode world.
## do you want to help?
The user registration/login code both client and server side needs help and is isolated from the actual game engine stuff that I'll be focusing on in the short term.
Additionally, I'd love help shaping WITCH, the in-game object scripting language. This requires folks interested in doing some beta testing--creating objects, giving them behavior, and providing feedback on its ease of use. I'm new to Lua and would appreciate feedback on how I'm using it.
For now the development is happening on GitHub. I'd like it to be elsewhere, but haven't made up my mind where it should go.
## anyway, uh
have a good one!

View File

@ -0,0 +1,45 @@
pubdate: Thu Mar 31 04:37:31 UTC 2023
title: book marks
slug: bookmarks
I got a new computer. It's a thinkpad (x1 carbon gen10) and came with Ubuntu preinstalled. I often say this about new computers, but I really like it. I tend to get to a point when I'm mad at the new computer and then all feels lost until the next one. This one feels different; it feels like home. This is a blog post about bookmarks but first: a tour through computing disappointments from the thinkpad I had in 2010 to today:
- the thinkpad in 2010 did not let me down. I loved it. I lost it in a very bad breakup.
- job gave me a macbook. it was heavy and hot. I put ubuntu on it and it barely worked. I hated it.
- next job gave me a dell xps 13 with ubuntu. it was hot and sharp. the hard drive eventually died.
- I actually have no idea what the next job gave me. I just don't remember at all. that's weird. probably a mac book pro.
- next job gave me a thinkpad x1 carbon gen5. I put linux on it. I liked it mostly but it had very quiet speakers and a dim screen. Also hot.
- job forced a switch to mac. mac book pro 2018. I hated the touchbar. heavy and hot. really bad keyboard.
- microsoft surface go. this thing was adorable. Basically a netbook. Awkward on my lap, though, and ran real slow.
- microsoft suface book. the worst designed laptop I have ever used. screen cracked in my bag and it cut my thumb a few times.
- microsoft surface pro x. Also awkward on my lap and blue screened once a day. laughably unusable.
- system76 lemur pro. I had such high hopes. terrible keyboard, bad speakers, bad touchpad, and serious hardware issue around battery consumption. gave it away.
- job gave me an m1 mbp. I came pretty close to liking this laptop. ultimately it was macos that made it unpleasant for me. also, i did not love the keyboard.
This new bud has a _beautiful_ screen. decent speakers. A luxurious keyboard and touchpad. Big SSD. even the fingerprint reader works in Ubuntu. Since its first boot this laptop has felt like home.
Something about this home feeling has made me feel comfortable. Like I'm sinking into a cozy chair and taking stock of a warm, safe, familiar cottage. I set up Firefox and synced my stuff and felt like arranging my big pile of unsorted bookmarks from the past decade-ish.
here's some that felt notable. maybe i'll add more later.
(LINK https://www.increpare.com/ increpare.com) a large collection of interesting little games, many of which are playable in the browser. I do not know how or when I came across this.
(LINK https://frandallfarmer.github.io/neohabitat-doc/docs// neo habitat) a remake of the original graphical multiplayer game.
(LINK https://web.archive.org/web/20221218232044/https://mud.co.uk/richard/DesigningVirtualWorlds.pdf A PDF of Richard Bartle's Designing Virtual Worlds book) Unfortunately his site has gone down but the Wayback machine has a backup.
(LINK https://alba-valb.org/ lincoln brigade database) database of americans that volunteered in the (LINK https://en.wikipedia.org/wiki/Spanish_Civil_War spanish civil war)
(LINK https://twitter.com/dasharez0ne/status/979810839749210112/ this da share zone tweet my wife and i reference constantly)
(LINK https://us.v-cdn.net/6030815/uploads/983/406D7PPRTDZG.gif this gif)
(LINK https://www.imdb.com/title/tt0155636/ imdb entry for Colony Mutation) Came across this fascinating, kind of cronenberg-without-budget movie recorded onto a blank VHS tape in a thrift store.
(LINK https://patents.google.com/patent/US1214863A/en the patent for disco balls)
(LINK https://en.wikipedia.org/wiki/Leopold_von_Sacher-Masoch the wikipedia article for Leopold von Sacher-Masoch). Masochism is named for him. Though he didn't want that.
(LINK http://www.oocities.org/capitolhill/2333/rookie.html drama in alphaworld)
(LINK https://imgur.com/a/SkZQ4 a gallery of cyberpunk/hacker zines) some really cool stuff i haven't seen elsewhere.

View File

@ -0,0 +1,19 @@
pubdate: Thu Apr 13 05:06:39 UTC 2023
title: smudge
slug: smudge
I made a new piece of (LINK https://github.com/vilmibm/smudge software) . It's a command line piece of art.
(IMG https://raw.githubusercontent.com/vilmibm/smudge/trunk/smudge.gif a recording of a terminal running the smudge program. a grid of characters in grey turns orange from the top town, eventually dissipating into smoke)
The software accepts any number of filenames as arguments. each file is then interleaved, character by character, into a grid. the grid of characters is then ignited and the fire spreads downward. characters eventually become smoke particles that float upward and wisp away into nothing.
I made this program because I wanted something I could run ritualistically. Initially, it was to run on a computer as a way to make it feel like a home. I've been using it, however, as a meditation aid. Before commiting to a potentially stressful task, I get a related text file and then watch it burn away. It's comforting and gives me some space and time to breathe.
Ritual is important. It can help nudge the brain into certain states. It can provide structure to a day or event which in turn can help focus a mind in turmoil. It provides an intentional space for reflection. I don't get much out of rituals involving physical objects, however. I think living in America my whole life has made me consider many physical goods as a form of (LINK https://www.urbandictionary.com/define.php?term=kipple kipple) . This was less true growing up when I lived in a forest since I could wander out and find a weird stick or rock or curious leaf covered in gall; but since then, even if I go out and obtain something from the natural world to use ritualistically, I am distracted by how shallow and capitalist it feels. It's also frowned on to be seen burning things in an urban environment.
the smudge program is a way to address this for me. Text files feel like special objects. They occur organically and have a shape to them that is incidental, like something from a forest floor. And digital conflagration can't burn down my house. I have found this program to be highly satisfying for its intended end.
It is written in Go. I have been slowly adding to a tiny "framework" for doing this kind of programming in Go on the command line based on a library I really like called (LINK https://github.com/gdamore/tcell tcell) . If you are interested in that code, you can see it (LINK https://github.com/vilmibm/smudge/blob/trunk/game/game.go on github). I might split it out into its own library. Let me know if that seems useful.
If you want to download and use smudge, you can get a binary from (LINK https://github.com/vilmibm/smudge/releases/tag/v1.0.0 its release page) for your OS.