ajbonkoski
Joined 13 years ago
Joined 13 years ago
I used Xmonad and awesomewm before. I don't understand enough Haskell to configure Xmonad and awesomewm is a giant dependency mess (the irony being that it's a fork of dwm , the minimalist suckless wm)
Anyways: i3 has struck the perfect balance for me. Written in C, easy to modify, configuration is intuitive and obvious (I have no interest in spending weeks learning how to configure it), and best of all super stable and bug free.
Highly recommended!
I started using WSL2 on my windows machines just to run i3 on windows. That works too! (Basically you vnc to WSL to get i3)
I was super confused by it because it suffers from classic AM-GM inequality mistake. I doubted that Peters would make such a trivial mistake (he didn't). He talks about the utility of a single outcome of the game, not the expected value of 10 plays of 10 different games.
In the article: Using an arithmetic mean on percent-return doesn't make any sense. If you calculate the expected value and mistakenly use arithmetic mean you'll get +5%, but it's actually roughly -5% when calculated correctly with a geometric mean.
Which is why all their silly simulations come out negative.. none of which has anything to do with Peter's actual work.
"In the past week or so, fortunes have reversed. Technology stocks have sold off. Value stocks have rallied, as prospects for a coronavirus vaccine raise hopes of a quick return to a normal economy. This might be the start of a long-heralded rotation from overpriced tech to far cheaper cyclicals—stocks that do well in a strong economy. Perhaps value is back."
Haha. No. It's not back.
Over the past YTD, AAPL has returned 70%. The article's publish date is 11/14/2020. Around that timeframe, AAPL moved less than 5%. This is not evidence for collective change in investing philosophy. Perhaps tech is over-bought, but you have to argue better than this. It took me all of 2 minutes to check.
Often a fancy new thing is introduced with a very long list of pros: "fast, scalable, flexible, safe". Rarely, is a list of cons included: "brittle, tough learning curve, complicated, new failure modes".
This practice always strikes me as odd because the first law of engineering is "everything is a trade-off". So, if I am going to do my job as an engineer I really need to understand both the "pros" and "cons". I need to understand what trade-off I'm making to get the "pros". And only then can I reason about wether the cost is justified.
There is a reason why everyone builds super computers in a large local cluster. It's so they can have a high-bandwidth low-latency interconnect between all of the compute. The second you need to shuffle partial data results between compute nodes, you have to pay the latency hop. Interconnect quality is often a huge bottleneck, ignore it at your peril.
I would hope that people with the same objectives would agree on simplicity for that domain.
Examples:
Need a lot of machine control, direct memory control (page alignment, cache alignment, shared memory, numa, etc) interact with system calls directly, interact with hardware, and security is not important in the domain (e.g. private hpc cluster behind a firewall)
C is probably the simplest
Need to quickly prototype something medium sized that involves non-trivial data structures or needs to interact with an http server. And you don't care about performance.
Something like Python is probably simplest
Etc etc etc
By contrast.. try doing the former with Python, Java, etc and see how much additional cognitive load you have to add.. ever try the later with C.. no fun.
Averages are a terrible way to do a comparison. Averages aren't terribly useful unless you know that your data is Gaussian (or a sum of IID Random Variable => see the CLT). Folks love to erroneously assume Gaussian.
In this particular problem, I would expect to see a multimodal distribution for the liberal arts majors.. (i.e. some folks have massive salaries (famous authors) and some have small salaries (high school English teachers)).
In such a case, the average can end up at a value that basically doesn't exist in the underlying distribution. So you end up comparing nonsense.
Even the language and word choices are FUD: "elites". Conspiracy theories work because people respond more viscerally to fear and uncertainty than to optimism.
Even more amusing: his argument is actually that (1) we basically didn't have a democracy because the "elites" ran the show, then (2) technology made the US more democratic, so (3) democracy will fail.
What? Because things are more democratic, the democracy that we never actually had is going to fail now?
Typically there are two modes in my computing: (1) Scripting / Command-line get stuff done and throw-away, and (2) Serious applications that are heavily used, need to process lots of data and be as fast as possible (e.g. processing millions of files like this one where the algorithm constant factor really matters).
In case 1: Hack something together with shell or python and get an answer. If it takes 100-1000x of the equivalent C program, than fine..
In case 2: Custom special purpose C or C++ code
I really don't understand the middle ground here. The equivalent C version that does the same job runs in ~250 millis on my slow Yoga 2 Pro laptop. Total line count 83 of pure C (no other libraries).
Is it "elegant"? Depends who you ask.. But, at the end of the day, "elegant" doesn't pay the bills..