News for hackers. Stuff that matters.
Re:CSV Reader Benchmarks: Julia Reads CSVs 10-20x Faster tha... by CJefferson on Sunday October 11, 2020 @11:36AM (#24746480)
EDIT: Be sure to read the reply from the author of the package.

I do think Julia has promise, but it is still early days.

In the last 2 months there have been problems with:

* Throwing rows away: https://github.com/JuliaData/CSV.jl/issues/720

* Incorrect float parsing: https://github.com/JuliaData/CSV.jl/issues/714

At there are unfixed issues to do with parsing large files ( https://github.com/JuliaData/CSV.jl/issues/749 , https://github.com/JuliaData/CSV.jl/issues/734 ).

While Julia has become much more stable than it used to be, it is still in many places an evolving system and you (in my limited experience) should be prepared to hit issues.

Re:CSV Reader Benchmarks: Julia Reads CSVs 10-20x Faster tha... by karbarcca on Sunday October 11, 2020 @12:14PM (#24746791)
As the primary author of CSV.jl, I can help clarify on the posted issues:

* #720: ended up not being an issue at all, but a misconfigured environment * #714: there was indeed a corner case when automatically detecting float values where the float started with '-' sign and only had a trailing decimal (e.g. '-123.'). Not super common, but indeed a bug * #749, #734 are related to a new "beta" feature (CSV.Chunks) which allows iterating over large CSV files in batches. I've been trying to track down the issues 2 people have reported, but haven't been able to reproduce on the same large file. Once we iron out some of those issues, we'll mark the feature as "out of beta".

I agree that Julia packages in general are still evolving and you might run into issues, but at the same time, I strongly believe it's reached a similar maturity in most ways with other language package ecosystems. For example, I use a lot of Javascript/Python frameworks/packages and at least for me, I tend to run into corner case bugs/issues as often as I do for the most common/mature Julia packages.

Compared with, say, data.table in R, or pandas in python, one of the things I enjoy most about Julia packages is that they're almost exclusively written in pure Julia. Having had to dive into data.table/pandas source C/C++ + language binding glue code is a huge pain when trying to track down bugs, so I feel like my knowledge of Julia "goes further" in that if I run into a package bug, it's relatively much easier to track down what's going on and even submit a pull request to fix!

Re:CSV Reader Benchmarks: Julia Reads CSVs 10-20x Faster tha... by CJefferson on Sunday October 11, 2020 @12:19PM (#24746830)
I should have been a bit careful with this message, and mentioning issues that might be in beta. I don't want to specifically pick on csv.jl, but my experience of Julia has been every time I've worked on a significant program, we've hit an issue, either in core or a common library, certainly compared to Python (I avoid Javascript)

I agree that Julia is progressing quickly, but I think a lot of people (certainly myself) got burnt back in the earlier days of Julia when things were much less stable and changing rapidly and the language was (in many blogs) sold as ready for use.

Re:CSV Reader Benchmarks: Julia Reads CSVs 10-20x Faster tha... by karbarcca on Sunday October 11, 2020 @12:32PM (#24746957)
No worries. The CSV.jl package has just been around for 5 years now, has some 700 issues opened/resolved, has built up a pretty extensive test suite, and is used in production by a number of companies, so I just wanted to hopefully clarify its level of maturity :D

I can definitely understand getting burnt in Julia early days (I was around back then as well), but since 1.0, the package ecosystem has matured quite a bit IMO; most of the really popular packages are very stable and work similarly to popular packages in other languages.

Re:CSV Reader Benchmarks: Julia Reads CSVs 10-20x Faster tha... by zzleeper on Sunday October 11, 2020 @12:56PM (#24747178)
Same here. Burned quite a few times trying out Julia stuff.

Last time it was because cold start times were unbearable (compared to Python/R/Stata/Matlab). My goal was to compare how regressions in a few software packages behaved with difficult datasets, so I had to open each of those, run a snippet of code, and log the output. Here, Julia's cold start (and importing the CSV, GLM, etc libraries) took way longer than all of the other tools together.

Re:CSV Reader Benchmarks: Julia Reads CSVs 10-20x Faster tha... by fermienrico on Sunday October 11, 2020 @02:37PM (#24747978)
The biggest problem with Julia is its marketing[1]:

- Julia lures newcomers by the way of attractive marketing (At one point in my career, I was such a huge fan of Julia that I dismissed many people and their concerns. It was like I was following a cult). This is pre v0.4 days.

- Too much focus on optimization. As a seasoned engineer, speed has been less and less of a concern where primary packages that need to be fast in Python are already quite fast. Majority of the tasks most engineers (not academicians) do is plumbing and connecting various pieces together. Julia just isn't good at this and perhaps it will get better.

- Julia markets itself boldly as a general purpose language but doesn't have a good systems library, no real competitive webframework and many things that are necessary for a true general purpose language - for e.g. GUI. At best, it is a scientific computing language such as MATLAB but free (that is a huge thing for Academicians but not for engineers working in Top 500 companies). At worse, it is lacking features and documentation that MATLAB has.

- Julia isn't humble in its approach towards marketing. It over-extends and over-reaches. This leads to people like myself lured into it and then completely burned by the experience. For e.g., it flaunts about being able to see the inline assembly instructions - in my entire 15 year career as a software engineer, I've never had the need to do this. It is almost a meaningless feature for vast majority of the users, but marketing wise it is pretty attractive.

- Julia recruits inexperienced software engineers and non-software "script junkies". It has lost its vision and original premise since 0.4v I feel like. Syntax has gotten worse. Bad decisions have been made. I think the founders of Julia are very very smart folks, it's just the community that is full of people who haven't built anything remotely large and of medium complexity. Are there exceptions? Yes, Julia has been adopted in a few large scale projects but I dispute whether that was a good decision.

Note: My experience is based on engineering mindset, not academics and research. Julia would probably be pretty good on a professor's macintosh and can gain wide adoption in those areas.

[1] https://julialang.org/benchmarks/

Re:CSV Reader Benchmarks: Julia Reads CSVs 10-20x Faster tha... by ViralBShah on Sunday October 11, 2020 @12:44PM (#24747065)
Wouldn't this statement be true for any new technology? I don't doubt what you say about being burnt when adopting in the early days. However, it is simultaneously true that people have successfully used Julia in several commercial applications and significant research codebases for many years now.

I routinely point people to the Julia Computing case studies for this reason: https://juliacomputing.com/case-studies/

We also request people to please file an issue against Julia or a package if it doesn't do what you expect it to, or post on discourse. That way, even though you may go ahead with a different tool, someone is likely to fix it by the time you come back the next time. :-)

Re:CSV Reader Benchmarks: Julia Reads CSVs 10-20x Faster tha... by CJefferson on Sunday October 11, 2020 @01:50PM (#24747634)
I've generally found the Julia community less welcoming than some (Rust, Python), although much better than the "classics" (C,C++,Java and friends).

For example, picking the first question I can see on discourse (which isn't a clear technical question, it was number 3) is "What is the status of debugger?". The first answer is "I've used Julia for 3 years and I don't need a debugger" whereas searching for similar questions on the Rust discourse tends to find answers.

This isn't a complete investigation, it might just be me generalising from my small number of interactions with the Julia and Rust communities.

Re:CSV Reader Benchmarks: Julia Reads CSVs 10-20x Faster tha... by DNF2 on Monday October 12, 2020 @07:50AM (#24753456)
The second answer in that thread, however, are links directly docs, repository and a blogpost describing the debugger. I would say the question was very well answered.

Your post gives the impression that the question was dismissed, maybe even giving the impression that there is no work on a debugger, which is quite misleading. There are several debuggers, and lots of work.

There is some controversy in the community about the _need_ for a debugger, with people with strong opinions on both sides.

As for the general tone, I don't know what to say, except that I find it quite helpful, with lots of people putting in a lot of effort to help whomsoever comes along with questions.

Re:CSV Reader Benchmarks: Julia Reads CSVs 10-20x Faster tha... by anthony_doan on Monday October 12, 2020 @03:35AM (#24752239)
> Compared with, say, data.table in R, or pandas in python, one of the things I enjoy most about Julia packages is that they're almost exclusively written in pure Julia.

R is going to eventually use Julia in their package. It's one of the gluest language I've ever learned so far.

It's actually R's strength. It doesn't have to compete when it can assimilate stuff in the backend while leveraging their existing user. Just look at STAN.

Re:CSV Reader Benchmarks: Julia Reads CSVs 10-20x Faster tha... by fermienrico on Sunday October 11, 2020 @11:42AM (#24746533)
With all due respect to all the people working on Julia, I see a stark difference in rigor between say Python's PEP / RFCs and how Julia's core developers operate. The former is a strict formal process with a lot of thought given to a particular PEP proposal, whereas the latter seems like an informal chaotic hashing/bikeshedding between a few key people in Julia community. I've contributed to Julia and people are really nice but IMO it is missing structure, discipline, hardline regimented approach of confronting difficult problems, etc. One feels like hearing a supreme court case and the other a street brawl to decide upon important issues.
Re:CSV Reader Benchmarks: Julia Reads CSVs 10-20x Faster tha... by karbarcca on Sunday October 11, 2020 @12:40PM (#24747031)
One advantage I've noticed at least (having been a contributor to the Julia language itself), is that it at least makes contributing to the language very approachable. Granted you see lower quality proposals from time to time, but in general, I even question whether I myself would have gotten involved or been brave enough to propose language features if I would have had to do such a rigorous, formal PEP writeup. In some respects, you're restricting the pool of people who actually contribute ideas to the language.

I also have appreciated the "meritocratic" approach of Julia language features; if someone can show that an idea/approach/algorithm is fundamentally faster, more flexible, etc. it's generally been accepted, regardless if the proposer is a first-time contributor or not. That also makes contributing feel approachable and very fair, as opposed to just trying to please a single core developer or playing some politics game.

Re:CSV Reader Benchmarks: Julia Reads CSVs 10-20x Faster tha... by oefrha on Sunday October 11, 2020 @12:54PM (#24747156)
> if someone can show that an idea/approach/algorithm is fundamentally faster, more flexible, etc. it's generally been accepted, regardless if the proposer is a first-time contributor or not.

If you can submit a measurably faster csv implementation to cpython (without breaking existing code of course) I can guarantee it will be welcome whether you’re a first time contributor or not. Not sure about your definition of “more flexible”, if that entails breaking existing code then it may rightfully meet resistance.

Not sure why you’re implying other languages’ proposal processes are about pleasing a single core developer or playing some politics game. Sounds like either you have a lot more experience than I do and hence have been exposed to politics games or anything else non-meritocratic (that I haven’t sensed in CPython development, at least), or you just don’t have as much experience contributing to other languages.

(I'm a bit cranky today. Sorry if I sound aggressive.)

Re:CSV Reader Benchmarks: Julia Reads CSVs 10-20x Faster tha... by karbarcca on Sunday October 11, 2020 @01:07PM (#24747275)
No worries, it doesn't come off that aggressive ;)

Yes, I've definitely been involved in other projects where a single core developer can do a little too much "imposing" of their will. i.e. if they happen to have a personal preference one way or another on things, they not accept or even entertain certain changes.

I wouldn't expect most large, mature projects to be this way (otherwise they probably wouldn't have grown as large or attracted enough of a community!), but it's certainly a problem with some projects.

Re:CSV Reader Benchmarks: Julia Reads CSVs 10-20x Faster tha... by oefrha on Sunday October 11, 2020 @01:15PM (#24747342)
> it's certainly a problem with some projects.

Projects, of course. Ages ago I quit a notable project partly because of maintainer team politics, so I'm no stranger. But I thought we were specifically talking about language improvement processes of non-niche programming languages (a specific one, even).

Re:CSV Reader Benchmarks: Julia Reads CSVs 10-20x Faster tha... by woadwarrior01 on Sunday October 11, 2020 @02:04PM (#24747723)
> If you can submit a measurably faster csv implementation to cpython (without breaking existing code of course) I can guarantee it will be welcome whether you’re a first time contributor or not.

I wouldn't be so sure. Search for `site:bugs.python.org "maintenance overhead"` on your favourite search engine.

Re:CSV Reader Benchmarks: Julia Reads CSVs 10-20x Faster tha... by oefrha on Sunday October 11, 2020 @02:19PM (#24747840)
8 results total, with exactly one entry that’s remotely relevant (i.e. performance related, patch provided) — bpo-21955. You could have just linked that. And this happens to be a patch from a core dev. And it’s not comparable to submitting a performant implementation of a PSL module like csv. You have chosen a pretty convincing example, I don’t know what I’m supposed to be convinced of though.

https://bugs.python.org/issue21955

Re:CSV Reader Benchmarks: Julia Reads CSVs 10-20x Faster tha... by throwaway894345 on Sunday October 11, 2020 @12:55PM (#24747170)
On the other hand, many important things move at a grinding pace in Python. Packaging and performance are two major issues for just about everyone I’ve spoken with who uses Python in a serious capacity, and these have been notorious problems for decades with no end in sight. Most of this seems to boil down to an unwillingness to encourage the ecosystem towards a narrower packaging format (“sorry, downloading a package and running setup.py just to determine the dependency set is insane and we’re going to deprecate that going forward”) or a narrower C extension interface that would be compatible with more aggressive optimizations. There’s value in stability, but if the governance model can’t pass these kinds of slow, steady changes for paramount issues, then perhaps new languages shouldn’t look to Python as a model for a well-governed language.

I would suggest Rust—I’m not a fanboy by any means, but Rust is a large, rapidly growing project that is unparalleled with respect to its rate of improvement as far as I’m concerned. I know recommending Rust for things is a cliche (esp “rewrite it in Rust”), but I would defy anyone to find a better governed language.

Re:CSV Reader Benchmarks: Julia Reads CSVs 10-20x Faster tha... by fermienrico on Sunday October 11, 2020 @02:47PM (#24748037)
I find Rust really difficult to get into :( Python, you're right has a bunch of problems with datetime and packages, etc. but when it comes to productivity, it is insane how amazing Python is. Also being able to hack internals of python library and "batteries included" philosophy is why it is the most popular language in the world now overtaking Java.
Re:CSV Reader Benchmarks: Julia Reads CSVs 10-20x Faster tha... by throwaway894345 on Sunday October 11, 2020 @08:49PM (#24750441)
Rust does have a steep learning curve and Python is a very productive language... until you are the one responsible for builds and deploys, or performance, or concurrency, or quality, or etc. I think you’ll find that Go hits a nice sweet spit between all of those competing concerns even if it isn’t the best at any of them (in general; however, probably not for data science in particular).
Re:CSV Reader Benchmarks: Julia Reads CSVs 10-20x Faster tha... by fermienrico on Monday October 12, 2020 @12:09AM (#24751304)
Thanks, I am willing to try both Rust and Go.
Re:CSV Reader Benchmarks: Julia Reads CSVs 10-20x Faster tha... by xyzzy_plugh on Sunday October 11, 2020 @12:18PM (#24746826)
> Python's PEP / RFCs

Is this process actually fundamentally better? There are so many PEPs that are up to the reader to interpret. There are so many PEPs that contradict each other (just read some of the early PEPs). The whole thing feels basically meaningless, and toothless at this point.

I think Go's proposal process nails balancing formalities and discussion/bikeshedding. They seem to be very productive at making the language better, thinking critically and avoiding regrets, rather than pandering to the very vocal and often misaligned minority of the community.

Re:CSV Reader Benchmarks: Julia Reads CSVs 10-20x Faster tha... by oefrha on Sunday October 11, 2020 @12:32PM (#24746952)
I can’t even tell if this is a bad faith attack or genuine cluelessness.

No, language features, standard library modules, infrastructure implementations, standard APIs, development and community processes, etc. etc. aren’t “up to the reader to interpret”, aren’t “basically meaningless”, aren’t “toothless”, especially not “at this point”. Informational PEPs are informational.

python-committers also aren’t a misaligned minority of the community. If you feel committers don’t serve your interest, step up and start contributing.

Re:CSV Reader Benchmarks: Julia Reads CSVs 10-20x Faster tha... by fermienrico on Sunday October 11, 2020 @12:34PM (#24746976)
Can you provide some meaningless and toothless examples? Which PEPs disagree with which ones?

I think PEPs, RFCs, and formal processes are designed to keep structure and discipline. It may sound like unnecessary beauracracy but you see this in PostgreSQL development process as well. Vast number of critical pieces of software is developed by this process - from Linux to proprietary software in large companies such as Apple, Morgan Stanley and many many more.