all 64 comments

sorted by: hot top controversial new old
[–] 46 points 1 year ago

Yukihiro “Matz” Matsumoto has often said that he is “trying to make Ruby natural, not simple,” in a way that mirrors life.

https://www.ruby-lang.org/en/about/

  • source
  • [–] 18 points 1 year ago (2 children)

    Fuck that. I once used a constraint solver in python where you could += a constraint to a problem. This is completely un-discoverable. In any sane language you can use IntelliSense to find that you can problem.… add(constraint) and be done with it without ever touching a manual. Overloaded operators are cool, but a menace.

    And while I’m ranting: Angular’s new addRouting(), withThingA(), withThingB() is complete horseshit, too. The old way of doing addRouter({ and letting the IDE tell you what you could to with the router was so much clearer!

  • source
  • hideshow 2 child comments
  • [–] 3 points 1 year ago*

    I'll take overloaded operators over overloaded functions any day of the week, and I also hate overloaded operators.

    Python's optional typing has come a very long way in the past few years, you might be able to mitigate this with some creative application of typing.

    Edit: I read your post closer, I'm not sure typing would help with the overloaded operator issue and now I have something fun to try out later 😁

  • source
  • parent
  • [–] 16 points 1 year ago* (1 child)

    This implies that integers in ROR are complex objects with properties that would be unhelpful in the majority of scenarios. Is that right?

  • source
  • hideshow 1 child comment
  • [–] 16 points 1 year ago

    Integers are just integers in ruby, with no structure backing them. They behave like objects, but only in some respects. You can call methods on them, but you can't extend individual numbers with properties for example (which would require them to have structure).

  • source
  • parent
  • [–] 32 points 1 year ago* (4 children)

    Ok, everyone who's ever had to use datetime hates it, but not because it's insufficient, but because international date/time is such a nightmare that the library must be complicated enough to support all the edge cases I'm convinced that library has a function for traveling trough time.

    For years I've wrapped datetime with custom functions that do exactly and only what I want to mitigate its all-plumbing-zero-porcelain approach to the problem.

  • source
  • hideshow 4 child comments
  • [–] 3 points 1 year ago (1 child)
  • [–] 1 point 1 year ago

    This is exactly why I love PowerShell.

    Need the [DateTime] object from 10 years ago? No biggie, just chuck (Get-Date).AddYears(-10) down your console.

    Need it in a specific timezone? That one's trickier, but since PowerShell can do .Net, run this:

    $TargetDateTime = (Get-Date).AddYears(-10)
    $TargetTimeZone = "India Standard Time"
    $tz = [TimeZoneInfo]::FindSystemTimeZoneById($TargetTimeZone)
    $utcOffset = $tz.GetUtcOffset($TargetDateTime)
    [DateTimeOffset]::new($TargetDateTime.Ticks, $utcOffset)
    

    And you get a DateTimeOffset object, which is this beauty:

    DateTime           : 25/08/2015 23:15:14
    UtcDateTime        : 25/08/2015 17:45:14
    LocalDateTime      : 25/08/2015 19:45:14
    Date               : 25/08/2015 00:00:00
    Day                : 25
    DayOfWeek          : Tuesday
    DayOfYear          : 237
    Hour               : 23
    Millisecond        : 421
    Microsecond        : 428
    Nanosecond         : 600
    Minute             : 15
    Month              : 8
    Offset             : 05:30:00
    TotalOffsetMinutes : 330
    Second             : 14
    Ticks              : 635761413144214286
    UtcTicks           : 635761215144214286
    TimeOfDay          : 23:15:14.4214286
    Year               : 2015
    

    DateTime is the time in your target timezone, UtcDateTime is, well, the UTC time, and LocalDateTime is the time on host you ran the commands on.

  • source
  • parent
  • [–] 37 points 1 year ago (8 children)

    The Python won't give an accurate date here because it doesn't take into account leap years.

  • source
  • hideshow 8 child comments
  • [–] 25 points 1 year ago (2 children)

    timedelta marks time in days, seconds, and microseconds. It doesn't take leap years into account because the concept of years is irrelevant to timedelta. If you need to account for leap years, you need a different API.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 9 points 1 year ago* (last edited 1 year ago)

    Because what's accurate here depends on the context, and the Python example doesn't hide that from the programmer.

    The same dilemma goes for month calculations: does "3 months ago" mean 90 days ago, 91.3 days ago, this many days into the target month, or this many days from the target month's end (e.g. to account for 28, 29, 30, and 31-day months)?

  • source
  • parent
  • [–] 11 points 1 year ago (2 children)

    The comparison is somewhat awkward, because the rails example presumably produces a date, while the python one is referring to an interval of time.
    Just from the meme it's not obvious which was the actual intended use, so labeling either as inaccurate requires us to make assumptions.

    Personally, the concept of "10 years ago" is a bit nebulous to me. If today is February 29th, is ten years ago March 1st? Doesn't seem right. Or particularly useful.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 34 points 1 year ago (16 children)
  • [–] 28 points 1 year ago (6 children)
  • [–] 20 points 1 year ago (4 children)

    I fucking love PHP. I know I probably sound crazy to most developers, but PHP 8+ is freaking dope.

  • source
  • parent
  • hideshow 4 child comments
  • [–] 6 points 1 year ago (3 children)

    Yeah I was also pleasantly surprised having only heard about it before. Lots of good stuff

  • source
  • parent
  • hideshow 3 child comments
  • [–] 2 points 1 year ago (2 children)

    I haven't used or read about PHP after college, and I am quite interesred in what are the good stuffs that you like now.

    It is cool to see how languages evolve.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 2 points 1 year ago (1 child)

    I haven’t used php before and I am not that far into it yet, so I don’t really know what’s gotten better but I like how it handles arrays and it has loads of little functions that make life easier.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 2 points 1 year ago

    It’s best not to think about what PHP used to be. It will make you sick. Just know that it is very mature at this point. It is not as Serverless friendly as some of the other languages, but if you were running a VPS with a more traditional LAMP style set up, you can’t go wrong with PHP

  • source
  • parent
  • [–] 11 points 1 year ago (1 child)

    The handful of us have moved onto Crystal Lang. It's a statically type checked and compiled dialect of Ruby. Crystal is fun to write code, but the compiler is slower (compared to go-lang/rust)... because... well it's a ruby dialect (with DSL's)... and the 3rd party libraries are limited.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 6 points 1 year ago (3 children)
  • I had a coworker choose RoR for a major project despite the fact that he didn't know it, nobody on his team knew it, nobody at our company knew it, and nobody in the entire state knew it. It ended as one would expect, after three years and millions of dollars spent, with the only revenue it generated being $50K from the original client that had to be refunded to avoid a lawsuit.

  • source
  • parent
  • [–] 12 points 1 year ago

    Using ruby felt weird, it felt like it shouldn't work but it does.

  • source
  • [–] 12 points 1 year ago (5 children)
  • [–] 8 points 1 year ago (2 children)
  • [–] 5 points 1 year ago

    I miss Ruby DSLs so much. Python is bland. It's on purpose, I know and even appreciate it.

    Yet I feel like Ruby syntax magic compared to Python blandness is like comparing a steaming plate of beautiful aromatic curry to plain rice.

  • source
  • [–] 8 points 1 year ago* (last edited 1 year ago)

    I'm gonna be honest, I never was drawn to python. I've been a professional developer for about a decade, and I've written all of one (1) python programs that I can remember (for my own personal use, mind).

  • source
  • [–] 23 points 1 year ago* (last edited 1 year ago) (10 children)

    LLM is saying this is a feature of Rails and not particularly Ruby.

    I was surprised Python didn’t have a years parameter but learned about

    relativedelta(years=10)

  • source
  • hideshow 10 child comments
  • [–] 28 points 1 year ago (1 child)

    Yeah its a rails only thing. Rubys biggest issue is its much too intelligent for its own good. Its implicit rather than pythons explicit. Most of the time. That and it's hard to find out where Ruby starts and rails ends.

    That being said I made a ton of good money on rails back about 15 or so years ago. Still excellent for starting out.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 1 point 1 year ago

    Ruby’s biggest issue is rails. Ruby is such a beautiful and highly functional language and yet everyone’s experience with it is rails’ horrific metaprogramming magic. I’ve had numerous people tell me they hate Ruby, and yet when I dig deeper I find out that they don’t actually understand where Ruby ends and rails starts and all of their problems lies on rails side. The majority of people I’ve shown that have come to actually like Ruby where they hated it before.

  • source
  • parent
  • [–] 2 points 1 year ago*

    Rails, ActiveSupport I believe, adds this to integers.

    But I think one of the interesting things about it is the open nature of classes in ruby.

    The thing that makes it possible is that you can open classes in user space and just add stuff to them. It’s a neat feature that few languages have.

    The feature, like most features, has pros and cons. On the pro side it makes making DSLs and helpers like this pretty trivial. You can make really expressive ideas and apis because you can change how things you didn’t write work.

    On the con side, it’s harder to discover and the methods of an object being the result of runtime mixins can make things hard to reason about.

    Having worked in both python and ruby and now elixir for the past couple of years, it’s interesting to see how the languages are similar and different.

    There’s an elegant beauty to ruby’s everything is an object and all method calls are messages concept. Python has always struck me as less elegant but the upside is that it can model different ideas in different ways and doesn’t have to try to make them all look like the one central idea.

    Even though I find the model behind ruby more pleasing to think about, I tend to enjoy python more due to it being more explicit and easier to reason about. Although that’s pretty subjective.

    In any case I think the language feature of open classes is a fascinating one and one of the really different parts of ruby that really distinguishes it from python, for better or worse.

  • source
  • parent
  • [–] 1 point 1 year ago (3 children)

    LLM is saying...

    Stop. Nothing at all past those three words is worth a damn.

  • source
  • parent
  • hideshow 3 child comments
  • [–] -1 points 1 year ago (2 children)

    What is the purpose of this comment.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 1 year ago (1 child)

    You didn't seem to be ashamed of admitting to asking an LLM a question as if it was helpful, wise, or respectable for you to have done. You should be.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 3 points 1 year ago

    I'm surprised this post hasn't summoned perl devs yet... 🤨

  • source
  • [–] 2 points 1 year ago*

    There's two of these threads?! Well ok here's the same comment.

    10.years.ago
    On.a.cold.dark.night
    There.was.someone.killed
    'Neath.the.town.hall.lights
    There.were.few.at.the.scene
    Though.they.all.agreed
    That.the.slayer.who.ran
    Looked.a.lot.like.me
    
  • source
  • [+] -21 points 1 year ago (4 children)
  • [–] 2 points 1 year ago (1 child)

    ahahaha oh come on, the comment was clearly a joke. To be honest, I'd be far more interested in gothly serious sam on the left.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 3 points 1 year ago*

    Can't see the comment but judging by the uname you're right, that's Frank Reynolds' fake name from It's Always Sunny, Mantis Toboggan M.D. lmao. I'd wager 95% of what that person says is at least intended to be a joke/satirical/etc.

  • source
  • parent
  • 72 comments in c/programmerhumor@lemmy.ml view that post