Crystal performance is close to Go-lang. It's just very fast across the board.
Consequently, just like Go-lang, it beats Ruby by an order of magnitude on pretty much any benchmark.
Newcomers often assume Crystal must be sluggish like Ruby because "how could a language with such a convenient syntax be so fast", but it really is not.
in fact Crystal concurrency is the same with Go, both using coroutine technique.
though Go should be more performance because it is built for that feature.
Crystal is expressive, 500 lines of Go commonly translate to 50 lines of Crystal.
The DX in Crystal is really closer to Ruby than to Go. It's essentially a very fast and type-safe version of Ruby.
> The DX in Crystal is really closer to Ruby than to Go.
Me as polyglot can say that is much easier to switch completely between languages and paradigm than write or talk similar (but not equal) languages. So it is maybe a great reason for beginners to start to play with Crystal as Rubyists, but as soon as you start to work daily with the language, other factors like good documentation, tons of examples, great standard lib, active community and development, etc are much more important than if its remembers ruby or not.
I think this argument is less about the concrete syntactical and semantic similarities to Ruby, but the shared general idea to focus on developer happiness. For example, code is easy to read, yet still expressive.
Maybe with LLMs it won't matter much anymore? Maybe in the near future we'll have copilot for crystal as vscode plugin and the rest doesn't matter much - just quality of this plugin?
> We're going to write a program in a "new" language that is a mix of Ruby and INTERCAL. We're going to take the "come from" statement and use it to allow "hijacking" the return of a function. Furthermore, we're going to do it conditionally. "come from <method> if <condition>" will execute the following block if <method> was executed and <condition> is true. In <condition>, "result" can be used to refer to the result of executing <method>.
And that was enough to get it to understand my example code and correctly infer what it was intended to return.
Given it took that little, I don't think you need much code in a new language before you have a reasonable starting point as long as you can give examples and document the differences, and then use that on a few large projects that has good test suites, and work through any breakage.
If the LLM understands the language it can aid in creation of the libraries and ecosystem because it can also translate code. I just tested it by having ChatGPT translate one of my Ruby scripts to Python for example.
I don't like Crystal all that much, but it's similar enough to Ruby that if ChatGPT can handle Ruby->Python, it can handle Ruby->Crystal with relatively little work.
But it doesn't need to handle it flawlessly, because every new library you translate and fix up gives you a new codebase you can use to finetune it.
At that point, why bother with high-level languages at all? A sufficiently-good AI should be able to read a specification / test suite and directly generate a binary which passes those tests.
Maybe. Or maybe it'll become validation/what-is-happening lowest denominator. Programming languages are also a good Intermediate Language between humans<->machines and machines<->machines apparently due to recent AI advancements.
IMO crystal's value is that I can do things normally associated with golang without the horrors of actually dealing with golang's absence of a good type system and other quirks like error handling.
And to add insult to injury, your listening audio quality also gets degraded whenever it's on... So it's a lose-lose for both sides every time you use it.
My main complaint is that OSX has no setting to completely disable it.
I have to manually switch to the Macbook internal mic basically before every call.
I wish they would just sell a model without the crappy mic. I would even happily pay less for it.
The audio quality thing is a Bluetooth limitation AFAIK. There is no standard which lets you stream high quality audio bidirectionally, their high fidelity mode has only one audio stream going to the headphones.
Friends don't let friends buy Salesforce (or Oracle)
has been common sense in engineering circles for at least a decade.
It seems founders should adopt a similar stance:
Friends don't let friends get bought by Salesforce.
I wonder if James et al regret having fed their baby to the devil.
Surely a better buyer could have been found, one that
doesn't destroy everything they touch.
But no blame here. They had their well-deserved payday
and we shall remain grateful for all the good patterns,
ideas and years of solid service they contributed to our craft.
This is not about child porn nor about what AV software can or cannot do.
It's about normalising mass surveillance and implementing populace control. They don't want another Snowden to scare the public with reports about "backdoors" and mass privacy violations.
They want the coming generation to perceive it as normal. Because all phones do it, hasn't it always been this way, and think of the children.
Oh, these dissidents in $distant_country that will be muted and killed using Apple's shiny surveillance tech? Well, evil governments do what they do. But we are not like that. Over here it is only about the child predators. Trust us.
Apple has been an opponent of these developments for decades. Now they are spearheading it.
But in all seriousness, your bluetooth headphones should have a sim card built in and be an IoT slave to the cloud. So that when you turn them off, they send a message to Alexa, Google, and Siri, so that all of your devices can tell you "YOUR HEADPHONES ARE NOW OFF" at the same time. Like a tiny choir of angels informing you of the new state of your device.
But of course, there will be one slow/older device that lags 0.3 seconds behind and says "HEADPHONES...OFF", completely out of sync with the rest, like a rebel.
The way I've been able to learn that devices are off since the early 2000s is that the blindingly bright blue LED light is replaced by a blindingly bright red LED light.
I really hate those. When your house is dark and it's calm and all you see are little eyes of Sauron floating in the darkness. I've gone around my house with masking tape and covered every unnecessary visible light.
Google Wifi is one of the worst offenders. They might as well market it as a wifi-repeating lamp.
There is a little LED that lights up when they open. The door latch is controlled via software and so is the light, though I would assume in the case of power failure they'd unlock for fire safety reasons.
I know where you were going with that, but the situation is different than what you’re trying to show. On Macs the light is on the path of the camera: if it is on the camera is, if it is not then the camera is not. Whereas with the door you might think that if it was latchless someone could just push it open when the light was off. The camera light is really a door alarm, not a door latch. (And as I just mentioned, doors with an alarm but no lock often do exist, usually for fire safety reasons).
A door without a latch does not prevent
an unauthorized person from trespassing.
A camera without a cover does not prevent
an unauthorized person from trespassing.