1,088 karma · joined January 1, 2013
When argumenting based on statistics, labeling of the graph or text is where the ideology really shines through.
In a bigger team, a big second reason why these kinds of very uncomfortable tasks aren't done is that they also often don't produce immediate business value. You then have double resistance: the PO wants features from you and grinding is boring.
The people who first get to a position where they can spend the time and then do spend the time (instead of doing the even more fun tasks), are worth their weight in gold.
Pumping up GDP is not a sustainable way to reduce poverty. Gates and other people who benefit the most from the status quo continuing to advertise for this graph gives a very false sense of optimism.
1: $1.90/d is lower than the consumption level of slaves in the US in the 19th century. Helping people get slightly above the level of slaves is of course better than not doing that, but it is hardly enough.
However what I find very troubling is that the main point that Hickel raised in the blog post[1] – GDP data has the particular potentially crucial problems Allen has raised when used to assess historical poverty – Roser chooses to not actually address it, but instead throws blanket statements of there being continued discussion between academics of different datasets and their merits.
However this particular graph of historical extreme poverty is used by the most powerful people in the world to advocate for continuing with the status quo. That is why it caught Hickel's attention. It is therefore very important that the heading of the graph is very well justified.
As a layperson reading Allen's research, and knowing there is a discontinuation point in the graph 1981 when the dataset changes, I think the graph ought to be labelled very differently. Roser continuing to label it as "extreme poverty" knowing there is an ongoing debate about what data if any is a good proxy historical poverty, and not answering head on Allen's criticism, really makes me not trust Roser.
1: https://www.jasonhickel.org/blog/2021/3/28/extreme-poverty-i...
Hickel's research makes the argument that this hoovering is exactly what is happening, on a massive scale:
https://www.tandfonline.com/doi/abs/10.1080/13563467.2021.18...
If Noah Smith wants to rebuke this argument, he can't just "as if" it away. He needs to do the research that proves otherwise.
Roser also keeps constantly misrepresenting degrowth with a straw man that the global South needs growth. He has been told time and time again that every degrowth demand is only for the rich countries and everyone agrees the poorest countries needs growth, but still he makes the same claim over and over.
From this behavior, I've come to see Roser as a bad faith actor.
https://twitter.com/jasonhickel/status/1376097068251541504?s...
Google had a fully working, very lucrative business model in search term based ads. You search for "office rent Arizona", and Google shows you ads about offices in Arizona. No privacy violations.
There was no other problem with search term based ads except that Google wanted to pump up shareholder value faster than what that could give them.
> “Cool! Yes, but there’s 12 other things we thought should come first. You’re welcome to go and do it. We’ve got a big tent and a lot of shit to clean underneath.”
> “Actually, can’t help, gotta take my dog to therapy, bye!”
This part especially is so familiar. It tends to get emotionally pretty exhausting, when you've put in countless hours to make so many things good, only to get constantly reminded that the not-as-important problems that were scoped out for the time being, are bad.
In software under active development there is never a shortage of things that could be improved, especially wrt developer experience. It is very hard not to take personally the whining – especially when it typically comes with very, very little actual effort to make it better.
Because I know this pain so well, I only make these kinds of "suggestions" when I know I can commit the hours to make at least a PoC of what I'm suggesting.
Interesting thing: I just now remembered to delete my LastPass account, but the delete account flow breaks totally. Just end up in a modal without any content in it, both Firefox and Chrome.
I'm wondering if they are even deliberately blocking deleting accounts for damage mitigation?
― Edward Snowden
This is the only reason I had to move away from (arch) linux and it saddens me every day.
This is the only reason I had to move away from (arch) linux and it saddens me every day.
1. K8s of 2019 is significantly better than K8s of 2017. With stable Deployments, StatefulSets and CronJobs and binaryData in ConfigMaps etc., I haven't missed a single feature in my latest setup: I just typed away helm'd manifests and things just worked. This is in stark contrast to the dance around missing features with initContainer and crond container kludges you had to do in 2017, when I built my first kubernetes setup.
2. People tend to conflate maintaining a k8s cluster to using it. Setting up your own k8s cluster with HA masters, is likely still a royal pain (disclaimer: my attempt at that are from 2017 so could be wrong, see point 1). But for a small company, whipping up a cluster from GKE is a breeze, and for big corps, company-wide cluster(s) setup by an ops team (OpenShift has been ok) is the way to go. The end result is that as a developer you just push containers and apply manifests.
Even though I'm sure there is a lot of variance between interviewers, I can't help but think that the abusive style of whiteboard grilling must "work" in that it results in able workforce, and that might be because of the reason I suggested.
Another excellent talk by the creator of Clojure, and like the previous ones, relevant for all programmers.
Because the site needed a unique brand look n' feel, I opted out of Jekyll and used Foundation 6 as a base and node-sassed my styles with npm scripts and custom svg:s. For cache-busting I run hashmark with postbuild. Then I just write HTML.
Development is easy, things work nice, site is very fast and it looks great.
Moral of the story: starting with just static HTML and CSS is the right choice a lot of the time. Don't complicate things before you need to. And when the need to, only make dynamic those parts that can't be static.
But what has kept me constantly improving is trying out many diffent things over the years: aside from having all of the roles of a software team at one point, I've also been a researcher, coach, consultant and CEO. Also in non tech-related fields.
But now I'm again back to being a programmer. It's the position where you can make the biggest difference.
I got bit hard by this issue:
https://github.com/docker/docker/issues/20079
when CoreOS stable channel updated Docker. All my data volume containers broke during the migration and migration could not be reverted.
As for the second issue: when two systemd services that pull containers with the same base images would start simultaneously, they would deadlock pretty reliably. Had to flock every pull as a result. This might be fixed by now though.
That makes you want to _not_ have one JAR and then keep your fingers crossed that it is configured right. Optimally things should just work (tm) in production without any configuration. (Not to mention if you try to sell your software, you can not sell just one package because just by changing the configuration from delivery1 to delivery2 you get the second product for free.)
With dynamic languages what you presumably would want to do is just zip the right files and that's that (although you still need system tests that verify that the zip has the right stuff in it), but with static languages it's more tricky. One way to get that would be to have A-core.jar that has all code that is common to every installation, and then A-installation1.jar with the right delivery and plugs for the first installation, and A-installation2.jar for files for the second installation etc.. Because in the installation JARs there would be only one delivery, and only one plug per jack (and one jack per contract), things would work without any additional configuration.
Now the problem with Maven is that you can't easily get many JARs from one src/main/scala. Or can but things get complicated when start releasing stuff to repositories. Which results in the really messy directory structure I outlined above, or then you would have to figure out some other directory structure that would work better. Of course the best would be to hack Maven to work around the "one JAR per src/main/scala" limitation. Or write a maven-obvious-plugin. :)
The backstory here is that packaging tools easily mandate directory structure. Directory structure in turn directs source packages (inverted URL in Java), and source packages tend to influence the architecture.
The cool thing in Obvious is that by making the directory structure itself reflect the architecture, code is automatically steered towards good practices. Of course you can create a great code architecture with any directory structure, but in many cases _where_ you can put stuff, influence _what_ you put in there.
So in some cases, it's actually the supposedly trivial packaging of sources that is a culprit for bad decisions. Which IMO makes packaging also non-trivial from an architecture standpoint.