This is a consequence of money getting more expensive. When rates are low, investors pile money into non-revenue producing startups in hopes that something will return 1000x. Now rates are up and the smart money is moving elsewhere.
> Now rates are up and the smart money is moving elsewhere.
That would only explain drops in future investments, but we're seeing profitable companies with astronomical revenues from their cash cows diving into a massive firing spiral.
More importantly, growing interest rates is not exactly the definition of a downturn.
In terms of people deciding to invest in a company, high interest rates definitely make future revenue less valuable in terms of discounted cash flow models.
Growing interest rates propagate throughout the economy. The goal of higher interest rates (aside from debt & borrowing becoming substantially more expensive) is to bring down demand and slow the economy.
The "rubyist" is completely irrelevant to the article. The optimizations might apply as well in any number of languages, because they all are related to minimizing heap allocations and keeping the execution pipeline lean (e.g. by minimizing function calls).
It's fairly easy to think from the title that the article is going to be something about how clever the rubyist is compared to Python programmers or how slow Python is or some such, as an intrinsic property of "rubyists" or Python.
2. Stop calling everything "Simple". If it's simple, people will be able to tell for themselves. Calling things simple potentially makes people feel dumb if they have a problem with it.
3. The sheer number of offerings (over 18 groups with multiple items) on the "Services" tab of the AWS management console is overwhelming. I'd have a designer see if there was a better way of organizing things.
Using a salt would require the attacker to include an entry for each possible salt for each password candidate. If the salt is only one bit, this makes the attack take twice as long (or, requires tables twice as large). If the salt sufficiently long it makes the attack infeasible.
Thanks for this question! The answer is complicated. :D
Let me tell you first why it does not help! In order to build a rainbow table, we must be able to build a lookup table (since they're just compressed lookup tables). But a lookup table is basically a brute force attack on a certain category of passwords! So, if your password would fall to a modern rainbow table, it can be brute-forced by modern computational clusters. Salting does not change that. Intrinsically the password is no more secure than it was before. (To make it more secure, use bcrypt, scrypt, or pbkdf2. Seriously, even PHP has pbkdf2 nowadays, you have no excuse[1].)
Now let me mitigate that naysaying a bit. If you salt every password with a random 12-character base64 string, you do indeed prevent building a lookup table for the database. And that's actually not bad. Security is best measured not in bits or in operations, but in dollars. If the value of the information is much smaller than the cost to crack it, you'll defeat a rational attacker.
Rainbow tables can be built in a highly parallel way, with attackers pooling their resources and attacking multiple systems. So it will generally cost more to brute-force a password than it will to break it with a rainbow table: the rainbow table lookup can be done with one CPU; but brute forcing may require a botnet or lots of GPUs.
[1] Okay, there is one excuse: you might want to be able to do password administration from phpMyAdmin using only built-in MySQL functions. If you are stuck in this particular case the REPEAT() and SHA1 commands can have a similar effect: