General statistics
List of Youtube channels
Youtube commenter search
Distinguished comments
About
JohnDoe
ThePrimeTime
comments
Comments by "JohnDoe" (@JohnDoe-my5ip) on "ThePrimeTime" channel.
He’s always struck me as a “strong opinions loosely held” kinda guy. Clean Code is dated and I don’t agree with a lot of it, but it’s a 20 year old book in a field that’s all of 60 years old. Uncle Bob walked so we can run.
10
Pandoc is written in Haskell
6
The Monad tutorial hell is just because the Haskell community have been too busy circlejerking for 30 years straight to explain things using terminology software engineers understand. Thank god the creators of Rust and Lean weren’t so dense... A monad is just an interface that lets you encapsulate side effects in a convenient way. It lets you write imperative-looking code to glue your pure function moonshine together. The monad interface borrowed the name and laws from pure math, which is cool, because it means smarter people than us Grugs can prove things about this abstraction’s correctness and composability. Haskell shouldn’t be as hard as it is. It’s just that too much of the community is full of themselves and terrible at explaining simple things.
4
Recursion isn’t conceptually difficult at all. The problem is that in imperative languages, it can be quite inefficient if you don’t use tail recursion, and if you use tail recursion, it’s just a weird looking loop
3
A monad is just an interface with convenient properties for allowing you to glue together code with side effects without infecting your pure functions. Haskellers just love overcomplicating simple things with denser mathematical jargon than Coq or Lean users would. Haskell is a victim of its community’s extreme propensity for circlejerking about how smart they are. It could’ve been Rust 15 years sooner, I swear. It’s really not that much more complicated than Scheme, except for the community’s needless gatekeeping.
3
Entry-level CS jobs are going to require a Master’s degree now. If they’re gonna hire someone with no work experience, they’re gonna take the person who’s spent 6 years learning at a college level. Only boot camp worth going to is the military. Put your big boy pants on, enlist in a cyber MOS, they’ll train you. Coding boot camps are for suckers and losers.
2
VLIW/EPIC offloads too much unpaid work onto open source compiler devs to ever get the promised performance gains. Deeper pipelines also increase cost of branch mispredictions. Was better to just add more cores. Itanic was doomed to sink from the get go
2
Typescript makes JS so much easier if you have any idea what you’re doing, and the project is not very simple. Vanilla JS has so many foot-guns with equality, and TS gets rid of all of them.
1
If they named it Curry, it would be like Soufflé Datalog and no one would be able to Google it without their results being filled with doortrash ads and recipes.
1
Or brainfuck
1
You don’t need a special keyboard for Haskell like APL either
1
It’s so adorable that he thinks he has the foggiest idea what an “F-coalgebra” is because he took algebra in high school. It’s from category theory, which is itself an offshoot of algebraic topology. You’re at least three levels of mathematical abstraction removed from an elementary algebra that you learned about, on the field of real numbers… The “monad is a monoid in the category of endofunctors” meme can actually be broken down and explained reasonably well in about 30 mins to an average C programmer. JavaScript kiddies are probably too dense to ever get it, but that’s a feature of Haskell, not a bug. F-coalgebras? Well, we’re gonna need at least a year of studying pure math full time before that begins to make a lick of sense. By the time we’re done with that, you’ll lose any interest in Haskell and want to dig into provers like Lean instead.
1
Here’s the dirty secret. Self-taught has vanishingly low odds of success, and the best roles will always be withheld from you. You’ll be constantly treated as disposable, never having time to learn on the job. Because why would they invest in you, if you won’t invest in yourself and get a CS degree? Successful self taught people do exist, but they’re merely an example of survivorship bias. For every one of them at age 35, there’s ten who burned out horribly, quit engineering, and became budtenders or painters instead. Those are not random alternatives, they’re real people I’ve met in meatspace, who could’ve had a much better career if they didn’t fall into the self taught influencer trap.
1
@gigitrix they’re doing ML in freaking Python and you’re worried about 5-10%? They could get a 10x speed up for free, on the processor they already have, by using Julia in their Jupyter notebook instead… even before Moore’s law died, software was getting twice as enshittified every 12 months. Hardware was always losing that race.
1
JS wouldve turned him into another Unabomber
1
Devops should be a separate team. It’s complete BS to expect devs to be on call. Not our jobs. In a saner world, that alone would be cause for unionization.
1
I think the thing I disagree with Uncle Bob the most on, is this 4-6 line function heuristic. I almost wonder if he’s doing a bit, trying to counteract the past tendency of functions hundreds of lines long, but such over-abstraction makes code difficult to read. Performance is less of an issue because the compiler should just inline those microfunctions at the call site. My heuristic is, functions longer than a laptop monitor width should be very rare, and functions should do something useful. I do generally like his “functions should have one job” principle, but sometimes that one job is orchestration (ie main()). Creating some _main_event_loop() method is just madness imo. There should be a metric capping the depth of the call stack in your code (squashing 3rd party library calls down to 1), to avoid architect astronaut hyper-abstraction brain rot. But then I guess RPCs to a hundred different microservices have made that analysis quite difficult these days.
1
We do zero based indexing because array access notation is just syntactic sugar for a pointer offset, and adhering to the standard is very helpful to the programmer. Starting your index at 1 is as nonsensical and frustrating as starting it at 7 or 69.
1