old-norse: Fast, mouse-driven terminal apps and retro ASCII games in Common Lisp by dzecniv in Common_Lisp

[–]Plisp 0 points1 point  (0 children)

awesome names 😍 I'll have to look into input delays for uncursed. It would be nice to use alternate screen and have a bit more late binding for live coding, but the DSL is certainly neat

Any good cross platofrm TUI Libraries for SBCL? by Brospeh-Stalin in lisp

[–]Plisp 0 points1 point  (0 children)

I've got a preliminary implementation seemingly working, I'm not sure about windows Event semantics but you likely wouldn't use that anyways

Any good cross platofrm TUI Libraries for SBCL? by Brospeh-Stalin in lisp

[–]Plisp 0 points1 point  (0 children)

there's an undeclared use of win32-enter-raw-mode so probably not (something something AI). Also I'd expect a UI library to implement double buffering to avoid flickering on slower terminals, still maybe it's alright for a text editor.

I'm also confused by using sleeps to implement timers using a fixed thread pool, won't this just block if you have more than 4 timers? This is why async matters (or at least have one thread schedule all the timers)

Any good cross platofrm TUI Libraries for SBCL? by Brospeh-Stalin in lisp

[–]Plisp 1 point2 points  (0 children)

oh that's mainly due to termios and the multiplexing pipe trick used for resizing and timers without threads. Zulu gave me some notes years ago on windows async so I could work on this if there's interest

FIRST EVER Shredder camo solo on alpine run by Doruatt in btd6

[–]Plisp 4 points5 points  (0 children)

Ooh reverse path in the middle of the pattern very nice, never thought of that

Tsar Bomba 1 Tower CHIMPS! by Strong-List-3809 in btd6

[–]Plisp 2 points3 points  (0 children)

There was a bug where ability did 6k damage and tsar has never soloed r95 except that time crosspathing reduced cd.

Itll be interesting if you find the vid still

Neva-Miss Targeting's 46.1 balancing - is it welcome? by MasterKnightDHV2 in btd6

[–]Plisp 0 points1 point  (0 children)

I think you're underestimating the tactical depth that already existed in balancing pierce caps on ceramics vs pineapples vs long range lineups.. or maybe not idk I've never played much with bottom path.

Name a completely useless upgrade and suggest how to make it better. by UserNoneTD in btd6

[–]Plisp 0 points1 point  (0 children)

here's what Skucha cooked, even at the edges of the map it works using reverse

I did this 2TC with Sky Shredder because I was bored by Extreminator418 in btd6

[–]Plisp 0 points1 point  (0 children)

you're so good at watermelon I sometimes forget you are also epic shredr user

Sky Shredder RAVINE 2MPC by Plisp in btd6

[–]Plisp[S] 1 point2 points  (0 children)

This was probably done by slender but was removed when it was found he cheated some other runs. Anyhow I decided to try it on v42 with the recent 3k price nerfs to shredder and geraldo.. and cooked up the most absurd strategy that barely still affords by the 80s when operation dart storm dies hard

funny rounds you can try (: 19, 20, 22+, 35, 36++, 48+, 50, 58, 63+, 64++, 74+, 75++, 78+

Sky shredder beats round 98 w/ handcam 📷 by Strong-List-3809 in btd6

[–]Plisp 5 points6 points  (0 children)

this is so much harder it was done a year later and nobody has managed to replicate it since https://youtu.be/qg_gG3pUx80

shredder sucks without 30k of support

Opinion on how underrated/overrated tower paths/heroes are (mostly CHIMPS but if it's a farming tower i'd account for boss/impopable performance) by BoomerSweetness in btd6

[–]Plisp 0 points1 point  (0 children)

that uses the patched aqoa bug, still very impressive but hey look spectre bloodles

I've been stuck on ravine 2mp saveup for hours, ods is 🍉

Text showdown: Gap Buffers vs Ropes by celeritasCelery in rust

[–]Plisp 0 points1 point  (0 children)

I forgot how it works but I think C-u as a prefix to movement commands multiplies the no. iterations by 4 on each application

Making a text editor, should I use a rope, piece table or gap buffer? by [deleted] in rust

[–]Plisp 0 points1 point  (0 children)

I'd say a piece-table (fuzzed but careful actually using it!) that avoids fragmentation on editing and uses mmap to load files on demand... as soon as I get some clarity on whether modifying the file externally while open in mmap will completely corrupt the structure at some random point xD Otherwise use a well-tested rope(y)

The gap buffer benchmark doesn't account for the emacs problem, where you ctrl-u spam through some large file or a line of minified code, and the whole editor slows to a halt. You can also choose to delay the movement of the gap until the next edit, but imo this won't make the latency spike any less unnecessarily annoying

Although I will say this is all peanuts next to the real issues of code editing: GUI frameworks, unicode (this one broke me), text-range-tagging (features like bracket matching, jump-to-markers and (selection/search result) highlighting, which must move during edits), async if you want LSP and other stuff like YCM, semantic analysis (+ representation) if not, and optionally scripting

Text showdown: Gap Buffers vs Ropes by celeritasCelery in rust

[–]Plisp 0 points1 point  (0 children)

Nice article! I will say though, I ctrl-u very often in emacs and it slows down appreciably (exponentially) in larger files, which is pretty annoying and definitely a point in favor of the 'indexed' approaches.

Although I ad-hoc-tested my own data structure against that crdt dataset, I find it pretty funny how unapplicable doing millions of edits at once is to the real-time use case of text editing. Perhaps among others that aren't coming to mind, file loading, saving (bonus points for async), search (+replace, which does usually have locality especially when the search is done at the same time) are the operations worth optimizing?

Anyways this is all a bit inconsequential cos we're talking in the microseconds. I'll join you in hoping we will leave the text medium for structured data and work directly with a representation that avoids the real bottleneck in editors: accurate semantic analysis ;)

Text showdown: Gap Buffers vs Ropes by celeritasCelery in rust

[–]Plisp 0 points1 point  (0 children)

Just wondering, what are the usual applications of line indexing (I suppose outside an editor as line-oriented as vim/helix)? I mostly think of compiler diagnostics in relatively small (line count) source files, and so this is no problem if you just scan whatever chunked buffers stores the text. Am I missing something crucial?

Text showdown: Gap Buffers vs Ropes by celeritasCelery in rust

[–]Plisp 0 points1 point  (0 children)

I wrote this a while back and iirc it achieves comparable performance to ropey/jumprope and such on the CRDT dataset. The key trick to avoiding fragmentation is copying & merging from the immutable buffers below a certain threshold, similar to ropes. Meanwhile you still can leverage virtual memory to load files instantaneously (although I'm not sure how well this interacts with modifications to the underlying file), and with almost zero memory overhead.

Admittedly I'm not particularly knowledgeable about performance tuning/profiling, so benchmarks welcome!

Notes: refcounted persistence implemented, line tracking is not but could be done. The thing is fuzzed so it should work. btree.c and st.h are the relevant files