Another concept is the relationship between current, voltage, and resistance. For example, I always failed to understand why longer wires mean more resistance while thicker wires mean less resistance.
This manifest in all sorts of ways - from people not being there when you need them the most, from friends dying off as soon as proximity changes, to how and why get people get promoted in jobs. This isn't necessarily bad, but if you don't know how to navigate this it can be quite painful and confusing.
2. Representation matters.
I knew this for a long time, but it didn't fully click until years had gone by and I realized I had unconsciously held myself back from pursuing a wide range of things because I just didn't see anyone like me there.
3. Rules in life are just constructs that we as humans have created.
Starting a business helped the most on this one. That's when I started to see that "rules" or "procedure" are all made up and exceptions can always be made.
(Edit: typos)
For those with anxiety, one of the best pieces of advice I ever received (that also took me years to internalize!) was the corollary to this: nobody is thinking about you in a critical way, at the level that you are criticizing yourself, because they are their own main character. Which is incredibly freeing, because the anxious person’s assumption that one embarrassing moment will turn into them obsessing about your failure… is absolutely nonsensical, because the only person they are obsessing about is the main character to them, themself.
“The ultimate, hidden truth of the world is that it is something that we make, and could just as easily make differently.”
> Starting a business helped the most on this one. That's when I started to see that "rules" or "procedure" are all made up and exceptions can always be made.
This is a big one that I learned through the same experience. Everything is arbitrary, the rules are made up and the points don't matter.
It made me appreciate those who recognize this, and in turn treat others well, even when shit hits the fan metaphorically, and I have absolutely zero tolerance for bullshit hoop jumping and assholes. I know you don't have to play by that book, so I won't, and I'm happier for it.
Here is just one example of the total wrongness of something I tend to be automatically sure of: everything in my own immediate experience supports my deep belief that I am the absolute centre of the universe; the realest, most vivid and important person in existence. We rarely think about this sort of natural, basic self-centredness because it’s so socially repulsive. But it’s pretty much the same for all of us. It is our default setting, hard-wired into our boards at birth. Think about it: there is no experience you have had that you are not the absolute centre of. The world as you experience it is there in front of YOU or behind YOU, to the left or right of YOU, on YOUR TV or YOUR monitor. And so on. Other people’s thoughts and feelings have to be communicated to you somehow, but your own are so immediate, urgent, real.
David Foster Wallace
Corollary to this is that human rules aren't like programming rules and that the words that make up the rules get interpreted by a human.
One thing that this means is that you can't "hack" a human rule by picking the semantic meaning of a word which works best for you. You have to actually convince the arbiter of that rule that they agree with your meaning. If they don't, and they have a hundred years of legal ruling behind them that they've read and you haven't, then you're screwed.
And good human rules usually do have exceptions to them ("yelling fire in a crowded theater" being the most well understood). This is also why "the exception that proves the rule" is not a stupid saying.
And this is a feature and not a bug. The worst rules we generate are usually the ones that require the human arbiter to be rigid and mechanical. That tends to produce injustices like "three strikes you're out" and "mandatory minimum sentencing" (or any attempt to make the handball rule in soccer/football be objective and just winds up making it worse).
So when you explain something, 10 people hear 10 slightly different things as their own experiences and biases, and even hopes, interpret your statement.
That’s why being able to communicate accurately, clearly, and concisely is a very difficult and important thing. If you can do it tailored to specific groups and with humour, bonus points.
But for example, seeing that a philosophy major can have a successful computer science experience
We are more likely to pursue careers or interests if we know someone (and are friends with them or related to them) that is interested in the same thing or has had experience in the same thing.
To me, that would be the other way around: a chance to stand out and be one of a kind, act in a way nobody else had acted before, and reap the benefits of being unique, or the first at least.
(Seeing this as exciting or frightening probably depends on your level of sociopathy.)
Strange, I had the opposite encounter. I realized the only thing keeping me from doing things was myself. There are definitely real barriers (hiring quotas, affirmative action, etc.) but without artificial constraints the only thing stopping you is you. You might feel a little uncomfortable but that's something easily overcome - and almost like a superpower when you realize you can overcome an external locus of control.
But for example, seeing that a philosophy major can have a successful programming career, can encourage others in the humanities to see themselves do it too.
Or seeing someone with ADHD run a business successfully and overcome executive function challenges, can also help others with ADHD.
As a well represented person I can tell you this has nothing to do with representation, its just that the vast majority of humans in the modern world have close to zero agency and/or don't think they can actually change things.
I remember what made it click: I was designing an animation system, which had a bunch of different interdependent moving parts. Once I started treating each part like an object and letting it manage its own state it all just clicked. I started with this massively complex functional-like system that managed four or five different motions, but once it was broken into objects most of the code just fell off and it became a nice clean system.
I was super proud of it at the time, but it's pretty bad by my current standards.
You could build a chatbot that supports Discord, Slack, and IRC dynamically at runtime, or a web app that can use multiple different database engines, or a social network with multiple types of posts that can all be rendered in a main feed, or a bunch of other things. In all of these cases you can also take advantage of this kind of dynamic dispatch to inject mock objects for testing, as well as theoretically have an easier time swapping out a layer if you want to change a dependency.
What really frustrates me is that almost none of the OOP instruction I've encountered ever showed these kinds of real, practical examples. They always over-emphasize harmful inheritance-based approaches and never really explain composition. In college we learned about OOP by building a little text-based RPG thing with different types of monsters implemented as subclasses of an abstract base class, which left me feeling like there wasn't much practical use for it outside of game development.
It wasn't until my first internship that I saw a real-world use of OOP, in the form of a giant Spring Boot monolith with tons of dependency injection. Eventually, after staring at that for a few months, OOP finally clicked for me, but I still find it annoying that nobody ever tried explaining this using practical, small-scale examples.
Never forget who is in charge. Deferring to a style dodges responsibility for your choices.
At small code sizes, OO does not really have any apparent advantages to doing everything imperatively or in a hacky way. In fact I’d argue it tends to overly complicate and obfuscate things. But there is a point at which you really start wanting OO instead because you can no longer reason about the binary as a whole, and need to start thinking in terms of interfaces with separation of concerns. Even if you did understand the whole state, there are too many people working on it to keep up with changes to the whole state in a way that lets you reason about the thing as a whole.
At my first job (and in college) code never reached such levels of complexity so OO always seemed like some dumb fad to make things more complicated than necessary. I still that is often the case, but now I absolutely see the benefits when they present themselves.
It's common for a lot of online resources (I don't know about university) to provide introductions to programming using OOP, which I think is a terrible mistake. It fills beginners' heads with all sorts of incorrect, fanciful ideas about how computers work and what happens when a program is executed. It's also difficult to know how to use OOP concepts and structures correctly without knowing why they're convenient. I strongly believe you need a good understanding of the technical motivations for such constructs before you can actually use them with good effect--otherwise you're simply relying on imitating patterns or taking certain things as foundational when in fact they are not. I think functional languages and strictly imperative languages are far more appropriate for a first programming language.
It "clicked" much later, in two stages, using languages that were "kind of like" OOP, even if not rigorously so: LabVIEW, HyperCard, Visual Basic. I think VB had a decent strategy for introducing OO to the rest of us. Out of the box, it was "object based," meaning that you could use classes that had been created by someone else. For a bit more money you could buy the version that let you do full OO, but I never did that. But by being a user of objects, it gave you an idea of what you'd want if you could create them for yourself.
Nowadays of course people range from being bullish to bearish on OO, and I've had the experience of doing it badly and making a mess of things, when a procedural or functional model would probably be better.
Kind of a lesser issue is that I finally grasped how to work with a modern OS after laying my hands on the first couple volumes of the Win32 programmer's manuals, which I think were vastly less forbidding than Inside Macintosh.
Of course, if you want to go the whole polymorphic route, i'd suggest using something like c++, but the key ideas are really structures, and functions that operate on those structures.
I still frequently see code examples online that are written using classes that don’t need to be. I imagine this is the reverse problem: people from languages like Java thinking everything has to be in a class.
It feels like something used an awful lot in ways that don't really add any value. But again, it must just be my lack of understanding. Maybe one of these days it'll click in.
I'm not sure if it was years, but it wasn't immediate. I just didn't understand why dependency injection was good at first, and not just someone's weird personal code style choice.
I thought it was just people being "Enterprisey" which I'd encountered many times over the years.
Once I committed to unit testing, I realized how necessary it is.
Unfortunately I still encounter customers who haven't bought into it and as a result have untestable code. It's so hard to go back and retrofit testing.
But that's a long way from glorious full DI containers where you never call 'new' in your code anywhere and all object creation can be dictated by config. I suspect that must be only the kind of thing that people who maintain 1,000,000 line codebases that are at the center of massive bureaucracies.
The idea that I take advantage of good abstractions and I send those objects into my classes that need to perform actions via those abstractions made a lot of sense. Helps enable good polymorphism, as well as unit testing and other things.
I don't think I'm doing it justice, but the idea took a good while to understand there reasons behind it. Some books that helped me grok the idea were
- Patterns of Enterprise Application Architecture - Clean Architecture - Architecture Patterns with Python
along with running into problems that could be easily solved with a decent abstraction at work and learning to apply it directly.
I always hated testing and I still do, but every time I commit to doing it right I catch so many errors before QA.
The term is unfamiliar to me -- is it related to "fault injection"?
f(x) = 2x
g(x) = x + 5
It should hopefully be obvious that "nesting" the two isn't commutative: g(f(x)) = (2x) + 5 = 2x + 5
f(g(x)) = 2(x + 5) = 2x + 10
One miraculous fact here is that no matter how many functions we stack, we only ever have two terms: x and a constant term. Thus, we can represent this 'linear system' in terms of its coefficients, as long as we agree on an order: e.g. 2x+5 might become "2,5" in our system.You can do "multiplication" on these packs to compose them together, and even though the rules feel obtuse in abstract, they follow the logic of function composition. A matrix represents a similar function transform, only it's in 3 dimensions, and in order to handle rotation, it needs to swap around x/y/z. So an identity matrix is really saying:
f(x) = 1x + 0y + 0z + 0
f(y) = 0x + 1y + 0z + 0
f(z) = 0x + 0y + 1z + 0Or you can learn about them in school and be given neither a real-world use case nor a rationale or derivation for mmul.
Or you can encounter them in college, and there the experience depends on whether it’s a good or bad kind of a linalg class. But even there – after all the painstaking definitions and lemmas and derivations – it’s easy to end up not grokking how mmul does what it does even if you grasp all the building blocks – vector spaces, bases, how matrices can represent bases and systems of linear equations and linear operations on vectors and how they’re all kinda equivalent.
I was a total STEM math nerd in school. I used to frequently complain how I don't get what's the point of it, or how it's a waste of time and I'm learning nothing. I still think the emphasis of school was off, but I get the point of it now.
Stories are like code for humans. You can't tell someone what it means to be good or bad, or to give them a course in philosophy and they will become good people. But you can tell them a good story, that engages with them emotionally, and it will change their perception. And history shows that in fact, those stories being told and repeated aren't just interesting minor curiosity, but they have shaped the direction of humanity and they are driving it. A single person with a single story can change history in such a way that it would be completely different without it. And some stories about stories need to be told as a warning so that people will not fall for those kinds of stories again.
Then one day the teacher didn’t want to teach and instead showed an episode of Connections, and I was blown away. Learning about how and why our science and technology became what it is was something I could related to and seemed actually useful. I still don’t care for military history, though.
Is that actually true? Do we have good reason to believe that people who study history/literature behave more ethically?
Really depends on HOW you learn it IME. If it's just regurgitating dates/names/whatever it isn't helpful at all, at least for me. If you establish that event x led to y because of z, it just clicks and suddenly makes sense.
For example, let's take hitlers rise to power: "He became the chancellor of germany in 1933" That is just about useless. "Hitler rose to power with the help of the nazi party, which was partially formed in response to the treaty of versailles' excessively harsh terms, leading to an extreme amount of inflation and a harsh drop in industry. This set the stage for hitler arguing to use a war as a means of getting rid of the penalties of versailles and bringing germany out from the slump"
For me, in school I was mostly taught the first variation.
Over the past few years, I've been teaching myself how to write better. I'm not talking about elementary syntax or grammar. I'm not talking about writing the traditional, American English five paragraph essay. I'm talking about writing longer pieces of prose, articles or blog posts or short chapters with word counts ranging anywhere between 1500-3000 words. On this journey of improving the craft, I realized that one of my biggest struggles was writing cohesively. Although I've been able to get lots of words on (digital) paper, eventually I'd get lost in my own web of thoughts, the article itself totally incoherent, no structure, no organization.
Constructing outlines and reverse outlines[0] has helped me tremendously. It's not easy ... but the concept itself is finally — years later — starting to click.
[0] - https://explorationsofstyle.com/2011/02/09/reverse-outlines/
Something I realised much too late was how delaying the move to the keyboard was a useful strategy. Now I mostly start with pen and paper, sometimes with a mind map if I really need to organise my thoughts, and only hit the PC once I have a pretty firm idea of what I'm going to say. I've even done first drafts in longhand, which feels like double handling at first, but there's something about that added filter of transposing from paper to computer that helps you reassess objectively what it is that you're writing.
This is a great way to refine your ideas before you write and makes it easier to develop the outline as an assembly of different notes that you already have.
An Executable Strategy for Writing: https://notes.andymatuschak.org/z3PBVkZ2SvsAgFXkjHsycBeyS6Cw...
The main insights for me were: - Using notes as a way to organize one's writing (by assembling ideas together into an outline, then filling out the details) to avoid writer's block. - Creating "logs" around concepts that extract useful ideas from ephemeral observations and distill concrete insights over time. - Using an "inbox" of new ideas as a way to focus attention and perform spaced repetition of concepts. - Organizing notes via tags, backlinks, and associations/outlines rather than as a hierarchy. - Incrementally iterating on atomic concept notes to form larger chunks in memory which allows thinking about more complex ideas and recognizing patterns.
It sounds dumb, but this year it clicked for me how big of a difference a poorly written text compares to a well written text.
Hope your training pays off, itsmemattchung!
Also, obligatory RiffTrax on outlines: https://youtu.be/yfcyVtD8-Dk
Save humans time.
Save humans time.
Almost no one I encountered bothered to actually explain anything. They simply regurgitated things and I guess expected me to somehow intuitively understand something or other.
My single largest goal when I'm teaching, is to find an appropriate analogy to a concept that my student already grasps, and bridge it to the new concept. Some fields make this super easy -- MechE and electronics, for instance, if you understand one, you're well on your way to understanding the other -- and some make it super hard.
Things like Repositories, Aggregates, Bounded Contexts, and so on are going to be a net drag on your system if you only have a few 100 kloc of code in a monolith. But they really start to shine as you grow beyond that. Bounded Contexts in particular are a gem of an idea, so good that Uber re-discovered them in their microservices design: https://www.uber.com/blog/microservice-architecture/.
(Edited to clarify the book author)
Both books are great. Read whichever one aligns with your practice best.
I recommend Wlaschin's book for anyone curious about FP, without hesitation. He's great at explaining things from first principles, without veering off into "monad tutorial" territory.
https://pragprog.com/titles/swdddf/domain-modeling-made-func...
- Aggregates are too heavy. You need to make the decision about what is or is not an aggregate way too early in the design process. Boundaries are fuzzy.
- Actual concepts don't exist in nicely packaged bounded contexts. Concepts overlap a lot. You need to make the decision about which concept fits into which bounded context too early in the design process. Boundaries are fuzzy. Things are kinda like other things. The definition of "Employee" is not the same in the Scheduling context as the HR context as the Payroll context, yet they do overlap a lot, and you can't just treat them as completely separate things. If you break everything down into tiny contexts to deal with this, you just make Contexts and Aggregates the same.
- Repositories are not original to DDD and I think are very likely to foster absolutely horrific SELECT N+1 or even SELECT N^2 or N^3 performance. You simply can't let one bounded context do all its expensive operations in a vacuum; not when you have lots of contexts and lots of operations. In a complex system, most parts need to be planning, not doing. The results of most operations should be a plan that you can compose with other plans, analyze, and possibly even have an "optimization pass" if you need one.
- Ubiquitous language is the right idea. If you take nothing else from DDD, take this.
My grandmother was a terrible narcissist. I loved her dearly and she had a lot of wonderful qualities, but The quality that stood out the most, sadly, was narcissism.
My mother was also a narcissist to a somewhat lesser degree. It didn't occur to me that I too was a narcissist until I was about 35 years old. It took waking up in the corner of the living room in my friends one bedroom apartment Early one morning to see it.
I had pushed away my wife and kids because in my mind all of my problems were their fault. I had blamed others for every thing that had ever happened to me or every feeling that I had felt. And in that moment I realized:
It's ME.
Everything changed in that instant. It was no longer just about me anymore. I stopped seeing the people closest to me as opponents and started seeing them as what they were, family. My support system. The love of my life.
As the years have gone by since then I have seen more of my past through that light and things have become so much more clear.
Understanding that my grandmother was a very damaged person who turned a narcissist to deal with it, then raise my mother similarly, help me understand two things. The first was that the things I blamed myself for in the past weren't my fault. Secondly, it helped me forgive them for some of the awful things that happened. I'm not saying it's okay to be a narcissist. But recognizing that their narcissism affected my life, and it was something that I could shed in my own personality was a serious life changer. And the funny part is that after I realized all of this, my debilitating depression essentially went away. And that was a big deal.
I also learned not even 2 years ago that I have ADHD which was like a light bulb moment for me as well because it explained so much of my life.
it seems more likely that there is a genetic/biological basis for this personality trait
Thank you for sharing.
Please continue to contribute here on HN, I really appreciated your comment and experience.
It made me click about the saying that science advances one funeral at a time. It is easier to rally people of similar thought than to change people of opposite opinion. Not impossible, just more difficult. It explains a lot of thing in my opinion.
1. It is easier to start a start up than to convince your boss to take a certain product direction. E.g to not pursue certain pursuit, as outlined by John carmack's departure from meta. The ultimate judgement will be whether YOUR idea survive rather than whether your boss buy your idea. And I prefer bootstrap, at least for now, for that reason.
2. Never attempt to change your spouse. Find the common ground instead.
3. Empathy is mostly about experience sharing. You can't have people feel something they never experience before. If you can empathize, it means you have experience to draw similarity between. Imagine teaching a 18yo to be a father, that's how preaching people to be empathetic felt like.
The caveman pressing the alarm button is something I think of a lot.
I presume you already know of this book: The Body Keeps the Score: Brain, Mind, and Body in the Healing of Trauma by Bessel van der Kolk.
When I was a junior developer I used to overthink and overdesign solutions, most of which was never needed. It took many years and a lot of battle scars to realize that less abstraction is more. Today I see a lot of juniors do the same mistake and I ask them to revise their designs to keep it simple.
Each abstraction has a mental cost for reading and understanding the code so I try to be sparing. Too many code bases in my youth were a nightmare to navigate because I could never find any actual concrete code.
It wasn't until maybe my third year of algebra that I realized an equation means both sides of the equation are equal to each other, which means you can perform any operation at all to both sides, and the result will still be equal.
I still remember that "click".
Entropy in classical thermodynamics is presented in a mysterious way that leads to confusion.
Entropy in statistical thermodynamics, however, is logical. Once one understands basic statistical thermodynamics, entropy isn't mysterious.
The book in my statistical thermodynamics class was An Introduction to Thermal Physics by Daniel Schroeder, which is an excellent book that I've referred to many times since.
The first time you study entropy, you won't understand it. The second time you study it, you'll think you understood it until you realize you didn't. By the third time you study it, you just don't care anymore and just use it.
10 years after graduating, and I haven't encontered entropy again after the second time, so you can guess where I'm at in this quote. But thank you, for now I know how to attack it if I ever need it again.Edit: but that was only after I had grokked Shannon's paper on information theory, which I felt was pretty intuitive.
One thing which held me back for a very long time was not following up with people who didn't show much interest initially.
I wasted so many good leads thinking it is impolite to follow up with people after contacting them once. My whole life changed once I understood the power of follow ups and understanding that most people are so busy that it takes at least 6 reminders before most people will take any substantial action.
The reverse is also true. People say a lot of things and most of the times you never cross the bridge or reach it. Nowadays, I rarely argue about anything and don't act on stuff until a person reminds me once or twice. This small filter can be like a miracle for saving your time and energy.
The principal element in sales is asking for the order. Everything, and I mean everything, follows from that. If you had been trained this way, following up would be second nature.
Quantum computers. I was so deceived by all the hype that it took me long to see it as SU(N) matrix product accelerator.
Zero knowledge proofs and Shamir transform to non-interactive protocol. The tunnel analogy did quite a harm to me, also the math was just unbearable (defining set of languages and etc). Only a year ago when I got an old paper on “Observational wallets” describing how to prove ‘log_g A = a’ and ‘log_g A = log_g B’ the whole ‘proving statement without revealing secret’ after long frustration and angst made sense to me. If I had encountered finding Vodo analogy first, It would have clicked much quicker to me.
I no longer know when I figured out this trick, but I have been using it for at least twenty years. I wish I had known about it earlier.
Then it all just clicked. I still remember that day all these years later.
Other notable mentions, in no particular order:
* Perfect is the enemy of good enough. Did n't really appreciate this idea until around 2 years into my career.
* How to be professionally displeased at something. Early on my career I would get way too angry at incompetent colleagues peeing in the pool, e.g. bad code, design, management, etc. I would complain quite a bit! It only clicked ~2-3 years later into my career when I figured that one's displeasure at a situation should be a function of both how bad the situation is and how able you are to improve it. When you offer constructive solutions to incompetence (suggest alternative algo, management style, library, tool, etc) whilst not actually mentioning what is wrong, instead of just fruitlessly reminding people of what they did wrong, people become far more cooperative and receptive, etc.
My tin-foil-hat pet-theory is that the relatively recent tyranny of low expectations and "participation award" society has on average made younger people much more sensitive to negative comments about their work. The extension of that is that people end up robbed of more detailed reasoning about what they did that was wrong.
People are interesting!
Hey thanks for sharing! Can you maybe expand on this in any form? I'd love to get that kind of analogy. Maybe you have a blog post about it? That'd be amazing!
I woke up at 2am with the intuition that light was like a lightning strike across spacetime, with no time and no distance between the emitter and absorber.
Why and how, though. What are the fully-baked implications.
https://en.wikipedia.org/wiki/Cherenkov_radiation
There, e.g. gravitational waves will be at c (in a vacuum), but wouldn't photons experience time there?
Edit: I suppose the photons are still actually moving at c
Really.
I was super annoyed and insanely annoying to work with for years.
Then I understood that difference is hard to cope with, but more often than not, good. As it trades some short term efficiency to long term one.
Same with your output. If it is dumbed down to a level everyone can understand it, you really learned it.
1. The Monty Hall problem
2. The Wason Selection Task.
I read about the first one eons ago and was impressed that Marilyn Von Savant was vindicated. Shoutout to her!
The name Wason was unknown to me but I bought a book called The Oxford Companion to The Mind (new in 1987!) and his 'task' was featured in it (pg. 639 in my edition). I spent a lot of time satisfying myself as to the answer and kind of got there. This Christmas I am reading Stephen Pinker's "Rationality" and the description of both have allowed the penny to fully drop. I hadn't been thinking about these puzzles for ages and then when they cropped up "unexpectedly" I grokked them easily. They "clicked". There is a certain type of wisdom that comes with passed time.
Richard Bellman just wanted to give a fancy name for mathematical work he was doing without being suspected of it.[1]
[1]https://en.wikipedia.org/wiki/Dynamic_programming#History
I had read a bit about different types of thinking but I didn't really understand it so well until I saw a kid who had amazing visual thinking capability and could visualize years' old memories in a very detailed manner. It has also been related to photographic memory according to some research.
[1] https://en.wikipedia.org/wiki/Visual_thinking
Nikola Tesla's Creative Thinking Secrets: https://www.sers.si/wp-content/uploads/2014/10/angle%C5%A1%C...
This could be some fun reading for you.
[0] https://betterexplained.com/articles/colorized-math-equation...
It's easy to think you have people skills because you listen to others and repeat their point of view back to them before telling them they're wrong. And unfortunately you can get quite far in the business world simply by being good at demolishing other people's positions.
As a mental exercise, a few years ago in meetings I started deleting the names from the running transcript I keep in my head. "Joe said X and Jane said Y and then I said Z" was replaced with "we said X, then Y, then Z." It was a remarkably effective device to rise above the "who's going to win?" attitude and instead think about the best way for everyone to proceed as a group. I suddenly started to get what people say about meditation and removing the "I" perspective from your life. If instead of being you, you're a quadcopter hovering near the person you call yourself, it's so much easier to get your ego to shut up and start listening for once.
Institutions such as Police, Universities, NHS, Scouts, MsF, Religions, Churches, YCombinator et alia have a hierarchy of internal loyalties in strict precedence:
* The Staff Member
* The Staff Member’s Family
* The Friends of the Staff Member
* The Colleagues of the Staff Member
* The Group within the Institution the Staff Member belongs to
* Wider Groups in the Institution
* The actual powerbrokers within the Institution
* The acknowledged Leadership of the Institution (may be different to actual powerbrokers)
* The actual goals of the Institution
* The acknowledged goals of the Institution (may be different to actual goals)
* Helping YOU in accordance with what the acknowledged goals of the Institution are…
Only when all the loyalties in that list are satisfied is there the slightest chance you may get anything positive from the Institution.
Despite the long list of higher precedence loyalties it is still frequently possible to have positive outcomes…
But because it is a long list of loyalties far more important than helping YOU, there are often breaks.
And because people and families and relationships are involved they can change at any moment.
So trusting Institutions to do the best for you or act honourably needs to be carefully weighed against the likelihood that will happen
2/2) Mortgages
How mortgage repayments change over time as you pay off some of it (YMMV)
This is a big one people buying houses recently due to FOMO don't understand: you're really not building equity the first few years because almost all of your monthly payment is going to interest. The "irrecoverable cost" of owning a home can often be higher than renting in some HCOL areas now, although I understand that people buy for more emotional reasons (e.g. not wanting to yank their family around to a new place each year to avoid being at the mercy of a bad landlord on each lease renewal).
When I first encountered recursive functions when I began learning programming I had a really hard time understanding what the function would do and how it would play out as it called itself. I couldn't think through the recursion and imagine what would happen. Nor did I really understand how to usefully apply one to a situation. I would either use a loop or a recursive function that utilized lots of external state to work.
When I later encountered functional programming, having learned programming with OOP languages, it was a real mind-bender. I finally started to understand it but when I encountered the need for recursion in FP, it really threw me for a loop. How the hell was I supposed to do this without external state? So it was that restriction that really let me understand how to create a recursive function that could return something useful with nothing more than the initial input. This new understanding also gave me a better appreciation of functional programming and the idea of pure functions.
[0] https://www.youtube.com/watch?v=dngqR9gcDDw&list=PLXD32Z5YYi...
1. The nature of variance in regression methods. The first time I heard about "soaking up the variance" in modifying stat models in brain imaging I had no idea what was going on. Then I spent a few years doing brain imaging and modified models to "soak up the variance" differently. Over the few years I came to grok the concept. I had a electrical engineering PhD colleague with an impressive resume who would argue with me about the effects of models. I realized that he knew the textbook stuff (which I didn't), but he didn't actually grok the concepts (which I did).
2. Once in an office was I mystified by hot spots and cold spots of wifi signal. One of my colleagues, a brilliant engineer, then explained to me what might affect the shape of the hot and cold spots, which is why he sits in certain places. I asked him if he had an intuition of how RF fields are distributed and he said yes, so I asked him how. He said, "I used to do a bit of tensor calculus".
————————
You know, throughout my years in business I discovered something. I would always ask why you do things. The answers that I would invariably get are: “Oh, that’s just the way things are done around here.” Nobody knows why they do what they do. Nobody thinks very deeply about things in business. That’s what I found.
I’ll give you an example. When we were building our Apple computers in a garage, we knew exactly what they cost. When we got into a factory in the Apple II days, the accountants had this notion of a standard cost, where you kind of set a standard cost and at the end of the quarter, you would adjust it with a variance. I kept asking: why do we do this? The answer was, “That’s just the way it’s done.”
After about six months of digging into this, I realized that the reason they did this is that they didn’t have good enough controls to know how much it’s going to cost. So you guess. And then you fix your guess at the end of the quarter. And the reason you don’t know how much it costs is because your information systems aren’t good enough. But nobody said it that way.
So later on, when we designed this automated factory for the Macintosh, we were able to get rid of a lot of these antiquated concepts and know exactly what something cost.
So in business a lot of things are folklore. They are done because they were done yesterday. And the day before. What it means is, if you are willing to ask a lot of questions and think about things and work really hard, you can learn business pretty fast. It’s not the hardest thing in the world. It’s not rocket science.
Steve was fortunate in that he could do whatever he wanted which isn't always the case for everyone else.
I don't think I really understood that completely until I started TA-ing.
Good problem sets that aid studets' intuition aren't easy to come by, oftentimes they're either too easy or too hard.
Then one day I was modeling something in a spreadsheet, and I thought to myself "you know, what I really need here, is 3rd axis to this spreadsheet". And for a few minutes, I thought I had invented a new form of spreadsheet/structure, and was considering trying to build a 3d spreadsheet program.
But, of course, suddenly everything I'd read about tensors and not understood before snapped into place, and I realized that this is exactly what they are (to be precise, this is a special case of a tensor, the contemplation of which caused me to understand what the general case is, and why e.g. a scalar is a rank 0 tensor, a vector is rank 1, a matrix is rank 2 my 3d spreadsheet idea is rank 3, etc).
It sounds obvious when you first think about it, but I spent a vast majority of my 20’s with a view of the world filled with “oughts” instead of “is’s”, especially when it comes to things I can’t control. I.e., people “ought” to behave a certain way, versus the way people actually behave. The way companies/governments “ought” to operate, versus the way they actually do.
Thinking in terms of “oughts” can really cloud your judgement in ways that you might not be totally aware of. I guess this is kind of like the “realpolitik” philosophy, but coming to this realization in my early 30’s actually made me a lot happier and less confused about why the world is the way it is.
This paper was the catalyst to me finally grasping some of the details: https://arxiv.org/abs/1812.01537
At some point I realised the connections between the two worlds e.g., graph operations as linear algebra [0] or the transition from continuous Laplacian to graph Laplacian via a discrete Laplace operator [1]
I'd been writing DSP code in C and MATLAB during undergrad while thinking I knew every possible aspect thanks to the deep study we had as part of coursework across all the transforms methods in our ECA & Communications coursework in India. Also, dad was a self-taught hands-on Analog electronics whiz whose day job was in Telecommunications Training, and I had uncles and aunts in the Telecom/Electronics/ATC industry, so I had all these resources from a very young age to revisit the concepts that were being taught to me in school, against practical applications over and over.
In week 2 or 3 of ECE490 at UofR, Prof. Heinzelman[1] broke a barrier that I did not know existed in my understanding of DSP. It was pinned to me realizing that the intuition between Fourier and Laplace transforms being the same. It was a moment that I haven't experienced since, in that I felt my brain got re-wired within that hour. It must help that her father[2] basically wrote the textbook on speech processing.
[0] https://en.wikipedia.org/wiki/Axiom_of_choice
[1] https://en.wikipedia.org/wiki/Tychonoff%27s_theorem
[2] https://en.wikipedia.org/wiki/Open_mapping_theorem_(function...
https://intercoolerjs.org/2016/01/18/rescuing-rest.html
much later:
SQL is something that is a permanent journey for me. It is a domain-specific language, so the nature of its use depends almost entirely on how the domain was modeled in the first place. Much of my interest has been drawn towards the modeling aspects and how we can arrive at schemas that business experts can tolerate.
Linear algebra properly clicked for me when I started getting into writing my own 3d rendering software. Systems of linear equations are absolutely everywhere. I didn't really tie together their use in control theory, DSP and graphics until I was forced to learn them "for real" to achieve my project goals.
- Expression as in someone expressing themselves, a tentative gesture.
- Evaluation as in scrutinizing something to learn what it's really about.
- Value as in "valuable".
We don't know if an expression is valuable until we subject it to evaluation, or we get an interpreter to interpret it for us.
So many useful groundings in various super important comp sci concepts.
* everyone has a set of habits that served them well during childhood, but may be maladaptive as an adult (e.g. getting angry is almost universal a sign of this maladaptive childhood habit rearing up). Book recommendation [0]
* the fear of hope is a key thing to understand when it comes to why people (myself included) hold themselves back. Taking the first step can feel terrifying because it demonstrates that one is responsible for creating one's own life. Book recommendation [1]
The only way out of this is to deliberately design your days so that you get the most out of them, even if it is fumbling at the start. Add in some times to relax here and there, but if you have a plan, it's much easier than staring at a blank Saturday with the vague goal of "I MUST learn JS/Rust/Go/Scala or my career will be over!!!" and then getting nothing done.
[0] https://www.goodreads.com/book/show/23129659-adult-children-...
[1] https://www.harpercollins.com/products/how-we-change-ross-el...
Lately I've worked for a number of companies where no one -- like seriously, absolutely zero developers on the team -- understand normalization. They may perform a shadow of it, because someone somewhere told them to, or some article said this is how you model data that looks like X, but they don't get it. Predictably, their data models are absolute garbage. Teaching them is an uphill battle because they don't care, they're not curious, and their web frameworks (cough Rails cough) have taught them to distance themselves from the database and treat it as dumb.
The other one was Rich Hickey's "Simple Made Easy", which I first watched in 2013. I enjoyed it even then but I didn't really understand what he was getting it. After working with, and building, some systems done in a functional style, I feel like I figured most of the ideas. That would have been some time in 2017 so, definitely took a while to soak in.
It took several near burn-outs and tons of hours of my life lost due to frustrations before I truly understood this. The world is what you want it to be.
Hopeless because everyone in the world is so selfish? You create the world you live in. Live selfless and see the world transform around you.
Frustrated you have to constantly interfere to make someone good at their role? You have to yourself believe they are the best in that role and then see them flourish.
Afraid your relationship might not workout? The fear itself will make your worst thought a reality.
Your life becomes extremely easy once you truly understand the world is what you believe it to be.
Note: There are of-course strings attached to this concept, but understanding the power of this is life changing.
I was part of a choir in high school and early college, but never managed to get good at this, even though I knew well how skilled singing should sound.
More than a decade later, when I was really exhausted after tending to my infant child I let out a sigh of the same type that we did as exercise back in the choir("Aaaaaaaah"). To my surprise it was almost effortless despite making quite the sound due to it being more or less at the resonance frequency of the bones in my skull.
And then it dawned on me. It's essentially turning yourself into an elaborate fart pillow.
Of course there's much more to that in things like posture and the mentioned resonance, but I had that covered from years of training. The only piece missing was using the diaphragm correctly.
Now I sing daily and while my range is pretty average, I don't strain myself any more and can do it for hours. Also the tone is just so much better now.
I've had many eureka moments when I suddenly realise what or why this thing from years ago is important.
I think teaching music theory with both what and why (with examples) is essential.
I still have haven't found a book that does a good job of it and keeps it interesting. Any recommendations?
Predicate Calculus is used to show that the path followed by a Process through a Cartesian Product space (created from all the memory variables in a Program) is the one you had in mind w.r.t. its Specifications. Suddenly you start to understand basic Set Theory, Types, Relations (Functions) and Logic.
I was fortunate to have a great teacher which taught OOP by focusing on design patterns, dynamic dispatch, composition over inheritance, etc, etc, the really foundational concepts.
I was too young and naive to fully understand all the concepts, I just thought writing Java was cool! Ah.
Many years later, I really realized how to apply design patterns to solve real problems in a large production codebase and it all clicked then and in retrospect that teacher was really amazing, I just was too naive to realize it back then...
I always found classical music to be a bit dead - beautiful, but dead : I guess I see it as a dead language, like latin or greek. The jazz I was given was fully written, so it was dead too, except in a few cases where I was supposed to magically improvise.
Then I 'got' Jazz, 25 years later : it's entirely about learning the language and grammar and vocab of music, and speaking it, creating new sentences and expressing yourself. The process probably matters more than the style itself.
The biggest a-ha! moment I've experienced was in my Comptuer Architecture course when it finally clicked how you could build up a bunch of logic gates into a real modern computer.
Later I realised that the benefit isn’t the code, it’s the freedom you gain later in choosing the implementation. You can create an interface and add a simple implementation, then later swap it out for something more robust. All you’re agreeing to now is the contract of what needs to be done, without any restrictions on how.
Sad that my math education was just focused on “memorize steps” for concepts that weren’t clearly explained.
1) I learn rote.
1.1) Almost no improvement.
2) I "get it."
2.1) My development in that area suddenly explodes.
This has happened with almost every software concept, from calculus, to Structured Programming ("Whatever will I do without my precious GOTOs?"), to Object-Oriented Programming, to Design Patterns, to Protocols, etc.
It usually only takes weeks or months, but I suspect some have taken years.
The former is for dealing with any situation where we can't control the inputs and outputs. The latter is for when we can.
*"Grant to us the serenity of mind to accept that which cannot be changed; courage to change that which can be changed, and wisdom to know the one from the other."
The other Windows-related idea that took an embarrassingly long time to work out is device / printer / memory contexts.
It wasn't until late teens/early twenties that lots of those piece of wisdom went from "cliché phrases you've heard all your life", to (often) deeply impactful aspect of human conditions.
The "road to hell" idiom explicitly didn't click until I had enough experience with counter-productive efforts who looks good on the outside, but actually fail to take into account a more nuanced reality.
It also kinda works with the distinction between "values I believe in" and "arguments articulated around shared values". Being able to disagree on something even when (especially when) it's invoking values I believe in is one of the most important thing I've gained as I matured, and yet it needs experience to 'click'.
i must have encountered it during my computer science classes and i certainly did some form of oo programming with LPC in MUDs, but only when i was programming modules in Pike for the Roxen webserver, it really clicked how oo programming worked.
in Roxen each http request causes a request object to be instantiated which lives for the lifetime of the request. further, each Roxen module gets instantiated as an object for the lifetime of the server process. the request object would call module objects to process the request. the modules would make changes to the request object which would produce the response to the http request, whereas storing data in a module object caused it to be persistent.
i have been working on this for a while when one morning i woke up with a literal eureka moment as i realized how objects and encapsulation worked.
this happened a few decades ago and it was the most clear moment of this kind that i can still remember.
Sometimes you just have to go on the journey to understand what stopped you getting to your intended destination.
It took me a while, but once it clicked, everything changed. Programming became a process of data consumption, transformation and then presentation. It was if/then/loops/classes/libraries/languages before that.
2. Entropy
The example of the messy room that gets messier with time is probably the worst. Entropy is everywhere (in real life or in IT); and it’s actually the reverse of that example. For me now, entropy is life.
3. Bitcoin
I was quite a crypto/bitcoin skeptic back until 2014-2015. The whole thing seemed like a ponzi/pump&dumb scheme. Until I read the book “Mastering Bitcoin”. It goes into the details of how Bitcoin works. That’s when Bitcoin (as a cool technology) clicked to me. I still see the trading activity as suspicious but I made my peace with it as humans doing what humans always do: speculation.
i was properly introduced only to oop, and grasped a little of fp here and there, especially learning go and javascript.
what i consider a 'click' for me is when i realised that all of these paradigms are interchangeable. like, an abstract method is just a function, or a function signature is the same as in interface with a single method.
after that i write code however it feels more appropriate for the situation i am in and don't think too much about fancy words and patterns. it really feels like programming languages are becoming 'native' for me.
I have tried hard, and can't for the love of me understand what lies at the bottom of trade, what is the base value of assets / activity. It just doesn't click.
Questions like:
- Can a services based economy work if the consumers of the services weren't producing some non-services based value ?
- How can there be any economic value in middle-men ?
- Is speculation on artificially limited assets (housing) just a pyramid scheme ?
- How is it NOT a zero sum game ?
- Is a Fiat currency just 'vibes based economics' ?
Many, many years later, I finally found the right combination of articles and videos where it finally made total sense.
Instant improvement and I wished I would have understood it sooner.
The problem is really the name, which leads to a particular mental image, which is incorrect, but difficult to break.
I think naming is important and for me, can cause enough cognitive dissonance that I can’t get past what something is called to understanding very easily.
A) Packing a binary tree into an array. Anyone that has attended an algorithms course has likely created a binary tree with nodes, leaf nodes, left and right child etc. Seen the pine-tree like sketch with a larger example where each node except the leaf nodes have a left and right child. So how do you pack this tree into an array and traverse it efficiently?
Well you turn it 90 degrees side-ways, slightly shift all nodes on the same level so that none align and put them into an array by going from leftmost to rightmost. (or other way depending on if you shifted 90 degrees or -90 degrees). Congrats, you've packed nodes into an array. How do you traverse it? Our root node is at index 1 and if you packed the array correctly then `idx = (idx * 2) + 1` will move down one side and `idx = (idx * 2) + 0` moves down the other. I don't have a good visual explanation of this but you can think of the integer/index as a bit-sequence describing when in the tree a left vs. right path was taken (with the exception of the root node).
B) Anti-example: Ford Fulkerson algorithm for finding shortest paths between all nodes in a graph. The algorithm is basically just three for-loops stacked on top of each other, but I still can't grasp why it works. Something with dynamic programming and incrementally building on prior established intermediate paths. The algorithm is truly the product of a beautiful mind.
Decentralization is a key feature of blockchain technology, and it refers to the fact that the blockchain is not controlled by a single entity or organization. Instead, it is maintained by a network of computers working together, and every transaction is recorded on a distributed ledger that is available to everyone in the network.
Realizing the potential implications of this decentralization - such as greater transparency, security, and accessibility - was a big moment for me, and it solidified my belief in the power of blockchain to transform industries and the way we do business.
If you're interested in learning more about blockchain and decentralization, I highly recommend checking out Rather Labs (https://www.ratherlabs.com). We're always looking for passionate people to join our team and help drive the adoption of this exciting technology.
For any professional educators or other folks more familiar with this I am about to butcher this concept I am sure but my layman's understanding is the following. Basically rather than a bottom up approach to learning it's a top down approach where you see the whole picture first rather than each piece and then dance around it until you just "get it". Think of imagining a house and then learning about it until the entire house system makes sense. You might imagine the house, then learn a large "chunk" which is the foundation, then another chunk which is the plumbing, etc. etc. A more typical learning method might be you learn what a brick is and then you learn how they're put together, then you understand a wall, etc. etc. This style of learning is more common in folks on the ASD spectrum but isn't exclusive to ASD folks. I find for me I'll encounter a concept, then think on it periodically over some period of time until one day I just sort of "get it". It's not better or worse than other ways of learning but it just means you need to approach things differently to learn more efficiently.
Maybe someone can direct me to a video to help me develop a deeper insight?
So the topic that took me about 2 years to get at this inefficient setup, (had finally gotten a sam's teach yourself in 24 hours at some point iirc) was pointers. I could never grasp them. It suddenly came to me one night when reading something about letters that it clicked, the concept had something to do with delivering letters to houses and each house has an address. Can't recall the exact details but man was it an enlightening moment.
I googled pointer mailbox analogy and this is very close if not what made it click for me - https://www.eskimo.com/~scs/cclass/notes/sx10.html
One New Year's I finally had a girlfriend I could be authentic with, we were at the city's 'First Night' party, so different activities all over town, and I told her 'I really want to go dance to the big band in the grand ballroom. But I am a horrible dancer and every woman I have danced with has made fun of me'. She was down, was patient, and it was one of the most fun nights of my life. After that we started taking salsa lessons. So just dance. And if the people you are with make fun of you, don't stop dancing, stop being with those people.
* Example: Junior prom, slow dancing with my date in her fancy dress with her $200 hairdo. The gum I was chewing (because I took her out to sushi, which she informed me was gross, and therefore would not kiss me until I got the taste out of my mouth) somehow attached to a hair of hers in my mouth. Before I could unstick it she flicked her hair, yanking the gum from my mouth and into the rest of her long hair. Fun times were not had by all.
The idea that the expansion universe is akin to the surface of a balloon expanding (albeit in 4D).
I don't know why. It is so absurdly simple in my mind now. But when I was first told this (after naively asking where would the center of the expanding universe be), I just couldn't put my head around it, it seemed absolutely gibberish to me at that moment.
2. Quantum computing
3. Godel’s Incompleteness Theorem
4. Denotational semantics
In all four cases, I make no claims to real expertise. However, in each of these cases there was a powerful moment of epiphany, when after much groping in a conceptual fog a light seemed to turn on, and an essential clarity, simplicity, and intuition clicked.
Man, that took me a while. The solution: A and B have different notions of simultaneity and won't agree on which events occur at the same time. In particular, they won't agree on time measurements.
In hindsight stupid, but it took me embarrassingly long to understand that a function just takes a value for x, calculates it with the rest of the numbers in the function and that way basically assigns a y-value to every x-value. No idea why it took me so long, I didn't have any similar problems with high school math
Gaining a better understanding ultimately just took a lot of time playing with the equations and understanding how measurement and process noise/uncertainty get incorporated into the Kalman gain, and how that in turn affects the updated state estimate - e.g if you have zero noise in the measurement, you end up fully trusting your measurement. This tutorial [1] is the one I ended up studying. This is a case where memorizing the equations (with the help of Anki) helped me reflect on them and keep everything in my head long enough to improve my understanding.
- abstract interpretation. It was at least a year after I first heard of the concept that I grokked it enough to try to write my own, and it wasn’t until many goofy failed attempts and something like 6–7 years that I actually understood it enough to write a good one. And then it was another 5-6 years before I understood the theory well enough to understand abstract interpreters designed by others. So, like, that took me more than a decade to understand. Maybe I still don’t fully understand it.
- SSA IR design. It’s so easy to understand the facts of what SSA is, and it’s not that hard to use an SSA IR designed by others. But it took me over ten years from when I first read the papers and did my first attempt until when I actually got it. And I still feel like there are aspects of SSA that I don’t fully understand.
By fixed point I mean something like the "Lawvere's fixed point theorem". https://ncatlab.org/nlab/show/Lawvere%27s+fixed+point+theore...
I have a braindump on this https://github.com/adamnemecek/adjoint
I also have a discord https://discord.gg/mr9TAhpyBW
1. A clear dialogue with oneself is establishing certainty about the inner self
2. Certainty with the inner self enables one to see the outside in a clear way
3. That clarity contributes to confidence in one's actions.
The model itself is easy enough to grasp. But concretely understanding what it implies about how I should be studying took much, much longer.
The author wrote of survivors coming home after a harrowing near-death experience and realizing that survival is one day at a time, even in the comfort of your own home. Once you taste true survival it may haunt you. Survival is an easy concept with subtle and deep physical and mental consequences.
Kind of reminds me of David Foster Wallace’s “This is water” - https://youtu.be/eC7xzavzEKY
I got wrapped up sitting there memorizing ins and outs of each language and the ecosystem, others compositions in the form of Apache and the like.
Now it seems bizarre we’d think of it as anything but add, div, compare of electrical state in a memory address. It’s not a 1:1 machine translation but it’s the abstraction that’s made me most productive.
A whole lot of baggage comes with software that I’m hopeful ML libraries will allow us to retire. Currently wrapping UI around OpenCV to make my own “Photoshop”, for example.
I really can’t see any other way of approaching programming as anything but a waste of human agency. There are social problems we could be focused on if we were less focused on butts in chairs cranking out code.
When I got out of my middle class bubble, made friends with people working multiple jobs and struggling to make ends meet, and experienced a period of financial instability; I began to realize that something wasn't working in our current system.
Then I started struggling with burnout and other issues and found that corporations were happy to just replace me. I also found that management wanted programmers to be replaceable cogs instead of professionals. At that point I started to suspect that the idea of a dignified professional lifestyle may not be true.
I observed that technology and products were getting worse over time. For example, Google search has become mostly useless and it's hard to find products that are made to be repaired. I concluded that the invisible hand and/or the price theory of value were not true.
Then I saw Republicans gain power and run up the national debt. I also observed that when wages actually started increasing the economy fell apart and the Fed started taking steps to prevent wage increases. I concluded that "free market" rhetoric was a lie.
At that point I looked for alternatives and found socialism. In particular the "social democracy" strains of socialism as opposed to those advocating central planning or anarchist organization.
I mean I get what they are and how they are used and could do operations with them by following the rules. But... I still don't really understand them.
One I’m working on still is the unfairness of life. I understand it is unfair down to the level of the cell but how to come to terms with that I still grapple with.
Thought that was about working extra hard to make money and CYA, but really it's about finding your own happiness, regardless of what it may be in a money / status / property sense.
> everything related to RSA & trapdoor algos
Like I go the rough idea and implications, but didn't "click" until I was trying to explain what the square root of 11 was to my nephew. Was helping him with homework and was doing everything in my head just fine until we hit that and I had to stop and think and it clicked.
Intuitively (perhaps incorrectly) I would assume that it's like trying to force a fluid through a skinny long pipe vs a wide pipe - the skinny long pipe will have higher pressure inside.
Or, the long thin wire has more distance for the current to travel (= more resistance), while the thicker wire has more "options" for the current to choose a path of least resistance (literally), tending towards a lower overall resistance compared to a thinner wire of the same length
At the moment I thought it was OK, fast forward a decade and it's one of the pillars of my business thinking.
I was probably in my late 30s or early 40s before I really grokked why that tended to be true. (I could blindly accept and grind through the equations to get the answers in college, but it was decades later that I developed a feel for why.)
2. The chain rule. I knew the actual rule from a calc class, but the intuition behind it didn't make sense to me until I read a couple pdfs on backpropagation
3. Money brings out the worst in people
I've always thought that homologated solutions are parts of a bigger whole, bigger "homo". Stating that the producing party has all the right knowledge to make the part fit and adhere to safety guarantees.
Now i understand more about why 1+1=2.
Also importance of reading books even later. My mother told me this all the time but school books were not the best choice. In high school I started reading fanfics, then occult books and finally I landed on self-helps and ones related to my SWE career.
It took me about 3 tries in taking QM classes to learn and understand that the whole thing was about continuous probability distributions (at least, the beginner, static stuff). And finally to understand how to understand what continuous probability distributions are, and how to use them.
Waking call:
Corollary: a place where there's a fat-ass book of "best practices" has probably lost its focus.
Like many, I learned Bayes' theorem for an exam. I even did well. But it clicked only when I was reading The Scout Mindset (by Julia Galef). I cannot really tell why. I think it helped me connect math formalism with more real-world examples outside of statistics.
It only dawned on me many years later that I was:
a. physically attractive to the opposite sex, especially during my teens and twenties, regardless of my ethnicity.
b. my blank expression was intimidating.
A prof. teaching a grad level course on parallel computing mentioned in class that even he himself took a few years to get used to program in message passing protocol like MPI.
Funny enough, even when I don't need to program in MPI extensively, after a few years my fear of writing in MPI just went away.
History is far richer than we tend to realize. So much is going on all the time; it’s impossible to grasp it all.
When I first saw it, I thought it was a process step that was unnecessary.
Then I thought it was a way to program visually, but generated code only works in narrow domains.
I realize that UML is tool to define your system, and it lays bare your assumptions, which is one of the hardest problems in computing.
By definition if you continue to progress (in career or life), you will be doing something you have never done before. This means everyone that we look up to who appears to be on a upward trajectory is making it up as they go.
Amazing book with mind blowing illustrations about life, purpose and spirituality. Changed my life. Every time I re-read it I discover something new.
During lockdown I attended a course that prepared students for IOI. I couldn't focus/follow at home via web conferencing. One year after I attended some lectures from the same course, but physically. I understood everything when it was explained in person.
• Basic concept of buckets in distributed hash tables. After reading BEP-0005 I was left puzzled and left the topic for some months. Reading a Wikipedia article about Kademila, first understanding static buckets and transferring this to dynamic buckets with splitting was way easier to grasp.
Had Statistics in college, but only understood it now that I use it to understand data.
I'd "understood" the concepts before, but now because I am:
- brushing up on my math to understand every equation or proof they drop in there
- reading them in combination with applied stuff that uses the same concepts, ie the "designing data intensive applications book"
- reading over them slowly, I want my fundamentals to be strong and etched into my head
Things are clicking in a way they never did before.
TL;DR - studying compsci concepts, slowly, from multiple angles (completely mathematical to practical engineering) is just a different level of understanding from doing one or assuming your mind will bridge the gap.
YMMV.
thankfully it became very clear as soon as I started having actual projects and noticing all the C apis I was writing would all look like
foo* foo_create();
void foo_destroy(foo*);
void foo_set_stuff(foo*, int);
void foo_bloberize(foo*);The wikipedia page for it explains it well.
Whether you define it as working on yourself, on your relationships, fixing up the house, the car, washing the dishes.
I guess I sort of lived as if there would be some kind of 'over the rainbow' someday when I could retire and just chill, but this year when watching 'Stutz' on Netflix, where he states that there are three inescapable things in life: "pain, uncertainty, and constant work," the work part really sunk in for me.
I've been watching my mother try to create a kind of peaceful cocoon with her new house and her manicured lawns and list of friends curated down to only the ones which don't ever challenge her etc, only to find that even nearing her eighties she constantly has surprises and challenges intruding on the peace she is trying to cultivate.
The tldr; of it is that I've been looking at work the wrong way, i.e. I've been trying to avoid it or push it away, but I feel I should embrace it. Some recurring tasks can even be sort of comforting in that it creates a routine.
I tried shader tutorials multiple times for years and they only started to click recently.
Only https://www.cduan.com/technical/git/ worked for me.
always seemed like a shitty expensive database for 7+ years
(2) Recursion