bumper_crop | 3 years ago | on: NSA, NIST, and post-quantum crypto: my second lawsuit against the US government
bumper_crop's comments
bumper_crop | 3 years ago | on: NSA, NIST, and post-quantum crypto: my second lawsuit against the US government
bumper_crop | 3 years ago | on: NSA, NIST, and post-quantum crypto: my second lawsuit against the US government
bumper_crop | 3 years ago | on: CNIL makes Google Analytics almost illegal in France
HEY! Why is everything being centralized to just a few services? Why is the web dying?!
bumper_crop | 3 years ago | on: A brief history of nobody wants to work anymore
bumper_crop | 3 years ago | on: A brief history of nobody wants to work anymore
bumper_crop | 3 years ago | on: A brief history of nobody wants to work anymore
1. A shitty job at $15 an hour is equally unappealing at $16 an hour. Someone who doesn't want the crap hours, crap boss, and crap customer interactions isn't going to change their mind over an extra buck an hour. The money isn't the problem, it's that companies make it _not rewarding_ to work.
2. Raising pay ratchets up inflation, and isn't a response. Cause and effect are reversed. Unlike food, gas, houses, movie tickets, and restaurants, the amount of money transacted in wages/salary cannot go down. McDonald's can't tell their employees that due to supply and demand, they are only going to make $14.83 an hour this week. Imagine if your company lowered wages due to the "expected recession". You would start looking for a new role. This means pay increases can never go down again after a temporary bump. I won't say it's the cause, but it artificially limits deflation from ever pulling things back. Like an elevator that can only go up.
bumper_crop | 3 years ago | on: Learning Go as a Python Developer: The Good and the Bad
This affected me recently, so I have sympathy for the author. Trying to upgrade an older project I had to the module system meant trying to find out how to import modules which don't have reachable URLs and were only on the GOPATH. At I hate how it forces to you create a module everytime. some point programming in Go stopped being for fun.
bumper_crop | 3 years ago | on: Pepsi: Breathtaking Design Strategy (2008) [pdf]
bumper_crop | 3 years ago | on: Ask HN: Where and how do you find your early adoptors?
bumper_crop | 3 years ago | on: History of lossless data compression algorithms (2014)
bumper_crop | 3 years ago | on: JVM Anatomy Quark #10: String.intern (2019)
String.intern() also offers some other benefits for certain use cases. Earlier versions of java did not cache the String hashcode, which meant that to use Strings as hash table keys meant hashing a lot more. But, an interned string can be used in an IdentityHashMap, which was faster for a long portion of Java's early life.
(I worked on a moderately popular Java library that targeted Java 1.5 as the minimum version. It does occasionally come up useful, but only in specific, and increasingly rare circumstances)
bumper_crop | 3 years ago | on: Apple's feedback mechanism is broken
bumper_crop | 3 years ago | on: Data Race Patterns in Go
bumper_crop | 3 years ago | on: CockroachDB's Consistency Model
volatile int a;
a = 1;
print(a) // Could this print Zero?
Even assuming only one program, one thread, one process, no interleaving and nothing fishy, could the final line print 0? In the serializable consistency, the answer is yes. Linearizability is framed in terms of clocks, but really that's just trying to establish that one thing happened before another. The "clock" in this example is the line number.bumper_crop | 3 years ago | on: Data Race Patterns in Go
Interfaces don't have a zero type, which means that we can't have an atomic.Value which stores Shape. Atomic Value would be much easier to reason about if it had store semantics similar to a regular `var foo Shape = ...`. One of the other comment threads talked about generics helping this, so maybe there is hope.
bumper_crop | 3 years ago | on: Data Race Patterns in Go
In fact, it's even worse than that. If the Store() caller goes to sleep between setting the type and storing the pointer, it causes every Goroutine that calls Load() to block. They can't make forward progress if the store caller hangs.
bumper_crop | 3 years ago | on: Data Race Patterns in Go
I'll add one other data race goof: atomic.Value. Look at the implementation. Unlike pretty much every other language I've seen, atomic.Value isn't really atomic, since the concrete type can't ever change after being set. This stems from fact that interfaces are two words rather than one, and they can't be (hardware) atomically set. To fix it, Go just documents "hey, don't do that", and then panics if you do.
bumper_crop | 3 years ago | on: Always Own Your Platform (2019)
In the beginning the web was so new, and growing so fast, with new things, amazing sites, and more people getting online. Like all things in life, competition arises, and better sites started getting much more of the market share. People's expectations for what a website could offer rose tremendously, and would abandon a site if it wasn't up to snuff. Sites needed to have ever improving visuals, better content, better people, better interactivity, better everything.
And I couldn't keep up with it. Users went from being happy to try out something new to dismissive and bitter. More and more it felt like work to try to make them happy, to keep building more and better things. And that's exactly what happened. The Internet became work. It's why we all have to be paid to come to work and build the Internet. No one does it for free, because it's a thankless grueling job. The only websites that survived were the ones that made money, and could afford to use that money to hire people. Google, Facebook, Myspace, Stumbleupon, 9gag, and even Something Awful became money oriented rather than community oriented. They had to, or else.
The advice to "Always Own Your Own Platform" is a euphemistic way of saying make a whole company out of your site and underpay the only employee (you) for ever. The reason we don't own our own platform anymore is because it's soooo annoying to do so. It wasn't an accident.
bumper_crop | 3 years ago | on: What’s the best lossless image format?
Framing best in terms of file size or encoding speed is a really use-specific framing, and not ideal for preservation.