HNHacker News
TopNewBestAskShowJobs

jjpe

60 karma · joined November 14, 2015

submissionscomments
jjpe··on Why Rust is not a mature programming language
Generally I don't do this (go ahead, have yourself a google). But the error was so blatant that I just couldn't not say anything about it. In a sense the article baited me into it.
jjpe··on Why Rust is not a mature programming language
Well in all fairness, I might've kept reading had it not been for that blatant factual error.
jjpe··on Why Rust is not a mature programming language
I'm not doing that at all. I'm merely saying it isn't worth the time.
jjpe··on Why Rust is not a mature programming language
Ignorance and having time are 2 orthogonal things. Your argument is not even close to valid. And I haven't even mentioned the ad hominem, which is an automatic disqualifier for any argument.
jjpe··on Why Rust is not a mature programming language
Like someone said above, who has time to wade through all the verbal feces before deciding that an article is worth the time?

In this day and age, you need to decide quickly, or you'll be wasting a lot of your time.

Now I don't know about you, but my time is valuable.

jjpe··on Why Rust is not a mature programming language
Or the author should/could improve their writing style. Just a thought. One concrete improvement would be not to moan about things that aren't even true (anymore).
jjpe··on Why Rust is not a mature programming language
Pretty much every touted feature is WIP, definitely all the important ones. So yeah no that's vaporware.
jjpe··on Why Rust is not a mature programming language
The problem with this article is that the first example is wrong, as in it compiles fine. I could even tell without running it that it would compile.

Therefore the article as a whole cannot be taken seriously, and reflecting that I stopped reading it immediately after.

jjpe··on Ask HN: Best Way to Mock APIs in 2020?
> I personally am not a fan of too many abstractions.

Then you're likely in the wrong business, since most of what programming is is dealing with the various facets of one abstraction or another.

jjpe··on Ask HN: Why do you use Rust, when D is available?
> The cost of this borrow checker is huge: every reference in every program needs to be annotation with whether it's shared or mutable

No. You need to "annotate" a mutable binding since bindings are immutable by default. But that also means that immutable bindings (ie the vast majority) does not to be "annotated". And even when you do need to, you literally just add the keyword `mut` as in `let mut foo = 42;`.

> and you often need to splatter confusing lifetime annotations all over the place. It adds a big learning curve to the language.

Again an extreme exaggeration. There are a few cases here and there where you need lifetime annotations, but most often the compiler simply infers them for you, allowing you to elide them completely. Specifically, you only need to do it yourself when it's ambiguous from which input(s) the output is derived.

jjpe··on Ask HN: Where did AMP pages go?
You could just serve a webpage that queries your desktop, and visit that with the browser on your phone. Slightly more work, but definitely viable. You can even make a shortcut on the home screen of your phone that automatically navigates to your custom search page.
jjpe··on A funny rap song about the pains of pair programming
These rap songs are both funny and ring true. Please make more, and a video would be cool too :)
jjpe··on Ask HN: Is Google failing at UI/UX/design simplicity in its products?
They're failing, and hilariously so. The Gmail GUI is awful, it's slow (especially on non-chrome browsers), you're still being tracked (nothing new but still worth mentioning) and manipulated. And worse, the slowness thing was done for (allegedly) anti-competitive reasons.

Then there's android and chrome: the new material design style is something you need to be a little brainwashed to really like, as a lot of space is simply wasted on eye-searing white backgrounds.

And finally, let's talk about search, Google’s raison d'etre. It's consistently dropped in quality. For example, a number of years ago I'd never even think about going to page 2 or even 3, or even going to another search engine. But now it's par for the course, since page 1 is just chock full of garbage e.g. advertisements (nothing new, but still) and links that don't even come close to providing the answer to my question.

Quite frankly, properly justifying staying with Google is starting to get seriously difficult.

jjpe··on Ask HN: What is preventing rust from replacing c/c++?
This is not as much as a problem as you believe. Rust is perfectly capable of making objects that have a C API and ABI precisely for this reason, and the most popular distros only work with supported compile targets anyway. That said, a distro like Debian might indeed encounter some issues at this time for the less prominent platforms eg MIPS or PowerPC based chips. That shouldn't prevent Debian from including Rust altogether though, they merely should exclude it on those less or even unsupported platforms.
jjpe··on Ask HN: What is preventing rust from replacing c/c++?
This.

Basically the net effects are a mix of: 1. Push more computation to compile time rather than runtime 2. Verify a lot more state at compile time, preventing dangerous or nonsensical state from occurring altogether 3. Because of 2,you get hard guarantees about the runtime state e.g there is no chance of encountering undefined behavior in safe Rust 4. Building, testing, and deploying are all quite straightforward in almost every Rust project. If you can get away with simple statistics, benchmarking is very simple too. The ones that don't typically have native non-Rust dependencies

jjpe··on Ask HN: What is preventing rust from replacing c/c++?
It seems you are missing the point of Rusts safety. Yes that safety does prevent things like segfaults, but the real value is in security. As software becomes evermore critical to our lives in pretty much every aspect, having a system that can be derailed by malicious actors is not just unfortunate in the way that a segfault is, no. It is reckless. At this moment what we see is news about company X or Y being hacked,including some infrastructure like electrical grids. Fast forward a half decade and we will have people being hacked and killed from a distance. All made possible because of bugs.
jjpe··on Ask HN: What is preventing rust from replacing c/c++?
While your use cases are definitely valid for you, this is not a Rust issue, but something that's 100% decided by your distro. They decide if, when and how they integrate Rust into it.

As for the multiple copies issue with Cargo: I generally agree with you that this definitely feels like 1 source of major blow up in project compile times, and it would be nice and useful if that were reduced as much as possible. But there is a reason that this system is in place: each crate defines how it compiles and consumes its dependency crates, so if crates A and B both depend on crate C, then A might compile and consume C differently than B does. This results in effectively different libraries once compiled, and ATM there is no way to predict in advance what the effect of any given compile flag will be since any flag can switch on/off arbitrary code. Hence Cargo keeps A's C dependency separate from B's.

Then there's the not doubting whether an application uses the latest patches. Up to a point, this can be automated through exploitation of SemVer: if Cargo could figure out that a new library version is API and ABI compatible with the previous version then I'd argue that Cargo should perhaps just auto-update it. A bigger issue is what happens when a new major version of the library is released, as those tend to break APIs in order to perform maintenance. That is something that as of yet has not been automated.

jjpe··on Ask HN: What is preventing rust from replacing c/c++?
That's not really all that relevant for most existing commercial code since legacy code tends to not get rewritten at all unless it's absolutely necessary, and thus remains stuck with the Old Ways.
jjpe··on Ask HN: After working 70+ hrs a week my manager says no for promotion
Spoken like someone with plenty of money in the bank, which is of course a luxurious position to find yourself in. And in those circumstances I agree with you.

But the above doesn't hold for everyone, and thus I don't in general agree with your assessment.

jjpe··on Ask HN: Has cold calling/emailing ever worked for you?
I have always defined spam as "unwanted and undesirable incoming communication, typically for financial reasons". So that includes mass emailing, but is far from restricted to it.

However, that is a definition I basically invented based on experience (i.e. How I imagine most people learn most of their vocabulary).

If it really has to be done in bulk to be spam-callable, what is the individual version of spam? Harassment?

jjpe··on Chrome/macOS users in The Netherlands cannot visit google.com or google.nl
Ah so that's what was going on. The issue insofar I could perceive it is fixed now though. All googly sites are up again.
jjpe··on Ask HN: How can I get investor intros in Berlin?
Where in the Netherlands would be a good idea to check out?
jjpe··on Ask HN: How to answer properly “Why we should hire you” question?
Power imbalances often arise solely because the people involved perceive it as such (i.e. it's a purely psychological effect). Therefore, simply perceiving the situation differently and then acting on that can make a lot of difference.
jjpe··on Tell HN: I think you're downplaying the PHP community
Actually, I'd say that these days that crown has been taken from PHP by Node.JS. It may not be as popular but it is definitely easier to work with than PHP, if only becausee it's 1. JavaScript and 2. Doesn't have most (all?) of the warts of PHP.

Of course it introduces a few of its own but on the whole I'd say Node is definitely easier to work with for a newcomer.

jjpe··on Ask HN: I am building a step-by-step equation solver to learn how math works
This is pretty cool. I might actually use this (assuming it can solve any "solvable" linear system). I'd also use a version of this for differential equations, if you happened to write one :)
jjpe··on Ask HN: Rust or Swift for system programming?
"Ok, but isn't the question of whether or not something is done at compile or runtime always an implementation detail?"

No it isn't. It changes the entire semantics of your language. For example Python as it exists today simply can have neither type checking nor GC decisions* done at compile time. The language is not capable of expressing those things adequately. Adding those would require some significant changes to Python the language, its stdlibs, as well as the Python VM.

Conversely, starting to use reference counting in Rust is definitely possible but will jack up your memory-related bug count, a rather undesirable result. The code is also pretty much always more difficult to read, understand and debug. Its only redeeming feature is that some datastructures simply need the flexibility it brings.

* I define a GC decision as deciding what to de/allocate and when to do it, rather than performing the de/allocations themselves. For example, the GC algorithms in Java and Go fall under this definition, as does Swift's ARC mechanism, as well as Rust's ownership based decisions. The former 3 decide at Runtime. Rust usually decides at compile time, the only exceptions I can currently think of being code based on the Rc/Arc/RefCell types, which do reference counting and therefore the de/allocation decisions are deferred until runtime.

jjpe··on Ask HN: What programming language has you really excited lately, and why?
As rvense explains below, there are a number of very desirable consequences to rusts strong static guarantees, and even performance improvements, all while getting less buggy code. It's even more secure in the sense of being less exploitable: the bugs being prevented by the type checkers are largely about resource allocation e.g. memory but also file handles. And those are often easily exploitable when not properly managed. That kind of compile-time bug prevention is something runtime garbage collection (that is, every VM platform out there) has yet to achieve and so is pretty amazing if you ask me.

Another consequence is the sheer range of applications for which this language can be practically used: systems and concurrent programming obviously, but also Web, realtime, embedded and even supercomputer programming. The reason for that is that rust mostly feels like a light weight scripting language like python, but because of its performance characteristics can viably be used as a drop-in replacement for C.

jjpe··on Ask HN: What programming language has you really excited lately, and why?
Rust: it provides extremely strong guarantees about your code at compile time so that usually it feels like a script language with C/C++-levels of performance. And the best part: no data races, and no runtime garbage collector overhead.
jjpe··on Ask HN: Tabs or Spaces?
If it's your code you can write it however you like, usually. That's not arrogance, it's just how this piece of the world works.
jjpe··on [dead]
Not unless you categorically count SJWs as trolls.