skysight-inc/HackerNews huggingface dataset:
The "Lisp" programming language covers a large territory, and often one needs to embed some sort of interpreter or language is a complex system. (Even our text editors contain sophisticated interpreters because we desire to customize them to such an extent.) Furthermore, a Lisp model is one of the simplest ways to build a powerful interpreter.

Consider the problem of being locked in a room that has a computer and all the manuals you need to program it...in machine language. How would you build a system of any significance? Could you escape the evil genie that won't release you until you write a program that solves Sudoku puzzles?

I know that I would escape the genie. I'd build a simple macro system and key it into the machine in binary (I've had to patch a machine's boot loader more than once from a panel of switches). Then I'd build a simple assembler from the macro system. After that, I'd build a simple lisp-like system because that's about the simplest language one can implement that does anything interesting, including writing a sudoku solver.

So yes, I'd be reinventing Lisp. However, I don't want to spend my life programming in some shitty pathetic system I wrote to escape from an evil genie. Why does it matter that Lisp is so easy to implement that undergrads often build Lisp systems as programming assignments? That doesn't make it some language of the future invented in the past; it just a simple to implement language invented in the past.

A thread I've seen here before is "well Algol 68 was a great language and we are not using it because ...<insert some conspiratorial reason>..." Well, Algol 68 is a great language from the past, but it's great not because it's a great language to program in--it's great because it manifested some of the earliest thinking about what features ought to drive the design of programming languages.

Today, people aren't locked up and given terrible programming assignments with no real programming language to use (well...maybe I should say this doesn't happen all that often). So why not just embed Lua. Places that I would have used Lisp 40 years ago are now the places I'd use Python or Ruby.

But what about the meta-object protocol? What about programs that need to write other programs? What about DSL's? Well, that's another subject. But the short answer is so what? These step up the power of the language one programs in, but not essentially the limits to what a program in your language is capable of doing. Yes, writing complex data structures in old FORTRAN is a big pain, but we aren't in that arena anymore. Writing complex data structures in C++ or Java or Go or Rust isn't a big pain anymore.
""The agent firmly believed Mandela was in the pocket of Communist Russia and was planning to incite the Indian population in the Natal region, where he was based, to rise up.""

Given ubiquitous surveillance and increasing state power, how long before average citizens start getting locked up because a single cowboy at an agency "firmly believes" they are a threat?
Have you used Cloud9? It sounds like exactly what you're looking for. If you have and didn't like it what was it missing? (I work for Cloud9)
So it is Rusted Rails? XD

Anyway I think the same could be applied to Ruby Core as well. As I have been calling a Rusted Ruby for a long time.

Though I am not sure if this is a good thing for other Ruby implementation like JRuby.
Author of that module here. I'm recovering from jet lag after flying back from redisconf, and hope to open it in a couple of days. Mostly cleanup and some documentation left.
Schneier 2006 essay is still illuminating: https://www.schneier.com/essays/archives/2006/05/the_eternal...
I'm British and back staying in the EU, but I think your post is unnecessarily condescending and incorrectly portrays your opinions as facts.

The immigration argument is about EU citizens which the Danish system can do nothing to stop/slow, and stopping the 'free-flow' of EU citizens is most Brexiters biggest desire from the campaign. The economic studies are definitely in Remain's favour, but economics as a field is very 'woolly', often wrong and more importantly does not resonate with a large populace who have seen living standards broadly stagnate since the last prolonged recession.

There are arguments for and against - the Remain camp don't have a satisfactory answer to people who are genuinely concerned over immigration or (albeit discretely) do not like immigration in their surrounding, and the Leave campaign have the consensus on the economic side due to uncertainty over post-Brexit state and agreements.
>If your coworkers are pouring into a product with severe defects in the technology or business plan, the best thing to do is start that conversation, not help them waste their effort.

I agree, and in that case 'the work' becomes exactly what you described. I never intended to imply that 'the work' always consisted of programming.

Also I'd say that flaws in the business plan are more important to address than flaws in the code. Shitty code has conquered the world many times over, I don't know if I've ever seen an example of good code doing the same. (see below)

>At the end of the day, if your leaders are making bad choices, talk about it and be ready to find a boss or organization you're excited to work for.

Except they all make bad choices, compared to the ideal code we imagined our future selves would be writing. See my comments on the big ball of mud. In the end the centre cannot hold, mere anarchy will be loosed upon the world[1], and all that code will devolve into a big ball of mud anyway. If the business plan is good the CxOs and sales guys will be happy, though.

So in my opinion, it can be better to stay at a company that is good enough, with colleagues and bosses that you know, instead of idealistically seeking some programmer heaven that doesn't exist filled with colleagues and bosses that you don't know.

[1] http://www.potw.org/archive/potw351.html
Yes proven is too strong of a word: "Have shown promising results".
Railway map for June 4th, the opening day of Gotthard Base Tunnel
>"The problem with this is that one cannot infer ethics from logic."

Of course you can. The problem I assume you're encountering is that you're not starting from irreducible basic premises. Thus, you can't logically resolve the already-existing and conflicting inconsistencies.

We are bombarded from birth with very illogical and inconsistent rules about how the world works. All of those things implicitly include "ethical" value systems. They're very hard to reconcile logically after the fact, simply because they're contradictory in nature and we have at that point heavily-invested into building mental models to navigate the world.
You weren't raised "in communism". You lived in a socialist country ruled by an organization which, depending on the country, might or even might have not called itself communist party. Communism might have been the proclaimed goal of that government, but in reality that was little more than an ideological slogan.
Wait... big difference between Googling, even a lot; and copying code. If you mindlessly copy code and it works, even once, without really understanding (e.g. could you teach the pattern/trick/concept/etc to a teammate?) you are a bad developer.

All things being equal, if you are a great Googler (or doc reader, or whiteboard question asker) that is an aspect of being a strong dev.
ICMP is a valuable diagnostics and control tool. Blocking it doesn't come without a cost.
Winograd Schemas
Police officer personal income varies wildly from $30k to $400k per year, quite unpredictably, in the US. Overtime pay, bonuses, double-dipping by being "on call" for Fire Services while actively writting traffic tickets, etc. There is much variability and many factors.
A developer playground for building real web apps fast, made by Fog Creek
Drones to Be Used in Rwanda to Deliver Blood and Critical Medicine in Remote Areas
Mind naming a single one?

I do not believe such a thing exist. Macros are the ultimate solution.
Hah. I was expecting a racier article.
Indeed. When all crime is property crime, you must have someone else's person or property present to commit a crime.

Whether your body is your property or not is for another philosophy debate.
It's been a while since I've looked at the papers or read the discussion surrounding it's inclusion into the mainline (so I apologize if I get some details wrong), but my understanding regarding the first point is two fold:

> That's just it, isn't it? What makes it clearly superior? (BTW, I'm not arguing it isn't.)

A) There are is a range of benchmarks which support that conclusion across various hardware and workloads. [0][1]

B) It is my understanding that the current day CFQ is a complicated code-base with various engineering improvements that don't have formal specs or theoretical guarantees, the improvements BFQ brings have theoretical underpinnings [2][3], at the least a spec other than "read the code to understand how and why".

> Looking for the best possible performance while ensuring reliability is a very big task and a very big responsibility not to be taken lightly by stereotyping kernel maintainers as some villains looking to make victims out or poor, well-intentioned, contributors.

It's definitely not my intention to villainize kernel developers (for example Tejun Heo appears to be highly supportive in [4]) - and I don't think Paolo is a victim here; but I do think that both casual and professional users are hurt by the end result.

> Also, arguing that contributors don't have the means to go through a public review process intended to result in better code doesn't really add much credibility to the original code, does it? (Not saying that's the case with BFQ either.)

I mean to the extent that you are talking about ripping out a sub-system for a new one, it's nearly impossible to really talk about having the means. The later is I presume a non-trivial task even for someone with a long track-record of good engineering and maintenance. Paolo is if anything also a very good engineer - but that's not even the case for a lot of academics. I guess from my perspective if an Academic provides you with formalized improvements + benchmarks + working code that's already really, really great, there is very significant reason to have engineers with a long track record of reliability who can review the specs, implement/verify/improve the code to get it up to standards, and to deal the with requirements/politics for making these changes. Again my understanding can be totally off here, I'm not a kernel developer - I am just a user who patches with BFQ (and CK for my personal machine) since given the current process improvements do not seem to be forthcoming.

[0] http://algo.ing.unimo.it/people/paolo/disk_sched/results.php

[1] http://algo.ing.unimo.it/people/paolo/disk_sched/comparison....

[2] http://algo.ing.unimo.it/people/paolo/disk_sched/description...

[3] http://algo.ing.unimo.it/people/paolo/disk_sched/bfq-techrep...

[4] https://lkml.org/lkml/2014/5/30/412
Debug-on-whatever
there is no work unless you take the hoe and break a sweat
I was into asm back when Amiga was around and lost the will and knowledge over time (mostly since programming is more of a hobby now, over the last couple of years). But, I had a strong desire to get into asm again and I did it a bit unconventionally. It worked, though.

Get a TIS-100 game and play it (that got me interested again). After that, I compiled simple(r) C programs with gcc and looked at their .S output. After that (along with that) grab a tool like ollydbg, x64dbg or (if you can!) IDA Pro and open up your favorite programs and modify them. Whenever you stumble upon an unknown (to you) instruction, look it up in the intel manual and google for it to see idioms people use. This process has worked really well for me, for now, albeit it feels like I'm cracking software or something like it (it's fun though). Along with that you can start writing asm blocks in your programming language of choice and/or full asm with any of the assemblers (flat, yasm, nasm, whatever).

Only thing you need to know beforehand are the basics of C and data/memory manipulation.
I can see the claimed advantages to what's proposed, but I feel like if the railroad diagram by RegExper could be reversed, that that would be a far more successful visual syntax for regular expressions. Then again, most of my regex-fu entails building a regex relatively close to what I want and then repeatedly throwing it at a local instance of RegExper and test strings until I have something which accomplishes what I'm looking for it to do. I'd definitely fall outside the "true regex superheroes" category.

Anyway, to simplify what I have in mind for us less-than-experts, it'd be neat if someone could put together a railroad diagram of a regular expression that would then be compiled as the regex itself.

That being said, I don't have the presence of mind right now to determine if two different regexes can result in the same diagram in RegExper. If so, that kinda thoroughly breaks my idea.
> the lazy

the same lazies who refuse to install linux i presume. The lazies who refuse to become experts and share your ideas of the world. This culture, too lazy to create a decent user experience- deserves to suffer.
libdill: Structured Concurrency for C
Fair enough I could have worded things nicer, I've seen a lot of very bad "facts" circulating about the EU leave/remain debacle and mostly it comes down to peoples feelings about sovereignty.

However, the Danish system does indeed stop and slow EU migrants.

As a British citizen living in Sweden, I can't go live over the bridge in Copenhagen unless I have a residence permit, which requires having a job, or meeting the required points.

Without a residence permit I cannot rent property or pay bills. I had to go through all the pain with my sister-in-law who is Estonian and studies business in Copenhagen. I'm fully versed on the difficulties of getting a residency there and it's certainly not as simple as being an EU citizen.

I've edited my first post to remove the comments about brainwashing as it's not productive to conversation.
Is there any way to turn compression off to reduce CPU consumption by the ZeroTier process?

Also, one big concern we have is using the standard/default discovery servers to run our network. Is there any guidance on self-hosting the discovery servers ourselves?

Lastly, can ZT assign IPs for us automatically using some kind of DHCP? Is there any documentation about how it works in case of network partitions?
Sounds like the bias blind spot: https://en.wikipedia.org/wiki/Bias_blind_spot
http://harmful.cat-v.org/software/c++/linus
"getting its activities aligned with the national interest"

And what about other nations' national interests? Doing your own interest is not renowned as a particularly ethical activity per se, you know. Before assuming that the evil done by an intelligence agency has to do with its failure to work in its nation's interest, you should ask yourself whether your own interests are legitimate and above other people's interests.
Me too. If they have to pay (sponsored content) to get things in front of eyeballs... that can't be profitable.
Every country on track to become a major super power enacts policies of protectionism at the beginning. America had one of the biggest. In fact, American independence spurred from imposed protectionism from Britain on tea. Later they imposed the same policies for their own benefit. It is only natural to do it.
Which ways? (I haven't tried Digg Reader.)

I feel like Feedly is okay. Free native apps and sync is nice. I wish it didn't auto mark read after 30 days though. I tend to do my rss processing in huge batches and miss stuff because of that.
All of Statistics, by Larry Wassserman (2013) [pdf]
I wish the UK would block American SV firms in a similar way, to be quite honest.
> In my experience, most people who are so in love with macros/DSL's work on solo projects.

Yes, but not because it's hard to cooperate when you use DSLs (it's in fact far easier to work in a team this way). It's more because scale of the projects shrink to such an extend that you don't need a team. One person can do with macros an equivalent of what a team of many people would do in a much longer time without macros.

> If yes, ask your coworkers what they think about your macros and it should be more obvious to you why macros/DSL's should be used much more sparingly than what you recommend.

Yes, I work in a team, and most often worked in teams. Yes, DSLs were always the greatest performance boost available. No, your beliefs about DSLs being somehow incompatible with team work are entirely wrong and unfounded.

> It's possible to not use macros and still keep the amount of code down to a reasonable level.

Mind naming a single viable alternative?
https://wiki.debian.org/grsecurity
FoA here - it is gonna be awesome #FTFTW :)
The main argument I hear from designers in favour of agencies are that there's a lot more variety since you work on a lot of different situations, and that for a less experienced designer there's more opportunities for learning from more senior figures.

The main things in favour of working at a company (start-up or otherwise) are more creative control and the opportunity to perfect something as there's one focus for a sustained period of time.

A lot of professions have this wide vs deep argument for people at the start of their career. I don't particularly buy that either one is particularly "better" over the long-run - capability floats to the top eventually.

I do think culture is key, and particularly how we react and fit into different cultures. I'd have said the size of the agency or start-up is more important - people who come from large companies sometimes find it hard to fit into a small organisations and vice-versa.
Ask HN: What are some good books on AI?
Looking for books discussing AI on a higher level and books focusing in current practices in the AI field.
> 1. Are there any other fields apart from programming...

The personalized feedback could be really good for learning math. You could develop an "async" model for learning, where the student works on a proof (on their own) and tutor checks in once in a while to give tips and add corrections.

Note for basic arithmetic and algebra, the computer could check the answers automatically, but for proofs and more advanced/subtle arguments, the tutor will serve as the "math compiler" checking the student's work. Here's the discussion where the notion of a "math compiler" came up https://news.ycombinator.com/item?id=11267877
struct NelsonMandela *nelson_mandela =
(struct NelsonMandela *)malloc(
sizeof(struct NelsonMandela));
free(nelson_mandella);
I like to think of myself as belonging to the tidy category, I value craftmanship, beautiful elegant code, what Torvalds would call good taste. I respect coding conventions. But sometimes, the manager comes in and says that the deadline was just tightened, and we need to release the thing earlier, so no more unit tests, some corner cutting ensues.

What's more, as my backlog keeps increasing, I can't build each component to the same level of quality without falling behind.

So I would say that it's not a black and white matter.
Just, why… Pass in a parameter if you need to set the state, no need to mess with the context.
This. If anyone thinks that the US lost Vietnam, they are kiding themselves. The US chose to go home. Was at the Vietnam Verterans' Memorial yesterday, and they list of dead is astounding. Quite sad, really. Regardless of the reason, we paid a dear price for our beliefs.
I was hired by my university for my first dev job.
Just to be sure no one misunderstands: these milkshakes are not the same that one would drink at McDonalds etc. They are like the shakes overweight people drink to lose weight before surgery, only that they are for gaining weight. These shakes have many different vitamins, minerals etc. the body needs and have many calories (1.5-2.0 kcal/ml), and yes that means sugar.

These shakes are also low on lactase because depending on the chemo patients can become intollerant to lactase (either through the chemo or antibiotics that are given). They are also low on fibre so its easier to digest.
> "A lot of those people came from disadvantaged backgrounds where army careers are the only ticket out of poverty."

They are not the only ticket out of poverty, speaking broadly these people have choices. What is happening is that the military provides, for some people, an attractive way to get out of poverty, because it comes along with a certain level of prestige. Change the level of prestige and you change the influx of new recruits.
FreeBSD runs every single driver on my laptop. And most common stuff has OSS drivers implemented for it, and Linux Libre has them.
PaperID: Drawing Functional Battery-Free Wireless Interfaces on Paper [video]
> How would you suggest a typical run-of-the-mill object-oriented programmer go about learning such a methodology?

That's exactly what's wrong with this thoroughly broken industry. They should not have learned this awful religion in the first place. Now it's much harder to unlearn and re-learn from scratch than learn it without ever being exposed to the wrong ways.

This methodology is far, far easier than anything OOP (the latter cannot even be defined comprehensively), and if you learn it first you can become productive much quicker than if you go the typical OO way.

And the most important feature of this methodology is that it's far more accessible. You don't need to be smart to use it. No need to memorise dozens of "design patterns" and all that. No need to invent complex twisted designs, trying to cram as many patterns as possible into a trivial task. DSL-based approach is very straightforward and mechanical, and can be executed by practically anyone who managed to learn how to read and write (i.e., around 95% of the population).
> So this doesn't affect the US's ability to "write" history.

It does, this thread (and thousands others like it) is the proof. The US are internationally much weaker than they were before the wars in the Middle East, and their international politics are now considered by growing amounts of people as illegitimate and harmful.
You're right. These were all good tips except for #10, where the "solution" is not thread-safe. Checking for null is better.
I propose an extension to DRY (don't repeat yourself) called DRO (don't repeat others), meaning if anyone has ever done it you shouldn't have to do it again.

Then it's easy to tell whether you're googling or developing: "am I writing something nobody did EVER /trying to improve the state of the art of xyz?"

If yes, you should understand deeply and "develop", if no you should be searching and changing variable names.

If you're writing a new framework - then by all means! actually understand the code.

If not, you shouldn't have to.
> ... but whenever I read the VPRI articles, I always feel there's too little code to play with.

That's the whole point of the STEPS project: Less code to play with ;)
Interesting that they chose AGPL as the license for their modules (as opposed to BSD for core redis).

It's good to see such an important project adopt a viral copyleft license. Hope this will help the redis developers to monetize on the huge momentum they've built in the past years.
"I wouldn't start a big internet company out there"

We're not talking about bars and restaurants.

Small internet companies in Silicon Valley all want to be big internet companies. To do that they need investment, ownership, freedom to transact contracts and appoint employees at will. You can set up a small startup in somebody's garage anywhere in the USA, but you are unlikely to scale to a billion dollar company. Few get to be unicorns, but those that do drive the cycle for everybody. They're enabled at the early stage by having near-zero regulatory compliance requirements, and nearly zero people that they have to convince that they have a genuinely good idea. This is not the way business is done by foreigners in mainland China.