tatterdemalion

joined 11 months ago
[–] [email protected] 21 points 1 day ago (4 children)

Apparently it's hard to get hired in software. Meanwhile, some of the worst software ever made is being written today. Have you tried using literally any software recently? We're in this "barely good enough to function while being heavily supplemented by tech support" phase. I guess capitalism breeds incompetence as long as it's still profitable?

[–] [email protected] 8 points 3 days ago

But quiche is tasty!

[–] [email protected] 7 points 5 days ago

Weird article. Suddenly switches to talking about some other lady suing Netflix over an unrelated incident, and then the last half is only about that.

[–] [email protected] 9 points 1 week ago* (last edited 1 week ago) (2 children)

Sounds like Kubuntu's fault to me. If they provide the desktop environment, shouldn't they be the ones making it play nice with the Linux scheduler? Linux is configurable enough to support real-time scheduling.

FWIW I run NixOS and I've never experienced lag while compiling Rust code.

[–] [email protected] 2 points 1 week ago (1 children)

Very biased survey in general. Should have more open-ended questions and less tailoring of questions based on previous answers.

[–] [email protected] 1 points 1 week ago (1 children)

What is the difference between "Versioned" and "Stable"? And which one is NixOS?

[–] [email protected] 7 points 1 week ago (2 children)
def path_is_valid(path: Path) -> bool:
    if not path.exists():
        return False
    return True

There's no reason for this function to exist. Can you see why?

[–] [email protected] 5 points 1 week ago

Awwwww there goes that plan.

[–] [email protected] 5 points 2 weeks ago* (last edited 2 weeks ago)

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
[–] [email protected] 8 points 2 weeks ago

I think it would help narrow things down if you described what kind of website you want to build.

[–] [email protected] 2 points 2 weeks ago* (last edited 2 weeks ago) (1 children)

They explicitly said they want to build a website. Not that you can't go far with a Java server + HTML(X) but JS is the de facto standard for interactive websites.

[–] [email protected] 4 points 2 weeks ago (1 children)

Javascript

WASM

13
submitted 4 months ago* (last edited 4 months ago) by [email protected] to c/[email protected]
 

I've never felt the urge to make a PL until recently. I've been quite happy with a combination of Rust and Julia for most things, but after learning more about BEAM languages, LEAN4, Zig's comptime, and some newer languages implementing algebraic effects, I think I at least have a compelling set of features I would like to see in a new language. All of these features are inspired by actual problems I have programming today.

I want to make a language that achieves the following (non-exhaustive):

  • significantly faster to compile than Rust
  • at least has better performance than Python
  • processes can be hot-reloaded like on the BEAM
  • most concurrency is implemented via actors and message passing
  • built-in pub/sub buses for broadcast-style communication between actors
  • runtime is highly observable and introspective, providing things like tracing, profiling, and debugging out of the box
  • built-in API versioning semantics with automatic SemVer violation detection and backward compatible deployment strategies
  • can be extended by implementing actors in Rust and communicating via message passing
  • multiple memory management options, including GC and arenas
  • opt-in linear types to enable forced consumption of resources
  • something like Jane Street's Ocaml "modes" for simpler borrow checking without lifetime variables
  • generators / coroutines
  • Zig's comptime that mostly replaces macros
  • algebraic data types and pattern matching
  • more structural than nominal typing; some kind of reflection (via comptime) that makes it easy to do custom data layouts like structure-of-arrays
  • built-in support for multi-dimensional arrays, like Julia, plus first-class support for database-like tables
  • standard library or runtime for distributed systems primitives, like mesh topology, consensus protocols, replication, object storage and caching, etc

I think with this feature set, we would have a pretty awesome language for working in data-driven systems, which seems to be increasingly common today.

One thing I can't decide yet, mostly due to ignorance, is whether it's worth it to implement algebraic effects or monads. I'm pretty convinced that effects, if done well, would be strictly better than monads, but I'm not sure how feasible it is to incorporate effects into a type system without requiring a lot of syntactical overhead. I'm hoping most effects can be inferred.

I'm also nervous that if I add too many static analysis features, compile times will suffer. It's really important to me that compile times are productive.

Anyway, I'm just curious if anyone thinks this would be worth implementing. I know it's totally unbaked, so it's hard to say, but maybe it's already possible to spot issues with the idea, or suggest improvements. Or maybe you already know of a language that solves all of these problems.

 
 

Who are these for? People who use the terminal but don't like running shell commands?

OK sorry for throwing shade. If you use one of these, honestly, what features do you use that make it worthwhile?

 

More specifically, I'm thinking about two different modes of development for a library (private to the company) that's already relied upon by other libraries and applications:

  1. Rapidly develop the library "in isolation" without being slowed down by keeping all of the users in sync. This causes more divergence and merge effort the longer you wait to upgrade users.
  2. Make all changes in lock-step with users, keeping everyone in sync for every change that is made. This will be slower and might result in wasted work if experimental changes are not successful.

As a side note: I believe these approaches are similar in spirit to the continuum of microservices vs monoliths.

Speaking from recent experience, I feel like I'm repeatedly finding that users of my library have built towers upon obsolete APIs, because there have been multiple phases of experimentation that necessitated large changes. So with each change, large amounts of code need to be rewritten.

I still think that approach #1 was justified during the early stages of the project, since I wanted to identify all of the design problems as quickly as possible through iteration. But as the API is getting closer to stabilization, I think I need to switch to mode #2.

How do you know when is the right time to switch? Are there any good strategies for avoiding painful upgrades?

11
DECEARING EGG (www.youtube.com)
submitted 11 months ago by [email protected] to c/videos
460
These memes are (programming.dev)
 
48
submitted 11 months ago* (last edited 11 months ago) by [email protected] to c/general
 

I just commented on this post and it got removed very quickly. Then I noticed that all of the comments had been removed and the post is locked.

I cannot understand why this happened, as the comments section had seemed pretty reasonable to me.

This seems like bad moderation and I'm now less inclined to post or comment in the world news community. What should I do?

I tried messaging a mod that is seemingly online and actively posting, but I got no response.

 

After moving from lemmy.ml to programming.dev, I've noticed that web responses are fulfilled much more quickly, even for content on federated instances like lemmy.ml and lemmy.world.

It seems like this shouldn't make such a big difference. If a large instance is overloaded, it's overloaded, whether the traffic is coming from clients with accounts on that instance or from other federated instances.

Can this be explained entirely by response caching?

view more: next ›