Steak 1.0 released or Why Cucumber might not be your best choice - <AUTHOR> http://groups.google.com/group/steakrb/browse_thread/thread/b90c86d0b7464a56

<comment><USER2> I switched from Cucumber to Steak for several months and loved it. Getting away from english specification was a BIG win.

However, two weeks ago, I removed Steak entirely, and am now using pure RSpec for my integration tests.

If you look at the heart of Steak [1] you'll see it's nothing more than a couple aliases for existing RSpec methods. 'example' becomes 'scenario', and 'before' becomes 'background'. I'm all for accurate language, but I don't think switching a couple method names really changes anything important here.

Switching from Steak to pure RSpec was simply a matter of a global search and replace, and now I've got one less gem to think about.

[1] [https://github.com/cavalle/steak/blob/master/lib/rspec-2/ste...](https://github.com/cavalle/steak/blob/master/lib/rspec-2/steak.rb)

<comment><USER3> I went one step further and ditched RSpec for straight Test::Unit and sometimes Shoulda. I don't find the RSpec DSL an improvement over straight Ruby asserts at all.

</comment></comment><comment><USER4> … where BDD = _Behavior Driven Development_ which, if Wikipedia is to be believed, is _an agile software development technique that encourages collaboration between developers, QA and non-technical or business participants in a software project._

The second definition exceeded my jargon quota for the day:

 _BDD is a second-generation, outside-in, pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters._

<comment><USER5> That's a load of crap. The best definition I've ever heard for BDD is "TDD done right". This is certainly what "BDD" started out as. The idea is that the language of typical testing frameworks doesn't encourage the right types of tests (i.e. testing behaviour rather than state), and so using a package that has the right vocabulary, you are more likely to do TDD right.

There is no significant difference between BDD and TDD other than that terminology, and most leading BDD proponents in the ruby community will refuse to set it in opposition with TDD. BDD is just a form of TDD, not some separate discipline. Defining BDD without mentioning its relationship to TDD is stupid.

<comment><USER6> BDD means testing that you've delivered what the customer asked for. User stories expressed as test. This is like the architect's rendering of a building; it expresses and implies certain desired qualities.

TDD means testing that you've implemented a system which has all the significant qualities you expected. It intends to prove that the system does all of the right things and none of the wrong things on the way to delivering what the customer asked for. This is more like the blueprint of the building, making all significant details explicit.

You could practice BDD without TDD, though I've yet to see someone choose to. You can practice TDD without BDD, which I've seen many people do.

<comment><USER7> > BDD means testing that you've delivered what the customer asked for.

No, that's "Acceptance testing", and doing it without TDD is actually quite common.

<comment><USER6> ... which is why you frequently hear BDD called "Agile Acceptance Testing"

<comment><USER5> Perhaps by later practitioners of BDD who have no idea what they're talking about...

RSpec itself is in fact driven by the BDD ideas - adapting the language to make "doing the right thing" easier, and focusing on testing behaviour rather than state. RSpec has little or nothing to do with acceptance testing. It is thoroughly a unit testing tool.

</comment></comment></comment></comment></comment></comment><comment><USER8> There's an assumption implicit in the announcement (and in a lot of anti-Cukes stuff I've seen) that the primary benefit in writing your feature specifications in pseudo-English is that clients get to read/write the features.

That's not the point, at least as far as I'm concerned. The point is to make me, as a developer, think like a user and write the specification of a feature from a user's perspective.

So instead of writing 'page.should have_css(...),' I write "Then I should see ...", and specify the details of that somewhere else. Yes, I could just write a method 'def i_should_see,' but I'm a developer, and hence lazy and also comfortable with the detail. That means I'm more than likely _not_ to do that, but then I've got a spec which doesn't express the feature from the user's point of view.

I'm prepared to accept that there are developers who are disciplined enough to write specs with Steak which do express things from the user's point of view, but I'm certainly not one of them.

</comment><comment><USER5> For the record, I use Steak instead of Cucumber, and find it far more convenient than using Cucumber. Effectively, it removes a whole class of errors/issues that I used to have with Cucumber (errors with parsing the steps, and issues with getting the steps to do exactly what I want). It's one less language to learn, too - Steak steps are written in ruby, you don't need to learn the regexp-driven step-matcher definition syntax of cucumber.

This also means that the tests can be abstracted where appropriate, using the full power of ruby's syntax. I haven't missed Cucumber since switching to Steak.

<comment><USER9> i certainly agree that there are a lot of extra sources for error using Cucumber, and learning the regexp-style programming and syntax was a pain.

one of the things I like a lot about Cucumber is having precise definition of stories in a way that I can discuss with actual users. in a Steak world, what mechanisms get used for that?

<comment><USER5> My cofounder is reasonably technically minded (for a business guy), and yet I've never seen him glance at more than the headline description of a test. Steak provides those. The actual steps of the test are just implementation details. The headline should say what the test does, reasonably precisely.

<comment><USER10> I routinely write plain-text with my clients and stakeholders - they like cucumber. I could not show them Steak. When working with end users Cucumber works really really well for me.

However, the idea of Steak on projects where I'm the stakeholder, or only developers are working on a team, seems like a nice idea because it is less maintenance.

</comment></comment></comment></comment><comment><USER11> I've never understood the fascination with cucumber. If you've got a customer in the loop actively working on or reviewing acceptance tests, cucumber is very nice. If you don't, then cucumber is a big waste of time. For some reason, cucumber was the ruby/rails "meme of the day" for a while. BDD is awesome. Webrat is awesome. So if cucumber is your first exposure to those two, then cucumber seems awesome. Do yourself a favor and try BDD & Webrat without cucumber.

If steak becomes the meme of the day, at least it isn't actively harmful like cucumber was.

<comment><USER12> In defense of Cucumber, I've been a rails developer for more than 2 years and I still find it easier to read English than Ruby. I think the extra layer of abstraction is well worth the effort when reading over other people's tests.

<comment><USER11> Have you actually used Webrat? It reads English with extra punctuation. Here's an example from a test I happen to have open at this exact moment:

        visit "/special_recipes/new"
        fill_in "special_recipe[name]", :with => "Pie"
        select "Test User", :from => "special_recipe[user_id]"
        click_button "Create Special Recipe"

The mind naturally skips the punctuation. It actually reads easier than some Cucumber tests I've seen.

</comment></comment></comment><comment><USER13> "what is exactly the point of making [user stories] executable tests? Because of their double purpose, features used as tests are worse user stories than regular user stories and worse acceptance tests than regular acceptance tests."

Bingo!!!

</comment><comment><USER14> This is an integration testing framework. There's no 'acceptance' about it.

I'll stick to cucumber. English matters in acceptance testing.

<comment><USER15> Oh, cucumber speaks english now?

Last time I checked cucumber was the equivalent of inventing an additional, imaginary stakeholder for every story. A stakeholder who recently immigrated from a distant country and insists on having each and every spec laboriously translated to his unusual and very limited dialect of english, before anyone is allowed to proceed.

I'm all for imaginary friends, but I really think you should refrain from bringing them to the office if you value your productivity.

</comment></comment><comment><USER16> The best part of this whole thing is "NoCukes," an awesome jab at the NoSQL moniker.

</comment><comment><USER17> When those ruby hipsters release something it sounds like a fucking grocery shopping list.

[edit:] Yeah vote me down, in your tight jeans and your vintage glasses! ;)

<comment><USER18> They are only vintage because I can't afford new ones</comment></comment>


We need to talk about carbon - <AUTHOR> https://news.shopify.com/we-need-to-talk-about-carbon# <comment><AUTHOR> TL;DR: Shopify commits to spending at least $5 million USD annually to fight for our environment.

See also: [https://www.shopify.com/about/environment](https://www.shopify.com/about/environment)</comment>


A Brief History of the Brain - <AUTHOR> http://www.newscientist.com/article/mg21128311.800-a-brief-history-of-the-brain.html

<comment><USER2> This article hints at, but could do a better job of explaining why humans aren't currently capable of evolving, and why we as a species haven't been able to for thousands of years. Society acts as a buffer, disintermediating genetic advantage from reproductive advantage. Your genes might affect WHO you can reproduce with but not IF you will reproduce.

The article implies that the only course is devolution, once we hit diminishing returns from an educational standpoint. It's equally plausible that we as a species could diverge on the lines of intelligence. Intelligent people are likely to self-select who they reproduce with based on similar intelligence levels. There's certainly a bias towards people moving to areas with other high densities of similar people, so the process is possible even if it's not done intentionally.

<comment><USER3> What makes people so sure we don't? It is well known that young males have higher mortality rates from violence, suicide and road accidents. Wouldn't this pave the way for the population of stable young males to supersede their nervous friends?

<comment><USER2> Geographical area is a stronger predictor of suicide than age or ethnicity, but statistically the numbers are really low (less than 15 suicides per 100,000 people). With the societal emphasis on psychological wellbeing (we're pumping kids full of drugs for some reason), we're less likely than ever before to see the effects of depression or violence manifest themselves in an inability to reproduce.

Society can't do a perfect job of disintermediating genetics from reproduction, but it's pretty close. There are almost no guaranteed genetic trades that will keep someone from reproducing. It just doesn't happen on a meaningful enough scale, especially with regards to intelligence. At best, we'd see a slight downward trend in bad drivers over several thousand years, but with increased car safety and popularity of mass transit, that effect will be diminishing as time goes on.</comment></comment></comment>


Conduit 0.5.0 and the future of Conduit - <AUTHOR> https://blog.conduit.io/2018/07/06/conduit-0-5-and-the-future/ <comment><USER2> >Conduit will become Linkerd 2

I have not been following this space, is anybody willing to provide background?

It looks like linkerd developers re-wrote their Scala service in Rust, citing smaller footprint and lower p99 latency as wins from this approach. As a JVM- hater myself, I fully believe this conclusion, but my mind is open to change. Certainly there's at least some nuance? Furthermore, to my knowledge the Netflix plumbing model puts the middleware as java libraries rather than java services, avoiding going through another JVM like Linkerd does. Are stacks like Java and Ruby sufficiently poorly suited for middleware services that developers should be rewriting-in-rust away from them?

<comment><USER3> The JVM tax on footprint isn't terrible when there is one instance per host providing the service mesh for all processes on that host. In a containerized deployment model, however, each process may have a "sidecar" process providing its entry point into the service mesh. Whether that's a problem depends, but it certainly gives people pause.

</comment></comment><comment><USER4> Wow, on a side note, when I saw it I almost thought it was the scammy Israel company that used to thrust adware/malware through its toolbars back then.

[1] [http://malware.wikia.com/wiki/Conduit_Search](http://malware.wikia.com/wiki/Conduit_Search)

<comment><USER5> Haha, I remember them. (sighs)

</comment></comment><comment><USER6> One of the biggest draws of Linkerd over Envoy (prior to Consul Connect at least) was that it seemed more feasible to use outside of Kubernetes.

Conduit however is tightly coupled to Kubernetes as I understand, which isn't really addressed in this blog post.

<comment><USER7> I think many people believe that Kubernetes has won and this where the money is. Big Co's will be looking for contract support for anything they run on kubernetes.

<comment><USER8> I mean, clearly Kubernetes has won. That shouldn't be a matter of debate when Mesosphere is doing product releases with top-line functionality designed to make it easier for you to operate Kubernetes.[1]

And Swarm has been a clear loser for a while now.

I say this despite us running a reasonably sized Aurora/Mesos deployment! Three years ago this was probably the right choice. Today I think you end up debating things like whether or not you should go with self-hosting Kubernetes vs managed vs what Mesosphere is pitching now.

[1] [https://mesosphere.com/blog/dcos-1_11-overview/](https://mesosphere.com/blog/dcos-1_11-overview/)</comment></comment></comment>


GlobalSign screw-up cancels top websites' HTTPS certificates - <AUTHOR> http://www.theregister.co.uk/2016/10/13/globalsigned_off/ <comment><USER2> I just tried to go to The Guardian and Chrome threw a NET::ERR_CERT_REVOKED error and wouldn't let me on the site. Safari complained but gave me the option to continue. I think I like Chrome's behavior more but Safari at least let me see the certificate and understand what was wrong. Chrome completely shut me out and refused to tell me anything about the site. :(</comment>


BitC is now slighly less than dead. Has anyone else tried to revive? - <AUTHOR> http://github.com/zitterbewegung/bitc I plan on taking it in a slightly different direction. First off no i'm going to eventually move it torward C( I don't like C) Next step is to add more haskell / ML style programming features. Add a macro system (probably first class) Suggestions would be nice. Also try some termite style concurrency. <comment><AUTHOR> I plan on taking it in a slightly different direction. First off no i'm going to eventually move it torward C( I don't like C) Next step is to add more haskell / ML style programming features. Add a macro system (probably first class) Suggestions would be nice. Also try some termite style concurrency. PS lisp never changes it just mutates.</comment>


Brewr.io source code released - <AUTHOR> https://github.com/thebillkidy/Brewr-Site/blob/master/README.md <comment><USER2> You should probably post a license with the project (as really, you always should with any source code you post).

The closest thing you have is:

> I hope that someone else willl pick it up and eventually transform it in a > startup. I however do hope that once this happens I will get to see credits > towards me for the initial idea.

[http://choosealicense.com/](http://choosealicense.com/) is a good starting point, if you're unsure.

<comment><AUTHOR> Thanks!

</comment></comment><comment><USER3> There was bowery.io, they even raised money, they seemingly disappeared [1].

There is also the nix-shell tool from Nix [2] which work great for python, haskell and golang (at least on Linux) but can get very hairy for node and ruby (not only Nix's fault).

I am also working on Pipez [3], which tries to solve a similar problem for frontend development.

[1] [http://venturebeat.com/2014/10/21/bowery-io-wants-to- configu...](http://venturebeat.com/2014/10/21/bowery-io-wants-to-configure- your-web-developers-work-environment-in-30-seconds/)

[2] [http://nixos.org/](http://nixos.org/)

[3] [http://pipez.io/blog/1-tool-hell.html](http://pipez.io/blog/1-tool- hell.html)

<comment> SPD-13 I'm a FoaF of one of the founders of bowery -- If the word of mouth is true they got bought out by Google and I assume integrated into one of their projects.

</comment></comment><comment><USER4> This is cool, I'm eager to try out and take some ideas.

As a New Year's resolution I tried to improve my dev environment and in January, I created a big yeoman generator for making most of my time consuming tasks trivial, like :

1\. Creating a remote repo ;

2\. Configuring CI ;

3\. Generating project boilerplate files ;

4\. etc ...

Doing this with yeoman has it's limits and seems hardly maintainable.

</comment><comment><USER5> I didn't know this exsited.

Tools like Vagrant and Docker are great when working on a per-repository basis but I have not found a good solution to install/sync dev environments globally which sounds exactly like what brewr did.

Does anybody know of any simplish solutions to accomplish something like this?

<comment><AUTHOR> Docker will be coming out with a solution for this pretty soon

<comment><USER6> Do you have any details about this? It sounds interesting.

<comment><AUTHOR> [https://goto.docker.com/try-universal-control- plane.html](https://goto.docker.com/try-universal-control-plane.html)

</comment></comment></comment></comment><comment><USER7> This is a cool idea. Who is working on it? Email me at mdl0394 at gmail.com

</comment><comment><USER8> How does it compare to defining projects in boxen (or puppet)?

<comment><AUTHOR> This project was meant for upper management, as in a company decides on a project and the developers can instantly get to work. See of it as local development environment. It is also easy to be deleted and removed from the system so that a system stays as clean as possible.

The main vision was that a developer should be set up within minutes and be able to receive updates when an environment changes it's configuration.

I had some more ideas planned, such as work statistics for project management and deployment to production environments.

<comment><USER8> I can do that with boxen alright: create a project manifest, define where the source is (git repo), what the dependencies are (node version, database server), nginx configuration for the local environment (a foo.dev domain which automatically proxies to the project's web server) etc.

I doubt the upper management can set up these things, they can say that they want to start a new project X, but how exactly the dev environment will look should be, IMO, in the hands of engineers. Lots of technical decisions to be made there.

I do like the UI though.

<comment><AUTHOR> Many of these decisions would be done through a Beta if I had released it. I did however put a lot of thought into it but after seeing some interesting sign ups from specific companies I decided that a beta would be the way to go.

However, the project was terminated due to the lack of time / financials.

<comment><USER7> You sure your not just trying to refuge a failed startup and get some good press out of it?</comment></comment></comment></comment></comment>


Traversable Wormholes in Four Dimensions - <AUTHOR> https://arxiv.org/abs/1807.04726 <comment><USER2> A wormhole that takes longer to traverse than ambient space. Useful for certain government functions and, of course, lawyers, but not much else.

Maybe we could put our garbage in it and then destabilize the entrances.

Maybe some galactic civilization has been doing this for millions of years and it turns out that dark matter is really just old magazines and used condoms and coffee pods and such.</comment>


This is why I stopped using Yahoo search - <AUTHOR> http://blog.intercom.io/wp-content/uploads/2012/03/Google-HighStreet.jpg

<comment><USER2> If I'm reading you properly: "what Google is doing to its search results page, now, is what first drove me _away_ from Yahoo search, when it was doing the same damned thing back in 1999".

Would that be accurate?

In this case, 30 words is worth more than a picture.

</comment><comment><USER3> The real question is why were you using Yahoo search all this while :)

<comment><AUTHOR> Haha, should have specified. This is why I quit using Yahoo search back in 1999.</comment></comment>


Javascript security - <AUTHOR> http://blog.jgc.org/2009/09/javascript-must-die.html

<comment><USER2> I think it would be better to not conflate language and runtime issues. For example, one can improve language misfeatures such as semicolon insertion, lack of built-in name pacing, etc. Even when you improved this, you would still want to improve the (browser + DOM) architecture/runtime, but in many cases these are orthogonal concerns.

</comment><comment><USER3> The global scope thing is not entierly true, you can use closures to minimize the global scope usage.

The problem is not that bad: \- on the server side, always sanitize user input \- only put script tags from places you trust

</comment><comment><USER4> Since this old presentation of mine has resurfaced (first on Reddit and now here), here's the comment I made on Reddit:

      A good companion to this presentation is Douglas
      Crockford's presentation on JavaScript security:
      http://javascript.crockford.com/security.ppt (Warning:
      PowerPoint).

      He makes similar points about the security of JavaScript
      and comes up with a different solution. He proposes doing
      away with most of JavaScript and allowing only a
      safe-subset of the language to be used."

As a follow-up I had proposed signing of <SCRIPT> tags: [http://blog.jgc.org/2009/09/solving-xss-problem-by- signing-t...](http://blog.jgc.org/2009/09/solving-xss-problem-by-signing- tags.html)

<comment><USER5> Do you work on projects as a programmer where the project has rich ui requirements and tight deadlines? I ask this because your advice not to use Javascript is, to me, completely unrealistic.

<comment><USER4> Yes, I manage a team of guys doing just that. And there's no avoiding JavaScript today.

This was a presentation at a security conference.

<comment><USER5> understood

I like how you mentioned frameworks like RoR that have XSRF prevention built in. Not enough security talks mention things like that.</comment></comment></comment></comment>


Digital maps' unsung hero: how the geocoder puts us on the grid - <AUTHOR> http://www.theguardian.com/technology/2014/jan/13/google-maps-geocoder <comment><USER2> It is quite remarkable how far things have come in a very short time.

When I was in undergrad (early 00's - Not that long ago), "geocoding" basically meant "linear referencing".

Linear referencing refers to taking a linear feature and returning a point some percentage along its length. For example, you take a database with the coordinates of roads and a record of the start and end address numbers for each segment, zip code, etc. (If I recall correctly, the US Bureau of Transportation Statistics used to provide a very nicely formatted shapefile for exactly this purpose.) It's quite easy to naively interpolate an address to a specific location from this. You can even easily incorporate odd/even road side designations, etc.

Unless, of course, you're somewhere where the address system doesn't work that way. (i.e. Most of the world.)

Now geocoding systems actually work for other countries. Therefore, they're amazingly complex and really interesting beasts.

For that reason, geocoding has mostly gone to a SAAS model. You can still build your own geocoder, but people have come to expect it to actually work.

It's interesting to see the change, at any rate.

<comment><USER3> When I use google for geocoding most the addresses still seem to be returned as 'RANGE_INTERPOLATED' so it doesn't look like that part has advanced much.

<comment><USER2> Well, sure. That's how addresses work in the US. It used to be that geocoding essentially only worked for US-style addressing systems.

I think Google has gotten a bit more advanced by basically doing OCR from street view to make a non-linear relationship along roads. The US address system is still fundamentally a linear referencing system, though. Interpolating between endpoints is how it works.

There's still plenty of incorrect information out there in databases, though.

For example, all the addresses on the street I grew up on are on the opposite end of the road due to the record in the BTS shapefile I mentioned having the start and end addresses reversed. That error has propagated through Google, Bing, and everything else I've seen.

</comment></comment></comment><comment><USER4> Yay, geocoding!

Many years ago I worked for Vicinity Corp., an early maps-on-the-Internet startup (who made the MapBlast site and was the original provider of Yahoo Maps, but was eventually smashed by MapQuest and later Google Maps).

Along with Eddie Babcock (one of the many Vicinity people who came from Atari), I worked mostly on the geocoder portion of the site. It was as fun and interesting as this post makes it sound, with lots of algorithmic work and special cases to make some sort of "human sense" out of the map line data (provided by Etak at the time) and POI database (we had multiple providers for this, a lot of the work I did was creating a unified API into all the different providers).

It is kind of amazing to consider how ubiquitous this technology is now, and almost difficult to remember what it was like (though it wasn't long ago!) when I didn't have a constantly updated map of virtually the entire world in my pocket.

</comment><comment><USER5> One thing that I know based on a recent trip to Singapore, is that Google maps is extraordinarily sensitive to where you're making a query from. For example, if I search for a location while I am physically present in Singapore, it will look in Singapore for that location. But, when searching with Apple maps, the same search will quite often return results from other locations in the world like Canada, or the United States.</comment>


Show HN: Analyze contents of your videos with Dextro's API - <AUTHOR> http://www.dextro.co

<comment><USER2> Nice, boola boola. ;)

I think I remember talking to David about this in SF a few years ago, or at a YEI event or something. I interned at Numenta and he was aking me some ML questions. Looks like y'all have come a long way. Nice job!

You might find some partners for a tool like this in music video publishers, or advertisers looking to build competitive intel. e.g. a database of all commercials with "X" in them, or all music videos with "Y" in them (for product placement). Just a thought.

</comment><comment><USER3> This looks like the inverse of the usual "tell we what's in this video" design - Dextro seems to want you to ask it if something their system already knows about is in a video.

I think I'd rather just submit a video and have all the matches and their confidence / salience (not sure that these are the same thing).

<comment><USER4> Yes! General tagging of videos with all possible tags is great for media discovery, but we've built our system with data analysis in mind. We want to be useful for those who want to analyze photo and video datasets when they already know what their query is.

We've found that most of the value is in the latter. For example, our system helps answer:

      1) on a publisher video server, which videos were about automotive?
         Can we package those ads off to car brands?
      2) how many people took photos of my brand's product on instagram
         after our marketing campaign?
      3) what were pedestrian traffic patterns like outside
         our store based on the CCTV system?

<comment><USER5> What video formats do you accept?

<comment><USER4> The video analysis demo accepts most YouTube and Vimeo URLs! (Occasionally certain YouTube links trip up the fetching mechanism, however.)

Our full API accepts the major video formats.</comment></comment></comment></comment>


Show HN: Jekyll+ – Open Source CMS for GitHub Pages and Jekyll Websites - <AUTHOR> https://github.com/Wiredcraft/jekyllplus <comment><AUTHOR> A few weeks ago, I decided to brush up my coding skills and learned Vue.js. In the process, I built a CMS for the Jekyll sites we're hosting on GitHub.

2 things that I think make it special:

\- Multilingual: it supports multilingual websites and has a (rudimentary but efficient) translation flow. \- Widget: it offers a small widget that exposes the CMS main features (editing, duplicating and creating content) right in your site.</comment>


Researchers at Caltech Create an Artificial Neural Network Made from DNA - <AUTHOR> http://news.discovery.com/tech/artificial-intelligence-made-from-dna-110727.html

<comment><AUTHOR> The original press release is here (<http://media.caltech.edu/press_releases/13434>) although it appears to be down right now.</comment>


U.S. apologizes for syphilis experiment in Guatemala - <AUTHOR> http://www.reuters.com/article/idUSTRE6903RZ20101001 <comment><USER2> Any time I start to get too trusting of people / government, or too dismissive of conspiracy theorists, I read something like this.

This is pretty evil.

<comment><USER3> The U.S. also overthrew their democratically-elected president in 1954.

<comment><USER4> For those of you who are curious, here's more info on this:

<http://en.wikipedia.org/wiki/1954_Guatemalan_coup_d%C3%A9tat>

"The 1954 Guatemalan coup d'état was a covert operation organized by the United States Central Intelligence Agency to overthrow Jacobo Arbenz Guzmán, the democratically-elected President of Guatemala."

</comment></comment></comment><comment><USER5> [http://en.wikipedia.org/wiki/Human_experimentation_in_the_Un...](http://en.wikipedia.org/wiki/Human_experimentation_in_the_United_States)

[http://www.globalresearch.ca/index.php?context=va&aid=14...](http://www.globalresearch.ca/index.php?context=va&aid=14708)

I wish most of the incidents linked to primary sources, but assume X% are lies and it's still awful.

</comment><comment><USER6> The (deceased) doctor behind this has left a portion of his estate to Pitt, something they used to flaunt on their website. They've yanked the relevant pages in the last few days:

[http://webcache.googleusercontent.com/search?q=cache:QbyoXXj...](http://webcache.googleusercontent.com/search?q=cache:QbyoXXjQQakJ:www.pitt.planyourlegacy.org/donor- cutler.php+Dr.+John+C.+Cutler+pitt&cd=2&hl=en&ct=clnk&gl=us)

<http://www.pitt.planyourlegacy.org/donor-cutler.php>

</comment><comment><USER7> If you had told random people in the 1950s and 1960s that this was happening, you would have been branded a nutcase.

What are the "nutcases" telling us now, that we will find out about 50 years on?

</comment><comment><USER8> Couldn't they test the drug on people already infected??

<comment><USER9> If you read the article, they were interested in whether or not Syphilis could be prevented using penicillin. Nowadays we take it for granted that antibiotics are not ever to be used for prevention, but they were very much in a formative era.

</comment></comment><comment><USER10> This reminds me of doctor Mengele[1].

LE: I've only said that it reminds me, not that it's the (exactly) same thing. Making other people to suffer in "the name of science" is at least arguable.

LE2: Also, the experiments took place at almost the same time (only a couple of years difference).

[1] <http://en.wikipedia.org/wiki/Josef_Mengele>

<comment><USER11> While intentionally infecting unknowing people with a disease is not cool, the motive of "we know this works, we just need an full effectiveness study" is very very very different from "they are not people, we can do random surgery on children to see what happens".

I think your reaction is quite dramatic, intellectually dishonest, and worthy of a lot of contempt.

<comment><USER12> Bullshit.

If this really was no big deal, if we really hard regarded Guatemalens as people, it could have been done here at home in the US on white people. Instead, it was performed on people who didn't matter -- just like the Tuskegee experiments. The difference here between the US and Mengele is one of degree, not kind.

<comment><USER11> No, this is not the same as Tuskegee. In that experiment the people were not left to get advanced syphilis for years, and intentionally denied proper care. This is much different than being given the cure after exposure. They both start the same -- someone is intentionally given syphilis. The don't however end the same.

Now, if you were saying Tuskegee vs Mengele was one of degree not kind, I would agree with that, as the the disregard and denial of follow-up is mirrored in the two situations.

Please also note: I never claimed anything was "no big deal". While the meat of your argument actually is on point, this first declaration frames the whole thing as a strawman, please don't do this anymore.

<comment><USER12> If you don't see how incredibly wrong _deliberately infecting a human being with a disease without consent_ is, there's something wrong with you and you're evil too. And your whole argument is bullshit -- "infecting someone with a disease isn't cool [but isn't all that bad, really]".

</comment></comment></comment></comment></comment><comment><USER13> Thought exercise: what will our governments be apologizing for 60-70 years from today?

</comment><comment><USER14> Did it help to move medicine science forward?

<comment><USER15> Is it possible to move medicine forward without deliberately infecting people?

<comment><USER16> They're different questions. Seeing the Mengele reference above, one interesting ethical question pops up in cases like this. Do you use the data? One side says that by doing so, it legitimizes whatever was done. The other side says that not using it is just throwing away all the suffering that happened anyways.

Anyhow, it's one of those positions that you either waver back and worth on, or quickly find a position, and then never really move away from. For that reason, I rather avoid that actual discussion. Instead, I will point out that a great deal of current knowledge of how humans react in extreme cold is still based or built on experiments conducted in concentration camps.

So really, you can't dismiss the question of 'was useful data gained" by just saying "it was gained unethically".

<comment><USER17> "Do you use the data?" - what kind of ethical question is that? This is purely scientific question, has nothing to do with ethics.

There are just some things that are not ethical, like testing on people, or killing civilians or, you know, torture. Doesn't matter if you got some positive data point out of that. Those things are simply not justifiable.

<comment><USER16> No one is going to argue that the experiments were wrong, and NOT justifiable. But now the data exists. If its justifiable to use that data IS an ethical question. And as I outlined above, it's not all cut and dry. Especially when it comes to the concentration camp experiments, BECAUSE WE ALREADY DID. Are we suppose to unuse the data? Or what? That's where the grey comes in.

</comment></comment></comment></comment></comment><comment><USER18> Guys. Guys. Stop believing these conspiracy theorists. This story is craaaaaaaaazy.</comment>


Ask HN: Inventory management software/apps - <AUTHOR>

I have 3 warehouses in different cities with dozens of items stored in each. We're a very young company and I've convinced the owner that we need to be keeping track of what's coming in and going out of the warehouses with something other than a pen and paper ported to excel spreadsheets. All I need is something simple that allows us to see what's coming in, what's going out, notifies us when inventory of a certain item gets low, and then allows us to write up purchase orders for when something gets low. What on the market performs these functions best and has the best interface? <comment><USER2> I worked almost exclusively on internal inventory systems for the first five years after I graduated from college. These systems were custom built for commercial printers who ranged in size from small specialty shops (think promotional items like pens and golf balls) to large factories with 8,000 SKUs and 12 million pieces of printed material stored in a three-floor building with dozens of rooms. So I speak with a least some authority on this matter I guess.

Once you get the bugs worked out of your program (or you integrate an off the shelf product) the nightmare really begins. The big problem with inventory tracking isn't the software or the system but the people who use it. If your people are accustomed to their method of pen and paper to an Excel doc they will resist a new system initially and maybe forever. If there's ever an error, and there will be, they will blame the software and not a co-worker or themselves. The factory with 8,000 active SKUs has had a bug free system for years now and still, even when a mistake can be tracked right down to the individual who made it, they blame their computers. It's just human nature.

And if your software has bugs then you can pretty much kiss the whole thing goodbye right from the start. One of the projects I worked on was plagued by errors that a no-longer-employeed junior programmer couldn't fix. By the time the cavalry was called in to correct things all faith was lost and never really recovered. Unbeknowst to us, the workers in charge of the inventory started running their own parallel system with pen and paper.

Your problem is compounded by needing to track items across multiple locations but saved by the low amount of items. Yobiz looks pretty interesting. I would strongly suggest going in the web/intranet app direction.

I've gone on a bit long but I just wanted to wish you the best of luck.

</comment><comment><USER3> <http://eretail.yobiz.com/ips> or it may currently be <http://yobiz.com>

The owner posts here frequently. I'm sure he will find this and can give you more details than I am able to.

<comment><USER4> Thanks! Yes - this sounds like exactly the sort of situation that we built Yobiz eRetail IPS to solve. Not only is pencil/paper and excel ineffective if you have multiple warehouses, but imagine if you also have multiple storefronts - trying to keep the sites updated with the correct stock levels is a nightmare.

We're just about to launch our Yobiz app, and we'd love to have you in our trial / alpha. It would be free during the trial period of course, and allow us to learn more about customers like you so we can make sure to have the right features / benefits.

I don't want to be overly self-promoting here, so just check out the site and if it looks like something of value, register and we'll be happy to help!

</comment></comment><comment><USER5> I'm not sure how beautiful the interface is, and it might be overkill if a pencil/paper is not entirely out of the question, but Apache OFBiz has some/most of the functionality you require, I think.</comment>


Sony's New Toio Wants to Inspire a Future Generation of Robotics Engineers - <AUTHOR> http://www.spoon-tamago.com/2017/06/02/sony-toio-robotics-engineers/ <comment><USER2> When you see Boston Dynamics being passed around like a cheap keg of wine you have to wonder what the upside is for robotics engineers vs. say, search engineers.

<comment><USER3> Over the last several years I stumbled into a killer app for robotics: testing. Almost every manufacturer of any thing has a secret testing lab of robots (and engineers to program them). Robotics are good for dealing with dangerous things (like welding or bomb disposal) and those bots get most of the attention. But robots are also great for "boring", tedious things, like tapping buttons for 12 hours straight. Yet those robots don't get as much attention because, well, watching button tapping is slightly boring, and more importantly, many companies want to keep their quality control (and manufacturing) robotic processes a trade secret. Thus, most people have no idea how prevalent robots really are beyond flashy Boston Dynamics videos.

<comment><USER4> Best part is that your boss doesn't blink when you ask him to approve legos sets and lego boxes bought by the pound to build the boring tapping, sliding, dropping, shaking robot of the week that they need.

Edit: second best part is take your kid to work day when you get to show the 8 year olds your cabinets full of spare lego parts.

</comment></comment></comment><comment><USER5> It looks like Sony does not plan to sell these outside of Japan, at least at launch.

I'd be happy to ship a few from Japan (at a small mark-up), if there's interest.

<comment><USER6> Count me in!

<comment><USER5> I just did some investigation. The first batch seems to be sold out, after a TV segment featured Toio a couple days ago. Pre-orders are now for November delivery.

Still interested?

<comment><USER7> Yes, I be interested in having it shipped to the UK. Keep me posted with any plans and updates.

<comment><USER5> It looks like up to four people are interested. Send an email (address in profile), and we'll proceed from there.

</comment></comment></comment></comment></comment><comment><USER8> There are actually lots of companies building robotics toys for kids and inspiring a new generation of Robotics Engineers :-D!

<comment><USER3> I was that kid in the 80s that played with robotics toys. (My favorite was the Armatron from Radio Shack). When I grew up, I was somewhat disappointed to see that the biggest opportunity in robotics was to make robotics toys to inspire the next generation. These days I make robots that solve real business problems. However, there is an obvious and tempting market for selling them as entertainment/education robots instead. But I'm deliberately trying to make real robots that solve real problems. Sometimes, though, I feel that people are more interested in "useless" robots.

</comment></comment><comment><USER9> Isn't robotics basically just one cool sounding application of microelectronics and mechanics?

<comment><USER10> Certainly but that's like saying the cloud is just a cool sounding application of multicore processors. It is, but it leaves out the several very deep software engineering fields of machine learning, networking, and programming as well as the fields of UX/UI design, and quite possibly a whole slew of human behavioral fields.</comment></comment>


The First Batch – A lesson learnt about hardware and early assumptions - <AUTHOR> https://community.flic.io/topic/16/the-first-batch-a-lesson-learnt-about-hardware-and-early-assumptions <comment><USER2> [https://octopart.com/](https://octopart.com/)</comment>


Ask HN: How to speed up NPM installs? - <AUTHOR> I work at a company in a backend role, but our front-end team routinely requires NPM clean / installs which take more than 10 minutes each. We're looking for a solution.
It seems the reason they clean out all of their packages, is because one dependency is another internal project and that for some reason it gets cached unless an NPM clean is run (?).
Is this truly the state of affairs in NPM? Surely there is a way to update repositories without deleting every dependency every time. <comment><USER2> You could always make a preinstall script that deletes the folder for that one dependency, then run install.

It's quick and dirty, but it could work.

</comment><comment><USER3> Lots of possibilities. What npm version are we talking about?

<comment><AUTHOR> We're on node 6.9, NPM 3.10

The FE guy seems to think that upgrading Npm wouldn't fix it, because "Some kind of caching mechanism kicks in, and the only way to really resolve it is by nuking everything and starting from scratch. This is because we use git tags (github release tags)."

Does that make sense?

<comment><USER3> npm caching has been heavily reworked between 3x and 5x and may well end up resolving the problem they are having in the first place.

Suggest they give this a try as a first port of call. After that it's worth figuring out if the dependency tree is purely massive and you're fetching thousands of packages per install, or if its the NPM service responding slowly, in which case a local proxy in your business may well help here; I'd recommend [https://www.verdaccio.org/](https://www.verdaccio.org/)

</comment></comment></comment><comment><USER4> simply upgrade your node & npm or switch to yarn</comment>


New Evidence Could Overthrow the Standard View of Quantum Mechanics - <AUTHOR> http://www.wired.com/2016/05/new-support-alternative-quantum-view/ <comment><USER2> spooky action at a distance! I'm comfortable with an infinite array of unseen universes.</comment>


I Hope to Die at 75 (2014) - <AUTHOR> https://www.theatlantic.com/magazine/archive/2014/10/why-i-hope-to-die-at-75/379329/ <comment><USER2> _It renders many of us, if not disabled, then faltering and declining, a state that may not be worse than death but is nonetheless deprived._

Why wait till 75? At 50 you're nowhere near as nimble and quick-thinking as when you were 20. Even at 40 you're into decline.

Perhaps make it 30 that you should remove yourself from this mortal coil.</comment>


Prague: The city watching out for Russian and Chinese spies - <AUTHOR> https://www.bbc.com/news/world-europe-46602735 <comment><USER2> Not much of tangible content here. There are many Russians in Prague, and they all want a nice car with diplomatic plates. Somehow, this is the reason that Prague is used as some kind of springboard to the wider EU (ignoring the fact that Russia has other embassies in the EU)</comment>


Dylan: A New Language Is Blowin' in the Wind (1992) - <AUTHOR> https://www.schneier.com/essays/archives/1992/09/dylan_a_new_language.html <comment><USER2> Ah, Dylan was a ton of fun.

First, some personal background: When I was an intern at Harlequin, I was one of the first users of Harlequin Dylan. Later, when CMU stopped work on Gwydion Dylan, I helped start an open source project to maintain it. And when Harlequin wanted to start open sourcing their Dylan (which later became [https://opendylan.org/](https://opendylan.org/) ), I met with them to help hammer out licensing details. Harlequin released a _lot_ of cool code.

What was cool about Dylan? Well, it was a basically a relative of Common Lisp, but with an infix syntax, but it had been simplified to improve code performance. It was a more ambitious language than Java, with full closures, basic macros, and generic functions. Dylan had static typing if you wanted it, or you could leave code untyped. (Unfortunately, collection and function types were fairly weak due to the lack of standardized generic types.)

In the end, Apple's abandonment of Dylan and the rise of Java united to make Dylan irrelevant. But it was a fun language, and I had a lot of fun hacking in it. I think that the closest popular language at the moment, design-wise, is probably Julia.

I still remember one 20-hour day that where a friend and I set up tower computers in a cozy basement room at Dartmouth, and I eventually convinced the Gwydian FFI tool to parse 10,000 lines of Linux headers.

</comment><comment><USER3> The implementation was open-sourced and had a fair amount of work put into modernising it. Things seem to have gone quiet the last couple of years, but it's out there if anyone wants to try it:

[https://opendylan.org/](https://opendylan.org/)

<comment><USER4> This is not Apple's Dylan implementation, but Harlequin's. Apple's implementation has not been published, AFAIK.

<comment><USER3> Thanks. I've never really been clear on the relationship between Harlequin and Apple on Dylan stuff -- were they totally separate impls?

<comment><USER4> Yes, completely different.

Apple's Dylan implementation was written in Macintosh Common Lisp.

Harlequin started with a LispWorks-based implementation and then had an all- in-Dylan implementation.

This is the old Common Lisp / LispWorks implementation of Dylan from Harlequin:

[https://github.com/dylan- lang/opendylan/tree/5f9225d246d771c...](https://github.com/dylan- lang/opendylan/tree/5f9225d246d771cfaa2fa4f255a4447bff6991b8/old/Sources/emulator)

</comment></comment></comment></comment><comment><USER3> David Moon designed a post-Dylan language called PLOT:

[http://users.rcn.com/david-moon/PLOT/](http://users.rcn.com/david-moon/PLOT/)

(Not implemented as far as I know)

<comment><USER5> I think you're right. Moon and I exchanged a little mail about it a few years ago. He wrote to tell me he liked Bard, my Dylan-influenced Lisp, and I think he said PLOT wasn't implemented.

Interestingly, he also said he had a solution to class linearization that was superior to C3, but that he couldn't remember the details. I asked for more information, but he said that if he still had the notes they were in the attic or something.

I'd still like to see his solution.

<comment><USER3> Thanks for pointing out Bard, I'll take a look!

<comment><USER5> It's dormant right now. I've been busy with other things.

I do plan to start work on an updated version soon. Feel free to mail me at mikel at evins dot net if you want to chat about Bard.

</comment></comment></comment></comment><comment><USER6> Ah, if only Dylan and Smalltalk had survived the 90s.

<comment><USER7> I'm pretty sure the Pharo folks would say Smalltalk isn't dead yet. [http://pharo.org/](http://pharo.org/) [https://www.pharocloud.com/](https://www.pharocloud.com/)

<comment><USER6> Yes they could say it, but popularity and support wise it wouldn't mean much.

Survived = at least at the same level of use as Ruby, Python, PHP, etc -- or at least Go and Rust.

<comment><USER8> Unfair to compare to PHP and Ruby who blossomed because of the web.

Go and Rust are recent and massively backed.

I did a Pharo MOOC last year, ST is far from dead, it's "streets ahead" in many department its not even funny.

<comment><USER9> Fairness is inherently out of scope in such comparisons.

<comment><USER8> I just changed that rule.

</comment></comment></comment></comment></comment></comment><comment><USER10> Too bad Dylan never made it to the Newton. I'm actually not sure that was ever the intention. Dylan was pretty heavy weight?

<comment><USER11> That was definitely the intention. It was intended as a systems and application programming language for the Newton.

The original Apple implementation compiled to native ARM code. The runtime was intended to be competitive with C, but by the time we approached that target, large parts of the toolbox had already been written in C, and Walter Smith had created NewtonScript as a scripting language that worked as an alternative for non-performance-critical code. At that point the Cambridge team re-targetted the implementation to build Macintosh applications, but that wasn't a sufficiently compelling (to Apple management) use, and we had lost our executive sponsor when the director of the Apple Cambridge lab was promoted to a position in Cupertino.

For those curious about Dylan's history, the Wikipedia page [https://en.wikipedia.org/wiki/History_of_the_Dylan_programmi...](https://en.wikipedia.org/wiki/History_of_the_Dylan_programming_language) looks correct.

(I'm the "Oliver Steele" mentioned on that page. I went to Apple Dylan from Skia – later released as Quickdraw GX – _another_ technology that missed the Newton boat.)

<comment><USER5> I'm the Mikel Evins mentioned on that page.

Everything you say is right. Some details look maybe a little different when viewed from the Newton team in Cupertino.

Yes, as the Dylan runtime got better, the Newton team wrote an OS in C++ with NewtonScript for scripting. There's more back story there, though.

Before any of that work started, an earlier iteration of the OS had already been written in the early Dylan, back when it was still called Ralph. There seemed to be some level of discontent in a few different quarters with that OS. Different people expressed different criticisms (that I heard). Different people assigned blame for their dissatisfactions differently.

It was all pretty good-natured, from what I remember.

But then John Scully told Larry Tesler: Let There Be an OS Written in C++. And there was. There is various gossip about exactly how that came to pass, but it did come to pass.

Larry asked me and a couple of other people to see what we could do with Dylan. We took that ball and ran with it--maybe too far. Like maybe Larry wanted us to run it down to the end zone and instead we ran it across the border and into Patagonia somewhere. We, the five of us or so, wrote a whole OS in Dylan, essentially competing with the 60 or so people working on Scully's mandated C++ OS.

I don't know why we did it exactly, except that we could, and it was really interesting. More to the point, I don't know why Apple management let us keep going with it so long. Morbid curiosity maybe? It did work pretty well, and I think there were some pretty interesting ideas in it.

From a business point of view, though, it was silly. Obviously Apple was never going to ship 2 Newton OSes. Equally obviously, it wasn't going to choose to develop our weirdo Lisp OS instead of Capps' C++ OS that was developed by almost the whole Newton team in response to an order from on high.

The period you describe, when Dylan was getting pretty good and the Capps OS had a lot of features and NewtonScript was pretty well working was well after the inflection point where the main group started working on the C++ OS. Our smaller team started on the second Dylan OS about the same time the other team started on their OS, and we made good (though pointless) headway. We used the same microkernel they did, and the same graphics infrastructure. Everything else in ours was written in Dylan. Dylan worked great.

In fact, that version of Dylan remains my favorite general-purpose programming language ever. I pretty much lost interest in Dylan when it stopped looking and working like a Lisp, but I've never liked anything else as much for day- to-day programming--not even Common Lisp, which is my go-to nowadays.

<comment><USER12> Creator of NewtonScript here… Hi Mikel! I'm glad to hear you say it was good- natured, because I loved Dylan—having been the Newton team's Cambridge liaison and Ralph cheerleader since the Cambridge team joined Apple. I was just head- down trying to build a small language that had at least _some_ of the goodness of Dylan so we didn't ship something that was just a C++ app in a box!

<comment><USER5> Hey, Walter! Lovely to hear from you.

I know you loved Dylan, and I know what you were up to with NewtonScript.

I did a little work in NewtonScript for the shipping Newton before I migrated to NeXT. It worked. Or it would have, if Newton had been a better fit for the market of the time.

The Cambridge team (or big chunks of it) later became Clozure Associates, Lisp consultants and maintainers of Clozure Common Lisp. I've worked for them off and on over the years on some interesting stuff.

</comment></comment></comment></comment></comment><comment><USER13> "C++ is the COBOL of the 90's" \- Jeff Alger

<comment><USER9> I'm pretty sure that Java is the COBOL of 90s (and 00s, for that matter).</comment></comment>


Wondrous Oddities: R's function call semantics [2006] - <AUTHOR> http://blog.moertel.com/articles/2006/01/20/wondrous-oddities-rs-function-call-semantics

<comment><USER2> has anyone used R for non-math projects? it has some very interesting features but i'm not sure how well it would hold up for large projects, complicated data structures, etc.

<comment><USER3> It is great for drawing vector graphics. It also has capabilities for working with large data sets, as long as you don't do it the naive way (by reading a huge array into memory).

<comment><USER4> Would you (or anybody else) know why <http://en.wikipedia.org/wiki/DAP_(software)> states "Unlike R it [DAP] has been designed to be used on large data sets."?

I read here and there that R is not that great handling huge amounts of data, but then I'm puzzled to know that it is widely being used in genetics... Help!</comment></comment></comment>


India Bans Chinese Telecom Equipment - <AUTHOR> http://www.boston.com/business/technology/articles/2010/04/30/india_bans_chinese_telecom_equipment/

<comment><USER2> US should seriously consider doing something similar since FBI is already warning about fake Cisco routers which could (i.e. most likely do) have backdoors. Link: <http://blogs.zdnet.com/projectfailures/?p=740>

<comment><USER3> > _US should seriously consider doing something similar_

As should all other powers. The possibility of backdoors in computing equipment means that all software in critical functions needs to have been a developed in an environment where the country can have a reasonable assurance that there are no backdoors.

The same probably holds for processors.

<comment><USER4> Just because something is "developed" in the US doesn't mean that all of the developers are US citizens or even based in the US. Outsourcing makes it incredibly difficult to ensure that no backdoors, malware, etc. are inserted into source.

<comment><USER3> > _Just because something is "developed" in the US doesn't mean that all of > the developers are US citizens or even based in the US._

Absolutely.

> _Outsourcing makes it incredibly difficult to ensure that no backdoors, > malware, etc. are inserted into source._

If a program is (1) open source, and (2) widely used, there are likely to have been lots of eyeballs looking at it. It would probably be harder to put a backdoor in Linux of GCC, without people finding out, than in MS Windows or Microsoft's CLR. I'm leaning towards the point of view that security6 critical software should run on popular open source platforms (by platforms I mean OSes, Languages and APIs).

<comment><USER5> Do we have info on what backdoors in major commercial programs look like? I'm going to guess a large company isn't going to embed a whole large backdoor -- too much liability and risk of discovery.

Instead, wouldn't it be better to make the backdoor another mundane security hole? And open soure can certainly ship plenty of those (FireFox?).

So, really, in both cases, you need an experienced developer that can code in a security hole without being caught during review. Not every boring feature checked in gets the same level of "eyeballs".

<comment><USER6> This reminded me of Ken Thompson's Turing paper about how a malicious compiler could make back doors invisible even to those who can look at the source.

[http://docs.google.com/viewer?a=v&q=cache:5Xr5GF- rQkEJ:c...](http://docs.google.com/viewer?a=v&q=cache:5Xr5GF- rQkEJ:citeseerx.ist.psu.edu/viewdoc/download%3Fdoi%3D10.1.1.84.8238%26rep%3Drep1%26type%3Dpdf+Ken+Thompson+self- reproducing+program+security&hl=en&pid=bl&srcid=ADGEESjgV0RpZWaqLp_ZUknoiVZCPXfF0UaXTyN8m4qQzTYjVt1SQ01d8bpYpJpXSZTAasGiGop_bwbLr2EiDGXfz4osDyDHjkbCcri79ZbTxtvJt4ZVd3F2EEHM9IX4Xg7G0eiRkR3T&sig=AHIEtbT8wWYDpL3tnqjjSPX7NHGIoqi1Lg)

</comment></comment></comment></comment></comment></comment><comment><USER7> I think this is a great move, and India is also playing fair by allowing any vendor with a government security approval to do business in India. But this will also give rise to the currently rampant corruption in so many government audit agencies.

</comment><comment><USER8> How does Cisco (or any hardware company) ensure that their authentic, but still made-in-china products haven't been secretly altered?

<comment><USER9> By crossing their fingers... and toes.

The only reason there isn't widespread tampering and adulteration of goods made in China (or anywhere) is that it's usually cheaper to do things right. Manufacturing Cisco routers exactly as they are told to is easier than making ones that are undetectably compromisable. Today.

In other cases where doing it wrong is cheaper, we've already seen what happens. Lead paint is cheap. So, of course, we end up with kids' toys with lead paint that flakes off.

But hey, at least it's one cent cheaper.

(And just so it doesn't sound like I'm being anti-foreign-goods or whatever, we do the same thing domestically. HFCS is slightly cheaper than sugar, so it's used in everything, even though the production is harmful to the environment and the health effects versus sugar are in question. But hey, at least the profit margin on sugar water is even higher now!)

</comment></comment><comment><USER10> Good move. China does not seem to hide the fact that they are interested in 20th century espionage via hacking and everyone knows they are an impressive police state that monitors everything.

The U.S. should definitely make the same move, but well, then there is that whole mess with China owning most of our debt...

<comment><USER11> China is the foreign nation holding the largest portion of the US debt, but they hold less than 10% of the debt.

<comment><USER12> If we balanced our budget, the debt could be a weapon in our favor.

</comment></comment></comment><comment><USER13> I welcome this move. China also have same rule for other countries.

</comment><comment><USER14> This is not surprising considering the number of news we read about Chinese 'interest' in Indian websites - everything ranging from Nuclear programs to Tibet.

There is another reason - cheap Chinese mobiles without IMEI numbers were flooding the market.

</comment><comment><USER15> _Last year the government banned imports of Chinese handsets without the International Mobile Equipment Identity, or IMEI, number, again citing security reasons such as the use of stolen handsets to make terror or hoax calls._ Chinese manufacturers cloning IMEIs? Never!

The big question is, can India's government really enforce this?

<comment><USER16> _The big question is, can India's government really enforce this?_

From what I know, the answer would be: Yes, whenever they want to.

<comment><USER17> Yes, they already have done that. It was made a law, and cheap Chinese phones now comes with a govt. approved IMEI.

</comment></comment></comment><comment><USER18> IBM selling their computer line to China was a major mistake and should have been blocked on national security concerns. The fact that half the government uses Lenovo laptops that used to be Thinkpads is criminal.

It does not take a genius to realize that China is using all their power and cunning to infiltrate everyone everywhere. When your firewall and your packet filter and your router all come from the same place how can you be sure that you don't have a backdoor?

I know people who work in this area and the bottom line is that it is not whether or not you are paranoid, but are you paranoid enough?

</comment><comment><USER19> While China bans something it's unfair trade, it's interesting to see something like this and everyone think it's good move.

<comment><USER16> When was the last time you heard of fake Cisco routers coming from India?

EDIT: The difference is probably due to different emphasis on and effectiveness of enforcement.</comment></comment>


Science with Portal - <AUTHOR> http://arstechnica.com/gaming/news/2011/09/portal-is-used-to-teach-science-as-valve-gives-game-away-for-limited-time.ars

<comment><USER2> If you would like to play Portal, Valve is offering the game for FREE (only until Sep 20): <http://store.steampowered.com/app/400/>

<comment><USER3> Do you mean you can only play it until that day, or you can only install it by that day?

<comment><USER2> Claim it by that day and it's yours forever</comment></comment></comment>


HongMeng OS Is Huawei's Alternative to Android (Rumor) - <AUTHOR> https://www.cnx-software.com/2019/05/21/hongmeng-os-is-huaweis-alternative-to-android-rumor/ <comment><USER2> That doesn't really seem like a solution to the problem. The problem is that they aren't getting access to the Google play store, and lose access to a large supply of android apps.

If they just used the open source version of android, and added their own store (which they've been working on [0])... then android developers could just submit their app in both places.

But changing the OS, would likely mean developers would need to develop a new version of their app just for HongMeng... making the problem an even larger obstacle.

0\. [https://www.theverge.com/2019/5/21/18633772/huawei-app- galle...](https://www.theverge.com/2019/5/21/18633772/huawei-app-gallery- google-play-store-rival-trump-ban)

<comment><USER3> > android developers could just submit their app in both places

Except for US entities barred by the same government decree. Users of many popular online services from ride sharing to social media would be forced to use the mobile web interface.

</comment></comment><comment><USER4> >A professor led the Huawei operating system team to develop a proprietary operating system – Hongmeng. The operating system has been optimized for Linux (open source), and has been used in Huawei mobile phones (safety part). In addition, the project also won the first prize of the Ministry of Education Technology Invention (2018), the second prize of the National Technology Progress (2012), and strive for csranking as soon as possible before entering V. Prepare to declare the 2020 National Technology Progress Award."

Not much data there.

An Android fork seems to be the assumption of the masses as far as anything going in another direction....but a possibility whole new OS would be a big undertaking I would think.

This just sounds like a research project, possibility one of many.

</comment><comment><USER5> As far as geopolitical cybersecurity plays go, making a lot of Chinese phones run an OS written by Huawei is insidiously brilliant for a potential attacker.

Assuming the Huawei UK reports about internal code practices are to be believed...

<comment><USER4> Brilliant, as more difficult, or easier for an attacker?

Personally I'm not sure an in house OS is necessarily more and I'd guess possibility less secure.

<comment><USER5> [https://www.theregister.co.uk/2019/03/28/hcsec_huawei_oversi...](https://www.theregister.co.uk/2019/03/28/hcsec_huawei_oversight_board_savaging_annual_report/)

<comment><USER4> Sounds about right.

Even trying, doing it securely would be hard.

<comment><USER5> I'd probably say "precise."

In the sense that precision takes time and money, but mostly the former.

Starting on a Linux base gets them a lot of time saved, but as soon as they start having to write custom code (and they'll have to write a lot of it to re-adapt Linux to mobile systems) they're back in the same boat.

Essentially, mythical man month. There's no amount of programmers you can throw on a project to produce a secure, complex OS in a week's time.

Extrapolate to Android still making major security rearchitectures after a decade? Good luck starting back on Step 1 of _that_ journey.

</comment></comment></comment></comment></comment><comment><USER6> I flagged this because it's blogspam whose primary source is chinglish garbage.

> been optimized for Linux (open source)

> used in Huawei mobile phones (safety part)

</comment><comment><USER7> Without Android, Huawei is as good as dead in terms of being a competitive handset manufacturer. I can't imagine anyone wanting to purchase a phone with "HongMeng OS" given the technical/security concerns, lack of apps, and general unfamiliarity of the OS to most folks.

At one point a phone was a phone was a phone, but today the app and messaging ecosystems are everything.</comment>


Are you applying to YC Summer'12? If so from which country are you? - <AUTHOR>

I am applying from India. Wondering what percentage of companies will be non-American. <comment><USER2> The Netherlands represent!

</comment><comment><USER3> New Zealand here!

</comment><comment><USER4> Even Bulgaria!

</comment><comment><USER5> Yes. Canada.

</comment><comment><USER6> Yes. India.

</comment><comment><USER7> Latvia.

</comment><comment><USER8> Canada

</comment><comment><AUTHOR> India</comment>


Float128 emulation in Javascript, fastest way how to make 0.1 + 0.2 == 0.3 - <AUTHOR> https://github.com/munrocket/double.js <comment><USER2> This doesn't solve the general problem that binary floating point cannot exactly represent decimal fractions.

The first example

      new Double('0.3').sub(new Double('0.1')).toNumber()

does the equivalent of

      float f = (float)(0.3 - 0.1);

which happens to produce a 'float32' that prints as "0.2", but for 'float64' vs 'float128'.

I expect that adding a sufficient number of zeroes, as in

      double f = (float128)0.00003 - (float128)0.00001);

(actual number of zeroes is too low here, to prevent wrapping on phone screens) will surface the problem again.

<comment><AUTHOR> Nope, check this demo [https://runkit.com/munrocket/double.js-hn- example](https://runkit.com/munrocket/double.js-hn-example)

</comment></comment><comment><USER3> The fastest way are probably rational numbers, as they are natively available in many functional languages or Perl6. That is, 0.1 is represented as the integer tupls (1,10) instead of a floating point number.

<comment><AUTHOR> How many FLOP do you need to add two rationals? We don't have int type in javascript, only bigInt but it not supported in some browsers and probably not fast enough.

UPD: I added Fraction.js to benchmark [https://munrocket.github.io/double.js/docs/benchmark.html](https://munrocket.github.io/double.js/docs/benchmark.html) but it slower and overflows for some reason, .round(31) not helps.

<comment><USER3> Adding two rationals boils down to adding 2x two integers. Integer arithmetic is in general less complex then floating point arithmetic. But of course that's not true if your hardware supports single instruction double floating point arithmetic (which any relevant 64bit architecture does).

<comment><AUTHOR> The problems begins when calculations is long and int64/int32 not enough to store full fraction precision. Lol seems that I find a bug in Fraction.js in rounding [https://runkit.com/munrocket/fraction-js- test](https://runkit.com/munrocket/fraction-js-test), but it used in popular Math.js library.</comment></comment></comment></comment>


Searching an ios developer - <AUTHOR>

Hi guys. I've got a lot of cool ideas for ios app. Any iOS developer out there that want to partner up with me?
I am an Italian interface designer.
Check out dribbble.com/Gianluca and contact me over gianlucarispo {at} outlook.com <comment><USER2> Sent you an email!</comment>


China suspends Apple's online book, movie services - <AUTHOR> http://www.marketwatch.com/story/china-suspends-apples-online-book-movie-services-2016-04-22 <comment><USER2> Darn it! I worked so hard on my app, and it was in the market for a few months, but it just got taken down for god knows why. I don't see why these organizations have to have such arduous approval processes.

</comment><comment><USER3> Apple just got kicked out of China's store

</comment><comment><USER4> apparently it has to do with i-tunes releasing a movie called "10 years"; great leaders of china don't seem to like movies that invoke thought in their population.

source: [https://en.wikipedia.org/wiki/Ten_Years_(2015_film)](https://en.wikipedia.org/wiki/Ten_Years_\(2015_film\))

It's interesting how here in America, we are able to be free from these types of protectionist policies; yet we find many of us ignoring thoughts,books,movies,etc. that invoke real emotion.

</comment><comment><USER5> Fuck the GFW!!!

</comment><comment><USER6> Chinese Government...

HE/HE</comment>


Wireless Power Is A Stupid Gimmick - <AUTHOR> http://www.informationweek.com/byte/commentary/personal-tech/smart-phones/232901493

<comment><USER2> _A similar charger as an add-on for an older Samsung Galaxy costs about $35. If you pay even $5 for a simple USB cable and a wall socket adapter you're getting ripped off. You probably don't even need one of those because you already have four or five lying around the house._

This is a dumb argument. Cars cost more than shoes because A) they are more expensive to make and B) people are willing to pay more for a better solution.

 _devices are going to require power faster than battery technology can keep up... I'm not so sure I see this happening._

My EVO 4G would like a word with you :)

</comment><comment><USER3> "And anyplace I would expect a wireless charging pad to be, I would expect a wall socket."

How many people carry around the cables to charge? I'd love it if I could set my phone down and top it up 25% or more without having to dig out the hardware for it.

<comment><USER2> It would be even easier to put a microUSB cable everywhere you'd put a wireless charging pad.</comment></comment>


Russia Releases Videos Offering Unprecedented Look at Its Six New Super Weapons - <AUTHOR> http://www.thedrive.com/the-war-zone/22270/russia-releases-videos-offering-an-unprecedented-look-at-its-six-new-super-weapons <comment><USER2> Here is a great podcast about the nuclear-powered cruise missile (the one that spews radiation as its exhaust, is >180dB loud from the ground, and has unlimited range) - and a public analysis of its testing in the arctic. [https://www.armscontrolwonk.com/archive/1205364/russias- cras...](https://www.armscontrolwonk.com/archive/1205364/russias-crashing- cruise-missile/)

It comes with some strong shout-outs to Planet (satellite startup), and goes into some technical detail about how they've gone about geo-locating where the tests occurred.

Very scary/crazy weapons here...

<comment><USER3> Is this the first actual use of nuclear propulsion? I'd prefer it to be space exploration, but such technologies always end up in military toys first.

<comment><USER4> Both US and USSR experimented with it in 60s. But since "traditional" ICBMs where good enough there was no need for nuclear propulsion. Complicated, radioactive and not ready for use. Even though nuclear propulsion was fairly advanced.

</comment></comment></comment><comment><USER5> As I can remember previous video of their 'super' nuclear-powered missile proved to be a complete render, since prototype flew without any nuclear propulsion and therefore for a short time.

</comment><comment><USER6> Are we sure they're the ones who released them? It could be them, I don't see why it wouldn't, could be anybody. ¯\\_(ツ)_/¯

<comment><USER4> You should watch an amazing movie called "Doctor Strangelove". (: The whole point of those weapons is to show them off to achieve a balance of power.

</comment></comment><comment><USER7> Well, I guess it'd been five or six minutes since I read something in the media trying to stir people up about Russia. I'm still trying to figure out just why this full-court press is being put on, when there seems to be so little to be gained by brinksmanship, but that's all above my pay grade.

The Russian/Soviet/Russian defense industry has a pretty long history of fiddling with over-the-top weapons systems, very few of which ever are quite as successful as feared.

<comment><USER8> Putin's motives are as simple as a playground bully. He has an inferiority complex; he wants to prove that he and his nation are rougher and tougher than the others. Not because there's anything rational to be gained by that; just because he wants it.</comment></comment>


Should a wildly successful "solopreneur" start a *real* company? - <AUTHOR> I ran across this Ask HN from yesterday that has dropped far off the home page. Someone who is bringing in $2M/year as a one-person business wants to know if he should expand it into a bigger company. It's one of the best discussions I've seen here:<p>https://news.ycombinator.com/item?id=12374445 <comment><AUTHOR> Since the URL doesn't seem to be clickable, here it is again:

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


Ask HN: what's the best way to find the right medical specialist in the US? - <AUTHOR>

I moved to the US 1.5 years ago, and I hate the complexity of the healthcare system. I have muscle pain on my right shoulder, and after hours of internet research, I still don't know a good way to find a medical specialist that can take a look at my shoulder and fix it... Aaaaand it should also be "in-network", since I don't want to pay more than needed. Suggestions? <comment><USER2> Referrals, especially from people you trust, and lots of legwork. The healthcare system is indeed complex, and providers vary greatly, from excellent to terrible to downright quacks.

Start with recommendations and referrals, and get further referrals from the docs you end up liking. You may have to visit a number of specialists (depending on your condition and situation), but it makes a world of difference to have a good doc, who listens to you and you can trust.

You only have one you, and one family. Don't settle for inferior care.

<comment><AUTHOR> Thanks. Good suggestions.

</comment></comment><comment><USER3> Does your insurace allow you to see anyone in the country. You are looking for a specialist but you don't say in which state?

<comment><AUTHOR> I live in California (SF). They allow me to see "in network" doctors (which, in general, is quite silly).</comment></comment>


Time for computer science to grow up - <AUTHOR> http://cacm.acm.org/magazines/2009/8/34492-viewpoint-time-for-computer-science-to-grow-up/fulltext

<comment><USER2> I call crap on this. He wants more work in journals so academics can sort out their pecking order. The rest of us dont want an emphasis on traditional journals because they are an expensive and time consuming gateway to the dissemination of ideas. I really hate to track down an interesting idea, only to be presented by an abstract with the real paper behind a fee wall. Some authors are considerate enough to have an online version, but not all. I say other disciplines should "grow up" and embrace the online publication of papers.

<comment><AUTHOR> I think your comment is tangential to the central thrust of the article. He's not really stating anything one way or the other about the free availability of papers online. That's an issue that will exist whether papers are published in journals or in conference proceedings. (Both options are expensive and time consuming, just in different ways.)

The main idea here, paraphrasing Fortnow, is that computer science needs to put more emphasis on publishing longer-form pieces representing bigger chunks of work in a context that allows for them to receive more thorough review. The conference publication model is fine for an emerging field: everyone is still sorting out the basics, so publishing small bits of work frequently is a good idea. But, Fortnow argues, once a field becomes established, encouraging frequent publication of small chunks of work in settings that have become highly competitive leads to incrementalism, low quality peer review, and other ill effects. Encouraging longer submissions, each representing a larger chunk of work, and each of which can receive more attention from reviewers, will hopefully have the effects of encouraging researchers to pursue riskier work and of putting reviewers more at ease with less derivative papers.

I think that's what he was saying, anyway. Or at least part of it.

The issues of open access and how to fund scientific publications are certainly important, but I think this article was really focusing on other issues.

</comment></comment><comment><USER3> My preference would be blogs as a primary means of disseminating information.</comment>


Swadesh List - <AUTHOR> https://en.wikipedia.org/wiki/Swadesh_list <comment><USER2> A nice generalization and extension, which is super useful for modern linguistics and cognitive science, is the Intercontinental Dictionary Series ([https://ids.clld.org](https://ids.clld.org))

</comment><comment><USER3> Many Swadesh lists are micro-etched on the Rosetta Disk made by the Long Now's "Rosetta Project" \- an effort to preserve and document as many languages as possible.

[https://blog.longnow.org/02010/09/24/swadesh-list-data- now-r...](https://blog.longnow.org/02010/09/24/swadesh-list-data-now-re- enabled-in-rosetta-internet-archive-collection/)

<comment><USER4> A few weeks ago I got curious about the phonological development of Rotokas and figured I'd see if any reconstruction could be done on the North Bougainville languages. The only documentation I could find for Ramopa and Askopan at all were Rosetta Project Swadesh lists on archive.org - talk about coverage!

</comment></comment><comment><USER5> Glad to see this on HN. My now 85 year old linguistics professor once actually used this to document a language in India. Bone char was always a crazy one!</comment>


Deep Convolutional Inverse Graphics Network - <AUTHOR> http://willwhitney.github.io/dc-ign/www/

<comment><USER2> This is really clever. So basically iiuc, they set up a network to encode down to a representation that consists of parameters for a rendering engine. In order to ensure that this is the representation that is learned, the decoding stage is used to re-render the image subject to transformations and perform the decoding based on a an initial reduction phase after rendering. I.e. it is like an autoencoder, but the inner-most reduced representation is forced to be related to a graphics rendering engine by manipulating related transformation parameters.

Not only is this interesting from the point of view of using it for learning how to generate images, but it is a novel way to force a semantic internal representation instead of leaving it up to a regularisation strategy and interpreting the sparse encoding post-hoc. It forces the internal representation to be inherently "tweakable."

<comment><USER3> This can also be used for object recognition against invariant 3D representations, potentially with more accuracy than traditional convolutional neural net architectures.

Consider: their proof-of-concept face-recognition model achieves performance comparable to traditional convnets on faces with varying degree of pose, lighting, shape and texture, even though it was trained _completely unsupervised_. I would expect this type of model to beat the state of the art in face recognition and other similar tasks when fined-tuned with supervised training in the not-too-distant future.

</comment></comment><comment><USER4> Very cool work, I'm happy to see more people thinking about deep networks along these lines. It seems that this is very similar to a recent work put on arxiv back in November,

"Learning to Generate Chairs with Convolutional Neural Networks". [http://arxiv.org/abs/1411.5928](http://arxiv.org/abs/1411.5928)

They also have a very cool video of the generation process: [https://youtu.be/QCSW4isBDL0](https://youtu.be/QCSW4isBDL0)

It's very interesting to see two groups independently developing almost identical networks for inverse graphics tasks, both using pose, shape, and view parameters to guide learning. I think that continuing in this direction could provide a lot of insight into how these deep networks work, and lead to new improvements for recognition tasks too.

@tejask - You should probably cite the above paper, and thanks for providing code! awesome!

<comment><AUTHOR> thanks for the references! I like that many people are doing such things. After looking at the chairs paper, it seems like they render images given pose,shape,view etc (supervised setting). However, in our model, there is a twist as it is trained either completely unsupervised or biased to separate those variables (but it is never given the true values of those parameters ... just raw data).

</comment></comment><comment><USER5> This is very nice, however I wish they would have used a traditional rendering technique (e.g. raytracing) for the decoder stage. It would have been more difficult to compute the gradient, but maybe not too bad if employing some type of automatic differentiation. If they had done it that way, the renderings could scale to any resolution (post-learning) and employ all types of niceities such as depth of field, sub-surface scattering, etc. Instead we're left with these very blocky, quantized convolution-style images.

<comment><AUTHOR> One of the authors here. You are absolutely right! In fact, I am currently doing something similar but it is not working as well yet. As far as this work is concerned, we wanted to see how model-free can we go.

<comment><USER6> I don't understand much of the paper but it looks awesome! I have two questions: Am I understanding it correctly that one would need to convert the internal representation to a textured triangle mesh in order to use ray tracing in the decoder stage? Is the encoder effectively similar to scene reconstruction via structure from motion?

<comment><AUTHOR> there are many ways to parametrize the decoder. One of the ways is to constrain it to output an explicit mesh or volumetric representation and express the rendering pipeline so that it's differentiable. The encoder will then effectively learn an "inference algorithm" to get the best output. A feedforward neural network is not enough and recurrent computations will eventually be necessary.

<comment><USER7> Can you explain a bit more why the recurrent network structure becomes necessary at some point? Is that because reversing a CNN naturally means rendering by (de)convolution?

<comment><AUTHOR> In order to approximately learn a "real" graphics engine with support for basic physics, just feed-forward computation might not be sufficient. A more natural way to learn graphics/physics might be to learn the temporal structure more explicitly. On the other hand, it might also be interesting to just add temporal convolution-deconvolution structure in the existing model. This is work in progress though.

</comment></comment></comment></comment></comment></comment><comment><USER8> Reminds me of being blown away in 2007 by Vetter and Blanz chasing a similar aim: [https://m.youtube.com/watch?v=jrutZaYoQJo](https://m.youtube.com/watch?v=jrutZaYoQJo)

</comment><comment><USER9> Whoa. Basically like [http://www.di.ens.fr/willow/pdfscurrent/pami09a.pdf](http://www.di.ens.fr/willow/pdfscurrent/pami09a.pdf) except it skips the (explicit) 3D mesh reconstruction altogether and goes straight to the rendered output.

</comment><comment><USER10> In laymen's terms this does what ?

<comment><USER11> Network learns a system of lighting and geometry, so you can manipulate a set of codes that represent some variables of that geometry and the positions of those lights.

<comment><AUTHOR> In summary, the most interesting part for the general audience might be the following question -- can we learn a 3D rendering engine just from images or videos without any hand-engineering?

Apart from the interesting applications for computer graphics (like rendering novel viewpoints of an object from various viewpoints), this can also be directly used for vision applications. This is because computer vision can be thought of as the inverse of computer graphics.

Goal of computer graphics: scene description -> images

and

Goal of vision: images -> scene description.

Therefore, training a neural network to behave like a graphics engine is interesting from both these perspectives. We are a LONG way from even scratching the surface.

<comment><USER12> How long has this idea of making a 3D engine from conv nets been researched?

<comment><AUTHOR> To the best of my knowledge, not much at all. It is an open question. Besides, a feedforward net is not going to be enough.

</comment></comment></comment></comment></comment><comment><USER13> Haven't read the paper yet, but sounds similar in concept to what Geoff Hinton aims at for image recognition networks.

<comment><AUTHOR> Yes this is very much inspired by Geoff's work.

</comment></comment><comment><USER14> So, in essence, this network can learn to "unproject" images.

Since projection is a lossy operation, a projected image has potentially multiple inverses. And this makes me wonder how this system deals with the situation where two or more inverses exist and are equally likely.

<comment><AUTHOR> This is an interesting question. Technically, we capture a probability distribution in the code layer (between encoder and decoder). So you can sample from it multiple times and assess uncertainty. However, we have not really studied this.</comment></comment>