shakedown.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
A community for live music fans with roots in the jam scene. Shakedown Social is run by a team of volunteers (led by @clifff and @sethadam1) and funded by donations.

Administered by:

Server stats:

263
active users

#parser

0 posts0 participants0 posts today
vintage screwlisp account<p><a href="https://mastodon.sdf.org/tags/lispyGopherClimate" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>lispyGopherClimate</span></a> <a href="https://mastodon.sdf.org/tags/lisp" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>lisp</span></a> <a href="https://mastodon.sdf.org/tags/programming" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>programming</span></a> <a href="https://mastodon.sdf.org/tags/podcast" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>podcast</span></a> <a href="https://mastodon.sdf.org/tags/live" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>live</span></a> Wednesday 0UTC <a href="https://archives.anonradio.net/202503050000_screwtape.mp3" rel="nofollow noopener noreferrer" target="_blank"><span class="invisible">https://</span><span class="ellipsis">archives.anonradio.net/2025030</span><span class="invisible">50000_screwtape.mp3</span></a><br><a href="https://mastodon.sdf.org/tags/climateCrisis" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>climateCrisis</span></a> <a href="https://mastodon.sdf.org/tags/haiku" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>haiku</span></a> and <a href="https://mastodon.sdf.org/tags/risk" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>risk</span></a> <a href="https://mastodon.sdf.org/tags/inequality" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>inequality</span></a> <a href="https://mastodon.sdf.org/tags/essay" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>essay</span></a> by <span class="h-card"><a href="https://climatejustice.social/@kentpitman" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>kentpitman</span></a></span><br><a href="https://netsettlement.blogspot.com/2013/08/lien-times-for-startups.html" rel="nofollow noopener noreferrer" target="_blank"><span class="invisible">https://</span><span class="ellipsis">netsettlement.blogspot.com/201</span><span class="invisible">3/08/lien-times-for-startups.html</span></a></p><p><a href="https://mastodon.sdf.org/tags/libre" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>libre</span></a> <a href="https://mastodon.sdf.org/tags/archive" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>archive</span></a> update from <span class="h-card"><a href="https://gamerplus.org/@hairylarry" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>hairylarry</span></a></span> <a href="https://gamerplus.org/@hairylarry/114106383066762290" rel="nofollow noopener noreferrer" target="_blank"><span class="invisible">https://</span><span class="ellipsis">gamerplus.org/@hairylarry/1141</span><span class="invisible">06383066762290</span></a></p><p><a href="https://www.european-lisp-symposium.org/2025/index.html" rel="nofollow noopener noreferrer" target="_blank"><span class="invisible">https://www.</span><span class="ellipsis">european-lisp-symposium.org/20</span><span class="invisible">25/index.html</span></a><br><a href="https://mastodon.sdf.org/tags/ELS2025" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ELS2025</span></a> submissions extended to Sunday. <a href="https://mastodon.sdf.org/tags/LaTeX" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>LaTeX</span></a> <a href="https://mastodon.sdf.org/tags/ACM" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ACM</span></a> <a href="https://mastodon.sdf.org/tags/primer" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>primer</span></a> / past <a href="https://mastodon.sdf.org/tags/proceedings" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>proceedings</span></a></p><p>Notes from my first <a href="https://mastodon.sdf.org/tags/language" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>language</span></a> <a href="https://mastodon.sdf.org/tags/parser" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>parser</span></a> <a href="https://mastodon.sdf.org/tags/commonLisp" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>commonLisp</span></a> <a href="https://mastodon.sdf.org/tags/mcclim" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>mcclim</span></a> <a href="https://mastodon.sdf.org/tags/chess" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>chess</span></a></p><p>If there are guests, there are guests(?)</p><p><span class="h-card"><a href="https://appdot.net/@mdhughes" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>mdhughes</span></a></span> <span class="h-card"><a href="https://hachyderm.io/@nosrednayduj" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>nosrednayduj</span></a></span> <span class="h-card"><a href="https://appdot.net/@mdhughes" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>mdhughes</span></a></span></p>
vintage screwlisp account<p>(Towards):<br>A <a href="https://mastodon.sdf.org/tags/sidescrolling" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>sidescrolling</span></a> <a href="https://mastodon.sdf.org/tags/textAdventure" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>textAdventure</span></a> <a href="https://mastodon.sdf.org/tags/game" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>game</span></a> as the host of a Pratt Grammar <a href="https://mastodon.sdf.org/tags/Parser" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Parser</span></a>: <br><a href="https://lispy-gopher-show.itch.io/lispmoo2/devlog/870779/a-sidescrolling-game-as-a-pratt-parser" rel="nofollow noopener noreferrer" target="_blank"><span class="invisible">https://</span><span class="ellipsis">lispy-gopher-show.itch.io/lisp</span><span class="invisible">moo2/devlog/870779/a-sidescrolling-game-as-a-pratt-parser</span></a><br><a href="https://mastodon.sdf.org/tags/itch" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>itch</span></a> <a href="https://mastodon.sdf.org/tags/itch_io" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>itch_io</span></a> <a href="https://mastodon.sdf.org/tags/gameDev" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>gameDev</span></a> <a href="https://mastodon.sdf.org/tags/lisp" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>lisp</span></a> <a href="https://mastodon.sdf.org/tags/commonLisp" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>commonLisp</span></a> <a href="https://mastodon.sdf.org/tags/repl" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>repl</span></a> </p><p>Sharpsign lengthy and wandering. Sharpsign happy 2025</p><p>Basically, I was having trouble imagining parsing a grammar at all. So I imagined input tokens as a sidescroller level I could cdr-code speedrun passes of. And you know, when lisp people imagine things it happens in real life too.</p>
rk: it’s hyphen-minus actually<p>Currently dallying with a simple embedded, statically typed scripting language. The magic is an extensible lexer and parser, with the hosting application able to do something like</p><p>VM_addCommand(vm, KEYWORD(“open”), KEYWORD(“file”), TYPE(STRING), KEYWORD(“as”), REFERENCE, END);</p><p>to allow something like </p><p>open file “foo.txt” as myFile </p><p>It’s obviously been done before, but it’s fun to play with. I haven’t done enough <a href="https://mastodon.well.com/tags/compiler" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>compiler</span></a> or <a href="https://mastodon.well.com/tags/parser" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>parser</span></a> work lately. </p><p><a href="https://mastodon.well.com/tags/ComputerScience" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ComputerScience</span></a> <a href="https://mastodon.well.com/tags/programming" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>programming</span></a></p>
Karsten Schmidt<p>Updated internal state handling of the <a href="https://thi.ng/parse" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/parse</span><span class="invisible"></span></a> parser generators &amp; DSL to define parsers. Seeing a 1.2 - 1.6x speedup of parsing performance in example projects (see project readme for links), especially for larger inputs...</p><p><a href="https://mastodon.thi.ng/tags/ThingUmbrella" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ThingUmbrella</span></a> <a href="https://mastodon.thi.ng/tags/ReleaseThursday" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ReleaseThursday</span></a> <a href="https://mastodon.thi.ng/tags/Parser" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Parser</span></a> <a href="https://mastodon.thi.ng/tags/DSL" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>DSL</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>TypeScript</span></a> <a href="https://mastodon.thi.ng/tags/JavaScript" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>JavaScript</span></a></p>
Karsten Schmidt<p>Over the past few days I've been working on extending &amp; re-packaging the procedural text generation engine from one of the old examples into a new package and also just wrote/updated documentation for its various features:</p><p>- variable definitions, optionally with multiple value choices <br>- cyclic &amp; recursive variable references/expansion<br>- variable assignments<br>- dynamic, indirect variable lookups (for context specific situations)<br>- optional preset &amp; custom modifiers (i.e. pointfree/concatenative application of modifier sequences)<br>- controlled randomness during var expansion</p><p>The new package is called: <a href="https://thi.ng/proctext" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/proctext</span><span class="invisible"></span></a> (6.5KB incl. all deps) The text format used relies on a simple parser grammar defined and processed via <a href="https://thi.ng/parse" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/parse</span><span class="invisible"></span></a>. The resulting document AST is then interpreted via <a href="https://thi.ng/defmulti" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/defmulti</span><span class="invisible"></span></a></p><p>Please see readme for notes/examples, as well as the refactored example project below. The tool is very useful for complex source code generation, but also could be useful for bots, interactive fiction etc. The generator is stateful and variable state can be optionally retained/re-used over multiple invocations. Making all modifiers async is also providing a lot of flexibility (e.g. loading external data sources, generating secondary/expanded descriptions etc.)</p><p>Demo (incl. 5 examples and can be used as playground):<br><a href="https://demo.thi.ng/umbrella/procedural-text/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">demo.thi.ng/umbrella/procedura</span><span class="invisible">l-text/</span></a></p><p><a href="https://mastodon.thi.ng/tags/ThingUmbrella" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ThingUmbrella</span></a> <a href="https://mastodon.thi.ng/tags/RewriteSystem" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>RewriteSystem</span></a> <a href="https://mastodon.thi.ng/tags/ProcGen" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ProcGen</span></a> <a href="https://mastodon.thi.ng/tags/TextGeneration" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>TextGeneration</span></a> <a href="https://mastodon.thi.ng/tags/CodeGenerator" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>CodeGenerator</span></a> <a href="https://mastodon.thi.ng/tags/Parser" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Parser</span></a> <a href="https://mastodon.thi.ng/tags/DSL" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>DSL</span></a> <a href="https://mastodon.thi.ng/tags/Pointfree" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Pointfree</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>TypeScript</span></a> <a href="https://mastodon.thi.ng/tags/JavaScript" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>JavaScript</span></a> <a href="https://mastodon.thi.ng/tags/InteractiveFiction" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>InteractiveFiction</span></a></p>
Drew Cook: Gold Machine<p><a href="https://zirk.us/tags/WIP" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>WIP</span></a> <a href="https://zirk.us/tags/inform7" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>inform7</span></a> <a href="https://zirk.us/tags/interactivefiction" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>interactivefiction</span></a> <a href="https://zirk.us/tags/parser" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>parser</span></a></p>
Abhinav 🌏<p>JSON is probably the most used standard file format for storing and transmitting data on the Internet in recent times. It has a simple syntax with only four scalar data types and two composite data types. So, writing a parser for <a href="https://fantastic.earth/tags/JSON" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>JSON</span></a> is a great exercise for learning the basics of parsing.</p><p>That's exactly what I did: I wrote a JSON <a href="https://fantastic.earth/tags/parser" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>parser</span></a> from scratch in <a href="https://fantastic.earth/tags/Haskell" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Haskell</span></a>. Read my <a href="https://fantastic.earth/tags/blog" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>blog</span></a> post to learn about basics of parsing, nuances of the JSON syntax, and parser combinators and property-based <a href="https://fantastic.earth/tags/testing" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>testing</span></a> in Haskell: <a href="https://abhinavsarkar.net/posts/json-parsing-from-scratch-in-haskell/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">abhinavsarkar.net/posts/json-p</span><span class="invisible">arsing-from-scratch-in-haskell/</span></a></p><p><a href="https://fantastic.earth/tags/programming" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>programming</span></a> <a href="https://fantastic.earth/tags/functionalprogramming" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>functionalprogramming</span></a></p>
Jan :rust: :ferris:<p>Many people say that <a href="https://floss.social/tags/Rust" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Rust</span></a> is very hard to <a href="https://floss.social/tags/prototype" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>prototype</span></a> with or to <a href="https://floss.social/tags/refactor" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>refactor</span></a>. This couldn't be further from the truth! It is the exact opposite!</p><p>Let me share with you one of the most profound experiences I had with <a href="https://floss.social/tags/RustLang" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>RustLang</span></a> on a casual sunday - a thread 🧵 </p><p>I'm currently rewriting my <a href="https://floss.social/tags/transpiler" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>transpiler</span></a> from <a href="https://floss.social/tags/nom" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>nom</span></a> to <a href="https://floss.social/tags/chumsky" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>chumsky</span></a> and until now everything has turned out great so far, until I've hit the following road block:<br>Implementing parsers by using <a href="https://floss.social/tags/parser" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>parser</span></a> functions that have indirect <a href="https://floss.social/tags/recursion" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>recursion</span></a>.</p><p>1/11</p>
Karsten Schmidt<p><a href="https://mastodon.thi.ng/tags/HowToThing" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>HowToThing</span></a> #013 — Building a toy Lisp language and interpreter using the S-expression parser from <a href="https://thi.ng/sexpr" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/sexpr</span><span class="invisible"></span></a> and polymorphic multiple dispatch functions via <a href="https://thi.ng/defmulti" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/defmulti</span><span class="invisible"></span></a>. A small language like this can be useful for DSL purposes, user programming or for just learning about interpreters. The entire setup is highly customizable (incl. support for different kinds of S-expressions, see package readme).</p><p>Even this tiny example includes the following features: variadic math ops, ability to define new symbols/variables &amp; functions, lexical scoping, numeric &amp; string values...</p><p>Some example invocations are included at the end...</p><p>Source code:<br><a href="https://github.com/thi-ng/umbrella/blob/develop/packages/sexpr/README.md#interpreter" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/thi-ng/umbrella/blo</span><span class="invisible">b/develop/packages/sexpr/README.md#interpreter</span></a></p><p>(Update: Minor code simplifications, updated images)</p><p><a href="https://mastodon.thi.ng/tags/ThingUmbrella" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ThingUmbrella</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>TypeScript</span></a> <a href="https://mastodon.thi.ng/tags/JavaScript" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>JavaScript</span></a> <a href="https://mastodon.thi.ng/tags/Parser" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Parser</span></a> <a href="https://mastodon.thi.ng/tags/DSL" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>DSL</span></a> <a href="https://mastodon.thi.ng/tags/Interpreter" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Interpreter</span></a> <a href="https://mastodon.thi.ng/tags/Lisp" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Lisp</span></a> <a href="https://mastodon.thi.ng/tags/Tutorial" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Tutorial</span></a></p>
IT News<p>Pratt Parsing for Algebraic Expressions - Parsing algebraic expressions is always a pain. If you need to compute, say, 2+4*2... - <a href="https://hackaday.com/2023/07/03/pratt-parsing-for-algebraic-expressions/" rel="nofollow noopener noreferrer" target="_blank"><span class="invisible">https://</span><span class="ellipsis">hackaday.com/2023/07/03/pratt-</span><span class="invisible">parsing-for-algebraic-expressions/</span></a> <a href="https://schleuss.online/tags/algebraiccomputation" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>algebraiccomputation</span></a> <a href="https://schleuss.online/tags/softwaredevelopment" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>softwaredevelopment</span></a> <a href="https://schleuss.online/tags/prattparser" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>prattparser</span></a> <a href="https://schleuss.online/tags/parser" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>parser</span></a></p>
Hanon Ondricek<p>If you're a creator, player, archivist or fan of <a href="https://dosgame.club/tags/interactivefiction" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>interactivefiction</span></a> we welcome you to join the discussion at intfiction.org!</p><p><a href="https://intfiction.org" rel="nofollow noopener noreferrer" target="_blank"><span class="invisible">https://</span><span class="">intfiction.org</span><span class="invisible"></span></a></p><p><a href="https://dosgame.club/tags/if" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>if</span></a> <a href="https://dosgame.club/tags/textadventures" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>textadventures</span></a> <a href="https://dosgame.club/tags/inform7" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>inform7</span></a> <a href="https://dosgame.club/tags/twine" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>twine</span></a> <a href="https://dosgame.club/tags/parser" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>parser</span></a> <a href="https://dosgame.club/tags/CYOA" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>CYOA</span></a> <a href="https://dosgame.club/tags/xyzzy" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>xyzzy</span></a> <a href="https://dosgame.club/tags/adventuregame" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>adventuregame</span></a> <a href="https://dosgame.club/tags/infocom" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>infocom</span></a> <a href="https://dosgame.club/tags/zork" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>zork</span></a></p>
Aral Balkan<p>Minimum¹ valid HTML file, did you say? Here you go:</p><p>&lt;!doctype html&gt;&lt;html lang&gt;&lt;title&gt;🤓&lt;/title&gt;</p><p>(Tested with <a href="https://validator.w3.org/nu/#textarea" rel="nofollow noopener noreferrer" target="_blank"><span class="invisible">https://</span><span class="">validator.w3.org/nu/#textarea</span><span class="invisible"></span></a>)</p><p>I mean, needless to say, don’t do this. Just because you can doesn’t mean you should :)</p><p>¹ Minimum number of characters (not bytes) without errors or warnings, that is. If you don’t care about warnings, you can remove &lt;html&gt;. If you want the minimum number of bytes, replace the emoji with a dot or something ;)</p><p><a href="https://mastodon.ar.al/tags/html" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>html</span></a> <a href="https://mastodon.ar.al/tags/forgiving" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>forgiving</span></a> <a href="https://mastodon.ar.al/tags/parser" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>parser</span></a> <a href="https://mastodon.ar.al/tags/validation" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>validation</span></a> <a href="https://mastodon.ar.al/tags/web" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>web</span></a> <a href="https://mastodon.ar.al/tags/dev" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>dev</span></a></p>
Karsten Schmidt<p>Because <a href="https://mastodon.thi.ng/tags/ThingUmbrella" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ThingUmbrella</span></a> has such a wide scope, sometimes groundwork laid years ago can take me a while to properly benefit from, but oh boy, when it does, it does...!!! 😍</p><p>Case in point: This week I've been finally getting around replacing the <a href="https://mastodon.thi.ng/tags/Markdown" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Markdown</span></a>-ish parser in <a href="https://thi.ng/hiccup-markdown" rel="nofollow noopener noreferrer" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/hiccup-markdown</span><span class="invisible"></span></a>. This <a href="https://mastodon.thi.ng/tags/parser" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>parser</span></a> is NOT striving to be CommonMark compatible, but it does support a large MD subset and important additional features not available in standard Markdown, like custom content blocks and arbitrary metadata for _any_ block element (i.e. paragraphs, lists, codeblocks, tables, blockquotes...) — these are all features I'm urgently needing for my coursework, website generator &amp; PKM tooling and which I'd been putting off for far too long...<br> <br>Unlike the old handwritten parser, the new one is largely based on <a href="https://thi.ng/parse" rel="nofollow noopener noreferrer" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/parse</span><span class="invisible"></span></a> grammar definitions[1] and produces a nice abstract syntax tree of the Markdown document and makes transforming the raw nodes/elements a breeze. Additionally, using the totally under-appreciated <a href="https://thi.ng/defmulti" rel="nofollow noopener noreferrer" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/defmulti</span><span class="invisible"></span></a> polymorphic function setup adds sheer elegance to the new implementation.</p><p>The entire new setup also is super easy to extend &amp; customize. By default all MD syntax elements are being transformed into <a href="https://thi.ng/hiccup" rel="nofollow noopener noreferrer" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/hiccup</span><span class="invisible"></span></a> format, i.e. the most basic general data exchange format based on S-expression-like nested vanilla JS arrays (also the defacto intermediary for dozens of other thi.ng/umbrella packages), see attached screenshot. Just this afternoon, it took me &lt; 30 mins to update the grammar and implement nested inline styles (e.g. italic inside bold inside strikethrough inside a nested list element).</p><p>As you can maybe tell, I'm v.excited about this all (mainly because this was a big showstopper for other things). If there's interest I might even write a blog post about these techniques used.</p><p>To get back to the previously mentioned "pay off": This entire new parser was largely developed with the parser playground tool/editor I developed in summer 2020 in the almost 3 hours of my very first YouTube live stream[2].</p><p>The link to the playground (incl. the grammar &amp; examples) is at the top of this source file:</p><p>[1] <a href="https://github.com/thi-ng/umbrella/blob/develop/packages/hiccup-markdown/src/parse.ts" rel="nofollow noopener noreferrer" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/thi-ng/umbrella/blo</span><span class="invisible">b/develop/packages/hiccup-markdown/src/parse.ts</span></a></p><p>[2] <a href="https://www.youtube.com/watch?v=mXp92s_VP40" rel="nofollow noopener noreferrer" target="_blank"><span class="invisible">https://www.</span><span class="ellipsis">youtube.com/watch?v=mXp92s_VP4</span><span class="invisible">0</span></a> (recommend playback @ 1.5x speed :)</p>