skysight-inc/HackerNews huggingface dataset:
Of that IP set:

Host ASN CIDR
104.131.204.15 62567 104.131.192.0/19
104.131.213.10 62567 104.131.192.0/19
104.154.38.52 15169 104.154.0.0/15
107.170.150.138 62567 107.170.128.0/19
130.211.185.192 15169 130.211.0.0/16
146.148.40.57 15169 146.148.0.0/17
172.245.55.112 55286 172.245.48.0/21
184.172.15.235 36351 184.172.0.0/18
50.97.173.18 36351 50.97.128.0/18
5.255.253.51 13238 5.255.253.0/24
66.249.69.136 15169 66.249.69.0/24
66.249.69.88 15169 66.249.69.0/24
66.249.75.104 15169 66.249.75.0/24
66.249.75.184 15169 66.249.75.0/24
66.249.75.216 15169 66.249.75.0/24
66.249.75.88 15169 66.249.75.0/24
66.249.79.111 15169 66.249.79.0/24
66.249.79.119 15169 66.249.79.0/24
66.249.79.127 15169 66.249.79.0/24
66.249.79.135 15169 66.249.79.0/24
66.249.79.4 15169 66.249.79.0/24

Distinct ASNs:

14 15169	GOOGLE
3 62567	DIGITALOCEAN-ASN-NY2
2 36351	SOFTLAYER
1 13238	Yandex
1 55286	SERVER-MANIA

So ... yeah, these jokers got themselved "DoS'd" by a couple of search engines and couldn't even figure that out.

But they might want to look at Digital Ocean, SoftLayer, and ServerMania.

Or figure out where the traffic was actually coming from.
Furthermore, depending on a number of factors, $60k is not a legal wage for a salaried software engineer in California. The minimum for an exempt employee as of 1 Jan 2015 is now $41.27 hourly, $7,165.12 per month, or an annual salary of not less than $85,981.40 for full time, overtime exempt employment [1].

Let me say that again for anyone working in CA in software as a salaried, overtime exempt employee:

If you make less than $85,981.40 a year and cannot collect overtime, your employer is not paying you a legal wage in California. You should do some research and consider contacting a labor lawyer.

Edit: [1] https://www.dir.ca.gov/dlse/LC515-5.pdf
Using HMAC'd tokens to authenticate requests is pretty common in the form of cookie-based session variables (at least in most non-PHP web frameworks, e.g. Flask). This is really the same technique, except for email requests, where the data is embedded in a URL instead of a cookie.

Not to say it's not useful, just that it's not really novel. You also still have to be careful of replay attacks, which the author briefly addresses.
It would be nice to stop all reset tokens if the user has logged in after the reset tokens were made. But you're right, it's not really a problem unless one chooses make it one ;)
College student in search of freelancing advice
First off, I'm asking HN for advice, not for a job.

I'm a college student and I would love to get into the freelancing market for web development but I'm not really sure how/ where to start. I'm confident in my backend skills and am familiar with a number of languages and frameworks, and I'm always trying to learn more. So where can I look for opportunities to put my skills to use for pay? I spend free time working on several personal side projects but I think it would be fun to try and sell myself a little and take on a project for someone else. Any suggestions? Thanks!!
I’m a full-stack developer unless…
The Ultimate Guide to Instagram Marketing
There are a countable number of primes, but an uncountable number of real numbers, and an even more uncountable number of functions over real numbers.

So heuristically, the existence of Mills' constant is really just saying that primes grow at a relatively consistent rate, which is something that the prime number theorem formalises.

You can think of Mills' constant as being akin to this real number[1]:

0.235711131719232931374143475359616771737983...

You could write a program to extract primes from that number, but the existence of the constant, or the program, is not surprising in the least.

[1]: https://en.wikipedia.org/wiki/Copeland%E2%80%93Erd%C5%91s_co...
You're right, thanks. The claims in my comment require lots of qualification, are embarrassing without.

I enjoy your a[s]t[ron]omic epoch year zero idea. One could start from much further back (eg beginning of universe, earth, modern humans, writing) but those would all be specific to the culture estimating them and to what that culture valued.
I loved the article and all the use cases are valid. However I don't think the first two use cases save that much effort.

1. In Rails apps with the devise gem the password reset token is just a column, not a whole other table.
2. Email activation, having the additional non-activated records is not a big problem, 20% extra records in my users table is pretty acceptable.
Another set is Yandex, a Chinese [Edit: Nope, Russian, see below] web crawler. I've done a basic "what CIDRs and ASNs were involved" in a top-level post.

These idiots can't tell Web crawler traffic from DDoS (though often there's little practical difference).
Are You Living In a Computer Simulation? (2003)
One of the other use case is session ids. Pretty much you can sign:

user id|timeout|user custom property

Having custom property (per user number), gives an opportunity to kill sessions. E.g. session is compromised, just increment it and regenerate session for valid user.
John Milton Paradise Lost – Malicious Hackers
What? Where in Manhattan can you get a 1BR for under $2k/mo? Are you talking about Harlem?

If we're talking about decent neighborhoods in Manhattan, even the shittiest studio on the 5th floor of a walkup will go for at least $2k/mo.
I can imagine so; But as a counterpoint, isn't it worse with forced implicit returns, where you never have a choice but to return something, and you have to scan the code carefully to see if it was required?

Maybe I'll add a 'noreturn' keyword; single expresions are automatically returned, and you can use a 'noreturn' statement to explicitly return void despite running a non-void expression.
What I find the easiest is if you are not dealing directly with the CEO or person approving the raise. In that case you can just let your supervisor know you need that rate to stay on board.

If you are dealing with the CEO or person approving the raise and you feel the need to justify yourself I would keep it short and simple like "In order for me to move forward in this position my salary has to be at $175K". There really isn't much else to say. Just like 50 Cent - you must to be able to walk away - and that is your power. You 100% should ask for the raise or leave. Don't get caught up with letting OPP affect you. OPP = Other peoples problems. For example the CEO is a f#ck up for a large variety of reasons so he gets you believing they are in the middle of "raising series A" or whatever else bullshit that you have no control over therefore has nothing to do with you. It's all about you mo fo. His problem is actually more like he is "in the middle of raising series A and is about to lose a top developer who knows the code base". Don't worry if the CEO is worth his weight he will solve that problem.

Catch my drift? You only live once my friend - DO NOT LEAVE MONEY ON THE TABLE.
NSA Sentry Eagle placed spies in private companies
> How does that not apply to "natural" foods as well? Without resorting to an appeal to nature.

Good point. You hit the nail on the head.
Async has never been about speed. Cooperative multitasking doesn't magically gzip your instruction pipeline or something (actually CM is suboptimal). It's just the only tool for those of us who want to avoid giving the keys to arguably the most important subsystem in the kernel to agents outside our control: The scheduler.

Ever tried to ssh into a one-thread-per-connection setup under heavy load? Assuming you managed to log in, it'll be very very difficult to get htop to execute when it's competing with 2k other processes for cpu time.

So, spawning a thread for every incoming connection request is a bad idea. But what about spawning a thread for every outgoing database connection?

The memory overhead of a thread compared to a tcp socket may be significant, but it's nothing compared to a database connection and all the other resources tied up serve that one database query. And best of all, you can refuse to setup a database connection without upsetting your user and e.g. serve from cache instead, but you can't refuse an incoming connection request.

According to the Postgres guys [1]: "A formula which has held up pretty well across a lot of benchmarks for years is that for optimal throughput the number of active connections should be somewhere near ((core_count * 2) + effective_spindle_count)"

Assuming you got two tablespaces on two raid 1 arrays on a 16 core machine, that's 16 * 2 + 2 = 34 threads plus the event loop thread, maximum.

According to those numbers, there doesn't seem to be much stopping you from running your data access logic within a thread.

[1]: https://wiki.postgresql.org/wiki/Number_Of_Database_Connecti...
Dokku CLI – Makes Your Dokku Even More Heroku
Show HN: JavaScript snippet to highlight new posts
Hi all. I wanted an easy way to highlight new posts, without basing it on the last time I visited a page. The snippet is as follows, if any of you folks would like to use it:

/**
* Usage: highlight('newpost', 3, 'hours');
*
* This will add the class 'newpost' to any post made within
* the past 3 hours. This includes, for example:
*
* 3 hours ago
* 45 minutes ago
* 22 seconds ago
*/
function highlight(className, number, type) {
var types = ['second', 'seconds',
'minute', 'minutes',
'hour', 'hours',
'day', 'days'];

// Types are inclusive, so if we filtered to 'minutes', then
// we always want posts that were made 'seconds' ago.
types = types.slice(0, types.indexOf(type) + 1);

// Any link with 'item?id' is assumed to be a timestamp.
var posts = document.querySelectorAll('a[href*="item?id"]');

// Loop through the number of posts, since we need to access
// each post using NodeList#item.
for(var i = 0; i < posts.length; i++) {
var post = posts.item(i);

try {
// The leftmost integer.
var label_number = parseInt(post.innerHTML.match(/^\d+/));

// The label (a value that maps up to the types array).
var label_type = post.innerHTML.match(/^\d+ (.+?) ago$/)[1];
}
catch(e) {
// If either of the matches fail, it's due to an
// irrelevant link.
continue;
}

// Continue if the label is out of bounds.
// For instance, 'days' when filtering by 'minutes'.
if(types.indexOf(label_type) === -1) continue;

// Continue if the label type matches, but the number
// is larger than what we're filtering for.
if(type === label_type && label_number > number) continue;

// td > div > span > a
post.parentNode.parentNode.parentNode.className += ' ' + className;
}
}
While the article is dated this month, Kepler-186f was announced almost a year ago. http://en.wikipedia.org/wiki/Kepler-186f

Perhaps they got it confused with Kepler-438b which was announced last month and is the most Earth-like exoplanet to date? http://en.wikipedia.org/wiki/Kepler-438b

See also http://en.wikipedia.org/wiki/List_of_potentially_habitable_e... .
Open-source is a great place to start, and (I'd think) looks great on a resume.
I've tried to use Dokku in the past but opted for flynn and deis.io
Wear failure on SSDs is often a silly thing to worry about. The number of write-out cycles is roughly 10,000 and a modern spinning disk takes like 4 hours to write out, so it would take like 5 years of continuous writing to see an advantage for traditional HDs. In practice, you only have to worry about it, if the workload could never be considered on a traditional HD.

When faced with the choice between a Fiesta and a Ferrari, there are many reasons to choose one over the other, but it is ridiculous to say "I picked the Fiesta because the Ferrari has a known tire problem when going 200+ MPH".
Since Rails 4.1, the technique described in the article is trivial to use. Check out message_verifier.
> By "food" he means "food your great-grandmother would recognise as such".

So, no sushi, no fresh fruits except the few which were available around here circa 1900s, no African food, no Asian food, etc.

> A good rule of thumb is to focus on foods that don't have an ingredients label.

Yes. By all means, eat food which could contain who knows what.

> leafy plants are incredibly complex chemical cocktails and the human body evolved in tandem with it.

This only applies to foods found in the Rift Valley in Africa.
An unhandled, appeal to nature, as a blatant coping mechanism. It's is escapist. IE " lets ignore the problem ".

This common of a fallacy is the top rated comment ... on HN. Please let that sink in.

Nothing more needs to be said. This forum is supposed to represent the top echelons of silicon valley thought. Not some echo chamber of common ( "well always want more" ... really?) memes.
Alright, to be fair I haven't coded in C++ for ~10 years so maybe I might just be a little smidgeon behind the times =)
A professor once told me he studied pure math _because_ it had no applications.
I'm sorry, but I simply don't see how asking for what you're worth can be considered acting like a jerk. It's your life and you need/want what you need/want. If they can't afford you, that is not your problem!!!
Last time I used this approach I ended up regretting it. The problem is that the links become ugly, unwieldy for the users to handle, and occasionally cause problems that are rather hard to debug. For example the base64 encoding I was using for the authentication token included '.' as a one of the characters. Well, turns out that the linkification code in gmail will ignore a '.' at the end of the link (which is kind of sensible). So 1/64 of my validation links ended up being invalid.

The supposed benefit of the scheme is that you don't need to evolve your DB schema as you add or remove validation fields. That's rubbish. If you're happy with storing data with no schema in the links, you should be equally happy storing it without a schema in the DB. (For example a token field, an expiration time field, and a json blob containing the actual payload corresponding to the token).
If you don't mind elaborating a bit more on the troubles you had, I might be able to help get things fixed for a later release.

I have had some trouble on Solaris getting the adjtime olddelta value to settle quickly, but haven't heard of any other issues. Even if you're happy with clockspeed, it might help other users to identify the problem.
It's both common and a common source of mistakes. Every web framework I know of that uses HMAC'd sessions has had at least one glaring vulnerability that could have been avoided by using the old school opaque token database lookup technique.
you should have a look at JSON Web Token http://jwt.io/
> Dumping a diff of commit logs. Just don’t do that, you’re helping nobody.

Depending on how you write your comments for commits, merges, or tags, it seems that you could dump those logs and have quite a reasonable changelog.
Hes saying the user logs in with their normal password and takes no other action on the reset. The reset is still valid until the expiration.
This is the way I've always done password resets and activation emails, and it never seemed particularly non-obvious.

In fact I seem to remember django's default out-of-the-box password reset mechanism does it more or less this way.
Well, a simple reason is a CVT can keep the ICE in a very narrow RPM band where it's operating at maximum efficiency.
edX 6.002X, MIT's introductory circuits course, just started up:

https://www.edx.org/course/circuits-electronics-mitx-6-002x-...

I'm not aware of many more advanced EE online courses.
http://math.stackexchange.com/questions/344879/how-does-line...

Pretty much all of machine learning relies on linear algebra.

Most scientific computing relies on lI near algebra.

Graph algorithms often use linear algebra.

If you just want to be a Web Dev or an app developer, it probably doesn't matter, tho.

But if you just want to do Web Dev or mobile apps then you don't really need most of computer science.
> The more dangerous "fallacy" is the idea that all food is equivalent until rigorously experimented and proven otherwise.

OK, so even if we accept based on no evidence that it isn't, why should we prefer so-called 'natural' foods. And please tell me how GMOs such as corn (maize) and apples are natural, BTW.

> This is the mentality that the food industry hangs its hat on to continue producing the worst possible products that still somehow meet FDA and public approval.

Appeal to 'corporations are evil' is also a rather dangerous fallacy.

> The idea that eating whole foods which have traditionally been cultivated or gathered by humans is generally preferable to a manufactured alternative is not a bad or fallacious principle.

Without evidence it is. This bald assertion does your side no favors.

> It isn't "because nature", it's because we've been eating those things a long time with a good deal of success

Not really. Look at how common deficiency disorders were, back before such horrible modern artificial nonsense such as refrigeration and food preservation.

Besides, what my ancestors ate is not the same as what your ancestors ate, most likely, so which is better? Which diet should we follow? And my ancestors didn't all come from the same place, so which of my ancestors' diets should I follow?
It's not the extra database columns, it's the removal of a state field. The additional of a single boolean state field essentially doubles your API area because now you have two types of users that may try to do things, and it's highly unlikely you have saturation testing for unverified users.
Yea it's unreal. Startups are looking for "rock stars" to work 50+ hrs/week for entry-level salaries and pathetic amounts of equity. No thanks.
> With Twisted I had to go find for Twisted versions of drivers for databases. Now for asyncio I would have to look for asyncio version of libraries.

Isn't this an argument in favour of asyncio (in as much as it is/becomes the "one blessed/stlib interface")? Migration will take time, of course. But that is the nature of change...
I tend to mistrust using crypto for things that can reasonably be done without crypto. Even if the initial implementation is perfect, it's too easy for a future maintainer to make a simple mistake that introduces major security flaws. The place to use this sort of technique is where it enables a fundamentally different architecture for your application, and not just where it's a small performance optimization.
"Calibrating delay loop... 58.77 BogoMIPS"

As a comparison, from my i7-4771 @ 3.5GHz:

smpboot: Total of 8 processors activated (55999.93 BogoMIPS)

Computers sure are fast these days. Too bad we write such slow software for them.
Sadly I don't really have a perfect answer to that. I'm inclined to think making all returns explicit is the right choice, and is only really a problem in a language where long returns are common (specifically in my mind is ruby, where being able to return from the enclosing function is crucial to the common uses of blocks). Arguments against in languages that don't feature this sort of thing seem to be against the length/weight of the word return.

Something I've played with in languages I've worked on is named returns [1], which I like for that case.

[1] https://github.com/stormbrew/channel9/blob/master/sample/c9s... -- see the get function definition, '-> return' names the return 'channel' and 'return <- val' calls it (which returns). Now I might consider having an implicit '<- val' with no lhs that calls the current function's return, I think.

I do think a special case for single statements makes sense, though.
Save money on healthcare by using transparency tools
I like to think that all of my comments are worth reading to the end!
I would say if you have to ask the question your probably worth about the average starting salary. Perhaps a better question is where can I work so that I can be paid to learn cutting edge software. Eg. React JS or something cool like that. Don't take a job to write SQL Server 2005 SSIS tasks or maintain win forms apps etc. What your worth is also based on peoples perceptions of you which is also reflected in your confidence. Eg. I just graduated however my strongest skills are my quick ability to pick up new technologies and I have a natural ability to develop well structured code and so I strongly believe I am worth a better rate. Etc.
What if aging in the brain is the reason old people aren't disproving and correcting their invalid ideas?
Starting Up a Start Up Our Demo Experience
Why not both? Compilers have much faster turnaround times than language standards, and a compiler that declines to view memset as a NULL assertion is still perfectly conforming.
2 petabates while validating write RIGHT AFTER it happens, and never powering that drive down. Its great when all you need is a dev/null, not so much if you need to power down from time to time and retrieve useful data later.
One could overcome this by tracking the user's last password-driven login date and rolling it into the MAC; alternately, just use a short expiration time on the reset token and don't sweat it.
Ask HN: favourite computer and iOS games?
what are your favourite computer and iOS games to pass the time?
I wonder if any Excoin admins could explain why hot wallets and cold storage exist?

"World's stupidest bitcoin exchange admins, or some of the ballsiest? Inside job?"

That's always the question, isn't it?
Actually you would be better off coding something yourself in your spare time and giving it away for free. As soon as you can get recognition or an audience you are building some intrinsic value that will pay itself out some day.
I follow this set though I hadn't read about it before. I do one additional tag that is not mentioned. "Updated", which is used for translations. So, each release has a line similar to this:

Updated: French, Portuguese Brazilian, Spanish International

It doesn't affect the app other than those specific translations and it makes it easy to pinpoint when a given translation was last updated.
I think a good approach to this when using git, that I've tried to keep in my own projects of late, is to keep your master branch only merge commits and curate the merge commit messages explicitly to be human readable descriptions of the changes. I think it's entirely possible to generate good changelogs out of this and proper tagging, but there probably need to be a few less awkward tools for maintaining it than just directly using git commands.
Several people have disagreed with me here. I don't have the patience to wait for you to keep reediting your comment into something that no longer reads like it was written by a raging child on 4chan. Maybe you should read the other comments to see what an intelligent response is.

I'm not appealing to nature anyway, i'm appealing to physics.
A good starting point is singular value decomposition [0]

0. http://en.wikipedia.org/wiki/Singular_value_decomposition
no. we should absolutely, act as if aging and death is something to be cured.

A rose by any other name, is just as sweet. I mean to say, all of the STUFF associated with malady is there. So how / why does death/aging ... with all its symptoms ... differ?

It doesn't.
Right exactly which raises the point - why work at a start up if you will not hit it rich like it was 1999? The short answer is to work with really smart people who will teach you what you need to know to become them.