Dijkstra on Haskell and Java (2001) - <AUTHOR> http://chrisdone.com/posts/dijkstra-haskell-java <comment><USER2> To me there seems to be something wrong with using as the first language something that depends on a very, very complicated runtime and execution model to run on the hardware we currently are using. This way people end up viewing programming languages as some God-given black box and not just something another computer program written by another person provides for you.

I think CS students should instead start by learning basics of computer architecture at a high level and programming on a level close to the computer architecture that so far has turned out to be practical, the Von Neumann machine. This way they can understand the whole field better, if you never face the challenges of organizing computations in a computer without many existing layers of abstractions designed by other people, you will never understand the development of the field and how the disciplines of algorithms, operating systems, computer architecture, etc came to be the way they are, too many things are taken for granted by people who have only seen very high level languages.

People should know what the stack is, how function calls works, what is an assembler, what linked lists, binary trees, hash maps, ... are and why those had to be invented etc. I think something at the level of Go or C is best for that. Then I think a good moment comes for a course like SICP where people can learn how to take those pieces and build abstraction layers out of them.

<comment><USER3> > CS students

I think CS students should be taught computer science, not software engineering.

<comment><USER4> They should be taught both. Too often do I see people coming out of college with strong theoretical roots and absolutely zero clue on how to use a debugger, a source control system or the slightest idea of how a software project goes.

<comment><USER5> Then they should have picked Software Engineering instead. There is a reason both exist.

</comment></comment></comment></comment><comment><USER6> Around the same time, my alma mater was switching from Scheme to Java for their introductory courses.

Last time I went back to homecoming, it seemed that most the professors were feeling pretty dissatisfied about the decision. One of the big reasons mentioned was that Java's just too big and hairy of a language. They end up spending all their time teaching API quirks and software engineering principles (such as pretty much the entire subject of OOP), leaving little time to focus on much more important basic skills such as breaking a problem into smaller pieces and attacking a problem in an organized manner. Or even simple stuff, like the difference between a value and a variable. They also lamented the loss of a REPL, which is an invaluable tool for enabling (and encouraging) students to experiment and get a better understanding of how a programming language actually works.

For my own part, I wonder if the current cultural unfashionability of OOP isn't somehow a result of the vogue for switching CS programs over to Java around the turn of the century. I find myself thinking that what a lot of newcomers to FP seem to think of as problems inherent to object-oriented programming are really just problems inherent to not having worked your way through SICP during your formative years.

<comment><USER7> Same here. There are two camps in my "alma mater". Those that think that students should learn programming with a simple and "clean" language, and those that think students should focus on widely used languages.

They too abandoned Scheme which means that student don't learn any functional language. I think it's a shame considering that functional paradigms are getting more and more commonplace. (However, I much prefer OCaml to Scheme).

<comment><USER8> I can kind of see the point of going for "widely used languages", but if you don't want to use scheme or haskell, then at least go for c, c++, python, or javascript. A Java Hello World requires a ton of OOP boilerplate, and you're stuck either explaining OOP as the very first you do (which is stupid), or asking your students to either ignore the boilerplate or recite it as a magical mantra.

<comment><USER6> Personally, I'm actually pretty hostile to the "widely used languages" camp. I think that position is founded on an implicit assumption about the students' abilities that is both unkind and unuseful: That they won't come out of the program with solid enough skills and knowledge that they can quickly learn any industry language they need. It also implies that the program has lost sight of its reason for existing. Universities have a responsibility to give their students the kind of academically demanding college-level computer science curriculum they're shelling out those huge heaps of money for. There's nothing inherently wrong with putting together a curriculum that just focuses on ticking off the things that show well on a resume, but if you're going to just be offering that level of education then you should do the honest thing by presenting it as a vocational program and pricing it accordingly.

I think the aforementioned assumption about students's ability to learn a lot of different languages a self-fulfilling prophecy, too. Anecdotally, the fresh-outs I've worked with who are least able to pick up new technologies tend to be the ones who came through programs that focus on widely used languages like Python or Java. They tend to have only acquired a superficial understanding of the tools they were taught in, and have very limited understanding of the underlying principles that they're built on and share with other technologies.

Which isn't to say that students shouldn't be exposed to those languages. For more advanced courses, switching to widely-used languages is an absolute must because those are the ones that tend to have the kind of library support that's necessary if you want to be able to focus on the subject at hand. For example, you're not going to get anywhere in a machine learning class if you're hobbled with a language that doesn't have a really good vectorized math library available. And even without that, schools do still have a responsibility to put a marketable language on their students' resume before graduation day.

</comment></comment></comment></comment><comment><USER9> I went to the University of Texas right before they made this change and I will say that my Programming Language course using Haskell was one of the toughest classes I took there.

I was barely a novice at an imperative language, and all of a sudden I had the comfortable struts of local mutable state ripped out from under me. Having to solve most problems via recursion was incredibly challenging at that stage and I'd be lying if I said I left that class feeling like I understood Haskell.

That course did have the desired effect that Dijkstra was hoping for though. I never programmed functionally in my coursework after that, but it stuck with me and the feeling that "there is something different out there" in the programming language world has forced me to never be satisfied with one language or one approach to solving a problem in my professional life since then.

</comment><comment><USER10> A problem I've noticed in my degree is that for a certain percentage of students Java just doesn't stick. I'm in my fourth year now and there are plenty of people who just can't program, because they've only been taught Java, and they didn't get that. It's far too big a language to teach in a semester or two to a previous non-programmer.

Even if it does sink in they rapidly find that the simplified Java being taught at first year undergraduate level is far below the standard required for real world Java programming.

<comment><USER11> Java is definitely a terrible language for teaching and as a student's first introduction to arrays, memory handling and flow control it's pure terrible. However, Java is incredibly effective as a language for large teams. Since most of the companies coming to hire CS grads are big teams in need of extra hands on their software projects, they are looking for CS grads who know Java. So Java in universities is generally the ivory tower being forced by business constraints to adapt to outside business interests.

My university down here taught in Scheme for the introduction and theory classes, and in Java for algorithms and networking. Seemed to work well as a balance, although I'm not sure if they still do that.

<comment><USER12> Up until about a decade ago, most CS graduates from MIT were never taught C or Java in any class. They still seemed to do pretty well in the job market. (Mostly it was assumed that if you really liked software development, you would go out and learn one of those languages outside of class, such as from a student-led seminar.)

<comment><USER11> It's just a business thing. Some large local companies come and talk to the university and say that they need a bunch of CS grads to fit into their business. The HR drone says they need to know Java to be able to integrate into the company quickly. The lecturers get upset. The finance department gets promised a donation, the marketing department gets promised easy job searching for CS students. The ivory tower crumbles a bit and the lecturers teach Java.

<comment><USER12> That might (might) explain a tiny college, but it's not a reasonable explanation for universities with huge endowments to switch from Haskell to Java.

<comment><USER11> Yet they swapped - which is either explained by some love for java (unlikely) or that "more money is more good" even with a huge endowment.

<comment><USER13> Well yes it is easily explained by some love for java, why would that be so unlikely?

Computer Science is a diverse field, and not every CS professor considers mutable global variable an evil to be purged. (In fact, the majority of CS professors can't be bothered to think about such matter. They're busy tuning their neural networks, photorealistic simulation of snowflakes, improvements to TCP or whatever their particular research interest is. The answer to "Java or Haskell?" for them is "whatever that suits my need.")

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> Dijkstra assumes that students will already have been exposed to imperative languages before joining university, and will appreciate the change. I think that this assumption might leave behind students that have not yet been exposed to any programming (that stuck).

Over in the UK I certainly hadn't encountered anything more complicated than html before I hit university, and was very happy with sticking with Java for the entirety of first year. I had been exposed to C++, ADA(!), Prolog and had an in depth look at Erlang by the time my course finished...

<comment><USER15> > might leave behind students that have not yet been exposed to any > programming

And good riddance. If you make it to university without exposing yourself to your subject as a matter of passion (and few subjects are more easily approached by hobbyists than programming) you're going to waste your time there.

University is a not a "school" you attend for learning a subject. You can't show up for English Literature if you have never read a novel. You show up at the music department if you don't already play an instrument very well. You can't show up at Zoology if you can't tell a reptile from a mammal. You can't study Economics if you've never heard of Keynes. And you can't study computer science if you can't program a computer.

This was not always the case for programming, but it certainly is today, and I'm not convinced it wasn't too in 2001.

<comment><USER16> Many of us went into college without the privilege of having a good idea of what we wanted to do with ourselves.

In addition to that, among my circle of friends, it's common to know people who switched majors mid-school because they stumbled upon something they found more interesting - isn't that great? They thought they loved something, but found something they loved even more. Or, I guess they should have just been given the boot instead.

<comment><USER17> _Many of us went into college without the privilege of having a good idea of what we wanted to do with ourselves._

Yes, it's quite silly that college is mandatory rather than somewhere you go for the purpose of learning something in further depth.

</comment></comment></comment></comment><comment><USER18> My old university has a big partnership with MIT, and the first programming course is, I believe, similar to MIT's.

I learned programming with Scheme, in that course, in 2004. I used, without noticing, many techniques I would later have relearn due to a "prolongued exposure to imperative programming". In my semester I used closures, functions as first class objects and lots of recursion.

The following three semesters I forgot all that, for I had to use C, C++ and Java. When, in the fourth semester, I had my AI course in Lisp, I used "let"s and loops for everything. In the middle of the semester, I remembered recursion, and how it made everything better (in Lisp). Later, by myself, I relearned closures, functions as first-class-objects and other stuff.

Having Scheme as an introductory language is good because it put students that came from a IT-technical high-school education equal to general high-school education students (that have never seen programming before). With the "real world" so drowned in imperative programming languages, there are few courses that can justify using a functional programming language. The things I know about FP, I know because I thought myself.

I'm not saying FP is better than imperative programming, is just that both should be (well) taught. (As some other paradigms too, I believe).

Some years ago my old uni, like MIT, changed from Scheme to Python. Python is my favourite programming language. But I'm still not happy with the decision.

</comment><comment><USER19> As much as I enjoy Dijkstra's wit in general (and I agree with the argument for learning functional languages early), I imagine taking a shot at "Texas's solid conservatism" didn't help his case all that much. For "enlightened" individuals, most left thinking and academic people are really no better at mitigating tribalism, prejudice, and ignorance of other points of view than the far fringes of the right. Perhaps it would have been more effective to appeal to the self interest of the council.

</comment><comment><USER20> I can't help but notice that the vast majority of commenters are missing the fundamental reason for all this handwringing. The reason isn't language schism (that too, but I'd attach a much smaller weight to it) so much as the schism between corporatism & academia.

Corporate America wants languages that are dumb, easy for corporate drones to assimilate, hard to mess up with, verbose ( verbosity is misinterpreted as documentation in the enterprise) and Java fits the bill from the get-go.

Now, that doesn't mean you can't do non-dumb things in Java - at Sun Microsystems, we worked on all sorts of very cool R&D-type shit like JavaOS([http://en.wikipedia.org/wiki/JavaOS](http://en.wikipedia.org/wiki/JavaOS)), Hotjava ( [http://en.wikipedia.org/wiki/HotJava](http://en.wikipedia.org/wiki/HotJava)), JavaSpaces ([http://en.wikipedia.org/wiki/JavaSpaces#JavaSpaces](http://en.wikipedia.org/wiki/JavaSpaces#JavaSpaces) ), JavaCC( [http://en.wikipedia.org/wiki/JavaCC](http://en.wikipedia.org/wiki/JavaCC) ), Jini ([http://en.wikipedia.org/wiki/Jini](http://en.wikipedia.org/wiki/Jini) ), ...a very long list of R&D stuff. Sun Research was fucking elite, & staff engineers were considered outright geniuses. None of that cool R&D shit got any traction.

So what got traction ? Whatever yucky shit corporate America wanted - JavaBeans( [http://en.wikipedia.org/wiki/Java_Beans](http://en.wikipedia.org/wiki/Java_Beans) ), EJB ([http://en.wikipedia.org/wiki/EJB](http://en.wikipedia.org/wiki/EJB) ), Swing ([http://en.wikipedia.org/wiki/Swing_(Java)](http://en.wikipedia.org/wiki/Swing_\(Java\)) ), various sorts of form-builders, table widgets, reporting shit, IDEs, classfile obfuscators,...

So Java became that. Rather than go down the R&D route, the pipeline became more corporate America oriented.

Haskell has always had very deep roots in academia - the focus on enabling the corporate American drone with Haskell is minimal, close to zero. So what do you expect ? The focus will be on debating types & building theorem provers, not on "how to show big bank's fourth quarter report in 3 colors with 7 columns and subtotals in single widget while data-binding seamlessly occurs in middle tier using enterprise beans built from beanfactoryfactory" \- this sort of shit that is commonplace in the Java EE world I inhabited post Sun, would be considered positively gauche in Haskell.

<comment><USER21> Perfectly put. I'm having to take a VB.net course to advance to the next level of my high school's CS curriculum, if you could even call it that.

It's painful as hell, and like you said, makes me feel like a corporate monkey who's writing some ugly code for use in some specific pants-on-head retarded enterprise "app."

<comment><USER22> If you think that kind of work is retarded then don't get fooled by the languages and tools. A lot of the web stuff is just the same as VB. Just because its ruby or clojure doesn't take away from the fact that its just CRUD. Try and get into an interesting domain and don't worry too much about the language they use. Domain, domain, domain.

</comment></comment></comment><comment><USER23> The worst thing I have observed is colleges choosing Java (and C#) "because that's what the market demand".

When I was in college (1986, engineering, not compsci) students started with 8-bit BASIC and FORTRAN (I mostly skipped classes on BASIC because I had learned to program on my Apple II). One year later, they switched from BASIC to Pascal. Later on, one of the teachers decided to teach APL. It was a wonderful experience because it was a _different_ take on my previous paradigms.

I am not sure what is the best way to teach someone how to program. When I was a kid, you turned your computer on and immediately got to a REPL (one Dijkstra would strongly disapprove, but still a programming environment). IMHO any programming language that demands an IDE or a build system more complex than make (even if hidden behind a shiny GUI) should not be used as an introduction. Paraphrasing Dijkstra, it could damage the young minds beyond repair.

If my Apple II booted into Eclipse, I'd have gone into cinematography.

<comment><USER24> __If my Apple II booted into Eclipse, I 'd have gone into cinematography. __

That 's an awesome punchline.

</comment></comment><comment><USER12> One of my favorite things about heaving to learn Scheme in my intro CS course was that it put most students on an even footing with regards to already (not) knowing the language. It's awesome to see Dijkstra alluding to that, "it drives home the message there is more to programming than they thought."

I'm having a ball learning Clojure now, and it would be much much harder if I'd never used Scheme. (I've done some functional programming in C++ and Ruby, but I wouldn't have done that if I hadn't done it in Scheme earlier.)

</comment><comment><USER25> My personal opinion - the best languages for learning are script-able, dynamically typed languages like Ruby or Python. You can build very basic programs in a procedural or functional style, and then get introduced very softly into the world of OO.

Haskell is great in some ways, terrible in others. Like the fact that you can't apply a normal function to a monad, and monads are hidden with do <\- syntax, so you need to use monadic functions, and then there's type classes and shit... In Haskell it seems the complexity goes up exponentially and building anything beyond trivial is a huge hassle - no wonder 'design' patterns like FRP seem to be all the rage (while the entire computing landscape is being built on languages like C++ and Java).

Lisp/Scheme are conceptually very simple and easy to learn, but the syntax is hard to follow, and some of the keywords make no sense to someone who's never done any programming.

I personally think Ruby -> Java/C++ would be a great progression, with maybe some SML/OCaml on the side somewhere along the way. I spent way too much time dabbling in various 'trendy' languages like Clojure, Haskell, various Lisps and other FPLs, Ruby and JS/Node, etc... Now I'm at the point where I just want to build things, so I'm using a very practical, OOP, statically-typed, compiled language that many people have already shipped many practical apps with.... Probably not going back to 'trendy' languages.

<comment><USER26> You can't apply normal functions to monads? Since when? Or what is a 'normal' function?

<comment><USER25> See all the functions which are funM. mapM, replicateM, etc... For a newbie having to use a different function to apply to a monad vs. a pure function is confusing and not necessary.

<comment><USER26> I'm just getting confused by the terminology. Those are pure functions too. And you have different functions because they're doing something completely different, operating on computational structures that are different from primitive values the 'normal' functions as you called them operate on.

It's like saying C++/Java etc. are confusing because you can only print certain values, but you can't print the print statement.

</comment></comment></comment></comment><comment><USER27> The first programming language we learned at university was ML. It was a very simple language for teaching functional programming, it has a minimal syntax that makes some sort of sense and it was likely that everyone was starting off at the same point with it.

Like Dijkstra said, getting these high-level concepts in there early is very important.

</comment><comment><USER28> I'm a wee bit confused by this. I graduated from UTCS in 1990 (the first time) and was a graduate student and employee of the CS department from about 1992 until 2004-ish.

At no time were the introductory classes in Haskell, to my knowledge.

According to the wayback machine[1], the introductory courses (CS307 at the time) in 2001 were in Scheme, while subsequent courses were in C++. I recall the introductory classes experimented with Miranda briefly.

On the other hand, the typed letter[2] _is_ from the EWD archives. Weird.

[1] [https://web.archive.org/web/20010429024151/http://www.cs.ute...](https://web.archive.org/web/20010429024151/http://www.cs.utexas.edu/users/UTCS/undergradoffice/courseinfo/)

[2] [http://www.cs.utexas.edu/users/EWD/OtherDocs/To%20the%20Budg...](http://www.cs.utexas.edu/users/EWD/OtherDocs/To%20the%20Budget%20Council%20concerning%20Haskell.pdf)

</comment><comment><USER29> I love Haskell and Java. From a high level they are my favorite languages for their respective paradigms, so I think most programmers should at least try to write a simple program in both.

That said, I think people are overreacting to Java as a CS 100-level language because of enterprise experiences.

I have written enterprise Java and I hate it, but I still love Java. Java EE is all beans and POJOs and XML and Swing and cruft and I want to burn it in a fire. But that's not Java, those are libraries.

Java is an excellent language to introduce someone to programming, because there is very little magic. Everything is explicit, due to the static typing and imperative nature. The computer (or JVM in this case) doesn't do anything that you don't tell it to do. That's easy for someone to grasp.

Additionally, Java makes it very easy to write readable, organized, and extensible programs even if they are verbose. Using classes, objects, methods, types, and all of that OOP stuff makes it easy to write modular programs where each piece of code does exactly one thing. In functional programming the intricacies of passing state and higher-level functions lead to a lot more spaghetti code for someone who has never programmed before.

Do I think that we should only teach Java? No, of course not. Do I think that it's still a great first language? Absolutely.

If I had control of a curriculum, I'd teach Java for half a semester and then Haskell for half of the semester. I think it's important to not introduce "more productive" dynamic languages like Ruby or Python until students have had to deal with concepts like types so that they can appreciate what Python and other dynamic languages are leaving out.

At Penn, where I go to school, the intro to CS class teaches OCaml in the first half and Java in the second. Unfortunately I think that so many people are struggling with writing code as a concept that they're too frustrated to appreciate the beauty of OCaml at first. Teaching it after something a little easier would make the advantages clearer.

<comment><USER30> It's just my experience, but the people I know for whom Java was a genuinely first language seem to have a harder time than anyone else grokking pointers.

<comment><USER29> That's definitely true, but no functional language is going to help with that. Those are only farther from the metal.

The only thing I think Java handicapped me with was understanding pass-by- reference or pass-by-value, but I figured it out when someone told me that Java is "pass by reference by value" meaning that in the method meth(Object obj) { ... } if you do obj.something() you are editing the original object, but obj = newObject won't change the original reference.

<comment><USER30> I kind of think it's a problem (pedagogically) with Java's model specifically, not purely distance from the metal. I wouldn't be surprised if there were other high-level languages that caused similar trouble, but I also wouldn't be surprised if some did not.

</comment></comment></comment></comment><comment><USER31> Lots of good quotes in here, particularly:

> It is not only the violin that shapes the violinist, we are all shaped by > the tools we train ourselves to use, and in this respect programming > languages have a devious influence: they shape our thinking habits.

</comment><comment><USER32> I would guess Haskell would be perfect if the goal is to produce academics. But if most of your students are destined for industry, Haskell is in my opinion the absolute worst language.

\- You'll probably get a high drop out rate because of the complexity (recursion, pure / first class functions etc).

\- You rely that your students already have experience at high school with imperative languages

\- The industry by far still don't use functional languages.

But then again Java is an equally bad choice, for the reasons mentioned, but also you jump immediately into OOP, again expecting the student to have former experience.

What is wrong with laying a solid foundation with the introductory class in C or Python, and then moving on to the more advanced OOP or functional worlds?

<comment><USER33> Industry is far too low a bar to aim at. College should give them the fundamental understanding of programming that they can apply to a variety of situations. Employability flows out of that.

<comment><USER34> I truly wish this was a more commonly held view point. You would think, speaking with many, that college was nothing more than a corporate worker mill.

<comment><USER33> This is a dangerously reductionistic viewpoint that castrates the intellectual potential of students.

To a student versed in Lisp macros, a framework like Rails ceases to be magic and starts being something that can be understood and improved on. Meanwhile, industry shies away from the _possibility_ of a quick dive into a metaprogram, because, (OMG), it's hard!

I'm exaggerating, but industry strikes me as profoundly anti-intellectual at times. We need people to counter this sentiment and the damage it imposes on all of us.

</comment></comment></comment></comment><comment><USER35> Here's a positive report on teaching "back to basics" first-semester programming with Java. They only teach procedural concepts and no OO at all. The point is, while Java itself is non-ideal for this and slants towards OO, you can just ignore that part and teach with it anyway.

Lots of people here have raised concerns that the way Java forces class and static declarations is confusing for beginners. Interestingly, the instructors were concerned about that too, but found that students don't seem to mind.

[http://homes.cs.washington.edu/~reges/sigcse/basics.pdf](http://homes.cs.washington.edu/~reges/sigcse/basics.pdf)

[http://homes.cs.washington.edu/~reges/sigcse/basics.ppt](http://homes.cs.washington.edu/~reges/sigcse/basics.ppt)

The second major concern being discussed here, that functional programming isn't possible in Java, I think is a non-issue for a true introductory first- semester class, which needs to focus on more basic issues of procedural programming and abstraction. The SICP approach is beautiful and great for already advanced and highly motivated students, but that's honestly a small minority.

(You can find many more examples of reports like this if you search for "CS1", which is the shorthand for intro-to-CS that's used in the CS education literature.)

</comment><comment><USER36> Ah, I encountered this coming up when various friends were enrolling in computer science courses at Universities. Curriculum either followed an 'engineering' format, a more EE to CS bottom-up methodology, or they followed a top-down thought process.

The reasoning for bottom-up is that there are fundamental aspects of the bottom up approach that truly teach the fundamentals that are necessary to become a great computer scientist/engineer/developer that I don't think any other method provides.

But the top-down approach is appealing for one reason it seems: It's friendly. I would not be surprised if the retention rate for top-down was greater than the bottom-up. Using something like Python, Java, or whatever other conventional blackbox language is easy, comfortable, and immediately demonstrates to a student the power of programming. The practicality of what they learn is evident. Ideally, interest in this would continue down the line. 'This is really cool, but how does Python actually work?'.

Unfortunately, it seems that most people, when presented with a working blackbox, don't care to see how it actually ticks. It takes a certain special someone to open up a watch, disassemble and reassemble it. So who knows how well the top-down carries over into learning the fundamentals.

The bottom-up has the drawback of intimidating the meek. I certainly was one. I would have benefited from a top-down approach, as I am one of the types who like to see how something 'ticks'.

So therein lies a trade off, would you sacrifice the known quality of your curriculum for better retention? Having someone learn something, is better than nothing, but that's up to people like Prof. Dijkstra to decide.

EDIT: spelling/coherency

</comment><comment><USER37> At the University of Edinburgh, they teach first year undergraduates Haskell _and_ Java (Haskell in semester one and Java in semester two).

<comment><USER38> But I bet that's only because Phil Wadler is there advocating functional programming and Haskell to bits.

</comment></comment><comment><USER39> I think judging programming languages by their features is the same as judging people by their talent and not by their deeds.

Take Java for example. Most people (Dijkstra included) hate it. But look how much Java has accomplished. It's not a coincidence that Hadoop is written in Java. It's not a coincidence that Java is the primary language on Android.

To quote a great man: "Java works. Java captures the essence of the evolutionary spirit" Same thing applies to PHP, Javascript, and whatever everyone hates.

Couple of years ago I thought that Java was the Devil's invention and the most awful programming language ever. Then I started using Java with Hadoop. And for the first week Java was the most awful programming language ever. Two/three weeks in I was absolutely okay with Java. It worked. And for me that's the only thing that counts.

</comment><comment><USER40> My lineup was: Intro1/2: C++. Systems: Assembly. Data Structures: C++. Unix Systems: C/perl. Algorithms: C++. Software Engineering 1/2: Java. Networking: Java. Architecture: C/Assembly. OS: C.

SEng1/2 was introduction to Java/design patterns. That's it. It was the largest waste of time. Then, the holy grail, networking! That professor really threw us into the dark sides of APIs and tortured us. Very little direction and ridiculous projects. That's where I 'learned' Java.

Three years later, I cannot remember Java. I do not recall how to handle the Arrays or anything of that nature. I can still rehearse C++ code off the top of my head! There was no functional programming at my uni in _any_ course.

</comment><comment><USER41> I tend to think Java is a good first programming language, much like Basic and Pascal were the "first programming language" for so many of us back in our youths. Not every high-school offers programming, and of the ones that do there's no guarantee students have _actually_ been properly introduced to programming.

And like all "first programming language"s, it should be discarded as you learn _proper_ languages.

2001ish-era Java was a fine vehicle for introducing programming. Just not much else.

The _second_ programming classes should move in both directions away from Java - to properly academic and expressive languages like Haskell, or getting their hands dirty with the nitty-gritty of C and assembly languages.

<comment><USER42> What are Java's merits as a first programming language? Keep in mind all of its warts would have to be unlearned later by the prospective student. It can, like Dijkstra argued, introduce unhealthy thinking habits.

Why not a simpler higher-level language as a first language? (pick one, there are lots of simpler languages than Java).

<comment><USER41> Most of the good "simple high-level languages" are dynamically typed... which is also worth considering - Python would be a fine "first language" too if you were okay with putting off the concepts of static typing into a later course.

But if you wanted to include static typing and were trapped in 2001? I'd be hard-pressed to come up with a better language than Java, at least without getting into some pretty obscure platforms.

</comment></comment></comment><comment><USER43> I'll just leave this here...

[http://channel9.msdn.com/Series/C9-Lectures-Erik-Meijer- Func...](http://channel9.msdn.com/Series/C9-Lectures-Erik-Meijer-Functional- Programming-Fundamentals) (One of the greatest introductions and walkthroughs of Haskell I have ever watched, taught by Erik Meijer)

I have actually watched every lecture (even the parts with stuff I "knew") and thoroughly enjoyed it. If an entire course was taught like those lectures were, I think you could teach someone a pretty darn good grasp of haskell pretty quickly (I am of course ignoring the part where you learn really basic fundamentals like bits/bytes, data types, references/pointers, etc)

</comment><comment><USER44> For serious students of the subject, kicking off with an unusual language can be helpful. As another noted: if the student hasn't even started programming prior to college, s/he is likely not of a succeeding mindset as the bulk of other students already grasp programming.

Starting college, I'd already learned assembler, BASIC, and Pascal - all what Dijkstra was warning against over-ingraining; proceeding to C would have been sensible but entrenching. Fortunately Syracuse University then was starting students on something very strange: APL. That was a mind-opener I needed at the time, and recommend such non-procedural/OOP language very early on for serious students.

<comment><USER45> "if the student hasn't even started programming prior to college, s/he is likely not of a succeeding mindset"

Clearly it couldn't have anything to do with a lack of access to resources, or simply developing an interest in programming later in life than you.

Starting later may make them less likely to succeed, but saying that it is probably because they don't have a "succeeding mindset" is quite a privileged sounding generalization.

<comment><USER44> Sorry if the "mindset" comment seems offensive. New students unfamiliar with the topic are up against others who _have_ been programming for years already, who (sometimes regardless of opportunity) managed to get programming books from the library/web, found an affordable computer to work on, and despite any/all hinderances _made it happen_ \- to wit, a succeeding mindset.

It was a casual comment in a casual conversation. Apologies if it rubbed you the wrong way; please focus on the well-meant point.

</comment></comment></comment><comment><USER46> I do most of my programming in Java and I'm convinced I want to learn functional programming, just to broaden my thinking. What are some considerations regarding starting with SICP book/Scheme vs. Scala vs. Closure vs. Haskell?

<comment><USER47> Personally I prefer Haskell because it's pure. Here's some good book: [http://learnyouahaskell.com/](http://learnyouahaskell.com/) Scala is just Java+FP, so I use it as a replacement for Java development.

</comment></comment><comment><USER48> I agree with Dijkstra that Haskell should be taught in undergraduate courses. That's where we boil away most of the really bad, theory-ahead-of-practice CS ideas that academe cultivates. And I say this as a lover of both Haskell and universities.

It's not until you've spent several 4am nights getting darcs and hackage to work that you realize no team can succeed without the sort of people who like reality and boring details as much as beautiful ideas. Haskell's culture is anathema to them. (And no, I'm not one of them. I just want my app to compile and my deps to be found.)

</comment><comment><USER49> I was a freshman at UT in 2002 in their CS program. I wish they had heeded Djikstra's advice. Java with BlueJ was what we were taught from day 1.

To the departments credit, we did end up taking a couple of courses in Haskell (the best one I remember was the course of compilers - we had to write a C lexer in Haskell). It was one of the more fun classes I took (thanks, in a great part, to the professor teaching us).

</comment><comment><USER50> The first programming language depends a lot on what the purpose is. EWD's purpose is to train mathematicians specializing in computation. For these types of people, Haskell is fine. "Commercial" languages are better for people who want to learn the basics of programming to apply in a job later.

</comment><comment><USER51> Why not teach assembly language programming so that the student can really understand how a computer works, and teach Scheme so that they can really understand the power of abstraction, recursion, functional programming etc. A later course can be to write a Scheme compiler generating the same asm lang.

</comment><comment><USER52> I'd love to see an introductory course using Haskell on an open courseware channel.

</comment><comment><USER53> It's much better to pick something multi-typed and multi-paradigm like C# and be able to show the difference between static and dynamic, imperative and functional, AOP etc.

</comment><comment><USER54> Does anyone know if anything came out of this letter?

<comment><USER55> Read the third sentence of the article.

</comment></comment><comment><USER56> Yet I can't find any book on FP in practice...

<comment><USER57> [http://www.cs.nott.ac.uk/~gmh/book.html](http://www.cs.nott.ac.uk/~gmh/book.html) [http://shop.oreilly.com/product/9780596514983.do](http://shop.oreilly.com/product/9780596514983.do) [http://shop.oreilly.com/product/0636920024743.do](http://shop.oreilly.com/product/0636920024743.do)

</comment></comment><comment><USER58> How many nano-Dijkstras has this letter?

</comment><comment><USER59> Classical progamming language is important fallacy.

</comment><comment><USER60> I have to say that Java is the absolute worst language for pedagogy. Before people can write "Hello world", they're told they have to write "public static void main(String[] args)", which are presented as magic incantations, "don't worry about those yet". Thus begins the corporate-style coding culture of bashing stuff without understanding it.

The stated reason for starting in Java is so that students can get coding jobs based on one or two CS classes, but two issues come to mind there. First, I generally wouldn't hire someone (in a technology company) who took one CS class and didn't continue-- but at least if she passed an SICP-style course, I'd know that she learned _how to think_ about computational problems. Second, you don't "know Java" when you come out of school. Java is actually highly complicated (in good ways and bad) and the average college student hasn't been exposed to all the mess of it (and that's probably good, because, while OOP means about 20 different things to different people, business-style OOP is cataclysmic).

<comment><USER61> While I personally agree with teaching something other than Java, there is one big advantage of Java you have overlooked-- as the core language is so simple, bugs caused by incorrect use of the language tend to be "shallow" (bugs caused by algorithmic mistakes can still be very complex of course).

An easy example of this is compile-time errors -- the most complex compile time error you can get of Java tends to be nothing more than "mismatched bracket" or "incorrect function call", whereas even fairly simple Haskell code can produce very complex error messages, and ghci (for example) tends to make things worse rather than better.

Java isn't perfect and has been getting more complicated, boxing & generics for example, but still is not close to the pain one can create in a handfu of characters in Haskell (of course, C++ has the same problem, for different reasons).

Personally, I see Haskell as the C++ of functional language, and therefore would prefer not to teach either Haskell or C++ as a first language.

<comment><USER62> If Haskell is the C++ of functional languages, what, in your opinion, is the C of functional languages ?

<comment><USER63> Scheme.

<comment><USER64> I want the Python of functional languages

<comment><USER65> Or Hy:

[http://docs.hylang.org/en/latest/language/api.html](http://docs.hylang.org/en/latest/language/api.html)

:-]

</comment></comment></comment></comment></comment></comment><comment><USER66> Ugh, is this a guy who learned his CS from reading Proggit?

There's no way you can say Haskell is "orders of magnitude better than Java"; maybe it's better, but it's not that much better.

<comment><USER67> It's a transcript from Dijsktra's letter.

<comment><USER66> Yeah, I know.

Dijstrka is pretty famous for picking the wrong side of fights about programming languages.

<comment><USER34> Perhaps by popularity and usage in corporate. In every other way, I'd say he is spot on.

Signed,

Numerous jvm lang and haskell programmer</comment></comment></comment></comment>


Nuclear Commission Approves a Safety Aspect of NuScale Power's Advanced Reactor - <AUTHOR> http://www.powermag.com/press-releases/u-s-nuclear-regulatory-commission-approves-key-safety-aspect-to-nuscale-powers-advanced-reactor-design/ <comment> gene-h The headline is misleading, they haven't approved the design yet. However, they've been able to certify that the reactor does not need a certain standard of backup power supply and electrical circuitry due to the passive safety features of the design. This standard essentially requires that nuclear power plants have a connection to the grid and an on site backup generator to safety systems that are on completely separate circuits from the nuclear power plant electrical generation systems.

Not having to do this makes it cheaper for NuScale to deploy powerplants. And it also makes it easier for them to build powerplants in remote places where a connection to the electrical grid is not available[0].

[0][https://www.nrc.gov/docs/ML1616/ML16169A148.pdf](https://www.nrc.gov/docs/ML1616/ML16169A148.pdf)

<comment><USER2> Thanks, we've revised the headline to use less misleading language from the article.

Edit: submitted title was "U.S. Nuclear Regulatory Commission Approves NuScale Power's Advanced Reactor".

<comment><USER3> When you do this would it be possible to include the old headline in your comment?

Without it comments like the GP are harder to understand what exactly they are speaking to.

<comment><USER4> FWIW, you can often find this by going to the Google cached version of this page (in this case: "U.S. Nuclear Regulatory Commission Approves NuScale Power's Advanced Reactor"), though I agree, it would be useful to include.

</comment></comment></comment></comment><comment><USER5> Nuclear power buffs should be pleased. This is the first positive step forward for nuclear power for as long as I can remember.

50MW of power is powering roughly 50K homes for a year. It'll probably be for industrial usage at first, but either way it will take pressure off the power grid, and probably make the grid more resilient to boot.

It's difficult to imagine a catastrophic failure scenario for these since they don't require mechanical pumps. But, I'm guessing there's some industry folks here that have more of a nuanced read on this.

(edit: yay Oregon!)

<comment><USER6> > 50MW of power is powering roughly 50K homes for a year.

This may seem pedantic, but the relevant measure is power when speaking of generators, like this reactor, and energy (in addition to power) when talking about storage, like say, the Tesla battery in Australia. So "...powering roughly 50K homes for a year" could just as well be for a second, a week, or a decade. Indicating a time interval is not meaningful in this context.

Power is the rate of energy consumption/generation (think water flow rate at the faucet), while energy is the total amount stored or consumed (how much you have in the bathtub). Mixing up power (W) with energy (Wh) is unfortunately a pervasive mistake in the media, too; we should strive to avoid it, lest we contribute to the confusion.

(Also, 1kW per house is probably too little; somewhere around 3kW is probably closer to reality.)

<comment><USER7> Average draw in the US is ~1200 watts.

[https://www.eia.gov/tools/faqs/faq.php?id=97&t=3](https://www.eia.gov/tools/faqs/faq.php?id=97&t=3)

Canada is similar and then most other places are ½ or less.

<comment><USER6> > Average draw in the US is ~1200 watts.

Peak draw is more relevant, though, than average draw. My point was that in a hypothetical town with a single 50MW generator you cannot sustain 50k households, due to daily peak usage exceeding the average by a significant factor.

Edit: on reading your reply, you're right.

<comment><USER8> As energy storage becomes more prevalent in the coming years, peak load becomes less relavent.

Once you add storage, you really _can_ supply 50k households (consuming an average 24kWh per day) from a 50MW supply.

<comment><USER9> But then you have to ask which is more expensive, the storage or the excess capacity.

</comment></comment></comment></comment></comment></comment><comment><USER10> 50MW per reactor at 12 per plant is 600MW. Or 600k homes powered by a single power plant. Nuclear is now very safe, and cleaner than coal. I am glad this project is moving forwards.

EDIT: Opportunities for more skilled jobs is always a plus too.

<comment><USER11> How is the long-term waste handled?

<comment><USER12> Given it's not pumped into the atmosphere to be finely dispersed globally and stored in our childrens' bones and lungs, almost any solution beats the _status quo_.

<comment><USER13> That's already changing very rapidly. "World coal production fell by 6.2%, or 231 million tonnes of oil equivalent (mtoe) in 2016"

What changed is both solar and wind cost less than coal. So, coal is being fazed out about as fast as alternatives come online. Give it another 10 years and the landscape will look very different.

<comment><USER14> The majority of coal displacement in the US has been natural gas which is cleaner from a lung disease perspective but just as bad for climate change.

<comment><USER15> Actually LNG is 30% less CO2 per unit of energy which isn't revolutionary but it's not a tiny difference either. If a lot of things that currently burn other hydrocarbons (such as ships) would instead burn LNG we could cut emissions quite a bit.

[https://en.wikipedia.org/wiki/Liquefied_natural_gas#Environm...](https://en.wikipedia.org/wiki/Liquefied_natural_gas#Environmental_concerns)

<comment><USER14> But then you have to account for methane leaks from pipelines and account for the fact that methane has 60x more warming power than co2 and they end up being basically a wash. Consider the error bars in, i.e. [https://partofthething.com/thoughts/wp- content/uploads/ipcc-...](https://partofthething.com/thoughts/wp- content/uploads/ipcc-co2-of-fuels.png)

Data from [https://www.ipcc.ch/pdf/assessment- report/ar5/wg3/ipcc_wg3_a...](https://www.ipcc.ch/pdf/assessment- report/ar5/wg3/ipcc_wg3_ar5_annex-iii.pdf)

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> There's a lot more about the design from the company in [https://www.iaea.org/NuclearPower/Downloadable/Meetings/2013...](https://www.iaea.org/NuclearPower/Downloadable/Meetings/2013/2013-09-02-09-04-TM- NPTD/20_usa_colbert_nuscale.pdf)

</comment><comment><USER17> Not bad. I do worry about the containment vessel not being much bigger than the reactor. That was part of the problem at Fukishima. When the reactor overheated and turned the cooling water to steam, the pressures were too high and the containment was breached.

Three Mile Island had a big containment vessel, and when they had a partial meltdown, the containment held.

<comment><USER18> I think the whole idea with NuScale reactors is that if you take away external power and scram the reactor, there's enough water in the pool to handle the decay heat. After the water boils away, the decay heat is supposed to be small enough that passive air cooling will keep it safe.

</comment></comment><comment><USER19> Is there any indication of how long it would operate before needing refuelling or decommissioning?

<comment><USER20> According to [http://www.nuscalepower.com/our-technology/technology- overvi...](http://www.nuscalepower.com/our-technology/technology-overview) it would have a refueling cycle of 24 months. I didn't see anything about the expected lifetime of their reactors.

</comment></comment><comment><USER21> How much does it cost? Who can buy them?

<comment><USER22> From wikipedia:

 _The company estimates a twelve-unit NuScale plant would cost $5,000 per kilowatt. In comparison, the Energy Information Administration in 2011 estimated costs to be $4,700 per kilowatt for conventional nuclear power, $4,600 for a carbon sequestration coal plant and $931 at a gas-fired plant or in excess of $1,800 for a gas-fired plant with carbon sequestration._

12 unit = 600kW => 3bn$

[https://en.wikipedia.org/wiki/NuScale_Power](https://en.wikipedia.org/wiki/NuScale_Power)

Re "Who can buy them?" \- if you have the 3bn, you will probably be able to afford whatever license you need to buy that thing.</comment></comment>


An Efficient Quantum Algorithm for a Variant of the Closest Vector Problem - <AUTHOR> https://arxiv.org/abs/1611.06999 <comment><AUTHOR> Shor has done it again!

I'm not an expert on quantum algorithms, but if you're wondering what the implications of this are, here's what I understand as a cryptographer: a lot of post-quantum cryptography (i.e., not anything we use now like RSA or ECC) relies on the hardness of the closest vector problem (given a real-valued vector, what is the closest vector in a discrete lattice to that real vector?).

This algorithm gets really close to invalidating the security assumption of this problem, which is the basis for a lot of modern post-quantum crypto (like a lot of fully homomorphic encryption schemes), so we might expect it to fall soon.

Also: this does not affect the security of symmetric schemes like AES at all, those are still safe in a quantum world.</comment>


Ask HN: What's the best app for stopping Chinese robocalls? - <AUTHOR> I get one every few days always from different numbers. I paid for Hiya premium call blocking but they still seem to come through. Is there a solution or app that works 99% of the time? <comment><USER2> I forget where I heard this but when you get a call, pressing 1 or 2 will connect you to a real person. If you talk about Tiananmen Square they will eventually block your number from their end. Can't confirm, but sounds dumb enough that it might just work.

</comment><comment><USER3> I know this doesn't help your case and may come off as mildly offensive, but I've simply stopped picking up the phone from numbers I don't know (phone set to silent too) a few years ago and it's wonderful.

Coworkers call via Slack or Zoom, rarely phone. Personal friends and family are on my address book so I know when they're calling (and can set custom ring tones if I want to). If I'm not actively trying to resolve something with a bank or health insurance or something, I'm not expecting anyone I don't know to call me. I've never missed a single important call ever since I stopped picking up the phone from random numbers.

<comment><USER4> What do you do when you are actively trying to resolve something with your bank? Do you start answering calls from random numbers and risk letting a few spam calls through?

<comment><USER3> Yeah. If I pick up and it's spam, I just hang up without saying anything. I just have to deal with it once or twice before I get the call I need.

</comment></comment></comment><comment><USER5> I don't think there's a solution that works 99% of the time yet. Personally, I've found the Call Filter app via Verizon, to be far more effective than any of the other apps. I've heard similar things from coworkers regarding the AT&T filtering app too. See if your carrier has something.

<comment><USER6> Is the paid version of the Verizon app better than the free/trial version? Used the trial for a week but the Chinese calls still made it through.

<comment><USER5> Sorry for the late reply. I don't pay for the app, it's included in my monthly service...not sure if there's a difference. I haven't received any Chinese calls recently...

</comment></comment></comment><comment><USER7> I was going to suggest Hiya, but since you have it already. The numbers from those calls are usually made up/bogus or someone else's number. There is no way to stop 100% unless the telecom gets involved.</comment>


Ask HN: Is knowledge of algorithms overrated in software development - <AUTHOR> Is there a necessity to have a good understanding of algorithms to be a good software developer?
I know some fantastic developers, who are great problem solvers, and they couldn't tell an algorithm from an apple.
It seems all interviews and discussions revert to a grading based on algorithm understanding, and it feels like too much emphasis is placed on one marker of competency. <comment><USER2> Knowing as in being able to recall the specifics of implementation? No. For two reasons: 1. Unless your job involves custom data structures, you simply won't remember them after a few years. 2. If you do want to use a specific algorithm, in most cases you want a cache-friendly version of it. The naive implementations rarely have the characteristics you want in practice.

Knowing as in knowing rough categories and being able discuss big O characteristics when needed? Super useful. I could maybe implement one or two dictionaries. Badly. But I know what alternatives there are, what names to google for if I ever do need a custom dictionary, and how to define what I'm looking for (for example lockfree inserts, or ordered keys, or max 2 memory lookups per key, etc.)

</comment><comment><USER3> What kinds of problems are they solving that don't involve algorithms somehow.</comment>


Gig workers are organising in tech-savvy ways - <AUTHOR> https://www.economist.com/finance-and-economics/2020/05/09/could-the-pandemic-give-americas-labour-movement-a-boost <comment><USER2> I'm surprised it's taken this long for some tech enabled labor platform to emerge. Power is gained by coordinating some portion of the value chain into a single node. Amazon is powerful because they can centralize demand into a single node (Amazon.com) and then force suppliers to play their game. Saudi Arabia is powerful because they can centralize the supply of oil into a single node (AramCo) and then force buyers to pay their price via OPEC.

Labor doesn't have a centralizing node, and is consequently powerless. Even engineers, relatively well paid as they are, are somewhat powerless. The high salary commanded here is due to autonomous market forces, not a coordinated strategy.

Unions used to be strong before the 70s but they've gotten successfully defanged by political parties.

There's definitely room for building MASSIVE and powerful without the political corruption of yesteryear's unions.

<comment><USER3> I always said if sysadmins all banned together, they could change the world overnight. Let your imagination fill in the gaps.

<comment><USER4> > I always said if sysadmins all banned together, they could change the world > overnight.

What do you think they could all agree on though?

<comment><USER5> That Lotus and all associated products should be purged from the planet.

<comment> blaser-waffle Yes.

Also Oracle licensing.

</comment></comment></comment></comment></comment><comment><USER6> Hoping someway, somehow, something like medicare for all comes to fruition at the national scale given that the economy will become even more of a gig economy than pre-corona. Can't understand how this is not being talked about much since Bernie dropped out. A good family plan for a gig worker (without subsidies) is like 1500 a month in major markets.

<comment><USER7> So if the healthcare and insurance markets are screwed up because of government, the solution then is more government? I always find this logic lacking. Maybe I could get an eli5 from someone ?

<comment><USER8> The parent post said nothing about healthcare and the insurances markets being screwed up because of government.

The argument for single-payer hinges on the theory that the profit motive is incompatible with the very idea of insurance (that is, as long as denying services is more profitable than providing them, an insurance market is an inefficient way to provide said services).

<comment><USER9> It's complicated.

1) "Single payer" is not the only way to deliver universal healthcare. Germany, Switzerland, Netherlands, Singapore all have thriving multi-payer systems. In Switzerland and the Netherlands, ALL insurance is private. In Singapore, while the government covers catastrophic care, 70% of total health expenditures are private.

2) The biggest problem in the US is that healthcare is just more expensive, and American insurers end up having to pay more. An example: doctors in America earn more (PPP adjusted) than in any other country. MRI's in America cost more (even on the Medicare fee schedule) than almost any other country. A lot of this is actually caused by a series of well-intentioned policies passed over the last half century.

3) In the US, for-profit insurance profit margins are a pretty meagre 5%, which doesn't really make a dent in costs. Also, some of the biggest insurance providers are non-profits (Blue Cross Blue Shield, Kaiser)

4) Medicare fee schedules aren't that much better, in fact the part of Medicare that's actually working the best is Medicare Part C (Medicare Advantage), which relies on private payers.

Source: I work at a claims adjuster

<comment><USER10> At least in Switzerland, the government pays if you are paying more than 8% of your income, the government caps deductibles, and the government prohibits profit seeking for the basic plan. Very different from the US

<comment><USER9> Sure, I'm not defending the US status quo, just attacking the idea that "single-payer" is the best/only solution. Not arguing for an anarchist free- for-all either — some of the most successful private healthcare regimes (Switzerland, Singapore) are also well regulated.

</comment></comment></comment></comment></comment></comment><comment><USER11> gig workers are going to be at a big disadvantage in coming months due to increased labor competition from laid off worker, depressing gig wages and increasing competition.

<comment><USER12> Looked at from the other side: There is safety in numbers and this trend could help shift power to the worker, especially if they are savvy about organizing.

I've done gig work for a few years now. I am pro gig work and I think it can be a good deal for the worker even though it currently has a terrible reputation as being a raw deal for the worker. I'm happy to see that the pandemic is fostering development of this sort in this area.

<comment><USER13> How do you prevent scabs when work is decentralized?

<comment><USER12> I have no idea, but I don't think you need perfect control over everything.

 _The more you tighten your grip, Tarkin, the more star systems will slip through your fingers. -- Princess Leia_

I think we just need to work out what is a reasonable rate and the expectation that gig work should be a means to make a living wage for people who do it and not just for some sliver of the people who do it, but for most people who do it. I'm okay with there being a learning curve and yadda, but it shouldn't be a situation where only some really tiny fraction of people have any hope of making it and then they have to live in terror of the rules changing overnight on them and killing their livelihood.

Part of the value of labor movements is just setting the expectations for both sides that "You need to pay X amount for this." A lot of stuff we do is basically culturally determined and labor movements help shape culture and cultural expectations and so forth.

So I don't think details like that are necessarily important. Sometimes they are, but sometimes they aren't. And sometimes they can be a real threat but don't have to be if you have your priorities straight.

I don't care how we get there, I just would like to see gig work become something with a reputation as legitimate work that should reasonably support you if you meet some reasonable standard of quality and put in some reasonable number of hours. I think we need to ditch this idea that gig work is simply slave labor and is unfixable and needs to be converted to regular employment because that's the model we are familiar with and know how to package up in a way that works reasonably well for both sides.

</comment></comment></comment></comment><comment><USER14> [https://archive.md/4weWH](https://archive.md/4weWH)

<comment><USER15> Thank you. Seems like everything is pay-walled these days...

</comment></comment><comment><USER16> I went out to grab a burger last night and there was a huge line of Uber Eats drivers and they were waiting for what seemed like a long time especially considering how little they're paid.

Is there any reason why an OSS Uber competitor wouldn't be tractable? Drivers and passengers can pay a small booking fee which would go towards maintaining server costs. Client app can be really bare bones and I believe people would be willing to use it if it's way cheaper. So many scammy people talking about decentralized computing but this seems like a low hanging fruit which gives gig workers their autonomy back.

Same question for all gig worker apps.

<comment><USER17> i thought about this recently too. the technological complexities are not trivial, but they're dwarfed by the operational, marketing, and regulatory ones. for instance, who handles crimes like assault or theft between the various parties? who sets up payments and issues refunds?

i'd love to organize/contribute to something like this, but it has some serious hurdles to think through.

<comment><USER18> Would be cool to have an open protocol where anyone can make an app to hook people up P2P.

> who handles crimes like assault or theft between the various parties?

If it's P2P, then the same as any other P2P transaction. If I pay a random dude to deliver my lunch, and he assaults me, this is handled by the local police. It's a risk I'm willing to take if I choose to trust him. A distributed trust system w/ reviews will help make things safer.

I feel like sometimes we seek 100% safety in a world where that's not possible, and when it DOES happen we point fingers. With a middleman like Uber we can point fingers more easily, but ultimately we're responsible for ourselves.

> who sets up payments and issues refunds?

There are public escrow services such as escrow.com that could be integrated. And there's always cryptocurrency.

<comment><USER17> i like p2p as the default, but i'm not as confident that the liabilities go away so easily with that configuration.

totally agree that the world is full of risks and sometimes we just have to accept them.

escrow in some form would likely be necessary, but the fees of escrow.com are prohibitive for this use case.

instead of pricing being controlled by the marketplace, it'd be cool if it were more like a trading platform where riders bid for rides and drivers offer rides (with considerations for starting point, distance, and trip time).

</comment></comment></comment></comment><comment><USER19> Bottom line either billionaires (in general and Jeff in particular) will be somehow forced to either come up with a COVID vaccine so people will go back to "normal" or will have to shell serious money to protect the workers. Either way I see this as a win-win situation.

</comment><comment><USER20> I wish my company would organize and unionize

</comment><comment><USER21> Anyone have an un-paywalled mirror?

It's surprising to read anything semi pro-worker coming from the economist, which run far more articles against unions and worker rights than giving a fair analysis.

<comment><USER22> [http://archive.is/4weWH](http://archive.is/4weWH)</comment></comment>


Faxing is growing in popularity - <AUTHOR> https://www.washingtonpost.com/national/health-science/faxing-is-old-tech-so-why-is-it-also-growing-in-popularity/2019/03/08/d01c638a-2f0b-11e9-86ab-5d02109aeb01_story.html <comment><USER2> The intelligence community has been intercepting faxes for decades.[1] It's not very secure. Even worse, VoIP systems recognize fax modem signals, decode them, transmit them as data, and re-encode them as fax modem signals.[2] They have to; VoIP has such awful jitter and bandwidth that you can't send modem signals over it. So it's easy to peel off the fax data and log it. This is done routinely using fax servers.

[1] [https://en.wikipedia.org/wiki/Black_site#The_Onyx- intercepte...](https://en.wikipedia.org/wiki/Black_site#The_Onyx- intercepted_fax)

[2] [https://www.dialogic.com/-/media/products/docs/whitepapers/1...](https://www.dialogic.com/-/media/products/docs/whitepapers/11148-reliable- fax-voip-wp.pdf)

<comment><USER3> How secure do I need my restaurant take-out order to be?

<comment><USER4> >By one private firm's estimate, the fax accounts for about 75 percent of all medical communication

[https://www.vox.com/health- care/2017/10/30/16228054/american...](https://www.vox.com/health- care/2017/10/30/16228054/american-medical-system-fax-machines-why)

<comment><USER5> This is because fax is still considered by HIPAA to be a secure method of transferring patient information. Where email is unencrypted and this considered to be insecure.

</comment></comment></comment></comment><comment><USER6> Every single hotel that caters corporate clients in the USA still uses fax. We don't get reservations through fax, but that is the best way to get credit card authorization. A lot of corporate booking systems are automated to send out Fax for credit card authorization after they book the room online.

Also, it's much better for our Front desk staff, as they don't have to constantly check the email. There is only 1 fax number, and anyone can send out the fax and whoever is working at the front desk gets a printed copy without doing anything.

I really wish there is a modern alternative to FAX.

Edit: What I mean by a modern alternative to Fax is that the sender can send high-resolution color documents without going through multiple steps. Scan documents to a computer, convert to PDF, Send an email with an attachment, Check email periodically, Print Email.

I have converted most of our documents to digital forms, and sync to all computers. Yet all my employees rather copy documents as they think its much faster and convenient. They will make 100s of copies of the document.

We accept all documents through email or fax. Last week we received an email with a one-page contract that was broken into 4 images. We asked to send it again and they rescanned and send it again the same way. I used a word to print 4 images into one page and call it a day.

<comment><USER7> > I really wish there is a modern alternative to FAX

What's missing from email + a couple lines of script code? (Or if you prefer, a lightweight piece of software that does the same thing). It seems like that covers all the cases you describe: automatically prints, don't have to check it, you can have only one email, etc. I mean the fact that some other parties are stuck on a legacy system is of course always a good reason, but that's not really a lack of a modern alternative.

<comment><USER8> > What's missing from email + a couple lines of script code?

Medical use: I call someone to tell them to expect a fax. I send the fax. I call the person and ask if they got the fax.

When sending the fax I hit the button and hear a dial tone. I know my machine is connected to the exchange. I dial the number and hear the ring tone. I know the recipient's machine is connected to the exchange. I hear their machine pickup and negotiate with mine. I know our machines are connected. My fax goes through. If it doesn't go through I get an error. If it doesn't go through on the recipient's machine I get an error.

You don't need this for a hotel booking.

You do need this if your patient is suicidal and plans to end their life and you're making a referral to a crisis team.

Unfortunately, many places do not use real fax machines plugged into POTS. They use virtual fax machines which do goodness-knows-what over the Internet. So, we get the drawbacks of fax combined with the unknown status of Internet.

It's a real mess. There's a huge amount of money (in the UK NHS) to be made with a better replacement.

<comment><USER9> In many parts of the world they use WhatsApp for he equivalent workflow in multiple domains.

That little green tick when someone reads your message is a surprisingly critical part of the workflow.

</comment></comment></comment></comment><comment><USER10> It comes down to convenience and ease of use... put your pages in, enter a phone number, hit send. Verses scanning pages using a computer, compositing into a PDF, or otherwise emailing loose pages... and since network monitoring is more likely than phone taps (except the govt) may be more secure fax to fax over pots.

It's more a matter of ergonomics. I've also used fancier systems that scan to pdf and email or drop location internally, then you have to email the document out. Frankly, faxing direct is usually far easier.

<comment><USER11> You pay for this in data entry. Sending pages, means that someone has to retype the data into a database compared to sending it in some kind of data structure that can be imported. Or worse the data doesnt get entered, and it ends up in a filing cabinet.

<comment><USER12> >Or worse the data doesnt get entered, and it ends up in a filing cabinet.

God forbid that data not be vacuumed up never to be seen again except by the advertisers. /s

A file cabinet in the back office probably handles most people's use cases for documents they receive by fax 90% as well as any digital solution with a heck of a lot less effort.

<comment><USER11> In the context of medical records, as a patient, id like to be able to download and transport my records without an office needing to pull out paper and copy it for me.

<comment><USER13> They can always scan them and send you the image.

<comment><USER11> So instead of me making a call to a database, a human has to be involved before I get my data.

<comment><USER13> There's no reason they have to store the faxed doucments in paper form (except, possibly, for questions of authenticity but, even then, they could also save a digital version of every fax they receive)

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> Interestingly I started using a web based Fax solution in Germany two years ago when I realized that Doctor's offices won't answer the phone anymore whenever I wanted to get an appointment. Good Doctors are drowning in emails requesting an appointment. And their phones are ringing from nine to five, so its super hard to get through. Sometimes I was on hold for half an hour witout success. Even though I am able to afford the most expensive Doctors I would not get a chance to make an appointment! So phone won't work, neither would they reply to emails, generally. Then I realized that all of them have Fax machines! For various (legacy and regulatory) reasons. When I started requesting an appoitment or a callback via Fax I was delighted to see that they would reply almost immediately!

So now whenever I need to get in contact with a Doctor's office in Germany or public authorities, I don't even try to call, but send a Fax immediately.

</comment><comment><USER15> The study ([https://www.opentext.com/file_source/OpenText/en_US/PDF/open...](https://www.opentext.com/file_source/OpenText/en_US/PDF/opentext- idc-survey-fax-market-pulse%20-en.pdf)) as sponsored by OpenText ([https://en.wikipedia.org/wiki/OpenText](https://en.wikipedia.org/wiki/OpenText)) It shows growing fax usage in the segment of large companies. At the same time need for integrating fax into other systems and cloud. It sound more like OpenText will use the finding (and list of companies surveyed) in their sales process.

</comment><comment><USER16> Germany 2018: oohh you like to cancel your online account for our service? Her is our fax number: 0FUCK / YOU

Yes I send one fax per year for most stupid reasons.

Like: hey I have to send more documents to my state for taxes which I originally sent digitally through there secured service page: yes no problem here is our fax number...

</comment><comment><USER17> > What happened was that competing companies deliberately created incompatible > systems. Doctors' offices and hospitals that use different records databases > can't communicate with each other digitally — but they can via fax.

I cannot imagine why people prefer an established, well-documented, open exchange format over some closed, proprietary, and probably obfuscated one.

<comment><USER18> Direct Project secure messaging is an established, well-documented, open exchange format that works over SMTP. It is specifically designed to replace faxing for the healthcare industry.

[http://wiki.directproject.org/](http://wiki.directproject.org/)

</comment></comment><comment><USER19> The implications of that to accessibility are atrocious. I had a blind friend who lived outside US and had to deal with english faxes once. That was a nightmare, both in the financial and accessibility sense. If everyone just used email...

</comment><comment><USER20> Faxing provides some advantages that can't be easily matched by competing communications tech: it's solid tech that works well, it can operate without requiring access to a computer network, it's cheap, it's dead easy to use, etc.

I'm not surprised to hear that it is growing in popularity. I think that we'll find an increasing number of other "antique" technologies that will find a resurgence for the same reasons.

<comment><USER21> im not sure about dead easy to use? i have figured out how to use all the tech devices including old school iptv cameras, smart cash registers and connecting thermal receipt printers but the fax machine is absolutely the shittiest gadget i have had to deal with in my life despite being shown how to operate it multiple times.

<comment><USER22> The people who say faxes are easier than email are like the old mechanics who complain about how EFI is complicated and carbs were so much simpler.

It's not actually any better, just a lot of people learned how to use it 20 years ago and don't want to learn anything new because they're wastes of space.

<comment><USER20> This is just not true as a blanket statement. I am as cutting-edge tech-wise as anybody (it is my industry, after all), but that doesn't blind me to the fact that there do, in fact, exist use cases for which the fax is the best solution.

<comment><USER23> Everyone has a camera on a device that can send emails. Unless the internet went down and for some reason the phone system still worked, I can't think of any scenario where fax is better than emailing photos.

<comment><USER24> The fax protocol includes a strong "read receipt" type mechanism that the machines can't ignore. "Did you get the last page?" "Yes, no bad lines."

Legally, this is interesting because it doesn't exist in email. You had the machines agree that the complete document was sent and was received. You will certainly find that it other transfer protocols, but not email, where the machines don't talk to each other directly.

</comment></comment></comment></comment></comment></comment><comment><USER25> The IRS also only accepts faxes for sending documents directly to an agent. If you have a fax machine maybe it's secure, but the internet services are very shady and using a local store I'm still concerned the machines store the documents in memory after sending them (not 100% sure if that's the case but I see no reason for the manufacturers to care to wipe them).

</comment><comment><USER26> I work in healthcare and in my office we likely receive 100-200 pages of faxes everyday. Every single microbiology report in my large urban hospital prints out (including preliminary results. This includes a cover page for every single fax. It's a huge waste of paper. Luckily we are moving to Epic and all results will come through that system instead.

<comment><USER27> > Luckily we are moving to Epic

This may be the first time those words were used together in a sentence.

<comment><USER26> I work in Alberta and we have 5 distinct health care regions although we all work under one umbrella organization. All regions use different EMR systems, some regions and major hospitals are still not currently using any system, and all orders are written by hand. So an opinion on Epic as an EMR is perhaps minor compared to EMR vs hand written systems.

<comment><USER27> Of course. It is definitely exciting to have a computerized system. I just found it somewhat amusing considering Epic's reputation.

<comment><USER26> What is Epic's reputation? It's coming with pretty big fanfare here in Alberta.

</comment></comment></comment></comment></comment><comment><USER28> As long people uses faxes as printers with an attached email address I don't see them disappear anytime soon.

<comment><USER29> Faxing is to email as VoIP is to the PSTN

Until we can get over the threshold of assuming nobody has a fax machine anymore, faxing is here to stay. Once we push that threshold, the remaining users can be forced out (by not having fax as an option, and faxing will fizzle away over time).

Think of it like supporting IE6. A lot of the holdouts for IE6 were large health care organizations and VA/gov centers... the same exact places still holding onto fax.

<comment><USER30> Faxing is a headache for a lot of people. The problem is that the industries that use fax are in a position to force it on others. Certain healthcare departments, some mortgage related stuff, financial garbage, etc. Places where if you HAVE to do business with that entity for some reason, and the say "fax this to us", you're stuck hunting down a fax machine or using an online service. They thus have no reason to change.

<comment><USER20> > Places where if you HAVE to do business with that entity for some reason, > and the say "fax this to us", you're stuck hunting down a fax machine

I just head to the local copy center when I'm forced to send (or receive) a fax, so for me "fax this to us" means "pay an extra $2 for no good reason".

</comment></comment></comment></comment><comment><USER31> I'm guessing part of the appeal is the simplicity. At its purest, faxing is point-to-point, and unlike email doesn't need any servers/other infra (read: potential points of failure) beyond the telephone system itself.

<comment><USER23> Are phone systems more resilient than internet and email protocols? A phone number relies on a single vendor, whereas internet and email can be accessed through a variety of vendors, and MX records can be changed by the user. If the power goes out, I can still use email via wireless providers, or I can go to a different location and use it.

<comment><USER32> > Are phone systems more resilient than internet and email protocols?

When was it the last time a land-line had an interruption of service. I can't even recall it happening to me.

</comment></comment></comment><comment><USER33> Talking about FAX machines, Hack.lu 2018: What The Fax?! - Eyal Itkin and Yaniv Balmas

[https://www.youtube.com/watch?v=aahHbliwfm0](https://www.youtube.com/watch?v=aahHbliwfm0)

</comment><comment><USER34> This hits close to home.

Anybody has thought of sending faxes with QR codes? Receiving systems that have the ability can get the fax's information quickly via QR code, instead of having to OCR the fax. If the system doesn't support the capability, it's just ignored (by the fax machine and humans).

Might be helpful.

<comment><USER32> Already exists. Not a silver bullet. Each place has to transform the incoming fax format into their own emr format.

</comment></comment><comment><USER35> People think it's secure, but it's worse now than ever since many faxes are now emailed as PDFs

</comment><comment><USER36> You need to look at countries like Estonia with strong cryptographic signatures for how to effectively move away from faxes (I believe crpytographic signatures are far better than "digital signatures", i.e. a jpg of your handwriting)

</comment><comment><USER37> You read it here first: Faxing is the new Vinyl.

(Seriously: I like how it talked about fax being more secure than email while also talking about computer-based fax services.)

</comment><comment><USER38> It's been so long since I've heard about faxing that reading the headline I thought "Faxing" was some fancy new tech that all the kids are playing with.

</comment><comment><USER39> _> What happened was that competing companies deliberately created incompatible systems. Doctors' offices and hospitals that use different records databases can't communicate with each other digitally — but they can via fax._

Yeah, that's a common failure, which impedes progress. Anti-competitive NIH and lock-in. And indeed, bad players usually fall in line only when they have no choice.

</comment><comment><USER40> Some countries never moved away from the fax: Japan and Israel in particular.

For legal documents that have to be sent in a timely manner and give you a verifiable receipt of delivery, you need to go with a fax rather than email.

Your fax isn't going to disappear without a trace due your email server not being reputable enough or looking like spam, or exceeding your delivery rate.

</comment><comment> grumpy-cowboy Fax machine -> fax machine : secure

And fax machines are easy to use.

Securing document exchange by email is a PITA for 99.9% users. Explain to your mother how to use PGP/GPG to encrypt the email she have to send to financial institutions, government, ... And imagine the government employee receiving the encrypted email. He will probably just delete it. :)

<comment><USER35> Well, completely unencrypted, but depends on what you consider the threat to be.

<comment><USER41> I feel with you. I was shocked to learn that fax is still the default for Doctor 2 Doctor communication here in Germany.

Turns out the reason is rather simple: the law explicitly requires phone lines to be confidential in terms of eavesdropping. (You need a warrant, else it's illegal). While all other means of transport are not covered by this. So everyone who wants to legally cover his ass, would rather use the legally privileged, but technically wide open phone line over technically sound solutions missing such a legal framework.

<comment><USER20> > the law explicitly requires phone lines to be confidential in terms of > eavesdropping

However, POTS these days commonly uses VoIP as an intermediary. I don't know if the law covers the same phone call during its passage through a VoIP segment.

<comment><USER41> As I understand the law here in Germany, it's technology independent. So VoIP falls under the same rules, as long as you sell/market phone and fax services. How this relates to something like Skype I have no idea.

</comment></comment></comment></comment></comment><comment><USER42> One of my former clients was eFax, which parlayed the money it earned from eFax subscriptions into becoming a publicly-traded internet holding company behemoth. They own dozens of second-tier internet media and e-telecommunications sites.

There's a lot of money in fax.

</comment><comment><USER43> If you have a number that can receive fax, then getting stuff into a format that you can use becomes the sender's problem.

</comment><comment><USER44> IT's a 0-trust system!

</comment><comment><USER45> faxzero.com is awesome. Free for the sender.</comment>


Income Distribution Within U.S. Religious Groups - <AUTHOR> http://pewforum.org/Income-Distribution-Within-US-Religious-Groups.aspx# <comment><USER2> Even atheism isn't a religion, I'd like to see what the distribution is for individuals that would classify themselves as atheists. I see there's an unaffiliated category. According to the site;

This group (unaffiliated) includes atheists, agnostics and people who describe their religion as "nothing in particular." This latter group can be further divided into "secular unaffiliated" and "religious unaffiliated."

<comment><AUTHOR> I agree... On a somewhat related note, Atheists have better grammar: [http://blog.okcupid.com/index.php/the-best-questions-for- fir...](http://blog.okcupid.com/index.php/the-best-questions-for-first-dates/) (search "religion")

<comment><USER3> > Athiests have better grammar

Yup. And some of us can even spell "atheists". :-)

(I think it's worth distinguishing between "atheists have better grammar" and "people who identify themselves as atheist on dating sites use better grammar there". It may well be that both are true, but from the second to the first is quite a leap.)

<comment><AUTHOR> wow, i'm embarrassed so I corrected myself... used to be a spelling champ!

I think you're probably right that there is a difference between all atheists and those who identify themselves as such on a dating site, but I can't put my finger on why that would be. Is there also a difference between all hindus/muslims/etc and those identifying themselves as such?

<comment><USER3> 1\. "Atheists" and "Atheists using OK Cupid" might be quite different populations. For instance, the latter might be younger, geekier, richer, poorer, etc.

2\. "Atheists using OK Cupid" and "Atheists identifying themselves as such on OK Cupid" might be different. (I haven't used OKC, so I don't actually know, but surely you aren't _required_ to state your (ir)religious position?) For instance, the latter might be more likely to regard atheism as important, which might (e.g.) correlate with having arrived at atheism by careful consideration of the available evidence and arguments, which might correlate with better grammar or at least more care over grammar. (Yeah, that's a lot of mights.)

3\. Being better at grammar is not the same thing as using more accurate grammar in the things you write at OK Cupid. (You might be extra-careful or deliberately inaccurate; it would depend on what you expect your "audience" to like.) Nor is it the same as caring whether other people's bad grammar annoys you.

And yes, all these things would apply to any group. For instance, I understand that there are Hindu-specific dating sites; so maybe Hindus on OK Cupid are, I dunno, likely to be less concerned about meeting other Hindus, which might mean that they tend to be more cosmopolitan, which might correlate with being better educated. Or something. Again, lots of mights. But you have to be really careful about extrapolating from this kind of thing to the population at large.

</comment></comment></comment></comment></comment><comment><USER4> I'd like to see this data adjusted for comparative cost of living. I don't think that was done here. E.g. Mormons in UT earning 75k are essentially in the same earning bracket as Hindus in Silicon Valley making 100k+.</comment>


Simple JavaScript Exploit That Nukes Google's Password Alert - <AUTHOR> http://arstechnica.com/security/2015/04/30/behold-the-drop-dead-simply-exploit-that-nukes-googles-password-alert/

<comment><USER2> Couldn't Google just create a random element id? Instead of `warning_banner` do something like `warning_banner_x3vh2QiPm1`

<comment><USER3> Anything that adds to the DOM or uses the rebindable Javascript APIs is going to be detectable, anything more on Google's part is just security through obfuscation.</comment></comment>


Ask HN: How do you validate a startup idea? - <AUTHOR> As a software eng, I come up with software product ideas on a regular basis, but I haven't figured out a good way to quickly validate that they serve an actual need. (I don't want to build something that no one uses.)<p>I'm wondering if anyone has had a good way of "validating before building" that they care to share? <comment><USER2> [https://www.amazon.com/Mom-Test-customers-business- everyone/...](https://www.amazon.com/Mom-Test-customers-business- everyone/dp/1492180742/)

[https://www.amazon.com/Four-Steps-Epiphany-Successful- Strate...](https://www.amazon.com/Four-Steps-Epiphany-Successful- Strategies/dp/1119690358)</comment>


Why did Japan surrender? - <AUTHOR> http://www.boston.com/bostonglobe/ideas/articles/2011/08/07/why_did_japan_surrender/?page=full <comment><USER2> Previous submissions:

<http://news.ycombinator.com/item?id=2856042> <\- Many comments

<http://news.ycombinator.com/item?id=2858087>

<comment><AUTHOR> Thanks!

Appears too late for me to delete my submission.</comment></comment>


Ask HN: What is your Travel check list? - <AUTHOR> <comment><USER2> What will you do with the responses (if any)?</comment>


Ask HN: Review my Startup MovieSaints - <AUTHOR> https://www.moviesaints.com
MovieSaints is a website that curates unique independent films from around the world and makes them available to rent-on-demand. If you like a film, you can directly support the film's creators, and if you don't, you can get a refund.
We built MovieSaints to serve the needs of filmmakers. We want to ensure that a significant portion of the revenue earned on each film goes towards supporting the film's creators. We'll release a small number of films, for now just 1-2 films at a time, so that we can focus individually on each film. We'll also collaborate with the filmmaking teams to promote every film that releases on MovieSaints. We are already building tools into MovieSaints that enable audience building and audience engagement; and we'll continue to improve them further.
We've been working on MovieSaints for a while (over 2 years) and we just launched about a week back. Please let us know what you think. <comment><USER2> As a former filmmaker I like what you have done. It seems as if you are effectively the distributor? The site looks nice and the movies sound interesting. The refund options are a bit confusing. The biggest question I would have would be about awareness. How am I going to learn about the films and is that going to happen when I sit down to watch a movie?

I imagine that many people are like me and sit down to watch something but aren't 100% sure on what they are going to watch so we browse through are Netflix/Amazon queues. I think Roku might have a combined browse/search feature that would help. Build up the Twitter following and reach out to indie filmmaker to see if they could mention you in a tweet. I could see Mark Duplass liking your site and tweeting about it.

Keep up the good work!</comment>


The Startup That Wants to Sell You a Subscription to Miami Beach Tap Water - <AUTHOR> https://slate.com/business/2019/02/woosh-miami-beach-water-fountain-plastic-bottles-why.html <comment><USER2> It's not fair to compare this to a water fountain, which is unfiltered and fairly disgusting. I lived in South Florida for 17 years and I don't think many people want to drink the (tap) water there. This is probably a good idea.</comment>