I think its easy for us to think we can understand what a program is going to do when we're dealing with high level abstractions. I think if we really came to grips with everything the program is doing all the way down to the hardware level, we might have less confidence that we can predict what its going to do with 100% accuracy every time, even in the case of supposedly simple programs.
Well, of course at the real hardware level there will be some non-zero amount of nondeterminism, but the error correction steps that have been implemented are enough to make the probability of it behaving contrary to the design of the hardware, low enough to be pretty negligible.
And if you want additional assurance (due to, e.g. the computation being very long) you could probably use some cryptographic techniques to produce a certificate that the output is as it should be, and you can check that certificate as many times as you want to avoid possible random hardware errors in the process of checking the certificate.
I think there are two ways to interpret this question, not sure which one you meant.
Question one: if you don't remember being conscious, were you actually conscious?
Seems the answer should be yes. Just because you don't remember something doesn't mean it didn't happen.
Question two: can you be conscious without something like memory?
This one I think may depend on future understanding of what consciousness is. It seems like consciousness without any memory would be consciousness without anything like perception.
There's a lot of wisdom in this. In addition to reserving some capacity for when true high-value work comes along, I think software engineering is not the type of job that you can do well if you're constantly busy. Trying to write some code as quickly as possible seldom yields the best design. This article doesn't get into another important aspect of this, which is how to get away with working at 80% capacity without getting in trouble with your manager. This takes a bit of care around communication and estimation of work. One of the first good pieces of advice that I got from older seasoned developers when I started my first real programming job has stayed with me to this day: take your estimate of how long it will take to do something and double it before communicating to your manager/users. As you get more experienced that ratio can come down to maybe 1.5x instead of 2x, but the principle still applies.
Kent Beck (maybe in Good News Factory but also in talks) that his team would never commit to more than half what they think they can get done. This is a good way to sustainability. And that's the optimization and precedent to set; that we are here for the long term, delivering steadily at a sustainable pace. It's a long game, and over promising only runs down trust, which is your biggest means too getting the space we need as Devs.
Under promise, build trust that we can do what we say, earn the space we need to not burn out.
Honestly the more senior I get (Lead), boundary setting and preserving my attention; not burning out, _is_ the job. Because there are myriad ways to do this to yourself.
Yep, if you want to run a sustainable business you don't look to fire on all cylinders all the time, but that's the rub, almost no owners are looking to run a sustainable business anymore.
Most people either want hypergrowth idiocy or to be bought by the people doing hypergrowth idiocy.
Setting consistent expectations means you can plan, you can actually reasonably budget, you can have predictability in your business dealings - if you are trying to run a good business these are all real features instead of "puts out more code that might or might not make us money, but at least we were pulling all nighters and adding perceived meaning to our lives!"
AI has made this way worse - now the thinking is "well, the agent is doing all the work, why can't the engineers make sure it is running on all cylinders all the time, churning out useful code"
If students are allowed to use AI to accomplish their goals, then I think the real question is why should they go to an expensive university for four years to learn how to ask AI to do something?
very fair question. But that's on the university not the students, as in the faculty shouldn't be complaining about the students, but adapting with the times.
The title may be needlessly aggressive. I think Rovelli could have framed this better by acknowledging there is a hard problem and then arguing that we have a better chance of resolving that problem by seeking a better understanding of conciousness as a physical process before drawing metaphysical lines in the sand. Or as Rovelli memorably puts it: "How can we know now what we would understand if we were to understand something we do not currently understand?" His point is that science is inextricable from subjective experience and subjective experience is inextricable from the physical world - a point made over 100 years ago by William James.
I'm currently reading (and enjoying) "How Life Works: A User's Guide to the New Biology" by Philip Ball. It proceeds from the bottom up: the first half is all about cells and smaller structures. Pretty readable but doesn't gloss over complexity.
I don't think the author is missing this distinction. It seems that you agree with him in his main point which is that companies bragging about LOCs generated by AI should be ignored by right-thinking people. It's just you buried that substantive agreement at the end of your "rebuttal".
The thing that most surprises me is that IDEs don't have a standard protocol for this, so you basically need a custom test runner if you want one-click "this snapshot failed; update it" self-modifying tests.
I wrote WoofWare.Expect for F#, which has an "update my snapshots on disk" mode, but you can't go straight from test failure to snapshot update without a fresh test run, even though I'm literally outputting a patience diff that an IDE could apply if it knew how.
Worse, e.g. Rider is really bad at knowing when files have changed underneath it, so you have to manually tell it to reload the files after running the update or else you clobber them in the editor.
I am envisioning the PR arguments now when the first instinct of the junior developer is to clobber the prior gold standard outputs. Especially lovely when testing floating point functionality using tests with tolerances.
Some things should be hatefully slow so one's brain has sufficient chance to subconsciously mull over "what if I am wrong?"