There's a dungeon under this blog

10 points by lvmbdv a day ago on lobsters | 17 comments

chrismorgan | 23 hours ago

The always-loaded part is a 1,057-byte script that listens for the way in and does nothing else.

https://blog.lvmbdv.dev/js/dungeon/trigger.6822910391ff65316b612cf7d7c330d6076dd49ecc0be2fa45287fd271619e60.js is 1066 bytes. And you’re not counting the HTML for it, which adds another 242 bytes plus the overhead of an HTTP request.

There’s quite a bit of golfing missed. Here’s some, getting the entire thing (as written inline) down to a nice round 888 bytes. I may have missed more opportunities, and might have broken things by accident (what is this word “testing” that you use?) but 888 was a neat stopping point. I’ve used a number of quite neat techniques to make the reader cry.

<script>(()=>{var e,t,o,n,r=["ArrowUp","ArrowUp","ArrowDown","ArrowDown","ArrowLeft","ArrowRight","ArrowLeft","ArrowRight","b","a"],d=()=>(o=0,e=0,t="",document.addEventListener("keydown",w)),a=0,i=0,c=e=>o||(o=1,document.removeEventListener("keydown",w),window.umami?.track("dungeon-open",{method:e}),import("/js/dungeon/game.bf4c004cc46769438dc2db273a23cb95886db809745386e6a39955cab6fa30d0.js").then(t=>t.start({tiles:"/dungeon/tilemap.png",method:e,onClose:d})).catch(d)),w=o=>{(n=o.target).isContentEditable||"INPUT"==(n=n.tagName)||"TEXTAREA"==n||o.metaKey||o.ctrlKey||o.altKey||(10==(e=(n=o.key)==r[e]?e+1:n==r[0]?1:0)?c("konami"):n.length-1||(t=(t+n.toLowerCase()).slice(-7),(n=["dungeon","xyzzy","delve","iddqd"].find(e=>t.endsWith(e)))&&c(n)))};d(),document.querySelector("footer").addEventListener("touchend",()=>7>(a=i+600>(i=+new Date)?a+1:1)||(a=0,c("tapped")));})()</script>

… why did I just do this?

I can’t even enter with the Konami code because my laptop’s ArrowLeft key died a couple of years ago. And the stereo sound is wasted because my laptop’s right speakers are worse than dead (tweeter produces quiet white noise when powered on). But who can afford a new laptop with at least 40GB of RAM (I don’t want to lose any!) these days?

… why did I just do this?

So that Claude can read your comment and reimplement your work, and possibly add it to the writeup too. I caught myself almost leaving some feedback but I do wonder what the point is when the implementation, most of the idea, and even the explanation of it seem to be basically slop.

[OP] lvmbdv | 21 hours ago

Under a post clearly tagged vibecoding both on lobste.rs and the blog itself, not only are you not bringing anything new or interesting to the conversation unlike the comment you were replying to, but attacking the idea which drove the whole thing into existence itself.

I will not turn this thread into a discussion by replying any further but I suggest you re-consider your conduct keeping in mind there is a human behind the "slop".

Tbh I don't feel great about comments like this either because of the other human in the picture. But I still feel like it needs to be said, and I wish we had an enforced content policy that made it unnecessary. It seems like you're using lobste.rs exclusively to self promote your own blog, the content of which is AI generated. I can't speak to what level of effort you actually put in on any of this, but your agent gives us a hint:

Most of this was built by Claude Fable in an evening of back and forth, and the division of labor was what you’d hope: I said things like “make it a dungeon crawler” and “the message scrolls could be punchier,”

If you can't even write down your own thoughts about what your agent produced, I don't feel I'd be alone in saying this isn't the type of content that we should encourage here. It's sad because I would love this type of thing if it didn't come across as lazy. There are plenty of other venues to share low effort, outcome-above-all projects.

[OP] lvmbdv | 20 hours ago

My use of lobste.rs is well within its guidelines. As you said, you cannot speak to what level of effort I put in, so why jump to the conclusion that it's a "low effort", "outcome-above-all" project? Your hand-waving of my blog content as "AI-generated" just because I use such assistance in my authoring workflow is also hurtful, but I'll stop that discussion at that, since you clearly do not care about nuance in this regard.

I'd suggest you find better avenues to vent your frustration about a much larger issue instead of attacking actual work.

why jump to the conclusion

I'm happy to go into details.

  • The literal quote that I posted shows that your input was very high level, and Claude did all of the work and made most of the decisions.
  • There are obvious AI tells all over your writeup - I won't bother listing them because I'd just be pasting the whole thing. Giving Claude bullets and having it expand them is an "authoring workflow" I guess but I feel Claude should be listed as the author here and credit you for some assistance in its workflow.

The self promo rule of thumb is 25% or less. I'm not a cop but clearly you're way off from that guideline.

I'm going to leave this alone at this point because there's nothing more to be said.

I can’t even enter with the Konami code

xyzzy is your friend!

[OP] lvmbdv | 21 hours ago

Thanks for the golfing tips. I had never put that much thought into further shrinking the trigger script after I saw it was around 1 kilobytes anyway.

haha, I should have guessed. I also have one web page where the konami code does something.

vbernat | a day ago

On a phone, I didn't find it...

[OP] lvmbdv | a day ago

Aww, since mobile users are at a disadvantage here I'll just give it out. You tap the site footer 7 times.

vbernat | a day ago

You'll be lucky if you get any user! :)

dmcgrath | a day ago

Oh interesting, my first instinct was to enter a certain key combination which also worked! Cute game, I only made it to depth 5 though.

mftrhu | 21 hours ago

When I read "one for the dwarves" I assumed it meant "mellon", as in the gates of Moria. Had to peek at the source to figure it out.

[OP] lvmbdv | 20 hours ago

Oooh that's a good one, but I was more in the mindspace of roguelikes and other genres of the same era.

I'm not sure how I can open chests or find items. I suppose someone else has already opened all chests in the levels I entered?

[OP] lvmbdv | 21 hours ago

The only inputs are related to movement so walking up to chests / weapons / potions automatically loots / picks up / quaffs. There were quite a few chests on the first room on level 2 today so if there weren't any on your run, it's most likely that you joined an already ongoing session with someone who looted those.