• 2 Posts
  • 13 Comments
Joined 3 months ago
cake
Cake day: August 9th, 2026

help-circle

  • AFAIU Alpine’s council actions are much more relevant than Linus. Case in point: https://mastodon.social/@drew@social.freebitcoin.gay/117358303430810583

    Note: I’m linking through mastodon prime as the original instances requires authentication to view.


    if he opts to move Sourcehut to AlpineBSD as well. (This isn’t sarcasm, I’m genuinely curious; Linux distros and BSD have very different philosophies

    Might be painting communities with too broad a brush, but afaict Drew is already more philosophically aligned with the BSDs. If you’ve looked into how SourceHut does deploys, you’ll notice that Drew already does things the ‘sysadmin’ way. As in to deploy they package the repository and push a new version to their self-hosted apk repository (similar to an Ubuntu PPA) and uses sshs into the production boxes to update to the new version through apk. An average Linux user is much more likely to use a container registry instead.


    Personally, although I’ve been playing with vanilla NetBSD I’m hoping the AlpineBSD projecs because popular so that it helps revitalize NetBSD. Which has plenty of cool features (rumpkernels) to stand on its own merits.


    score 1 · canonical



  • The vibecoding tag has been getting more and more useless for a while now.

    As a user of the vibecoding tag, i.e. I filter out stories tagged with it, I disagree. If anything is this posts like this one, that want to dilute its purpose that want to make it less useful.


    The crux of the matter is that the user that left feels that the vibecoding tag is a “scarlet letter”, a mark of shame. That is a value judgement on their work. I don’t think they are wrong to feel that way as the term vibecoding is not neutral. Although he term as originally coined by an LLM user was meant to be positive in meaning, as LLMs users want to introduce nuances in how people use LLMs it has shifted in meaning to a more negative one. Even LLM users now use the term vibecoding with derision. As I mentioned before, I think the tag should be renamed to a more neutral name, LLM.


    Whether it’s an original, interesting article that turns out to be nth-degree related to llms and filtered out,

    Seems to me that part of your frustration is that people are using the tag to filter out content that you’d with they engage with.


    score 9 · canonical



  • ildly flippant to answer the question, “Why doesn’t Rust have compile-time reflection?” with “systemic racism.”

    Indeed.The use of part I might disagree with is the use of the word systemic. Which as I understand* it is when the ‘neutral’ policies of the system serve the reinforce the biases. e.j. when a university in Latin America introduces ‘English as a second language’ to the admission evaluation criteria. The stated goal might be to select better prospective students. But when there is a correlation between knowing English as a second language and being of Hispanic descent (akka functionally white, as race is a sociopolitical construct that depends on the social context) it only serves to replicate the existing racial inequality of its society (chapa esa flor PUCP 🇵🇪️).

    As I remember it, what happened was that two white Rustaceans conspired through informal communication channels to undermine of a black computer scientist. Seems more like normalized racism than systemic to me.

    *And given that I only have a layman understanding of racism my understanding of systemic racism might be wildly off base.


    I really want to love Zig, but it feels so janky.

    janky seems like the right word. It kind of sucks because its very subjective. I wish Zig to continue succeeding, but it might not be for me.


    score 1 · canonical






  • But I find this description to be really poor. Exceptions are values, what this is actually describing is the locality of control-flow.

    That’s a good point. I used that phrasing as I expect it easier to understand that result monad, but it is conveying the wrong thing we care about, which is treating the error path a part of the normal control flow.


    The answer is, yes when I write an Operation object with a monadic interface I capture exceptions inside it and translate them into Result monads. This is very easy to do. It makes the Operation object a boundary where I can actually provide a level of certainty that exceptions raised are truly exceptional.

    I know it is straight-foward to map things, but it is hard to do so exhaustively as Ruby gems use exceptions for all sorts of things. So one either has to convert all StandardError exceptions or have to deal with the problems of using exceptions for control flow. Maybe the wide-net approach doesn’t lead to any issues?


    score 1 · canonical


  • One of the things that I find more interesting from Hanakai is their approach to dependency injection. dry-container+dry-autoject is the first dependency injection framework that looked aligned with Ruby values ‘values’.

    Most of the time one doesn’t need to do dependency injection in Ruby, and keyword arguments + memoization can be used in most of the cases where I would want to reach for DI. This post explains the perspective dry-container and friends are coming from.

    How they divide arguments to the class vs to the method is a little different to how I normally write Ruby but it is a divide that I can make sense of. In the spectrum of what is a dependency there are several answers. From the infra perspective it might be a 3rd party service (Postgres, Redis, MailChimp, etc). A maximalist view in the language perspective might be that collaborator classes are a dependency [in the global namespace] and that is the perspective where the proposed divide is coming from.

    The way I would regularly write the class would be to inline some dependencies like UserRepository, which I normally don’t try to substitute during tests. And things like Confirmation mailer would be a memoized method which we can override with a keyword argument during tests.

    class UserRegistration
      def initialize(email, password, confirmation:); ...; end
      def confirmation; @comfirmation ||= ConfirmationMailer.new
    

    The resulting service class might look a little unusual at first, but the design is more testable without resorting to things like method stubs.


    score 1 · canonical




  • Whether it’s extending a language or not is a red herring. Dry-monad let’s us treats errors as values (result monad?). This is very useful. As it let’s use compose operations, etc. But it does go against the grain of the Ruby ecosystem, where exceptions are used for control flow. E.j. how many http client gems raise on 4xx or 5xx?

    Does using dry-rb mean that one needs to ensure their dependencies aren’t using exceptions or write wrappers/adapters to enforce the errors as values pattern?

    I know from other languages (Rust) that errors as values are great. But I also had a bad experience working with Ruby. Where they tried to force adoption of errors as values. But they did so with an anemic implementation instead of using dry-monad. And it definitely felt like an uphill battle. Hopefully Hanakai’s ideas grow in mindshare in the Ruby ecosystem.


    score 1 · canonical