skysight-inc/HackerNews huggingface dataset:
> sometimes I feel that it is not a true lisp.

That feeling may be the result of some questionable syntactic design decisions in Clojure.

Hickey went over Lisp syntax and tried to remove parentheses wherever possible. (It was the hip thing, PG's Arc did it, too, which may be where Hickey got it from.) As a result, you get a sub-par editing experience —generic sexp-based structure editing doesn't get you as far as with a Lisp— and diminished readability once you get above three omitted pairs of parentheses in a row.

On the other hand, Clojure arbitrarily mandates a secondary kind of list literal in some places of the syntax, again making Clojure harder to write and edit. I don't even see a readability benefit, but of course YMMV.

TL;DR: Clojure syntax is a "complected" derivative of Lisp :-)
What a wonderful name for a programming book.
Maybe flip the thinking and treat it like insurance. If you don't give to someone who needs help and thereby prevent them having a chance to contribute, they perhaps won't ever contribute. But if you give that child a bit of a leg up and help sort their situation, perhaps they won't take or break your stuff.
Ask HN: Is it too late for a late 30s person to start learning coding
I am in my late 30s , i learnt basic C programming in school some 15 years back , means i picked up some basic programming concepts. I work in Software product company in a managerial/coordination role. I did make a few failed attempts to start with Python on Coursera , but could never finish the course due to work commitments .

In each attempt I manage to reach the basic classes(loops,while,functions etc) and lost from there, i am not able to cross that level and go to intermediate topics. What is the best way to cross that level and move to intermediate concepts?

If my objective is to learn coding+other basics so that i could build[1] and maintain my ideas[2] , how should i go about and what should i learn?

[1]- A quick Proof of Concept and deploy a working model to demo
[2]- Ideas meaning some Webapps/SaaS app
Elasticsearch 5.3.0 released
How to be Happy Always
It may be paranoid to believe it's fully and consciously intentional, but it also comes down to general tendency and mindset. Particularly in Chrome, developing a browser for a search company, with search in mind, and investing a lot of time and energy in making the browser "good at search" and integrated well with search, will naturally lead to a search-first mindset in developers, whether intentional or not.
If you think mech keyboard prices are outrageous you should see what nice keycaps will run you. I'm pretty sure they're worth more than gold, by weight.
So which VPSs are good for privacy? We all know DigitalOcean, AWS and Linode as simple to set up and use VPSs, but does anyone have any recomendations of VPSs based on their terms? I currently use DO for my VPS/VPN, but i've seen people voice concerns about them in the past. Is there a list of 'most free' providers?
Ah, the "well the other news is fake news so this fake news is okay" approach.
Genuinely made me chuckle. Hats off to you sir!
> Parse error: implicitly the author intended "Java needs X, meaning you can't Y in Java".

Except the second clause does not generally follow from the first yet is presented thus. You can't Y in Java because Java very specifically decided not to support Y.
With that out of the way, I’d like to share some of the traits and characteristics that you can expect from me and my team as we build out our hair loss cure website for everyone’s benefit.

http://hairlosstreatmentsreview.net/
Great example.

It also seems to have been the case that when he became Abbot of his monastery in 1867 he ceased research.
Logstash 5.3.0 released
Was about to say, this gets posted every few months.
Google releases a new site detailing it's support for open souces
> You don't need an interpreter for that.

For what?

> You don't need an interpreter for that. SBCL (as does other compilers) always compiles an expression prior to executing it, even when it's code as data passed to EVAL.

True, but that's not what a Lisp interpreter does and provides.

I was talking about the difference between an interpreter and a (possibly interactive) compiler. The interpreter works over source code as Lisp data. The compiler does not - it does not matter that the compiler compiles individual forms. At runtime the code is machine code. With an interpreter the code is Lisp data.

Think about it: What difference could that make, if the code gets actually executed by a real Lisp interpreter?
...and yet, here we are, where most people who wish to contact me will send me a message on facebook before they'll send me an email.

It's not fragmentation if there is a single one that the whole planet uses.
Global and Chinese Touch Panel Industry in 2017 Market Research Report
Today's Smalltalk – A Second Look at the First OO Language
How do you turn Putin saying "I agree with [Stein], on many issues." into "Stein supports Putin"?
I've read similar complaints to this before, yet when I look at the documentation for WebExtensions it seems like there's plenty of scope to do what's wanted.

In this case, what is wrong with the history [1] and omnibox [2] APIs?

[1] https://developer.mozilla.org/en-US/Add-ons/WebExtensions/AP...

[2] https://developer.mozilla.org/en-US/Add-ons/WebExtensions/AP...
I think jess is on the money here. The complexity in linux containers vs zones show up in two ways:

1) the linux kernel container primitives are implemented in ways that are more complicated. for example in zones pid separation is implemented by just checking the zone_id and if the zone_id is different then processes can't access each other. this also means that in zones pids are unique and you can't have two processes from two different zones with the same pid [with the exception: i believe they may have hacked something in to handle pid1 on linux].

similarly, in zones there is no user mapping if you are root inside the zone you are also root outside of the zone. the files you create inside a zone are uid: 0 and also uid: 0 outside the zone.

if you look at how device permission is handled in linux we have cgroups that controls what devices can be accessed and created. while in solaris zones they use the existing Role Based Access Control and device visibility. so inside a zone you can either have permission to create all devices (very bad for security) or create no devices. In zones access to devices is mediated by whatever devices the administrator has created in your zone.

in zones there is no mount namespace instead there is something that is very similar to chroot. it is just a vnode in your proc struct where you are restricted from going above. zones have mostly been implemented by just adding a zone_id to the process struct and leveraging features in solaris that already existed [i guess the big exception would be the network virtualization in solaris] while in linux there are all these complicated namespace things.

this complexity means there are probably going to be more bugs in the linux kernel implementation. however, because you don't have as much fine grain control this can also create security bugs in your zone deployment. for example i found an issue in joyent's version of docker where you could trick the global zone into creating device files in your zone and these could be used to compromise the system. under a default lxc container this would not be possible because cgroups would prevent you from accessing the device even if you could trick someone else into creating it. you also have to be careful in zones with child zones getting access to files inside the parent zone. if you ever leak a filesystem fd or hard link into the child zone from the parent zone then all bets are off because the child is able to write into the parent zone as root. (i believe this situation was covered in a zone paper where they describe the risk of a non-privileged user in the global zone collaborating with a root user in a child zone to escalate privileges on the system)

2) because all the pieces are separate in linux then something has to put it together and make sure all the pieces are put together correctly. like i wouldn't trust sysadmins to do this on their own and luckily there are projects like lxc/lxd/docker etc that assemble these pieces in a secure way.
All kinds of therapist.
Society gets older and needs more treatment, especially with the current livestyle. And while some work might be done by robots, it needs at least strong KI to replace a good therapist. Also, teachers, artists, ...
Infographic of How  to Grow a Business to $100M
As an outside observer, initives such as Obamacare at least give a perception that's those less fortunate can get decent care. It's not dealing with automation, but it's dealing with a problem faced by those in a low socioeconomic bracket.
I have a PocketCHIP, and it's awesome, but the game controls are terrible unfortunately.
Equip My Lab Student Competition
Get a project. Having a concrete and useful task at hand is the number one motivator to find out about the features of any given programming system and stay using them. Begin simple. Keep it simple. Good luck. :-)
IIRC the "strange year at uber" article was one of the most up-voted articles this year.

People on here are always willing to read stories with substantiated claims or new information. However, yet another article pointing out how there is a general gender imbalance in the workforce that matches college CS graduation rates is likely to fall flat.
Angular Native. Review and Comparison
Analysis of PascalABC.NET Using SonarQube Plugins: SonarC# and PVS-Studio
Language is a set of tools. In the same way it can be annoying to watch someone hammer in a nail with the end of a wrench, it can be annoying to watch someone sort through their linguistic toolset, ignore the finely-honed implement meant for the job and grab another.
I'm talking about the trend of build-your-own frameworks, not the software itself. Heck, there are enough sites out there still using Zope, MASON and Aolserver.
PICO-8 is not by the people behind PocketCHIP, it's just bundled with it.

PICO-8 is available for desktop platforms as well, it is not open-source, and there's a 3D version as well, called the Voxatron.

Both are really cool projects, but not open-source software.
You might be interested in https://worldbrain.io
This isn't quite correct - the iPhone slips down a rung after a year and becomes less expensive. Same phone lower price. Sure, the top tier gets refilled, but it isn't the same item.
Sticking to a Western context, this is a pretty fundamental distinction between the US and the EU in the understanding (and, crucially, in the implementation/enforcement) of human rights.

I can't pretend to do justice to the long history of the concept, but we can at least say that for the latter, privacy has been considered an important human right since at least the UN declaration of 1948. This has been carried over into European law, see all the iterations on EU data protection laws. The UN statement is Article 12: "No one shall be subjected to arbitrary interference with his privacy, family, home or correspondence, nor to attacks upon his honour and reputation. Everyone has the right to the protection of the law against such interference or attacks."

For the US, this dimension of human rights did not deeply inform policy. Here discussion around a "right to privacy" really began in a different context with Brandeis and a right to be "left alone", largely meaning from the press. Many of the cases that inform privacy law in the US are oriented towards such scenarios and do not necessarily translate well to the context of data. See http://groups.csail.mit.edu/mac/classes/6.805/articles/priva.... There is rather a discussion on the accuracy of financial data about a person that stems from credit reporting.

The other area that would have to be discussed is of course wire-tapping laws, but leave that for another day... In sum, the question of a "right to privacy" has a long tangled history even just within the West, but is decidedly a thing in the EU.
Depends on what you want to achieve? When diffing source code, comparing lines, without caring too much about the broader context, may be a good-enough proxy of what you ideally want to compare, which is the program’s logic. But for the latter, you would first have to execute both programs, and diff their parse trees.

Likewise – and perhaps most notoriously – simple line-based diffing does not suffice for diffing prose (natural language text), where knowledge of the broader context, markup (semantics in punctuation and document structure), and paragraph order are crucially important.

Besides the rudimentary one, used by Github (https://github.com/blog/1784-rendered-prose-diffs), I do not know of any production-ready prose-diffing implementation.

But here is an interesting proof of concept: http://www.gigamonkeys.com/tmp/test-diff.html
Nope. Development costs $1B+ by itself, as you can see from my source or your link. Marketing spend is on top of the R&D cost.

I agree that we should limit drug advertising, but that Global Data report is off by an order of magnitude. Total advertising for Rx drugs is $15B to physicians and $5.2B to consumers.[1,2] The discrepancy is due to several factors.

First, the Global Data report lists combined sales and marketing. Sales includes essential logistics needed for us to get our drugs, so you can't really say that marketing alone costs more than R&D.

Second, most marketing is for over-the-counter drugs, for obvious reasons. Tylenol, sold by Johnson & Johnson, has an enormous marketing budget, but it's not exactly the kind of drug that forces people to buy insurance.

Third, drugs only account for 40% of J&J sales--their scary marketing budget includes lots of advertising for non-pharmaceutical products.

[1] http://www.pewtrusts.org/en/research-and-analysis/fact-sheet...

[2] https://www.statnews.com/2016/03/09/drug-industry-advertisin...
This looks interesting. Is there an English version. Sorry if it's obvious, I'm tired after a long day on my feet.
How to Use Control Flow Flattening When Protecting Your JavaScript App
google hipsters downvoted me
Updated with Swift 3.1

Previous discussion: https://news.ycombinator.com/item?id=10676655 (1 year ago, 59 comments)
That's the "likely" section addressed. Safer and more fuel efficient is still correct (unless it's a VW).
what you wrote does not make them sound worse than the two main parties in power.
> When someone has to download a mod for your program to experience it better, you're doing it wrong.

I disagree. Your program being moddable and letting people customise their experience is a good thing. We're not talking about core features here, just customisation that varies from person to person.
Alexa+vs+Siri:+Hotel+War+Begins
I would guess it was flagged because it didn't have much substance and just wildly lashed around at things said here - claiming it was predictable HN would say those things. Yet every one of those points has been followed up with opposing opinions so the post is trying to paint the HN community as one-sided when it clearly isn't.

So it seems therpe1 is mainly upset that critical commentary takes place here, which is the almost lamest possible thing to complain about. The only thing that would have made it worse is to put something in like "Edit: bring on the downvotes, you know I'm right".
The best advice I can give is to use the Jenkins plugins wherever possible. Jenkins can do almost everything either natively or via its extensive library of plugins. In the same vein, always use Jenkins version control; our old build scripts used to shell out to svn.exe and run the checkouts that way, into a static folder. This meant that we couldn't run builds in parallel, and if an SVN operation were interrupted, the working copy would lock and would need to be manually cleaned up.

For complex builds, write a script that is kept in the root of the project, then after checkout, simply do ./build.sh. We used to keep all our build scripts in a separate repository which would have to be checked out onto the build node in preparation; invariably, the scripts never got updated. This way, the product and the steps required to build it are kept together, and are very unlikely to come out of sync.

Use labels as much as possible; I have our cluster set up so that builds that require dependencies are bound to label '<product>' and I add/remove the labels from the build nodes as the dependencies are added. This also means that if one node breaks and is unable to build <product>, I just remove that label and Jenkins will stop scheduling builds on it. It becomes much easier to manage than restricting builds to hostnames.

Most importantly, ensure you can always build from a fresh checkout. I cannot tell you how annoying it gets when a build fails because some tiny thing is out of alignment on a fresh build node.

I also recommend imaging your build nodes so they're quick and easy to deply, and BACK UP YOUR JENKINS CONFIG! :) When I came back from my Christmas break, it was to discover that the Jenkins server I had worked oh so hard on had been inadvertently trashed by one of the guys on my team; the disk had run out of space, so he'd remoted onto the server, gone into the Jenkins folder and deleted everything older than a month.

He hadn't thought to restrict this to the build artefacts folders. Basically lobotomised the server, and that was when we discovered we'd been backing up the build NODES, but not the MASTER itself! I was able to salvage some of the config and rebuilt the server on the latest version of Jenkins. As a result, the Jenkins folder on the master is now an SVN working copy with all the config files under version control, and a scheduled task runs daily to commit the changes.

It has been a very painful road to get this thing stable! It would be considerably easier if people weren't trying to nuke all my hard work while my back was turned...!
Nobody mentioned unikernels yet? It's a bit unrelated to the containers discussion in this thread, but I thought I'd mention it anyway. They let you create an operating system image, which only includes the code you need. Nothing more, nothing less. This improves security, because the attack surface is reduced.

It makes a lot of sense too me when I think about how cloud computing works. Most of the time an operating system container, zone, jail, VM... is booted just to run a select number of processes. There is absolutely no need for a general purpose system. I think unikernels could really shine in this area.

MirageOS is a project that lets you create unikernels. It's written in OCaml, so it's interesting in more than one way. MirageOS images mostly run on Xen, by the way.

[1] https://en.wikipedia.org/wiki/Unikernel

[2] https://mirage.io/
It's true, in domains such as vision, humans excel. But the implementation of computer vision is an open door for much more powerful robotic applications to emerge, in industry, transportation, medicine, administrative work and caretaking.

Making vision cheap and effective for computers will help humans not need to do such backbreaking work as picking fruit (which was protected from automation because it depended on vision and dexterous manipulation). In agriculture, computer vision could lead to plant-level care, reducing the need for chemicals.
OK, I'm confused by this. This exact article was posted on Nautilus[0] on Apr 08, 2014, by the same author. It was also submitted[1] by dnetesn 786 days ago.

The same story was posted[2] 2073 days ago, although from a different source[3].

But my confusion is why there's a different date on apparently the exact same story from nautil.us[4].

Then I see the extra "-" in the URL. Did you see it?

So nautil.us is recycling exact copies of earlier stories, but changing the URL minutely, and putting a new date on it to pretend it's new.

I didn't know they did that.

========

[0] http://nautil.us/blog/found-the-worlds-favorite-number

[1] https://news.ycombinator.com/item?id=8979719

[2] https://news.ycombinator.com/item?id=2802672

[3] http://www.npr.org/sections/krulwich/2011/07/22/138493147/wh...

[4] http://nautil.us/blog/-found-the-worlds-favorite-number
In praise of a Basic Income
DeepstreamHub – a faster Firebase with an open core
These analysis passes also work just fine with scoped locks, using the SCOPE_CAPABILITY annotation (see the included mutex.h example).

Scoped locks by themselves cannot statically rule out the same kinds of errors that this analysis can, in any case. Even if you only use scoped locks -- an obvious (but trivial) example is when you have a lock held but then attempt to take a lock again in some control path (perhaps through a recursive or deep call stack, or, in your case, calling another member function which also takes the lock unconditionally.) This is a trivial case for this analysis to detect but std::lock_guard<> alone will not save you.

The annotations also serve as useful commentary and 'guiding tools' for refactoring as well, in my experience. If you annotate a function as yielding or taking a lock, and later change this -- the compiler will warn you that your annotation is out of sync with the implementation. In practice I find this quite useful to keep code clean, but it also obviously helps tell you if your change is correct, too.

I normally just turn this analysis on in Clang, because IME it has very little negative effect and is very useful in practice.
Show HN: Building an SMS Bot for Slack Using Serverless
> It's nice to look at

I don't think it is -- it's full of the kind of features (complicated condition expressions, long chains of elses, hard-coded numbers) that, when I find myself writing them, suggest that I'm approaching the problem in the wrong way, because previous experiences make me associate that kind of code with lack of generality and corner-case bugs.
I second Brave! It's pretty fast, they have some smart security people on board to prevent them from making dumb mistakes (though that doesn't mean there can't be security flaws, obviously).

Best of all, it's open source: https://github.com/brave/browser-laptop/blob/master/LICENSE....
This reminds me of Bertrand Russell's In praise of iddleness [1] (which it quotes).

[1] http://www.zpub.com/notes/idle.html

Update: Previously appeared at HN through the original publication at vox.com, though it got little discussion.

[2] https://news.ycombinator.com/item?id=12951747

[3] https://news.ycombinator.com/item?id=13000941
spray on could work well for creating solar panels on another planet don't you think? especially if you source the silicon locally.
I was amazed this thing even existed - clicking on the link and I am presented with a 1960s style Telex machine with what appears to be a bakelite casing and 1981 keyboard. All for just £499.

Perhaps it is just me, but couldn't you use a normal laptop (even a cheap one!) and turn Wifi off if you don't want distractions?

Am I missing the market?
Technically Common Lisp is optionally typed. You can add static typing if you feel like it, and it can give you a significant performance boost when you do.

Fortunately, I don't have to bother with it most of the time since the amount of code that is time-critical enough for it to matter is very small.
Thanks, the M was the missing link :)
Not everyone has container source code - or it might be impractical. If you run RabbitMQ in your container would you want to build that from source as part of your build process?
if a Common Lisp compiler sees a call to cl:aref then it can inline it, without using static flow analysis or similar...
So first step is containers as a service. And then this container can run as a unikernel as an implementation detail. Did I understand it correctly?