I present to you, my proudest philosophical interpretation:
What the actual fuck is this subject? No seriously
Eventually we will be able to answer this elegantly—for now it follows:
Computer science is the art of moving costs around. As simple as possible:
How expensive is it to do some amount of work?
Software engineering is mostly about deciding where cost should even live. Are they hiding? Nemo where are you? :(
The 5 Laws of Software:
- Cost never disappears, it only moves elsewhere.
- the relationship / deeply sexual marriage between time and space
- do work once, if we will pay for cost later. the law of preprocessing
- Abstractions will always hide and clot blood under the hood.
- Locality/myopia vs global system, how improving small scope may not benefit whole system. thus whole system > local
axes of truth:
**correctness vs performance(uber h3 hexagon)
simplicity vs optimization
generality vs specialization
ad hoc networks
consistency vs availability(not written)
------------------------------------------------------------------------------------
Axes of Truth:
Correctness and Performance on a seesaw Axis:
Correctness as in, the math derivation for a set of axiom fundamental truths, similar to philosophy, to justify from first principles→that given we propose initial truths or definitions, we can claim yes or no, this must follow. Ah yes that is true. Okay so fucking what
One of Uber’s excellent ideas for finding the shortest path in a weighted graph, or equivalently, who in my fart radius is the closest motherfucker to pick-up my lazy bitchass from this exact location problem….We can discuss in terms of correctness and performance. Girl, do you really care that you find the EXACT closest equidistant geometric point in the city for them to pick you up? Or are you really just spoiled asf, don’t feel like walking, and would trade your money to get to your location faster? Girl, I think we been knew.
With performance, even though we might not find the literal mathematical closest available driver to you everytime, does it even matter? Would you rather optimize for how quickly someone can deliver results, regardless if it was truly correct or not? See correctness definitely has its place. Where the deep theorem’s came from are important in the pure world, but when we take it to the applied world, we may want to sack a bit of correctness and “ideal-provable-case” for more Performance.
For correctness, Uber invented h3 spatial partitioning for the entire globe, which is to say, if you were to try and spatially partition the world into squares, there will exist “corner”-cases in which it will satisfy the square region, however, will ruin the skew in who is actually close. Not all regions in the square are of shortest distance, so… spatially viewing the entire map and layer a hexagonal spatial partition, then creates consistency across equidistance, maintaining correctness that we have a way to find shortest path geometrically, through how many shapes in distance are between you and driver.
Quite beautiful actually, think about how significant the hexagon is in math, and why in mother nature we see the hexagon again and again, along with its structural shapes, in biology we see it, etc etc. Relatively cool, and relevant in this topic for validating correctness.
The 5 Laws of Software:
1). Time and Space are deeply in love. This is the “true love” in novels they were talking bout….human marriage is just a debt instrument contract.
Yeah so I don’t why I’m interpreting it as a sexual marriage, but essentially time and space cannot, and will never be able to divorce each other. They are so deeply soul connected, it has Shakespeare whimpering.
I quote my prof, “if we can find a way to throw space at a problem, can we find a way to improve time?” Yes…In all cases? No. Proven→there exists problems with hard constraints, bounded to never improve. Mayhaps, shit like NP/P Completeness, lower-bound on sorting, etc.
Ie: Hamiltonian cycle, traveling salesman decision version, 3-coloring theorem in graphs, etc.
dem motherfucking wowza—we is maybe never doing better than that !!!... and if you figure out how to do better, congrats on the Millennium Prize Problem. And...we will write a wiki-fan-page about you, then name a theorem after your last/middle name. Ah yes! Splendid! The huliu-conjecture on exploitation !
Okay, “Often, extra space lets us move work around and gain time. But some problems may have intrinsic time hardness that space alone cannot overcome.” fuck off chatgpt.
In my autistic head, create big ahh structures→clever systems that exploit deep structural advantages→ that then may allow us to BANG: faster query time… BANG: lookup speed... BANG: don’t do that repeated bullshit work shit again.
Pay our fair ride once, never have to pay for that shit again..
2). Cost never disappears, it only moves elsewhere.
The transformation of cost. So basically, If you think you’re not going to take on the burden of doing the work, you’ll hot -potato-pass it onto somewhere else.
If you transfer that dreadful work onto other systems, you don’t prune/dissipate cost of anything—you transfer cost elsewhere and pay the price of sacrifices.
Just like how in science, energy cannot be destroyed—cost in computer science cannot be destroyed.
So translating + parsing Into GenZ Language:
You can’t HIDE the fucking ugly. The ugly ALWAYS EXISTS in systems.
Somewhere ten-feet balls shit-hole deep underneath, is how it ACTUALLY works–and girl…. it is ugly as fuck. Painful to debug. Painful to understand. Torture to crunch through.
There’s a reason why IBM and the earliest ARM64 Programmers were balding their ass off, and looked like they recently clawed out of U.S.S.R barbed wire prison—working on some T-34 1955 combat tank for the cold-war era—
And then when you open fucking IG Reels, some fake ass “tech baddie” is drinking some bitch-ass matcha talking bout some bullshit, “heyyy girlies..day in the life: pilates x coding collab” girlpop—
genuinely what the fuck are we on about today… Like—please in god’s green earth—get pinged at 3am in the middle of the night and start crying for 3 sets of 5.
Anyways—
You can only abstract over WHO is dealing with WHAT the damn hard ass work even is. Even if you paint and make things pretty for the user/client, the cost must be buried somewhere deep in the mariehanna trenches….
Yes you agree: Society, is built on hard work…if you think it is easy, it is because it has been so far fucking abstracted to you: who is viewing it, that everything that is ugly is hidden away from you. Kind of like how the government is an abstraction for the Vatican, Rothschilds, Rockerfields, Zionist, the 13 families–maybe the Illuminati(we don’t rlly know how the world works in the backend, just blackbox it whatever)—and the world leaders are the clients/endpoints for society. And the consumption of media is the dopamine/north-star metric on the application running to keep user retention high….oh and the world is a never terminating machine, that compiles information of lies and truths.
Is the single source of truth for the world then God? The all mighty Allah? We may never know how the real backend for the world works. Perhaps science, math, and philosophy have more work to do…
https://huliu.ca/blogs/gods-plan
3). Do work once, if we will pay for cost later.
Dynamic Programming. Prefix Sum. Indexes. Look-ups. Improved recursion thru Memoization.
How bout you fucking: remember solved pieces so future work becomes easy instead of recomputation.
you stupid goldfish ahh memory.
Yeah–theres more to talk about, like even if the current cost of operation is expensive, hopefully the expected value over all operations is decent so we get something not dogshit amortized. Whatever.
Incremental maintenance? Keep of track of shit on the fly? What a cool guy. Live, streaming shit coming at you, and you’re able to process, interpret, maybe compress/interpret, as data is ongoing? Also maybe:
Instead of recomputing everything from scratch, maintain the answer as data changes.
running sums, Fenwick tree / segment tree(idk what this shit is), maintain aggregates in databases.
Base Idea: preserve useful partial structure as the world evolves.
4). Abstractions will always hide and clot blood under the hood.
Yeah so briefly mentioned with how jeffery island works in the backend, this isn't a literal reference to the blood they were consuming from the children or bleeding from crimes, but more-so, on how Abstractions do not necessarily propose the single-source truth….
The complexity in which you are hiding, does not ever go away. It just keeps accumulating deep underneath. You cannot hide… You can run away….
You cannot hide from someone who actually knows the truth. And to me— the beauty of learning about computational or philsophy science, is in fact, learning about the truth. Like, learning about how select power is running america in the backend, and all of the users of the application of life are oblivious. Thinking of the exploitation and manipulation of the systems , in order to optimize for efficiency. Yk, what are the tradeoffs and time complexity of epstein island? concurrently handling events of children. nice, nice.
I mean, put it this way. Most of why we have computer science is because of the invention of War. Alan Turning’s real work with decoding helped defeat the Nazi, so now German's bright and ambitious lost, hiphop horray…
The investment and drive for scientific, technological deep discoveries, funded by society in order to conduct and acquire massive amounts of power to dominate over one another….I think at least is pretty cool. War is pretty cool, along with its intersection with computer science and theorems. I digress.
Some more about abstractions in a separate page here:
https://huliu.ca/blogs/abstraction
It’s like a big deal or whatever, and also a relevant axes or framework in business too. girl whatever.
5). Locality/myopia vs global system
So we can think in terms of systems, and its scope may be quite wide actually, and many parts do many little things, and the little scope may not even know of the existence of the bigger scope… yeah so kinda like society.
But in software, improving small scope may not benefit whole system. thus whole system > local. So what I meant here was,
Ideally we wish to benefit the whole system. So, your miniscule project that gets skips has scope over the actual company itself? Sure that's impact. Systems of an org chart intuitively not rlly a thing when enterprise is lean, unstructured, and not rlly operating-systems-like.
When the myopic or smaller scale “needle of improvement” cannot contribute to the greater system, should it exist? Should we try to adapt/modify the scope of the problem? Where is the problem? Is the problem microscopic? Or is it higher in the scope or org chart? What is going on, and where is it going on?
Something like that. might need to think more about it.