Termix – Beautiful SSH client, start crowdfunding and early access - <AUTHOR> https://patreon.com/termix <comment><USER2> The smudge on the screenshot is a strange visual. Also very unusual that the entire main text column is an 8000-pixel high, 3 MB PNG image.</comment>


Ask HN: Am confused. Please suggest - <AUTHOR>

Hi, I am a long time reader, first time submitting. I'm a bit confused with my current situation, I would be very grateful if you guys could give me a few pointers. I am not so experienced as most of you here, but i've mostly picked up stuff I'm interested in quite well and easily.
My primary interest is network programming. I have done quite a bit of reading and experimenting and am familiar with mechanisms of most protocols. Now I want to start writing code. I read introductory stuff on python and grasped it well too. I had just started playing with the python modules, when I met somebody(with a tall reputation) at the local lug meeting who told me that I could always learn python very easily later but C was the language I must know, specially given my interest on network programming. I did some research and thought maybe the guy is right. So I've been with a k&r for 4 weeks now. It didn't intimidate me but I am progressing very very slowly and maybe that's why also slacking a bit. I am posting this because I'm at the stage where it's even worrying me now. I'm always thinking that in python i could be building stuff right now. I know python won't teach me low level things like memory management etc, but my progress is pain-stakingly slow in C.
Question: Should I continue battling with C like i'm now and write some working code in it or switch to python where i'll be at a bit more ease? Will a high level language spoil me too much to come back to C later? <comment><USER2> It's absolutely not true that C is necessary to be a network programmer. There are some cases where it will absolutely be the best tool (especially for embedded or proprietary hardware), but just look at all the useful network software being written in Erlang, Java, Python/Twisted, Ruby/EventMachine, and now Node.js (just to name a few).

Memcached, for example, was first written in Python, then ported to C. Dustin Sallings (one of the maintainers of memcached) has also written a Java client, a server port in Erlang, another server in Google's Go language, and yet another in Python with Twisted:

<http://dustin.github.com/2009/10/11/ememcached.html>

<http://dustin.github.com/2009/11/12/gomemcached.html>

<http://github.com/dustin/twisted-memcached>

I hope that inspires you to continue to learn new tools based on what you want to work with, and not think that you "need" to learn one specific tool. On the other hand, I agree that learning C is a worthwhile goal, will teach you a lot, and will help you contribute to many existing companies/projects.

</comment><comment><USER3> You can get-by with just read-only C skills. Invest your time learning the ins and outs of python and its performance characteristics.

It's also inevitable that you will have to learn systems programming; POSIX or Win32 API most likely, for Unix and Windows respectively. But not for another year or so.

Have fun.

</comment><comment><USER4> You can learn the ins and outs of network programming in pretty much any language. When you find yourself needing the level of control or speed which C offers, or compatibility with some platform, then go there.

</comment><comment><USER5> You might find very useful answers over at StackOverflow, or ServerFault, most likely from people who are already successful network programmers.

<comment><AUTHOR> I've just posted it there and got good replies, thanks</comment></comment>


Does anyone need a co-founder? - <AUTHOR>

I'm looking to start or join a project with someone.  Preferably someone with skills and interests similar to mine.  I previously worked for a startup in Philly, where I was a UI Engineer.  I'm currently working on an iPhone game but want to get into something else once this is finished. I'll be looking to devote all of my time towards a new project.
I've coded in just about every language you can name, so I can adapt to whatever you've got going so far.  Most recently, I've been using Python, Backbone, Coffeescript, jQuery, SimpleDB, and some other stuff that probably isn't worth mentioning.
Feel free to email me, christopher(dot)hacken(at)gmail <comment><USER2> I'd be careful about finding a "co-founder" half-hazardously. I've experienced a number of partnerships and they more often than not - end badly.

Workload is hard to share even if you have similar skill sets because you'll have different goals. You might be looking to build a company and he might be looking to sell.

Other issues i've dealt with is miscommunication. It's hard to be brutally open and straightforward with a stranger but its absolutely necessary because it always leads to GIANT problems when you're not honest to the point of being offensive.

<comment><AUTHOR> Thank you for the suggestion but I'm not looking "half-hazardously". I've already turned a few down that didn't fit my particular interests. I'm not looking to get an email that interests me and go, "great lets start coding"..

Nevertheless, thank you for the advice.</comment></comment>


Blockchain could let people offer health records for research - <AUTHOR> https://www.nature.com/articles/d41586-018-02641-7 <comment><USER2> The article doesn't mention it, but I wonder how they're planning to avoid WEIRD effects in the sample population.

[https://www.cambridge.org/core/journals/behavioral-and- brain...](https://www.cambridge.org/core/journals/behavioral-and-brain- sciences/article/weirdest-people-in-the- world/BF84F7517D56AFF7B7EB58411A554C17)</comment>


Ask HN: 3 years, 0 Clients - being offered 20% or money back - <AUTHOR>

I've started this as a subcontracting project, later turned into a partnership with a friend based on goodwill.
Timeline:
- [T-3 years]: Partner idea - B2B (enterprise targeted) with a physical-world component in the workflow. Features driven mostly by partner. Target market in North America.
- [T-2 years]: MVP with most time spent in writing/rewriting. Just after a MVP, partner relocates (to Middle East) for his FT job. Target market switched to ME.
- [T-1 years]: Paper company established in ME. Major competitor attempted hiring my Partner - but he rejected offer citing our company.
- [T]: A potential of a client by year-end.
Now, I'm being offered either of:
- 20% partnership against further dedicated time.
- Investing portion of the 20% in the company and cashing the rest.
- My subcontracting money back with no further obligations.
In terms of potential, there's a market. However, I'm suspicious for few reasons.
What do you think HN? <comment><USER2> I think you should trust your intuition. This looks fishy. If you can get a decent rate on the time you put in, that might be your best bet.

</comment><comment><USER3> I would definitely get the money back, that's just me though.</comment>


Mentions of Lee Sheldon's Game Design Class, XP in lieu of grades - <AUTHOR> http://gamingtheclassroom.wordpress.com/2010/03/23/mentions-of-lees-game-design-class/

<comment><AUTHOR> This is the new blog of Lee Sheldon, the professor mentioned in Jesse Schell's popular talk on the future of games. Sheldon gave out experience points to his students in lieu of the typical grades, making his course on game design a game in itself.</comment>


JS web frameworks benchmark – Round 7 - <AUTHOR> http://www.stefankrause.net/wp/?p=454 <comment><USER2> >React 16 is really an improvement. It pushes react in front of preact and vue.js.

Fiber is showing improvements.

</comment><comment><USER3> The download, parse, and startup time isn't considered, so while this excellently captures runtime performance metrics, it's not the whole story. Does your app replace thousands of rows in a table?

And yes, I'm questioning the time I spent getting Preact to work rather than going with the React herd. :)

<comment><AUTHOR> The startup benchmark tries to capture that, but doesn't simulate network performance. Still I think it shows some interesting results.

</comment></comment><comment><USER4> Can someone explain what is "keyed" Vanilla-JS?

<comment><AUTHOR> Is your question what is keyed (answered in the blog) or what's vanillajs (javascript without a framework)?

<comment><USER4> What is "keyed Vanilla-js". As I understand the definition of keyed, it's a feature that js doesn't have.

EDIT: from the blog:

"All modern frameworks have some kind of binding between data and DOM nodes. This binding is especially interesting when data consists not of a single item, but of a list of items. If data changes the question is which DOM nodes should be updated, inserted or removed."

It's unclear because it seems to talk about data binding (which is not part of js), but actually is talking about an identity association between a DOM node and a data object. I guess it just means there is a one-one association between nodes and data points, and when a data point [identity] changes, the corresponding DOM node is entirely destroyed and recreated.</comment></comment></comment>


Hidden Treasures in Junk DNA [2012] - <AUTHOR> http://www.scientificamerican.com/article/hidden-treasures-in-junk-dna/ <comment><USER2> Results from the ENCODE consortium, and this result in particular, must not be considered in a vacuum. In particular, review Graur et al.'s comprehensive analysis and rebuttal: "On the immortality of television sets: "function" in the human genome according to the evolution-free gospel of ENCODE." [1]

The abstract: > A recent slew of ENCyclopedia Of DNA Elements (ENCODE) Consortium publications, specifically the article signed by all Consortium members, put forward the idea that more than 80% of the human genome is functional. This claim flies in the face of current estimates according to which the fraction of the genome that is evolutionarily conserved through purifying selection is less than 10%. Thus, according to the ENCODE Consortium, a biological function can be maintained indefinitely without selection, which implies that at least 80 - 10 = 70% of the genome is perfectly invulnerable to deleterious mutations, either because no mutation can ever occur in these "functional" regions or because no mutation in these regions can ever be deleterious. This absurd conclusion was reached through various means, chiefly by employing the seldom used "causal role" definition of biological function and then applying it inconsistently to different biochemical properties, by committing a logical fallacy known as "affirming the consequent," by failing to appreciate the crucial difference between "junk DNA" and "garbage DNA," by using analytical methods that yield biased errors and inflate estimates of functionality, by favoring statistical sensitivity over specificity, and by emphasizing statistical significance rather than the magnitude of the effect. Here, we detail the many logical and methodological transgressions involved in assigning functionality to almost every nucleotide in the human genome. The ENCODE results were predicted by one of its authors to necessitate the rewriting of textbooks. We agree, many textbooks dealing with marketing, mass-media hype, and public relations may well have to be rewritten.

[1] [http://www.ncbi.nlm.nih.gov/pubmed/23431001](http://www.ncbi.nlm.nih.gov/pubmed/23431001)</comment>


What's between a kite and a string? - <AUTHOR> https://medium.com/@timchilcott/design-rules-b7b5e75b17c1

<comment><USER2> I took issues with this; restraints make people more creative not less. The harder the problem, the more amazing the solution.

Look how creative hackers had to be to break 2FA or Snowden himself walking outside an NSA office with gigabytes of data. How about those amazing jailbreaks via helicopters and ornate heists talked up in Wired Magazine.

<comment><AUTHOR> I think the end of the article explains exactly what you are saying. In other words. I agree with you.

"Restraints make people more creative not less."

From the article: "The moral is that sometimes rules (the string) may seem like a huge burden holding you back, but more times then not they keep you (the kite) making the right decisions, and keep you flying at your highest."</comment></comment>


Caucho 15th Anniversary scrolling animation - <AUTHOR> http://www.caucho.com/15thanniversary/index.html

<comment><USER2> have had some great experiences with resin back in the day... great product indeed. Kudos to the team</comment>


Days Since Last JavaScript Framework - <AUTHOR> https://dayssincelastjavascriptframework.com/ <comment><USER2> Would be nice if you displayed WHY it is 0 :)</comment>


Interview, Land a Job, and Get a Raise: An Unconventional Method for Programmers - <AUTHOR> https://medium.com/@andreineagoie/how-to-interview-land-a-job-and-get-a-raise-an-unconventional-method-for-programmers-5a5566b20f13#.pa766xhgu <comment><USER2> I'm not sure about anyone else but this guy's cocksure tone came off as really arrogant. I applaud him for being able to land a job with little programming experience, but playing that fast and loose isn't a good tactic for anyone in my opinion.

<comment><USER3> I'd hope it's a writing issue, as I certainly agree that, should someone present themselves like this, it would seem very transparent.

I think it's fine to strategize in such ways, but you have to be a savvy communicator to pull off this level of ... scheming?

<comment><AUTHOR> haha possibly. I was never much of a writer. I wouldn't necessarily call it scheming though. It's just trying to increase your odds of success in a system that can be exploited.

<comment><USER2> That's exactly the issue. If you go into the field of software development thinking that you can just "exploit" your way to the top you'll find yourself falling short. That kind of mentality leads to poor deliverable.

<comment><AUTHOR> You can never just exploit your way to the top. You need more than just interview skills to do that. You need many many more skills. However, most developers that I have met that are fantastic programmers have a real issue interviewing and they never get a chance to demonstrate their true value at a company.

</comment></comment></comment></comment></comment><comment><USER4> I've been programming professionally for 15 years, I have been doing serious React/Redux for the past 6 months. I am far from considering me an expert "Reactor", or even an expert programmer for that matter. I wouldn't honestly be able to "express how much better I am than everyone else", because that is simply not true. And if anyone told me how better they are than anybody else, I'd probably see this as a big red flag.

Now, this guy began learning code 6 months ago and is better than anyone else? Wow. Either a) he is much more intelligent and talented than I am (this is not sarcastic, it is entirely possible) or b) we have a case of the Dunning–Kruger effect.

<comment><AUTHOR> Thank you for the comment martinmoose. Please note that I never mention I am better than the other developers. As a matter of fact I specifically mention that is not the case in the conclusion of the article. What I do say is that with new tools such as React/Redux, you have the ability to become an expert because it is so NEW and long time programmers like yourself are also learning it at the same time as newbies. So in a year time, the difference between you and I when it comes to React/Redux might not be different, despite the difference in years at the job. That is what you should be convincing your interviewer: That your growth potential is higher than the rest.... plus all the other things beyond just technical experience.</comment></comment>


Instagram now lets you send Stories only to 'close friends' - <AUTHOR> https://venturebeat.com/2018/11/30/instagram-now-lets-you-send-stories-only-to-close-friends/ <comment><USER2> Nice move</comment>


Pure CSS3 coverflow effect. No javascript. Working on Chrome, FF and Safari. - <AUTHOR> http://sandropaganotti.com/wp-content/goodies/demos/cards/index.html#aela <comment><USER2> "Working" is a bit of stretch. Super sluggish for me on an i5 MBP in both Chrome and Safari.

<comment><USER3> Appears sluggish on Firefox too.

</comment></comment><comment><USER4> Great looking effect, but horribly slow and ultimately unuse-able. Web browsers are in dire need of some native GPU support.

<comment><USER5> its actually really smooth for me.

<comment><USER6> I'm using Chrome 13 on an iMac with 8 GB of Ram + Core i5. Pretty laggy here. Safari feels "smoother" though

<comment><USER5> hah, thats funny. literally the exact same setup for me. Im on lion, for what thats worth.

</comment></comment></comment></comment><comment><USER7> See also ZFlow for a JavaScript Coverflow: <http://code.google.com/p/css- vfx/wiki/AboutZflow>

Demo: <http://css-vfx.googlecode.com/svn/trunk/examples/zflow.html>

</comment><comment><USER8> I love the hash tag support. Nice work!

Edit: here's an example of linking directly to one of them: [http://sandropaganotti.com/wp- content/goodies/demos/cards/in...](http://sandropaganotti.com/wp- content/goodies/demos/cards/index.html#raguel)

<comment><USER9> The downside to that is that if you click through all of the images, pressing back in your browser won't take you to the previous page; instead you have to press back many times, cycling back through all the images, until you eventually are taken back to your previous page.

<comment><USER8> That's what replaceState() is for. [https://developer.mozilla.org/en/DOM/Manipulating_the_browse...](https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history)

<comment><USER3> Then the page will require JS to be enabled.

</comment></comment></comment></comment><comment><USER10>
      .card:target + .card + .card + .card + .card + .card +
          .card + .card + .card + .card + .card{
        z-index: 1;
      }

Could this be rewritten (with less stacking) using assigned/referenced id's for each image?

</comment><comment><USER11> Hey, nice work. It looks pretty cool.

It would be great if somehow you could click on the cards to switch between them. Forcing people to click on the dots at the bottom == very unintuitive.

<comment><USER12> Side-scrolling would be even better. That's the mechanism that I use for normal cover flow interaction, and that's what I expected this to work with.

Of course, if you don't have an input device that makes it easy to side-scroll (like a mouse with a vertical-only wheel) this doesn't make a whole lot of sense. Buttons at the side, response to right/left arrow keys, or a horizontal scroll bar would make a good backup for users without a trackpad.

Clicking on the cards would also be a welcome mechanism, but I imagine it would be used to jump to a specific card, rather than to go through one-by- one.

</comment></comment><comment><USER13> It seems to work fine on the default Android browser (running 3.2 on a tablet). Looks great, too! Would be awesome if it worked on Opera as well.

</comment><comment><USER14> I'm using chrome and it hijacked my back and forward buttons. Is that intentional? edit: nevermind - just saw comment by joejohnson below

</comment><comment><USER15> I can confirm it doesn't work in IE9 mobile.

</comment><comment><USER16> Works for me! Very slick.

Core 2, Chrome 13, Ubuntu.

</comment><comment><USER17> There is one exact position in Google Chrome where it get stuck for half a second.

I think it happens when the card gets inverted horizontally.

</comment><comment><USER18> I'd be happy to use my mouse or arrow keys.</comment>


US experts propose having AI control nuclear weapons - <AUTHOR> https://thebulletin.org/2019/08/strangelove-redux-us-experts-propose-having-ai-control-nuclear-weapons <comment><USER2> That might be one of the worst ideas I've ever heard. Do you really want to be near a nuclear weapon that is controlled by an opaque, unexplainable process? Even without the insane unobservable complexity of machine learning, do you want to be near a nuclear weapon co9ntrolled by a simpler, _theoretically_ explainable expert system "AI"?

Safety critical systems - including nuclear bombs - need to be simple, with realistically-understandable deterministic behavior. The answer to "what would our nuclear weapons do in ${any_hypothetical_situation}" _should never be_ "I don't know".

Even worse, if an "AI" is involved (by any definition of "AI"), that means the control system involves a Turing complete language. Asking questions about the behavior of the control system for a given set of inputs probably shouldn't require solving the Halting Problem.

edit: I suspect these so-called experts need to read the report[1] from the Therac-25 investigation.

[1] [http://sunnyday.mit.edu/papers/therac.pdf](http://sunnyday.mit.edu/papers/therac.pdf)

<comment><USER3> According to MAD principles a "safe" deterrent is less effective. Because your adversary must always think you are capable of delivering a retaliation. A perfectly safe system, may prevent that retaliation and invalidate the detterent effect. This issue applies to all technology and human systems connected with nuclear weapons. The outcome of nuclear war is so horrific that no technoogy would ever be good enough.

The solution is to eliminate them entirely and stop creating such insane choices.

<comment><USER4> > The solution is to eliminate them entirely and stop creating such insane > choices.

That solution entails magically ensuring that no one else has such weapons or will develop them.

If we had a way of doing that, we wouldn't even need armies protecting borders. You'd still need minimal border security to ensure individual intruders don't make it through, but why maintain a hugely expensive army if you could ensure that nobody else could create an army to invade you (or anyone else?)

<comment><USER3> Yeah, there isn't really a solution.

Personally I don't see long term national security as possible with nukes either. Sooner or later a situation will exist where a bad actor is in power. Or they are just launched by accident. And large countries are not guaranteed to be politically stable. These large nations can and do disintegrate.

I think the risk of obliteration without nukes is less bad. I would rather see my country destroyed in a first strike or invaded by a foreign power. I think that would be less bad than a nuclear war.

The funny things is that the USA could easily be defended from conventional attack. And a small sub based detterant would be good enough. And there is a risk in stoking paranoia in your enemy by having large stockpiles. The vast majority of nations have far less conventional defence than the US and still don't want nukes.

</comment></comment></comment></comment><comment><USER5> Link to the actual proposal rather than the clickbait article:

[https://warontherocks.com/2019/08/america-needs-a-dead- hand/](https://warontherocks.com/2019/08/america-needs-a-dead-hand/)

<comment><USER6> I was a bit disappointed that while they did cite this they didn't link to it.

<comment><USER7> They do though, in the second paragraph.

<comment><USER6> If it is, it doesn't work on my phone or computer.

</comment></comment></comment></comment><comment><USER8> Of all the stupid proposals I've seen over a lifetime this one has to be the worst of all. So much for the 'experts'.

</comment><comment><USER9> Automate defensive systems, don't automate the offensive launch of nuclear weapon warheads. Whoever came up with that idea should be fired. You have to know what the taboos are, what lines not to cross.

What's next, simulated casualties are exchanged for actual casualties? I think one star trek series had a plot reaching that logical conclusion.

</comment><comment> xkcd-sucks In the past 100 years, there have been several incidents where humans have averted war by refusing to follow orders. There have been far fewer incidents of humans causing nuclear war by either following or disobeying orders

<comment><USER10> > There have been far fewer incidents of humans causing nuclear war by either > following or disobeying orders

True - but if you add the words "nearly" and "allegedly", then it's not such a rosy picture.

The book "Red Star Rogue" proposes the idea that the Soviet submarine K-129 was commandeered and attempted to launch a first strike on the United States in 1968. She was very far off her expected course when sunk, and allegedly there was a fail-safe system that scuttled the boat when an unauthorized attempt was made to launch her missiles.[1]

The US's nuclear weapons were capable of being used by a single individual for quite some time, until the 1960s. Even with the advent of the Permissive Action Link, until 1977 the 8-digit arming code was - seriously - "00000000". They were worried they wouldn't have the code available if the weapons were needed.[2]

There are numerous "close calls" that occurred, but those two came to mind right away in the context of human beings causing or having nearly caused a nuclear attack by disobeying orders in particular.

1: [https://www.kobo.com/us/en/ebook/red-star- rogue](https://www.kobo.com/us/en/ebook/red-star-rogue) 2: [https://en.wikipedia.org/wiki/Permissive_Action_Link#Develop...](https://en.wikipedia.org/wiki/Permissive_Action_Link#Development_and_dissemination)

</comment></comment><comment><USER11> This proposal is so obviously and completely insane that it would only make sense as a sort of distraction. I wonder from what.

<comment><USER12> Maybe it's some form of argument where you present three hard-to-swallow options ("Admittedly, each of the three options — robust second strike, preemption, and equivalent danger — has drawbacks" [1]), and then you pretend to offer a better alternative, which is actually so preposterous that the first three options start looking perfectly reasonable.

[1][https://warontherocks.com/2019/08/america-needs-a-dead- hand/](https://warontherocks.com/2019/08/america-needs-a-dead-hand/)

</comment></comment><comment><USER13> Terminator 6 marketing is getting out of hand.

</comment><comment><USER14> Theory: they know something about AI that we don't and because of what they know, decoded to scare all the world's AI practitioners into getting their shit together at the same time. Alternate theory: they are idiots. Alternate theory number two: they know something about AI and a lot about nuclear doctrine that most people don't, and they are actually onto something...

<comment><USER15> Even then it is irresponsible. Dogma is rapid in industries filled with compartmentalizations.

To best avert disaster tech needs to first be open to the public and submisiable to regulation.

<comment><USER14> > Dogma is rapid in industries filled with compartmentalizations.

Yes 100% agreed.

> To best avert disaster tech needs to first be open to the public and > submisiable to regulation.

But we know that's never gonna happen with defence tech so...

</comment></comment></comment><comment><USER16> Why not remove PAL* and delegate authority to local commanders? I'd rather take the risk of trusting a human over a human designed, highly complex computer system.

In the UK, due to the lack of land-mass to absorb a strike, the PM issues final orders to the commanders of the Trident subs __. This is part of the deterrence strategy.

* [https://en.wikipedia.org/wiki/Permissive_Action_Link](https://en.wikipedia.org/wiki/Permissive_Action_Link) __[https://en.wikipedia.org/wiki/Letters_of_last_resort](https://en.wikipedia.org/wiki/Letters_of_last_resort)

<comment><USER17> The article on Letters of Last Resort made me think how absurd democracy can be at times.

It looks like PM May wrote her Letters of Last Resort, and then Johnson did the same. But from the looks of it, new Letters of Last Resort could be written pretty soon. Just thinking of those sub commanders, receiving new letters last week and then getting another set of letters just a couple of weeks later.

</comment></comment><comment><USER12> The proposal is indisputably harebrained, but the question is why the authors decided to publish it? One of the authors is a former US Air Force colonel.

And in particular why they choose to propagate falsehoods like "Hypersonic cruise missiles are powered all the way to their targets using an advanced propulsion system called a SCRAMJET. These are very, very, fast. You may have six minutes from the time it's launched until the time it strikes." Lest it be any confusion, scramjets are fast, but are nowhere as fast as ICBM's (Mach 5-10 vs Mach 20-23).

<comment><USER10> > One of the authors is a former US Air Force colonel.

I was curious, so I looked it up. There are about 3,300 colonels in the US Air Force:

[https://www.statista.com/statistics/239365/total-military- pe...](https://www.statista.com/statistics/239365/total-military-personnel-of- the-us-air-force-by-grade/)

> Lest it be any confusion, scramjets are fast, but are nowhere as fast as > ICBM's

I agree that's weird phrasing and incorrect on its face. That said - as I understand it, cruise missiles don't have the launch signature ICBMs have. While it would take longer for a cruise missile to travel the same distance as an ICBM, it might in fact give the target country less time to react if they aren't detected until they are well on their way.

</comment></comment><comment><USER18> What could go wrong?

[https://www.rottentomatoes.com/m/colossus_the_forbin_project](https://www.rottentomatoes.com/m/colossus_the_forbin_project)

<comment><USER19> I came here to see if someone already mentioned Colossus.

Funny trivia: there are parts of that movie shot in Rome, my city; you can see the Vatican, San Peters, the Orange Garden, the Janiculum and Isola Tiberina, specifically the hospital "Fate bene fratelli", where I was born.

The Americans meet there with Russians, joining forces to stop Colossus, and you can see written on a wall a mirrored "W Lenin".

The writing was actually there before they shot the movie, it was not added on purpose and stayed there until not long ago.

[https://i.imgur.com/wIha0mr.png](https://i.imgur.com/wIha0mr.png)

<comment><USER18> cool! great classic movie, beautiful city!

</comment></comment></comment><comment><USER20> Does the term expert as used in the media still convey any meaning?

<comment><USER21> The "experts" in this case seem to be defense experts, not AI experts.

<comment><USER22> Not really defense experts either though, eh? Maybe "morons" is more fitting.

<comment><USER23> Defense /industry/ experts are experts at pushing fear to sell expensive "solutions" of marginal to negative value.

</comment></comment></comment></comment><comment><USER24> The problem with AI is that it doesn't get cold feet, and can't intuit the likely truth against the present "facts."

[https://duckduckgo.com/?q=Russian+officer+prevented+wwiii&t=...](https://duckduckgo.com/?q=Russian+officer+prevented+wwiii&t=fpas&ia=web)

<comment><USER25> I'm not saying it's a good idea, but software can and has been written to evaluate the likelihood of the validity of certain facts using heuristics. Petrov said the official training taught that an American first attack would be massive, not just a few missiles; that same knowledge could be used in an algorithm.

<comment><USER23> Doesn't that suggest the worst possible act of mass slaughter in that system would be to get a "massive" array of fake missle drones or dud missles from the direction of a nuclear power to spark dual MAD strikes from a third party?

It would shift it to a hackable spoofable system. Said bad actor could state a "technically I didn't kill millions/billions you did" and be right in a way.

<comment><USER25> Yes, but that's a failure mode of any system, including with humans: a realistic false flag attack can provoke a counter-attack against your real target. The solution is to improve your capacity of distinguishing true attacks, regardless of whether the analysis is made by a human or software.

<comment><USER23> I suspect the real danger of the automated system is speed and with it being beyond the ability of others to counter it - which means the system may overreact immediately with nothing to be done to stop it in matters of ultimate stake.

</comment></comment></comment></comment></comment><comment><USER26> AI do not have a thinking mind like humans do.

Developer/ Researcher: Hold down boy, we can do that.

Me: Can you create with a goodness in mind?

Developer/ Researcher: Oh yeah, we can train it speaking to a good mind.

Me: Wrong!. you gotta ask whats a good mind first!. Define it, you will stand corrected and you will realise whole concept of tech is absurd.

</comment><comment><USER27> I don't see how faster ballistic missiles change the game. In the past you still could do surprise attacks and example eliminate the chain of command, or the lines of communication. While there are reports that suitcase nuclear devices were developed.

However what ultimately fixed this issue in the 60s was the adoption of nuclear submarines - you can surprise the adversary, but because you cannot find the subs the retaliatory strikes are assured.

</comment><comment><USER28> In the near future, we are going to have autonomous battlefield weapons:

[https://www.theatlantic.com/technology/archive/2019/09/kille...](https://www.theatlantic.com/technology/archive/2019/09/killer- robots-and-new-era-machine-driven-warfare/597130/)

</comment><comment><USER29> Čapek warned us of this in 1921. Give a machine inteligence enough to be dangerous, without the emotional safeguards of humans and disaster is certain to follow.

AI controlled weapons... Holy shit... Stupid ideas like that makes contemplate moving to the middle of the Pantanal or Amazon jungle to live of the land, away from all this madness.

</comment><comment><USER30> Maybe people should watch more old movies from the 20th century. This reads like satire, but its true!

</comment><comment><USER31> Shall we play a game?

<comment><USER32> For the unfamiliar:

[https://youtu.be/NHWjlCaIrQo](https://youtu.be/NHWjlCaIrQo)

EDIT: Well sue me for footnoting a cultural reference, I guess.

</comment></comment><comment><USER33> This article seems like rage bait.

</comment><comment><USER34> I think Congress needs to pass legislation banning such an insane, stupid idea. And we should stop calling it "artificial intelligence," as if some software is actually intelligent comparable to humans. This is just software and as with all software, it has bugs. Trusting it to not start a nuclear war is essentially saying, "this software, which we can't even explain how it works (cause ai), is bug free." Insane. This whole ai movement is dangerous but not because something like Hal or the terminator will be created but because stupid people like these will convince the government to put such weapons under the control of buggy software no one, including its creators, understands with horrific consequences. All so we can make sure that the whole world is destroyed in case of nuclear war. The insanity is truly mind boggling.

<comment><USER14> Congress isn't gonna pass legislation to ban the military from suggesting stupid ideas, or the executive branch from approving them, because that itself would be a stupid idea that reduces American defence readiness and suppresses worthwhile ideas as well as bad ones.

> as if some software is actually intelligent comparable to humans

How's your Go game coming along over there? (Have you ever even played? Because if you had I think you'd have more respect for the intelligence required (for a human) to succeed even moderately at the game.)

> not because something like Hal or the terminator will be created

Actually it is pretty dangerous for those reasons too.

<comment><USER34> Playing go or chess or any other game isn't intelligence. The computer isn't intelligent. It's programmed for one task and one task only. That's great programming and use of statistics etc. but that's not intelligent.

Anyway, if you're worried about terminator and Hal like beings, it's futile to discuss intelligence when you are living in a science fiction world. In our world, those things do not exist and there is no sign that they will exist anytime soon. What does exist and is scary is bug ridden software that controls weapons. That doesn't make for great science fiction though.

<comment><USER14> If your private definition of intelligence excludes everything machines have already been made to do, I suspect it is indeed pointless to discuss machine intelligence with you.

Personally, I'm not hung up on whether or not submarines can swim. If you are, please give me your clear definition of intelligence and explain how Go and chess and "any other game" are excluded by it.

<comment><USER34> If submarines are intelligent then cars and bikes must be intelligent also since they operate on similar principles. If a bike is intelligent, then pogo sticks are intelligent too. I suppose at that point, anything can be intelligent. What kind of intelligent things will bikes and cars and pogo sticks and submarines do if all humans ceased to exist? Let me guess: none.

<comment><USER14> I was referring to the famous quote from Dijkstra:

"The Fathers of the field had been pretty confusing: John von Neumann speculated about computers and the human brain in analogies sufficiently wild to be worthy of a medieval thinker and Alan M. Turing thought about criteria to settle the question of whether Machines Can Think, a question of which we now know that it is about as relevant as the question of whether Submarines Can Swim."

[http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EW...](http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD898.html)

Nobody is suggesting submarines can think. The actual point that Dijkstra was making is that it matters what the machine is capable of, but it doesn't matter what we call the thing that it does.

If your private definition of intelligence doesn't allow you to apply it to machines, that's irrelevant.

</comment></comment></comment></comment></comment></comment><comment><USER35> This must surely be an instance of "add 'AI' to whatever topic" in order to get attention, rather than a serious proposal, right? I'm sure we'll see "put nuclear weapons on blockchain" soon.

</comment><comment><USER36> See also the Russian Perimeter system: [https://en.wikipedia.org/wiki/Dead_Hand](https://en.wikipedia.org/wiki/Dead_Hand)

</comment><comment><USER37> Tried that one already. Works great...if your name is Hollywood and you're making a action movie

</comment><comment><USER38> Better hope that zero shot learning works. Otherwise it's one shot annihilation.

<comment><USER14> quote from the actual article:

> Unlike the game of Go, which the current world champion is a supercomputer, > Alpha Go Zero, that learned through an iterative process, in nuclear > conflict there is no iterative learning process.

</comment></comment><comment><USER39> Was the "expert" suggesting this perhaps also same the AI?

</comment><comment><USER40> I want off this planet.

Software engineers: ... Politicians: AI all the things

</comment><comment><USER41> Colossus: The Forbin Project (1970) addressed this method. [https://www.imdb.com/title/tt0064177/](https://www.imdb.com/title/tt0064177/)

</comment><comment><USER42> Step 1 .. Connect nuclear weapon to network.

Step 2 .. End civilisation.

</comment><comment><USER43> What the flying fuck? We don't even understand how modern AI algorithms actually work and how they decide stuff. And we want to give such blackboxes the power to annihilate all life on Earth?

<comment><USER44> I think the offense industry will read your comment and get all big-headed about how much stuff they think they can kill. They can definitely kill off homo sapien, but earth life will go on. There's still a few billion year left in the sun's main sequence. Maybe something more compassionate will evolve out of the leftovers.

<comment><USER45> > Maybe something more compassionate will evolve out of the leftovers.

My money is on squid... and that they'll be no better than us.

</comment></comment></comment><comment><USER46> The experts should go to the movies some time.

</comment><comment><USER47> nice try skynet.

</comment><comment><USER48> Terminator hasn't taught them nothing?

</comment><comment><USER49> Is this a modern version of Skynet?

</comment><comment><USER50> SkyNet? :D

</comment><comment><USER51> people who think AI can't hurt seems to neglect human stupidity

</comment><comment><USER52> So - Skynet or WOPR?

</comment><comment><USER53> logistic regression based nuclear missiles eh

</comment><comment><USER54> fire them all

</comment><comment><USER55> Come on it's not as if there is any chance something might go wrong after all!</comment>


Over 20 designers have copied my website and I don't mind - <AUTHOR> http://www.adhamdannaway.com/blog/web-design/imitation-truly-is-the-sincerest-form-of-flattery

<comment><USER2> I found it interesting that three images were commented out of the article:

[http://www.adhamdannaway.com/wp- content/uploads/2015/01/desi...](http://www.adhamdannaway.com/wp- content/uploads/2015/01/designer-coder-20.jpg)

[http://www.adhamdannaway.com/wp- content/uploads/2015/01/desi...](http://www.adhamdannaway.com/wp- content/uploads/2015/01/designer-coder-21.jpg)

[http://www.adhamdannaway.com/wp- content/uploads/2015/01/desi...](http://www.adhamdannaway.com/wp- content/uploads/2015/01/designer-coder-22.jpg)

I can only guess why they weren't included, but it does seem like they're less blatant rip-offs than the others.

<comment><USER3> The "touch of" is pretty revealing though, in the copy for the "coder" sections of the first and third.

</comment></comment><comment><USER4> I wouldn't be very happy if I hired a designer based partly on his website and then found out that he copied the design.

Just sayin'.

<comment><USER5> Exactly. While it may be flattering to be copied, rote copying by a designer for what is presumed to be a demonstration of creativity is not acceptable.

Some of these are perfectly reasonable adaptations, others are quite close to duplicates.

<comment><USER6> With enough time, I'm sure we could uncover art with the exact same design style that was created prior to his website.

<comment><USER5> That seems highly unlikely, unless he plagiarized himself. You might find something similar, but unlikely a split face with similar styling, the designer/code split, etc.

<comment><USER7> Everything is a remix. Everything we do is based on something we have seen somewhere, how else could we do it ? Hardly anything is original, creativity is just the process of knowing how to mix things in a creative way to create something seemingly new.

<comment><USER8> > _Everything is a remix._

Yeah, not really. There are traces from previous works and influences in anything, but this is not it.

This is not the Beatles being influenced from Buddy Holy, Elvis, Little Richard, and co in their early records.

This is like the Monkeys. Or the 20th cookie cutter R&B outfit.

And of course the Beatles went and did stuff that nobody else has done at the time with Revolver and Stg Peppers et al. And Velvet Underground. And Kraftwerk. And tons of others.

> _creativity is just the process of knowing how to mix things in a creative > way to create something seemingly new._

Well, then the examples in this website is the total opposite of it.

<comment><USER9> Musically I'd say it's like sampling a classic hit and getting rich off someone else's hook.

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> I like how, out of the 20 examples, 10 of them essentially copied the HTML snippet in the 'Coder' section of the 2012 image. Most of them even left the "jedi" div intact.

On the other hand, only 6 of the examples copied the yellow-blue-pink splotch motif from the 'Designer' section.

(These don't have any meaning in the bigger scheme of things; they're just statistics that amused me.)

</comment><comment><USER11> he does mind, which is why he posted this; he's staking original ownership on this design in a humble way

<comment><USER12> I remember, back in 2008, I directly asked him if I could make something like his page and showed him a screenshot of my version.

Mine had a keyboard and a pencil instead of my face.

He said to go ahead. At the end I didn't, but that's a different story.

</comment></comment><comment><USER13> What I find amusing is the fact that quite a few people didn't even bother to change the designer blurb, which to me suggests they know absolutely f all about design and hints at why they find it necessary to copy in the first place.

<comment><USER14> Hell, a lot of them didn't even change the face on the "designer" side! It doesn't look like them at all, and doesn't line up with the altered "coder" side.

</comment></comment><comment><USER15> My favourite part is the people who imitated the facial expression. Like they saw the site and thought, "Nothing says good web designer like mouth scrunched off to the side"

</comment><comment><USER16> It feels like maybe your site was ripped off and placed on a "free" templates site, where upon others copied it?

I mean I could be wrong, it just might explain the high number of rip offs.

</comment><comment><USER17> I wonder why most of those who copied his website are Indians

<comment><USER18> Filterbubbles perhaps? I never saw a website like this before. But he says he was featured a couple of times, so maybe the website was famous on some communities, but seldom seen on others.

<comment><USER19> That's not the real reason. There's no shame here in copying even if it's a total ripoff.

We copy assignments,lab reports,project work , designs , everything. We get the job done.

Originality ? Who gives a shit.

<comment><USER20> Everyone that has intellectual honesty and wants to feel pride of himself.

You are just saying that intellectual property worths zero. I wonder if somebody wants to travel somewhere and to make it more easy to accomplish, he steals your car. "Who gives a shit", "he got the job done", he is on his way! You worked your ass off to buy it but that's not important.

If everybody would be behaving like this what world would we get? Soon there would be nobody to copy and all the world would be like Asia.

</comment></comment></comment></comment><comment><USER21> Looks a lot like a Mercedes Benz ad I saw the other day : [http://adsoftheworld.com/media/print/mercedes_benz_left_brai...](http://adsoftheworld.com/media/print/mercedes_benz_left_brain_right_brain_paint)

<comment><USER22> That left brain/right brain design has been done to death: [https://encrypted.google.com/search?q=left+brain+right+brain...](https://encrypted.google.com/search?q=left+brain+right+brain&source=lnms&tbm=isch&sa=X)

</comment></comment><comment><USER23> "Imitation is the sincerest form of flattery"

</comment><comment><USER24> I'm wondering how you've found about them?

<comment><USER25> "Over the years, people have informed me of websites that they felt looked similar to mine."

</comment></comment><comment><USER26> A while back I got really annoyed when two of my competitors copied the buttons, pricing table and the content of two of my websites. This guy is handling it well. I understand getting some inspiration, but copying the whole thing is just too much. They are "designers".

<comment><USER27> I found one especially ironic, where the guy has the nerve to call himself a "Creative Visionary"... He must be capable of some impressive doublethink if he's not just outright lying to his clients.

<comment><USER26> I'm with you. I'm sure his results are the size of his creative vision.

</comment></comment></comment><comment><USER28> Related: On that left-brain right-brain roles split(it's not really that way): [https://news.ycombinator.com/item?id=8989685](https://news.ycombinator.com/item?id=8989685)

</comment><comment><USER29> I wonder if there is a free Wordpress theme out yet based on this design..

</comment><comment><USER30> I have always felt that a lot of designers tend to copy stuff. But then again, perhaps coders copy code too. I guess, it's just easier to spot copied designs than copied code.

</comment><comment><USER31> If you didn't mind you wouldn't have posted all the other copies ;) It's alright to mind, and it's alright to complain sometimes

</comment><comment><USER32> Great to read this. I admit, I pretty much copied you too:

[http://www.zubairquraishi.com/](http://www.zubairquraishi.com/)

:)

<comment><USER33> Since you only copied the navigation menu and you don't claim to be a designer, I think you fall under the category of inspired rather than copy cat :)

<comment><USER32> Ah, ok, well thanks for the inspiration! :)

</comment></comment></comment><comment><USER34> Is there a way to fingerprint the code in such a way that it's quite difficult to detect/remove but easy to trace?

<comment><USER35> No. But you can just diff the code and see it's XX% the exact same code.

<comment><USER13> Sure you could, if the code is complex enough you would hide dead code acting as a signature, which would be somewhat analogous to mapmakers inserting false towns in their maps [1]

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

<comment><USER34> This is what I was looking for. It seems like a common copyright problem in bunch of applications.

</comment></comment></comment></comment><comment><USER36> Do these kind of personal sites help in finding/attracting leads? (for programmers)

</comment><comment><USER37> All those Wordpress coders, who focus on clean, elegant and efficient code …

<comment><USER38> ... with a touch of CMS and jQuery! :)

</comment></comment><comment><USER9> Guess it's time to design yourself a new website.

</comment><comment><USER39> the multiplication of mediocrity miracle

</comment><comment><USER40> #humblebrag

</comment><comment><USER41> Repost.. jk

</comment><comment><USER42> Let's hope they made theirs faster than yours because your website is painfully slow.</comment>


Why hasn't craigslist been disrupted yet? - <AUTHOR> https://medium.com/@maxmackey/why-hasn-t-craigslist-been-disrupted-yet-7370b03e8b3b <comment><USER2> Ugly UI? Oh god. I love Craigslist precisely because it has a simple, clean, straightforward UI that hasn't been larded up with a lot of crap. It's still functional and it's still useful. It does its job, which is to connect buyers and sellers. It does not waste my time trying to impress me with some designer's ego.

Craigslist's UI is _beautiful_.</comment>


Python is the fastest growing programming language due to buffer protocols - <AUTHOR> https://jeffknupp.com/blog/2017/09/15/python-is-the-fastest-growing-programming-language-due-to-a-feature-youve-never-heard-of/ <comment><USER2> Python is great for experimentation.

It's my plasticine. I will wield it like a maniac until I have a very firm, experiment-backed understanding of the problem. Then I will go back and implement something more cleanly or iterate the experiment towards a cleaner implementation.

Many other languages are like quick dry cement. You'd better know what you're building and how to build it before you begin or it will turn into a big hot mess.

<comment><USER3> I agree. Your analagy resonates with me. Every day that I get to write python is a happy day. I now dread my Java days.

</comment></comment><comment><USER4> I disagree that the buffer protocol is the one reason why Python is growing. Python was designed as a glue language, has great APIs for intrgrating with other languages, and people continue to use and improve those APIs to integrate with more and more systems. It's the overall design of Python that makes it popular for this kind of work.

<comment><USER5> It's what you call a "clickbait title" but it's an interesting little article nevertheless.

</comment></comment><comment><USER6> Could we have a less clickbaity title?

<comment><USER7> Sure.</comment></comment>


Show HN: PL/Swift – PostgreSQL Functions in Swift - <AUTHOR> http://www.alwaysrightinstitute.com/plswift/ <comment><USER2> A different approach I wrote in rust

[https://github.com/posix4e/rpgffi](https://github.com/posix4e/rpgffi)

With some example consumers: [https://github.com/durch/google-bigtable- postgres-fdw](https://github.com/durch/google-bigtable-postgres-fdw) [https://github.com/posix4e/jsoncdc](https://github.com/posix4e/jsoncdc)

</comment><comment><USER3> Being able to push some application logic into the database server can be very powerful for batch operations. Often you need to make real decisions in application logic at several steps along the way.

If you use an ORM-like coding style, you get orderly code but performance is terrible because (a) every row is handled in its own transaction and (b) even if it wasn't there are multiple network round trips per row. One is thus compelled to write a kind of hybrid: insert a thousand rows, do some join, for each row that is returned, add a row to the pile of stuff to be inserted next, do that insert, and so on and so forth, for many steps. Instead of having a loop like:

        for data in input {
            step1();
            step2();
            ...
        }

...you get code that reads like: do step1 for a thousand items, insert, do step2() for a thouand items, insert...

With the code running directly in the database, you can write it in a more naive, ORM like style, because calling into the database for an INSERT or SELECT is much cheaper than a network round trip.

<comment><USER4> > If you use an ORM-like coding style, you get orderly code but performance is > terrible because (a) every row is handled in its own transaction and (b) > even if it wasn't there are multiple network round trips per row.

What ORM are you using? I've only really used SQLAlchemy, and I'm pretty sure it doesn't end up working like that. I've seen the SQL it outputs and it almost always is what I would have written (I haven't done really complicated stuff, though)

<comment><USER5> There are ways to mitigate this if your ORM is good. I made the poor decision of moving to a much more powerful but geographically distant DB a while back, and while some operations benefit greatly from the extra hardware and memory, you _really_ learn where your inefficiencies are when there's a 50 millisecond round trip involved and you find you're hitting the DB a few hundred or thousand times for this task.

Pre-fetching relations is amazingly useful in that context, as are alternate input methods that allow multiple inserts in a single glue opening (but be prepared to divide.and conquer if one or more items might fail to insert, such as when a unique key has a duplicate). Updates are generally the biggest problem, but if you're lucky you can reduce those by grouping similar updates into single update statements.

Many of these have more specific solutions depending on the particular RDBMS you are using, but ORM support for those features is generally poor. If you're lucky your ORM is extensible enough that you can hack some in without too much effort and while being fairly clean.

<comment><USER6> From what I remember batch operations are a part of the JDBC core.

</comment></comment></comment></comment><comment><USER7> Looks interesting PoC. I have written multiple extensions for PostgreSQL in Go. The hardest part is not "glueing" together the tools to make it work. Most of the time it's much more easier and faster to just write in C (C++ with wrapper).

There are many cases you should consider, like returning rows (composite types) and implementing trigger functions.

<comment><AUTHOR> I disagree that it is easier or faster to just write it in C. But C still makes a _lot_ more sense for many other reasons. And yes, this demos only the very basics, nothing fancy.

Anyways, a nice feature of Swift in this context is that Swift can directly access C APIs w/o any "wrapping". So while PL/Swift can add convenience APIs (like the ones it has to convert String's and Int's into Datum's), it can already do almost everything C can do due to that.

<comment><USER8> > Anyways, a nice feature of Swift in this context is that Swift can directly > access C APIs w/o any "wrapping".

Well, you have to write a modulemap, but I see what you mean.

</comment></comment></comment><comment><USER9> I'd suggest the authors to change the name, I thought it was about PL/I at the first sight.

<comment><USER10> This is the naming scheme for all PostgreSQL programming language extensions.

[https://www.postgresql.org/docs/9.1/static/server- programmin...](https://www.postgresql.org/docs/9.1/static/server- programming.html)

<comment><USER11> Also I believe this naming pattern originated from Oracle's PL/SQL, on which PostgreSQL's own PL/pgSQL was based originally.</comment></comment></comment>


Steam store rendered in Servo - <AUTHOR> https://twitter.com/jruderman/status/580888265642770433 <comment><USER2> I'm a C++ developer, and Rust looks very exciting to me. Maybe I'm optimistic, but Rust really looks like it can be a serious C++ contender in the long run.

Talking with other C++11/C++14 users here, the general feeling is that, yes, C++ is a good language because of the performance you can get out of it and some of the nice features that have been added, but the language carries around a lot of cruft that is unavoidable due to its age and maturity.

C++ has always been an expert's language. These days it's the expert's expert language++. There are no shortages of landmines and gotchas in the C++ landscape.

Modern C++ is a new language, and it really does help, but for the first time there's another language that can actually fill those same shoes.

A really big deal that isn't really addressed by golang is the fact that you can produce shared libraries with rust, and call them from existing C/C++ programs through a C interface. That's a really big deal in places with a lot of legacy code.

Another big deal (from the scientific computing POV) is the lack of garbage collection. Yes, GC is helpful, but replacing C++ means squeezing every last bit of performance out of your hardware. Rust does not sacrifice in this regard.

I really hope that Rust has a bright future. It's almost like "C++ done right", but I would stray away from such a label since someone might Linus you and say, "there's no way to do C++ right".

I also view golang as the successor to Python. It's faster, modern, addresses concurrency, and makes things easier for developers. It takes a strongly opinionated stance, and that's exactly the right choice for many problem domains.

Python, unfortunately, is dead to me. The GIL is a deal-breaker, and even though we have _lots_ of Python code in production, I can definitely see a future where Python is phased out in favor of something like golang.

Basically, I'm bullish on Rust + Golang, neutral on C++, and slightly bearish on Python/Ruby-like languages that do not address the concurrency problem.

<comment><USER3> Whoa, how is Go a successor to Python, with completely different philosophy? Especially considering static typing.

It's light years closer to C++.

<comment><USER4> From a blog post by Rob Pike, one of the designers of Go:

"I was asked a few weeks ago, "What was the biggest surprise you encountered rolling out Go?" I knew the answer instantly: Although we expected C++ programmers to see Go as an alternative, instead most Go programmers come from languages like Python and Ruby. Very few come from C++.

We—Ken, Robert and myself—were C++ programmers when we designed a new language to solve the problems that we thought needed to be solved for the kind of software we wrote. It seems almost paradoxical that other C++ programmers don't seem to care."

[http://commandcenter.blogspot.it/2012/06/less-is- exponential...](http://commandcenter.blogspot.it/2012/06/less-is- exponentially-more.html)

<comment><USER5> I don't think that's an accurate portrayal that they were "C++ programmers" as if to imply they were experts or even proficient at it. Plan 9 doesn't even have a C++ compiler. From his wikipedia bio, Ken Thompson "later refused to work in C++".

I think they were surprised that C++ programmers didn't like Go because Pike and Thompson weren't actually C++ programmers. Griesemer however appears to know C++ well.

</comment></comment></comment></comment><comment><USER6> Preexisting discussion on /r/rust: [https://www.reddit.com/r/rust/comments/30blul/the_steam_stor...](https://www.reddit.com/r/rust/comments/30blul/the_steam_store_rendered_in_servo/)

Servo's been looking pretty exciting for a while now. I believe they just passed a milestone where it now implements the CSS rules used by 50% of all webpages (according to a survey performed by Google), and its performance is still blowing other layout engines away if preliminary reports are to be believed (as ever, we'll see if that holds up as they implement more of the web). Definitely a project to watch.

In other neat news, just yesterday they managed to implement a rudimentary tabbed browser GUI using only web technologies: [https://github.com/glennw/servo-shell](https://github.com/glennw/servo-shell) . Ideally this would be a stepping stone to the more full-featured browser.html project: [https://github.com/mozilla/browser.html](https://github.com/mozilla/browser.html)

<comment><USER7> Once my two layout PRs (border-collapse and transition) land, we will have at least _some_ support for every _standard_ CSS property used by 50% or more of Web pages, as measured by Chromium's usage counters. That does not mean that the implementations are bug-free or that all features of those properties work; for example, multiple backgrounds, elliptical radii, and many transition properties are not yet supported. But it's an important milestone nonetheless, IMHO.

<comment><USER8> What's your estimation on the future of servo? Will it eventually become the new Firefox or will they just relegate it to a research offshoot?

<comment><USER9> Looking at the number of outside contributors shows a bright future for Servo even if Mozilla doesn't fund it beyond research. It is much much more friendly to newbies than trying to contribute to gecko or webkit/blink. And webkit started out entirely unfunded as KHTML.

</comment></comment></comment></comment><comment><USER10> I am excited for Servo. I think it has the potential to act as a real competitor to the current Webkit ubiquity, which, while not _necessarily_ bad, probably isn't ideal.

<comment><USER11> Agreed. The web has always been healthiest where there are a handful of independent browsers in the mix. We're sliding down the path of a ChromeDesktop/SafariMobile duopoly which isn't good for the web.

I'd really like to see Servo start pressuring the big guys and possibly start winning some of the embedding battles.

</comment></comment><comment><USER12> Okay. But what's a servo?

<comment><USER13> Mozilla's experimental rendering engine, written entirely from scratch to avoid a lot of the problems that Gecko and other engines have because of their age. Along with that they're experimenting with parallelized layout and other things to get better efficiency and performance.

<comment><USER14> Mozilla is (planning on) using it for FirefoxOS. They have no plans to do so, but I'd be happy seeing it in desktop Firefox.

edit: planning on

<comment><USER15> FirefoxOS uses Gecko like desktop.

<comment><USER14> I spoke too soon. They are planning and working on it.

[http://blog.servo.org/2015/02/24/twis-25/](http://blog.servo.org/2015/02/24/twis-25/)

[http://techcrunch.com/2013/04/03/mozilla-and-samsung- collabo...](http://techcrunch.com/2013/04/03/mozilla-and-samsung-collaborate- on-servo-mozillas-next-gen-browser-engine-for-tomorrows-multicore-processors/)

[https://github.com/servo/servo/wiki/Roadmap](https://github.com/servo/servo/wiki/Roadmap)

</comment></comment></comment></comment></comment><comment><USER16> That's very nice. This is great progress for Servo and Rust. It's a screenshot of a page rendered without any Javascript, though. Here's that page, run through our service which removes all Javascript, Flash, and embedded code, parses the HTML, and re-emits cleaned-up HTML.[1] (This tool is normally used to check how our crawler sees a page.) It looks exactly like the screenshot on Twitter, once you scroll down past the video they're not showing.

Now they have to interface Servo to all the ugly stuff - the Javascript JVM, plug-ins, etc.

[1] [http://www.sitetruth.com/fcgi/viewer.fcgi?url=http://store.s...](http://www.sitetruth.com/fcgi/viewer.fcgi?url=http://store.steampowered.com/app/105600/)

<comment><USER17> Servo is already hooked up to a (very old) version of SpiderMonkey, but it's missing enough DOM features that most pages hit errors. This Steam page hits "ele.canPlayType is not a function", "document.write is not a function", and "link.href is undefined".

Last I heard, Servo does not plan to support plugins such as Flash. I'm not sure if the existence of Shumway changes this.

<comment><USER18> Fun times ahead if document.write isn't already supported. When I rewrote Gecko's HTML parsing, accommodating document.write was a (or maybe the) dominant design issue.

<comment><USER19> I'm quite curious, why document.write is so hard to implement compared to other methods ? Is it not working a bit like innerHTML ?

<comment><USER18> It's quite different from innerHTML, since document.write inserts source characters to the character stream going into the parser, and there's no guarantee that all elements that get opened get closed. There's even no guarantee that the characters inserted don't constitute a partial tag. So document.write _potentially_ affects the parsing of everything that comes after it.

For this to work, scripts have to appear to block the parser. However, it's desirable to start fetching external resources (images, scripts, etc.) that occur after the script that's blocking the parser. In Firefox, the scripts see the state of the world as if the parser was blocked, but in reality the parser continues in the background and keeps starting fetches for the external resources it finds and keeps building a queue of operations that need to be performed in order to build the DOM according to what was parsed. If the script doesn't call document.write or calls it in a way that closes all the elements that it opens, the operation queue that got built in the background is used. If the document.write is of the bad kind, the work that was done in the background is thrown away and the input stream is rewound. See [https://developer.mozilla.org/en- US/docs/Mozilla/Gecko/HTML_...](https://developer.mozilla.org/en- US/docs/Mozilla/Gecko/HTML_parser_threading) for the details.

For added fun, document.write can write a script that calls document.write.

<comment><USER16> What a mess. To support a stupid HTML feature, the browser's parser has to be set up like a superscalar CPU, retirement unit and all. Hopefully the discard operation doesn't happen very often.

i86 CPUs have to do something like this if you store into code just ahead of execution. That was an optimization technique marginally useful in the 1980s. Today it's a performance hit. The CPU is happily looking ahead and decoding instructions, when one of the superscalar pipelines has a store into the instruction stream. The retirement unit catches the conflict between an instruction fetch on one stream and a store into the same location in another. The CPU stalls as instructions up to the changed instructions are committed. Then the CPU is flushed and cleared as for a page fault or context switch, and starts from the newly stored instruction.

Only x86 machines do this, for backwards compatibility with the DOS era. The same thing seems to have happened in the browser area.

(Prospective fetching should be disabled on devices where you pay for data traffic. Is it?)

</comment></comment></comment></comment></comment></comment><comment><USER20> This is significant because there's an ongoing effort to implement the Chromium Embedded Framework (CEF) API on top of Servo, and Steam uses a derivative of CEF in its official client application. I'm guessing this is how the idea of using the Steam pages as a Servo testcase came to be, since Steam is at least a hypothetical embedding testcase.

<comment><USER7> While we are interested in embedding (and there are at least three proof-of- concept-phase browser shells for Servo as a result), there's no motive behind using Steam other than that Jesse's a gamer. :)

</comment></comment><comment><USER21> As anyone here watched the Jonathan Blow videos on his language ideas?

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

I don't care about the specifics of his language but I think he brings up a very valid point which my summary would be, we should design a language that is both performant AND fun to program. Fun = type less boilerplate, make refactoring easier.

C++ is not that language and from what I've read Rust is not that language either. C++ is stuck with backward compatibility so it can arguably never achieve those goals. Rust didn't seem to have those goals it mind, it had other goals so it's not really a fun language either. Too verbose or so I've read.

<comment><USER7> For a browser engine, "memory safe" as a design criterion massively outweighs "fun to program in" (although I do think Rust is pretty fun). Most critical browser engine vulnerabilities are memory safety issues, and we would be not be doing our jobs if we wanted to have "fun" at the expense of security.

Jonathan Blow's language is not memory safe, and is not trying to be. That may well be fine for his domain, but not for ours.

<comment><USER21> Like I said, my point is not about the specifics of his language. It's about the ideas he discusses. I agree with him that anytime I'm typing 150 lines of boilerplate on C++ or refactoring things from global function to member function etc, all the busy work required to do that is depressing. I wish more language devs would take stuff like that into account when designing their new language.</comment></comment></comment>


Associations of fats and carbohydrate intake with cardiovascular disease - <AUTHOR> http://www.thelancet.com/journals/lancet/article/PIIS0140-6736(17)32252-3/fulltext <comment><USER2> Previous discussion (I already linked to the study): [https://news.ycombinator.com/item?id=15124906](https://news.ycombinator.com/item?id=15124906)

</comment><comment><USER3> Confounding factor: Carbohydrate intake is associated with poverty (because they are generally cheaper).

If anyone has access to the full paper, does it account for this?</comment>


Annex – Nice and small Objective-C extensions library - <AUTHOR> http://github.com/wess/Annex

<comment><AUTHOR> This is version 2.0. Updates for iOS7, general house cleaning, and some nice additional categories.</comment>


Persistence modules for the invesdwin-context module system - <AUTHOR> https://github.com/subes/invesdwin-context-persistence/blob/master/README.md <comment><USER2> Yes, Linux pipes suck as an IPC mechanism. I'd like to see a benchmark using QNX message passing on the same hardware.

<comment><USER3> Doesn't linux have something similar: System V messages or even Unix Dgram sockets say using named paths for queue names.

<comment><USER2> System V messages weren't bad, but they aren't used much.

The real trick is tight IPC and CPU scheduling integration. You want a send from process A to process B to result in an immediate transfer of control from process A to process B, preferably on the same CPU. The data you just sent is in the CPU's cache. QNX is one of the few OSs where somebody thought about this.

With unidirectional or pipe-like IPC, the sender sends, which unblocks the receiver, but the sender doesn't block. So the OS can't just toss control to the receiver. The receiver goes on the ready-to-run list and, quite likely, another CPU starts running it. Meanwhile, the sending process runs for a short while longer and then typically blocks reading from some reply pipe/queue. It takes two extra trips through the scheduler that way. Worse, if the CPU is busy, sending a message can put you at the end of the line for CPU time, which makes for awful IPC latency under load.

It's one of the classic mistakes in microkernel design.

<comment><USER3> > With unidirectional or pipe-like IPC, the sender sends, which unblocks the > receiver, but the sender doesn't block. So the OS can't just toss control to > the receiver.

Interesting. I remember looking at the API but I just didn't have enough experience or context then to dig deeper and answer those questions. I stayed away from message queues and opted for shared memory, mostly because they seemed obscure and was afraid I would hit some corner case bug and would be stuck on my own debugging low level kernel code.

> You want a send from process A to process B to result in an immediate > transfer of control from process A to process B, preferably on the same CPU.

I can see a message-passing centric system having some specific optimizations in scheduler. Say once a few messages are sent, there might be a DAG formed of which senders send to which receivers. Sorting that DAG using topological sort might be interesting, then making scheduling decisions based on it. That is, if sender1 sends message to receiver1 and receiver1 and the sends to receiver2. Maybe it is more efficient to run them in that order -- sender1, receiver1, receiver2.

Saw that done in a realtime system, which processed low latency data. That graph was static, but this sorting trick allowed sometimes for processing data with the latency of only one frame.

<comment><USER2> There's a discussion of this in this old QNX design document.[1] See the IPC section. Integration between scheduling and message passing is essential if you're making lots of little IPC calls. When control passes from one process to another via an IPC call, the receiving process temporarily inherits the priority and remaining CPU quantum of the caller. This makes it work like a subroutine call for scheduling purposes - nobody goes to the back of the CPU queue. So IPC calls don't incur a scheduling penalty.

[1] [http://www.qnx.com/developers/docs/6.3.0SP3/neutrino/sys_arc...](http://www.qnx.com/developers/docs/6.3.0SP3/neutrino/sys_arch/kernel.html#NTOIPC)

</comment></comment></comment></comment></comment><comment><USER4> TL;DR: If I understood it correctly, it describes performance differences on how using one thread for doing JNI to LevelDB request serialization and IPC communication between other threads, using different IPC mechanisms.

I would like to see where the time is spent, e.g. if pipe communication is slow because of small requests, because how serialization is implemented (e.g. time on spin locks and mutexes), etc.

<comment><AUTHOR> Our tests showed than even with larger messages (100k price ticks per request) pipes were still a magnitude slower.

</comment></comment><comment><USER5> We updated the title from "Memory Mapping 15x faster than Named Pipes and 2x faster than Queue (Java)", which was referring to these benchmarks from the project page:

      ArrayDeque (synced)       Records:   127.26/ms  in  78579 ms    => ~50% slower than Named Pipes
      Named Pipes on TMPFS      Records:   263.80/ms  in  37908 ms    => why ~5% slower on TMPFS?
      Named Pipes               Records:   281.15/ms  in  35568 ms    => using this as baseline
      SynchronousQueue (fair)   Records:   924.90/ms  in  10812 ms    => ~3 times faster than Named Pipes
      LinkedBlockingQueue       Records:  1988.47/ms  in   5029 ms    => ~7 times faster than Named Pipes
      Mapped Memory             Records:  3214.40/ms  in   3111 ms    => ~11 times faster than Named Pipes
      Mapped Memory on TMPFS    Records:  4237.29/ms  in   2360 ms    => ~15 times faster than Named Pipes

<comment><AUTHOR> why these title changes?!? Does one really have to write separate blog posts with the same title so they don't get changed?

<comment><USER5> From the guidelines:

> _Otherwise please use the original title, unless it is misleading or > linkbait._

The long-standing policy is to represent the submitted content as accurately as possible and let readers pick out what's interesting to them, not what the submitter found interesting. A comment in the thread is a fine place to call such things out if a blog post is overkill.

</comment></comment></comment><comment><USER3> Shared memory is fast but dangerous if not done right, lots of opportunities for data races. I used it for low latency data access. It took an inordinate amount of time to debug. With hardware at the time there was no other alternative given the constraints.

Two other things that would be fun to benchmark is Unix Sockets and System V IPC messages (anyone uses those? probably the most obscure IPC around these days). Hmm, maybe some of those are already used behind the scenes by some of the Java methods described.

</comment><comment><USER6> Where does the speed advantage come from? Is it because LinkedBlockingQueue doesn't spin-wait before giving up and rescheduling the consumer's thread?

<comment><AUTHOR> I am wondering about this myself, even SynchronousQueue (where the spin wait was taken from) is slower than Mapped Memory. Though ASpinWait spins a magnitude longer before sleeping, maybe that is the difference. Or the fact that Memory Mapping goes Off-Heap and instantiates no objects during transfer.

</comment></comment><comment><USER7> I tried to figure out how to do memory mapping with Boost once... It was complicated. I wish there was a good crossplatform solution that was clear and easy to use

<comment><USER8> Are you talking about just mapping a file into memory? Because there are only two function calls you need to do something like that in POSIX:

open(), and then mmap().

If you're talking about POSIX shared memory, you can do that with shm_open(). The only thing you have to do is have both processes use the same name for the shared memory area. Additionally, you can use POSIX named semaphores as a synchronization primitive.

It's pretty easy to wrap these functions up in a C++ class. You could conceivably share an entire C++ class between two processes using these primitives.

<comment><USER4> "You could conceivably share an entire C++ class between two processes using these primitives."

Not really. May be just memory mapping a plain class/struct, without virtual function tables, etc. (pointers are not necessarily valid from process to process)</comment></comment></comment>


MIT 6.001 Spellbook (1992) - <AUTHOR> http://hacks.mit.edu/Hacks/by_year/1992/spellbook/ <comment><USER2> If you open the .ps file in a text editor, you'll notice that it's hand- written and has a neatly tweakable table of spells at the end, after the layout code for them. It also makes the recursive shield heraldry recursively.

<comment><USER3> The comment in the code says it's called recursively, but it looks to me like it's just called iteratively 10 times in a `repeat` loop. Unless it's "recursive" in that each iteration seems to resize but keep the previous?</comment></comment>