deltasepsilon
Although, this question kinda looks like a homework question in a philosophy of logic class.
I think you'll have better luck with an app that allows depraved rich people connect with desperate poor people in order to have them do their bidding. Easier to game-ify as well.
For the confused, this is sarcasm, or as the kids say these days, based.
More concrete advice would be to spend less time on tiktok and more time figuring out what you genuinely need, as it's easier to motivate yourself towards finding a comprehensive solution to it, as opposed to your present scheme of random, half-baked ideas.
"Young man, in mathematics you don't understand things. You just get used to them." —John von Neumann[1]
[1] https://math.stackexchange.com/questions/11267/what-are-some...
If you enjoy something, pursue it. There are some caveats, however. You have to get out of your own way. If you want to believe you can't do it, congratulations you have achieved your goal. If you expect everything to be below the cusp of hardship, sorry but it won't be that way. You have to allow yourself to wallow in your own ignorance and accept it. This, however, has to be WITHIN REASON. Too much of this and you will burn out. Sometimes the program you may be in may be beyond reasonable effort on your part. In this case, you need to find another way of learning that is more tuned to your pace.
In short though, you have incoherent goals. You want to do research yet failing that you want something high-paying. From my perspective it's hard to take you seriously. If you're unserious about this then I can't imagine you being particularly serious about your own development. Let's be reasonable here. You say, for example, "I'm not even looking for [...] people to tell me that I am smart enough [...]." GET. OVER. YOURSELF.
You seem to be lacking confidence. Do you think about OS concepts? Do you use whatever devices you use and say, "Hey, I think this could be better." Do you doodle ideas about how they could work and behave to improve your productivity? Great, you are in the right program. In time, you will learn tools, concepts, and theories to make your ideas real. If you're not curious or wondering about this already then find another major aligned with something you're naturally curious about. That said, sometimes the academic process will beat any love you had for the subject out of you.
If you're competent and have an above average amount of hustle, you can be successful at anything in a stable, modern, Western democracy... for now.
I'm scandalized. /s
This wasn't explored recently. It's been a year at least since this was discussed. The work comes from an academic researcher in a CS or Engineering department. I'm interested because it presents a much higher-level view of optimization beyond micro-optimization where people worry about such things as cache effects and such, which would be bound to micro-architectural implementation choices.
Ask HN: Looking for a Talk on Software Optimization
There was some academic research mentioned, I don't know exactly when, on HN related to software optimization. I can't seem to track down the source and need some help. From what I can remember, the gist is this:- How do you know your optimization is useful?- It could be fragile, dependent on compilers, etc.- Modelling in this research was done by modifying a concept of time. Something like...
[1] Umberto Eco takes on big lies and the human compulsion to hate, The Philadelphia Enquirer, Nov. 10, 2011. https://archive.is/sTIuk
As I said in my previous submission, I think this material is useful as a concrete, and from basic principles, introduction to category theory and its application to computation.
Programs as Diagrams: From Categorical Computability to Computable Categories
If you don't care, fine. You simply are only concerned with the utility of this so called "mathematics". But at some point, and with some sophistication, you get bothered about how well it all works and how some surprising connections are made that seem all too natural.
Then you end up writing an essay like Wigner. [1]
I write this to say, no wonder people are bothered about a "foundations". Whether it bothers you or not is immaterial, but you can understand why people get bothered.
[1] https://en.wikipedia.org/wiki/The_Unreasonable_Effectiveness...
This is very interesting, but unfortunately I have more mundane things to get to. Hopefully I'll find some time to play with your axioms and relearn whatever modal logic I once knew.
Are you saying that Löb's axiom, which states that the provability of "the provability of p implies p" implies the provability of p, necessarily prejudices some implicit assumption of consistency to the meta-language?
How so, and/or, what are the axioms, or derived properties, of this new notion of provability you have uncovered?
If so, Raspberry Pi has an organizational culture of outright lying, as opposed to simply speaking plainly. I know this is not Eben Upton speaking, but I've found him many times in the past being either evasive with the truth, or simply lying. It's one thing to not step of the toes of partners, or to not Osborne a product by suggesting a successor is nearing, but to be outright dishonest. Yuck.
This is very, very disappointing.
Programs as Diagrams: From Categorical Computability to Computable Categories
The book introduces a diagrammatic approach to the concept of a computer program and in so doing provides a concrete, pictorial view towards of a type of computational category. This, I feel, is useful to readers of HN because it provides an accessible path to category theory by its application to computation, something programmers implicitly understand.
From a cursory glance at the sample, the book seems very accessible for those with an undergraduate computing background. I would go as far as to say that if you are a bright, determined high-schooler with an interest in programming, you should be able to make some headway into the book.
The author's website has more details [1] and includes a link to a talk of his on related matters at The New York City Category Theory Seminar done earlier this year.
For some reason HN removes the end of the submitted URL which automatically takes you to the relevant location. Here is the URL again:
AMD Secure Encrypted Virtualization (SEV) Firmware Source
> The design of a program and the design of its specification must be undertaken in parallel [...] I wish I had followed this advice in 1963; I wish we all would follow it today.
sigh
I appreciate what you're saying, however, hear me out. Suppose we had a language with a defined semantics and a useable implementation. We could use that language to implement, say Rust, and in so doing have a semantics for Rust, a semantics defined by its implementation. The point is, to be principled, we have to start somewhere. Make that language basic so that we are capable of providing a semantics. Now, granted, the "semantics" we generate for Rust in doing so will be necessarily pessimistic, i.e. overly determined. But then one could develop tooling to "prune" the implementation defined semantics somehow towards an idealized semantics. I don't think anyone has seriously pursued this avenue of thought.
Also, I must add, I appreciate your thoughtful elision from my quote. I need to stop getting worked up. But truly, software feels like it's perpetually in the dark ages. We have such incredible compute power thanks to the tireless effort of hardware engineers, and still we're programming with the equivalent of "stone knives and bear skins".
Also, as I said on this item [2], Rust is no panacea. It's hard to argue this, since the overwhelming majority of programmers on HN are well and truly mentally oblivious due to poor education, but if your programming language does not have a semantics you cannot even begin to ask if your code is correct because the question itself doesn't make any sense. I am so exhausted at this state of affairs.
[1] https://cerberus.cl.cam.ac.uk/#%7B%220%22%3A%7B%221%22%3A%22...
Amen. I guarantee that Rust will regret not addressing this sooner. It's mature enough now that defining a semantics is more than appropriate.
If you have constraints, i.e. not enough compute, not enough memory, not enough storage, then you'll need a solution and, odds are, somebody has had the same problem before and it's been written up already in Knuth's TAOCP. Of course, the problem won't be exactly in the form it's been written up, but you have to have enough experience and knowledge to know the abstract form of your problem in order to figure out what parts of TAOCP would be useful to you.
Want a concrete example? Well, I'm in the generation that go to assume that storage was basically constant access regardless of whether you wanted to access the 1st byte, or the Nth one. New, high-performance memory like NAND flash, is weird because it's fundamentally unreliable. In order to make NAND reliable you have to do stuff, and some of the stuff you can do, makes NAND look like tape, and accessing tape is best done sequentially. Guess what TAOCP has? All these great ideas about maximizing random access to sequential media.
The most important future computing feature, in my mind, is what I will call "verified computing", because I doubt any concept in what is presently called trusted computing fully accurately captures what I am thinking.
At some point, let's say the early 90s, we (for some subset of we) owned hardware and ran software, which we implicitly trusted, on that hardware to get our work done. The operating system existed to isolate faults in one piece of software affecting another. Then, with the advent of the web, we began running software on our own hardware that, again, we implicitly trusted, however without the authenticity assuring properties of purchasing boxed software from some retail channel. The software we were beginning to run became adversarial to our own security. Parallel to this, the defacto operating system vendor (Microsoft) and the defacto silicon vendor (Intel) with pressure from other parties (mostly media conglomerations), decided that it was necessary to run software that was not auditable by us, the hardware owners, in order to protect certain interests of those other parties.
Now we own and operate computers that run software that we simply cannot trust, and our own data is processed by software that we can no longer inspect. I can discuss this more deeply, but I shall move on.
Due to this, Intel, and AMD provide server-grade silicon that is infected by our consumer, personal computing, past. Everything about the design of their system reeks of this baggage.
Oxide, of course, is trying to escape this. But fundamentally, x86 is infected. ARM, and RISC-V too, are infected because of influence and pressure of Microsoft to maintain security structures (based in the past) with specifications like UEFI and ARM ServerReady/SystemReady (and SBBR).
The security model for Microsoft and the broader industry, is that the user gets to run software on hardware (that they own) that the software vendor themselves can verify has not been tampered with, including remotely. Great, what about the owner of the hardware? How do they assure themselves they know what is running on their own hardware? The answer to this seems to simply be, well then don't buy the operating system and software you don't trust.
The problem with this is that even in purchasing the hardware and owning the product, we still remain the product. The success of Apple (through gardened hardware) and Google (through remote server processed user data) entrenches this viewpoint, and reinforces what silicon vendors provide to hardware designers.
Of course, Oxide's customers are different. But the very silicon that is available to Oxide is tarnished by this mindset.
So what do I mean by "verified computing"? Well, I've blabbed on a bit, so I'll try to be brief. For me verified computing is silicon that implements a specification that is software readable. This silicon is sold by a vendor A for others to integrate in their hardware, say vendor B. As a consumer, C, I purchase hardware from vendor B, but only have to trust silicon vendor A. The only way B can screw me over is by a denial-of-service where their hardware simply does not run the software I want it to. As part of purchasing hardware from B, I get a key from B (via A) that allows me, C, to contact A and tie the silicon to my private key. When I sell the hardware, I use the same method that B uses to provide the next party with a key they can use to tie the hardware to themselves. When I purchase software from vendor D, I sign that software with my key to run on that hardware. If vendor D needs to run software hidden from my inspection, for various reasons, they need to get my permission by having me sign their software in a special way so that software vendor D can trust silicon vendor A in that their software is running on their silicon in a way they believe is sufficient to preserve the security given the, going back to the beginning, formal specification of the silicon and their trust in silicon vendor A.
Sorry that the above is long winded. But this is the only future that is reasonably worth fighting for.
Briefly, how would Microsoft adapt to this system. Well, B provides you with the system firmware (for Microsoft operating systems). You sign that and install it in your hardware. Then you sign the Microsoft OS. The Microsoft OS verifies the firmware is acceptable and then runs the operating system. B could compete with other vendors by providing minimal, or modular, firmware which can be customised for Linux, other other uses.
Will this future arrive, I'm not sure. But I hope so. I'd love for Oxide to fight for it.