skysight-inc/HackerNews huggingface dataset:
Ed is not the villain, and the agreements are not necessarily illegal. There is a lawsuit pending on the matter from the allegedly-affected artists. There was a DoJ investigation that was settled out of court. [0] You'll note that the settlement specifically refers to anti-solicitation agreements; i.e., the involved companies would not actively cold-call each others' employees. A lot of people seem to pretend that these agreements prevented employees from crossing over companies after they initially expressed interest, which they did not.

Such agreements are standard practice in many industries, and if they're actually illegal, it's due to a technicality in a law with which few are familiar (anti-trust legislation), not due to some naturally-apparent moral imperative. It's obvious that the executives involved did not conduct their actions with the intent of hamstringing employee growth, but rather with the intent of maintaining stable operations and keeping turnover low. It's completely reasonable to understand this as a normal part of running a business, especially considering that such agreements are common across industries.

Don't fall for the hyperbolic narrative from artist's trade outlets who are trying to manufacture rage to serve their own interests.

[0] https://www.justice.gov/opa/pr/justice-department-requires-s...
Integrity of JavaScript Apps
It sounds like they danced around the question when asked directly by someone not in the company.
That depends on what your "full scale loads" are.

SQLite can easily scale out to read workloads that can consume an entire (large) machine, especially when using its mmap'd IO modes.

However, it doesn't have good concurrency for writers and concurrency for readers also drops when any writer is large enough to spill the cache.

Writer concurrency can be managed down by building a custom write pipeline in front of it but that is not trivial. ...and, when you do that, you then have to manage your own consistency and Read/Modify/Write hazards so you're no better off than any of the first generation NoSQL stores. If you think about your data model up front then that might be OK, otherwise it's a very difficult road.

An important other difference between SQLite and other database engines (RDBMS or otherwise) is that SQLite is in-process rather than client/server.

This has a lot of implications for the latency costs associated with data access. In particular, SQLite allows you to mostly ignore query round-trip times: because there aren't any. If you change your engine to something that's not in-process you suddenly start having to think about batching and prefetching for things that might initially look like a simple point query. This can have a serious performance impact and result in profound refactoring requirements for your app. Things that were previously running at several 10s of thousands of point queries per second and complete in nanoseconds now require 10s of thousands of sockets and take 10s of milliseconds.

For my part, I've built production web apps with lots of users on SQLite and the database engine was the smallest part of our performance work. Reducing garbage generation in the render pipeline and moving query generation out of the request path were where we got most of our performance gains.
I don't do it with code, it's a feature of this product: https://www.vandyke.com/products/securecrt/
I haven't been there in just over 10 years but as I recall most professionals work in Hamilton or Toronto.
If you run a small business and don't need a full blown windows setup - nor want to figure out linux it's perfect. We have folks who come in and do work and all they need is chrome.

You can imagine slightly more complex work requirements, but remix (and chromebooks) fit the bill perfectly. And most importantly, they are cheap to setup and manage.
Session logging with this client: https://www.vandyke.com/products/securecrt/
"The awful thing about life is this: everyone has their reasons." - Jean Renoir

Right out of school I worked at a company that builds deep packet inspection hardware and it seems like a dream job: good pay, smart people, interesting problems, reasonable schedule. Too bad about the product though.
Mozilla once was
Previous discussions:

140 days ago - https://news.ycombinator.com/item?id=10886979

144 days ago - https://news.ycombinator.com/item?id=10861334
A Glimpse into Onbashira, the Dangerous Japanese Log Moving Festival
The IMF primarily.

Yes the US takes part in that, but the organization is the IMF.

The IMF partially realizes their role in this, but its more of an outcome than a conspiracy. They've commented on that book in an interesting non-denial, basically saying that the GDP of the countries they've helped/subjected-in-a-giant-conspiracy is so low and such a small fraction of the IMF budget that it doesn't make sense that they would put much effort in it.

In any case, its just the terms of their contracts. Country can't pay, country must raise taxes or expropriate goods, or find natural resources.
The only numbers I see are 1 and 0. Surely, you don't mean we should redefine 1 and 0!? :P Those numbers are hardly magic.

The function comment header describes the purpose of the major variables used in the function.

While the variables names may seem cryptic, they appear of a consistant format (within the function) so I bet the larger codebase is equally consistent in their usage -- and adapting to the codebases convention would be made easier.
Yes. Salary is generally lower than Toronto I think. But there are a lot of companies in this area.
They like to do things where they offer you something with a yes/no option but don't explain that it's an offer (no call to action or question) and put the price of the service in the smallest text possible.
>a judge could (and should) void that part of the contract.

There's a difference between voiding a contract that no longer obligates people, and voiding a contract to make actions taken under it illegal. I'm not sure there's good precedent for the latter.

>There isn't a contract between the adware scammers and e.g. Target or Wikipedia.

They're not touching Wikipedia, they're running on the user's computer and manipulating their local served page of Wikipedia. I don't see why anyone else would have a case.
Do you have the eBook version on iTunes, Amazon etc?
Ways You Need to Tell the Browser How to Optimize
At Google I/O a couple weeks ago they said they had miniaturized the Soli chip and they demoed a smartwatch with the chip in the wrist band, as well as a gesture-controlled speaker. They announced the Soli beta dev kit coming "next year". You can watch starting around 21:40 here https://www.youtube.com/watch?v=8LO59eN9om4
Android is surprisingly well tuned even out of the box for trackpad/mouse usage. And many interfaces are already tablet-optimised.

I'm not saying it's amazing, but it wouldn't take that much work for it to be usable.
Yes. They're that high in that pay bracket.
Are there any particularly good books (including fiction) which you've read in the last year or two which you would recommend? (and if so, which?)
Building Accurate Visual Diffs
> why isn't sqlite able to handle full scale loads?

The same reason an Access database doesn't scale. Because it's not designed to.

It doesn't have a complex query optimizer. It isn't designed to use tremendous amounts of memory to optimize execution speeds with a well-managed cache. It isn't designed to be clustered or sharded or partitioned or replicated. It doesn't have GIS or geometry functions. It doesn't support point-in-time recovery. It doesn't support many ANSI SQL functions and features. It's capable of being thread safe, but limited to a single process.

The real limitation that people tend to run into, however, is that writing to the database locks the whole database. You can switch to WAL mode which allows reading while writing, but you never get more than one writer and by default writing blocks reading. In other RDBMSs, you have table locks, page locks, or row locks. You can have multiple writers going on in multiple connections managed by multiple processes with multiple threads, and reading is (in general) not blocked.

Furthermore, databases for high load applications often support multiple, concurrent connections from multiple discrete applications. You might have 3 different web servers all connecting to your SQL servers in the background. You might have a main application and a reporting application. You may need to ETL data from the database to another database for another purpose. You can't do any of that with SQLite.

Hell, I support an app that has six different application servers that connect to it (two main app servers, one secondary app server, two "task" servers that run long execution processes, and a reporting server). And that's just the app itself. There's about a dozen ETL tasks that run against the DB for other applications.

Sure, there are some third party add-ons that can do some of these things (SQLitereplica, SQLitening) but I've never seen anybody implement them instead of moving to a heavier RDBMS, which is likely to be better supported.

> Can't someone change the implementation details so it can work at scale and leave the interface the same?

They could, but then it wouldn't be a lightweight RDBMS anymore. Making a system scale takes more complexity, and therefore more code.

> Where is sqlheavy?

Oracle, MySQL, PostgreSQL, MS SQL Server, DB2, Firebird, Cassandra, MongoDB, etc. With varying degrees of heaviness.
I recently hacked at sqlite to support some features I wanted (being able to retrieve same named columns from different tables in jdbc result sets and implementing some mysql functions)

and it was not fun. I guess maybe it says something that as someone with very limited c exposure I was able to get the column hack working in a night, but honestly following the code around was a chore. Lots of conditionals in a single function meant jumping back and forth a lot.

Also, as a primarily java programmer, I find what c programmers think is a descriptive variable name is a lot different than what I think is a descriptive variable name, but that's a personal issue.
More generally, not knowing how a company makes money should be a huge problem for someone candidating.

Given the choice, a company with a sane business model has less chances to go under (== not going through interviews again in 6 months), and it should also give an idea of how much and in which way the comapny has any chance to grow.
Architecture can heavily affect how serial your process is. By randomly throwing agents at a single ref you can easily turn parts of the process that can be done in parallel into a serial process.

Beyond that, throwing massive concurrency at an inherently serial process tends to give you worse performance vs just recognizing that it's a serial process and not trying to throw concurrency at the problem. This isn't just about fancy concurrency primitives like agents or STM, I've seen plenty of hobby games that ran terribly because they threw concurrency at the problem without analyzing it first, but ended up completely serial because of critical sections in the form of Java synchronization blocks.

As an example of concurrency that you would probably have in every single player game: game logic feeds into render logic, but render logic shouldn't be changing the state of the world. So you can be performing the game logic of game loop #N+1 while the render logic of game loop #N is running. Also, usually, when saving the state of the game all you need is a consistent snapshot at the time. Immutability makes both of these easy.

The rest depends upon the features and design of your game though. If you aren't going to actually try to analyze where you can benefit from concurrency, you're better off not just randomly throwing concurrency at the problem.
Oh my gods! This is what passes for an answer to "identify a palindrome"? All of that?? 59 lines to ensure a string is equal to itself reversed (hint-hint, nudge-nudge)? Why?

'use strict'; // avoid ambiguity and sloppy errors

/**
* Tests whether or not a given string is a Palindrome
* @param {string} stringToTest - the string to test.
*/

function isPalindrome(stringToTest) {
var start = 0,
end;

// make sure we have a string.
if (typeof stringToTest !== "string") {
// throw if we didn't get a string
throw new TypeError("isPalindrome() expected a string, but got " +
Object.prototype.toString.call(stringToTest) + " instead!");
}

// normalize string by lowercasing and removing non-word characters
stringToTest = stringToTest
.toLowerCase()
.replace(/[^a-z0–9]/ig, '');

if (stringToTest.length === 0) {
// warn if we have no valid characters to test
console.log("No valid characters to test, treated as empty string" +
"\nStack: \n" + new Error().stack);
return true; // an empty string is a palindrome.
}

end = stringToTest.length - 1;
// Compare characters from outside in. Stop when we get to the middle.
while (start < end) {
if (stringToTest[start] !== stringToTest[end]) {
return false;
} else {
start++;
end--;
}
}

// if we get here, it's a palindrome
return true;

}

// tests (should be in a separate file using a test framework)
console.log(isPalindrome("something that is not a palindrome") + " = false");
console.log(isPalindrome("something that is \n not a palindrome") + " = false");
console.log(isPalindrome("race \n car") + " = true");
console.log(isPalindrome("") + " = true + warn");
console.log(isPalindrome(" ") + " = true + warn");
console.log(isPalindrome("1221") + " = true");
console.log(isPalindrome("0") + " = true");
console.log(isPalindrome("racecar") + " = true");
console.log(isPalindrome("No 'x' in Nixon!") + " = true");
console.log(isPalindrome("~~!~!~") + " = true + warn");
console.log(isPalindrome("Momsie") + " = false");
console.log(isPalindrome(12)); // blow up
console.log(isPalindrome(undefined)); // blow up
console.log(isPalindrome(null)); // blow up

Godsdammit- I'm pretty sure I'm not missing the point here. That is a ridiculous amount of overengineering, it should not be accepted as an answer to such a simple question, under any circumstances.
Working at this type of company will eat at your soul. Really, you only have about 40 years of work in you.

It sounds like a lot, but when you consider is takes a few years (sometimes more) to figure out what you like. A few more to get good at it. And then you have maybe 20 peak years of productivity, you sure as hell don't want to spend any of it at something you can't respect.

When you are done with your career at 60 or 65, you want to be able to look back and say "I did this" or "I created that" or "I helped this many people", not "I worked at that shitty adware company for 2 years because they have me free food and beer"
[Data Visualization] Investment Trends in San Francisco Bay Area Tech Startup
Someone a few weeks back recommended Inside The Kingdom in a reply to a comment of mine - I can strongly recommend it:

http://www.robertlacey.com/?q=book/inside-kingdom

It describes the length the Saudi's go to in rehabilitating jihadists - including getting them married!
Not directly relevant to Toronto, but may help evaluate comparing costs of living &c: I'm making 65k in Montreal in my first software job, working with Django + misc.
Hacking with Amazon Echo at work
The website where the speech is published to. They don't try to define hate speech in absolute, just define what they don't want to be associated with. Yes it's a slippery slope, but it's just this website opinion.
I believe he is implying that Quicktime was the only app/codec/container that allowed the user to stop, rewind, fast forward, jump around in the clip without the app completely failing. As a video editor for the past 26 years, that has been my experience. Every other video playback app/container that I've used (on both Windows and Mac) failed at treating a clip in a non-linear manner. My current preference is still for Quicktime 7, the utility knife for video playback (even more so than VLC in my experience).
Hey, no worries, glad you shared my work! No trouble at all. And thanks for the link, will check that out.
Well, would threatening to kill someone in the real world be legal? I don't believe so. Or do you think the threat is less credible if given online?
> Before I start though, I have to say, if a company is going to hire a developer based solely and entirely on a piece of code the developer wrote in an interview, you probably don’t want to work there.

This is something I read many times when talking about interviews, and it makes no sense. Either there is a nonzero chance to be more successful in the interview if you perform good in coding exercises, or not. If the former, then there was at least one person in the history of mankind who was hired depending solely on the coding.
if you want to get a feel for how the book will read, the author has written a handful of illustrated blog posts in a similar style:

http://adit.io/posts/2016-03-13-Logistic-Regression.html

http://adit.io/posts/2016-02-20-Linear-Regression-in-Picture...

http://adit.io/posts/2013-07-22-lenses-in-pictures.html

http://adit.io/posts/2013-05-15-Locks,-Actors,-And-STM-In-Pi...
That's good to hear - regarding jobs. I'd like to one day move out of Toronto and afford a decently priced house. I don't think I want to buy a house in Toronto at this point in time.
I interviewed at 50onRed a few years ago soon after I left college. I went through the interview process, received an offer, and was on the verge of accepting.

It was at this point I realized that I barely understood what the company actually did. I set up another in-person interview, except this time with the roles reversed. I asked them to walk me through their products and platforms so I could better understand what I would be working on. Ten minutes in, I realized what I was looking at. I treaded water until the end of the interview and called them a few days later to decline the offer.

The [engineering] team was solid, the tech was intriguing (a lot of expressjs microservices and interesting design patterns), and the offices were great. But given the wealth of compelling opportunities for javascript engineers, I couldn't come up with a good reason to work on something so insipid and manipulative. This article is strangely validating, perhaps in a schadenfreude kind of way.
Moving Forward on Basic Income
I'm also interested in Hamilton, so this is good to know.
Was does the debt force you to do other than hold a job? Heaven forbid. Nobody forced you to take money.

If anything it's a coup for politicians who want to push debt forgiveness as one of their platforms. Get everyone into debt and then offer forgiveness for votes.
Relative poverty is insoluble without totalitarian levels of redistribution to a very low common denominator, and that is unlikely to include the inevitable oligarchs. Absolute poverty is rapidly being solved (https://www.ted.com/talks/hans_rosling_shows_the_best_stats_...) by markets and globalization, and radical redistribution such as a basic income tends to interfere with that.
Curation bias is the flip side of the very low signal to noise ratio and general information overload we face today. I don't see how you can solve one without hurting the other. Picking stories at random isn't a solution either, because those stories serve another important purpose (sometimes more important than the actual content) - they are social objects, shared things people can talk about. Culture is lots of people experiencing the same stuff, so that they can relate to it in conversations.
OPEC’s Cheap Oil Strategy Lures Drivers Back into Gas Guzzlers
Do what? Puppet doesn't have a facility for running ad-hoc remote shell commands on demand. Sort of the whole point is to not do that.
This library claims to be license-free, but some of the modules are documented otherwise. For example, the "Queue (bounded, many-producer, many-consumer)" module (http://liblfds.org/mediawiki/index.php?title=r7.1.0:Queue_%2...) has the following license note:

"Dmitry Vyukov granted email permission for the idea to be used and implemented in liblfds, under the MIT license."

Similarly, the unbounded queue has an "unclear" license, rather than the "standard liblfds" license.

It's not clear to me how the library can be license-free when one component is very clearly MIT-licensed, and when others have no clear license status. I would be quite cautious using this code in production or in a lawyer-sensitive environment until the licenses are clarified.
Such a great tool - simple to learn, but powerful to run any Node app.

However, after playing around with the closed beta for a while, I've struggled to find a good use case. The one rare case is when a bug in some Node-stack application is simple enough to reproduce and share by copying the relevant bits of code into HyperDev.

Also seems like they're having scaling issues from HN traffic already?
MyBrains – Grab information from internet in one click
I ported these color scales to d3-scale and D3 4.0:

https://github.com/d3/d3-scale/blob/master/README.md#sequent...
With more and more businesses using stuff in-browser, I have been wondering for a while if people will bother to continue paying for Windows seats
ColorFinder: Find the most prominent color in an image
Is license-free a good idea?
The liblfds project [1] (disussed in [2]) has the following license:

license

There is no license. You are free to use this library
in any way. Go forth and create wealth!

If however for legal reasons a licence is required, the
license of your choice will be granted, and license is
hereby granted up front for a range of popular licenses:
the MIT license, the BSD license, the Apache license,
the GPL and LPGL (all versions thereof) and the Creative
Commons licenses (all of them). Additionally, everything
is also placed in the public domain.

Not to pollute the other discussion I decided to ask the question here:

Is this a good idea?

Food for thought:

* Some of these licenses are not compatible. Probably no problem because only one license applies at a time?

* As far as I can tell all mentioned licenses (even CC0) have a disclaimer. Does the disclaimer apply? Does the public domain part leave me in danger of a lawsuit in a jurisdiction where the disclaimer is necessary?

* Public domain doesn't exist everywhere (though this is controversial [3]). This no problem if you place your work int the public domain and offer other licenses in places where no public domain exists, like SQLite does. But what if you offer free choice?

[1] http://liblfds.org/

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

[3] http://cr.yp.to/publicdomain.html
Actually most of these bases are there because when there's trouble in those parts of the world, we need a place to be able to get troops, equipment and supplies into a given theater in a fast, efficient manner. The countries reap the economic benefits for sure, so it's a win/win situation for both countries. Not so much when the US starts cutting back on its military:

City officials in Heidelberg expect annual financial losses of up to $25 million, as a result of the closures of U.S. bases in the region.

"We estimate that a total of about 1,000 civilian jobs will be lost, when the nearly 8,000 service members pull out," said Diana Scharl, a spokesperson for the city of Heidelberg.

http://worldnews.nbcnews.com/_news/2012/06/30/12482964-bye-b...

I'd love for us to pull back from a lot of these areas, but let's face it, when one country invades another, they don't call France, Ireland, or Norway to help them do they? They expect the US to be the world's defender from the bad guys.
I used to work for a residential Real Estate platform, as a network/server OS/hardware worker. I didn't realize I had been hired by email spammers until we got Spamhaus emails, and my job became getting us off the RBLs.