The Two Cultures of Computing - <AUTHOR> http://pgbovine.net/two-cultures-of-computing.htm <comment><USER2> This misses a very important distinction: low-level against high-level. CLIs, especially *NIX shells, usually offer low-level operations and let you combine them as you please. GUIs, on the other hand, offer higher-level operations, which is to say, prearranged and monolithic combination of low-level features to perform the most common use cases of the software. Thus, the flexibility and the possibilities of the low-level approach are lost, although it definitely results in an easier to use system, since the operations are far closer to the "semantic" level at which a user operates most of the times.

This division is exactly what you would expect when there is a division between newbies and advanced users (which the author labels as "programmers", but they're not the same thing), which is exactly what's happening. The beginners are happy with a graphical and discoverable UI that helps them learn to use the tool, while the advanced users automatically resort to the CLI because they know that they probably need some tweaking that is probably not covered by the high-level preset functions from the GUI, and/or requires visiting different dialog boxes and it's far slower to use.

The case about Word versus LaTeX is a perfect example: after I learned to use LaTeX properly, I no longer use Word.

All this is very related to the way Linux evolved, initially only for advanced users and slowly gaining GUI functionality to make it nicer for average users.</comment>


Have daily deal fatigue? Here's a new approach to local merchant loyalty - <AUTHOR> http://www.readwriteweb.com/archives/TopGuest_apex_gives_you_loyalty_program_points_for_local_merchant_check_ins.php

<comment><USER2> Stopped reading at "Deep discounting is not a sustainable customer retention strategy for the long term,". How can you say this when the most successful retailers in the world use this as their long term competitive strategy?

<comment><AUTHOR> The most successful retailers in the world are able to fund deep discounting on a regular basis by applying pricing pressure on their suppliers. Wal-Mart demands price cuts from suppliers (and gets them) to fund their High-Low pricing strategy. Joes Hardware cannot. Topguest Apex is aimed at creating value for small-medium local merchants, not the "most successful retailers in the world."

</comment></comment><comment><USER3> Their great idea is a standard loyalty program?

No, wait, it's a loyalty program that rewards you for loyalty to any merchant in the program... So, not really loyalty. More like happenstance.

<comment><AUTHOR> No, you are only rewarded at your favorite merchants. Topguest identifies the merchants you frequent most based on your check-ins, and selects your top 3 most visited local merchants and begins giving you bonus points for that loyalty. Not every merchant, and personalized for each user

<comment><USER3> I'm not sure that's any better. If I'm loyal to 5 different companies, 2 of them basically get me nothing, not matter how good they are. The fact that I get nothing, when others reward me, will eventually cast a shadow on them... And it's no fault of their own.</comment></comment></comment>


There exists a classical model of the photon after all - <AUTHOR> https://www.lightbluetouchpaper.org/2015/02/23/maxwell/ <comment><USER2> Scott Aaronson has commented negatively on a previous paper by the same authors [1]. I don't know if similar issues apply to this one:

> _[...] the paper advances the prediction that quantum computation will never > be possible with more than 3 or 4 qubits. [...] I wonder: before uploading > their paper, did the authors check whether their prediction was, y'know,_ > already falsified _? How do they reconcile their proposal with (for example) > the 8-qubit entanglement observed by Haffner et al. with trapped ions [...]_

(Note: that's a critique of the previous paper, not the linked one. Although the linked post mentions quantum computers not working, the linked paper does not touch the subjet.)

1: [http://www.scottaaronson.com/blog/?p=1255](http://www.scottaaronson.com/blog/?p=1255)

</comment><comment><USER3> They claim to have found a classical system that reproduces quantum mechanical effects. But if they manage to extend it to many particles, interacting, they will find that they have just come up with another interpretation of QM which is experimentally indistinguishable from the rest. And it wouldn't even be the first one. (Bohm's hidden variable theory has precedence.)

Furthermore the "incompressible fluid" they postulate sounds like it enables non-local behavior (which it has to to match current versions of the Bell test) so it is unable to help resolve the issue of reconciling GM with QM.

So this does rather less than they claim. Assuming that their claimed result is correct.

<comment><USER4> What's the current status of Bohm's hidden variable theory? Does it stand up in light of the Bell test (I was under the impression that the Bell results suggest an arbitrary number of hidden variables would be necessary)?

<comment><USER3> I don't know and don't keep track. I lost interest after realizing that it can be made compatible with any possible observation.

I'm personally a fan of the Everett interpretation. Also called the many worlds. Which is what you get if you assume that quantum mechanics applies to the observer. Then the act of observation throws the observer into a superposition of possible states where different things were observed. And those states cannot meaningfully interact later for thermodynamic reasons.

Unless someone comes up with good reason to believe that quantum mechanics does not describe humans, I see no reason not to accept it. And if quantum mechanics is replaced by something different, to the extent that quantum mechanics is an accurate description of us, that interpretation remains correct.

<comment><USER5> There's a problem with with many-worlds that I haven't seen convincingly refuted: when collapsing superposition of two states you might need to (or rather almost always) need the ratio of worlds with outcome A to worlds with outcome B to be irrational. So unless you create a continuum of new worlds each time it won't work.

<comment><USER6> The wavefunction is a superposition of n independent wavefunctions at different amplitudes, like you can divide a piano's sound into a bunch of pure sine waves. "From the inside" each feels like a self-contained world (in a physically rigorous sense), but the ratio between their amplitudes and phases can be an arbitrary complex number - just as even if you're only playing a C and a G, the ratio of their amplitudes can be anything.

</comment></comment></comment></comment></comment><comment><USER7> "Updating this with modern knowledge of quantised magnetic flux, we show that if you model a flux tube as a phase vortex in an inviscid compressible fluid, then wavepackets sent down this vortex obey Maxwell's equations to first order; that they can have linear or circular polarisation; and that the correlation measured between the polarisation of two cogenerated wavepackets is exactly the same as is predicted by quantum mechanics and measured in the Bell tests."

How long would I have to study physics to be able to understand everything in this sentence?

<comment><USER8> > How long would I have to study physics to be able to understand everything > in this sentence?

Just start reading _David J. Griffiths: Introduction to Electrodynamics_. A very well written textbook. The problem might be, if you don't know vector calculus, you might not be able to read this book, so you need to learn some vector calculus, too.

Then start reading _Introduction to Quantum Mechanics_ by Griffiths, too. Best introductory QM book that I know of. If you managed to read Electrodynamics, you should by now know enough calculus for this book, too. But you also need to know about complex numbers here.

The _" inviscid compressible fluid"_ is about fluid mechanics. I don't know any splendid textbook on that.

<comment><USER9> I haven't read it, and it may be too advanced for this purpose, but Landau's books are generally held in extremely high regard and volume six of his Course of Theoretical Physics is on fluid mechanics.

For what it's worth, volumes two and three cover electrodynamics and quantum mechanics, respectively.

<comment><USER8> > Landau's books

Landau's presentation is extremely condensed. Griffiths is much more friendly towards the reader.

I would compare Landau to Knuth's The Art of Computer Programming. Some people do read them, but the rest of us just hold them in extremely high regard :-).

<comment><USER10> The Landau Lifshitz series is absolutely amazing. It works so well with my brain, entirely concise with just enough textual clarification as needed.

Eg, volume 1 is classical mechanics. By page 3 or so you e already derived the Lagrangian equations of motion.

</comment></comment></comment></comment></comment><comment><USER11> "our paper shows that the main empirical argument against classical models of reality is unsound.". That's quite an affirmation!

</comment><comment><USER12> I hope this is as awesome as it sounds. It sums up everything I've been thinking about quantum physics, from "someone should look closer at Couders work" to "spooky action at a distance is BS" to "Quantum computers will never work - see spooky action".

<comment><USER13> It's quite exciting to see these sorts of papers.

What fascinates me is that we have achieved so much in the "quantum age" of the past century using the models derived from a quantum mechanical approach to physics. That the bedrock [or lack of one] of that could be removed and provide a better, more consistent, approach seems so counter-intuitive. But then one recalls how long the Newtonian or Aristotelian approaches [or any other such system] stood.

Also would this be a return to universal models with an aether: wonder how Michelson-Morley works with "flux tubes"?

<comment><USER6> The wheel of science turns, but it doesn't turn backward. Einstein refined Newton, but in no sense represented a return to Aristotle. Perhaps more to the point, the Bell Inequalities are true and have been experimentally verified; reality provably contains either nondeterminism or nonlocality. If you find the model with instantaneous communication along these "flux tubes" easier to work with then by all means work with it, but it's just another interpretation; most of us find the nondeterministic but local model is ultimately easier to reason about.

</comment></comment></comment><comment><USER9> When models like this are proposed, a lot of people are interested because of the philosophical implications of a classical theory of quantum phenomena.

The question I have, though, is this: does this model actually help model phenomena that we _can 't_ already model? Quantum gravity is the big spectacular example, but there are many others.

For instance, the Standard Model is very successful at predicting the anomalous magnetic moment of the electron. But it is not successful at predicting the same quantity for the muon. There are many other issues with the Standard Model that aren't so high-flung as quantum gravity.

Are classical models like these, if they can be shown to incorporate multiple particles interacting simultaneously, capable of going beyond the Standard Model or merely replicating it?

</comment><comment><USER14> I don't know any physics, but it seems like a bit of a warning sign that these new discoveries in fundamental physics are annouced on... a computer security blog?

</comment><comment><USER15> > Updating this with modern knowledge of quantised magnetic flux

It sounds like they are using quantum mechanics to explain quantum mechanics.

</comment><comment><USER16> "if the fundamental particles are just quasiparticles in a superfluid quantum vacuum"

well obviously.

</comment><comment><USER17> This paper has a variety of issues, the most glaring of which is that their "explanation" of the experimental violation of Bell's inequalities (specifically the CHSH form that has been realized in many experiments on polarization) is dependent on a _static_ setup of precisely the kind that Aspect's experiments were intended to avoid.

Aspect's work is one of the most beautiful pieces of careful and precise experimental testing of an idea in the past half-century, and while it has been attacked from many perspectives it is still a very robust argument for the non-locality of reality. One of the important things about it is that the polarization direction was switched in a quasi-random way after the photons had left the source. Variations on this trick have been performed since, and they all agree with the predictions of quantum theory.

The authors say in this paper "The CHSH assumption is not true in Faraday's model. Instead there is prior communication of orientation along phase vortices such as(4), communication which the CHSH calculation excludes by its explicit assumption."

In experiments like Aspects, prior communication is ruled out because the experimental setup is varied in one arm of the apparatus outside forward light cone of the other photon. Each photon gets detected before the other one could possibly know (based on signalling at the speed of light) what polarizer orientation it should be lined up with.

So this is an interesting bit of work that might be useful in creating photonic quasi-particles in magnetic fluids that would allow for study of photon properties that might be difficult to get an experimental handle on otherwise, but the claim that they have a classical model that violates Bell's inequalities in a way that is relevant to the actual experimental work done in this area is considerably overblown.

<comment><USER18> I'm not a physicist, but I've always wondered about Caroline Thompson's work, like:

"Chaotic Ball" model, local realism and the Bell test loopholes

[http://arxiv.org/abs/quant-ph/0210150](http://arxiv.org/abs/quant-ph/0210150)

...any thoughts?

<comment><USER17> The scrutiny that Bell test experiments get from loophole people is always much appreciated, but the problem with Aspect's results in particular is that lovely parenthetical remark that appears in several of his figures, to the tune of "The dotted line is not a fit to the data, but the quantum mechanical prediction for this result."

While it is easy to imagine selective-detection effects that mess up the results enough to invalidate the test at the level of the inequality, it is very, very difficult to maintain all the physics required for precise, detailed agreement between theory and experiment of the kind that Aspect and others have shown. Here is an example of a "local realistic model" that reproduces the quantum mechanical results for in-time coincidences, but completely messes up any number of auxiliary measurements: [http://www.tjradcliffe.com/?p=590](http://www.tjradcliffe.com/?p=590)

So while I'd love to see a modern version of Aspect's work using state-of-the- art entangled photon sources and the like, the likely reason it hasn't been done is that the odds of it revealing anything new and different are trivially small (but not zero, of course!)</comment></comment></comment>


Mark Zuckerberg has a podcast now - <AUTHOR> https://www.theverge.com/2019/4/24/18514392/mark-zuckerberg-podcast-facebook-spotify-new-years-resolution <comment><USER2> > The discussion initially took place on April 1 and was posted on > Zuckerberg's Facebook page, but has been reuploaded as a podcast today.

This has to be some crazy late april fools joke.

</comment><comment><USER3> Just for shits and giggles, I joined Spotify just to give this a listen. I just listened to about 10 minutes of episode 2.

Reaction? Neutral. If I didn't know it was Zuckerberg, I'd probably say "that was moderately interesting, but not earth-shaking." He's talking about the future of journalism with Mathias Döpfner in this episode. So far what's being said sounds reasonable, IF you look at it in isolation.

But, you can't really ignore that this is Zuckerberg, and the history of Facebook and their relationship with privacy issues, fake news, etc. It's hard to to hear everything he says through a very cynical filter, even when his literal words sound reasonable.

Net-net? It's not something I'm going to listen to on a regular basis, but I might dip in for a listen here and there if I'm bored.

</comment><comment><USER4> This is a good idea. He can control the narrative and get exposure to public speaking.

<comment><USER5> I mean, he's been in front of congress for hours and hours, how much more public speaking experience does one need - its what he and Sheryl choose to say or not say and do that gets them in trouble.

<comment><USER6> >how much more public speaking experience does one need

Until he stops being a lifeless robot that scares normies?

<comment><USER7> He is just waiting for advances in AI, so that he can get his software upgraded.</comment></comment></comment></comment>


Show HN: Create custom lists in Slack for users to add/search info like Skills - <AUTHOR> https://www.communiti.net <comment><AUTHOR> Hi, Communiti founder here.

I built the first version to better browse and discover people (eg: who knows digital marketing or can design my new web site) in my co-working space then it turned out that different kinds of teams had a similar problem. So I built this new version where you can:

\- Create custom lists such as "Skills", "Goals", "Jobs", "Events" etc \- Build the list cards with fields like text fields, phone numbers, select menus \- Edit permissions to make the list read only where only admins can add new cards.

Building an app in Slack is tricky since the UX is very limited. But I think there's a lot of potential in building the app where communities have already formed.

Looking forward to your questions and feedback.</comment>


Uber Acquires Mapping Startup DeCarta - <AUTHOR> http://mashable.com/2015/03/03/uber-acquires-mapping-decarta/

<comment><USER2> Why UBER is not using Google Maps and instead chose Apple Maps? I heard from many drivers they hate UBER for their maps and they's rather prefer Lyft for that reason. Im wondering why instead of using Google Maps they had to buy a company.</comment>


New PDFex attack can exfiltrate data from encrypted PDF files - <AUTHOR> https://www.zdnet.com/article/new-pdfex-attack-can-exfiltrate-data-from-encrypted-pdf-files/ <comment><USER2> Good riddance, the only thing I've ever seen PDF encryption used for is DRM. In my mind, anything that breaks DRM is a bonus.

<comment><USER3> I know of one organization that uses it to enable early release of a time- embargoed document to prevent server overload when it's released. Instead, everyone downloads the document in advance and they release the password at the release time.

<comment><USER4> They should use a cdn

<comment><USER5> The first method sounds simpler and cheaper. You're over engineering.

<comment><USER6> I hope you're joking but it is not over-engineering if you're the kind of organization important enough to have the need to release time-embargoed documents on regular basis.

Besides, he didn't suggest they bootstrap their own CDN. It could be as simple as creating a Cloudflare account.

<comment><USER5> Not joking. If the years have taught me anything that would be pragmatism. You want to introduce a new vendor and cost centre for what? Send your docs out early followed by a password if that's secure 'enough' for your use case.

Any further guesses as to how "important" the organisation is is pointless in the absence of understanding the actual use case.

</comment></comment></comment></comment></comment></comment><comment><USER7> FIRST Robotics Competition used to distribute the rulebook for the season in an encrypted PDF. The password and unencrypted copies were released after the live kickoff stream. Ten years ago we'd be busting ass trying to crack the PDF but techniques weren't great then.

<comment><USER8> FRC was the thing I immediately thought about when I saw this (they still do PDF encryption), but the techniques here don't really apply.

I'm pretty sure that you _could_ just try to brute force it, as the passwords as usually dictionary-based with substitutions (e.g. R0bot$InSp&ce).

Edit: After taking a much more in-depth look at it, all of the past game manuals' passwords are too complex to crack in a reasonable time (even with a dictionary). With a top 1000 word list dictionary with substitutions of 3-letter words like the above there are (conservatively) 1x10^20 combinations. You can't crack the PDF user key directly either, because recent game manuals use 256-bit AES keys.

</comment></comment><comment><USER9> I've always operated under the assumption that nothing in a PDF is secure, and that the only safe way to redact something from one is to print it and rescan it. Convince me otherwise?

<comment><USER10> I believe that if you edit the pdf so that the thing you are redacting is no longer in the pdf file, it is safely redacted. Printing a pdf and rescanning a pdf breaks text selection and screen readers, and basically makes it into a fancy PNG.

<comment> munk-a There is a bunch of data in PDFs that may have previously been visible but is no longer. I know that there are also fun meta-data attributes embedded on a per-page and per document basis - and also that PDFs can be portfolio documents where such a document will often contain no longer referenced PDFs that became irrelevant to the PDF. The file format is pretty crazy.

</comment></comment></comment><comment><USER11> Who would have imagined we'd have "branded" exploits in the future?

<comment><USER12> Vulnerabilities have been branded for some time now.

[https://github.com/hannob/vulns](https://github.com/hannob/vulns)

<comment><USER11> I still consider 2011 "the future"

</comment></comment></comment><comment><USER13> from the list, looks like preview.app/skim is the least affected... i wonder if that's because it's just lacking dynamic features of the others, or it's just coded better, or it's because macOS security defaults...

</comment><comment><USER14> A company I was a contractor for would send payment invoices with a password. The password was the last four digits of the ID number specific to the contractor. Our CRM we all used had every contractors ID number in their profile publicly available. When I asked what the point was I was told upper management required a password and this was the easiest.

</comment><comment><USER15> At the same time no open source PDF reader can handle all cases of embedded animation and PDF forms[1].

[1] [https://gitlab.freedesktop.org/poppler/poppler/issues?label_...](https://gitlab.freedesktop.org/poppler/poppler/issues?label_name%5B%5D=forms)

</comment><comment><USER16> Ehm, what is an exfiltration channel? I know what a sidechannel is, but I haven't heard of exfiltration channel.

<comment><USER17> Just a channel that is used for exfiltration. It's not a specific sort of thing.

</comment></comment><comment><USER18> PSPDFKit CTO here. TL;DR on the PDFex vulnerability: The file format can carry both encrypted and unencrypted parts, which allows "injecting" malicious payload (embedded JavaScript, PDF forms that submit to remote URLs, etc) into an encrypted PDF that then can be used to exfiltrate the encrypted PDF parts, after the user decrypted the file (= entered the password).

We're currently investigating the vulnerability in detail and plan to ship an update ASAP that will allow our customers to mitigate it.

I'll be monitoring this thread to answer any questions.

</comment><comment><USER19> spies! everywhere! honestly, as someone who cares about typography and culture in print, the constant and relentless "spies everywhere" statements from the security community look more and more like a sickness, not a defense. PDF was designed for print integrity, with images and typesetting, and I am grateful for it everyday. Please calm your alarmist content, and yes, security is necessary.. a good servant and a bad master, I would say.

<comment><USER20> Then they added JavaScript and made it Turing complete, completely negating the effort to eliminate the general computability of Postscript.

<comment><USER17> Not to mention the capability to execute any arbitrary executable.

</comment></comment></comment><comment><USER21> I just remove the password with a command line tool without needing to know the password.

<comment><USER22> This tool likely only works for "passwordless" PDF encryption/protection, which restricts some aspect of using the document (printing, exporting single pages etc).

This is the domain of DRM/whitebox cryptography, and leaving aside all discussions about the feasibility of such efforts, PDF's implementation of it can safely be assumed to be broken – the master key used can be found in several open source PDF tools' source code and on Stack Overflow, among other places.

I assume the attacks presented in the paper are about the other type of PDF encryption, which requires a password to even display the protected content, which could definitely be done in a way not vulnerable to the attacks described.

<comment><USER23> The "master key" is just the empty password which means that the effective key is all padding. This is documented in section 126.96.36.199 of ISO 32000-1:2008 (available for free from Adobe's website). There was never any real attempt to keep it secret.</comment></comment></comment>


Show HN: Entanglement and quantum integral transforms on the deterministic qubit - <AUTHOR> https://github.com/howonlee/deterministic-qubit <comment><USER2> Is this going to break the internet or what?</comment>


Ask HN: What is the term for faking automation by using human labor? - <AUTHOR> Like early in a startup you fake automation by really using human power.  Its supposed to look automated but there is a human behind the scenes doing it.  I swear there is a term for this that I can't think of.  Best I can think of is meatgearing. <comment><USER2> Mechanical Turk: [https://en.m.wikipedia.org/wiki/Mechanical_Turk](https://en.m.wikipedia.org/wiki/Mechanical_Turk)

<comment><AUTHOR> I mean like, you have a 3 person startup and one of you is running around doing work that your customers assume must be already automated.

<comment><USER3> "doing thinks that don't scale"?

<comment><USER4> Yes, doing things that don't scale or mechanical turking. I couldn't imagine what else you mean.

</comment></comment></comment></comment><comment><USER5> I'm very certain the phrase you're looking for is "wizard of oz". That's what Eric Ries called these types of MVPs in The Lean Startup.

<comment><USER5> Here's a link: [https://www.quora.com/What-are-the-pros-and-cons-of- Wizard-o...](https://www.quora.com/What-are-the-pros-and-cons-of-Wizard-of-Oz- testing)

'Definition of Wizard of Oz testing in Eric Ries' book "The Lean Startup": "where customers believe they are interacting with the actual product, but behind the scenes human beings are doing the work"'

</comment></comment><comment><USER6> I think a lot of small companies does this in the beginning if the task is hard to implement and you have other critical tasks to finish first. I never knew it had a term, fun to know "Mechanical Turk"

"Manual automation" could be another term :)

</comment><comment><USER7> Pretty sure one term for it is "concierge MVP" where you make it look like a legit automated service, but in-fact behind the scenes it's all human labour.

</comment><comment><USER8> There are two similar but different methods.

Concierge Test is used to understand the mechanics, not user demand. Wizard of Oz (aka Mechanical Turk) is used to evaluate hypotheses.

The more detail in the post by Tristan Kromer below.

[https://grasshopperherder.com/concierge-vs-wizard-of-oz- test...](https://grasshopperherder.com/concierge-vs-wizard-of-oz-test/)

</comment><comment><USER9> In addition to mechanical turk, there's also the phrase "Fake it till you make it" which is somewhat appropriate (the connotation is more like "pretend to be a success").

</comment><comment><USER10> Work?

<comment><AUTHOR> Ha! I tried editing my text to be clearer what I'm referring to.

</comment></comment><comment><USER11> Unicorn.</comment>


Nintendo introduces Wii U as a social-focused console - <AUTHOR> http://www.geek.com/articles/games/nintendo-introduces-wii-u-as-a-social-focused-console-2012064/ <comment><USER2> I think Nintendo will be ahead of the curve in the next console gen again. Nintendo chose to make their games more party and social oriented with the Wii and it led all consoles in sales until Microsoft came out with the Kinect. A social-focused console could become another hit in the era of Facebook.</comment>


Man Kicked Off Flight After Tweeting About 'Rude' Gate Agent - <AUTHOR> http://mashable.com/2014/07/23/southwest-flight-tweet/ <comment><USER2> Some comments: [https://news.ycombinator.com/item?id=8076547](https://news.ycombinator.com/item?id=8076547)

Alternate submission: [https://news.ycombinator.com/item?id=8076495](https://news.ycombinator.com/item?id=8076495)</comment>


These states let police take your stuff even if you haven't committed a crime - <AUTHOR> http://www.vox.com/2015/7/8/8909133/civil-forfeiture-states-map <comment><USER2> For those of you whose privacy badger configurations block the infographic and you don't feel like accommodating Vox on the matter, here's the map:

[http://i.imgur.com/kQc13Fy.png](http://i.imgur.com/kQc13Fy.png)

</comment><comment><USER3> yah. Don't carry much cash or jewelry in your car on road trips. Some jurisdictions' police treat the presence of cash / jewelry as evidence of criminal activity. They grab it to defray their budgets. They don't have to obtain a conviction to keep it, and they don't have to give it back.

<comment><USER4> Why are so many laws so stupid and unethical, and yet still being used? How have we let it get to this point?

<comment><USER5> The Founders forgot to grant voters a check-and-balance role on the 3 branches of government by allowing them to _unvote_ laws that are passed by their duly elected representatives and otherwise tell the various executives and judges across the country that they are doing things wrong. They thought it was enough to let voters focus on securing representatives. They were wrong, and we continue to see the effects of just how well things work for the People when we only get asked to be involved every couple of years.

<comment><USER6> Many states have voter initiatives, they don't succeed in the way you hypothesize, sadly.

Looks at CA. The voters are _even worse_ than the legislators.

<comment><USER7> Here in Michigan we have as part of our state constitution the ability to enact and repeal laws through voter referendum.

[http://legislature.mi.gov/doc.aspx?mcl-Article- II-9](http://legislature.mi.gov/doc.aspx?mcl-Article-II-9)

However, our legislature has a fun little loophole for when they are going to pass a law they know the public will try to repeal through a voter referendum. They add a token appropriation to the bill.

[http://www.freep.com/story/opinion/contributors/2016/01/07/m...](http://www.freep.com/story/opinion/contributors/2016/01/07/michigan- voters-disenfranchisement-local-millages/78404712/)

Some examples from that article:

"From 2011 through 2014, unnecessary appropriations shielded a number of controversial bills from voter referendum. That includes right-to-work, the repeal of item pricing, the implementation of emergency managers and myriad anti-union laws."

"This past year, the Senate added a $75,000 appropriation to a bill that would repeal prevailing wage in our state, a practice that guarantees competitive wages to people working on public projects. The pretext? That appropriation was supposedly necessary to "disseminate information" to the public about the new law. The reality? Republicans knew voters would oppose the law."

<comment><USER5> Not even surprised. There needs to be a way for citizens to take their representatives to court for depriving them of their rights.

</comment></comment></comment></comment></comment></comment><comment><USER8> How is civil forfeiture not a 5th amendment violation?

"... nor be deprived of life, liberty, or property, without due process of law; nor shall private property be taken for public use, without just compensation."

<comment><USER9> The TLDR is that they are essentially "arresting" the property because it was used in a crime, regardless of who did the crime. The fact that it belonged to someone, often times the person who committed the crime, is sort of irrelevant in the government's opinion.

<comment><USER5> That's a bit generous of a TL;DR, don't you think?

The reason civil asset forfeiture is controversial is that property can be seized even _when a crime has not actually occurred but is merely alleged, and the owner of the property has not been proven guilty of a crime_.

There are dirty cops who have taken people's cash on the basis of trumped up charges. This isn't the first time this has been reported on in the US.

<comment><USER6> "Charges" is rather generous, isn't it? They don't even charge the property before seizing it.

</comment></comment></comment></comment><comment><USER10> The article says this:

> But local and state cops in these states can still use federal law for civil > forfeiture.

But does not mention this:

> Attorney General Eric H. Holder Jr. on Friday barred local and state police > from using federal law to seize cash, cars and other property without > warrants or criminal charges.

[https://www.washingtonpost.com/investigations/holder-ends- se...](https://www.washingtonpost.com/investigations/holder-ends-seized-asset- sharing-process-that-split-billions-with-local-state- police/2015/01/16/0e7ca058-99d4-11e4-bcfb-059ec7a93ddc_story.html)

<comment><USER8> The feds have resumed a controversial program that lets cops take stuff and keep it.

[https://www.washingtonpost.com/news/wonk/wp/2016/03/28/the-f...](https://www.washingtonpost.com/news/wonk/wp/2016/03/28/the- feds-have-resumed-a-controversial-program-that-lets-cops-take-stuff-and-keep- it/)

</comment></comment><comment><USER11> Kids, stealing is ok...

</comment><comment><USER12> 8 comments (now 9) 102 points, 3 hours, second page.

Fuck the pro state mods on HN you bury anti government sentiments you worthless shits

<comment><USER9> I also have beefs with the way HN works but I think the easier explanation here is that this isn't especially interesting because it's decades old, it's somewhat political which lots of HN users don't like on HN, and it doesn't really provide anything new. The only reason this article exists is because a state got rid of civil asset forfeiture before a conviction a few days ago. So there should really just be a link to that article, which I believe there was days ago.</comment></comment>


Why Tipping is Wrong - <AUTHOR> http://www.nytimes.com/2015/10/16/opinion/why-tipping-is-wrong.html?smid=tw-nytimes&smtyp=cur&_r=0 <comment><USER2> How do we change this? It's so ingrained in American culture, I'm not sure we can.</comment>


Ask HN: What is the best way to monetize international traffic? - <AUTHOR>

I have a site that is getting a lot of international traffic as well as national.  Specifically from India and Persia.  What are some recommendations for monetizing international web traffic?  I am planning on using Amazon affiliate links for the US, but I am under the impression that these will not work for international traffic. <comment><USER2> India and Persia would be 2 very hard countries to monetize in the traditional ways. Their income levels vary greatly from the US. They still have lower, middle and upper class they are just on different scales. There middle class has around (and this is a general est) $7000 per year salary, which is quite good in India.

So monetizing to any great extent will only work with large scale traffic and small cost of purchase.

What sort of site do you operate?</comment>


Pay more, get less - <AUTHOR> http://michaelochurch.wordpress.com/2010/11/22/pay-more-get-less/

<comment><USER2> >In short, a whole mess of industries are becoming hierarchical, cutthroat, and >hellish, to such a point that very little actual work is getting done, and what is >getting done is of low quality due to the enormity of political bullshit people have >to stomach in these industries.

This is why I support worker cooperatives. I'm a firm believer that we can be more productive and profitable working with rather than against each other.

</comment><comment><USER3> You just have to look at HP to see this. Leo Apothecker got paid a large sum of money to essentially run HP into the ground, and he didn't even have to backstab anyone. He wasn't in HP. Heck, they didn't even meet the guy before hiring him.

<comment><AUTHOR> HP started dying with Fiorina, but that would equally well prove my point, because she was the first one to start looting the company, turning it into a shell of what it used to be.</comment></comment>


College Degree Required by Increasing Number of Companies - <AUTHOR> http://www.nytimes.com/2013/02/20/business/college-degree-required-by-increasing-number-of-companies.html?hp <comment><USER2> Being a web developer often times feels like I live in backwards land.

I went to UTD for 1.5 semesters. I ended up with $2,000 in student loans (paid off!). I make a stupid amount of money, work from home in my pajamas, and have great benefits. I also do contract work on the side that pushes my income even higher. To top it all off, I love what I do and can't imagine myself doing anything else.

Compare that with friends from high school that went to state college for 4 years, have $50,000 in student loan debt and ended up getting a job that pays less than $50k, with long hours and uncertain stability.

Thankfully not having a college degree has not affected me in a negative way.

<comment><USER3> The degrees are important when it's difficult to demonstrate skill. When you can't put together a portfolio of work, you need external signals, and pedigree is a commonly accepted signal (to a great extent, due to the fact that those with a strong pedigree are usually the ones hiring and they promulgate that type of thinking)

Web development is one area where its possible to construct a portfolio and have others evaluate your work, which makes the degree a less relevant part of the evaluation process.

<comment><USER4> With sites like github this is true for any tech job. Think how much code you could write and put on github if you didn't go to college and worked solely on you own projects for three years.

This is true for any field where you are required to create things (art, design, etc.).

It's harder for subjects like history, but if you put your mind to it you could do a lot of your own research in a particular area over three years and write your own book, for example.

<comment><USER5> > With sites like github this is true for any tech job.

Not any tech job. In some specialties there's still a lot to be said for formal education, and I wouldn't anticipate it being easy to land a job doing something like NLP without at least a Bachelor's degree any time soon.

For stuff like Web development where it's mostly about knowing your tools rather than understanding theory, though, yes definitely. Even if we're going to assume some formal training will be expected, I still think most folks in the tech space are poorly served by the prejudice for 4-year degrees. An associate's degree or certificate would be far less expensive and onerous. I suspect it would also be able to do a better job of preparing folks for their careers, by virtue of being freer to focus on practical skills without also having to serve the educational needs of students who are bound for postgraduate programs.

</comment></comment></comment></comment><comment><USER6> Did this catch the attention of anyone else?

"I am over $100,000 in student loan debt right now," said Megan Parker, who earns $37,000 as the firm's receptionist. She graduated from the Art Institute of Atlanta in 2011 with a degree in fashion and retail management, and spent months waiting on "bridezillas" at a couture boutique, among other stores, while churning out office-job applications.

\-----

Something is very, very wrong with the student loan program in the USA.

<comment><USER7> Something is wrong with people that that they choose to go to schools that cost $100,000 to get degrees in fashion and/or retail management.

<comment><USER8> Something is really wrong with a regime that _lends_ an 18 year old $100,000 for an art degree. This is only possible because the lender is guaranteed paybacks no matter what (because the borrower cannot default).

If we let borrowers default on loans under certain criteria (say, their annual income was below a certain threshold), then lenders would have to actually vet the students degrees --- and then we might have a sane system where you're denied a student loan if you're going to major in underwater basket weaving, but approved if you major in engineering.

<comment><USER9> But can you imagine this world? Where you are sending your transcripts to the bank, proving to them that not only will you finish college, but be able to get a job afterwards.

And every month in college having to send your grades to them so they can be sure you're still a good investment.

It makes sense to me but... can you imagine the feelings that would be hurt by this?

<comment><USER10> Maybe feelings need to be hurt...A lot of people expect things to just be handed to them these days, especially with the "everybody is a winner" culture that is pushed in the elementary schools currently.

</comment></comment></comment></comment></comment><comment><USER3> The article misses a very important point: in the economy of 2013 in the US (outside of silicon valley), labor supply far outstrips demand. The employers can afford to be picky, and there's some truth to the idea that the college student will work harder at the lower level jobs because they are saddled with debt (and are less likely to have flexibility).

Ironically, there is a similar practice in finance where bosses and companies help their top employees live beyond their means so that they will be "forced" to continue working.

</comment><comment><USER11> Some of the best engineers I've ever worked with had no college degree. Give me someone passionate, dedicated, honest working, smart and fun to be around, degree or no degree, that person is going to be an assest to any company.

<comment><USER12> I agree with the sentiment, but I think we're unique. If you're a skilled developer, or a web designer, you can prove it with a body of work (open source or personal projects). Not all jobs have that.

</comment></comment><comment><USER13> Requiring a degree is a way to filter resumes.

If you get 200 applications to a position and requiring a degree allows you to narrow that down to 30, why not?

<comment><USER14> I believe we are soon moving to where this excuse for carefully considering candidates will no longer hold. More people with college degrees will make that significantly higher.

Also, 15%? Is that accurate, or are you just throwing numbers out there cos you think 85% of job applicants really do not have college degrees?

<comment><USER15> What makes you think that, as college degrees become more common, employers will "carefully consider" candidates instead? They are just as likely to look for other cheap, easy filters: like college ranking, graduate degrees, etc. You already see this in some fields. E.g. it's almost impossible to get a decent-paying job with just a BS in Chem/Bio these days.

</comment></comment></comment><comment><USER14> Article opens with the very thought I left college 10 years ago thinking--this degree is just my new high school diploma. Maybe in another generation or two, we'll see graduate degrees becoming the new BA/BS. Maybe then people will begin to realize this is all a farce.

<comment><USER16> I'm not sure it's a farce, or at least that's not the word I would use. I haven't graduated high school yet (3 months to go) but I think it's probably better for people to have more knowledge on a subject. So if we're raising the bar, I don't see how that's a bad thing. Eventually the system will catch up and student loands will get remade into a better system, but until that time you can definitely avoid accumulating $100,000 in debt; state schools are much cheaper, and there are plenty of scholarships and grants available if you look in the right places.

</comment></comment><comment><USER17> This is like going backwards.

</comment><comment><USER18> UK person here. We've had this problem for a decade or so.

It started in the 90s with companies wanting graduates for roles that really doesn't require a higher education and if you didn't have a degree, your CV/Resume was promptly filed in the bin. So the government made higher education a lot more accessible and pimped it out a lot, much to the expense of both the students and the nation. More Universities, bigger classes, wider spectrum of courses, etc.

Lots of people now have degrees. I mean _lots_. When students are planning their education, there really isn't a "not go to University" option that doesn't carry the sweeping the streets or factory line worker stigma with it. It's also really quite rare to meet anyone younger than ~35 that hasn't been to university.

We don't quite have the Pedigree problem that, as a foreigner, it appears the US does - i.e. we don't really have a "X University is better than Y" type classification going on (e.g. in TV programme 'Suits', Pearson Hardman will _only_ recruit Harvard educated lawyers. No other College graduates need apply. No idea how 'real' this problem is in the States.) There is some social perception of certain universities, but I'm yet to encounter any restriction being imposed based on which University someone has been to. However, we are seeing the "Must have a 1st Degree with Masters" line appearing on job adverts more and more which is simply just pushing the bar higher, as I imagine is what employers in the US asking for "College X" educated applicants are doing.

All the while we have an education system that is drilling into our young people's heads (and their parents) that University is a must. There's a lot of pressure for young people to get into University.

Degrees are not worth anything like they were before because _everyone_ has one. Nobody "stands out" any more, is all I mean. Everyone has one because of the demand, and the government gave everyone a big boost into Uni. Recently the government had to cut back on the pseudo-subsidy they were giving to the student body, so now we also have a lot of young people who think University is make-or-break, but will also have a large amount of debt (£60,000+) before they've even started working.

Despite all this there seems to be - at least in my experience as one of the few people to have not attended university - a growing number of employers who are starting to ignore the necessity for a degree. Degrees are still regarded as a demonstration of one's character and ability to learn, but it's becoming less and less of a requirement. Perhaps it is just my experience but recruiters, employers, and certainly myself as someone who has recruited many times, are seeing past the qualifications and doing their own assessment (for lack of a better phrase) of prospective employees. I don't mean we're sitting our own exams, I mean we are doing meaningful interviews. We're inviting candidates to work with us for a few hours, and so on. Employers are realising they want to hire intelligent people, and that not everyone has access to a University education, and also that the current education system just doesn't work for everyone. This is what I hope will become of the education and employment system of the future - that a degree an option for students to pursue, but not the only option.

That should be enough rambling.

TL;DR: We've gone full circle in the UK, from requiring that candidates/applicants have degrees, back to assessing candidates for ourselves, and I expect we will again and again in the coming generations.

<comment><USER19> > Degrees are not worth anything like they were before because everyone has > one.

the degree isn't worth anything to differentiate people, but saying that getting a college degree isn't worthwhile is not true - at least, if your personal goal isn't to _just get a job_, but to learn how to learn, to make friends and form a network of peers. But i agree that the amount of debt you have to carry to get all of that is quite a problem.

<comment><USER18> Poor wording on my part, but that's definitely not what I was shooting for at all. Degrees are still degrees - I'm not trying to take away from that at all, but as the successive sentence to the one you have quoted says - all I mean is nobody stands out because they've got a degree anymore, because it is the new norm to have one. Same for any kind of merit; if everyone has the same merit, then nobody stands out.

</comment></comment></comment><comment><USER20> Enterprise rental car company made a fortune hiring underpaid non-college- degree-holders for its counter staff.

</comment><comment><USER21> Start your own company then

<comment><USER22> "Starting your own company" is certainly not for everyone. And even for those who will eventually have the knowledge and domain expertise to start something profitable (i.e. pays at least your own salary), it often takes time. You don't suddenly pop out of high school and have a profitable company on your hands.

<comment><USER21> Everyone can't start one, to start one we should have focus, commitment, idea, most important part is to do the ground work.

<comment><USER19> > Everyone can't start one

i'd like to challenge this idea that not everyone can start a company. May be not in the current form that a company takes - i.e., having a lot of "admin" stuff to take care off (such as taxes, registration, various laws etc).

I think specialization is the key here - may be there is room for a specialized company whose sole job is to take the "business admin" part out, and all the founder has to do is actually do the work. All of the other parts that a ancillary is done by this specialized company. What this could mean is that instead of working for someone, everyone works for themselves, and all the organizing happens via some automated fashion (akin to how the stock market operates).

Also what this means is that if the efficiency of the system is can be made high, then mediocrity will quickly die out (due to natural selection).</comment></comment></comment></comment>


Bartosz Milewski - The Downfall of Imperative Programming - <AUTHOR> http://fpcomplete.com/the-downfall-of-imperative-programming/ <comment><USER2> If only it was that easy: change programming languages, change programming models, and _poof_! Magical parallelism.

But parallelism is harder than that. It's an algorithm problem, a design problem, not a language or code problem. While OpenCL might be harder to write than plain C, for anything except the most embarrassingly parallel problems, that difficulty _pales_ in comparison to making the solution parallel to begin with.

For every problem where you can simply split into masses of shared-nothing tasks, there's a dozen others where you can't. Rate-constrained video compression. Minimax AI search. Emulation. All of these _can_ be parallelized, but it requires parallelizing the _algorithm_ and making sacrifices that are light-years beyond what a dumb compiler that isn't even allowed to change program output (let alone rewrite half the program) could do.

Modifying an algorithm -- possibly even changing its structure entirely, changing its output, or even accepting nondeterminism -- is _inherent complexity_ , to use the terminology of Mythical Man Month. No programming language or tool can eliminate this complexity. Good tools can make it easier to implement an algorithm efficiently, but they really can't take a complicated application and figure out how to change its design, structure, and behavior. Until we have AI-complete compilers that take program specs as "code" to be compiled, that's a human job.

<comment><USER3> One significant issue is that most programming languages are inherently temporally inexpressive, having either full order (imperative/impure functional) or no order (purely functional). Ideally the language would make it easy to organize statement in such a way that a programmer could indicate a partial ordering relation without having to use function composition. Additionally, a big problem with function composition in purely functional programming is that multiple long function compositions can only be ordered as monolithic units, however in many cases being able to order at the individual function level is desirable. If a language had an explicit notion of relative temporal index for statements (which could be adjusted) it would be a nice win for writing concurrent code. That would also let compiler writers lift a lot of the stuff they do up to the program source level as macros (which would be a HUGE win).

<comment><USER4> A futures library solves the case where, in an imperative programming language, the programmer writes a block to compute A, a block to compute B, then combines A and B. Pure FP works fine in that case, since writing (+ (compute-A) (compute-B)) does the same ordering.

It seems to me pure FP is fine unless computations for A and B have interdependencies, which would result in duplicate computation in pure FP unless you can refactor to a different algorithm. I'm not sure I understand what you mean by wanting to control ordering at a "the individual functional level", unless you mean interdependencies between computations done in "monolithic units".

        A->(loop B until done)->C
        A->(loop D until done)->E

        C-\
          +-> F
        E-/

Something like that. Am I one the right track?

No, because I can still express that in pure FP:

        (let [(A (compute-A))]
          (let [(C (compute-C A)
                (E (compute-E A)]
             (compute-F C E)))

Trying again ...

        A->(loop B until (valid B D))->C
        A->(loop D until (valid D B))->E

        C-\
          +-> F
        E-/

Is that better? Care to help me understand what you're getting at?

<comment><USER3> I was thinking more along the lines of working around data-locality issues. For instance, imagine that you have code that requires very high latency fetches, or you are working with a data set that doesn't fit in memory. Typically, you have to develop modified algorithms that for these scenarios, but there is no reason that a minimal fiber scheduler couldn't adapt seamlessly. Even better, if your conditions change (like for instance, mobile devices moving from low throughput to high throughput links) a scheduler can adapt, but the hand rolled algorithm must be re-coded.

</comment></comment></comment></comment><comment><USER5> Mutable state won't eat your children if you know how to handle it in a disciplined manner. Pure functions and immutable datatypes are definitely preferable in a variety of cases. However, just because you discover one day that there are better tools for driving screws than a hammer doesn't mean you have to start banging your nails in with a screwdriver and wearing a saffron robe and preaching to your friends that you have achieved liberation and that they won't be free until they also throw away their hammers.

The softwareverse (and he universe, for that matter) is still full of patterns and constructs that are inherently stateful, and need to be constructed such that they behave as if they were stateful. Heck, some constructs simply can't be made to work efficiently in a purely functional manner. Hash tables come to mind. Fortunately we already have a tool that's proven to be excellent for efficiently and effectively modeling state. No, it's not monads. It's _state_. And it does the job so well that even Haskell was forced to resort to it for its hash table implementation.

(Though admittedly not until after much sound and fury to the effect of, "Nobody needs hash tables; trees are Pure and just as good!" I'll say this for silver bullets - people sure can cling to them.)

<comment><USER6> I don't think anyone says that mutable state should be completely eliminated; the argument is that it should (1) not be the default, and (2) be made explicit through the type system.

<comment><USER7> While you're right, I think that's kind of obscured by the language that a lot of functional evangelists use. I myself prefer FP (Lisp first, now Haskell,) but most people who are coming from an imperative programming languages tend to see Functional languages as uselessly pure. As a matter of fact, in LYAH, the author states that Haskell is totally 100% pure. Which of course, is true in a sense, but false in another, at least in that we still model and use mutable state. (It's just marked by the type system, as you mentioned, and it's done in a functional way and usually heavily sugared.) In Haskell, I'm disregarding the IO monad.

</comment></comment></comment><comment><USER3> While I agree with some things the author says, his conclusions are bullshit.

Very few processes want to be parallel. People who primarily do parallel programming think everything needs to be parallel, so they assume everyone must be going through the pain they are going through. This is false. Most people write sequential software.

Another issue is that purely functional programming is fundamentally flawed, because it attempts to eschew state. Many functional programmers will call this a virtue, but the world is stateful, and being able to reason about necessary state is how you do anything useful. Purely functional programming is great when you want a convenient test-bed for ideas, but Haskell as a practical programming language is a horrible idea. Ultimately, what we want is to eliminate unnecessary state, while reasoning about necessary state. Modern programming language researchers are doing this under the guise of "effects systems", however most of the research I've seen far has left me underwhelmed.

Eventually functional programming researchers are going to end up somewhere that is quite far from where they started, but just a few small steps from logic programming.

<comment><USER8> We actually don't know that the world is stateful. Quantum physics would tend to suggest that the world is a waveform function that collapses on a discrete value when evaluated. If you think about it the current 'state' of the world should entirely depend on how the previous functions collapsed to produce the current 'state'.

Perhaps like in physics there is a sort of Church-Turing duality to it all that is hard to tease apart.

<comment><USER3> The reality is stateful on a macro-scale. I find the idea that the universe is actually stateful, and we do not completely understand behavior at quantum level far more parsimonious than the converse.

<comment><USER8> The double slit experiment confirms the wavelike nature of the universe at macro scale. A completely stateful universe where a photon discretely moves through spacetime could not exhibit self interference, only if the photon takes all paths (suggesting 'functions' that describe its movement) could it then collapse into a discrete position after being observed (aka. evaluated)

What I'm getting at is that in between emission and observation the photon is not in any one state, at best it's state could be described as a superposition.

To take the analogy one step too far, perhaps worst of all this suggests a lazily evaluated haskellian universe with a giant state monad whose NUMA architecture updates at the speed of light.

<comment><USER3> I hesitate to admit photons into the macro realm, considering they are elementary particles and essentially massless.

Given the de Broglie hypothesis, I must of course admit macroscopic objects do have wavelengths, and thus macroscopic uncertainty (your statelessness) is a nonzero vlue. For all intents and purposes though, the denominator of the equation causes the wavelength to go very close to 0, as the mass value dwarfs the Planck constant and velocity is always non-zero due to brownian motion.

Wave function collapse is interesting and I must admit when it is not induced by momentum, I don't understand it very well.

</comment></comment></comment></comment></comment><comment><USER4> The article starts by mentioning data ownership, but then diverges after saying that didn't take hold in D and discusses just FP. Yes, FP works well for concurrency. But if you're complaining about data races, letting a thread own a piece of data and only be able to share it via channels solves the concurrency problem too. Thus imperative languages can live on if they adopt memory models in which data is owned by a single thread and cannot be shared. I notice Rust has a mechanism for sharing this kind of data by transferring ownership. That looks pretty cool to me.

Also, there are still plenty of applications where high level scripting languages like Python and Ruby work great for application logic, and where single threaded event-based systems work for handling user events. It's the data processing part that needs to be put in a safe concurrency sandbox.

<comment><USER9> Can we form a club or something? I keep saying this, but it's still a relatively unpopular idea.

Kilim (lightweight actor-like concurrency for the JVM) implements what it describes as "linear ownership transfer", to where objects are owned by a single thread at a time, eliminating any potential data races.

I'd certainly like to see more of that

</comment></comment><comment><USER10> I am a big believer in FP (reasoning about functional code is much sounder even in the sequential case) but not in parallel programming. Most algorithms just do not parallelize that well, regardless of the programming paradigm used.

Quote Donald Knuth: _'[...] So why should I be so happy about the future that hardware vendors promise? They think a magic bullet will come along to make multicores speed up my kind of work; I think it's a pipe dream. (No—that's the wrong metaphor! "Pipelines" actually work for me, but threads don't. Maybe the word I want is "bubble.")'_

 _'I won't be surprised at all if the whole multithreading idea turns out to be a flop, worse than the "Itanium" approach that was supposed to be so terrific—until it turned out that the wished-for compilers were basically impossible to write.'_

<comment><USER5> If you look at classes of problems, sure, only a few of them are easily parallelizable.

But if you look at what many programmers are actually doing on a day-to-day basis, it turns out that a huge chunk of it is really basic, straightforward SIMD. Hence the popularity of for-each loops in modern programming languages. That kind of stuff is often quite trivially parallelizable. Microsoft demonstrated that nicely with the introduction of, e.g., Parallel.ForEach() in .NET 4.

There's also something to be said for tasks which are naturally. . . let's say concurrent. ETL comes to mind - if you do ETL using purely sequential code, you're going to end up with software that's immensely slow compared to code that has enough basic time management skills to realize it could probably be doing something more productive than twiddling its thumbs while waiting on the disk controller.

<comment><USER11> That's true, but for _those_ tasks, it's not clear you need to abandon imperative languages at all. In cases where you're just doing the same operation on all elements in an array, with no data dependency, you can do that in C without fiddling with pthreads by using OpenMP's "parallel for" construct.

FP promises to make it less error-prone and practical to do more complex parallelization than these trivial kinds of parallelization, but the skeptical take (which I partially share) wonders whether that is a big win. In other words, are the trivial parallelizations just the 10% tip of the iceberg, and there are 90% wins left from more complex parallel programming (in which case perhaps FP is what lets us unlock that future), or is trivially parallelizable stuff more like 90% of the parallelization win?

<comment><USER5> With the question posed that way, I think I fall on yet another skeptics' side. Regardless of whether it's the majority of the win or not. Suppose, for the sake of argument, that the non-trivial parallelization stuff is complicated enough that it's really not feasible for folks in general to be tackling it outside safety of what's effectively being billed as a linguistic walled garden. If that's the case, then the previous sentence ended about 13 words too late. Difficult, error-prone tasks like that should really be handled by a library or run-time.

</comment></comment></comment></comment><comment><USER12> This is a cute idea, but your computer is almost never CPU pegged. It spends most of its time waiting for input from you. For 95% of software, faster execution (through parallelism or whatever) would have no effect.

But don't take my word for it. Look at all the applications you have open right now and check if a magical 1e100Hz processor would make any meaningful difference. For me: iTunes: no. Vim: no. Chrome with hackernews: no. VLC: no. Terminal: no.

"We need to rethink software design to make our programs run faster" – Hardly. We're actually seeing the opposite trend. People are caring _less_ about CPU performance now than they used to. One of the effects is that real software is being written in slow languages like Ruby and Coffeescript, performance be damned.

There are obviously exceptions (games and scientific simulations). But for the other 95% of code out there, we simply don't need the parallelism of functional languages to write good software.

<comment><USER13> I think it's stretching it to say that 95% of programs won't peg your CPU. Ok, maybe 95% of all programs written for an actual desktop/laptop that aren't games are. But we live in a more complex world where mobile devices are slow, but have multiple cores. And what about games? Game developers are always trying to squeeze that last little bit of performance out.

And we haven't even gotten into server-side software, nor have we discussed concurrency due to I/O-boundedness.

<comment><USER12> On mobile devices, you can already be a bit sloppy with your code and your UI will still be responsive. The fact that Corona and Phonegap are usable is proof of that. The 'comfort margin' of mobile CPUs will only increase over the next few years.

You certainly don't need functional languages to write efficient server-side code for I/O-bound applications. People have solved the C10k problem for every imperative language I know.

Ryah (the nodejs guy) makes a pretty strong case that functional programming's parallelism doesn't help you on the server side anyway, because you'll need to scale across multiple machines. Multiple machines mean multiple processes. If you're doing that anyway, you may as well avoid threads entirely and parallelize by spawning a few processes on each server.

Games are the big exception, though I find it curious that I've never heard of any published game (big or small) that was written in a purely functional language. If functional programming really does make concurrent code easier to write, I'd expect at least a couple indie computer game developers to be using them, somewhere!

Anyway, despite how visible game development is, it makes up a small percentage of the computer industry. That we will experience 'The Downfall of Imperative Programming' because some day, I hope game developers use functional languages to make their games run faster is a bit of a stretch.

The ability of functional programming languages to do parallelization is really cool, but you're not solving a problem that many programmers actually have. Its like selling a car by saying it has lots of leg room for tall people. Its a great pitch to the right customer, but don't expect a revolution.

<comment><USER14> Shaders are effectively written FP style. The performance-critical bit of a game isn't waiting for a joystick, it's rendering on the screen.

</comment></comment></comment></comment><comment><USER15> Hunch: as hardware (multi-core) improves, we will _not_ achieve a sudden breakthrough that enables us to run conventional software approaches on it (functional, imperative or otherwise). Clever people have been anticipating and investigating multi-core for decades, without result, apart from the "embarrassingly parallelizable". In later decades, actual multi-core hardware was adopted in leading-edge then mainstream applications: in supercomputers; in server farms (esp google); in GPUs. Mainstream desktop CPUs have been multi-core for a decade now; and, today, as the article indicates, even phones are multi-core. Phones.

In the big picture, multi-core instead will slowly become good enough to solve problems _suited to it_ , that couldn't be solved easily or cheaply before, such as massive simulation in non-government/military applications, and including problems that we did not even see as "problems" before, they seemed so insoluble.

It will be a new golden age of computation, with utterly different concepts, approaches and values from today. Our current issues of programming languages will disappear, pushed down to a lower level, and compared to it, imperative and functional programming will be as twins.

</comment><comment><USER16> While I do agree with the author that FP has in-arguable benefits when it comes to optimizing for multithreading, I'm not sure I buy the logic pronouncing the full-fledged demise of imperative languages.

The notion that dev shops will switch to fully-functional languages because a junior dev is bound to muck up the code base seems a little far fetched. That's a _huge_ price to pay for what amounts to a warm fuzzy feeling of immutable certainty (pun intended).

<comment><USER17> I don't think it's just a matter of a junior programmer messing things up. To really maintain concurrent code, you have to fully grasp a lot of pieces in your head, like what's the correct locking order etc. This is huge mental debt that needs to be transferred between teammates. And if there's no testing for it, errors creep in. The largest source of heart burn in my career has been just this.

That said, I agree with you that imperative languages will be around for a long time to come.

<comment><USER5> In my experience, code for which the phrase "locking order" is applicable is frequently overdue for a refactoring.

</comment></comment></comment><comment><USER18> Great article, but does it answer the question it raised: Why has software evolution lagged behind?

Also, is the focus on parallel computing the only litmus to judge this as the downfall of every imperative programming language?

To answer the first question, we have to abandon our technical computing hats in favour of the philosopher's hat.

What went wrong with the promise of reusable objects? Whatever happened to 4GL? Why are frameworks confined to isolated corners of language evolution, far-removed from the domain problems faced by end-users?

Why, oh is every nerd developing an Order-Entry system from scratch? Why are nerds doing the same code again and again for decades in every conceivable new language (now FP).

You see, if we start accepting structural restrictions like those imposed by FP, then philosophically we should follow that _maxim_ to its logical conclusion. Restrict to the point where we do not harm ourselves (by repeating).

Rant over. ;-)

</comment><comment><USER19> I think this article is a really bad introduction, both to parallel and functional programming. There is just so much stuff that is badly informed, or simply wrong, e.g:

> For a functional programmer there is no barrier to concurrency, parallelism, > or GPU programming.

Amdahls law? And GPUs, while having branch support recently, still only perform great for problems that are highly data parallel and are not in high need for branching.

> I may surprise you that the state of the art in parallel programming is > OpenMP and OpenCL.

This did in fact surprise me a lot! Erlang? Well, if you think about it, a webserver renders webpages in parallel. If that is not state of the art and parallel, then what is?

While I am very interested both in parallel and functional programming, I am actually disappointed this article has made it onto the frontpage of HN...

</comment><comment><USER20> I guess I am kind of confused about the title because I was under the impression Occam counts as imperative. Also, if we are talking general parallelization strategies then Grand Central Station is something to look at on the Mac.

<comment><USER21> Grand Central Dispatch, I think you mean. :)

It's on iOS 4+ as well.

<comment><USER20> Thanks, I keep doing that with GCD and calling the "First Responder" First Listener. I am glad they ported it to iOS. It really helps to be able to use the same programming structure on both platforms.

I still think one of the agent oriented programming variants might not be a bad way to build parallel programs.

</comment></comment></comment><comment><USER15> > In fact the most popular language for parallel and distributed programming > is Erlang — a functional language.

Erlang achieves its parallelism not through immutability (though it has that) but through a shared-nothing architecture, like smalltalk. You can implement shared-nothing concurrency imperatively. It circumvents the problem of two threads accessing the same memory location by restricting access to only one thread. Of course, then there's the problem when you do need to share data between threads - Erlang does this with STM (software transactional memory - like a DB).

</comment><comment><USER22> I'd like to be able to use C++ in a purely functional manner rather than use Haskell, etc. Has anyone done that, if so, what was it like?

<comment><USER23> You can if you want to. Just make sure you write all your functions in a purely functional way, and avoid all side effects.

You do not really need changes to the language, just iron discipline.

<comment><USER24> >> _just iron discipline_

That's where it gets tricky. It's hard enough dealing with your own discipline ironing, imagine a dev team composed of varied expertise and awareness levels.

<comment><USER25> imagine the dev team who takes over the project after you leave. Iron discipline doesn't exist over long periods of time, that's why it needs to be built into the language.

</comment></comment></comment></comment><comment><USER26> No mention of Erlang?

<comment><USER27> The article I read mentioned Erlang.

</comment></comment><comment><USER28> Another silver bullet to chase after. When will people learn? There ain't no silver bullet. Parallel programming has complexity. Deal with it.

</comment><comment><USER29> Should we all take a serious look at functional programming? Absolutely. Should we start learning a functional programming language? Maybe not. C++ is a multi-paradigm language in which one can write functional programs, and it lends itself nicely to switching back to stateful imperative programming when needed.

<comment><USER30> You can not "switch" to an imperative style in C++. You are _always_ in imperative land by default in C++. You can "switch" to a functional island in the middle of C++, but it will forever be a foreign body in the greater C++ program, and a mere moment's inattention will quickly re-introduce imperative side-effects into your purely functional code. Or you'll use some library that re-introduces it, or somebody else on your team will use your putatively functional higher-order function to do something imperative.

C++ is a particularly awful language for trying to manage side-effects in or maintain a purely functional constraint on your code, because it offers so very, very many ways of performing side effects without meaning to, and only the thinnest possible compiler support for maintaining those constraints in the face of temptation (const). To be sure "a = b.c(d, e)" is a purely functional statement requires understanding arbitrary amounts of code to be sure that none of reams of code that can invoke accidentally violates your constraints.

<comment><USER31> I've only been using C++ for a few months, but it's my opinion that all function parameters should have been "const &" by default (except for maybe primitive types). Const correctness has helped me spot some nasty bugs, and it's too easy to accidentally forget the "&" and pass horrendously large structures by value, which must go through a copy constructor and destructor with every call. Plus, it gets really tedious typing "const Mat &src" a million times (guess which library I'm using, lol).

<comment><USER32> In C++11 "type const &name" can be simply replaced with "type name", no performance penalty involved.

<comment><USER33> That's simply not the case.. In general, the "no penalty" holds true for primitive data types, and when passing an r-value instance of a class that has a move copy constructor defined. In the case where your object is an expensively constructed l-value, it is preferable to pass by const reference rather than value (assuming you plan to use the object later... otherwise you could indeed pass using std::move semantics).

<comment><USER32> In C++11 you are supposed to use move semantics in your own classes. I'm not 100% sure but I think the standard require that the STL use move semantics.

<comment><USER34> Yes but this is one _more_ thing you have to think about when implementing a class in C++ and one more chance to screw it up.

It makes vanilla C and raw pointers look a lot more appealing, to be honest.

<comment><USER32> Actually I think C++11 is a simpler language than C++03 or C++98. The problem is that we need to un-learn what we know and learn the new way of doing things.

<comment><USER34> C++11 is simpler for the casual user of classes but I'm not so sure it's easier if you're implementing a lot of classes yourself. I disable assignment and copying in all my classes by default unless I have a really good reason to implement them and I still pass by const & for types I define myself.</comment></comment></comment></comment></comment></comment></comment></comment></comment>


Jooplicate: see your web application exactly as your users see it - <AUTHOR> http://www.jooplicate.com/

<comment><AUTHOR> Someone just told me they're still seeing the unfinished holding page. I assume the DNS update is lagging behind. You can access the new page here instead: <http://jooplicate.capturely.com/>

<comment><USER2> Too bad they weren't able to use Jooplicate to show you the exact holding page they were seeing, with Jooplicate being down and all. (Who Jooplicates Jooplicate? ;P)</comment></comment>


1 in 5 Employees Don't Feel Companies Care About Sexual Harassment - <AUTHOR> https://www.bustle.com/p/1-in-5-employees-dont-feel-companies-care-about-sexual-harassment-heres-how-employers-can-change-that-8985411 <comment><USER2> This one made the rounds just today: [http://chemjobber.blogspot.com/2018/05/university-of- minneso...](http://chemjobber.blogspot.com/2018/05/university-of-minnesota- biochemistry.html)

Chronic harassment by a well-known figure in the NMR world at the University of Minnesota - but it's all fine, he continues to be on the payroll. If you don't acknowledge the misconduct the aggrieved employee leaves, and meanwhile you can continue shaking the money tree. There need to be serious financial consequences for the company, and maybe when you go for interviews HR shouldn't insist that the relationship with the previous employer was all sweet-sweetness.

</comment><comment><USER3> And the recent Salk institute thing, was a systemic issue which had been there for years. Astronomy has its problems. Even the nobel prize for Literature. So.. its not just companies, its _society at large_</comment>


URLs are for humans - a browser concept - <AUTHOR> http://www.svarden.se/blog/2013-04-07-urls-are-for-humans/

<comment><USER2> The sidebar, permanently-fixed and consuming more than half of the screen, makes this blog completely and utterly unusable on a mobile device - that is, unless you're attempting to find the author's twitter or send him an e-mail.

EDIT: Additionally, this concept is already implemented rather well via various[0][1][2] browser extensions.

[0]: <https://addons.mozilla.org/en-US/firefox/addon/ui-enhancer>

[1]: [https://chrome.google.com/webstore/detail/breadcrumb- navigat...](https://chrome.google.com/webstore/detail/breadcrumb- navigator/hphdahmligbkhjoedbpeoigbmopehdhm)

[2]: [https://addons.mozilla.org/en- US/firefox/addon/locationbar²-...](https://addons.mozilla.org/en- US/firefox/addon/locationbar²-modified)

<comment><AUTHOR> Added some responsive CSS for mobile users. Thanks for reminding me.

Originally, my idea was to make this into a Chrome extension, but reading through the documentation it didn't seem possible to make text in the omnibox clickable. Very impressed with the Firefox addons though. Thanks for the links!

</comment></comment><comment><USER3> I like the concept, but I think I would rather use this feature by holding control/command or middle clicking, which would make my action to navigate upward more deliberate.</comment>


What is the most beautiful equation? - <AUTHOR> http://www.quora.com/Mathematics/What-is-the-most-beautiful-equation?srid=hZ <comment><USER2> Not to troll, but why do people consider math "beautiful?" I hardly ever use the word, so I might be missing a nuance of meaning, but when I have used it it's been to refer to something physical and never to an idea.

Elegance, I can understand - it's a lot of fun to see a complex problem get reduced to something simpler by a twist of logic. I can understand calling something compelling as well if the logic is especially clear and concise. But what do people find "beautiful" about math?

<comment><USER3> What is "beauty"? Define that, and I can help you. Until you can define it, it's hard to give meaning to the question.

Warning: embarrassing stream-of-consciousness ahead ...

There are some parts of math that I find genuinely beautiful. They evoke an emotional reaction, I want to work on them, I want to consider them, I want to give time to them. To me, the word "beautiful" comes closest to how I think of them.

But I've done lots of math, and have a great deal of experience to bring to bear. People with less experience of different varieties and forms of music usually can't appreciate more "classical" pieces in the same way as people who have immersed themselves in music for decades. Similarly, without being an experienced programmer it's hard to tell hacked together code from elegantly written code.

Similarly, without enough experience, discerning quality in math can be hard.

Finally, math is morethan solving problems. Some of it is, yes, but some of it is building theories. I remember the first time I really grokked some obscure parts of low dimensional topology. Suddenly things fell into place, and what had until then been just valid proofs suddenly became obvious truths.

It's like proving that sqrt(2) is irrational. You can follow the equations, you can believe the proof, but there's more going on. It's the difference between knowing that it's true, and seeing that it can be no other way.

<comment><USER2> Hey, Rider -

Thanks for the reply. I agree that this is sort of a fluffy subject, but I'm genuinely curious and figured here on HN I'd be able to get some interesting opinions on the subject.

I use the term 'beauty' in a more limited sense than you are. The two phrases that come to mind are 'pleasing to the eye' and 'pleasing to the ear', and neither of those has anything substantial to do with math. When you say that there are things you want to work on and consider, the word I would use would be "compelling." I have ?'s I've chewed on in my own head for over a decade, and they keep coming back, but I wouldn't call them "beautiful". Is that what you mean?

You bring up an interesting point that things can be "acquired tastes", so to speak, and that I might simply be math blind. I don't have substantial math background compared to most of the people here. My official math education stopped at differential equations, and I picked up what I needed throughout grad school but it was very piecemeal. When I look at things like Cantor's diagonalization, for example, I don't see an obvious truth - I see a trick of logic with interesting applications. I can follow the logic, but at no point do I feel like I'm doing anything more than moving symbols around in an internally consistent manner. Just out of curiosity, what's your background with math?

<comment><USER3> I use beauty as "Pleasing to the perception" which doesn't limit it to sight, sound, touch, taste, or any other physical sense.

To take your example, Cantor's diagonalisation - after a time - takes on a life of its own. Treating math as simply pushing symbols around makes it devoid of meaning, and it's meaning that makes it possible to do. Creating a proof requires more than exploring all the ways of pushing symbols around - you need a sense of "rightness" to guide you. Similarly, writing a program is more than banging out something that's syntactically correct. You form it from your internal sense of what's right.

For reference, I did a PhD in 1983-88 specialising in Graph Theory and Combinatorics. Since then, in addition to my day job, I've given around 100 presentations a year on what math is really about. Patterns, predictions, testing, proofs, structure, and why things work.

Whay are all primes of the form 4k+1 equal to the sum of two squares? You can puch symbols around all you like, but finding a proof requires seeing structure, form, pattern and "truths" underneath the simple statements. Following someone else's proof is usually unenlightening.

There really is beauty _and_ elegance there.

<comment><USER2> Thank you very much, Rider - this is very interesting. I hate to take up more of your time, but do you mind if I shoot you an e-mail at your solipsys account to continue this if you have the time or interest? I'm not sure an HN thread is the best way to maintain what seems to be a dialogue instead of a discussion.

And again, thanks for the replies - this has made a bleak Tuesday fun.

<comment><USER3> Feel free. No time, responses will be sporadic, but happy to engage as able.</comment></comment></comment></comment></comment></comment>


Ask HN:  Looking for a Financial Startup? - <AUTHOR>

Background:  I am analyst for a bank.  My role is somewhere between number cruncher and quant.  On some days, I'm just running calculations; on other days, I'm in the deep end of the mathematical finance pool.  I have a degree in financial engineering, and I dedicated to the field of risk management.
I have identified a piece of software, used by many in a role similar to mine, that is simply insufficient for the regulatory environment the banking industry is moving towards.  The GUI is slow.  Documentation for anything beyond rudimentary functionality is practically nonexistent.  What documentation that does exist sometimes contains significant errors.  At times the system will simply return nonsense.  At other times the system may not even finish, crapping out hours into a run.
I remember Paul writing about approaching banking from a tangent.  This is that tangent.  Not only is the software used for interest rate risk purposes (what I do), it's also used for liquidity modeling, credit modeling, and capital modeling.
I'm fairly comfortable with C++.  Are there any people on HN looking to start a financial risk management software company?  Are there any people with a background in credit modeling, interest rate modeling, etc. that would like to be a cofounder?  I am 100% confident that this space could use a new company.  Feel free to contact me.  My email address should be visible. <comment><USER2> Around the turn of the millenium I was a lead developer on a finance platform that spanned order management, trade capture, and portfolio analytics, primarily for MBS. [1]

It is a sisyphysian task to sell software like this into a bank. Let me recommend the following: run screaming as far and fast as you can.

The main reasons:

\- "Nobody ever got fired for buying [the existing standard]."

\- "If your software fails we have no entity of any value to sue."

\- There is a large existing power structure at financial firms aligned behind existing solutions. Folks who have made it their job to understand the [often crappy] systems and to maintain them. These people do not want to lose their niche.

\- Verifying the correctness of your solution is extremely hard and the standard of verification required is very high.

Folks that are winning in this space, like Sungard and Imagine, have largely become services businesses. IMO that's the only viable way to play in this space.

[1] <http://www.beyondbond.com/index.php>

<comment><USER3> I can understand where you are coming from here. I agree with the how the banks would react, having worked in the industry in the past and now dealing with them from an outsider's view.

However, it is not right to just keep accepting that the banks will always have their way, so we just throw our hands in the air and give up. It is time this old school industry was disrupted and I can see this beginning to happen with start-ups that challenge traditional banking. (such as TransferWize and Pygg)

If the banks refuse these new types of products that have been suggested in this post, then other disruptive partners could join together to tackle the industry. In saying this, there are some banks willing to challenge traditional methods, such as HSBC, who outsource most of their IT development to create the best products for their clients. In this regard, in Australia at least, they are considered a threat by the local big four banks. All in all it won't be easy as Jon pointed out, but nothing worth doing ever is.

I am not passionate about finance so this project is not for me, but I wish you all the best Brent and hope to see changes in the industry in the future from potential disruptor's like yourself.

<comment><AUTHOR> Brooke, thank you very much. It's nice to hear some encouragement.

I work inside the system. I try to push for change, but there is only so much I can do before I start to upset people. My coworkers laugh at me every time I talk about unseating this vendor.

</comment></comment></comment><comment><USER4> Find a customer, then build it.

</comment><comment><USER5> Where are you based?

<comment><AUTHOR> Cleveland; however, I have no issue in working remotely with someone.

</comment></comment><comment><USER6> I have worked for banks for past 9 years. I agree that most of the software are old, outdated and just plain fucked up. I have done so many projects where we band-aid existing legacy systems even thought the project is called "Strategic decommissioning of legacy platform blah blah..". Point being that these guys are extremely difficult to penetrate into and they do not like change. I think opportunities are boundless to create good products and sell to these banks. But will need to go through lot of red tapes. Not to mention the new Dodd Frank stuff. Everyone is scared as to what that is bringing and the first question they will ask you is "Is this in compliance with Dodd Frank regulations" specifically if related to credit, risk etc. give me a shoutout though in case you want some more ideas. Always happy to talk.</comment>