Controversy surrounds Red Hat's "obfuscated" source code release - <AUTHOR> http://www.h-online.com/open/news/item/Controversy-surrounds-Red-Hat-s-obfuscated-source-code-release-1200554.html <comment><USER3> That's hardly "obfuscation".

> Now though, the company ships a tarball of the source code with the patches > already applied.

No obfuscation what so ever.

Unless you define "source" as "source code + version control history".

<comment><USER4> It is 'lossy' though - they're providing you with less information than what was put in.

<comment><USER3> Well, one could argue that "the preferred form" of changing the program is the source + version control, but the version control is not really "part" of the source, for all intents and purposes it's something "internal" they use to manage their development work. It's part of the developer's environment so to speak; not much unlike the editor and compiler.

As far as the GPL is concerned, the purpose of providing the source is not to "participate in the community", but to have the ability to change the program. Do the clients of RedHat lose their ability to change the "program"? I think they don't.

<comment><USER5> As the article points out, _legally_ there is nothing wrong, they are perfectly in line with the GPL and anything it was meant to protect.

That doesn't take away from the fact that (apparently, it's not like _I_ know anything about it...) some actions are being taken to make it more difficult for downstream 'users' (as in, repackagers) to make their modifications. Not impossible, just more difficult.

<comment><USER3> Not to make modifications, but, as far as I understand, to merge/integrate patches to the vanilla kernel from other sources.

<comment><USER6> Unless they start renaming files, interfaces, functions and structures for no reason, it's really trivial to start with tree A and get a set of differences between it and tree B.

Almost a decade ago, I wrote some utilities that did exactly that, for merging and finding commonalities between the many (almost a dozen) different versions of the C programs that ran on our electronic voting systems.

<comment><USER4> > it's really trivial to start with tree A and get a set of differences > between it and tree B.

Ok, now figure out which patch each of those differences belongs to, and for extra credit figure out in which order they were applied.

The point is not that it's impossible or something, it's that it now takes up extra time to find out information that they're basically hiding.

<comment><USER6> > now figure out which patch each of those differences belongs to

Why would I have to do that?

And don't forget we not only have the current tarball, but we can analyze every release for differences, capturing some history with it.

Reconstructing each original patch may not be possible (it's an interesting problem), but reconstructing a set of distinct patches is. Humans would then be better at assigning meaning to them, even if it means calling Red Hat's support line and paying for the answer.

<comment><USER4> > Why would I have to do that?

Come on, I'm sure you can think of a reason or two why you might want to enable or disable _specific patches_.

<comment><USER6> There is a difference between disabling a Red Hat patch and a group of changes between a set of files. Separating the large diffsets by fileset alone may provide good cues as to what they do.

You can always pay Red Hat to have their patches.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> > _CentOS is built from the RHEL source by a limited number of volunteers and > Red Hat's change in policy will mean more work for them unless more > volunteers or other companies step in and provide them with assistance._

I don't understand this statement. I thought CentOS basically just recompiled the source RPMs--why does pre-applying the patches affect them negatively?

<comment><USER8> CentOS has been taking it further than a simple recompile, particularly in the kernel. They will often have updates and patches and customizations on the base RHEL distribution.

<comment><USER9> citation needed!

<comment><USER10> Indeed. The lure of CentOS is pretty much that it _is_ RHEL with replaced artwork. And Red Hat benefits a lot from CentOS...

Red Hat sells to businesses, and any business with money to spend on RHEL subscriptions will do so. Management doesn't like free-as-in-beer very much. But they also don't like to see a piling amount of licensing costs on development and testing machines.

Having a paid-for distribution and a free distribution with separate brandings allows RHEL to have a higher subscription cost while not losing customers to the competition because of the added cost of development/testing machines.

I think this is even the reason why Red Hat is much more successful than Novell: the existence of a low-resistance path to the "enterprise" distribution without that meaning less quality or bleeding-edge distributions.

<comment><USER6> Interesting. You basically made the point I use to describe Microsoft's relationship to software piracy. CentOS allows Red Hat to compete in price with, say, Debian much like pirated copies of Windows allow Microsoft to compete in price with various Linux distros.

</comment></comment></comment></comment></comment><comment><USER11> I think it's fair if it's aimed at Oracle given Oracle's record in terms of "supporting" open source. It will probably hurt a lot many others though, including CentOS.

I would be happy to provide a free copy to anyone that might want to use Patch Miner (<http://patterninsight.com/patchminer/>) to verify patches in one of the free distros

</comment><comment><USER10> This is a rather negative spin on something that probably is much more simple...

The kernel has always been the most heavily patched package by distributors. In the old days of Red Hat desktop, when they had a 6-month release cycle, it had maybe 10-15 patches. Now, with them having to support the same base kernel version for 7 years with bug fixes and backported features, I can only imagine how many patches it has.

The line has to be drawn somewhere. At some point it stops being a somewhat patched kernel to become an effective fork. And for the major distributions it has become a fork for quite some time now.

And the Linux kernel is heavily forked already. In fact, the whole Linux development model is based on particular forks by all the different subsystem groups and distributions, with periodical exchange of features and fixes between them leading eventually to the canonical Linux fork (Linus').

Today it doesn't make sense to be extracting patches from git just to produce a "tarball with patches" source RPM.

It isn't a conspiracy, people. (If they started doing this to other packages, that would be another matter.)

<comment><USER12> The issue to your assertions is this: RedHat still uses patch stacks internally (that much is reported by RH engineers). It simply is _not_ feasible to work on the kernel without patch stacks, unless you're OK with throwing it all away from one kernel to the next.

The difference is that previously, as just about everybody else, they provided a stock kernel and their patch stacks which got applied on top of it locally.

Now, unless you have a redhat support account, you only get the patched kernel, not the original one, not the patches. The patches are still there but applied on their side before distribution, it's actually _more_ work for them to do it the new way, not less. And it generates exponentially more work for everybody else.

<comment><USER10> The people working on, say, "ext4" also have to maintain their own patch stack in the form of a git repo.

How to they manage to do that while still being able to go from one kernel to the next? How is that different from what Red Hat does?

</comment></comment></comment><comment><USER6> It may be difficult to tell what patches were applied, but it should be trivial to start with redhatskernel.tar.bz2, make a diff from the kernel.org corresponding release and generate one massive patch that should be applied to other different kernels.

It reminds me of the first WebKit release and how KHTML folks got mad by it being supplied as a gigantic tarball and not a series of diffs.

Much like CrLf said, this is an exaggeratedly negative spin on something really simple.

</comment><comment><USER13> Wow,

It certainly gives you a feel Red Hat is feeling some resentment concerning those who "take" "their" source code.

RH is one of the largest businesses based on open source software. What's up? Are they feeling so much pressure they feel a economic need to stop "free loaders?" Is it simple greed?

There was a lot of sniping concerning Red Hat and Ubuntu's contribution to desktop Linux a while back. Another salvo in the "free loaders" battle?

<comment><USER14> If it encourages those companies to invest in linux in a similar way as Red Had does, I'm all for it.

And really, this is a very stupid definition of "obfuscate". This article is a non-article.

<comment><USER15> I've always felt that CentOS was in rather poor taste, even if it adheres to the spirit of the GPL. If you're really getting value out of Red Hat's enhancements to the system, then compensate them for their work.

<comment><USER16> Clearly you mean oracle here. Being an ex RH-er I can tell you RH sees great value in centos. It keeps small shops on the RH reserve even if they don't pay for a support contract - yet. Oracle has recently tried to position itself as an "enhanced" rhel especially wrt the kernel and this seems like an attempt by RH to make things a bit harder for them. I don't agree with the move though - you don't want to follow oracle down such slippery slopes...

<comment><USER15> What value does RH see in CentOS? I know quite a few admins using CentOS because it essentially gives them the benefits of RHEL without having to pay license fees. None of them have any intention of ever paying for a RHEL license.

</comment></comment></comment></comment></comment><comment><USER17> I'm fine with this - this is within Oracle's rights. It goes against what we've come to expect with regards to Linux and GPL projects in general - <USER2> it's perfectly valid.

Oracle is under no obligation to provide source patches back to anyone, with any additional meta-info. They are only required to provide unobfuscated source for the binaries they distribute - which they are doing. Think of it as a big kernel fork that runs it's project a different way. The community is free to analyze and take back what they want - that's all the GPL is about. If they had actually obfuscated the CODE to make it unreadable, that would be another matter possibly - but while not providing patches and possibly stripping comments, etc, is a form of obfuscation to the outside community, it's not code obfuscation. It's too bad they did this.. it's probably some paranoid manager at Oracle thinking this will make a big difference... but there's nothing wrong with it.

you are free to take the current kernel, hack away on it all you want and just provide new copies whenever you release, without talking to, explaining, or helping anyone with anything, as long as you stick to the GPL.

</comment><comment><USER9> Submitted something on the same topic 2 days back <http://news.ycombinator.com/item?id=2272535>

</comment><comment><USER18> Why couldn't anyone infer the patches by grabbing the original kernel source from kernel.org and using diff on them? (sorry if this is a naive question)

<comment><USER19> Well, that will give you one patch, not the original series of patches. You'll get a big pile of code diffs, but grouping them logically together will be tough.

</comment></comment><comment><USER20> The lwn article has a number of insightful comments <http://lwn.net/Articles/430098/></comment>


Configuring a High Interactivity SSH HoneyPot - <AUTHOR> https://www.robertputt.co.uk/2016/11/28/learn-from-your-attackers-ssh-honeypot/ <comment><USER2> It might be more interesting to run a honeypot inside your infrastructure, to detect intrusions into your network.

The problem with honeypots is that they generally only attract very generic attacks, so they are only interesting for people who want to research the current attack landscape.

Targeted attacks only go for valuable resources, so you'd have to make your honeypot looks valuable.

So if you have an SSH honeypot inside your network, use 'git' or 'scm' or so as part of the hostname, and hope that people will think they can find source code there.

By putting a honeypot inside your network, you tune out the noise of generic, automated attacks. So you get a much higher signal/noise ratio.

<comment><USER3> On a similar note, at a previous job (.edu) we had an intrusion detection system that sat just inside the firewalls that only watched outbound traffic. Overall, we received much more valuable (read: actionable) data from it than the external monitoring systems.

</comment></comment><comment><USER4> Once upon a time, for the IT Security course, we decided to change SSH so that at any 3rd attempt it would allow an attacker in, stopped allowing other attackers in, and at the same time that we tried to have a kernel module that intercepted ICMP Echo's and gave the SSH session keys in it's reply (inspired on something similar on Phrack).

We managed to get close to that, but we didn't get the session keys part :(

</comment><comment><USER5> _Congratulations you now have an SSH Honey Pot listening on the internet_

I've often thought about doing this, but it seems like a _wildly_ bad idea for someone like me who doesn't work in the field.

Anyone here who isn't a security expert tried this? How did it go?

<comment><USER6> Spin up a VPS install a honeypot and observe.

You have nothing to lose. But please don't start mindlessly executing the various payloads people/bots will leave at this box.

<comment><USER7> Be careful doing this - this may well be against the ToS of your VPS service.

</comment></comment></comment><comment><USER8> that's intresting, but i would probably put this honeypot on a cheap DigitalOcean instance or anywhere far from production/test enviroment (would be intresting if this is part of the tutorial, such as redirect to another ip onece successfully logged in in the ssh, don't know if it's possible).

Beacuse life thought me to never think that you are smarter than others.

</comment><comment><USER9> > It is likely with these tell-tale signs and strange configuration not many > hackers will stumble across the host, and if they do they'll probably quit > our right away.

This got me thinking about setting all my hostnames to "honeypot" and randomly printing fake HonSSH logs in all SSH connections.

Security by... mimicking?

<comment><AUTHOR> Not sure if this is a good idea or not, security by obscurity never really fools anyone in my opinion... Anyway I think that the HonSSH logs are not visible to the attacker, they are on the man in the middle node so hence the hacker doesn't get to see them, for the most part it looks very very similar to a legitimate SSH connection.

<comment><USER10> I'd agree this probably isn't a great idea, \-- it may attract unnecessary attention which would have not already been there.

If an attack is automated (where it may not consider the hostname at all) it will have no effect.

If it is a targeted attack, the attacker will most likely be well versed in the behaviour of default honeypots. As such if you're machine behaves differently (as it almost always will) the attacker will not be deterred. One example of this includes response time of a failed SSH login -- a HP might reply sub-seconds faster than a real system (especially true in industrial environments).</comment></comment></comment>


Baffle WiFi Leeches With An Upside-Down-Ternet - <AUTHOR> http://www.ex-parrot.com/pete/upside-down-ternet.html <comment><USER2> Dude, that's like 2 years old: [http://lifehacker.com/software/wifi/turn-your- wifi-piggyback...](http://lifehacker.com/software/wifi/turn-your-wifi- piggybackers-internet-upside-down-190441.php)

</comment><comment><USER3> Old, but still funny.

Now if you add in the unicode upsidedown characters <http://www.fileformat.info/convert/text/upside-down.htm> you're really talking :)

</comment><comment><USER4> Echo wayne. Also, best way to battle wifi leeches is to properly secure your network. I would find it /way/ funny if someone misconfigured this, left part of their home network open, and ended up getting hacked.</comment>


Display on Moto X called groundbreaking by researcher - <AUTHOR> http://news.cnet.com/8301-1035_3-57607633-94/display-on-moto-x-called-groundbreaking-by-researcher/ <comment><USER2> It's a shame to see what passes for "reporting". It's an ad, not an article...

</comment><comment><USER3> [http://anandtech.com/show/7335/the- iphone-5s-review/9](http://anandtech.com/show/7335/the-iphone-5s-review/9)

That makes interpreting these battery life charts difficult. MotoX battery - 8.36 Whr, Iphone 5S - 5.96 Whr. Yet, iPhone 5S betters MotoX on all these charts except cellular talk one. Cellular talk is independent of SoC or display.

</comment><comment><USER4> What about touch latency? I wonder if Moto X's screen is more responsive than the ones used in Apple's devices.

</comment><comment><USER5> Market researcher, that is.</comment>


Mise en abyme - <AUTHOR> https://en.wikipedia.org/wiki/Mise_en_abyme <comment><USER2> Also read this : [https://news.ycombinator.com/item?id=12005869](https://news.ycombinator.com/item?id=12005869)

<comment><USER3> nice example of mise en abyme ;)

</comment></comment><comment><USER4> I rather enjoy these little random nuggets that get posted to Hacker News.

<comment><USER5> Likewise, everytime I see the target url links to Wikipedia, I clic, it's almost always something insightful.

</comment></comment><comment><USER6> I'm reminded of _I Am a Strange Loop_ and _Gödel, Escher, Bach_ by Douglas Hofstadter. About recursiveness being at the heart of consciousness.

<comment><USER7> There's a thesis that all particles are information, and all information is functional, thus perception is merely the lazy evaluation of the universe.

<comment><USER8> How does quantum mechanic's randomness come into play here?

<comment><USER9> The answer is to use one of the "hidden variable" interpretations of quantum mechanics. Bell's experiments have ruled out local hidden variables, but hidden variables that violate locality are still permitted. Since this function takes the global state of the universe (hidden variables included) as its input and returns a new one for its output, there is no restriction for locality, so it remains consistent. Whether its philosophically fulfilling is left as an exercise to the reader.

<comment><USER10> so, god is a bad coder with ugly global variables everywhere ? I hope the universe is more elegant than that :)

<comment><USER6> Peter Watts plays with the idea that God is malware ;)

</comment></comment></comment></comment></comment></comment><comment><USER11> Ah, so the play in Braavos depicting recent events in Kings Landing is a Mise en abyme homage to Shakespeares Hamlet.

 _takes minute sip of $40 ristretto_

</comment><comment><USER12> I made a game based on the Droste effect for Ludum Dare 31 where the theme was "Entire Game on One Screen".

[http://hopfog.com/screenception](http://hopfog.com/screenception)

<comment><USER13> Quite interesting, I ended up just staring at the timer and moving the mouse to the other side of the screen for the first version. And side to side for the 3rd

</comment></comment><comment><USER14> Someone should put a screenshot of the article in that article.

<comment><USER15> But how much stack space would you need?

<comment><USER16> Depends on whether the picture is bigger or smaller than the article.

</comment></comment></comment><comment><USER17> (as a French speaker,) I'm not sure to agree with the comments that associate "mise en abyme" with recursivity.

For me, examples of mise en abyme is a film shot in a movie, or story read from a book in a book. In CS, it means a function called from another function ... which is not _necessarily_ recursivity :)

<comment><USER18> That was also my first thought, but after consideration, there's more to "mise en abyme" than simply placing a story within another.

I think in France everyone learns this term at least in high school, specifically applied to literature, and the way I was taught is that something in the inner story reflects something in the outer story. So for example, you'd talk about the "mise en abyme" of a specific relationship between two characters. This brings it a bit closer to self-similar recursion, but I agree it's still quite different and generally _not_ about fully self-referential concepts (IMO Wikipedia goes a bit over the top in that regard).

</comment></comment><comment><USER19> For a French person, it is very difficult to see the value of the link here.

<comment> obj-g What a ridiculous comment. As if you automatically have total understanding of a concept if the term used for it is in your native language.

<comment><USER19> French is not my native language, however the wikipedia link adds absolutely nothing to what I already knew. And don't get me wrong, I don't claim to "have total understanding of a concept".

To see what I am talking about, imagine instead of the link this one: [https://en.wikipedia.org/wiki/Recursion](https://en.wikipedia.org/wiki/Recursion)

<comment> obj-g Hey guys, the Wikipedia article didn't teach BanzaiTokyo anything new -- can we start making sure every article is selected just for him from now on? Thanks.

<comment><USER20> Please stop posting uncivil and unsubstantive comments to HN.

<comment> obj-g Frankly, when you look at the thread, you should be putting _him_ on notice, not me. I said the comment was ridiculous and I stand by that statement. So, where did I call him a name exactly? The guy wastes all of our time saying that he doesn't think the link should be posted because _he_ didn't learn anything from it. Get your priorities in order for what constitutes a substantial post, please.

<comment><USER20> The "but he did it" defense doesn't work on HN, since people have to follow the rules whether someone else does or not.

But your flagged comment was obviously personally rude, and therefore much worse than what the other person posted. No matter how ridiculous someone's opinion is, if you can't comment civilly and substantively, please don't post here.

I agree with you about the article. In fact I was the moderator who boosted it (as described at [https://news.ycombinator.com/item?id=11662380](https://news.ycombinator.com/item?id=11662380) and the links back from there.) But all that is secondary to the need to be civil, which the life of the community depends on.

<comment> obj-g You continue to misunderstand and misconstrue my points. I don't see this going anywhere as, ultimately, you're the mod, not me. I hope he continues to leave useless posts complaining about articles he doesn't personally like, since that's what you seem to appreciate. I'll just note that I did, in fact, call his post ridiculous, but explained why immediately. It wasn't an insult in a vacuum. And when he replied with a similarly absurd follow up, I used sarcasm to get my point across. I was never rude for the sake of being rude. His comment bred any incivility which followed, and that's not "but he did it" \-- it's just a fact.

<comment><USER19> >he continues to leave useless posts complaining about articles he doesn't personally like

I just wanted to share that for a French speaker (not even for a native French speaker) the phrase "mise en abyme" is very familiar. So there is nothing about me personally not liking the article.

<comment> obj-g I'm literally biting my tongue.

<comment><USER19> Keep us posted on how it goes!

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> Oh great, now we're gonna have language hipsters referring to their functions as "mise en abyme" instead of just saying "recursive" like we've been doing for the past 40 years.

<comment><USER21> Everything looks better in French.

<comment><USER22> Great, it's the 19th century all over again.

<comment><USER23> Great!

<comment><USER24> Àwèsomé!

</comment></comment></comment></comment></comment><comment><USER25> Oh Wikipedia, wrong in the very first sentence. "Mise" can indeed mean "placed", but here it's a kind of gerund and means "placing". (I looked for a Wikipedia reference to describe how this aspect of French grammar works, but all I can find is [http://forum.wordreference.com/threads/fr-nouns-formed- from-...](http://forum.wordreference.com/threads/fr-nouns-formed-from-the- past-participle-and-gender.2237940/))

</comment><comment><USER26> Did I miss something ?

<comment><USER27> Récursion as a literary device is intellectually stimulating, hence on topic. Furthermore, the y combinator is also about recursion.</comment></comment>


How much do 5000 Twitter followers cost? - <AUTHOR> http://blog.priceonomics.com/post/48141751230/how-much-do-5-000-twitter-followers-cost

<comment><USER2> I clicked through to read the criteria used to determine if a twitter user was likely fake: sadly, I fit a lot (hell, most) of the criteria.

I guess I better get going on Twitter before software deems me a bot, as opposed to someone who just isn't that into it.</comment>


The Python Invasion of the Everglades Is Even Worse Than We Thought - <AUTHOR> http://io9.com/the-python-invasion-of-the-everglades-is-even-worse-tha-1692402880

<comment><USER2> Could the problem be solved by eating pythons? We turn them into food supply and profit opportunity. We could also find some reward system for python hunters.

<comment><USER3> It will be very expensive. The Everglades is not easy territory to go hunting for pythons, and as you read, they lie in wait, which makes them hard to find.

[http://www.bloomberg.com/news/articles/2013-01-10/killing- py...](http://www.bloomberg.com/news/articles/2013-01-10/killing-pythons-for- cash-lures-hunters-to-florida-s-everglades) points out that it takes about 92 hours to hunt down snake.

In that month-long Python Challenge, which drew "1,600 people from over 30 states in the hope of cash prizes" only 68 pythons were killed. [http://www.dailymail.co.uk/news/article-2280518/Hunters- kill...](http://www.dailymail.co.uk/news/article-2280518/Hunters- kill-68-snakes-month-long-Python-Challenge-help-infestation-plague- Everglades.html)

<comment><USER2> Thank you for the info. I would have never imagined hunting them would take so long.</comment></comment></comment>


China Has a $590B Problem with Unpaid Bills - <AUTHOR> http://www.bloomberg.com/news/articles/2016-03-20/china-has-a-590-billion-receivables-problem-as-bills-go-unpaid <comment><USER2> I deal w/ some big enterprises and the bigger they are, the worst they are with payment. Decent BigCos will pay net 30-45 with the worst of them pulling a 60-75. You take the deal because that's their standard with everyone and it's a take it or leave it sort of thing with others in line who'll gladly take your place. And even with the net75 sometimes they will play stupid games like, oh we missed the last check run, I guess you'll have to wait another 15 days.

</comment><comment><USER3> I wonder how this compares to Western companies? Has anybody got any figures? I know that Tesco in the UK sometimes took over a year to pay suppliers.

</comment><comment><USER4> This is yet one more predictor of a collapsing economy. If it did collapse it would be a disaster for the world economy including ours. Hopefully it will be a "soft-landing".</comment>


Respect Is No Substitute for Love - <AUTHOR> https://moretothat.com/respect-is-no-substitute-for-love/ <comment><USER2> True, but just about anyone I meet has a claim for my respect, by virtue of being a human being. I am not morally obliged to love in the same way.</comment>


Perl 6 hands-on tutorial – A small introduction to a big language [pdf] - <AUTHOR> http://jnthn.net/papers/2015-spw-perl6-course.pdf <comment><USER2> I absolutely love Perl, and I think that the newest versions of Perl 5 have taken much of the good things that Perl 6 promised and added them. I really think that Perl 6 misses the point and removes all of the charm of Perl. Why change sigils and all of these operators? The people who don't like them aren't using Perl anyway, and they won't be using Perl 6 just because it implements them in a more obvious but less meaningful way.

I also don't think the addition of a more mainstream object system is a positive thing, but that's a debate for another time.

Edit: And it's not just about sigils, but about changing things for no meaningful reason, especially things that set Perl apart and make it what it is.

<comment><USER3> Name some things that they changed for "no meaningful reason".

As you state, Perl 5 has added a number of things that Perl 6 promised. So why would you want Perl 6 to just be what Perl 5 has become? They're two completely separate languages with _some_ shared syntax/semantics.

<comment><USER4> From an outside perspective, the distinction between Perl 5 and Perl 6 is confusing.

Are they literally separate languages?

Did Perl 5 come after Perl 6?

<comment><USER5> Perl 6 started around when perl 5.8 was released. Then Perl 5 went stagnant while most of the core language developers were working on Perl 6. After a few years where there were competing implementations of perl 6, and still some wild ideas being tested, folks that still were using Perl 5 watched the rest of the languages develop, and the growing buglist against perl 5, and starting poaching ideas from Perl 6, ruby, python, and improving the Perl 5 runtime.

Eventually, The Perl 5 camp committed to regular releases, and continued renewed development in the engine, and it is still pretty good. But the damage has been done @ this point -- a lot of the community has wandered off to other 'cool' languages and frameworks.

The confusion will continue, especially since it's become clear Perl 6 is quite the departure from Perl 5, and there is a _LOT_ of code in the wild using Perl 5. I've seen some talk of the Perl 5 folks asking Larry Wall to rename Perl 6, but he's declined to do so.

With perl6's grammar support, some folks are working on importing the perl5 grammar into perl6[0]. Fortunately, there's a very rich testing environment(in the form of CPAN) to ensure this effort will be stable.

[0] [https://github.com/rakudo-p5/v5/](https://github.com/rakudo-p5/v5/)

<comment><USER6> > a lot of the community has wandered off to other 'cool' languages and > frameworks

I am just one such. Half my career was writing Perl. But these days, most of my work is in Ruby and as a longtime fan of Erlang (but never having had the opportunity to use it in production), I'm taking a long look at Elixir+Phoenix. This tutorial wasn't enough to entice me back to Perl, and I'm wondering if there is anything at all that could.

In general we choose a language for their applicability to the problem domain. The focus on text manipulation in Perl 4, and then extension of this with an object framework in Perl 5, made it a shoo-in in the 90s and early C21 when we all needed form parsing, HTML template stuffing, and email mangling tools. In these days of dynamic DOM manipulation and event-driven microservices, it doesn't seem so relevant; whilst Node and Go and Elixir look entirely on point.

If you go look at the Perl 6 FAQ, there's a section, "Why should I learn Perl 6?". It lists a grab-bag of language features, rather than a set of problems that Perl 6's new design can solve. As a result it feels much like a solution in search of a problem. That wasn't even ever true of JavaScript, even though JS took years to come of age.

If I was designing a language today, and I am not, but if I were, I would look at how dominant Java seems to be in the big data community and try knocking it off that perch with appropriate language primitives, constructs and libraries. It seems to me this is the modern problem domain homologous to the bulk text mangling for which Perl originally became famous.

<comment><USER7> For event-driven microservices, I think Perl 6 is actually a great choice. I have experience writing some small things in Go and Node.js, but Perl 6 offers much more powerful high-level features for handling async, concurrency, and parallelism.

Promise combinators are built into the language to provide composable concurrency. But unlike using something like Q in Node.js, you can truly perform tasks across promises in parallel (and with static typing to boot!)

Perl 6 has channels for when you want Go style semantics, but you also have Supplies for when you want their dual: instead of pushing events through channels you pull them reactively. This allows you to write highly declarative code; see [https://gist.github.com/muraiki/222814d5928f648be3c1](https://gist.github.com/muraiki/222814d5928f648be3c1)

I think that P6 will also be awesome for data munging. Here's a pipeline that processes text from a file with 4 parallel workers.

      my $lines = open('foo.json', :r).lines.hyper(batch => 20, degree => 4)
      my $filter = $lines.grep: -> $line { $line ~~ /someregex/ };
      my $json = $filter.map: &from-json;
      my $foos = $json.grep: *<some_property> == 'foo';
      say $foos.list[8];

Since the operations are done in scalar context, they essentially operate lazily, pulling one value through the chain at a time. The pipeline is only activated once coerced to list context at the end, and only enough values as are required to find the 9th match are processed.

I've used Elixir before. It has some great features and having the power of BEAM and OTP is quite awesome. But sometimes the actor model is not what you want. I think that Perl 6 will be not just a great glue language, but also a powerful language for writing multi-paradigm applications that meet the demands of modern systems.

<comment><USER8> Fyi, Jonathan recently wrote:

> Also, the name channel is evocative of the concept in Go, but our channels > aren't like that. They don't block senders until the receiver is ready, for > example. While a blocking queue is a very useful thing to have in a > language, and we should keep it, we may want to stop calling it Channel, to > avoid confusion (and keep the name free for something that has the Go-ish > semantics).

(from [https://gist.github.com/jnthn/a56fd4a22e7c43080078](https://gist.github.com/jnthn/a56fd4a22e7c43080078))

(note that most of the changes mentioned in the gist have since been implemented)

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> "Try 0.1 + 0.2 == 0.3 in some other language, then try it in Perl 6."

Whoa, wtf python:

        $ python
        Python 3.4.3 (default, Jul 13 2015, 12:18:23)
        [GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin
        Type "help", "copyright", "credits" or "license" for more information.
        >>> 0.1 + 0.2 == 0.3
        False
        >>>

<comment><USER10> Why is this surprising? Floats are defined by the hardware essentially, not the language.

And this is how they work: they're binary, not decimal. Computers are binary, not decimal. 0.1 can't be represented exactly as binary.

Python has a decimal type, if that's what you want: [https://docs.python.org/2/library/decimal.html](https://docs.python.org/2/library/decimal.html)

I consider it a basic point of computer literacy to understand this.

<comment><USER11> That decimal literals represent binary floating point numbers is defined by the language, not the hardware.

I consider it a basic point of language design literacy that exact decimal literals without some other indicators should not represent an inexact type that isn't designed to represent decimal data.

Infuriatingly, very few languages get that right. But perl 6 isn't unique in doing so; Scheme had been doing it right for decades.

<comment><USER11> (Actually, Scheme doesn't quite get this right: decimals are inexact by default and only rationals expressed as divisions of integers are exact, though it is less cumbersome to specify an exact decimal than in most popular language -- its a literal modifier, not a function call.)

e.g.:

      0.2

is inexact, while

      #e0.2

is exact.

<comment><USER8> The use of an annotative '#e' to get an exact number contrasts with Perl 6's choices for the default interpretation of number literals. The Perl 6 choice adopts scientific notation to correspond to floats:

        200000000000000000000  # exact (integer)  2 * 10 ** 20
        0.00000000000000000002 # exact (rational) 2 * 10 ** -20
        0.2e-19                # inexact (float)  2 * 10 ** -20
        2e20                   # inexact (float)  2 * 10 ** 20

</comment></comment></comment></comment></comment><comment> the-owlery It's great that this is available (haven't worked through it yet).

Two major show-stoppers for me right now though:

* In the Perl 6 repl, I can't use my up/down arrows, or ^p/^n to get at previous lines I typed, nor ^a/^e and alt-B/alt-F to navigate on the line.

* In the repl, I can't do `doc(some-func)` to get at docstrings.

<comment><AUTHOR> > In the Perl 6 repl, I can't use my up/down arrows, or ^p/^n to get at > previous lines I typed, nor ^a/^e and alt-B/alt-F to navigate on the line.

Really? In they version I have access to arrow keys and ^p/^n/^a/^e all function.

I've just been informed that what you need is "panda install Linenoise" to install the Linenoise module to get this functionality.

I agree documentation in the language would be nice. A module could handle that nicely.

<comment><USER12> I think this kind of stuff should be available out of the box. I'm learning Perl 6 too, Inability to use the arrow keys has almost left the REPL unusable to me.

I'm just writing programs in proper files and executing them.

<comment><AUTHOR> I agree. Maybe rakudobrew should have a target that hits install, panda and p6doc and that being the default for new setups.

FYI, you can install p6doc with "panda install p6doc", which is the Perl 6 equivalent of perldoc. I don't believe it has in-language methods yet, but I imagine it wouldn't be that hard. For now, it's a CLI tool.

      # p6doc Str.tclc
       routine tclc

         multi sub    tclc(Str:D ) returns Str:D multi method tclc(Str:D:)
         returns Str:D

     Turns the first character to title case, and all other characters to lower case

     (not implemented in Niecza)

<comment> the-owlery Thanks. Tried installing but got errors.

        ==> Fetching p6doc
        ==> Building p6doc
        ==> Testing p6doc

        # Failed test 'empty blocks argument gives undefined content'
        # at t/pod-convenience.t line 31
            # Looks like you failed 1 test of 7

        # Failed test 'pod-with-title'
        # at t/pod-convenience.t line 23
        t/pod-convenience.t ..
        Failed 2/10 subtests
        t/pod-htmlify.t ...... ok
        Method 'super' not found for invocant of class 'Array'
          in sub visit at /home/me/.panda-work/1441386381_4/lib/Perl6/TypeGraph.pm:89
          in sub visit at /home/me/.panda-work/1441386381_4/lib/Perl6/TypeGraph.pm:89
          in method topo-sort at /home/me/.panda-work/1441386381_4/lib/Perl6/TypeGraph.pm:92
          in method parse-from-file at /home/me/.panda-work/1441386381_4/lib/Perl6/TypeGraph.pm:82
          in method new-from-file at /home/me/.panda-work/1441386381_4/lib/Perl6/TypeGraph.pm:30
          in block <unit> at t/typegraph.t:8

        t/typegraph.t ........
        Dubious, test returned 255 (wstat 65280, 0xff00)
        Failed 8/8 subtests

This is with a fresh (as of minutes ago) `rakudobrew build moar`:

        $ perl6 -v
        This is perl6 version 2015.07.1-728-g9c5cb50 built on
        MoarVM version 2015.07-108-g7e9f29e

<comment><USER8> Hmm.

I'm using my account on the Perl 6 community dev server hack.p6c.org.

I used rakudobrew to rebuild rakudo last night:

This is perl6 version 2015.07.1-215-ge6f3602 built on MoarVM version 2015.07-108-g7e9f29e

I just ran `panda install p6doc` and it worked fine for me.

What do you get when you run `perl6 -e '$*DISTRO.say'?

Investigating...

<comment> the-owlery This is on Debian Testing:

        $ perl6 -e '$*DISTRO.say'
        debian (22.214.171.124.amd.64)

Sorry, should probably take this to #perl6.

<comment><USER8> I rebuilt everything... and p6doc failed to build.

It turns out that the glr branch got merged about 5 hours ago (about the time you started commenting). I'm posting this now, before I catch up with the irc backlog, to give you a heads up, but I'd expect p6doc to be working again within a few days at the outside and quite likely by the end of today. (In the meantime you can use the web version at [http://doc.perl6.org.](http://doc.perl6.org.))

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> stopped reading on slide 7. What do you think this does:

       say 1.WHAT;

"say" prints something, and nothing was previously declared. What do you think it prints?

<comment><USER14> integer?

<comment><USER13> yes. Maybe it's more reasonable than I thought (or I gave more information than reasonable - I've now removed some.)

I don't think "say 1.WHAT" is reasonable syntax in the slightest.

<comment><USER15> > I don't think "say 1.WHAT" is reasonable syntax in the slightest.

The syntax is basically the same as Ruby or Python:

      # Ruby:
      puts 1.class
      # Python:
      print 1L.__type__

The names of the methods are different, and Python needs the L suffix, or wrap the integer around parens `(1).__type__` to avoid it confusing the dot with a float literal. But, besides that, the syntax is the same.

<comment><USER13> yes, class and __type__ seem very reasonable keywords to me, a yelling WHAT does not. the syntax is the same, except the choice of WHAT. I guess I'm the only one who considers it hopelessly odd. if "object1.class == object2.class" seems like something you might think of. But "object1.WHAT == object2.WHAT" is something that wouldn't occur to me in a million years, and makes me laugh even now that I've written it. I suppose you might disagree.

<comment><USER15> class and __type__ are no keywords here. They are just the names chosen for those attributes/methods.

I was just pointing out that what you considered unreasonable _syntax_ was actually pretty common syntax. That the function/method names could be better, I agree. But that's an entirely different matter.

<comment><USER8> > That the function/method names could be better, I agree.

Are you referring to python's choices, ruby's, Perl 6's, or all of them? If you think .WHAT could be better, is it the all caps you dislike or is it use of the word 'what' or both? What would you suggest instead?

<comment><USER13> to epidemian, yes, it's what I was referring to, sorry I wasn't more clear.

raiph: we're talking about perl 6's two choices for the things you've brought up, that it's in all-caps and that it consists of the contextually nonsense word 'what'.

The word "what" is one of the most common English words - so the opposite of a better, explicit choice, like type, class, classtype, etc - and doesn't even _mean_ "what-is" if you read it out loud. 3.WHAT doesn't sound like "What 3 is" \- it sounds like "3 - I didn't hear you" or if you're being very generous it means "What is 3?" (asking for its value).

You asked what I would suggest? If you want to be really cute and grammatical while sounding like a natural language, here is a suggestion. Instead of WHAT my suggestion is the word STYPE, and read it as though the preceding word had an apostrophe at the end: 3.STYPE, thiswindow.STYPE and so forth. (3's type, thiswindow's type, etc). anyway you asked for a suggesiton, there you have it. I woudn't use it myself though.

<comment><USER8> > the contextually nonsense word 'what'.

I don't buy that it's contextually nonsense. I suspect you had a bad reaction to it and have gotten caught up in that initial reaction. I could be wrong about that but your stated perspective is noticeably extreme and unique about a relatively tiny point.

> if you're being very generous it means "What is 3?" (asking for its value).

I don't think that's being especially generous. But yes, please be generous. :)

I don't think it's asking for its value.

What is Belgium? (Country) What is HN? (Time Sink) What is `4 -3i` ? (Complex Number). What is $age? (Int)

If you want a value you just write something like:

        say 3;    # 3
        say $age; # 55

> You asked what I would suggest?

Well I intended my comment for epidemian, but OK. :)

> If you want to be really cute

Perl 6 explicitly incorporates fun but also explicitly avoids "you think that's cute today" mistakes.

I like the choice of names for the pseudo method mop macros: what, which, where, who, why, how, etc. But that's partly because: I find them easy to remember as a group; I found them easy to understand once I'd encountered them once; and I've not seen anyone react negatively to any of them the way you have.

\----

Anyhoo, I hope you won't let your dislike for the rarely used .WHAT et al to unduly color your view of Perl 6. I don't expect the tutorial that's the topic of this HN to impress anyone but that's because it deliberately sticks to absolute basics. Instead, I urge you to wait until next year, and then take another look; I think you'll see there's a lot to like.</comment></comment></comment></comment></comment></comment></comment></comment></comment>


Spammy Google Home spouts audio ads without warning - <AUTHOR> https://www.theregister.co.uk/2017/03/16/google_home_audio_adverts/?mt=1489715790938 <comment><USER2> Wow, I like my Google Home, but if I heard something like this, I think I would return it immediately. And a lot of other people would too. It's supposed to be a neat tool, not an advertising platform.

This would basically be the equivalent of a Pixel phone showing a random ad on the home screen after you sign in. That would also make me return my phone if it were to happen.

<comment><USER3> And yet many haven't returned their Windows laptops after W10 started.

</comment></comment><comment><USER4> People are outraged because audio ads sound a lot more intrusive than visual ones. Google can seamlessly show ads on the web, but not so much on speakers. There's also a bigger shock because people presumably anthropomorphize the assistant and think of this as a betrayal. Everyone is trying to sell you stuff through these assistants. Maybe people don't want sales assistants.

</comment><comment><USER5> Is this a trend to "normalize" ads as Alt-content?

It's a pity we don't have any ad blockers and for Conversational assistants.

</comment><comment><USER6> I wonder if this was, in fact, an ad.

"By the way, it's Groundhog day today" or "By the way, [random interesting fact about the current date]" seems more like an inprovement.

I suspect that Google just somehow entangled 2017-03-18 with that movie release date, and people started to wonder if Gogole was somehow paid to do that.

</comment><comment><USER7> I feel someone with authority should ask Google about their official stance on this. For both current and future products.

When I buy a device, I want to know up front if I will be seeing ads. If someone wants to take my money _and_ feed me ads I normally take my business elsewhere.

</comment><comment><USER8> Several fiasco's with the Nest, Glass and now this have convinced me never to buy a Google appliance anymore.

</comment><comment><USER9> "We're continuing to experiment with new ways to surface unique content for users ..." \-- Yeah, right. This was totally an ad.

</comment><comment><USER10> I was considering buying one of these to play with. Not anymore. That is sheer lunacy.</comment>


How the World Learned About the Pentagon's Sky-High Nuclear Testing - <AUTHOR> https://www.theatlantic.com/science/archive/2018/11/operation-argus-how-cold-war-secret-new-york-times/575983/ <comment><AUTHOR> Dupe: [https://news.ycombinator.com/item?id=18524847](https://news.ycombinator.com/item?id=18524847)

<comment><USER2> Wow, HN's dupe detector is terrible. It's literally the exact same url, 3 hours earlier, and with more upvotes and comments.

<comment><AUTHOR> I actually submitted mine first. But it was ignored, and the HN-dupe detector allows for other submissions of the same URL to get through if the first doesn't hit front page.

The reason why my submission has a newer time stamp is because a mod flagged it to be re-upped, apparently not realizing that someone else's submission had since made it to the front page:

[https://news.ycombinator.com/item?id=11662380](https://news.ycombinator.com/item?id=11662380)

<comment><USER3> As a long time HN member since 2012 or so, I will say...

HN has become a lot harder to get a story to the front page or even upvoted, based on merit. I used to be able to get stories to the front page repeatedly early on. Then it became that you had to ask a few friends to help upvote it to give it a kickstart. Now it never gets to even 10 votes no matter how good it is, while the exact same story may hit the front page.

Meanwhile there are tons of people that have voting rings or paying for upvoting services.

Something needs to change, the same way Reddit's ranking algorithm was changed based on Randall Munroe's public suggestion.

I want to ask the HN submitters here: in the last 1-2 years, what percentage of your contributions have been upvoted to the front page organically and why?

Or maybe ask the other way... of those that have, what was it? Because it's certainly not the actual link or title, since ones submitted later with nearly exact same ones were upvoted much more heavily.

<comment><USER4> My submissions seem to be doing ok, you can check the list yourself. I don't ask anybody to upvote. In fact I don't know anybody with a HN account IRL.

@danso sorry for the dupe submission here. I don't consider it my responsibility to check for duplicate submissions. If HN cares about those, they can do it in software far easier than submitters could do manually.

<comment><AUTHOR> No need to apologize, happy to see the story discussed at all. And I've had plenty of dupes of my own upvoted over the original submission, it's just a matter of chance

</comment></comment></comment></comment></comment></comment><comment><USER5> Operation Argus was primarily a DARPA operation, if I am not wrong. Why are they writing Pentagon all over?

<comment><USER6> DARPA is an agency of the Department of Defense (to which the metonym "The Pentagon" refers).</comment></comment>


Supreme Court Upholds Workplace Arbitration Contracts - <AUTHOR> https://www.nytimes.com/2018/05/21/business/supreme-court-upholds-workplace-arbitration-contracts.html <comment><USER4> Time to pressure congress to change this.

A lot of people see SCOTUS decisions and think the matter closed, but congress with the flick of a pen could completely ban arbitration for employee contracts.

The employer/employee relationship is by its nature power imbalanced. If employers band together and all require arbitration (as they likely will via a standardised templated contract) employees cannot do much.

<comment><USER5> When was the last time Congress did something for the people against corporations?

<comment><USER6> That's a false dichotomy. Corporations are the basic units of the wealth- creation engine that gives Americans among the highest standards of living in the world, not to mention employs almost all of them. Doing what's good for the corporations is usually also what's good for people.

<comment><USER7> Maybe in some fantasy corporation-league version of America, but I see a constant stream of "oh, you lobbyists want concessions for your anonymous sponsors/donors/owners? Sure, always glad to get more votes paid for!"

The only way to keep the general populace from getting trampled as far as they will allow is to push back against all this.

I've said elsewhere, vote out every incumbent Congressperson. Once the current paid members are gone, if the new set appears to be voting by donor status, vote them out too.

Keep voting them out until we find a few decent souls who realize that we the people are serious about being represented, not sold.

I would use campaign contribution reports as a "who should be first out the door" list... individual personal donations of fixed maximum size only, everything else counts against.

<comment><USER8> If you want to reduce corporate influence, reduce the size and influence of government.

The more a central authority takes and dictates, the more lobbying and money will be the influence that runs them. When you have a powerbase of politicians that can make or break conpanies, industries, and entire regions with a law or regulation, you will naturally have players interested in that space working for their own interests above all else.

<comment><USER7> Deregulation is the worse case in that sliding variable... an effectual government balances between the various parties, preventing corporate abuse of power at the expense of individuals.

When existing government gets hijacked by power brokers, that's where we the people should step up and say no by voting out the worst offenders. Tha's our check and balance, and where I despair of getting people to understand and care.

</comment></comment></comment></comment></comment></comment><comment><USER9> From [https://www.supremecourt.gov/opinions/17pdf/16-285_q8l1.pdf](https://www.supremecourt.gov/opinions/17pdf/16-285_q8l1.pdf)

> It is unlikely that Congress wished to confer a right to class or collective > actions in §7, since those procedures were hardly known when the NLRA was > adopted in 1935.

Kind of funny they use this as justification considering everything else they've upheld that was adopted decades prior to this without knowledge of modern custom or technology. Convenient argument when it's serving their purpose.

<comment><USER10> In these cases, the correct SCOTUS answer is "we can't decide". The proper response is some sort of forced decision in Congress -- In a criminal case, a higher court can "remand" \-- order a lower court to review and decide. [https://en.wikipedia.org/wiki/Remand_(court_procedure)](https://en.wikipedia.org/wiki/Remand_\(court_procedure\))

We need the same for bitrotted legislation.

In effect, we do -- When SCOTUS says "We don't think past Congress made a decision about this, so we'll pick a default ruling", current Congress has every right and opportnity to hold a vote to make a decision. If they don't, that means they agree with the court, and just as well would have repealed the law if SCOTUS ruled the other way.

Now, in _practice_ Congress doesn't do its job (to busy campaigning for reelection), so inertia wields as much power as any considered deliberation....

<comment><USER11> Neither your nor the GP's point seems relevant to the quoted text, which seems pulled specifically to paint the SCOTUS decision in a bad light. I read it as a direct response to the claim of the employees in this case, which is that the NLRA intended to displace parts of the Arbitrage Act. They are just saying that, among other reasons, this was not a common policy and unlikely to have been meant even in spirit.

They further explain their approach to resolving claimed conflict between two pieces of legislation:

> And in approaching a claimed conflict, we come armed with the "stron[g] > presum[ption]" that repeals by implication are "disfavored" and that > "Congress will specifically address" preexisting law when it wishes to > suspend its normal operations in a later statute.

And specifically for the Arbitrage Act, because this is apparently a tactic that people keep trying:

> In many cases over many years, this Court has heard and rejected efforts to > conjure conflicts between the Arbitration Act and other federal statutes. In > fact, this Court has rejected every such effort to date […] Throughout, we > have made clear that even a statute's express provision for collective legal > actions does not necessarily mean that it precludes "'individual attempts at > conciliation'" through arbitration […] And we've stressed that the absence > of any specific statutory discussion of arbitration or class actions is an > important and telling clue that Congress has not displaced the Arbitration > Act.

So they're not saying "we can't decide," they're stating (I think): Congress can give employees more protection in this arena, but the laws as written are (1) not unconstitutional and (2) are not being interpreted incorrectly by lower courts.

</comment></comment></comment><comment><USER12> This is really, really disappointing. Contracts are supposed to be fair for both sides. In isolation, meaning for one specific purchase or one specific job, they are. But what happens when _every_ company and employer has this language in their contracts? What do they lose by including the language? They lose nothing!

<comment><USER13> This isn't disappointing at all as it reflects the state of the laws as they're currently on the books. Desiring or determining a court ruling based upon what you'd like the law to be rather than how it's currently written opens the door for legislation from the bench.

If workers want the law changed to ban arbitration clauses then they should ask their representatives to pass legislation to do exactly that. And if said representatives won't do so then they should elect someone else next election cycle who will.

<comment><USER14> Okay sure. But don't lose track of reality in your quest for idealism though.

There is a vast power imbalance between worker and corporation, both money and power. Businesses control the contracts, they have far more money, and, as a result, they have vastly more powerful lobbying. So in practice, there is no defense for workers anywhere! Kicking the can to "elect someone else" is just as naive as claiming that this decision respects the law on the books.

<comment><USER15> > Kicking the can to "elect someone else" is just as naive as claiming that > this decision respects the law on the books.

But...it does respect the law on the books. Your concern seems to be that the law is bad, and that the judiciary ought to change that law. I don't think there's a lot of disagreement about the former, it's the latter that's more controversial.

From an idealistic standpoint, enacting Federal law is necessarily onerous, owing to the requirement of a strong consensus so as to prevent a marginal majority from shoving Federal laws down the throat of a large minority.

> Okay sure. But don't lose track of reality in your quest for idealism > though.

Okay sure, it sounds like you don't care much for the idealistic standpoint, so let's talk pragmatism. If we can't gather this consensus at the Federal level, we have the levers of state legislatures to pass those same laws at a more local level.

Liberal states have the political will, the systems, and (if we're being frank) the majority of businesses that would be affected by Federal law anyway. They just need to have the will and pragmatism to compromise and pass their desired law at the state level until such a time that there's Federal consensus for that law.

<comment><USER16> "But...it does respect the law on the books."

No, it absolutely does not. It completely makes up a reason why this should be considered any different than any other instance where things have changed since a law was enacted.

<comment><USER15> > No, it absolutely does not.

Can you explain what the law on the books currently is, and how the majority opinion "absolutely does not" respect it?

> It completely makes up a reason why this should be considered any different > than any other instance where things have changed since a law was enacted.

Things have changed since a law was enacted by legislative fiat. The thesis behind those arguing the intended function of the judiciary is that any instance in the past where the judiciary has actually changed a law since it was enacted is considered abuse and not to be repeated.

</comment></comment></comment></comment></comment></comment><comment><AUTHOR> Ruling can be found here: [https://www.supremecourt.gov/opinions/17pdf/16-285_q8l1.pdf](https://www.supremecourt.gov/opinions/17pdf/16-285_q8l1.pdf)

</comment><comment><USER17> How do arbitration clauses compare to 'no sue' clauses. By the second I mean contracts that state one party shall not sue the other for a given thing. As far as I know, 'no sue' clauses are unenforceable. It seems to me that arbitration clauses prevent workers from suing their employers which would essentially be a 'no sue' contract.

I don't think the courts would miss this, so I am probably wrong here somewhere. Would anyone care to correct me?

<comment><USER18> I'm curious about this too. I thought arbitration clauses meant that for the conditions listed in the contract, you have to go through arbitration and wave your rights in going through the courts.

</comment></comment><comment><USER19> For those living in California, this issue of requiring arbitration contracts in the pre-employment stage is under consideration from the state legislature, and the bill has some heat on it.

 _This bill would prohibit an employer from, as a condition of employment or as a condition of entering into a contractual agreement, prohibiting an employee or independent contractor from disclosing to any person an instance of sexual harassment that the employee or independent contractor suffers, witnesses, or discovers in the workplace or in the performance of the contract. The bill would also prohibit an employer from requiring any applicant for employment or prospective employment or any employee to waive any right, forum, or procedure for a violation of any provision of the California Fair Employment and Housing Act (FEHA) or other specific statutes governing employment, as a condition of employment, continued employment, or the receipt of any employment-related benefit. The bill would also prohibit an employer from threatening, retaliating or discriminating against, or terminating any applicant for employment or prospective employment or any employee because of the refusal to consent to the waiver of any right, forum, or procedure for a violation of specific statutes governing employment. The bill would establish a specific exemption from those prohibitions. Because a violation of these prohibitions would be a crime, the bill would impose a state-mandated local program._

[https://leginfo.legislature.ca.gov/faces/billTextClient.xhtm...](https://leginfo.legislature.ca.gov/faces/billTextClient.xhtml?bill_id=201720180AB3080)

<comment><USER18> Another thing that makes me want to move to California. CA laws ban non- compete agreements with the state and there seems to be a tremendous amount of laws geared to protect the employee.

</comment></comment><comment><USER20> Purely as a matter of statutory construction, Ginsburg's dissent seems better reasoned.

<comment><USER21> Her dissent is "I wish I could write legislation from a bench and darn we don't have enough on our side".

It is _great_ that SCOTUS is starting to uphold the laws as they are on the books. Frankly, the idea that not legislators but the courts get to write the laws should be abhorrent. Courts need to stick to "is this law contradict other laws and hence is invalid" decisions.

Want to change the law? Get congress and senate to pass a new law and have a president sign it.

<comment><USER22> This seems like a particularly weird place to lay charges of activism.

The majority decision claims "It is unlikely that Congress wished to confer a right to class or collective actions in §7, since those procedures were hardly known when the NLRA was adopted in 1935." That's either an activist position or an original intent position; it relies on comparing circumstances today to the circumstances Congress is presumed to have had in mind.

The Court's current originalists are textualists to a man, and have consistently rejected arguments of the form "this law's authors didn't anticipate modern conditions". But today, they decided to restrict a right provided by the text of the law, and did so by appealing to circumstance and intent. (edited for clarity)

Legislation _was_ written from the bench today, and it wasn't Ginsburg doing it.

<comment><USER21> Law says X. New condition Y shows up. The law does not magically become X' where X' accommodates for Y.

If you want X', then pass the law that changes X to X'.

Edit: I'm editing this as NH blocked me from replying:

> Sure, we agree on that. But Law X will interact with condition Y somehow, so > the question is what property of X is preserved when addressing Y. This is a > pretty fundamental debate between constitutional scholars, not just a > lecture on how laws work.

I apologize if it came across that I was trying to lecture anyone on how the law works.

> Law X says "the right of the people to keep and bear arms shall not be > infringed". Condition Y is the development of new types of arms after the > amendment was ratified. Textualists and original meaning scholars say that > the text of the law should be preserved - the right to keep arms should > remain uninfringed. Original intent scholars say that the intended effect on > the world should be preserved, and then we have to decide what that is - <USER2> > keep flintlock weapons legal, to keep military-grade weapons of the day > legal, or something else?

It is the "Freedom of the press" argument. Does it mean that only "press" as it existed at the time is covered? The answer, in my opinion, based on the _current body of law_ is "No" because we do not have a law on a books that restricted the freedom of the press to something other than a totalitty of abstract idea of "press" and abstract idea of "freedom". If we did, and if that law was found to be constitutional, then the newer law would have trumped the old one.

This applies to the existing argument. I simply believe that Gorsuch and Thomas arguments have been misinterpreted. They are not some evil masterminds that are able to speak out of two corners of their mouth. They are originalists and they are applying a very simple "is there a law that has been passed which is more specific and was not found to be unconstitutional that affects the current issue? Yes => defer to new law. No=> defer to the original law"

<comment><USER16> "Law says X. New condition Y shows up. The law does not magically become X' where X' accommodates for Y."

But that's exactly what the majority decision here is saying! "Since class actions didn't exist back when the NLRA was enacted, we need to accommodate the NLRA for class actions" The court literally made up what they felt should happen!

<comment><USER21> FAA predates NLRA and NLRA did not define that it gets to override FAA.

</comment></comment></comment></comment></comment></comment><comment><USER23> Time for the big tech companies to double down on their no poaching/wage fixing agreements.

</comment><comment><USER24> Perhaps open-source software licenses should start including a stipulation that anybody using open-source software in any product they produce or consume, must submit to arbitration for any software patent suits.

</comment><comment><USER25> Seems like a net loss for workers of all kinds.

</comment><comment><USER26> "The rule of law no longer applies in the workplace."

      - <USER3>

</comment><comment><USER27> This is indeed a great verdict. It was 5-4 decision with all 5 conservative appointed judged voting in favour. Had Hillary won elections it would have been other way round.

<comment><USER10> Also might have gone the other way if the Congress hadn't unconstitutionally held a Court seat vacant in 2016.</comment></comment>


If Gmail were built with Drupal - <AUTHOR> http://bryanbraun.com/2013/11/09/if-gmail-were-built-with-drupal <comment><USER2> I can't work out if...

"PDOException: SQLSTATE[42000] [1203] User bryanbra_drp1 already has more than 'max_user_connections' active connections in lock_may_be_available() (line 167 of /home4/bryanbra/public_html/includes/lock.inc)."

...is the punch line or not.

<comment><USER3> Google's cache is up: [http://webcache.googleusercontent.com/search?q=cache%3Ahttp%...](http://webcache.googleusercontent.com/search?q=cache%3Ahttp%3A%2F%2Fbryanbraun.com%2F2013%2F11%2F09%2Fif- gmail-were-built-with- drupal&oq=cache%3Ahttp%3A%2F%2Fbryanbraun.com%2F2013%2F11%2F09%2Fif-gmail- were-built-with- drupal&aqs=chrome..69i57j69i58.4387j0j7&sourceid=chrome&espv=210&es_sm=122&ie=UTF-8)

<comment><USER4> Thanks for the quick cache link.

Heh, its a rant on Drupal. So the author is using Gmail as a "good thing" that would be made into a "bad thing" if it were implemented in Drupal.

Meta comment, I wonder when people using Gmail as an example of 'good' will figure out it doesn't have quite the approval rating they were thinking it had. Actual comment, its a known issue that programmers write things they like to use, not things other people like to use. It is one of the reasons programmers have an easier time figuring out modern technology that was built by other programmers, they already speak the underlying conceptual language. It is hard to see that gap unless you are a non-programmer.

<comment><USER5> Outside of the HipsterNews clique you'll find a great deal of people who like gmail very much, because it is a better interface than their old hotmail or Outlook Express inboxes.

<comment><USER4> Of the people I know who dislike Gmail very much, the comparison isn't to Outlook or Hotmail, it is to Gmail of 3 - 4 years ago.

</comment></comment></comment></comment></comment><comment><USER6> This is a great illustration of the difference between sites built with a CMS approach versus a custom built one, say using a web framework such as Django or Rails. It is usually easy for a non-programmer to build sites using a CMS but the end-user can often understand that it was obviously cobbled together using several clunky pieces. The result is often a poor user experience in terms of the user interface, functionality and performance.

<comment><USER7> And you know what the funny thing is? Drupal's UI/UX is usually often vastly superior to most other popular content management systems.

I've had the 'pleasure' of working with a variety of content management systems over the course of my career and Drupal is easy-peasy-lemon-squeezy. You wouldn't believe the shit that is out there, especially in the Enterprise world.

Edit: I mean, I hate PHP with a fiery passion and it would never be my language of choice for a project, but I'd still rather be forced to use Drupal and its clunky EAV-Design than abominations such as Typo3 (also PHP/Typoscript), Joomla (also PHP), DotNetNuke (holy crap, please kill me now, this must be the worst CMS of all time), LifeRay Portal (Java)...

<comment><USER8> I have worked with DotNetNuke, and while I agree that it is horrible, I have to say that HP/Autonomy/Interwoven's Teamsite/Livesite CMS is hands-down the worst piece of software (note: 'piece of software', not just 'CMS') that I have ever used. When you consider that companies will spend 7 figures for that POS, it boggles the mind...

<comment><USER9> I used some IBM CMS that was so bad I quit the job after two days.

Of course, the fact that I was hired into a content management position when I applied for an entirely different one, and wasn't told until the day I rocked up didn't help matters.

</comment></comment></comment></comment><comment><USER10> I've used drupal, and it has its place.

That said, I think the drupal community is the single worst offender in the "our software can do anything and everything and is perfect and you never need to use another one and you can't tell me otherwise" camp

"Drupal doesn't scale well" is met with "there are sites doing XX mn pageviews a month in drupal. Not, "Yeah, it is really optimized for sites that will have less than 30,000 users and less than 500,000 pageviews a month."

It is software that tries to be all things to all people -- that's fine, its a swiss army knife. But I really hate the fact that when you tell a drupal-fan that "This problem really needs a cleever" they try to tell you that the saw blade on the back could do that fine.

I learned web dev by way of Wordpress -> Drupal -> Django. Of those, I still use and love Wordpress and Django -- they're great tools for their respective jobs. Drupal? I personally just can't use it. You can't trust the drupal community to accurately participate in a conversation about "what is this optimized for" (they always say "everything!"), so you have to fact check every claim and that takes as long as building it in django.

<comment><USER11> > That said, I think the drupal community is the single worst offender in the > "our software can do anything and everything and is perfect and you never > need to use another one and you can't tell me otherwise"

The original post is a direct criticism of Drupal from someone in the Drupal community.

<comment><USER10> That's the problem with stereotypes and generalizations.

That there are people in the drupal community who are circumspect does not invalidate the overall point that the drupal community on aggregate/average is far less circumspect than the average open source community.

</comment></comment></comment><comment><USER12> Was healthcare.gov built with Drupal? I know lots of DC/Political sites are build using it (a horrid platform in my opinion). All I can find is the team is known for using it: [http://www.theatlantic.com/technology/archive/2013/06/health...](http://www.theatlantic.com/technology/archive/2013/06/healthcaregov- code-developed-by-the-people-and-for-the-people-released-back-to-the- people/277295/)

EDIT: Looks like they went custom _While Jekyll eliminates the need for a full-blown content management system for Healthcare.gov (and with it, related costs) people managing the site still need to be able to update it. That 's where Prose.io comes in.

Prose.io is an open-source content editor developed by Development Seed that gives non-programmers a clean user interface to update pages. "If you create content and run Jekyll, it requires content editors to know code," said Cole. "Prose is the next piece. You can run it on your on own servers or use a hosted version. It gives access to content in a CMS-like interface, basically adding a WYSIWYG [What You See Is What You Get] skin, giving you a text editor in the browser."

To non-technical users, Prose.io looks much like the standard "What you see is what you get" interface, familiar from Wordpress or Microsoft Word, with a couple bells and whistles, such as mobile editing._

</comment><comment><USER13> I'm not at all a big fan of Drupal, having quit it at 5...but my perception is that all things considered, this is not a bad interface compared to what most clients expect for their own website...and I'm not saying that in a woo-hoo! kind of way...It's _sad_ that people don't reflect more on how much a clunky admin UI can heavily hamper their content production.

I run a pretty simple instance of Wordpress for my blog, but I've updated my custom, hacked-up Jekkyl site far more often than that, as well as my Tumblr (to say nothing of what I put out on Twitter, or, I guess, HN). CMS UIs matter, and kudos to the OP for trying to preach on that.

</comment><comment><USER14> Am I the only one who thought the UI was surprisingly good, for being autogenerated? I'm not a CMS expert, but it looks fairly similar to something that mind come out of django's admin.

If a framework can give you that kind of a UI "for free" before you start working on customizing it, that's pretty interesting.

OTOH, I'll join the crowd in chuckling at their scaling problems. The funny thing is PHP is absolutely excellent for scaling. Call it a one trick bastardized pony, but if there's one thing PHP does well it's serving dynamic HTML pages using a mysql database while being 100% stateless. It's framework bloat that causes abominations like Magento.

Check out [http://www.techempower.com/benchmarks/#section=data-r7&hw=i7...](http://www.techempower.com/benchmarks/#section=data-r7&hw=i7&test=query) raw PHP shows up in the top 10, shoulder to shoulder with java, scala, and c++. To compare apples to apples (web frameworks), a popular php framework called codeignitor shows up about 35 spots ahead of something called "stripped rails" I'm not sure where fully clothed rails shows up because counting rows in that table is a PITA.

Call it a fractal of bad design and I won't blink twice (especially considering the latest fun I had with the fact that building a query string from an associative array is a third party library while splitting a query string into an associative array is builtin), but compare its performance to literally any other scripting language (including our beloved openresty nginx + lua stack).

PHP does one thing very well, I seem to remember that being part of something called "The UNIX philosophy".

Full disclaimer:

      1. I hate writing PHP, the best way to write PHP is to avoid
      stepping on land mines and use interfaces, OOP, and closures.
      2. I write PHP (and golang) for a living, but have
      professionally written python, java, perl, and TCL at various
      times. I'm also doing everything I can to get away from PHP
      while maintaining business continuity (mustache for views, new
      services in go).

</rambling>

[edit] formatting and grammer.

<comment><USER15> I don't think this post is shitting on PHP - Symfony, Laravel, Fuel, etc, all produce better content manipulation screens than Drupal does. Drupal's ecosystem has a lot of problems, the biggest of which being that they can no longer attract the kind of deveopers that are willing to fix the problems endemic to the ecosystem.

<comment><USER16> > I don't think this post is shitting on PHP - Symfony, Laravel, Fuel, etc, > all produce better content manipulation screens than Drupal does.

No, they don't. They don't produce them at all - that's left to the developer.

It's entirely possible to make a totally custom form UI in Drupal just like in Symfony et al. It just comes out-of-the-box with a default one.

<comment><USER15> I guess you're not familiar with the CRUD generation tools present in almost every PHP framework since 2008?

<comment><USER16> Find one that lets you say "I just want an image upload field here" via a single button like Drupal does and we'll talk. Drupal's doing a lot more than your average scaffold.

<comment><USER15> Symfony has had that functionality since 1.1, and all it requires is a one line yaml change.

<comment><USER16> Either I've missed massive parts of Symfony or we're not talking about remotely the same thing. Look at the Drupal screenshot in the article. It'd a full on widget, with add/remove controls, multiple upload, drag-to-reorder, etc. all with a couple clicks.

I've used a wide variety of PHP frameworks and none of them do that sort of stuff with a line of YAML. Comparing the default node form of Drupal to a completely custom UI built in a framework is absurd.

</comment></comment></comment></comment></comment></comment></comment><comment><USER17> "Error. The website encountered an unexpected error. Please try again later."... lol :)

<comment><USER18> I added "cache:" before the URL in chrome: [http://webcache.googleusercontent.com/search?q=cache%3Abryan...](http://webcache.googleusercontent.com/search?q=cache%3Abryanbraun.com%2F2013%2F11%2F09%2Fif- gmail-were-built-with-drupal)

</comment></comment><comment><USER19> As has previously been noted, this is a poor article.

It compares a default Drupal install against a finished (as finished as Gmail can be, considering they keep tampering with it) product.

I bet Gmail looked pretty janky before the front-end devs got hold of it too.

Thanks to Drupal's module-based architecture and the massive community around it there's few limits on what one can do with it - it's rare that a module doesn't already exist for what you want to achieve.

<comment><USER20> It's not a poor article because most people who build Drupal sites do not bother to change the default editing interface. I've seen the node edit screen of Drupal sites built by some of the biggest, most successful Drupal shops, and they all looked like out of the box Drupal. Most still had the "promote to front page" checkbox, even though it did not do anything.

This author (who is a huge Drupal proponent) is encouraging people to spend some design time and energy on the edit interface.

</comment></comment><comment> jack-r-abbit > If Gmail were built with _a stock install of_ Drupal _and nobody took even a > little time to customize it_

There. I fixed the title for you. I've built some Drupal sites in years and you can do a lot better than the shit form you have in the screen shot. There is a fabulous module that allows your node edit form to be in tabs on the left just like all the rest of form (less scrolling). There is a module that lets you create your own fields elements. You don't have to have forms like you show. If all you have to offer skill-wise is being able to install Drupal and use the edit node form... I don't think you have enough skill to build Gmail.

Sure, Drupal is not perfect but it does a lot of things and you can do a lot of things with it.

</comment><comment><USER21> there is a difference between an web-app and web-site, drupal is a CMS, it is meant to build web-sites. Or am I wrong about what drupal is? This is the same as tons of people that use wordpress as the best CMS, wordpress is good fit for many of those cases, but not all

<comment><USER22> I think Drupal was built to be a "content management framework" and not a "content management system". Out of the box, a system like Wordpress is substantially more limiting that a system like Drupal. You see Drupal projects like OpenScholar that are built with Drupal but are highly customized and don't really even look like Drupal. It's certainly possible to build a full- fledged web app with Drupal, whereas CMS systems typically have one core function. You can use Drupal as a CMS, but it does other stuff.

For most CMS use-cases I've come across, I'd rather use Wordpress. It's simpler for most website needs and provides substantially better default UI to editors.

<comment><USER23> Drupal is a CMS, but a highly extensible one. Yes, you can replace any just about any core feature. I needed a register for a new account feature that integrated with other parts of our site, so I rolled my own. I'm not super familiar with Wordpress but i didn't get the impression that it scaled to large sited with lots of pages (we have about 1000 static pages)

</comment></comment></comment><comment><USER24> I used to bitch about Rails.

Then I got a Drupal project.

Drupal is a heaping, steaming pile of shit.

Now I happily work with Rails again.

Thanks Drupal!

</comment><comment><USER25> It has to be this way. There's not a reliable way to optimize design for such a CMS, they have to create generic designs. However you can always create custom designs for your (let's say) mail application.

</comment><comment><USER26> I have used Drupal several times in commercial and personnel projects. If you can use it wisely, it increases your productivity a lot. In my perspective if you can solve problem with something and if customer happy with I just use it. Drupal has some horrible design decision which makes your life hard, but wait which framework/CMS is perfect! Don't RoR or Django have some downsides? Developer needs to know internals and act accordingly. I know what problems Drupal have and I am not sailing near that coasts. At the end of the day this makes everybody happy.

</comment><comment><USER27> A bit ironic, considering how the latest gmail update enraged most of us.

<comment><USER28> No. No, it did not enrage "most of us".

It enraged a small number of people, who happen to be the ones that spoke up. The people who don't care, or who liked it, mostly didn't bother.

<comment><USER29> My wife and I were both enraged, but alas, we failed to speak up in the proper venue for our views to be counted. We apologize for our poor timing, but would like to document our rage now, for your convenience.

<comment><USER30> Likewise, I'll document my complete indifference.

(heavy gmail user)

<comment><USER31> I'll register my satisfaction. I like how well the "social" and "promotions" tabs keeps the bulk stuff out of my inbox without requiring me to maintain a ton of rules.

<comment><USER32> I agree, the new inbox categories are absolutely _brilliant_.

Not every gmail change is perfect, but I think they've really done a good job of it generally.

</comment></comment></comment></comment></comment></comment><comment><USER33> I don't really understand this article. You compare the core node add/edit form with GMail's email compose form - and that's it? That's all Drupal can do? No, it's not even close. I understand that the core UI elements in Drupal are pretty bad, but why not mention how easy it is for a developer to clone that compose form? Why even use a node form to do the comparison (you're not creating content here). This just takes an unfair stab at Drupal without going in to any details at all.

<comment><AUTHOR> > I understand that the core UI elements in Drupal are pretty bad, but why not > mention how easy it is for a developer to clone that compose form?

Have you got any guide you can point to which shows how to do this in Drupal? The interface has been putting me off using it for a long time.

Thanks!

<comment><USER33> I don't have a guide on-hand but my advice, if you're new to Drupal, would be to take a few weeks and really explore the power of it (via contributed modules and some of your own development; if possible). The same thing scared me away initially (that was 8 years ago), but I've learned to love the power and complete flexibility that this platform offers.

Since we're talking about messaging, try out the Private message module. Right off the bat, you'll get a much cleaner form than the ugly node form. Private messages are also fieldable so you can add additional fields like attachments, labels, etc. Using the API (hook_form_alter()), you can do anything you want to any form at all. Then once you introduce a good theme, the possibilities are as endless as any other solution.

I'd also take a look at some of the Drupal 8 backported modules for Drupal 7 (if you're going to use 7). They introduced a number of great UI changes and made some of them available for Drupal 7 via modules.

<comment><AUTHOR> Thanks - I used Drupal a lot from v4.4-4.7 and then was responsible for the security of a handful of 4.5-4.7 and v6 sites. Neither task endeared me to it, but I know Drupal 8 is going to be pretty different, so seems a good one to look at.

The flexibility's great, but the code hooks felt like a maintainability nightmare ("just what's affecting this now? It's 6 months since I last looked at this module..."). A tradeoff I guess. I was also burned by broken modules (submitted a couple of patches, but it did defeat the point of off-the-shelf features), but Wordpress et al are no better at that either!

</comment></comment></comment></comment><comment><USER34> I don't have experience with Drupal...but these problems couldn't be solved with CSS?

<comment><USER35> Clearly you're not familiar with the markup that Drupal shits out.

</comment></comment><comment><USER36> long time drupal users here, it's not the easiest one to use, sure, however it remains to be the most flexible one, which I like. waiting for drupal8, and a bit concerned about its performance, hope it will be fine in the end.

<comment><USER15> Flexible compared to what? Any crud generator that I've worked with creates a better UI than Drupal, is almost completely customizable, and also loads faster.

Drupal is not a good piece of software.

<comment><USER23> Compared to other CMSs. Sure you can custom code with a crud like rails or similar, but that isn't particularly useful for some types of sites that Drupal is well suited for. We have about 1000 static pages that have to be edited passed though a workflow for approval by non tech users, and about 30 or so modules with custom custom code. These things could be done with rails, but we'd still be building it if we tried.

</comment></comment></comment><comment><USER37> Apparently his site is built with Drupal. This is very meta.

</comment><comment><USER38> at first I thought this was a jab at drupal... then I see it's drupal failing itself. I don't think it's scaling well to YC traffic.

<comment><USER39> In fact this post on HN is not only an interesting article but also a test of the author to see how drupal behaves in heavy load so that he can write another article ;-)

</comment></comment><comment><USER40> Who uses the default admin theme?

</comment><comment><USER41> In drupal we trust.. Wait for drupal 8 it's going to be Legen.......wait for it ............DARYYYYYYY!!!!!!!

</comment><comment><USER42> If GMail were built with Drupal, nobody would have ever heard of it, because it would suck and would have never gotten the kind of traction that GMail actually did.</comment>