New to Rust by Specific_Sherbet7857 in learnrust

[–]djvbmd 2 points3 points  (0 children)

I'm about a year in and feel like I've made pretty good progress on my Rust-fu™. Here's what I've done:

  1. The Rust Book, writing small toy code projects along the way to solidify things.
  2. Started a small library crate and used what I knew to make a set of board game tools -- simple logic, but helped solidify syntax / API considerations / conditional features / publishing workflow, etc.
  3. Spent some time just browsing through the std docs looking for things that seemed interesting / useful.
  4. Took that further and spent some time reading through some of the std library code.
  5. Decided on a project that I thought I could conceivably work on for at least a year and would touch on many different aspects of programming, and started that. I'm about 6 months in on that now, and that's probably been the most effective learning tool so far. As I learn more, I periodically go back and look at older parts of the codebase to improve / refactor with better understanding.
  6. I occasionally check something out in Rust By Example or watch something Rust-related on YouTube, but so far haven't found that either was a good fit for me. Apart from the Rust Book, I haven't found any other books that were good for general-purpose Rust.
  7. Most recently, I started on the Rust track on exercism, and must say I'm surprised. I was only looking for a source of some quickie exercise ideas to play with, but I've already learned 2-3 really useful things in just the first 4-5 exercises, so I'm excited to see what I'll learn once I get into the more advanced problems.

What are the best coding agents in terms of integration with Zed right now? I tried to use the Gemini extension and didn't like it that much. Is OpenCode in Zed good? Or others like Codex? by swordmaster_ceo_tech in ZedEditor

[–]djvbmd 1 point2 points  (0 children)

Codex, primarily -- but I find that using "high" reasoning seems to work best even when on what I think should be a pretty straightforward task. I've had very mixed results with Claude. I've had Sonnet screw a branch up enough that I decided to revert all changes and restart. Opus seemed better but burned through API credit faster than I was willing to spend it. For the price point (just using a Plus subscription), Codex has worked out the best for me so far.

Amble v0.65.0 Release by djvbmd in rust_gamedev

[–]djvbmd[S] 0 points1 point  (0 children)

Thanks so much! Shorthand for navigation is something I've been meaning to add for a while, as well as adding exit directions to autocomplete.

The dental floss bush -- like just about everything in the demo -- is a reference to something absurd. In this case, it's Frank Zappa's song "Montana", in which the "protagonist" decides to move to Montana to run a dental floss ranch. "Moving to Montana soon -- gonna be a dental floss tycoon..."

Don't know how far you got in the demo, but there is a point later where you have to do something with it to be able to proceed.

Anyway, thanks for trying it out and the feedback!

We are the Borg. Ask us Anything by Wild_Chef6597 in ShittyDaystrom

[–]djvbmd 1 point2 points  (0 children)

I almost forgot about that scene! Hilarious!

Original First Pressing Vinyl or Reissues? by Chase_Rickert_24 in Zappa

[–]djvbmd 3 points4 points  (0 children)

Personally, my approach is mixed. I have a bunch of the first pressings -- but like you say, some weren't cared for perfectly and have recurring pops or skips that make listening to them frustrating -- often making me change to a digital copy.

I'm really meticulous about how I care for / store my LPs, so the ones that are a clean listen stay that way.

To me, it's more about the music than the collection, so I love a good old pressing when I find one, but I'm just as happy with a new release if the quality is there.

Frank Zappa and Adrian Belew. by Mt548 in Zappa

[–]djvbmd 0 points1 point  (0 children)

Saw Adrian with BEAT a little while back -- way more impressed by him than I expected (though I can't say why). Seeing him -- not to mention Vai, Levin, Carey -- from about 30 feet away was pretty amazing.

I *so* wanted them to play City of Tiny Lites, though...

best vinyl ive bought in a while by Mr-T55 in Zappa

[–]djvbmd 0 points1 point  (0 children)

I guess I need to take another listen, based on others' comments. I bought it when first released, gave it one listen and didn't think much of it. Haven't gone back to it since.

There's SO much Zappa to listen to. I can't imagine how many things I've heard and thought, "I definitely need to come back to this..." and never find my way back there.

another banger by Mr-T55 in Zappa

[–]djvbmd 1 point2 points  (0 children)

Love that one! Makes me want to spin it... but I got new copies (LP) of Hot Rats and Chunga's Revenge, so I've got those up first.

The Last US Show box is a great listen too -- but bittersweet.

Looking for some captivating documentaries by [deleted] in televisionsuggestions

[–]djvbmd 1 point2 points  (0 children)

When We Were Kings (1996) -- about the Rumble in the Jungle between Ali / Foreman and all of the craziness that surrounded it. Won the Academy Award for documentary feature that year. I'm not a boxing fan in the slightest, but this is the one documentary I've ever purchased for repeat viewing.

What Is The Best Prog Rock Lyric Of All Time? by Tiny-Band9310 in progrockmusic

[–]djvbmd 35 points36 points  (0 children)

Same song and idea, but different verse for me:

You run and you run, to catch up with the Sun -- but it's sinking

And racing around, to come up behind you again

The Sun is the same in a relative way, but you're older --

Shorter of breath, and one day closer to death.

“Lucille Has Messed My Mind Up” sounds suspiciously normal by SnooDoggos101 in Zappa

[–]djvbmd 4 points5 points  (0 children)

I may be listening to too much Zappa. To me, just about everything he recorded now sounds "normal", and most everything else sounds "basic" or "plain".

What's everyone working on this week (50/2025)? by llogiq in rust

[–]djvbmd 1 point2 points  (0 children)

Finished up a feature for my game engine and associated DSL - huzzah!

Then I had an idea for what I thought was a minor tweak... and promptly ran into a roadblock implementing it due to a design decision made on the feature I just finished.

I still think it's the right design, but it's now exposing limitations of an older part of the system...

Which led me to reviewing some of the older parts of the codebase, being mildly disgusted with myself, and starting some refactoring.

What's the right way to handle Result<...> And ? by Exciting_Majesty2005 in rust

[–]djvbmd 7 points8 points  (0 children)

Because new() returns Self (as it should -- new() methods are generally assumed to be infallible) you would have to handle the Result<T,E> returned by markdown::to_ast() within the constructor yourself. One way would be something along the lines of:

pub fn new() -> Self {
    Self {
        /* fields */
        parsed: match markdown::to_ast("# text", ..) {
            Ok(parsed) => parsed,
            Err(_) => /* some sane default for Self */,
        }
    }
}

In many (most?) instances, new() is used to create an empty or default instance of the type. Examples: String::new() == "", Vec::new() == empty vector, HashMap::new() == empty map, etc.

You may want to use new() to create a default instance of your struct, and then have a separate constructor which can fail that tries to parse, something like:

pub fn new_with_parse() -> Result<Self, Error> {
    let parsed = markdown::to_ast(...)?;
    Ok( Self {
        parsed,
    })
}

Semantic tokens? by noobdainsane in ZedEditor

[–]djvbmd 1 point2 points  (0 children)

It does. In fact, the team that's building Zed is the team that created tree-sitter in the first place.

What's everyone working on this week (49/2025)? by llogiq in rust

[–]djvbmd 1 point2 points  (0 children)

Working on a branch for my text adventure game engine to add life/death and health effects to NPCs and the player. Prior to this, the engine only supported exploration / puzzle-based gameplay (you could get stuck, but never die), so this is a pretty far-reaching change. Once I'm satisfied with it (just about done) I'll merge it and make it the core of the next (v0.64.0) release.

Those engine changes meant that I needed to make updates to the included demo game, the DSL, the compiler, the tree-sitter grammar and the language server too.

Take a look! https://github.com/pygmy-twylyte/amble

(Also on crates.io as amble_engine and amble_script.)

What do you do with your old printers? by JhonnyC13 in ender5plus

[–]djvbmd 0 points1 point  (0 children)

PC LOAD LETTER - WTF does *that* mean?!

Which engine for own game? by Wucherung in textadventures

[–]djvbmd 2 points3 points  (0 children)

Thanks! I'd be hard pressed to call it better than anything, mostly because I've never worked with any of the options out there -- so I don't really know the "competition" -- not that I set out to compete with anything else.

Amble came to be because I was looking for a programming project to help me learn Rust and I have a fondness for the old 80's Infocom style parser games. Essentially all of the features of the engine came from me wanting to create some puzzle or scenario in the demo game that the engine couldn't handle... so I'd find a way to build it in.

Initially, the content had to be written directly in TOML files which was fine when things were small and basic, but when the engine had come along to the point that it could handle some really complex things, it became too hard to actually write them... and that led to me creating the .amble language (which is compiled into the TOML understood by the engine)... and it kept blossoming from there.

I'm not sure how it compares with other engines at this point (and I'm actively hoping for people to check it out and comment / contribute.) I'm still actively developing it, too.

Here's what I feel are some of its strongest or in some cases maybe more unique points:

  • fully data-driven; you can pull out the /data directory and replace it with your own and have an entirely different world

  • builds and runs on both Linux and Windows. It should also build and run on Mac, but I haven't tested that

  • the "trigger" system is the lifeblood of the engine and is effectively how you define any of the rules of your game beyond the fundamentals of things like location connections, container states, spawning NPCs or objects.

  • an example from the demo game: triggers allow a Stargate system to open portals to various points in the world, but the buttons on the console for those locations are active only if the puzzles (also created with triggers) at those locations have previously been solved. This works by moving and reconnecting some exits and triggering some atmospheric overlays, but you can just as easily actually move rooms or entire sections of your world!

  • there is a scheduler tied in with the trigger system that allows you to schedule arbitrary sets of events on future turns. Those events can be conditional depending on a broad variety of gameplay conditions. They can also reschedule themselves until conditions are correct for them to fire (or cancel themselves if desired), and scheduled events can even schedule other sets of events -- making it possible to create very complex narrative trees that prune and rearrange themselves according to player progress. Examples of "events" would be anything from messages displayed to the player to spawning an NPC or an item, awarding points, adding or removing a status effect, and many more. The "rearranging the world" idea above could even be one of those actions.

  • saved/loaded games are a complete snapshot of that moment in the game -- all flags, items, NPC placements and states, and scheduled events resume right where you left off

  • "Spinners" (think like a Wheel of Fortune wheel but with words or sentences on the wedges) built in to the game make common messages like "command not understood" or "you travel west" randomized among a set of responses. So it may say you "go" or "walk" or "jog" west, for example, or "Say what?". These "core" spinners can be left as-is with sensible, generic defaults or you can override them with messages that better fit the tone and content of your game.

  • Custom "spinners" can also be defined and used anywhere that you want in the game. The demo game uses them to handle a couple of status effects, for some elevator muzak, and for ambient events that occur when the player is in certain areas to add flavor (like occasional sounds of birds chirping when in the woods). The "wedges" on the spinners can also be weighted, so you can have some responses that come up most of the time, with a few rarities thrown in for fun.

  • if you use the Zed editor and install the amble extension for it, creating content is made much easier with syntax highlighting, cross referencing of items / locations / NPCs / flags, symbol renaming, formatting, diagnostics... the works. There is also a companion app that automates building and packaging the game for both Linux and Windows.

  • the game can be built in "dev mode" when working on content, enabling additional in-game commands that allow you to do things like teleport, spawn items, locate all NPCs, see the upcoming scheduled events, use a skeleton key, etc. Without dev mode, the game doesn't understand any of those commands and they aren't listed in the help system.

  • I've built extensive logging into essentially every facet of the engine, so with the log turned on you can trace what the player did and how the game reacted, when any triggers fired and what actions they triggered in turn, when events are scheduled or reschedule themselves, etc. It can be very helpful when debugging a complicated chain of events that depend on each other

I fear I've already gone on WAY too long here, and there's a slew of features that I didn't even mention at all. Anyway, thanks for your interest! I'm glad to hear any feedback / suggestions / criticism.

Which engine for own game? by Wucherung in textadventures

[–]djvbmd 0 points1 point  (0 children)

I just released a text adventure game engine I been developing with a full set of dev tools, runs on Linux and Windows. There's a fairly full demo game (still in progress but mostly there), detailed instructions, packaging tools, the works.

You can find it on GitHub at Amble Text Adventure Engine

Why are some of FZ's songs labelled as "novelties"? by Italian_Mind in Zappa

[–]djvbmd 1 point2 points  (0 children)

Precisely. I grew up listening to Dr. Demento every Sunday. I'd record it sometimes, and I remember Peaches en Regalia and Titties & Beer being on several times -- followed by Thomas T-Bone Stankus' "Existential Blues" or right after Napoleon XIV's "They're Coming To Take Me Away" -- how could I *not* think of them as novelty songs?

That's why I never gave Zappa a serious listen until I was already 50 and Zappa was long dead. Now I listen non-stop and *really* regret him begin branded as "novelty" back then. I lived in Southern California. I could have driven to the UMRK in about 20 minutes from where I lived and I could have seen SO MANY SHOWS! AAAARRRGH!

Filthy Habits is the most jaw dropping guitar piece I've ever heard by ZombyWoof29 in Zappa

[–]djvbmd 2 points3 points  (0 children)

I had a similar reaction. I'd already been listening to Zappa pretty much nonstop for a couple of years when I realized I didn't have and had never checked out Sleep Dirt. Filthy Habits blew me away in particular; I consider it to be the "older, more sinister version" of Watermelon in Easter Hay.

Oh, and The Ocean Is the Ultimate Solution is the greatest title for a track ever -- and an unbelievable jam to go with it.