On the Cleverness of Compilers - <AUTHOR> http://alexey.radul.name/ideas/2013/cleverness-of-compilers/ <comment><USER2> I've worked with a sufficiently smart compiler before: The HLSL (shader) compiler for the Xbox360. It truly is a grand experience. The general recommendation was to not try to outsmart the compiler. Write everything as straight-forward as possible. Just watch out for work done on values that influence the result but aren't really necessary (ex: multiplying by an input that will always be 1).

There were several occasions where I'd write out some elegant math and think "Yeah, that's pretty. But, it would run 30% faster if I transposed everything. But, then I'd have to hand-interleave the internals of all these functions..." Then I'd check the assembly output and Bam! the compiler was already producing exactly what I had in mind!

The downside was that it took several minutes to compile <100 line sources that produce <1000 instruction programs. That's with a language completely specialized around small-scale linear algebra that maps very directly to hardware that is completely specialized around small-scale linear algebra; with branching highly discouraged, all functions calls expected to inline away completely, no recursion, no pointers, no heap, no imports, tiny-if-any headers and a tiny standard lib.

It's my understanding that most of the smartness of the 360's HLSL compiler came from using O(n^3) analysis algorithms that were simply impractical at a larger scale. Our game had thousands of shader programs that were mechanically specialized for different situations. As a result, recompiling all of them after changing the tiny shared header took many hours. "Thankfully" the C++ of the game took so long to compile that we were already using Xoreax Incredibuild to distribute the compilation. We adapted that setup to distribute shader compilation and brought the turn-around time down to 15 minutes by leaching cycles from several dozen of my co-workers' machines.

<comment><USER3> Most optimizing compilers use data flow analyses which are cubic, so it's not just that it's O(n^3).

[http://dl.acm.org/citation.cfm?id=788019.788876](http://dl.acm.org/citation.cfm?id=788019.788876)

<comment><USER4> You can do pretty well for analyses where n is the number of variables instead of the number of program points / expressions. In those cases, the typical trick is to shorten the height of the tracked lattice, as you only get in trouble in a few places.

To make that concrete, control-flow analysis (which answers "which possible functions could I call through this variable?") is cubic in general. But if you cut it off to only tracking N separate functions and then giving up to ANY when you hit that N, you can cut off the few bad cases (e.g., all of the bindings to the function passed to map, which you will probably just inline later anyway) that generate the cubic behavior and keep your execution time well-behaved, even for whole program compilers, at very small loss of precision in practice.

<comment><USER3> If your language has pointers or aliases, precise call graphs are exceedingly expensive (for large programs), because you need a precise pointer or alias analysis. Do you have a link to a publication about the technique you describe?

<comment><USER4> There are meatier technical presentations around about the formal bounds, but I always recommend Manuel Serrano's early work, which is much more accessible than more modern presentations (my own included):

[http://dl.acm.org/citation.cfm?id=315891.315934](http://dl.acm.org/citation.cfm?id=315891.315934)

A good survey of many of the tricks used in practice (and the formal techniques, as well) is available in Jan Midtgaard's tome, which was finally published in the last year or so:

[http://dl.acm.org/citation.cfm?id=2187671.2187672](http://dl.acm.org/citation.cfm?id=2187671.2187672)

<comment><USER3> Cool, thanks. I wasn't clear whether you were talking about functional programs, but I can believe that it works for them.

</comment></comment></comment></comment></comment></comment><comment><USER5> Part of the reason compilers don't do really thorough analysis and optimization is that it makes the compiles take a long time.

But we can make that not matter if we rethink the relationship between the compiler and the programmer. What if you got the _first_ version of your binary very quickly, but then you could let the compiler run arbitrarily long, and watch it continue to produce better and better versions?

What if the compiler could compile not just source code, but _diffs_ of source code? It could apply your one-line change without redoing its exhaustive analysis of all the things that you couldn't have effected.

Compilers try hard to avoid whole-program analysis, but I think that's misguided. Spend the cycles, they're getting cheaper all the time. If you can update your analysis incrementally as the programmer works, you're golden.

<comment><USER6> > Part of the reason compilers don't do really thorough analysis and > optimization is that it makes the compiles take a long time.

Compiler flags are all you need to solve that, no?

<comment><USER7> Only in the strictest sense. The mere presence of the switches does nothing on its own to improve the workflow. You need a development environment that is aware of why you're running the compiler: basic syntax checking, deeper static analysis using expensive heuristics, unoptimized code generation for quick turnaround time on correctness tests, or optimized code generation for performance testing.

</comment></comment></comment><comment><USER8> > Doubtless the first difference that jumps out at you is that one of these > programs is written using a beautiful, familiar surface syntax that makes > you feel right at home, while the other uses an ugly, foreign notation that > makes your eyes glaze over.

I love that sentence. A sharp-witted summary of the recent _imperative_ vs. _functional_ discussion.

<comment><USER9> "One is a genius, the other's insane."

</comment></comment><comment><USER10> For people who are interested in learning about compiler optimizations (they are a wonderful area of research in their own right!), I'm throwing out a list here so you can google about them (if you know more, please reply to this comment! I'd love to learn more about them :D)

Expression related optimizations: Constant Folding, Constant Propagation, Global Propagation, Strength Reduction, Common Subexpression Elimination, Partial Redundancy Elimination, Induction Variable Elimination, Reassociation

Loop related optimizations: Loop Invariant Code Motion, Loop Peeling, Loop Unrolling, Loop Distribution, Loop Autoparallelization, Loop Fusion, Loop Fission, Loop Interchange, Loop Tiling/Stripmining, Vectorization, Scalarization

Memory/cache related optimizations: Cache blocking, False Sharing Elimination, Structure Peeling, Structure Splitting, Array Contraction, Multi-dimensional Array Dimension Reordering

Control flow related optimizations: Code block re-ordering (by frequency), Branch prediction (by static analysis/feedback guided), Code hoisting/sinking (to optimize CPU pipeline), Automatic Inlining, Tail Call Optimization

Code generation related optimizations: Register allocation (np complete), Peephole optimization, Superoptimization (no one really does this yet, but cool nonetheless)

Analysis (interprocedural/intraprocedural): Alias Analysis (flow/context (in)sensitive), Points-to Analysis, Escape Analysis, du chain Analysis, Live Variables Analysis, Memory Access Pattern Analysis (to guide memory layout optimizations), Available Expressions/Copies Analysis, Loop Dependency Analysis, Control Flow Analysis, Dominator data flow Analysis, Globals Analysis

Miscellaneous: Static Single Assignment, Data Flow Analysis (in, out, transfer, meet!), Worklist Algorithm (for Data Flow Analysis!), Symbolic Execution/Abstract Interpretation

Writing straightforward code is the best thing you can do for a compiler. They can tell exactly what you want to do, and do their best to generate the fastest/most memory efficient code possible. Help compiler help you!

Also, compiler usually comes with several different levels of optimizations. And you can tune each one of these optimizations, like you would with a racing car. Read the manual!

<comment><USER11> Please don't use all caps for emphasis.

<comment><USER10> I'm sorry it bothered you. I'll edit them.

<comment><USER12> [https://news.ycombinator.com/formatdoc](https://news.ycombinator.com/formatdoc)

</comment></comment></comment></comment><comment><USER13> What ever happened/happens to Stalin [1], the scheme compiler? That's supposed to be a real Smart Compiler, right?

It's so mysterious... It's developed by this one guy. The only thing you can find on his website is a tarball [2]. It's like programming mythology.

[1] [http://community.schemewiki.org/?Stalin](http://community.schemewiki.org/?Stalin) [2] [https://engineering.purdue.edu/~qobi/](https://engineering.purdue.edu/~qobi/)

<comment><USER14> It's a test bed for aggressive control-flow based optimization a for Scheme. It's not a practical production compiler--too slow and requires whole program analysis.

<comment><USER15> Right, the qobi doesn't even use that scheme in his AI class. He uses another scheme that he wrote. =)

</comment></comment></comment><comment><USER16> Compilers _are_ getting smarter over time. Better analyses and clever optimization schemes are being designed and implemented. In my opinion though, as a compiler writer, the best route is to make languages easier to analyze. Things like purity and referential transparency (e.g.: as seen in Haskell) make code analysis and transformation much simpler. They enable things like pattern-matching type transformations on code. If the compiler has to reason about pointers, invisible side-effects and alias analysis, it greatly limits the kinds of things that can be inferred about a program.

</comment><comment><USER17> This article was worth it to me if only for the following observation:

 _And there we have a clue as to why, in modern computing, modular code is not high-performance code. The very advantage of modularity is the source of its performance cost: modularity is the ability to do things other than what you did. Modularity is the ability to reuse the same idea in many different ways and in many different places._

<comment><USER18> See also Rust's emphasis on zero-cost abstractions [1]. The current compiler doesn't emphasize specialization (though it does specialize generics), but the ability to abstract in source code without leaving any trace in the actual compiled binary is a design goal.

[1]: [http://www.infoq.com/presentations/Rust](http://www.infoq.com/presentations/Rust)

</comment></comment><comment><USER19> The first encounter I had with automatic differentiation was in a simulation language called PROSE, circa 1974. I never actually used it, but I came across a manual for it, which I found quite fascinating. As I recall, it ran on the CDC 6000 series -- at the time I was doing numerical physics on a 6400, and PROSE was being presented as an alternative to the ubiquitous FORTRAN.

PROSE seems to have been completely forgotten; I can find nothing on it now. But I distinctly recall that it did AD.

Everything in computer science was invented before 1980 :-)

<comment> fsck--off This page should keep you entertained for a while:

[http://metacalculus.com/prose.html](http://metacalculus.com/prose.html)

It links to several manuals (most likely including the one you read) and has links to papers about PROSE and it's predecessor, SLANG.

<comment><USER19> Oh wow! Thanks!!!

</comment></comment></comment><comment><USER20> Wow thats quite coincidence, but before I get in to that, I like the the tone on HN much much better today. There were several language related posts, all were reasonably well received. None with the frequent hostility that I have come to see on HN in the recent past. No one, came here to piss and rain smugly on another's voluntary piece of work with "Repeat after me, no one gives a flying f%$#! about your language, where are the libraries, where are the users. Dont waste your time in pointless excercises".

That said, the coincidence that I mentioned is entirely personal. After a hiatus, I am getting my toes wet again in this language that I find quite interesting. Its a whole program analyzed, aggressively inlined, functional, but not purely so, ML like type-checked and type-inferred language with generics that interacts quite effortlessly with C++, without the need for any ffi like library. It has coroutines and preemptive threads.

I think of it as something that does the same to C++ what Scala does to Java or F# does to C#. It is really performant and achieves the speed via aggressive inlining, tail calls, whole program analysis and what can be called opportunistic but indeterminate laziness. I have not quite grokked its model yet, one thing that I want to get a handle on is to be able to reason what triggers garbage collection and what doesn't. According to the author of the language, garbage collection can be mostly avoided, but I am not yet good at this aspect, but its just been a few days that I have actually used the language (as opposed to reading about it).

Its statically typechecked but feels unusually flexible in one aspect: one can move functions and types around the between and across different translation units freely (for refactoring) without the need for forward declarations because the linkage semantics are permutation independent.

The language that I am talking about is Felix [http://felix- lang.org/share/src/web/tutorial.fdoc](http://felix- lang.org/share/src/web/tutorial.fdoc) [http://felix- lang.org/share/src/web/nutut/intro/intro_index....](http://felix- lang.org/share/src/web/nutut/intro/intro_index.fdoc). It has been discussed on HN a few times and I have mentioned it a few times myself just because I find it really interesting, not because I have a dog in the fight. The language author does frequent HN but very very rarely.

</comment><comment><USER21> Personally, the way I want to write that program involves destructuring. All the cons, car and cdr crap makes my eyes glaze over almost as bad as the js.

More on topic, it seems like at least in the example given, inlining of functions followed by standard optimization would give good results, and I thought we were pretty decent at inlining. Is that just because the example is so simple, and the point is that that ability needs to be more general?

<comment><USER22> I don't know if the author stopped at that level on purpose. That's basic SICP abstraction layer. And I believe types and then pattern matching was another abstraction on top of that to get literal symmetry, but to my eyes at this point it's two faces of the same coin.

</comment></comment><comment><USER23> > Doubtless the first difference that jumps out at you is that one of these > programs is written using a beautiful, familiar surface syntax that makes > you feel right at home, while the other uses an ugly, foreign notation that > makes your eyes glaze over

But I'm not sure all of us would agree which program is beautiful/familiar and which is ugly/foreign...

Edit: I love LISP, but I love math more.

<comment><USER24> I read that as somewhat tongue-in-cheek. I mean, I'm a lisp fan too, but it's not like the syntax is beautiful. (It's just "not as bad". Or that's what we tell ourselves.)

<comment><USER25> I read it as intentionally ambiguous.

<comment><USER26> It's almost certainly intentionally ambiguous, and therein lies the joke.

</comment></comment></comment></comment><comment><USER27> Well. This made me install Firefox 23, to get asm.js. I got a speed-up of x5 on his Mandelbrot code. Wow.

(I had Firefox 20 before. I checked a few websites and didn't notice any speed-up in general.)

PS: of course you can write modular code in JS too, with a complex lib etc (maybe not quite as nice as scheme). Would it be compiled to be as efficient?

<comment><USER28> Not unless the compiler did some magic to remove the heap allocations, which iirc none of the JS engines do yet LuaJIT, however, will. see [http://wiki.luajit.org/Allocation-Sinking- Optimization](http://wiki.luajit.org/Allocation-Sinking-Optimization) . I believe the Dart VM does this too, so it might not be far off for JS engines.

Still, other semantics might slow the code down compared to ASM.js, but the heap allocations will be the biggest.

</comment></comment><comment><USER29> I know little of the field and nothing of the state of the art, but wonder how smarter compilers would combine with the statistical analysis that profile- guided optimization, the JVM and branch prediction logic do. Do the improvements they bring up add up perfectly, or is smarter compilation more effective for dumber CPUs/runtimes?

</comment><comment><USER30> Interestingly ,I get 0.86 mflops/msec on my 2.1 ghz sanybridge processor on firefox and 0.307 mflops/msec on chrome.

<comment><USER18> If it's a recent version of Firefox, the "use asm" in [1] probably explains the difference.

[1]: [http://alexey.radul.name/ideas/2013/cleverness-of- compilers/...](http://alexey.radul.name/ideas/2013/cleverness-of- compilers/mandel.js)

</comment></comment><comment><USER31> How does DVL compare with optimizations GHC runs? Especially re the ad library?

</comment><comment><USER6> I'm actually a little disappointed that a mature compiler like javac doesn't seem features such as escape analysis and being able to compile Enum types to primitive values (compiling them to a single byte would be enough for most constants). I might be wrong about these specific cases, but my overall impressions is that compilers like the main one for Java aren't very adventourous when it comes to compiler optimizations. They sometimes seem pretty primitive, even. It's understandable if optimizations would add a lot of time to the compilization, but I don't see why it can't be added as compiler flags at the least, to be used for shipping software.

I have never hacked compilers myself, so I might be totally off the mark on all of this. And the specific things I've mentioned might be much harder than what they seem at a cursory glance. But this post is more of an inquiry into the matter than a definitive statement about the status quo.

<comment><USER32> Keep in mind that javac is only half of the compiler, the JVM is the other half. I'm not sure you need escape analysis when you compile down to JVM bytecode. Could you show an example?

<comment><USER6> I'm talking about stuff like having a method where you make an object - let's say comprising of two ints, a coordinate - and figures out if it can instead solve the same problem with, say, just making two stack-allocated ints instead of one heap-allocated object. Maybe the programmer wanted to make an object since it looked more readable than making two ints.

<comment><USER33> Java does that, it just happens in the JVM during jit

<comment><USER34> Yes, that is the pretty standard scalar replacement of aggregates optimization.</comment></comment></comment></comment></comment>


Why Relational Data Failed - <AUTHOR> http://nerds-central.blogspot.com/2012/01/5-reasons-relational-data-failed.html

<comment><USER2> _The relational data model because thought of that the got to solution for data storage and persistence, or did it. Actually, that was something of a fashion which never full took hold (think of IMS) and is now in sharp decline._

Your intro paragraph makes no sense.

<comment><AUTHOR> Wow - how did it get that badly screwed up? Thanks for pointing that out.</comment></comment>


The Economics of Cryptocurrency Pump and Dump Schemes - <AUTHOR> https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3303365 <comment><USER2> Weak. Do a paper on the Twitter bots that were giving away free ETH and see if you can draw some meaningful conclusions on that and maybe get twitter to fix it.</comment>


Evidence the government will present in the Silk Road trial - <AUTHOR> http://www.dailydot.com/crime/silk-road-ross-ulbricht-evidence-list/ <comment> at-fates-hands This is all you need to know:

 _After federal agents put Ulbricht in handcuffs, they say they had his machine still logged into Silk Road's backend. He was working on user support tickets when it happened._

And this little ditty:

 _Being allegedly signed into Silk Road as Dread Pirate Roberts, signed into the Pidgin instant messenger app as Dread Pirate Roberts, and chatting with Cirrus (there's that name again) will all be important as the prosecution attempts to solidify the links between Ulbricht and Dread Pirate Roberts._

GAME. SET. MATCH - government. Any hacker knows the last thing you want to have happen is having the feds nab you while you're still logged into a session. No encryption, no quick nuke command. This is the worst possible scenario and the Feds caught him with his pants down.

<comment><USER2> The only way he's going to get out of this is on a technicality, and that is extremely unlikely. If he does get off they have the attempted murder charges. He's looking pretty finished before the trial even starts.

Does this leak taint the jury?

<comment> at-fates-hands >>> Does this leak taint the jury?

Nope.

The attorneys will ask potential jury members during the selection process if they have been following the case in the papers. If the have, it may be grounds for challenging a person to serve on the jury for this specific case if they have a pre-determined view about Ulbricht's guilt or innocence.

The process is total chess match since both sides want to get people who are sympathetic to their client or their cause. You should watch the movie "Runaway Jury". In the meantime, here's a quick overview of the jury selection process works:

[http://criminal.findlaw.com/criminal-procedure/how-are- poten...](http://criminal.findlaw.com/criminal-procedure/how-are-potential- jurors-selected.html)

<comment><USER3> (Assuming this is a leak from the prosecution, which is not entirely clear)

Does this leak violate his right to a fair trial by fabricating grounds to disqualify many potential jurors who would be sympathetic to him?

If it doesn't (which seems probable), would a severe enough leak of this kind do the above?

<comment> at-fates-hands >>> Does this leak violate his right to a fair trial by fabricating grounds to disqualify many potential jurors who would be sympathetic to him?

Nope.

This is because during the jury selection process or "voir dire" each side has a set number of "Peremptory Challenges" which either side doesn't need a reason, they just say, "Jury Member #23 - Peremptory Challenge" and they will be removed no questions asked.

The other kind of challenge is called "Challenge for Cause" of which either side has an unlimited number of. This is where one side will challenge a juror based on certain criteria like "implied bias" or "actual bias". At this point the attorneys have to present their arguments to the judge and the judge makes the final call on whether the juror will be dismissed or kept.

Once each side has exhausted both sets of challenges, you normally have enough people to fill a jury with several alternates.

Because of how fair the process is it means the odds of getting people who are sympathetic to him have an equal chance of getting on the jury, just as there are of getting people who think hackers are the worst people on the planet. This is why its such a chess match. Each side is trying to get enough jurors to sympathize with their client, or the tip the balance in their favor based on the questions they are allowed to ask in order to uncover any kind of bias, or certain beliefs they have which would make an attorney think they will likely support their client and see him as innocent.

>>> If it doesn't (which seems probable), would a severe enough leak of this kind do the above?

Not until after the jury has been set.

Then the judge has to determine if there are enough leaks, and how damaging to the trial they will be. The judge can also sequester a jury which means they won't get any news of the case. Remember how awful the leaks were in the OJ Simpson case? Judge Ito knew it was going to be a circus and sequestered the jury right away. The paper the jurors got each day had all the OJ stories cut out, and they weren't allowed to have a tv or magazines or anything which would inform them about what was going on outside the courthouse with the case. They just moved between the courthouse and their hotel where they were staying the entire trial.

Of course you can also opt for a change of venue before a trial starts and before jury selection to try and get a jury better suited for your client. Some of the more high profile cases where this has happened:

1 - Rodney King Case. The appeals court granted a change in venue from LA to the neighboring Simi Valley because of the "saturated media". Simi Valley just happened to be an affluent white community. Is it any wonder the cops were acquitted in record time??

2 - Oklahoma City Bombing - The attorneys for Timothy McVeigh successfully argued for a change of venue because they felt there was a substantial prejudice in OK City against McVeigh and felt there was no way he would get a fair and impartial trial. It was granted because of the amount of coverage and the stories in the press "demonized" both defendants. The venue was changed to Denver Colorado. McVeigh was still found guilty despite the change of venue.

3 - Boston Marathon Bomber - A judge recently denied a change of venue to Dzhokhar Tsarnaev saying the although the media attention was significant and ongoing, but said Tsarnaev's defense attorney's failed to prove how it would prejudice a fair and impartial jury. His trial is set to start in Sept. of 2015.

</comment></comment></comment></comment></comment><comment><USER4> This is a pretty poor write up.

"The government's argument is that, as the site's alleged administrator, Dread Pirate Roberts, anything that occurred there is his fault."

The government's argument is that Ulbricht, as the alleged administrator of the site who was not only fully aware of what was happening, but was designing and tailoring the site to facilitate illegal behavior, courting dealers/criminals to the site, and profiting from the illegal activity he facilitated, so he was engaged in a criminal conspiracy. "Anything that occurred there is his fault" is a ludicrous misrepresentation of what an accusation of criminal conspiracy means.

Also with that pile of evidence, esp. finding him logged in as the admin. while arresting him, it's looking completely unlikely that Ulbricht would not be found guilty, esp. with the completely inept/absurd responses by the defense team.

<comment><USER5> > but was designing and tailoring the site to facilitate illegal behavior

So if I have booths built at my nightclub that make it easier for dealers to sell smack without others being able to see...

It's a crime to build furniture?

How is that sane?

We're at the point in the drug war where it's such an unspeakable and incredible failure, that the government feels empowered to twist laws or even make them up on the spot to get the rare PR victory (that will of course mean no real world change).

It's sick.

<comment><USER6> _So if I have booths built at my nightclub that make it easier for dealers to sell smack without others being able to see..._

If you advertised it as "NoMoreNicksLeft's House of Smack Dealing, totally anonymous drug-dealing booths, reasonable rates, guaranteed privacy and security for all your drug-dealing needs"... then I think you can see where the issue is.

And the issue with Silk Road is largely that it was explicitly designed to cater to, and advertised as catering to, illegal activity.

<comment><USER7> > then I think you can see where the issue is.

Like Goldman Sachs owning a classified service that caters to sex traffickers? Alright feds, let's see some heads roll.</comment></comment></comment></comment>


Survey says: gays & lesbians preferred over homosexuals in military - <AUTHOR> http://languagelog.ldc.upenn.edu/nll/?p=2114 <comment><USER2> > The largest observed difference in support for spending was between the > traditional category "welfare" and the two variant forms "assistance for the > poor" and "caring for the poor."

It's the same reason unpleasant jobs have the name of the job changed every 10 to 20 years. Janitorial services, custodial services, sanitation technian, etc... in the beginning, it avoids the stigma of what it is - cleaning up dirt/filth/etc. Over time, people catch up, and you have to change the name of it again. Arguably "Secretary" to "Executive Assistant" is the same thing.

Welfare works similarly - when it's rebranded, it does well for a while, then sinks back down into unpopularity. When someone says "social safety net" these days it tends to evoke a more favorable response, but they usually don't mean anything significantly different from general welfare, unemployment, and other state-provided assistance. But a social safety net doesn't have the same associations with welfare, so it's more favorable right now. If social safety net acquires the same connotations as welfare, the name will be changed again in 10-20 years.

</comment><comment><USER3> They should have also tested "gay men" and "lesbians" separately; I have a feeling that people were only more positive to the "gay men and lesbians" aggregate category because people haven't actually internalized the idea that women serve in the military—so when you say "homosexuals", the image triggered is purely of gay men, and that gets neither the feminist nor lewd-fantasy vote.

</comment><comment><USER4> Those interested in the (extensive) science of framing biases in human reasoning will want to consult Kahneman and Tversky's classic "Choices, Values, and Frames": <http://amzn.com/0521627494>

Yes, it's dry and scholarly and will require that you relearn basic statistics. You want to read it anyway.

<comment><USER5> Read "Judgment Under Uncertainty" first.

</comment></comment><comment><USER6>
      "A cynical commenter at TPM suggested the control experiment
      of asking people if they favor "heterosexuals" serving
      openly in the military."

I think that would actually be a very enlightening experiment.

</comment><comment><USER7> Reminds me of an old story of a politician "slandering" his opponent in the campaign by telling the mostly poorly educated locals things like "Do you know what that man did at college? He matriculated!" in a tone that suggests that's something sleazy. There was no means to rebut it. It was true and if you then gave a vocabulary lesson to your voters, you would just be calling them stupid.

<comment><USER5> Citation if available?

<comment><USER7> I don't have a citation. My understanding is that it is a true story. If you want to look for it, you might check for mudslinging political campaigns in the Deep South of the US prior to, say, 1950 (possibly even 1800's).

EDIT: Found a reference to this:

 _Reynolds told the backcountry crowds that his opponent had once sunk so low as go up to Harvard (pronounced HAW-vud). What did the man do there? Why, he "matriculated"! And, worse, he became "a thespian"! Imagine.

Naturally, Reynolds won the race._

[http://archives.cnn.com/2000/ALLPOLITICS/stories/02/21/morro...](http://archives.cnn.com/2000/ALLPOLITICS/stories/02/21/morrow2_21.a.tm/index.html)

<comment><USER5> Arigatou.

</comment></comment></comment></comment><comment><USER8> More proof that humans are fucking crazy.

<comment><USER5> Why is this downvoted? This is exactly what the experimental results coming out of the field of heuristics and biases say.

<comment><USER2> Because it's not particularly insightful? Also, humans aren't "fucking crazy" so much as they make near-instant judgments sometimes in flawed ways, with associations, context, language, and thought getting jumbled up and being hijackable sometimes.

(That said, wow, it's so cool to be responding to a comment by Eliezer Yudkowsky, you're like a hero to me and brilliant and thanks for all your work on Bayes, rationality, and thinking, and tsuyoki naritai, and that three worlds collide story, and all the rest - seriously, huge admirer of yours here)

<comment><USER5> > Also, humans aren't "fucking crazy" so much as they make near-instant > judgments sometimes in flawed ways, with associations, context, language, > and thought getting jumbled up and being hijackable sometimes.

With respect, and with gratitude for your compliments, I ask: Is there really that much of a difference?

<comment><USER2> > With respect, and with gratitude for your compliments, I ask: Is there > really that much of a difference?

I think so. "Fucking crazy" implies a madness/insanity/etc that can't be overcome. It's fine if you're trying to make a point and need quick words ("Wow, humans can be really fucking crazy sometimes" in response to a story), but pointing out _how_ humans are crazy also shines a light on potential solutions.

Saying, "People are prone to making associations with certain words instead of concepts" is helpful - you can think, "Okay, then how can I use descriptive words that aren't loaded with unnecessary baggage?" Or if you're trying to persuade, you can look for terms that are favorable. Or you can point out the error in word association. Or you can try to "humanize" the concept - that's my guess at what happened in this particular story. "Homosexuals" implies someone else - a third party, an enemy, "not one of us". "Gay men and lesbians" implies people, humans.

Just writing off humanity with, "People are fucking crazy" makes it easier for people to shrug their shoulders and say, "Well, that's how it is." Instead, I think it's something to be overcome. The more we point out exactly what our errors tend to be, the more we can work specifically on them.

<comment><USER5> Fair enough, but I hope you won't overlook the points that:

1) People are, in fact, fucking crazy.

2) People often have difficulty in coming to terms with the above fact in its _simple_ form, to the detriment of their development as rationalists; it's why I use "People are crazy, the world is mad" as a slogan. They pass up opportunities like a valid startup idea or signing up for cryonics because they think that other people will laugh, and they haven't gotten on a deep gut level that the people laughing at them are crazy. Vide: <http://wiki.lesswrong.com/wiki/Conformity_bias>

This is why I objected to the downvoting of the original comment (I'm pleased to see it's been voted up now). The referenced poll _is_ , in fact, more proof that humans are fucking crazy, and people _need_ proof of that.

</comment></comment></comment></comment></comment></comment><comment><USER9> Coding monkey, programmer, software engineer. What's the difference?

<comment><USER10> PHP, Python and J2EE respectively ;-)

<comment><USER11> Well, if using Python over J2EE is wrong, I don't want to be right.</comment></comment></comment>


What are you looking for in a developer? - <AUTHOR>

What characteristics do you want? What core concepts should they know? What would you want in a portfolio?<p>Platform related: What do you want in an iOS Dev and a Ruby Dev? <comment><USER2> Irrespective of the language or tier, a developer needs to know how to problem solve. You have to know how to get the requirements even if the customer doesn't know what they want. You have to be good at coming up with what-if scenarios. Then tell me how you pitched your solution to the customer. Did your solution resolve the customer's problem.

Remember, as a developer, everyone who asks you for "help" is your customer. Be it a CIO or your cube-mate.

If I am interviewing you, I want to know how YOU will solve my problem. Tell me about a time when you helped a customer solve a problem. What the problem was and how you gathered the requirements even when the customer didn't know what they wanted. Tell me how you helped a customer think about different what-if scenarios.

By you telling me a few stories like that, it will allow me to dive deeper into areas both soft and hard skills.

Having gee-wiz things in your portfolio is good but if that doesn't help the customer solve their problem, what good was it. Tell me how your gee-wiz things solved a customer's problem.

</comment><comment><USER3> A resume is only used for the screening process. Once I've decided this person might have what it takes, I invite them in for an interview, and the resume isn't looked at again.

The interview process equally checks technical viability and culture fit, and the interviewee will not be hired if they don't pass both with flying colors.

To answer your questions: The characteristics I look for depend on the culture I'm building within the team. The core concepts are more or less "Do you know how to solve this problem?" not necessarily "Here, solve this problem in this interview, without any of the resources you would normally have." A portfolio isn't required, but gives us another window into your technical ability. A GitHub profile chalk full of open source contributions, or a StackOverflow profile with high reputation showing very high communication skills are always a plus.

I don't have any experience hiring iOS developers or Ruby developers, so I'll abstain from answering that question.

Hope this helps!</comment>


Thoughts on an Open Source Company - <AUTHOR> http://damienkatz.net/2010/02/thoughts_on_an_open_source_com.html <comment><USER2> The never fire, never layoff policies make it critical to hire the right people. Wonder if that causes stress. It would keep me awake at night.

<comment><USER3> "Critical...?" Yeah, critical in that if you make _one_ particularly wrong hire (the sort who drags down others, see e.g. the Corncob Antipattern), your company is _dead_.

One of the things I _always_ checked about a startup I was considering joining was if they were capable of firing people.

</comment></comment><comment><USER4> Noble thoughts. I'm not a lawyer, so this is mostly a question: if you're dealing in open-source only, and your product is service, wouldn't it make sense to form a partnership firm?

All the things he talks about - a sense of ownership, people managing their own affairs, shared responsibilities - are made explicit when you do it that way, right?

</comment><comment><USER5> Here's a snapshot of their quarterly earnings report:

"Good morning and thank you for your interest in our company. I'm happy to announce that over the past 3 months we have seen a 5% yoy increase in Git commits and a whopping 25% increase in refactorings..."

</comment><comment><USER6> I don't know, it all sounds a bit too good to be true. I love working on open source software myself, so I wish them the best of luck, though, because if it works out, it sounds like a dream company.

</comment><comment><USER7> I really would like to start a company with quite the same rules. Perhaps I should start by getting my ass up and contributing more to open source software.

</comment><comment><USER8> I've seen a few open source companies that wound up being successful... when just starting out, how do you find paying clients to do services for?

<comment><USER9> You start the open source project at your day job, then two years later when there is a critical mass of potential customers you start the startup.

</comment></comment><comment><USER10> They're eventually going to need (and want) someone to run the sales pipeline.

<comment><USER4> Well maybe not. Professional services companies in other sectors don't always have sales people - think law and accounting firms, and other types of consultancies (if the comparison seems odd, see my earlier question about partnership firms). I guess it depends whom you cater to.

<comment><USER10> Good point. But often I imagine that even these old-world service firms tend to see specialization of labor from the partners, and somebody ends up holding the sales bag. I just think most software companies as idealistic and technical as this one will probably wish to have someone else attend to all the messy pre-sale human interaction once they reach a certain scale. If only to provide a clean signal of the right opportunities, shorn of noise.</comment></comment></comment>


LinkedIn sucks - <AUTHOR> https://techcrunch.com/2018/09/10/linkedin-sucks/ <comment><USER2> > I have 16,000 connections.

Maybe that is the reason why it sucks for the author. I use LinkedIn as my personal CV and have gotten a job through it. If I had to search for a new job it would probably be through LinkedIn, Stackoverflow and other smaller sites for remote workers.

LinkedIn is better than all other general career sites, much much better and I can always point people there if they want my CV.

<comment><USER3> "I open it out of habit and accept everyone who adds me because I don't know why I wouldn't."

If you add contacts you don't know indiscriminately, you're going to have issues. That's just asking for trouble.

But then, I haven't logged into my account in so long I don't even get spam from Linkedin anymore.

<comment><USER4> Like what? As far as I can tell, the more contacts you have, the more mutuals you'll have, leading to an easier time contacting people you actually want to talk to. I just accept everyone because I see little downside. I'm not there to chat.

<comment><USER5> Like the only mutual contact being some shady/untrustworthy/cheating individual.

<comment><USER4> Seems better than nothing. Generally they're just recruiters and anyway they apparently didn't think so lowly of the person as to decline the request.

</comment></comment></comment></comment></comment><comment><USER6> I, too, dislike LinkedIn and don't find it useful, but you can't write a "X sucks" and then plop this sentence right into the second paragraph:

> _I understand that I'm using LinkedIn wrong._

"This hammer sucks! I keep swinging wildly, but none of my nails ever get hammered in, but my TV and most of my light bulbs are broken."

</comment><comment><USER7> Just delete your LinkedIn. I did. It's great. People just email me now and email is way better in almost all ways. I can filter it more easily, I can forward it more easily, the spam filter catches clueless recruiters. Everything is literally better with no drawbacks at all.

Also, after being exposed to the OSINT community via the Arms Control community, I learned how crazy dangerous it is to have your whole organization on there.

If I ever have a company with employees I'm going to make it part of the employment agreement (and a fireable offense) to add the position to LinkedIn. It's a complete gold mine for competitors and social engineers. People can put "Long Term Data Science Contract" if they really want to, but ideally I'd be able to convince them to just delete it or, at the very least, ramp up the security settings after deleting fake connections.

It's definitely useful, but mostly for other people.

<comment><USER8> Can you point out any specific "dangers" of employees having LinkedIn accounts?

How much $$ over market value would you offer to compensate an employee for not using it?

<comment><USER9> Someone scraped LinkedIn to find ICE employees [0]. It's common to look at job openings to figure out what a company might be working on next, conversely you can sometimes draw conclusions on how those skunkwork programs are going by seeing if key people still work for the company (if they're highly specialised).

[0] [https://motherboard.vice.com/en_us/article/435myg/programmer...](https://motherboard.vice.com/en_us/article/435myg/programmer- used-linkedin-to-find-ice-employees-database)

<comment><USER8> These seem like pretty lightweight dangers. So your competitor can get a list of your employees. Who cares? You can go there and get a list of people working for my employer if you want.

These also seem like concerns for the employer, not the employee. What danger would motivate an employee to delete their account?

<comment><USER10> The only real danger I could think of is if you have a database administrator working for you and it says as much on LinkedIn, you could then check that DB admins qualifications that they have also provided on LinkedIn and determine the specific tech stack that your company is using. Example: John Smith is an expert in Oracle 11, John works at your company, for an attacker, they would then focus on potentially exploiting that system version.

</comment></comment></comment></comment></comment><comment><USER11> Possibly one of the most annoying aspects of LinkedIn is the slimy way it tries to connect you to other people through spam. I recently received an email from LinkedIn saying a friend I know in real life wanted to connect. I talked to him and he said he never made such a request, so it turns out LinkedIn reached out on his behalf. What benefit does this have to anybody?

<comment><USER12> LinkedIn probably did a "Let us help you connect with people you know!" and you friend said "OK! Here's permission to access my contacts!"

At least I think that's how it used to work. Their user interface was vague about exactly what it will send on your behalf, but then they phrase it like "Bob wants to connect with you!"

No, Bob just made the mistake of expecting to be presented with a list of people they might want to connect with, rather than silently spamming everyone they've ever emailed with a contact request.

<comment><USER4> There's a "people you know" screen and some of them it says "add friend" and some it says "invite" (or something to that effect), and the latter will send them an e-mail asking them to join LinkedIn.

</comment></comment></comment><comment><USER13> > I know people have used LinkedIn to find jobs. I never have. I know people > use LinkedIn to sell products. It's never worked for me... In short, I know > people like LinkedIn. > I think it's hot vomit in a paper bag.

In other words, "I'm throwing a tantrum because I don't like this thing other people like." This is the attitude that keeps me away from otherwise mature, smart people on Twitter too.

Yes, LI is spammy, but a lot of people say they find my content on LI. It's a professional network, it's not really supposed to be fun.

If you don't like the show, just change the channel.

</comment><comment><USER14> "I've never met a recruiter on there." I am by no means a fan/regular user of LinkedIn, but if you are an engineer in the Bay Area, LinkedIn is pretty damn great for getting random dm's from recruiters.

<comment><USER15> The recruiters who are worth a damn are referred by happy customers and recruits.

The ones who resort to spamming random strangers are self-announcing as the other kind.

<comment><USER16> There is also such a thing as a good recruiter who does intelligent searches, finds good matches, and then reaches out selectively to non-random strangers. Those are the ones I actually want to hear from, and I have gotten jobs from such communications via LinkedIn.

</comment></comment></comment><comment><USER17> > LinkedIn sucks [...] I understand that I'm using LinkedIn wrong [...] I have > 16,000 connections.

That was really some pointless article.

</comment><comment><USER18> My advice on how to make your LinkedIn experience not suck:

1) Do not let LinkedIn scan your contacts, your calendar, your anything.

2) Do not accept connections from people you have not actually worked with in some capacity.

3) Turn off all emails.

4) Turn off all app alerts.

Turning off alerts is my superpower for making any digital communications channel bearable, really. IMO I should only get alerts for messages that are at the level of seriously affecting career, family, life and limb, etc.

In terms of hearing from recruiters... it says where I work right on my LinkedIn profile. If they can't be bothered to reach out to me at work, how badly do they actually want to recruit me? I'm not interested in being one of 2,000 people receiving keyword-driven mass recruiting spam.

To build connections, I accept requests from people I've worked with, even if it was one project a while ago. I occasionally browse the "people you may know" screen in the phone app to see if there is anyone I want to add as a connection.

</comment><comment><USER19> I didn't realise social networking could get much worse than peak Facebook and Twitter until LI implemented their own feed. Levels of fakeness and posturing I didn't think possible. Everyone interacts as if while on LI we are all in a super large business meeting and everyone is a participant.

</comment><comment><USER20> I can't say LinkedIn has added a lot of value to my life. In fact I mostly forget it exists until I remember that I have a linkedin account every few weeks, take a look at it, accept the one connection request I have waiting, and then move on. I suppose it shows that I exist and am a human person, maybe. At least it shows that someone made an effort to put together a short profile for what appears to be a human person.

</comment><comment><USER21> I've actually gotten a lot of job interviews through LinkedIn that eventually turned into job offers. Never posted anything, didn't network with anyone, just uploaded my resume, set a header image, and that was it. I've deleted it since then because those job offers never turned into jobs for reasons unrelated, but I mean it seems to get the job done if what you're after are jobs.

</comment><comment><USER22> I agree, it sucks. It needs to be disrupted. There's got to be a better way to maintain professional and business relationships. Facebook has co-opted some of that need via FB groups.

I dislike the interface, it loads slow, almost 90% of messages are spam. They tried to be a content hub, but the only content hubs I read are HN, Quora, NYT and random blogs.

<comment><USER4> I do not want to use Facebook for professional purposes. That stuff does not need to coexist with my thoughts about the news, discussions about video games, vacation photos, and whatever else.

</comment></comment><comment><USER23> Tracking-free version: [https://pastebin.com/raw/P0nCs9y4](https://pastebin.com/raw/P0nCs9y4)

</comment><comment><USER24> The news feed feels like a stream of PR releases, people I've never met keep asking to add me presumably to help them find jobs, and the mobile website experience is inhibited by multiple disruptive banners / pop-overs to use the app.

That said, I get people reaching out to me once or twice a week with opportunities for a new job. Most of these fit my qualifications, and it's how I landed my current gig. I don't need to look for jobs anymore, they come to me.

</comment><comment><USER25> I find Linked-In pretty useful to stay in contact with former coworkers and fellow students from university.

To a journalist, whose contacts may be more accustomed to the benefits of actually staying in contact and who sees professional networking as part of their job, the benefits of a streamlined social networking sites may be much less clear, of course.

</comment><comment><USER23> LinkedIn is okay if you use it well. I've gotten multiple contracts from there.

The platform could use a little maintenance though. The iOS app is an absolute crime and it would be good if there was some moderation. Some recruiters are absolutely horrible and it would be nice to be able to report them and actually get them banned.

</comment><comment><USER26> Like everything else, hype wins regardless of the truth. This article won't get enough attention, unfortunately.

<comment><USER27> Nearly every person I know despises LinkedIn, with the singular exception of the people who for some job capacity use it to find out other people's history and contact information, who merely dislike it. The constant emails are a big part of that.

</comment></comment><comment><USER28> It's a garbage app, but I got my current job through a recruiter from there, and I'm pretty sure if I need to do the same again I'll get a bunch of leads there. I don't know why anybody would ever use it unless they're currently looking for a job or recruiting though.

</comment><comment><USER29> I used to have a boss that effectively wouldn't hire people if they didn't have a LinkedIn.

</comment><comment><USER30> It sucks but still has one amazing value proposition - it allows recruiters and hiring managers to find me.

So I'll put up with the hassle to maintain an easy way to find new employment should my current employment no longer work out.

</comment><comment><USER8> The best way to use LinkedIn I've found: 1. Turn off all notifications and badges. 2. Don't allow _any_ permissions, especially your contacts. 3. Log in at most once every 3 months or so, answer or ignore your messages, giving your actual email address to anyone you want to continue to talk with, and log out.

Skip "the feed", job search, all the social network crap, and all LinkedIn's begging pleading to let them loose on your contact list.

</comment><comment><USER31> I think LinkedIn is great for recruitment of software developers. For journalists, I'm sure it's completely useless.

<comment><USER4> It's a gold mine for journalists trying to find contacts inside an organization, find out about projects that haven't been publicly announced, etc.

<comment><USER31> Good point!

</comment></comment></comment><comment><USER32> LI is extremely useful within scope. Just turn off all notifications and only open it when actively job hunting.

</comment><comment><USER33> All I ever got from LinkedIn was unverifiable "endorsements", spam, and user- hostile behavior (notifications that aren't notifications, dark UI/UX that tries to trick you into sending emails to all your contacts, etc).

I left and it feels good not having an account.

</comment><comment><USER34> They all suck. Indeed got big because it sucked less but now it sucks as hard as all the others.

<comment><USER35> In what way? I find Indeed pretty good and simple to use for doing job searches..

<comment><USER4> In my experience half the listings are fakes run by a handful of sleazy recruiters. In that respect I think LI listings are better.

</comment></comment></comment><comment><USER36> I dislike LinkedIn so much I started building a professional social platform that I would like to have, based on skills.

It's early days but if you want to check it out, you can here: [https://able.bio](https://able.bio)

</comment><comment><USER4> Whatever replaced it would suck in exactly the ways he's complaining about. That's what happens when money is on the line.

</comment><comment> Trill-I-Am Is Libkedin useful for people in non-growing industries? Is it only useful for industries that have recruiters?</comment>


Zuckerberg removed a line about monitoring private messages from his manifesto - <AUTHOR> http://mashable.com/2017/02/16/mark-zuckerberg-manifesto-ai/#pYk9jiyOKkqb <comment><USER2> If Gmail reads private emails to target ads [1], why would people think that Facebook isn't doing the same thing? Also many companies (including Facebook) have agreed to share hashes and cooperate to "remove extremist content from their websites" [2]. It would be naive to think that they are excluding private messages from their searches.

[1] [https://www.theguardian.com/technology/2014/apr/15/gmail- sca...](https://www.theguardian.com/technology/2014/apr/15/gmail-scans-all- emails-new-google-terms-clarify) [2] [http://www.reuters.com/article/us- internet-extremism-databas...](http://www.reuters.com/article/us-internet- extremism-database-idUSKBN13U2W8)

<comment><USER3> WhatsApp is from Facebook and it implements the Signal protocol which offers end-to-end encryption. That's why Facebook with WhatsApp cannot do the same as Google does with Gmail. If they do, then their E2E encryption is fucked up.

<comment><USER4> Whatsapp is from whatsapp inc, founded by two former yahoo emplyees, then facebook bought for 19 billions dollar. Very different from "being from facebook".

You can probably trust whatsapp end to end encryption as much as you can trust facebook to protect your privacy [1][2].

[1]: [https://www.ghacks.net/2017/01/13/whatsapp-security-make- thi...](https://www.ghacks.net/2017/01/13/whatsapp-security-make-this-change- right-now/) [2]: [http://www.ibtimes.co.uk/israeli-firm-allegedly-selling- spy-...](http://www.ibtimes.co.uk/israeli-firm-allegedly-selling-spy-tech- capable-hacking-whatsapp-encrypted-chats-1584170)

<comment><USER3> I'm aware Facebook bought WhatsApp. I don't think that changes matters much though. WhatsApp is one of the "private channels" that Facebook Inc owns, and in Zuckerberg's manifesto [1] you can read:

"We are strong advocates of encryption and have built it into the largest messaging platforms in the world -- WhatsApp and Messenger."

My point is that "end-to-end encryption in private channels" and "using AI to analyze data in private channels" is incompatible.

[1] [https://www.facebook.com/notes/mark-zuckerberg/building- glob...](https://www.facebook.com/notes/mark-zuckerberg/building-global- community/10103508221158471/?pnref=story)

<comment><USER5> Who's to say that they aren't purposefully using encryption that they've made breakable so they can read the messages while making it difficult for anyone else to do so (other than the intended recipient?)

Historically speaking, Zuckerberg isn't trustworthy. The "Stupid fucks" comment from long ago should've been the first indicator of his shady character.

</comment></comment></comment></comment></comment><comment><USER6> Facebook sat idly by during an election cycle as their platform was used to propagate fake news because blocking this stuff would amount to censorship, and now they suddenly have the moral imperative to police your private messages? I am so glad I quit Facebook a long time ago. They are the big tech company I like the least.

<comment><USER7> The policing of private messages is not new or sudden. Facebook has censored "offensive" (yet legal) private messages for years. One can assume they also already detect and report criminal activity to some degree. But it's understandable that they wouldn't want to shine the spotlight on this practice.

<comment><USER8> For a while there it was headline news every time a breastfeeding mother got censored.

<comment><USER7> AFAIK those are images posted publicly or semi-publicly and getting flagged by prudes, or at least that's how it gets portrayed. But my friend sent a series of Middle East carnage images to me in "private" messages, and they were removed a few days later with a message about being inappropriate for the site. Neither of us flagged them.

<comment><USER9> Those same photos might have just been posted elsewhere on Facebook publicly and flagged there. Not that I am supporting Facebook or censorship or anything, but on the technical aspect, maybe there's an explanation that doesn't involve reading the private messages.

<comment><USER10> There is an easy to prove that they do read private messages. Send a private message with a link that points to your private website. Wait a few minutes and you should see in your server's logs that Facebook's bot is trying to crawl that url.

<comment><USER9> True, but they also show a preview of the page in the message, which would require fetching it. Pretty much every messaging service does that now. Also, there are legitimate reasons to scan URLs (malware, for example). Again, not trying to defend Facebook or absolve them of violating privacy, just saying that for these specific criticisms, there are technical explanations.

<comment><USER11> If you're scanning the URL for malware, why wouldn't you pick up some data mining info for the involved users while at it?

<comment><USER12> Because that takes (a lot) more effort, and you're on a schedule?

<comment><USER11> Yeah but you make money if you do, even if you spend the resources. This is not really a convincing answer.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> What is Mark Zuckerberg up to right now? He's doing a lot of of outreach, and even meet and greet tours. It's a bit like he's on the campaign trail, planning on running for political office, but maybe not exactly that.

e.g.:

[https://www.ft.com/content/b0a6481e-d20a-11e6-9341-7393bb2e1...](https://www.ft.com/content/b0a6481e-d20a-11e6-9341-7393bb2e1b51)

[http://www.telegraph.co.uk/technology/2017/01/04/mark- zucker...](http://www.telegraph.co.uk/technology/2017/01/04/mark-zuckerberg- preparing-enter-politics-facebook-ceos-pledge/)

<comment><USER14> He's probably preparing for public office. While Facebook is very successful, there's little vision in it now, compared to earlier. Most of the connected world is already on Facebook (if it's not blocked in their country). And while VR is nice, it's unlikely that it could attract a billion users anytime soon (esp because of cost).

I don't think that he'd want to manage a company that just fights off rivals. Becoming a politician and (trying to) make a change sounds more like him. He has the money, people mostly like him and he'd only have to find a CEO for Facebook to get rid of conflicts of interest, as he isn't involved in many other businesses.

<comment><USER15> > While Facebook is very successful, there's little vision in it now, compared > to earlier. Most of the connected world is already on Facebook (if it's not > blocked in their country). And while VR is nice, it's unlikely that it could > attract a billion users anytime soon (esp because of cost).

Facebook could always give away VR headsets for free (disguised similar to the Free Basics program). Facebook has already run out of space to put ads on the Facebook platform, and so it has started trials on Messenger (in a couple of countries). One way to put ads everywhere is to install large screens (like in Sci-Fi movies or like those in Times Square). Another way is to give a small screen to people that's always in front of them and put ads there based on what the person is looking at, the location, time of day and other factors - that's what VR, or rather AR, will be about whenever Facebook gets serious about it (in relation to Wall Street and earnings). Google Glass probably had the same long term intent in mind when it was developed.

</comment></comment></comment><comment><USER16> I hate facebook not because of this bullshit but because using facebook is so utterly "normal" on the society that some websites are facebook-exclusives (facebook login only), people only seems to like the idea of using the fucking facebook chat for everything and now even customs ask you to unlock your phone so they can analyze your friends... hoping one day, some terrorist attacks facebook servers so we can get rid of everything online and start to forget about it.

<comment><USER17> What customs have you gone through where they do that? I travel internationally regularly and have yet to come across this.

<comment><USER16> [https://arstechnica.co.uk/tech-policy/2017/02/nasa- scientist...](https://arstechnica.co.uk/tech-policy/2017/02/nasa-scientist- detained-us-border/)

</comment></comment></comment><comment><USER18> Im sick and tired of facebook. Yesterday I shared a picture from Syria depicting a homosexual being executed by being thrown off a building - In a political discussion, of course this gets censored within hours. Meanwhile there is groups where this picture also appears, albeit in a another context that actually encourages this type of punishment, and it gets to stay on facebook.

<comment><USER19> It seems kind of obvious what happens - the picture you posted was reported by your peers in the discussion. The group that encourages this type of punishment probably will not have members that report the picture, so it doesn't get deleted (as fast).

You don't need to blame Facebook for this.

<comment><USER20> But would it really be hard to have checks for that kind of groups automatically?

How can Facebook read all of my private chat message, find out what the conversation was about and serve me accurate ads, but can't find out that this group called "death to all jew" is hate speech?

Oh wait, the first case brings in money and the second simply makes the world a better place.

</comment></comment></comment><comment><USER21> This article is so poorly written that I couldn't tell which version was the original and which the revised (or whether there were one or two revisions) until I'd read it three or four times. After I'd figured that out (I think), I had to go back again to understand what point the author was trying to make.

Then again, it's just Mashable. I don't know why I worked at it so hard.

<comment><USER15> I was also confused similarly, more so with the headline that sounded as if this was a malicious move meant to hide the intent to monitor private messages (not that I would put it past Facebook not to do such horrific things).

</comment></comment><comment><USER22> It is quite simple, if you are not paying for the product, you are the product and even if you are paying in some cases. This is well known. Also well known, is expect no privacy online.

Always assume everything you do online is being monitored and do your best to encourage everyone you know to use encryption, or to prefer encrypted services, wherever they can.

</comment><comment><USER23> How could anyone not know that your private messages represent valuable data to Facebook that they're going to use for ad revenue and service improvement?

Your messages are not private on any service that doesn't guarantee privacy. Most services do not.

Heck, your use of an app is often recorded and saved.

Using these services and presuming to be in private is foolish. People other than Facebook don't respect the privacy when they copy and paste your messages to a friend of theirs. Written messages have never been a way to conduct private business that you don't want leaked or passed on to a third party.

<comment><USER3> You don't need to trust Facebook to see inconsistencies in their message.

WhatsApp is one of Facebook's "private channels" that it's said to implement the Signal protocol, which is supposed to offer end-to-end encryption. If we assume all what Facebook claims is true, the only way to analyze WhatsApp messages for AI purposes is to leak data to Facebook servers before starting the E2E encrypted connection. But that would be just an exploitable back door that defeats the purpose of Signal, right?

<comment><USER15> My pessimistic guess is that end-to-end encryption will be removed from WhatsApp, Allo, etc., in a matter of time with flowery language like, "...to provide the best possible experience that our users expect and deserve, and to empower our users with choice, we're switching the default (to quick plaintext communications)...the communication will still be secure through encryption on the network from client to server to client."

Then it'll become like Messenger, where end-to-end encryption is an explicit choice (similar to Secret Chats in Telegram). Not that people using WhatsApp would really care. The stickiness factor is quite high.

</comment></comment></comment><comment><USER24> The headline is slightly misleading. It would be more salacious had the manifesto been published long ago and had the line been recently added.

In actuality it was there in a draft recently and now they realized they don't want to message that outright and have decided not to publicize it.

<comment><USER25> I thought the same thing once I read the quote before & after. So I looked at the headline again and decided the wording was accurate but I'd gotten the wrong idea about it's meaning. The headline could say "AI monitoring of private messages", that might have cleared up one minor angle on it for me. But whatevs I suppose, headlines are misleading all the time, that's why you always have to read the article, right?

I also wondered whether it's possible this edit doesn't mean what people are assuming it means. I have no doubt whatsoever about Facebook monitoring private channels via AI or humans. But, technically, it's speculating to say Zuck's edit is motivated by the desire to hide the activity while doing it anyway. It _could_ mean they are choosing against doing it in some form or completely. It _could_ mean there are legal problems with the monitoring or the announcement of monitoring. It _could_ mean there are business concerns with publicizing, that the loss of money could outweigh the loss of trust. Who knows? But it's possible (though slim) this edit is a good thing for privacy. It's also possible (and likely) that this is bad for privacy, but Zuck can't be as transparent as he truly wants to be.

</comment></comment><comment><USER26> There's no way this can work well IRL. I was talking to a friend who follows the Kashmir dispute between India and Pakistan. Apparently, the terrorists knew (correctly, I presume) that phone calls were being monitored. So they switched to using allusions in their conversations. Grenades became "potatoes". An AK-47 became a "broom". Explosives became "flour". And so on. So a request for more arms sounded like a shopping list for a grocery store: send some potatoes, and we also need a couple of brooms.

<comment><USER27> Doesn't take long to figure out codes like that - the DEA has been doing it for years. If anything it's even easier to catch those using the codes who think they're being very very clever.

</comment></comment><comment><USER28> I think, there is no `private` section on the social network, everything is public, just accessing to that section is limited for someone or one scope and not for other one. But scope of this accessing is growing through the time, without we know about that. For example, from small circle of our friends or family to the whole of the world.

</comment><comment><USER29> If it's AI that flags stuff instead of people reading your private messages, then that's good.

I was thinking the same thing. How do you help prevent actions nearly mo one wants to happen (human trafficking, violent attacks) while at the same time allowing dissidents to talk etc.

You need an AI to be the one to flag it.

</comment><comment><USER30> I'm not entirely surprised that Facebook does this. After all, Facebook is also the company that not only does the same as Google when it comes to targeting you with ads, but also sells data about you to other companies. More reasons not to trust or use Facebook for me at least :)

</comment><comment><USER31> apart from the pro/con arguments here, I want to ask whether you can call anything a 'manifesto' if you keep changing it ?

<comment><USER32> Call it what it is - Manifesto du jour.</comment></comment>


The overlooked issue of Windows 8 - <AUTHOR> http://www.binarypassion.net/2013/04/the-overlooked-issue-of-windows-8.html

<comment><USER2> The overlooked issue with Windows 8 is that it is fucking awesome. I've got the desktop for clutter and the black background for reading and other focused tasks...when I need them. All just a single keypress apart.

I still spend most of my time on the desktop, but when I want something all it takes is a single keypress and to start typing. No navigating an arbitrary hierarchy of menus where how things are filed made sense at the time they were filed. It just finds the damn thing.

It is better Windows, but change is hard.

<comment><USER3> _when I want something all it takes is a single keypress and to start typing. No navigating an arbitrary hierarchy of menus where how things are filed made sense at the time they were filed. It just finds the damn thing_

Wasn't this available in the Win7 (and maybe Vista) start menu?

<comment><USER4> This is also available in GNOME 3 (and previously you could use tools like Gnome-Do, Quicksilver or Kupfer). Quite useful, I think.

</comment></comment></comment><comment><USER5> Metro apps are entirely optional, and the desktop is not going away. I don't like Metro apps, but I just don't get it when people seem to think that their very existence is a big problem. Windows 8 on x86 has almost exactly the same desktop paradigm as Win95-Win7, but with the added ability to run mobile apps if you really want them.

Widgets in Vista sucked, but everyone just ignored them. Why not just ignore Metro apps if you don't like them, and wait and see if they get better?

<comment><USER6> It's hard to ignore something when you are forced to click past it every time you start up your computer.

<comment><USER5> It takes about 20-30 seconds to remove all the preinstalled metro apps from the start screen. By the time you have installed the usual programs like VLC they will grab all the file associations and you will never see Metro again, unless you want to.

<comment><USER7> As I understand it, this is not true.

Personally, I like to hit the windows key, type "fi", and hit enter to start Firefox. On Win7 this is a pleasant experience, on Win8 I feel like I'm being punched in the face by a wall of colour.

<comment><USER5> I almost exclusively launch programs in Windows 7 and 8 by pressing the start button and typing the name of the program. I've found Windows 8 to be better at finding the right program, and a lot better at finding settings when I want to change them (although I would prefer it if they displayed apps and settings on the same page).

I can see how some people would prefer the old menu in the corner to the full screen, but personally I think the full screen is better.

I'm not sure what part of my comment you are saying isn't true?

<comment><USER8> > (although I would prefer it if they displayed apps and settings on the same > page)

this is coming in 8.1, thankfully.

<comment><USER9> Source?

<comment><USER8> [http://winsupersite.com/windows-8/blue-s-clues-new-search- ex...](http://winsupersite.com/windows-8/blue-s-clues-new-search-experience)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> One of the comments after the article points to one of my gripes with modern services: increasing pervasiveness of single sign-on.

I don't mind signing into Win8 with my live id, in fact it makes migrating settings and such really easy. The problems arise when I want to use an application with a different account than the one that I'm currently signed in as. It just doesn't exist.

This bit me hard when I was trying to set up Metro Skype (on a surface rt) to be a standalone auto-webcam, and as far as I could tell there wasn't a way to log into Skype with an account different than the one I used to log into Windows. I had to create a new Windows Live account just for this task.

This issue isn't isolated to Win8 (I imagine I would run into similar problems with Chrome OS). It's becoming more common and very, very annoying to deal with.

</comment><comment><USER11> Amen. It bothers me more than I would like to admit that I can't tell how many applications are currently running on my Android phone. Or then when I press "back", sometimes the application quits and sometimes it doesn't.

<comment><USER12> Can't you just hit the little multi-box icon on the bottom right always (to the right of the home icon)? Then swipe an app away to kill it.

<comment><USER13> My understanding is that this does not kill the app, merely removes it from the list.

<comment><USER5> It kills the app on my phone (Nexus 4 Cyanogenmod). If I ever get a slowdown I open up the switcher and swipe away all my recent apps to close them.

</comment></comment></comment></comment><comment><USER14> I think your point on application management is a bit weak. I have several applications/services running on Windows 7 without any visible windows present ( i.e Apache, Adobe Service Management, spotify web helper etc..). For a lot of these I had no choice if they were installed, I frankly don't even know how some of them were installed. A suspended Windows 8 app isn't much different than these and at least Win 8 apps consume zero CPU cycles while suspended.

</comment><comment><USER6> One of the things I immediately disliked about the Ubuntu Unity interface was that it wasn't immediately obvious what applications I had open. The visual cues have gotten better in more recent releases, but I still don't feel that Unity is quite usable without also running a dock (I ran Docky for awhile but more recently run Cairo).

<comment><USER5> I dislike the dock in unity as well - I find it's too in your face, but I've heard that auto-hide and a few other aspects have been improved in recent versions, so thinking of giving it another go. I do find it all very dark though, and generally preferring Mint.

<comment><USER6> I decided to stop worrying and love the Unity some time between 12.04 and 12.10, and I've gotten quite used to it. I use the Radiance theme, which is brighter and cleaner looking than the default Ambiance theme. (And I have my minimize/maximize/close buttons on the right side - some habits die hard.)

I tried Mint but found it clunky and unstable. For a while I used Ubuntu with the gnome-classic desktop, but it got harder to make it work with everything else, which kept changing. I also tried Cinnamon but found it extremely unstable - my desktop would crash routinely.

Unity is pretty good and keeps getting better. My other main request would be to make the icons smaller - the smallest default size is 24px.

In unrelated news, I was happy to discover after upgrading to 13.04 that my phone, a Galaxy S3 running Android 4.1.1, now auto-mounts into the filesystem via MTP. (It occurs to me that my gratitude for something as basic as plugging a device into USB and having it Just Work may be a warning sign of Stockholm Syndrome. Yet it also occurs to me that I haven't paid a penny for Ubuntu since I first installed version 8.04, so I think on balance that my gratitude is well-placed.)

<comment><USER5> Thanks for the tip on Radiance - I found Ambiance too dark, but Radiance does look nicer (more similar to what I like about Mint). I think I'm going to give 13.04 another try tonight.

I used to Ubuntu Tweak to change a few things like making the dock extra small, but that seems to be discontinued. Do you know of any other utility for tweaking Unity (such as moving the buttons to the right side)?

</comment></comment></comment></comment><comment><USER15> I personally have no problem with this. One of the biggest vexations when I use Mac at work is that I can't maximize a window without manually adjusting it by dragging the edges. I always want every single window to take up the entire screen even if there's "no content" there.

<comment><USER16> Why would you want an app to take up more space than strictly necessary?

<comment><USER17> Because he wants to. That's the exact attitude I hate most about this industry.

<comment><USER16> That is still an option, and various environments have added new features for doing that better (like OS X's fullscreen mode).

The mini-debate is only about the default.

</comment></comment></comment></comment><comment><USER18> The major problem with Windows 8 is that Microsoft shafted developers/admins with yet another major shift in tools, UI and APIs and system changes. (cha ching!) Metro Apps aren't rich enough to be decent replacements for desktop apps, nor are they good enough to match others rich web applications.

As a developer, if I'm having to shift focus, I'm going to explore alternatives outside the Redmond garden that give me more control and cost less. As much as I love VS and SQL Server, a growing number of my clients/projects can do equally well or better with OSS solutions.

</comment><comment><USER19> The question is what does it mean for application to be "running". In the past I remember closing applications down when I wasn't using them to save memory, now if I run an application I generally won't close it until I shutdown the computer.

Also many applications will make some attempt to start you again from where you left off last time when they are reloaded and modern OSs will try and preload common applications into memory at boot.

</comment><comment><USER20> There is a quote I have no attribution for, but I recall seeing it a long time ago, long before 2650x1440 displays were economical: "The desktop metaphor works better when your screen is the size of a desk."

Handsets don't need a desktop metaphor. Tablets don't need a desktop metaphor. So the question is, do you make an operating system for devices that do not need and should not have a desktop metaphor, or do you try to stuff a mature operating system imbued with the desktop metaphor into a tablet?

The inappropriateness of the Modern/Metro UI in Windows 8 goes deeper than the user experience. Modern/Metro UI apps are severely limited in their ability to communicate with other apps. They are over-sandboxed and crippled compared to both Windows desktop apps and Android apps. And yet, Modern/Metro UI is the only way to implement a satisfactory touch UI in Windows 8.

The result is a mess of hardware that enables touch, with dubious ergonomics and software that is limited but touch-appropriate or powerful but bad at touch.

<comment><USER17> I have two 24" monitors and two 17" laptops on my desk right now. Windows 8 is definitely not for me.

</comment></comment><comment><USER21> What about the app list that is on the left side of the screen (hidden by default)? Doesn't that show you the list of all running apps?

<comment><USER2> The author's argument is vacuous. All* versions of Windows allow for applications to run when their window is minimized. And there's all kinds of crap that runs as a process or in the systray.

And if anyone wants to know what is "really" running - i.e. using resources - they use TaskManager or a similar tool.

*O.K., I mean "at least since 3.1."

<comment><USER21> Actually that is an excellent point. And if anything, Windows 8 cleans up Task Manager to make it easier to see what is running and in what context.

I think in summary Win8 provides more views of running processes than Win7.

</comment></comment></comment><comment><USER22> If Windows 8.1 gets rid of you having to use metro, it will be awesome. I like everything about windows 8 minus the metro part, which is were almost all of the windows 8 complaints go. Hopefully Microsoft will deliver.</comment>


Belgian cyclist gets six-year ban for using motor - <AUTHOR> http://www.bbc.co.uk/sport/cycling/36142963 <comment><USER2> doping, steroids, and motors...will the sport ever get it's good name back?</comment>


Greyhound offers free bus tickets home to runaway kids - <AUTHOR> https://www.cbsnews.com/news/greyhound-offers-free-bus-tickets-home-to-runaway-kids/ <comment><USER2> > _An estimated 6% to 7% of U.S. youth run away from home each year, or more > than 1.5 million children and adolescents annually, according to the > National Clearinghouse on Homeless Youths and Families._

WTF!? If true, this should be a far bigger issue than most things talked about.

A little clicking turned up the following links:

1\. Facts and Figures About Runaway and Homeless Youth -- [https://rhyclearinghouse.acf.hhs.gov/news/2019/03/facts- and-...](https://rhyclearinghouse.acf.hhs.gov/news/2019/03/facts-and-figures- about-runaway-and-homeless-youth)

2\. Why they run: An in-depth look at America's runaway youth -- [https://www.1800runaway.org/wp- content/uploads/2015/05/Why-T...](https://www.1800runaway.org/wp- content/uploads/2015/05/Why-They-Run-Report.pdf)

<comment><USER3> Why do you see it as bad? It's really not. I know multiple people who did as youths (though they could be thought as the more successful end of the spectrum, they're all doing well now and were doing well then).

Not all "runaways" are homeless, though, nor are they even necessarily in a worse spot after doing so.

The idea that a person should stay with their guardians until 18 is a recent societal invention, and is probably more harmful than not.

It's harder than ever to die in America, though it's also gotten progressively harder for youth to get an independent start.

"Running away" (it's more aptly described as "leaving," running implies cowardice) in itself isn't an issue, it's just a symptom of a greater problem: guardians are frequently bad, and the infantilization of society has rapidly progressed to a ridiculous point.

This is a controversial opinion, but one that's shared by almost every close friend of mine: labor laws for adolescents (I hesitate to call them "child labor laws," because infantilizing adolescents is the thing that caused the problem to begin with) have had a disastrous effect on society.

Even in the modern day, a guardian can still rob an adolescent of their earnings in America, codified by law. By any other measure, a person who can force another to work and can take their earnings is a slavemaster.

<comment><USER4> >This is a controversial opinion, but one that's shared by almost every close friend of mine: labor laws for adolescents (I hesitate to call them "child labor laws," because infantilizing adolescents is the thing that caused the problem to begin with) have had a disastrous effect on society.

I am in full agreement with this opinion. At 14, I was ready to WORK! After school AND during summer! Yet "Child Labor laws" and related bullshit prevented me from contributing to society at a time when I was fully able and willing to.

<comment><USER5> There are plenty of ways for you to contribute to your society (even labor), you just can't get paid for them: volunteer, clean up, contribute to open- source codebases, etc. I think there's a reasonable argument that the best thing you can do for your society is learn and grow, and we need to support children that wish to do so.

<comment><USER3> As someone who _did_ contribute to libre codebases and volunteer at that age: it would have been vastly better for me, personally, were I able to sell my labor.

I would have still contributed to libre codebases, but it would have allowed me to become independent faster, and a person can only contribute marginally until they're fully independent.

</comment></comment></comment></comment></comment><comment><USER6> Kids getting abused to the point they run away. I wonder what the percentage of the returning kids (by Greyhound bus) wouldn't use the service if they could start their own life anew and in an economy that would actually allow them that opportunity. I assume from how the economy is shifting to needing a degree for competitive entry. The ones abused by their parents are staying even longer with them and until their degree is finished to afford the whole process.

</comment><comment><USER7> Finally all American parents can simply just buy a one-way plane ticket for their kids and put them on a bus back! So much cheaper!

<comment><USER8> Reminds me of the trick to confess to a crime in the place you want to visit next.

They extradite you, you suddenly realise you have a alibi, win?

</comment></comment><comment><USER8> > To be eligible for a Greyhound ticket home, those between 12 and 21 years > old have to call the NRS hotline, be named on a runaway report and be > willing to reunite with their family

It's great Greyhound and NRS work to practically get kids home.

But once a kid's on a runaway report I'm not sure why we'd think this is a good, go to solution. 400 kids / year would be $40,000 in transport which must pale to the other costs around this issue.

Maybe kids are more likely to use it if the authorities are not involved... but there seems something is broken

</comment><comment> BXLE_1-1-BitIs1 One of my kids fetched up without money for a ticket at a transit terminal a couple towns away when neither myself or my ex had a car in the days before smartphones.

Pretty simple: phoned the station, they paged the kid, gave him a ticket and a payment form which I was glad to take care of when he got back home.</comment>


Oberon-2, a high performance alternative to C++ (1996) - open-source-ux http://www.modulaware.com/mdltws.htm <comment><AUTHOR> I spent 13 years doing Object Pascal full time and wrote plenty of Modula-3 in school. From my perspective, everything from Wirth suffers from having too much syntax and focus on perfect abstractions, while not providing enough rope when "perfect" isn't perfect enough. I have similar experiences from Eiffel, it's all fine as long as you're solving the kinds of problems that the authors had in mind. Everything that can be done in these languages can be done in more pragmatic languages like C/++/Lisp; and as an added bonus, they don't pretend to know everything about the problem you're solving.

</comment><comment> open-source-ux Such a shame that Oberon-2 never took off. It has a refreshing simplicity and a small, compact set of features.

The OOP implementation is easy to understand and is grounded in existing concepts like the record type and procedures, rather than inventing and supporting a new vocabulary.

It feels like a practical and pragmatic language too: if you want to simply write procedural code, you can do that easily without having to use the OOP features (shock, horror).

That practical, pragmatic aspect of the language reflects Wirth's own beliefs. Here is an interview from 1997 where he says:

> "Object-oriented programming (OOP) solidly rests on the principles and > concepts of traditional procedural programming (PP). OOP has not added a > single novel concept, but it emphasizes two concepts much more strongly that > was done with procedural programming. The fist such concept is that of the > procedure bound to a composite variable called object. (The binding of the > procedure is the justification for it being called a method). The means for > this binding is the procedure variable (or record field), available in > languages since the mid 1970s. The second concept is that of constructing a > new data type (called subclass) by extending a given type (the superclass)."

> "It is worthwhile to note that along with the OOP paradigm came an entirely > new terminology with the purpose of mystifying the roots of OOP. Thus, > whereas you used to be able to activate a procedure by calling it, one now > sends a message to the method. A new type is no longer built by extending a > given type, but by defining a subclass which inherits its superclass. An > interesting phenomenon is that many people learned for the first time about > the important notions of data type, of encapsulation, and (perhaps) of > information hiding when introduced to OOP. This alone would have made the > introduction to OOP worthwhile, even if one didn't actually make use of its > essence later on."

> "Nevertheless, I consider OOP as an aspect of programming in the large; that > is, as an aspect that logically follows programming in the small and > requires sound knowledge of procedural programming. Static modularization is > the first step towards OOP. It is much easier to understand and master than > full OOP, it's sufficient in most cases for writing good software, and is > sadly neglected in most common languages (with the exception of Ada)."

> "In a way, OOP falls short of its promises. Our ultimate goal is extensible > programming (EP). By this, we mean the construction of hierarchies of > modules, each module adding new functionality to the system. EP implies that > the addition of a module is possible without any change in the existing > modules. They need not even be recompiled. New modules not only add new > procedures, but - more importantly - also new (extended) data types. We have > demonstrated the practicality and economy of this approach with the design > of the Oberon System."

From: [http://www.eptacom.net/pubblicazioni/pub_eng/wirth.html](http://www.eptacom.net/pubblicazioni/pub_eng/wirth.html)</comment>