Professional software engineer, musician, gamer, amateur historian, stoic, democratic socialist

  • 0 Posts
  • 44 Comments
Joined 1 year ago
cake
Cake day: July 2nd, 2023

help-circle

  • Gleam is cool. I wrote some services with it to see if I wanted to use it for more projects. It seemed like a good option because it would be easy to teach.

    Things I like:

    • fast build times (I only tested small apps though, under 2000 LOC)
    • strong static types
    • runs on the BEAM
    • easy to learn
    • pattern matching
    • immutable + structural sharing
    • currying (with parameter holes)

    Things I don’t like:

    • no re-exports
    • it’s possible to have name collisions between packages; authors have a gentleman’s agreement to always create a top-level module with the same name as the package
    • some standard library APIs seem missing or immature (it’s still pre-1.0)
    • it can be hard to get good performance out of idiomatic code for specific tasks (see immutability)
    • no format strings; best you can do is "Hello, " <> name. It starts to get cumbersome
    • parsing/serialization is all quite manual boilerplate; there’s nothing quite like serde
    • no field/argument punning
    • no method syntax; you just have to scan the docs to figure out what functions can be used with a given type
    • you can’t define the same variant name twice in the same module; I believe this is a limitation in how the types are translated to Erlang records
    • you can’t call functions in pattern matching if guards
    • you can’t have dependency cycles between modules in the same package
    • hard to write FFI correctly; you lose all the comfort of types

















  • Let’s step back. We are trying to talk about code review, right? That’s when you are getting a final check that your code looks roughly correct and does what you already planned for it to do with your colleagues, give or take a few details you couldn’t plan for. So at this point, usually at least one other person knows what you’re trying to do, is bought in, and should be able to review it.

    I’ll concede that if you are desperate to merge a PR and people are on vacation or something, then you might want to grab someone else to review. I’d send them the PR and say, “let me know if you have questions.” Then if they do, you can have a quick chat or meet one on one.

    That’s code review.

    You are talking about some other thing. I’ve been in internal release meetings with lots of people that needed to understand the basics of a feature in order to support it or use it. That happens way after the PR is merged. And I’ve been in meetings to figure out how we should solve a problem, which happens before the PR is reviewed. I have gotten PSA emails or slack messages about cool new tools that make my life easier or changed our coding standards in the organization.

    I have never been asked to meet with multiple people about what a PR is about before reviewing it.

    IME those meetings only happen if the PR is objectionable upon review and it’s hard to negotiate what must be changed.


  • Do you not do demo meetings after introducing entirely new features?

    Sure but it’s rare that a single PR introduces anything but a small slice of a feature, and the demo is usually something that can just be recorded in under a minute and sent over chat. The PR reviewer is likely to try building and using the new functionality too.

    And if it’s an internal tool/service for fellow devs to use to make their lives easier, yes, it likely deserves a meeting so the devs can have a chance to QnA about it.

    Just document the tool or service. That must exist anyway if it’s going to be used by many people. And we’re not really talking about a PR review at this point, we’re talking about an internal release ceremony, which may involve parties that are not going to look at the PR.

    If you create a new tool like that abd then just hand it off with all the devs have to go on being “here’s the manual, figure it out” you know what happens?

    Almost no one reads it, and pretty much no one uses it

    You’re still straying from the topic of conversation: PR review process. But regardless… If no one uses it then it’s probably not useful. Why did you build something that didn’t compel people to use it from a one-paragraph internal PSA?