Hacker Newsnew | past | comments | ask | show | jobs | submit | more johnzabroski's commentslogin

What do you do for a living?


This is not true. She does discuss how some countries and regions of the world use the Internet less, or not at all, and thus Transformer/BERT are training on the linguistic habits of the most affluent of the world.


It was still an extremely scattergun approach. I'm moderately familiar with NLP but nothing in that paper really had traction overall, it was more of a list of mildly bad things than anything huge.


Why is Mozilla Firefox written in Rust, then?

The last time I looked at browser benchmarks was in 2016 when Google released benchmarks to brag about its performance over Firefox and Edge. It appears Webkit has released JetStream2 to benchmark JavaScript, WebAssembly and web workers, among other things. But I can't find data showing Mozilla Firefox is ~20% slower than Chrome/Edge today.


Using Firefox to evaluate Rust performance is probably not a good idea since only parts of it are written in Rust today.

But it's the first time I hear someone say that Rust is supposedly fundamentally slower than C++. I don't believe this to be a statement that can be substantiated, seeing that some of the fastest programs out there (ripgrep and hyper to name just two) are written in Rust.


Facts: On average rust is 10% slower on the banchmarkgame: https://benchmarksgame-team.pages.debian.net/benchmarksgame/...

But they use llvm instead of gcc for c++, and gcc is in average 20% faster than clang. Therefore, rust is 30% slower, at least on heavily optimised programs.

And hyper is not the fastest http server, but the actix one is one of the fastest yes.


> Facts: On average rust is 10% slower on the banchmarkgame

That does not show it's 10% slower on average; it shows that C++ is 0.9917938291x as fast as Rust. They both have some where they win by 30%, most are closer, Rust is just faster on average.

> But they use llvm instead of gcc for c++,

C++ g++ g++ (Ubuntu 9.2.1-9ubuntu2) 9.2.1 20191008

?

> gcc is in average 20% faster than clang.

Extremely citation needed.


> faster on average

What kind-of time measurements? What kind-of average?

This chart shows some time measurements:

https://benchmarksgame-team.pages.debian.net/benchmarksgame/...

:and the geometric mean is faster for the C++ programs, but the median seems faster for the rust programs.

Statistical artifacts?


> What kind-of time measurements? What kind-of average?

I interpreted the parent to mean a simple average, so I did exactly that: calculated the percentage for each, and averaged them. In the colloquial term, "mean".


typo ? "the colloquial term" is "average", the specific term is "mean".


Geometric mean is the implicit default measurement for benchmarking


> On average rust is 10% slower on the banchmarkgame

If that claim was true …

> gcc is in average 20% faster than clang

and if that claim was true …

then we might guess the rust programs average could be 10% faster than the C++ programs average, if both used the same compiler backend

— because those rust programs were compiled with llvm but those c++ programs were compiled with gcc.


IMO the jury is still out. I am pretty sure that C++ veterans that can cleverly utilise any and all performance tricks (minus resorting to an assembly language) and can thus beat any other language.

But I -- like yourself -- am much more interested in the applicability of a language in everyday tools, plus in getting the most performance with the least amount of dark magic involved.

BTW, `ripgrep` definitely made me work better and faster.


Firefox is far more than 20% slower than Chrome today but is not strictly a direct cause of using rust. https://www.phoronix.com/scan.php?page=article&item=firefox-...


Alan Kay's criticisms are much more damning.


I can tell you that developer salaries are growing. I have tried telling my senior management that the average senior developer salary in Boston will go from 120k in 2014 to 140k by 2017. I don't think that 16% can be called "exploding", since it's just 5% y-o-y, but it's definitely growing faster than the rest of the economy, and one of the few jobs where "real income" is growing.

Finally, my observation is that the biotech boom in Boston has created unique housing pressure in Boston, particular South Boston, Cambridge and the North End (East Boston is the only affordable place). So many biotech IPOs in the area have created newfound millionaires over night, and helped support a housing boom in the area. Combine this with DraftKings, Wayfair, Buildium, Amazon acquiring Kiva Systems, Samsung acquiring LoopPay, and other major tech companies coming into the area over the last 5 years, and you suddenly have markets where there is huge competition for labor but really expensive housing. This necessarily entails salary hikes or relocation. Relocation requires the board to negotiate with other states to relocate talent, which is always treacheous for high end white collar jobs.

If you want metrics to validate your assumptions, I recommend using CareerBuilder rather than these newer places like Hired.com. CareerBuilder has great analytics tools which show you where your salary offerings rank competitively.

Also, I can say that I don't think our problem is really salary, so much as the fact that so many developers lack adequate training in _engineering_, which entails solving real problems related to total cost of ownership, stability/uptime, throughput, etc. If you work for a _product company_, it is very hard finding these kinds of engineers, for two reasons: (1) they tend to become specialists or architects, but your replacement reqs are generalist roles like full-stack developers (2) 60% of all developers are contractors, and never acquire sufficient depth to solve real hard engineering problems.

End note: I work for erecruit, enterprise staffing software. I have tons of data about the market.


Too much drugs from Haight Ashbury...


Generalizations about Silicon Valley are a tedious media game; please let's not make it worse.


Also, that this is another example of more specialized chip sets eating away at general purpose CPU/GPU market share.


My college roommate was the maintainer of Hercules, the z/OS emulator.

See: http://www.hercules-390.eu/hercfaq.html

2.01 Can it run z/OS, z/VM, z/VSE?

Yes. Hercules is a software implementation of z/Architecture, and so it is capable of running z/OS, z/VM, and z/VSE. Hercules also implements ESA/390 (including SIE) and so it can run OS/390, VM/ESA, and VSE/ESA, as well as older versions of these operating systems such as MVS/ESA, MVS/XA, MVS/SP, MVS/SE, VM/SP, VSE/SP, and DOS/VSE.

But (and this is a big but), these operating systems are all IBM Licensed Program Products, whose conditions of use generally restrict their usage to specific IBM machine serial numbers. So you cannot just copy these systems from work and run them on your PC, as this would almost certainly be a violation of your company's licensing agreement with IBM.


For science and education, Fair Use terms may be applied generously.


Also, why does your ampersand-forms code return string objects for error messages? Seems very limiting, and a pain in the butt to extend. If you have a getErrorMessage() method, why aren't you returning an ErrorMessage object, which clients can then extend with error types (hard/soft, failure/warning/information), etc. Technically, it should just be an Error object. This would then lend itself well to advanced composition, where I can write program interactions in terms of signals (raising Error objects and Success objects, etc.)

Just some hopefully helpful advice.


In this case, they're meant to be as simple as possible and the individual field-views can do whatever they prefer, as they're the ones rendering them. The parent form only gets a `valid: true` and a `value` from the child. Since these are error messages meant to be used directly as error messages to users, it didn't seem like a big gain to do anything more.

With regard to "pain in the butt to extend" you could use `extend` and just replace that one method that returns those string, right?

InputView.extend({ getErrorMessage: function () { // return error objects instead? } })

/me shrugs

Forms really are a pain, we tried to create a simple contract between a form-view an it's child field views that was as flexible as possible so you could easily write more input types.

More on that contract here: http://ampersandjs.com/learn/forms#form-input-view-conventio...

But hey, also... easy enough to use something else entirely, it's not like the forms stuff is bundled :)


Just simple advice.

1. The problem of adding more input types, as well as expressing more functions over existing and additional (unbound) input types, is a classical computer science problem called The Expression Problem.

2. It's really not about 'parents'. It is about workflows. "Can you lift 50 lbs?" may be a dependency for another question.

3. It's simple dependency inversion to use a list of Success and Failure objects to determine the state of a Submit button. This way Submit.Enabled = !list.Any(i => i.Failure). Why should Submit be responsible for knowing the structure of a form, such as fragile parent-child relationships that have no basis in reality.

4. There are really two kinds of dependencies. Layout and workflow. It's too easy to commingle these. Spreadsheets, for example, contain no such visual dependency between cells, only flow.


Dart, TypeScript, or any other similar strongly typed language that compiles down to JavaScript while still looking quite a bit like JavaScript.


Or even Google Closure JavaScript.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: