RAML - RESTful API modeling language - DanI-S http://raml.org/

<comment><USER2> I dont understand what the purpose of this is. I thought the whole point of REST is that it is discoverable at runtime. If you have an "API Spec" doesnt that mean the server owner is now beholden to that spec; that changes to their resources would break compatability with any client written to conform to the spec?

I thought everything you needed to write a REST API client is included in the media-type specification and the rel profile?

For example, the spec for the HTML media-type details that link elements with the rel type of "stylesheet" should be resolved by HTTP GET.

My understanding was that (in the example given) you write a spec for your music description media-type e.g. MUSICML, and register it with IANA (because media-types MUST be registered with a central authority). Then your client only need make a HTTP OPTIONS request to see that the Content-Type e.g. vnd.example.com/musicml+v1.0 and the methods allowed on that resource.

As long at the client uses the described rel profiles appropriate to the media-type MUSICML e.g. the spec specifies that the rel type "play" should HTTP GET the specified WAV file and play it in the client, then the server owner is free to modify the API endpoints as they wish.

I never understood why people insist in adding more layers of cruft on top of a perfectly adequate transfer protocol (HTTP) that is almost always worse and brittle than what the existing protocol already provides.

(don't get me wrong, I appreciate that hardly anyone does rest properly, but that doesnt mean WSDL-flavour-of-the-month will have as much uptake as HTTP itself!)

<comment><USER3> Yeah, and I see that approach mostly failing. The notion of resource- orientation and HTTP verbs is really useful, but being true to Fielding's dream is not a priority for most organizations. Stronger typing and explicit descriptors are really useful in an enterprise environment.

<comment><USER4> If we want a non-RESTful (in the strict sense) solution with those particular enterprise features, we have SOAP+WSDL.

Reinventing the wheel and calling it RESTful is non-helpful (because, again, we have a mature infrastructure of tools filling that need in the SOAP+WSDL space, so if we _don 't_ need a new approach, it would be more efficient to use them rather than rebuild them, and if we _do_ need a new approach, well, reinventing SOAP isn't it.)

REST does offer solutions to those problems, but these pseudo-REST approaches drop _exactly the pieces that address those concerns_ and replace them with approaches based on the way _earlier_ , pre-REST, systems approached the problem. Which amounts to throwing out the core of REST for no gain over just using the earlier technologies.

<comment><USER3> SOAP is RPC. It's fundamentally different. REST is not completely undone just because you want validation. Without a schema or DDL, you're still validating but you're doing it in code.

<comment><USER4> > SOAP is RPC.

Yes.

> It's fundamentally different.

It's fundamentally different than REST, sure. Its not fundamentally different than "REST" that abandons resource-oriented hypermedia.

> REST is not completely undone just because you want validation.

REST _includes_ a validation model (indeed, its centered around one.)

It _is_ completely undone when you toss that out and replace it with a different one.

> Without a schema or DDL, you're still validating but you're doing it in > code.

With a schema or DDL, you are validating in code. It may be code in an external library or tool, but that's just a possibility with any validation model, whether its Schema-based, or Media-type-based (as in REST), or based on something else.

<comment><USER3> A schema allows for declarative validation and allows it to be defined once and once per consumer.

<comment><USER4> A well-defined media-type does much the same thing and is what REST is _centered on_.

An API based on HTTP and schemas _rather than_ media types for content definition/validation is more like SOAP than REST.

OTOH, an API based on resource-oriented hypermedia could incidentally use media types that are _defined in terms of schemas_ , and still be REST.

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> When looking at the concept, it's interesting to me how much the pseudo code looks like a _real_ REST API handler written in a state machine DSL.

Decision graph: [http://clojure- liberator.github.io/liberator/tutorial/decisi...](http://clojure- liberator.github.io/liberator/tutorial/decision-graph.html)

Actual code: [http://clojure-liberator.github.io/liberator/tutorial/all- to...](http://clojure-liberator.github.io/liberator/tutorial/all- together.html)

Progenitor = Erlang Webmachine: [https://github.com/basho/webmachine/wiki/Overview](https://github.com/basho/webmachine/wiki/Overview)

I'd rather write a working API than this separate spec language. By writing your 'spec' as a state machine, you get REST formality and consistency, plus, well, you now have something that works.

OTOH, running an existing API through something that would generate this RAML document could be very interesting as a way to make sure everyone's on the same page in a language neutral way.

<comment><USER6> I like to think design-first and if possible in the most minimal fashion that captures the interface, but I certainly see (and share) the appeal of writing working code. In many cases like that (including APIs that are already implemented in code), generating a clean RAML spec from the code is a good way of capturing the interface itself, in a very readable way that shows the structure. Thanks for these links -- very interesting!

</comment></comment><comment><USER7> For those interested in this type of thing, Apiary is building a platform that generates a mock server based on a similar specification language: [http://apiary.io/](http://apiary.io/)

</comment><comment><USER8> First, this seems to view the URLs as primary. They aren't. The document formats are the most important part, even if you are doing a http-rpc style, not-really-REST interface.

Second, YAML? Haven't we already learned that markup languages don't make good programming languages? (That's what this is, right? Nobody is _really_ going to use it to document an API, any more than anyone uses WSDL for more than generating stubs.)

Third (and not really germane), JSON schemas? Describing the format of JSON documents, in JSON? Because XML schemas are _so_ wonderful?

</comment><comment><USER9> Is there any reason to think that this will be better than wsdl style descriptions? To wit, WADL tried this, but it seems to have stalled heavily.

I should add I do not find WSDL/WADL as horrible as it could be. There is something nice about being able to generate a client in one of any given number of languages that can hit a service. Sorta sucks when you can't do that with a traditional workflow in REST.

<comment><USER10> Personally I think WSDL is an eldritch abomination that I utterly loath - <AUTHOR> the sake of "generating a client" you can end up with a opaque mess that can be very difficult to diagnose problems with - particularly when different technology platforms are used on the client and server.

I never thought I'd say this, but I actually had fewer problems with CORBA and ONC RPC based systems than SOAP/WSDL based web services. Probably because they were so limiting that the interfaces tended to be quite straightforward - rather than the baroque approach often favoured by "enterprise" web services.

I will happily sacrifice a bit of development time for something that is _much_ easier to troubleshoot - give me RESTful web services any day.

<comment><USER3> If you want strongly-typed RPC integration with generated clients then something like Thrift, protobuf or Avro are vastly superior. Very simple and lightweight.

<comment><USER2> Totally agree, these all fit the bill far better and with far less opacity than SOAP and it's ilk.

</comment></comment></comment></comment><comment><USER11> (disclaimer, I'm founder of Apiary, which started apiblueprint.org)

I'm happy that Mulesoft are getting on the "better, human readable API DSL" bandwagon. It's very important.

At Apiary we found that embedding one format (Markdown, for human-readable documentation) into another format (YAML, for structured parseable data) is hard for the consumer, tough for the text editors/IDEs/syntax highlighters and ultimately useless. That's why apiblueprint.org is PURE markdown, that displays well on GitHub, has great syntax-highlighting support in your editor - and is just as parseable (since we ship an MIT-licensed parser with it).

I wish we could've united on a single format, but I guess the stronger will win and a little competition is always good for the end-users.

<comment><USER12> > I wish we could've united on a single format, but I guess the stronger will > win and a little competition is always good for the end-users.

the (open source) tooling is what makes or breaks adoption of languages like these, and neither of them has much to offer in that regard. apiblueprint has code for node and .net, raml doesn't even list libraries that can parse it. contrast that with json schema: there's an rfc standard and libs that handle validation in almost every widely-used general-purpose language...

... and that's just the bare minimum of tooling i would hope for from a popular standard. i'd be much more psyched to find an equivalent library of <[http://www.rexx.com/~dkuhlman/generateDS.html>](http://www.rexx.com/~dkuhlman/generateDS.html>) for jsonschema than i am to see yet another domain specific language with bad/no tooling. a standard without an implementation is nothing more than a suggestion -- and one that is unlikely to be strictly adhered to.

<comment><USER11> Sure, API Blueprint supports JSON Schema. If you're happy to put in the effort, nothing stops you from using JSON Schema in the blueprint and all the tooling built on top of it.

<comment><USER12> but that's my point: there isn't as much library support as there ought be, even for json schema, let alone these newer domain-specific languages that incorperate/extend json schema.

sometimes i think it would make just as much if not sense to define these communication protocols with a bnf grammar (for endpoints and response codes) or to use s-expressions (since json is pretty much just sugared lisp) or some other well-worn-but-adaptable format just because there are already parser generators and scheme interpreters written for every language.

</comment></comment></comment></comment><comment><USER13> Standards like this enable new value, but make it harder for newcomers. Worse, they add a lot of burdensome work in situations where implementation or compliance is demanded of developers.

Complexity-enabling standards are often a sign that a funky, little nook of software is maturing. It is a sign of huge success, too, because new layers are beckoning to lay on top of an old layer.

We had a good run with REST and JSON, which managed to hold back corporate software engineering culture -- represented in standards like SOAP and WSDL -- for a very long time. No doubt there is a future even with "complexification", but I think that new alternatives will come soon into the fray.

<comment><USER11> Personally, I believe there is a way to enable new value while fighting back the complexity and corporate engineering culture.

REST needs to mature and get tooling. But we need to avoid the WSDL complexity.

<comment><USER13> Totally agree on both points...

There's nothing like creating within a clear, clutter-free space. This is what partly drives the enthusiasm when some new hotness hits the dev scene. Other drivers include liberation from gatekeepers and previous decisions.

The possibilities seem endless and it encourages creativity, even if you have to do some nasty bootstrapping to get there.

</comment></comment></comment><comment><USER14> This seems similar to Google's Discovery Service ([https://developers.google.com/discovery/](https://developers.google.com/discovery/)) which describes all new Google APIs in a JSON document.

This powers the online APIs Explorer ([https://developers.google.com/apis- explorer](https://developers.google.com/apis-explorer)) and code generators (e.g., [https://code.google.com/p/google-api-go- client/source/browse...](https://code.google.com/p/google-api-go- client/source/browse/google-api-go-generator/gen.go))

APIs created using Cloud Endpoints on App Engine also generate a Discovery document for their APIs ([https://developers.google.com/appengine/docs/java/endpoints/](https://developers.google.com/appengine/docs/java/endpoints/))

</comment><comment><USER15> Man, that page is hard to read.

<comment><USER16> Did you try mouse-hovering over paragraphs?

<comment><USER17> for me that is what made it difficult, I wanted to see the example in its entirety without having to hover back and forth. The hover "highlight" should be a "oh thats nice" interaction - not a required step for reading.

<comment><USER18> Agreed, I shouldn't have to constantly move the mouse around just to read the page.

</comment></comment></comment></comment><comment><USER19> I for one don't mind the style, don't mind the media experience nor do I mind having one. It's distinct and unique and not hard to read for me, and perhaps even a modicrum of useful- bringing sessions into focus.

It is, however, entirely mobile hostile.

</comment><comment><USER20> Now all we are missing is a code generator that generates a stubbed site based on the raml spec...

<comment><USER21> Or how about an angular service that parses a raml file and returns a resource that implements up all models and methods ?

No need to stub it, just generate it on the fly.

Server side too. At least for quickly iterating and hand implement only the methods that require special handling.

</comment></comment><comment><USER22> So hard to read. Also, do we really need another modelling language? UML was not enough?

(not saying ML could be used to do that, more like "didn't we learn with UML that these kind of stuff brings pain and no benefits")

</comment><comment><USER23> So a lot of people here hate this. I'm not a huge fan, but I want to understand the right way to solve the problem. The problem I see with the APIs I work on is that automated integration tests are hard. I would love a way to answer the questions "Am I sending a request in the right format?" as well as "Am I going to receive data in the form I expect?". If I had a JSON schema or something, I could include those tests in isolation rather than in a big system test environment.

So it sounds like true REST is supposed to solve that. How?

</comment><comment><USER24> It burns the eyes!

Also, put a simple example on the main github page and don't make me go scavenge through 8 links to find out what the thing is.

</comment><comment><USER25> I'd like to see more of these things!

I feel like a REST API is the interface, and a web app is just the implementation. Makes sense to separate the two.

Although somewhat unrelated, this reminds me of [https://thrift.apache.org](https://thrift.apache.org)

</comment><comment><USER26> Really? Dark gray until mouse hover makes different paragraphs _glow_???

web devs, whyyyyy

<comment><USER27> I can understand the intent: showing exactly which parts of the document match up with the section descriptions. That itself is not a bad idea.

But making all of it dark gray (so, intended to be not-visible) by default is really silly.

</comment></comment><comment><USER28> It would be interesting to hear some reasoning from the RAML people about what it brings compared to existing solutions like Swagger. From a quick look it seems like they solve the same thing except that RAML use yaml and is much more immature.

<comment><USER6> In short, we wanted an API spec that was much more readable and efficient, showed the structure of the API more clearly, and promoted consistency and reuse. We wanted an API spec that was intuitive enough to just type out in an editor when designing an API. And we iterated on it quite a bit in real-world cases to be really convinced it was worth introducing this different approach.

</comment></comment><comment><USER29> [https://github.com/mishkinf/apiknow](https://github.com/mishkinf/apiknow) is another project to help build out an api documentation and Test Drive it

<comment><USER30> I think Swagger [1,2] is similar, which I am currently using, via node/restify. Awesome little project that generates docs and an interface for API consumers to experiment with.

1 - [https://developers.helloreverb.com/swagger/](https://developers.helloreverb.com/swagger/) 2 - [http://swagger.wordnik.com/](http://swagger.wordnik.com/)

<comment><USER31> How does Swagger compare with Scrooge (Twitter's Scala / Apache Thrift code generator)[0]?

[0] [http://twitter.github.io/scrooge/](http://twitter.github.io/scrooge/)

</comment></comment></comment><comment><USER32> i'd say it's a wrong direction, or at least a premature optimization. it smells like WSDL/SOAP, UML and other attempts to create a layer of abstraction which is too high level to be useful while not insightful enough for conceptualization, and too prescriptive to be practical.

how about further narrow down the scope, e.g. only focus on describe relationship among apis (how a song api related to album, musician apis)?

</comment><comment><USER33> HATEOAS or bust.</comment>


Work from Home Jobs You Can Pick Up - <AUTHOR> https://www.freesumes.com/25-work-from-home-jobs-you-can-pick-up-right-now/ <comment><USER2> Thanks for the article

<comment><AUTHOR> Glad it helped ;)</comment></comment>


Google Self-Driving Bicycle - <AUTHOR> https://www.youtube.com/watch?v=LSZPNwZex9s <comment><USER2> I feel like this is too obvious to qualify as a good April fools joke.

</comment><comment><AUTHOR> [https://youtu.be/6gOjRqlgk_Y](https://youtu.be/6gOjRqlgk_Y)

</comment><comment><USER3> They had me until the last scene.</comment>


Firefox 5 - Completely irrelevant and totally pointless  - <AUTHOR> http://www.dedoimedo.com/computers/firefox-5.html

<comment><USER2> It's just as irrelevant as Chrome 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 and 12 were.

<comment><USER3> The article is all about how Mozilla shouldn't be copying Chrome, did you read it?

</comment></comment><comment><USER4> Mozilla themselves downplay the version numbers as meaningless. Yet, it's useful to be able to refer to a series of releases as all of a similar personality. Since 5 is 4, we should still be on a 4 series, until some kind of meaningful change to the personality has occurred.

Another step back in usability and information.

</comment><comment><USER5> I also wonder if they even tested it on slow connections. Firefox 5 has hung at least once a day (every about 5 hours of browsing time) and forced me to stop and reload the current page to finish downloading it. That was very, very rare on FF3.

<comment><USER6> happened for me since 4. i had to switch to chrome on my netbook :*(

</comment></comment><comment><USER7> Good post. It had to be said.

<comment><USER8> I thought all of this had been said months ago when the new release schedule was announced. We all figured out what shorter time between major releases would mean: less would be added between major releases.

I feel like anyone who becomes outraged about version numbers is as shallow as the people Mozilla meant to appeal to in the first place. Would this post have been written at all if Firefox 5 had been Firefox 4.1? It's just a number.</comment></comment>


EFF Panopticlick reveals your browser's perhaps surprisingly traceable footprint - <AUTHOR> https://panopticlick.eff.org/?

<comment><AUTHOR> Ouchie! My particular combination of installed fonts and plugins makes my browser unique among all 250,000 browsers tested there so far.

</comment><comment><USER2> Same here, but mine was unique based only on HTTP_ACCEPT and user agent. Try hitting reload...</comment>


Nothing can now be believed which is seen in a newspaper (1807) - <AUTHOR> http://press-pubs.uchicago.edu/founders/documents/amendI_speechs29.html <comment><USER2> Every time I try and point out some media bias against Trump I have to preface it with the fact that I'm not a Trump supporter, but doing so when advocating for press transparency is getting tiresome. I see lots of people having to add the same disclaimer when exposing the MSM obvious bias because we know that going against the main narrative is interpreted as supporting the 'other side' these days.

I also keep seeing articles on HN and elsewhere talking about how Facebook or Google or whoever can fix the spread of Fake News or misinformation. The elephant in the room is that the problem lies with people, the majority of people, who do not care about facts or accuracy. I believe for most people the constant stream of "news" on Facebook is just a modern soap opera. Why watch Eastenders when you can have a live streamed 24/7 stream of drama in front of your very eyes. Facebook cannot fix peoples disposition towards their attraction to sensationalism. I don't even think this is a recent phenomenon, it's just taken a while for people who would usually take part in this offline to transfer it online and we as the people who grew up with the early internet are only now experiencing it in our space and thinking it is something new.

<comment><USER3> Could you please elaborate on what you mean by bias against Trump? The media is very critical but I would say that 99% of it is fully deserved. What would you perceive as unbiased reporting in this context?

Edit: Downvotes instead of responses? Very classy.

<comment><USER4> You say that 99% is fully deserved because you know the person or his family personally?

How relevant it is you believing that is fully deserved? Are you really good informed?

I remember hearing about Mark Shuttleworth by acid critics in the press of that Rich bastard that spends so much money to for going to space, money that could be spent on feeding kids in Africa...

Later I met the person personally and it blew my mind how much I had been lied and manipulated by the press about the person.

The same thing happened as I got to met more and more famous people because of my job.

There is a clear bias against Trump, because the same thing is different depending of who who does it but if you can not see it you won't be able to see it, because it means you are emotionally attached to the other side, and you need to detach first.

For example, democrats believe it is great that men could sodomize other men and I agree with that, because I believe that what someone does private it no one business. But the same newspapers that believe it is so great to have sex with whoever you want become sexual puritans with the private sexual life of Trump.

The same happens with massive surveillance for example, it is so great when Obama does it, because you know, he needs it for going against bad people(under democrat definition), but it is terrible when Trump has it.

Now the same newspapers that went against Bill Binney and other whistleblowers, now do interview him and consider massive surveillance bad because it is Trump who controls it.

When Bill is asked about it, what he says is: It does not matter who has it, absolute power corrupts absolutely.

Bill is objective, people are subjective by nature.

<comment><USER3> I don't need to know Trump and his family personally to be able to tell that the terror attack in Sweden that he was talking about never happened. In fact knowing him and his family would contribute nothing at all to clarifying this. Just one example out of many.

</comment></comment></comment></comment><comment><USER5> > It is a melancholy truth, that a suppression of the press could not more > compleatly deprive the nation of it's benefits, than is done by it's > abandoned prostitution to falsehood.

its*

;-)

<comment><USER6> Although I can guess what this should mean, I don't think I quite understand what this actually means - "its abandoned prostitution to falsehood".

<comment><USER7> Basically the metaphor is that the MSM has given up on truth and now is willing to report anything for ratings i.e. Money, hence prostituting itself to whatever sells even falsehood.

</comment></comment></comment><comment><USER8> Apparently the presence of an apostrophe in the possessive "it's" is not an OCR or transcription mistake but actually the original spelling.

A reference: [http://english.stackexchange.com/a/68653](http://english.stackexchange.com/a/68653)

</comment><comment><USER9> >> the man who never looks into a newspaper is better informed than he who reads them; inasmuch as he who knows nothing is nearer to truth than he whose mind is filled with falsehoods & errors.

Sad but true.

<comment><USER10> I find this untrue, personally. I'm a richer man today because of the WSJ and the FT.

I'm not going to claim you should do what I did. But it worked for me. And having unsubscribed, the d(dollars)/dt has decreased.

<comment> purple-again You mention the WSJ as one of your preferred sources which is funny because they are currently responsible for a large number of young Democrats and Independents buying into Trumps "everything is fake news" bullshit thanks to their very much fake news hit piece they put out on a famous YouTuber (pewdiepie).

<comment><USER11> Did he or did he not have a video with two people holding up a sign saying "death to all jews?" Are you claiming that is fake?

<comment><USER12> No, I'm claiming it is misreported out of context and that your question is irrelevant as to what the news claims.

The claim reported was that he is an anti-semite -- based on the posting of that picture, which he did in jest, to show how easy it is to exploit a service like Fiverr to make people do horrible things. It was openly intended to be an example of a horrible thing.

If the original video wasn't enough, he explains the whole situation (with even worse media examples) here: [https://www.youtube.com/watch?v=lwk1DogcPmU](https://www.youtube.com/watch?v=lwk1DogcPmU)

So, yeah, this is the worse kind of fake news reporting, and people mostly buy it because they dislike pewdipie (or however it's written) or envy his success. And some for the cheap click-bait value of "unmasking" a popular youtuber as anti-semite, e.g.: [https://www.theguardian.com/commentisfree/2017/feb/15/youtub...](https://www.theguardian.com/commentisfree/2017/feb/15/youtube- pewdiepie-thinks-death-to-all-jews-joke-laughing-yet) (while they just unmask themselves as click-hungry hypocrites).

<comment><USER13> You're lying about the content of the WSJ article. I checked the text of it. It does not say that PewDiePie is anti-semitic, and it mentions that he was joking:

"Since August, PewDiePie has posted nine videos that include anti-Semitic jokes or Nazi imagery, according to a review of his channel by The Wall Street Journal."

To say that the videos contained anti-semitic jokes and Nazi imagery is 100% accurate commentary.

</comment></comment></comment></comment></comment></comment><comment><USER14> Trump quoted this in his speech yesterday.

He's once again raising important questions that were ignored before.

<comment><USER15> Trump attacks the press (and people) that question him, and praises the press (or people) that supports him. That's it. He doesn't care about the truth. Just that people say good things about him.

He is by no means a moral voice in this cause, he's a part of the problem: he lies consistently, and when he's taken to task, he just screams 'liar' or bullies people - instead of explaining, justifying.

Yes - the press is definitely biased, but most of what the MSM publishes is essentially true.

But it's a problem because the press is now playing the role of 'political opposition' \- because there doesn't seem to be anyone else doing it. This is not fair, because instead of playing 'against Trump' they should be being more objective. But they really hate Trump, and can't but help themselves play hardball back against him (and I don't mean 'doing more of a better job, I mean cheating a bit with the bias). And the press is definitely hurting their credibility in that way.

The paradox is, that it is very easy to read any of the MSM headlines and easily find anti-Trump bias - which lends credence to Trump supporters acceptance of his 'anti press' rants.

Example: Trump's orders on immigration were pretty hardcore. Possibly illegal. Instead of explaining it, and highlighting concerns - the press mostly lambasted it, and created a sense of 'national fury'. Buried away were the polls that showed more Americans supported the action, than were against it.

This demonstrates the paradox because although the press were 'truthful' in their response to Trump's policy - they were also somewhat biased, which is a form of misrepresentation - and were also creating the idea that 'America was outraged' when really it wasn't so clear. The press was not allowing for nuance ... they were playing the role of 'vocal opposition'. Which isn't quite their job.

But more to the point of the article: 'the press' was never considered truthful at all, not up until the modern era and Television, when at least the _notion_ of 'truth' and 'impartiality' was supposed to be observed.

In the 19th century, Newspapers existed as businesses only, and to push the propaganda and flame-wars of their owners. Obviously this exists today, but not quite as much. It's between the lines, and in the bias.

<comment><USER16> First, Greenwald: >1) Trump presidency is dangerous. 2) CIA/DeepState abuse of spy powers to subvert elected >Govt is dangerous. One can cogently believe both.

Second, the media is not to be trusted. Truman, JFK, Bernie Sanders, Eisenhower, Ron Paul, all warned of the CIA, and all said it should be basically destroyed or returned to its original mission. The CIA meddling in media and pushing agendas through our newspapers, cable news, and _respectable media outlets_ has been long established. It is no conspiracy theory. [https://en.wikipedia.org/wiki/Operation_Mockingbird](https://en.wikipedia.org/wiki/Operation_Mockingbird)

>Yes - the press is definitely biased, but most of what the MSM publishes is essentially true.

CNN stating on national broadcast TV that the people are not allowed to read Wikileaks because it is illegal to read fake news: [https://www.youtube.com/watch?v=k5aOou-2BpE](https://www.youtube.com/watch?v=k5aOou-2BpE)

Washington Post calling the Ron Paul Institute Russian Propaganda. Seriously. [https://theintercept.com/2016/11/26/washington-post- disgrace...](https://theintercept.com/2016/11/26/washington-post- disgracefully-promotes-a-mccarthyite-blacklist-from-a-new-hidden-and-very- shady-group/)

Then there's the issue of what they choose to publish >Emails Show Hillary Clinton Aides Celebrating F-15 Sales to Saudi Arabia: "Good News" Source: [https://theintercept.com/2016/02/22/saudi-christmas- present/](https://theintercept.com/2016/02/22/saudi-christmas-present/)

Most people I've encountered, when informed of Hillary's connections to Saudi Arabia, simply do not believe me.

This problem can be summarized by Douglas Adams: >"The people hate the lizards and the lizards rule the people."

Full quote: "[Ford said] ".. On its world, the people are people. The leaders are lizards. The people hate the lizards and the lizards rule the people." "Odd," said Arthur. "I thought you said it was a democracy." "I did," said Ford. "It is." "So," said Arthur, hoping he wasn't sounding ridiculously obtuse, "why don't the people get rid of the lizards?" "It honestly doesn't occur to them," said Ford. "They've all got the vote, so they all pretty much assume that the government they voted in more or less approximates to the government they want." "You mean they actually vote for the lizards?" "Oh yes," said Ford with a shrug, "of course." "But," said Arthur, going in for the big one again, "why?" "Because if they didn't vote for a lizard," said Ford, "the wrong lizard might get in."

If the era of lizards is allowed to continue, tyranny is closer around the corner than most people would believe, and almost everyone loses.

Finally, we're very lucky for Glenn Greenwald and people like him. Without people like him the world would be a much darker place.

<comment><USER17> Some of those articles by Greenwald are nonsense. For example the Washington Post never directly called the Ron Paul Institute propaganda:

[https://www.washingtonpost.com/business/economy/russian- prop...](https://www.washingtonpost.com/business/economy/russian-propaganda- effort-helped-spread-fake-news-during-election-experts- say/2016/11/24/793903b6-8a40-4ca9-b712-716af66098fe_story.html?utm_term=.47884192f10e)

It said that companies on that PropOrNot may have explicitly or inadvertedly published Russian propaganda. Which is a far more nuanced point to make.

<comment><USER16> What you are saying is erroneous. It is not in agreement with the facts.

You can not ignore that the Washington Post specifically said, as the headline: >Russian propaganda effort helped spread 'fake news' during election, experts say

They published this in their news section. Not their op-eds.

ProOrNot was _the source_ this article used to substantiate the central premise of this article that subversive, clandestine Russian Propaganda was spreading into the US.

They've since tried to walk away from this claim without admitting to the journalistic garbage that it is.

</comment></comment></comment></comment></comment><comment><USER18> Media - "Muslim ban"

Reality - "90 day travel suspension from 7 countries"

As someone who did not vote for Trump I can detect an ovious bias on just how that one story alone was covered. I could spend days going over every way the media speaks incorrectly\lies about things.

What I find most sad is often "intelligent" people will buy into the bias because they take a political side instead of sticking to the truth.

<comment><USER10> I don't think anyone is fooled there, though. If you list the countries and you listened to his campaign speeches you know what he's going for.

No one is going to have a different position if you do that.

EDIT: In case, it wasn't clear, I mean that his opponents will see it as a Muslim ban and dislike him for it and his fans will see it as such and like him for it. He ran on that platform. There's nothing disingenuous here.

<comment><USER18> There is no fooling needed. Report exactly what it is, then you can report exactly what Trump said in present or past. Its not medias job to create a "Muslim ban". Anyone who is honest at all will tell you there is no Muslim ban.

The media does no one any favors by just making things up.

<comment><USER19> You're going to have a tough time finding any msm articles that aren't directly labeled as opinion peices calling it a "Muslim ban"

</comment></comment></comment></comment><comment><USER20> Incredible read.

Off topic: With all due respect, may I ask why HeavenBanned's seemingly innocuous comment was killed off?

<comment><USER21> The account is shadowbanned. So all of its comments are killed off.

Sometimes I see valuable comments from shadowbanned accounts, in which case I click the "vouch" button which brings the comment back to life. This is not one of those times. It's a pointless comment, mainly a joke, not useful or interesting to anyone.

<comment><USER22> Out of curiosity, do you know why you see the "vouch" button? I always knew it existed, and assumed that it was unlocked at some karma level; but your account has less karma than mine, so I must be wrong.

<comment><USER23> If you click the "timestamp" on the header of the comment, it will take you to the comment's page, and there you'll find the vouch button...

</comment></comment></comment></comment><comment><USER24> The media exists so that the narrative can be owned, manipulated and put towards furthering a greater goal. There is no other reason why anyone would bother to take the time and invest the resources necessary to disseminate information on such a wide scale. All news is fake. It's purely a matter of degrees.

<comment><USER25> > The media exists so that the narrative can be owned, manipulated

Thats also true for anyone else who is not part of the media.

> All news is fake. It's purely a matter of degrees.

That does not lead to the conclusion that other sources are right.

<comment><USER26> > That does not lead to the conclusion that other sources are right.

There are no other sources. Information you get isn't divided into "news" and "not-news", even if you divide it that way in your head. An article in a blog is just as much news as an article in the NYT. Or for that matter, one of the NYT blogs...

<comment><USER27> That's silly. There's plenty of information that's not news. Have you heard of history?

</comment></comment></comment></comment><comment><USER28> Reports of "fake news" from a founding father.</comment>


GnuTLS TLS 1.3 session resumption works without master key, allowing MITM - <AUTHOR> https://gitlab.com/gnutls/gnutls/-/issues/1011 <comment><USER2> Any ideas which software uses gnutls by default? I couldn't figure it out.

<comment><USER3> [https://en.wikipedia.org/wiki/GnuTLS#Deployment](https://en.wikipedia.org/wiki/GnuTLS#Deployment)

>Software packages using GnuTLS include(d):

        GNOME
        CenterIM
        Exim
        Weechat
        Mutt
        Wireshark
        slrn
        Lynx
        CUPS
        gnoMint
        GNU Emacs
        Synology DiskStation Manager
        OpenConnect

</comment></comment><comment><USER4> This seems to be in the GnuTLS implementation and not the specification itself as the title led me to believe.

<comment><USER5> Agreed, would be better if the title would be changed to "MITM flaw in Gnutls implementation of TLS 1.2 & 1.3"</comment></comment>


Power Wastage on an Idle Laptop - <AUTHOR> https://randomascii.wordpress.com/2016/03/08/power-wastage-on-an-idle-laptop/ <comment><USER2> If you're on Linux and jealous: a similar (but different in a lot of ways too) tool for doing an analysis like this is called "powertop".

<comment><USER3> I've never gotten useful results from powertop. The model it builds to correlate system events vs. observed power usage always diverges with reality very quickly. In the good case it'll just do something a little silly like conclude that the CPU fan is the ultimate source of all power consumption. In the bad case it'll be something like think that a pair of linux veths uses 3kW (not a typo) of power.

<comment><USER4> I was the same - mixed results at best. I figured that manually playing with this all the time was the wrong solution and installed TLP instead which seems to work pretty nicely. Not sure if it is mentioned in the linked article, so if not then check it here: [http://linrunner.de/en/tlp/docs/tlp-linux- advanced-power-man...](http://linrunner.de/en/tlp/docs/tlp-linux-advanced- power-management.html)

</comment></comment></comment><comment><USER5> I didn't make a real trace, but was impressed when I saw the amount of CPU was being wasted for the the three cloud drives that I had: Microsoft OneDrive, DropBox and Google Drive. They all offer some free extra space when you login from a new machine and I accepted all of them. When I disabled them all my machine were much more responsive.

<comment><USER6> You'd be amazed at the amount of _disk IO_ wasted by these programs, then.

Can somebody tell the Dropbox developers that _right after boot_ is the exact wrong time to kill disk performance with a massive number of very random, very short reads? Jesus. People want to use their newly booted PC, not wait for Dropbox to realize nothing has changed after all while it chokes the browser being started.

I figure they don't notice because they have two PCIE 512GB SSD disks in a raid0 in their dev boxes. They need to test this stuff with spinning rust.

<comment><USER7> I'm a developer for a large organization and every year or two I snag a laptop on the way out of the bottom of the replacement cycle. When I have it out people sometimes come by and are shocked, "You're a developer, what are you doing with that thing? It must be the oldest laptop in the whole agency!"

And I tell them, "Exactly. If I make my app run well on this laptop, I know for sure it will run acceptably on every machine here."

<comment><USER8> A company I used to work for had a slow DSL line, with a ~7 year old pc, that they'd use to test their web-apps. That way, if it was responsive on that, then it'd be responsive on the customer's pc. I wish more companies tried this, instead of pushing the limit of what their expensive work-provided desktops could do.

<comment><USER9> This guy has a good write up on using netem to impair a connection to simulate a wan connection.

Pretty handy for testing. I've used it to simulate a bad uplink in between a dslam and bras.

[https://www.excentis.com/blog/use-linux-traffic-control- impa...](https://www.excentis.com/blog/use-linux-traffic-control-impairment- node-test-environment-part-1)

<comment><USER10> I was going to recommend traffic manipulation and traffic shaping with netem and tc. I set this up at my last employer in the lab for use with our networked IP radios and such. Stimulating poor network conditions has been a mainstay in my testing ever since, even now that I work on web apps and distributed services.

</comment></comment></comment></comment></comment></comment><comment><USER11> As an aside, because I'm genuinely curious, can anyone explain the modern English trend of adding "age" suffix to some words? E.g. Wastage, Usage.

The title of this post would read just as well as "Power Waste on an Idle Laptop".

I also see "Usage" quite a lot on GitHub Readme pages, where I think "Use" would suffice.

Many words seem to be shortened for common use. E.g. Photograph to photo.

Why extend the length of other words?

<comment><USER12> [https://en.wiktionary.org/wiki/-age](https://en.wiktionary.org/wiki/-age) has some information on the subject. Seems the convention was created to turn nouns into verbs?

<comment><USER11> Thanks.

Of the six potential uses, I think this one is most relevant:

"Forming nouns indicating a process, action or result. E.g. blockage, slippage, shrinkage"

Yet in this case the extension to "wastage" still feels somehow redundant. For example, I wouldn't say "Household wastage in modern society".

<comment><USER13> I would use "waste" to refer to the physical result, a bunch of trash or whatever. "Wastage" to me is the act, the production of waste.

</comment></comment></comment></comment><comment><USER14> "I have a special set of skills and if you violate these rules then I will hunt down your process and kill it." Great writing

<comment><USER15> It's a quote from 96 hours:

"Bryan: [...] But what I do have are a very particular set of skills, skills I have acquired over a very long career. Skills that make me a nightmare for people like you. If you let my daughter go now, that'll be the end of it. I will not look for you, I will not pursue you. But if you don't, I will look for you, I will find you, and I will kill you."

Source: [http://www.imdb.com/title/tt0936501/quotes](http://www.imdb.com/title/tt0936501/quotes)

<comment><USER16> Typo? It's from Taken.

<comment><USER17> Looks like you are both correct: [https://de.wikipedia.org/wiki/96_Hours](https://de.wikipedia.org/wiki/96_Hours)

<comment><USER18> How does that link prove anything?

<comment><USER17> The first four words on that page are "96 Hours (Originaltitel: Taken)".

I don't speak any german, but I have a pretty good idea of what that means.

</comment></comment></comment></comment></comment></comment><comment><USER19> _If you really can't figure out how to avoid polling then be smart about it. Waking up every second may seem very conservative, but if every long running program does it then your CPU may get woken up dozens of times per second._

My understanding was that this shouldn't be true since Windows 7 (and on Mac, since Mavericks): [https://en.wikipedia.org/wiki/Timer_coalescing](https://en.wikipedia.org/wiki/Timer_coalescing)

<comment><USER20> The rules on timer coalescing are complex and they depend on the details of the timers. So, the timers may get coalesced, but it's hardly guaranteed, especially if the different wakeup frequencies are slightly different.

I suspect very few programs are using SetCoalescableTimer, but I'll add that as a suggestion.

</comment></comment><comment><USER21> A slightly easier option is "powercfg -energy" \- does a 1 minute sample and spits out a little html report.

Also includes some info about driver/firmware limitations, wake up sources, supported power states etc.

</comment><comment><USER22> Don't forget to disable Windows Defender which does lots of realtime scanning and hogs CPU resources and disk IO. A complete piece of trash that automatically deletes false positives. Never have I been so disappointed with Windows 10 than after upgrading and seeing this thing enabling itself and running.

(To the downvoters: I would love to hear feedback about why I'm mistaken here. Windows 7 didn't need such an authoritarian defender (auto-deleting things, scanning, etc.) and it felt just as safe)

<comment><USER23> I see Defender as a symptom - as it monitors the files, it only checks files that _some other process_ opens. Go solve a problem of second process regularly accessing files on idle PC.

<comment><USER20> I hope that you are correct. That was also my assumption but I have not validated it.

</comment></comment></comment><comment><USER24> If you're on a Mac and using OSX, I highly suggest checking out Turbo Boost switcher [https://github.com/rugarciap/Turbo-Boost- Switcher](https://github.com/rugarciap/Turbo-Boost-Switcher) It's given me at least an hour more of battery life on my aging Macbook Pro 13 (2011). Another handy tool on OSX is CoconutBattery which is basically the closest I've found to PowerTop for monitoring power usage (I know ActivityMonitor somewhat shows power usage BUT it makes my fans & CPU spin like crazy when it's gathering info!)

<comment><USER25> Try "powermetrics" on the command line.

</comment></comment><comment><USER26> I can just imagine a sql server team meeting where they discuss sql server's effect on laptop battery life. Given sql server's intended environment, I almost wonder if its activity is intentional.

<comment><USER20> Power consumption is a concern even in data centers, but yeah, the power cost of this inefficiency is probably inconsequential in situations where sqlservr is actually being used.

But, VS installed and started sqlservr on _millions_ of developer machines so they should have paid some attention to this issue. Super sloppy.

<comment><USER27> > Super sloppy.

You don't need to install SQL Server Express, just pay a bit more attention to what you're installing.

<comment><USER20> What if I need it occasionally? Should I stop and start the server process as needed?

If so, why? Why shouldn't it just behave reasonably? Computers should be _our_ slaves.

<comment><USER28> So true, if only more users realized this. I for one really appreciate your work this.

Users don't understand that computer resources like CPU time and battery level are really their property. It is an awful like paying a hidden poor quality tax.

It is not unreasonable to expect software to not waste CPU and battery time.

</comment></comment></comment></comment></comment><comment><USER29> I can imagine many valid use cases for an RDMS waking up regularly, and a laptop really isn't the environment it was originally developed for.

The really questionable thing is automatically installing it along with Visual Studio.

<comment><USER20> Waking up every minute is fine. Spending 1.5 s of CPU time doing nothing... I think I could improve on that. That's enough CPU time to drag down overall performance slightly when the machine is not idle.

</comment></comment><comment><USER30> I would have liked to see bit more discussion/analysis on CPU power states, wakeups and frequency scaling. My understanding CPU usage might not be always perfect proxy for energy usage.

<comment><USER20> Yeah, I thought about that, but I wasn't sure I could say anything authoritatively enough beyond "CPU consumption wastes power, and so does waking up". Apple's energy monitor seems to use that for its model so I guess it's not too bad.

</comment></comment><comment><USER31> I wonder if anyone will do an analysis like this for Mac

<comment><USER32> On (recent) Macs, they have the Energy Impact numbers on the Activity Monitor. It can give a metric on which applications are taking up the most energy. However it doesn't show many of the system processes...

<comment><USER33> For those interested in the way Energy Impact is computed: [https://blog.mozilla.org/nnethercote/2015/08/26/what-does- th...](https://blog.mozilla.org/nnethercote/2015/08/26/what-does-the-os-x- activity-monitors-energy-impact-actually-measure/)

In 10.9 it was a simple function of on-CPU time and wakeups with each wakeup counted as 500µs of CPU time, in 10.10 a bunch of new counters were added (with machine-specific conversions to CPU time estimates) variables were added to the mix: whether the process was in "background" QoS, the number of disk read/writes, GPU usage and network activity (in packets#)</comment></comment></comment>


KeyBox: Web-Based SSH Access and Key Management - <AUTHOR> https://github.com/skavanagh/KeyBox <comment><USER2> > By default KeyBox will overwrite all values in the specified authorized_keys > file for a system.

This honestly seems like a terrible default. I want an explicit _something_ when I'm about to lock myself out of my systems.

OTOH, the prerequisites are substantial enough that you're hardly likely to install it by accident. I suppose it's a better fit for brand-new hosts on both fronts. (But then, as I see it, all the hard parts around key management are around getting it reliably deployed across the entire system, which means also on old, long-running boxes. If we could all wipe our prod infra and start again from read-only media ((which we should probably do more often, to the extent that circumstances permit)) it wouldn't nearly as hard of a problem.)

<comment><USER3> Add your key to authorized_keys2, however its been deprecated since 2001 (ref: [http://marc.info/?l=openssh-unix- dev&m=100508718416162&w=2](http://marc.info/?l=openssh-unix- dev&m=100508718416162&w=2) )

</comment></comment><comment><USER4> It cannot possibly be a good user experience to use SSH via a web browser. Good for emergencies, sure, but not for day to day work.

<comment><USER5> I don't know, Google has a web-based shell for their cloud platform that uses oauth and deploys keys (very similar to the OP project) and it's not half bad. I do still prefer to ssh in from the command line using gcloud, but the web- based tool is acceptable.

</comment></comment><comment><USER6> "KeyBox layers TLS/SSL on top of SSH and acts as a bastion host for administration. Protocols are stacked (TLS/SSL + SSH) so infrastructure cannot be exposed through tunneling / port forwarding."

Okay: you connect with your browser to the server over tls and from there via ssh to the server ... where does the layering come into play?

<comment><USER7> I think what he's saying is that you can't get directly to SSH, but have to go through the TLS web control panel.

This seems to make an assumption that the security is equal to these two (web I/F w/ TLS plus SSH) combined in a chain, when in fact I think it now introduces a possibly weaker link.

And now I'm the one making an assumption that: if you can break into KeyBox, then you have full control over the OpenSSH connection too. Ultimately it comes down to which you trust more: KeyBox or OpenSSH.

(Note that this is also partly true of things that just create user accounts and sudo roles like Userify, but Userify provides a much lower degree of direct control over the remote server as opposed to a channel straight into that server. Even if you broke Userify, you'd still need to gain access to SSH, which might not even be possible from your network, and certainly all of that would show up in your logs anyway, since it's pure SSH turtles all the way down...)

</comment></comment><comment><USER8> If people like this, they will probably find the Apache Guacamole project interesting. I was surprised to here it is a superset of this (RDP/VNC/SSH bastion box) but also handles key auth, perhaps insecurely architecturally, even if they have passwords for the remote desktop stuff compressing it and then sending it over HTTPS using a protocol they designed back in 2006. They added SSH to boot.

[http://guacamole.incubator.apache.org/](http://guacamole.incubator.apache.org/)

The main dev had a wonderful interview on SE Daily.

[http://softwareengineeringdaily.com/2016/06/27/apache- guacam...](http://softwareengineeringdaily.com/2016/06/27/apache-guacamole- and-remote-desktop-with-mike-jumper/)

</comment><comment><USER9> I actually think web-based SSH is not a bad idea, I just wish NaSSH (the Chromium shell) was better used.

If you're interested in centralized key management that doesn't compromise private key security, I have written this for EC2: [https://github.com/kislyuk/keymaker](https://github.com/kislyuk/keymaker). It uses IAM to store public keys, and each instance fetches them on demand.

</comment><comment><USER10> Who would use this and why would they use it? On all the servers I have access to, I manage one key, my own key. Why would I need a "SSH Access and Key Management" system for a single key?

<comment><USER11> Imagine a team of 20 developers sharing cloud infrastructure. Key additions and revocations ends up being time consuming.

<comment><USER12> Generally this should be managed by configuration management (Chef, Puppet et al), which makes key additions and revocations trivial.

Additionally OpenSSH supports CA signing of public keys with user metadata, which I've found to pair nicely with LDAP.

<comment><USER13> Yeah... coming at this from the standpoint of a heavily invested Saltstack user, I really don't see the reason for this to exist. It removes all the other cool things SSH does besides just giving you a shell, with a much, _much_ worse user experience.

</comment></comment></comment></comment><comment><USER14> If you want an appliance that does this and more you should probably look at [http://www.wheelsystems.com/en/products/wheel-fudo- pam/](http://www.wheelsystems.com/en/products/wheel-fudo-pam/)

<comment><USER15> Or just go full enterprise and setup LDAP/Active Directory.

<comment><USER14> How does that compare with what FUDO can do? FUDO intercepts and records ssh, rdp, vnc, mysql, oracle, etc. It can allow users to login to servers without actually knowing the real credentials. You can use the web interface to "share" a session with a remote support engineer and choose when they can have control over the session, etc etc.

</comment></comment></comment><comment><USER16> Prerequisites: Java JDK 1.8 or greater Aaand I'm out

<comment><USER3> Why? Deploying an application with Java is very easy and you can have intense monitoring built in with out having to use a third party like NewRelic (even though NewRelic adds a lot).

<comment><USER17> not op but....

Java is always a mess to debug/troubleshoot. It eats memory worse than a bloated browser, and is _slooooooow_. I personally avoid projects that require java if I can help it.

<comment><USER18> It's actually not slow, and has some of the best monitoring and debugging facilities of any mainstream language.

<comment><USER17> I'm going to have to flat out disagree with you. I hear this all the time from java devs, but have never seen it in real life. Every implementation I've personally seen of java is extremely slow, and has horrible debugging utilities.

<comment><USER18> Ok. I'm going to have to disagree since I've seen it in real life several times. Also many large distributed system projects, such as Cassandra, Elasticsearch, Hadoop, etc. are all written in Java.

<comment><USER17> I guess we'll just have to disagree due to differing experiences. How does a language being used in different distributed system projects mean it's fast? It's just the language they chose to go with. That decision could have nothing to do with speed.

<comment><USER18> I was mainly talking about the logging and monitoring facilities, not speed. Though those projects are all quite fast. It's not 1996 anymore.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER19> Shameless co-founder plug: If you're looking for web based ssh also check out [https://mist.io](https://mist.io)

</comment><comment><USER20> what's the sell on this over ldap?

<comment><USER21> Exactly this - I don't understand this service. You lose your normal terminal, stdin/out redirection, port forwarding, (probably) special keys handling, and others. And instead you get what openldap provides. This service even integrates with your own openldap!

</comment></comment><comment><USER22> Java and SSH... should not mix.

<comment><USER23> Still better than Node...</comment></comment>


Microsoft Continues IE Reboot - <AUTHOR> http://thenextweb.com/microsoft/2013/01/23/microsoft-4/ <comment><USER2> Microsoft will loose the browser war thanks to their unwise decision to couple the browser so tightly with the OS. And there is no whitewashing around that.

The benefit for the customer is marginal at best. It decreases the security etc ...

IE 10 is a speed freak. But with the developer unfriendly plugin model is hamstrung.</comment>


Organizational Skills Beat Algorithmic Wizardry (2013) - <AUTHOR> https://prog21.dadgum.com/177.html <comment><USER3> The single most important undervalued skill for any programmer, is Domain Modeling. It's an absolute shame it isn't a requirement to get a CS degree.

Few things have more of a 3x effect on your code, than poorly chosen data modeling, or incorrect domain relationships. Your domain modeling determines in a large part, the amount of incidental complexity in your codebase.

When done incorrectly, it's what causes the painful - "Yeah we can't account for that feature without a lot of work. It's not how the system is designed." Which means either a re-write of large portions of the core domain, and all the fall out / impact of every dependency on it; or, the need to wrap code in hacky patch that works for this feature, but falls apart for the coming related feature because it wasn't designed the right way.

<comment><USER4> I had almost a full course on Domain Modeling to get my degree in CS in the University of Buenos Aires.

I hate it, of course, cause I had to work a lot. The idea was that for every model you designed, the teacher introduced a new feature that required to rethink everything again.

<comment><USER5> Was the pain worth it in the end?

<comment><USER6> UVA had a class like this on software engineering. Not only did the professor randomly add features as the semester went by, they also would randomly reassign group members so you couldn't become reliant on a single person and were forced to keep documentation.

I thought it was hell at the time, but it's a lot more low key than a real disfunctional workplace.

</comment></comment></comment></comment><comment><USER7> Thread from 2018: [https://news.ycombinator.com/item?id=16703553](https://news.ycombinator.com/item?id=16703553)

Discussed at the time: [https://news.ycombinator.com/item?id=5910037](https://news.ycombinator.com/item?id=5910037)

</comment><comment><USER8> I really like the perspective provided by the General systems thinking [0]:

There are problems with little randomness and number of moving parts: these problems are either easy to reason about, or easy to solve by analytical means (think of systems that can be reduced to few equations).

Then, there are problems with either/both: large number of elements and high degree of randomness. These problems can be dealt with statistics.

Then there is a ball of mud between - medium number of elements/randomness. The number of interactions is too high to be able to reason about them effectively, yet too little to derive solution by statistical means.

Most of the software, especially poorly written one falls in this realm- the more interactions between elements, the harder to reason about. Mastering algorithmic wizardry just moves you slightly right on this plot- being able to decrease the number of interactions makes the system easier to reason about [1]

0: [https://www.amazon.com/Introduction-General-Systems- Thinking...](https://www.amazon.com/Introduction-General-Systems-Thinking- Anniversary/dp/0932633498)

1: [http://article.sapub.org/image/10.5923.j.ajss.20150401.02_00...](http://article.sapub.org/image/10.5923.j.ajss.20150401.02_001.gif)

</comment><comment><USER9> Hmmh, wasn't there another article like this some time back that cited clear writing (of prose/email/documentation) as the most important programmer skill, especially if one wants to ascend to the highest ranks of an organization?

In the discussion thread, I believe one of HN's elder statesmen (ChuckMcM?) quoted a Nobel prize-winning physicist who said "clear writing in English" was more important to his career than math.

<comment><USER10> Clear writing is indeed difficult, as far as my field (Business/Data Analyst). More difficult is to express oneself clearly under a lot of pressure.

<comment><USER11> That's underselling the difficulty of being a business/data analyst. You not only have to express yourself clearly, but are constrained by the knowledge and mental models used by your target audience. Which becomes exponentially more difficult if you have multiple audiences you have to convey a point to, simultaneously.

</comment></comment></comment><comment><USER12> "When it comes to writing code, the number one most important skill is how to keep a tangle of features from collapsing under the weight of its own complexity."

This resonates with me for sure. But the article was written back in 2013. Do employers really still ask questions about "oddball variants of heaps and trees" and "puzzles with difficult constraints"?

Also can we get the publish date in the title?

<comment><USER13> My anecdotal experience interviewing this year is that they don't. LeetCode/Hackerrank-level algorithm questions are common. I haven't seen any TopCoder-type questions and brain teasers. According to some posts, it seems like the industry is trending towards easier problems with more focus on "the process" in which a person finds a solution.

It's still true that employers overemphasize algorithmic ability. I had one systems pop quiz but nothing about usability, business, SWE processes, etc. which are as core to software engineering as algorithms.

</comment></comment><comment><USER14> Related: Richard Feynman, "Computers Don't Compute"

 _" One of the miseries of life is that everyone names everything a litte bit wrong, and so it makes everything a little harder to understand in the world than it would be if it were named differently. A computer does not primarily compute in the sense of doing arithmetic. Strange. Although they call them computers, that's not what they primarily do. They primarily are filing systems. People in the computer business say they're not really computers, they are "data handlers". All right. That's nice. Data handlers would have been a better name because it gives a better idea of the idea of a filing system. "_

[https://youtu.be/EKWGGDXe5MA?t=278](https://youtu.be/EKWGGDXe5MA?t=278)

<comment><USER15> In French (and some other romance language speaking countries), a computer is called an ordinateur(fr)/ordenador(es) as in 'to ordinate' (put in order).

</comment></comment><comment><USER16> Personally I think large organizations ask algorithmic questions more because of what it correlates with than what it directly measures (they know most engineers will not be spending much time solving algorithmic challenges on the job), so the system is working as intended. But I do think it would be a good interview question to ask someone to refactor a poorly designed class structure in order to add a new feature.

</comment><comment><USER17> If you ask a system design question, an algorithm question, a code structure and organization question, and some general questions about past work experience and how they'd handle certain scenarios, you get a pretty good coverage of a person's abilities I've found.

While I agree a lot of software engineering is about managing large code bases, it isn't just that, I feel all aspects matter and come into play. And even code organization exist at different levels: in the small, in the medium and in the large. It's good to try and get an idea at all levels.

</comment><comment><USER18> The reason few people take up neurosurgery on their own in their spare time is not that it's more difficult or requires "intense training". There is a much simpler explanation: doing so is deeply immoral, and illegal.

<comment><USER19> I've never once thought to myself "I'd really love to perform some neurosurgery, if only it weren't illegal!" The reason people don't perform neurosurgery is because people don't have a need to perform neurosurgery - <USER2> think of the consequences of something you never think about in the first place?

<comment><USER20> Maybe you think that there aren't any humans out there who really enjoy cutting open their fellow humans' heads with knives, and that neurosurgeons only do what they do because they're motivated by altruism or money.

If so, you are profoundly mistaken, and probably a lot more optimistic about human nature than is rationally justifiable.

<comment><USER19> I can't remember the last time someone called me an optimist. So where are some examples of these people that slice up people's brains for fun? If the law exists for good reason, there must be at least one example of an offender.

<comment><USER20> Most of them, if it's a real passion rather than something they could do without, have enough self-discipline and concern for others to go through medical school first, but there's also Jeffrey Dahmer and soldiers. There are intermediate outlets; Body Worlds, for example, and a friend of mine does taxidermy as a hobby. On non-human animals he doesn't have to kill because they're already dead.

<comment><USER19> I feel like that was murder and the exploration of bodies was secondary to that. And other times he was just torturing them because he wanted to torture them. I meant something more like a person pretending to be a neurosurgeon so they could attempt to perform surgeries, like removing a tumor. Murderers desecrating bodies isn't what I would call neurosurgery.

<comment><USER20> Dahmer also performed neurosurgery on some of his victims while they were still alive, but not in order to torture them, more for power reasons. There have also been numerous cases of people faking medical abilities (including, roughly, every doctor before 1800) but I don't think we can unambiguously attribute any one of them to a strong desire to cut apart human bodies.

<comment><USER18> Yea, it's worth remembering in this context that 1949's Nobel prize in medicine was awarded to the doctor who invented the medical intervention we now call lobotomy.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER21> Algorithms are a valuable part of programming, just like Maths are a useful part of Engineering.

Most of the tricky/smart algorithms can be learned in a few months by smart kids.

But real-world, useful software architecture, requires experience and a wide array of knowledge.

<comment><USER20> > _Most of the tricky /smart algorithms can be learned in a few months by > smart kids._

This is the opposite extreme from the truth. It's like someone living in a 17th-century small town who imagines that a traveler could meet everyone in Europe in a few months. You can't even learn most of _the algorithms in TAOCP_ in a few months, much less the entire published literature, still less all the tricky/smart algorithms that are used in existing software.

<comment><USER22> Eh, that's one way to interpret that statements. I think most algorithms that you would come across usually (sorting / searching / efficient storage), and a large superset of what could be used in a regular engineering job can be learnt in a few months. In fact, most CS undergrads take 2-3 courses on algorithms in their education, which is a few months.

TAOCP and books like that are meant to be a compendium or reference. It would be like someone claiming "I can learn enough JS to be productive at work in a year", and then someone refuting that by showing them some obscure feature of the language no one uses and knows of.

<comment><USER20> The seventeenth-century villager could meet everyone they "would come across usually" in a few months. Yet every day I meet more people than they would meet in those few months.

The top-level comment didn't say that most tricky/smart algorithms _a beginning programmer comes across_ can be learned in a few months, or that most of the tricky/smart algorithms _they need to be productive at work_ can be learned in a few months. (For most jobs and for many programming projects, as Hague points out, you don't need _any_ "tricky/smart algorithms".) They claimed that _most of the tricky /smart algorithms_ can be learned in a few months. And that's profoundly false; it's like when I thought I was an expert at computer programming because I had memorized the constructs of the BASICs of several different popular home computers.

If you want to organize your programming career so that you never face any interesting algorithmic problems, you can, easily. That doesn't even mean you won't face any interesting problems, because many other aspects of programming are interesting too, like Hague's favorite, videogame user experience design. But if instead you want to organize your programming career so that you _do_ get to work on interesting algorithmic problems, there are no shortage of such open problems known, and there is an immense body of knowledge about solutions to those problems, as well as communities of practice where you can learn to solve them. Some of them are even quite lucrative.

The top-level comment is saying that this enormous wealth of algorithmic research simply does not exist; you are saying that it is worthless. Both of you are deeply mistaken.

</comment></comment></comment></comment><comment><USER23> I think the assumption is that algorithmic skills are a good predictor of success in other areas of software engineering.

<comment><USER24> Right? Maybe that assumption is wrong, but you at least have to address it when criticizing if you want to change minds.

</comment></comment><comment><USER25> We hear this all the time today -- social skills are underrated, technical prowess isn't everything etc. I agree but on the other hand, if a person likes algorithmic stuff and can't bring themselves to develop their soft skills no matter how much they agree on their importance -- towards what kind of jobs/fields should they turn to?

<comment><USER26> Even my autistic friends can develop soft skills. If someone can't do it it means they need help with it, not that they are inherently incapable.

<comment><USER10> TBF it's equally, or maybe even more difficult for those who can but don't want, to do X, than those who can't but want...

</comment></comment></comment><comment><USER27> An interview needs to determine success in the role initially and as it changes. As such, it should simulate the daily activities so as to support effective hypothesis about that success. While the distillation of years of engineering is the design and implementation of systems and the specific and most difficult algorithms that will be written during those years we never do that work in fast forward. In respect to everyone's time we limit interview lengths. The delta between what would be ideal and what we can afford (or are willing to invest) is where the high stakes and unhealthy game environment we've created forms. It is truly a hard problem.

</comment><comment><USER28> As a co-founder of a fintech company, I absolutely 100% agree with this. When the company was 1 person, sure, you can revel in how you implemented some cool data structure or algorithm. But once you scale, none of that really matters anymore. Organization is more important to get people to work together, understand each other's code and generally just execute the product....

Also, this recent article from HN is a good pairing with OP's: [https://www.netmeister.org/blog/cs- falsehoods.html](https://www.netmeister.org/blog/cs-falsehoods.html)

</comment><comment><USER29> Can't help but agree. I'm aware that knowing about algorithms can be important, but 99% of the time they're just theoretical knowledge I half remember from college.

It's getting to the point where I'm not that interested in pursuing a role in a company if part of the process involves pointless algorithmic tricks.

</comment><comment><USER30> Now try to describe it to HR people so they can measure things and write to excel table like Person A knows 90% Person B knows 50%. Explain that what you want are lazy people who can abstract the world and peek problems from different angles. Writing code is only the last step.

<comment><USER31> Just as any sufficiently complex software system devolves into a half baked implementation of LISP with an incomplete email implementation, so too does any sufficiently large organization become a pseudo police state with secretive protocols and closed room interrogations with files on everyone and everything

A certain subclass of human thrives in these environs but they don't produce good quality information systems

</comment></comment><comment><USER32> Why I advocate CS programs have a MIS style core course on business analysis. Most programming businesses application development, and even those writing compilers need the skills.

</comment><comment><USER33> Reminds me of the old adage - when you have good software architecture all the bugs are right where you expect them to be.

</comment><comment><USER34> this is well known and understood by anyone with a few years of experience. what I don't get is why people keep digging their own hole when they know where this leads.

</comment><comment><USER35> ... and yet algorithm skill is what most employers test for.

<comment><USER31> It's a bit like the infamous email scam -- it requires a certain kind of victim in order to be successful

These organizations thrive on a certain kind of candidate who is willing to do what they're told and not look too far past the perks to question the direction of management or brand leadership

These questions are not much more than a smokescreen to give the appearance of propriety while masking all sorts of chicanery below the surface and optimizing for the sort of engineers who won't think twice to churn out features on a whim

If it's not algorithms it's some sort of arcane language specification or some other meaninglessly specific bit of trivia</comment></comment>


Google Cloud acquires Bitium - <AUTHOR> https://techcrunch.com/2017/09/26/google-cloud-acquires-cloud-identity-management-company-bitium/ <comment><USER2> Just want to leave a shoutout for CoreOS's dex[1] identity provider. If you need to hook up kubernetes or (any app that speaks oauth2) with SSO and get pluggable backends, I had it working with $EMPLOYER's LDAP infrastructure in 10 minutes.

It also works well with bit.ly's OSS oauth2_proxy[2].

        [1] http://github.com/coreos/dex
        [2] https://github.com/bitly/oauth2_proxy

<comment><USER3> Clickable links:

[1] [http://github.com/coreos/dex](http://github.com/coreos/dex)

[2] [https://github.com/bitly/oauth2_proxy](https://github.com/bitly/oauth2_proxy)

<comment><USER4> Keycloak from Redhat is also pretty good:

[http://www.keycloak.org/](http://www.keycloak.org/) [https://github.com/keycloak/keycloak](https://github.com/keycloak/keycloak)

</comment></comment></comment><comment><USER5> For those who (like me) don't know this company:

"Google Cloud announced today that it has acquired Bitium, a company that focused on offering enterprise-grade identity management and access tools, such as single-sign on, for cloud-based applications."

<comment><USER6> So something similar to Okta it seems.

<comment><USER7> I hope it's better than okta in terms of integration and usability.

I really really hate okta.

</comment></comment></comment><comment><USER8> Oh no :-( Was super happy to use it - I guess we have to start looking for an alternative before google turns it off or requires a Google Apps account to use it.

<comment><USER9> What did you like about it? What alternatives did you consider?

(I'm super interested in IDPs right now).

<comment><USER10> I've not heard of Bitium, but we're super happy with Auth0.

<comment><USER11> I don't think they are the same at all. Bitium is a single sign on solution for Enterprise. Your employee creates a bitium account and then you Grant access to their bitium account to all the necessary services. Like AWS, Dropbox, whatever. Allows you to automate the onboarding process and also easily manage and cut off access to employees when they leave the company.

I actually haven't used it myself. But I was in the same accelerator as them a few years ago in LA.

</comment></comment></comment></comment><comment><USER12> So.. what are they buying here? People, tech or partner relationships?

<comment><USER13> Souls of the customers.

<comment><USER12> Do they have a large enough amount of customers for that to be significant? (leaving judgements aside for a moment)

</comment></comment></comment><comment><USER14> Thank God it doesn't have to do anything with Bitcoins!

<comment><USER15> Thats the first thing that came to mind.

</comment></comment><comment><USER16> I'm curious if employees of Google acquisitions (real ones not acquihires) are thrilled or just worried about having to audition to a room of Googlers to keep their jobs?

<comment><USER17> (Google employee)

Why would the sentiments of "real ones" be different than "acquihires"?

First, there's actually a spectrum from 'acquihire' to 'real'.

Second, as a Google employee who joined via an acquisition that falls somewhere on that spectrum, I was thrilled at the time, I continue to be thrilled to work here, and I think that characterization is inaccurate, unfair and insulting to all the folks who work here including those involved in acquisition diligence.

<comment><USER11> In fact, the acquahires are the ones who got potentially millions of dollars as a sign on bonus. Very few "real" Google employees could claim that.</comment></comment></comment>


Germany sees 'overwhelming' sales of Hitler's Mein Kampf - <AUTHOR> http://www.bbc.com/news/world-europe-38495456 <comment><USER3> The article covers the why...it's not terribly surprising.

 _" While the Bavarian regional government held the copyright, reprinting of the book was banned. But the copyright expired a year ago."_

So, a book that was banned, is no longer banned, and...

 _" Mein Kampf (My Struggle) is an expensive academic text, and is being bought by libraries, schools and history academics."_

Basically, not much to see here. Libraries and schools are buying a book they should probably have, for historical purposes. The swell in sales is because they couldn't buy it before now.

<comment><USER4> Guess almost anyone who wants to actually read it just downloads the text.

<comment><USER5> You can also easily buy it in second hand bookstores.

Even in Germany. The book itself wasn't banned, only the reprinting was suppressed by copyright.

</comment></comment></comment><comment><USER6> I just finished reading "Mein Kampf" last month. It's not very good. It's about 20% racist rants. He talks about some legitimate grievances German had at the time and from their history, and military strategy. I didn't walk away feeling like Hitler was brilliant or anything like I did with Trotsky after reading "Terrorism and Communism".

<comment><USER7> Yeah, there are better books to spend your time on than those two...

<comment><USER8> I have a similar reaction when someone suggests Ayn Rand.

<comment><USER9> Except, you know, Ayn Rand's writings haven't resulted in genocides and mass human rights violations.

<comment><USER10> You could make the same argument that this is why it should be read. Especially with the right being on the rise across the west, there's still much to be gained in understanding how the "average man" was led down this path "last time". "doomed to repeat it", etc.

</comment></comment></comment></comment></comment><comment><USER11> > 'Not a runaway hit' ...

That quote is followed by explanations why being #1 on the non-fiction best seller list isn't meaningful. Maybe not.

But sane, non-extremist humans seem to have an unending desire for normalcy so strong that they delude themselves every time. They will grasp at it no matter how clear the signs. When Adolf Hitler himself ran Germany, he was supported by organized violent gangs, brutally suppressed the opposition, promoted and executed a program of vicious hatred and religious discrimination, built up an army, conquered multiple neighbors, and was an obvious psychopath ... could he make the signs more clear for everyone? ... yet UK Prime Minister Neville Chamberlain was widely supported when he said could negotiate with this monster and obtain "peace in our time" \- he really said that. Churchill, who called for opposing Hitler and preparing for war, was a political outcast. Leading Americans supported and did business with Hitler; the U.S. Congress blocked the President from supporting Hitler's victims and foes; boatloads of refugees from Hitler's terror were sent away from U.S. shores, many to their deaths.

So I'm not comforted at all by these claims that it's not a big deal. Either people will confront the fearful reality and stand up and fight the reborn monstrosities of racism, nationalism, and other prejudice, or those monstrosities will continue to advance unhindered.

If you wait to act until the evil people to announce they are evil and tell you their secret plan, like in the movies, you'll find yourself passively, quietly herded to whatever end they have in mind for you.

<comment><USER12> Hitler _told the world_ his 'secret plan', _in advance_ , with _Mein Kampf_.

And, unlike most politicians, he did his level best to fulfill the promises he made before coming to power.

So, it's hard to escape the conclusion that a substantial proportion of the German people understood and supported his program, no matter how evil he was and it was.

<comment><USER11> This isn't really true, unless that book from the 1920s spoke of some things generally. When the events were actually happening the late 1930s, multiple times Hitler said he was not interested in further conquests, promising normalcy and peace. Remember he signed a treaty with Chamberlain saying so, and also another with Molotov (which Hitler also violated). The Holocaust was hidden so effectively from the world that the Allied powers plausibly denied knowledge of it. Germans living in nearby towns denied knowledge of it.

EDIT: Some edits to qualify statements that were too absolute

<comment><USER13> > The Holocaust was hidden so effectively from the world that the Allied > powers plausibly denied knowledge of it.

I don't believe this assertion. The Holocaust was reported in great detail by those fleeing Nazi rule, and the Allied powers absolutely knew what was happening. The general population knew as well, if they were paying attention:

[http://www.telegraph.co.uk/history/world-war- two/11370972/Ho...](http://www.telegraph.co.uk/history/world-war- two/11370972/Holocaust-Memorial-Day-Telegraph-revealed-Nazi-gas-chambers- three-years-before-liberation-of-Auschwitz.html)

> Germans living in nearby towns denied knowledge of it.

While it's true that they denied knowing of the existence of extermination camps, it's an idea that has been widely rejected.

See for yourself - here's a video of German residents of Weimar being forced to tour Buchenwald after liberation. Do these people looked surprised and mortified to you?

[https://www.ushmm.org/online/film/display/detail.php?file_nu...](https://www.ushmm.org/online/film/display/detail.php?file_num=1923)

<comment><USER14> The large extermination camps were not in Germany, they were outside of Germany, built by Germans:

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

There were no nearby German towns.

Knowledge about them was not that widespread, many jews were brought there not knowing what to expect.

Buchenwald was not an 'extermination camp' like Auschwitz-Birkenau.

There were many concentration camps in Germany with many people being killed there. Many people knew about the Holocaust and what happened. But the biggest industrialised killing happened outside Germany in these extermination camps (over 3 million victims), and that knowledge was much less widespread. Some of those extermination camps were closed and deconstructed before the end of the war, for example Treblinka and Belzec.

<comment><USER11> From what I recall, U.S./UK/French/etc. forces liberated at least several camps, so those would have been in Germany (not France or Benelux, and not on the Eastern Front). Also, they compelled local Germans to tour the camps, so there would have been German towns nearby.

On such an important topic, it would be great if you could provide citations beyond Wikipedia (arguably the godfather of 'post-truth' information ...).

<comment><USER14> Again, extermination camps were not in Germany. Not one. US/french/forces can't have liberated anyone from those extermination camps, since their troops were not there. Only the soviet army reached the extermination camps - <USER2> camps who were still there and not closed earlier.

Concentration camps were also in Germany. Many. Sure the US/UK/French army liberated people from there.

The Wikipedia articles on these topics are actually quite good. Don't spread FUD.

[https://www.britannica.com/topic/extermination- camp](https://www.britannica.com/topic/extermination-camp)

<comment><USER11> It's sad that our discussion turned ugly; it's usually a good time to move on.

EDIT: Edited it.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER15> 85K sales in a country of 85M is not very interesting. I bought a copy in the US, basically because I could, and what a snoozer. I certainly didn't bother to finish it. Ditto The Communist Manifesto. 85K can easily constitute some institutional purchases (as others have commented in this thread) plus just some curious book readers ("What was all the fuss about anyway?"). I'm sure most libraries with a significant history collection had a copy already.</comment>


Niklaus Wirth: A Plea for Lean Software (1995) [pdf] - <AUTHOR> http://cr.yp.to/bib/1995/wirth.pdf <comment><USER3> I think one factor that leads to bloated, ruined software was missed... I don't know how common it is overall, but I have personally seen it ruin several very good products.

And that is the simple fact that employers want their employees to remain busy. If a piece of software reaches a point of exceptional quality - <USER2> developers working on it still have to fill 40 (likely more) hours a week to appease bosses. And so they do the only thing available - they ruin the product. This is one of the reasons that I think software engineers should, in certain cases, work on retainer. Domain knowledge of a specific product is very valuable, and companies routinely ignore this. They will shuffle an engineer off to some newer project and leave a more junior person to handle maintenance of the original project - and that junior person will have to fill their time somehow. This serves no one except for the shortsighted manager who determines their self worth by how many and how much they control their employees.

</comment><comment><USER4> Counterpoint: [http://www.joelonsoftware.com/articles/fog0000000020.html](http://www.joelonsoftware.com/articles/fog0000000020.html)

Or this soundbite from a later blog entry of his: "No matter how much it bothers you neat freaks, the market always votes for bloatware."

I wish he were wrong; it bothers me that 512 MB is now considered low-end for RAM in a smartphone. But I guess we just have to accept this reality of our industry.

<comment> loup-vaillant Much do disagree about.

> _[Hardware arguments]_

The problem is not really RAM or disk consumption. The problem is that starting up my OS, or my Web browser, or my word processor, or even Emacs for that matter… _is not instantaneous_. Our computers are million times faster than 30 years ago, and they still _lag_. Bloat certainly bears some responsibility: if we had less, cleaner code, we could have more efficient programs:

> _Efficiency comes from elegant solutions, not optimized programs. > Optimization is just a few correctness-preserving transformations away._

Jonathan Sobel [http://www.cs.indiana.edu/~dfried/dfried/dfried/mex.pdf](http://www.cs.indiana.edu/~dfried/dfried/dfried/mex.pdf)

\---

> _If your software vendor stops, before shipping, and spends two months > squeezing the code down to make it 50% smaller, the net benefit to you is > going to be imperceptible_

Short term benefit will certainly be imperceptible. But in the longer term, dividing the size of the code base by two will mean significantly easier maintenance, _including_ the addition of features. Losing 2 months now may very well gain you 2 years down the road.

\---

> _[Features]_

The problem with too many features is not that software is capable of too much. The problem is the lack of orthogonality. The same level of capability could be achieved with less, simpler features. But I guess that would imply trusting the user to unprecedented level. Like, letting her program her damned computer, like any Excel idiot is perfectly capable of…

<comment><USER5> > Like, letting her program her damned computer, like any Excel idiot is > perfectly capable of…

Excel is a far more advanced programming environment than any real IDE. There's less room for syntax errors, immediate feedback on changes, you can display and examine all intermediate computation steps…

Most important, the computational semantics of Excel spreadsheets do not include "accidentally delete all the user's files" or "accidental remote code execution" like most other programming languages.

<comment> loup-vaillant Agreed. But we now have an existence proof. There's no reason to believe it can't be reproduced.

</comment></comment></comment></comment><comment><USER6> Our software needs to scale and to have fallbacks when "infinite compute and memory" is not available. I used to detest when I was forced to make my code run on machine with 512MB, I'd argue that we are already charging them tens of thousands of dollars, why not just ship them a couple sticks. 2G would make the code 10x as clean. But I was wrong.

Our code needs to scale down as well as up, but it should do so in the libraries and the abstractions. That is why "big data" was such an issue, we weren't working on abstractions that blurred the lines between in and out of core and now we are.

If we turn from imperative to declarative and any-typed to algebraic the semantics remain consistent and it is up to the runtime to fit the code to the available compute and memory. Cache Oblivious was a good start, memory and compute oblivious is the next level. A Lisp with an RDD [0] feels about right.

[0] [http://www.cs.berkeley.edu/~pwendell/strataconf/api/core/spa...](http://www.cs.berkeley.edu/~pwendell/strataconf/api/core/spark/RDD.html)

</comment><comment><USER7> From the article:

"It led to Oberon, a language derived from Modula-2 by eliminating less essential features (like subrange and enumeration types) in addition to features known to be unsafe (like type transfer functions and variant records)."

Does anybody know what the argument about the safety of variant records is?

<comment><USER8> Wirth is a true believer in strong typing: marrying strong types to inflexible compilers

If I understand that quote, he means that variant records are dangerous because they make it possible for programmers to interpret data in different ways, thus bypassing the type checks of the compiler and invalidating the whole concept of strong typing. He mentions a little more about this in his paper on The History of Modula 2 and Oberon: [http://www.inf.ethz.ch/personal/wirth/Articles/Modula- Oberon...](http://www.inf.ethz.ch/personal/wirth/Articles/Modula-Oberon- June.pdf).

</comment></comment><comment><USER9> Are there any Oberon systems around to try/buy?

<comment><USER9> Doh! [http://www.oberon.ethz.ch/downloads/index](http://www.oberon.ethz.ch/downloads/index)</comment></comment>


Ask HN: Can FRS/GRMS Radio Be Used for a LAN? - <AUTHOR> Starting from the "I know nothing about this" point, and ignoring any legal restrictions:
Could one hook a wifi up to a FRS/GMRS Radio and create a network that would cover a few miles?
If so, it would seem something like this could be pretty handy in emergency/disaster situations and for plain old fun. <comment><USER2> If you want to extend a WiFi network over a few miles, you may be interested in Ubiquiti's radios [0]. These (and similar form factor radios from other manufacturers) are pretty common on rooftops for fixed point-to-point connectivity between sites. Only costs a few hundred bucks per station, depending on your range and bandwidth needs. My school district had them to connect all the schools (a few blocks apart from each other) rather than burying fiber. The other big use case is rural wireless ISPs, connecting farms to each other and eventually a POP with a wired internet connection.

They are point to point links though, things get a lot more complicated if your stations are mobile.

[0] [https://www.ubnt.com/products/#default](https://www.ubnt.com/products/#default)

<comment><USER3> Are the points fixed? i.e. 2 buildings or similar? Point to point links like this are probably not a good choice if you're going to be on a boat or something, but for a couple of buildings, Ubiquity is the tool for the job.

If you know specifically where your points are going to be, you can check out Ubiquity's link planner ([https://airlink.ubnt.com/#/ptp](https://airlink.ubnt.com/#/ptp)) to make sure that you'll get a clear shot from one place to another (it has to be line of sight and totally clear of obstructions).

</comment></comment><comment><USER4> If you are looking for speeds on the order of 0.0024 Mbps (2400 baud) then maybe. You could use amateur radio packet radio gateways and radio modems and set something up.

You could do it legally (in the US) by paying a token amount and getting a part 90 business license or possibly by using MURS frequencies instead of FRS/GMRS.

<comment><USER2> >paying a token amount and getting a part 90 business license

The spectrum is reserved for actual business use; "amateur radio, but with encryption" is not on the list of eligible use cases for a business band license [0]. If you're willing to break the law, wouldn't it be simpler to go ahead and transmit encrypted on the amateur spectrum than to submit a fraudulent application for a business band license?

[0] [https://www.fcc.gov/wireless/bureau-divisions/mobility- divis...](https://www.fcc.gov/wireless/bureau-divisions/mobility- division/industrial-business#block-menu-block-4)

</comment></comment><comment><USER5> I believe there is an overlap with amateur radio bands and some of the wifi channels (1-6?). Can't remember which, but you can basically boost wifi to amateur radio ticket-holder powers all within regs. There has been discussion around having your encryption key in your log book, making that available for physical inspection, while retaining encryption on the wire.

Check out HSMM Mesh[0] and similar projects.

-

[0] - [http://www.broadband-hamnet.org/](http://www.broadband-hamnet.org/)

</comment><comment><USER6> [https://news.ycombinator.com/item?id=15206567](https://news.ycombinator.com/item?id=15206567) (Sep 2017)

>superkuh: _I run two ubiquiti nanostation M900_ [$130 each] _at home on a 10m pole and in my car through the sunroof for a mobile data link._

</comment><comment><USER7> You also aren't allowed to have anything coded/encrypted, so it's useless for anything that requires privacy.</comment>


Ask HN: Is this idea worth pursuing ? - <AUTHOR>

I have an idea for a school. It would be a two year college level (B.A.S.) audio development and programming degree that would basically be 6 months of conventional audio industry training (recording,mixing,DAW,microphone theory,etc) and then 18 months of teaching programming (for audio application,plug ins etc). I figure this would make a great degree program and would be cost effective once implemented.I'm curious what others think. <comment><USER2> I'd do it

</comment><comment><USER3> Pardon the obvious question, but what jobs require this unique combination of skills?

<comment><USER4> I would assume that you would need this exact skill set if you wanted to be a software engineer for Cubase, ProTools, etc or if you wanted to write plugins for them.

<comment><AUTHOR> In effect the course would be teaching programming with an audio theme. I thought it would be a clever way for people interested in audio to learn coding/programming which is obviously a lot more encompassing than just writing plug-ins for Pro Tools (and can be used for other things other than audio). The entire cell phone industry utilizes these skills for example.</comment></comment></comment>


The Olympics didn't stumble because of Millennials. It stumbled because of NBC - <AUTHOR> https://medium.com/@brentonhenry/no-bloomberg-the-olympics-didnt-stumble-because-of-millenials-it-stumbled-because-of-nbc-17435801e8 <comment><USER2> Dupe: [https://news.ycombinator.com/item?id=12354365](https://news.ycombinator.com/item?id=12354365)</comment>