Seeing this [1], I thought it was something related to taking assembly instructions in the original code, emitting C statements that match the instruction, and then compiling that C code.
Your idea is much more accurate; see my sibling comment. It's basically using C or C++ as an intermediate representation for machine code, rather than trying to recreate the game's higher-order logic/structure or source code.
Normally with futamura's first projection the input is source code, and you partial-evaluate that source against an interpreter for that source, resulting in a "compiled" binary that has the logic of the source inlined into the interpreter (and hopefully optimized). This is similar to what Truffle does I believe, where you have an interpreter (written in java) and then during runtime Truffle "JIT" optimizes the interpreted program's AST against the interpreter's logic. All of this can be considered a specialization of the JVM running an interpreter interpreting your program.
In this case with "recompilation" you have a binary made to run on certain hardware. You then take an emulator of the hardware (registers, PC, etc.) and then "partial evaluate" the binary against the hardware emulator, producing a new program that contains a software emulation of just that specific binary.
So while you're still conceptually emulating the underlying hardware, you both avoid the instruction dispatch overhead at runtime (it's statically compiled in) and also benefit from the optimization passes of modern compilers.
I tried to do this out of undergrad (graduated last year). Many companies do both good and bad things to me, some more good than bad. The "best of the best" companies to me require many years of experience and are still competitive. I didn't really want an entry level job at an "evil" company, so I'm going to go do a PhD (in something unrelated to my original interest in operating systems, as I don't want to be a 30k/yr automaton part of Meta's R&D machine).
My point is: it's very, very, very hard to do this, especially with my set of interests (lots of OS work is in the datacenter, which leads to jobs with hyperscalers; I consider many of those companies evil). I'm trying. It will probably make my QoL worse for some time, and I'll probably give up eventually.
Also, evil is undefined in some sense. Is it wrong to do something "good" at a company that has an "evil" aspect?
> My point is: it's very, very, very hard to do this, especially with my set of interests
It is very, very, very hard because you're making it hard by insisting on finding a strong intersection with your set of interests.
Half the jobs I've had aligned well with my interests. They were also in the lower half of jobs I liked. The best jobs I've had were the boring ones. It turns out, there's a lot more to jobs than just what you work on.
The most important thing is to keep a roof over your head. Next is saving for retirement. And then there are things like work environment, the people you work with, team dynamics, the actual technical work, etc.
I've found that the most intellectually fun/challenging work was usually coupled with the most dysfunctional teams. It's likely just a coincidence, but it was a good lesson that other things matter at least as much.
Yes. I work at boring companies that are not evil instead. Never went to my local magnate (Comcast), left a company when they off/onshored entire teams to HCL slaves, etc.
No i won't make 350K as a dev. Yes i will have a paltry middle class existence while we still have a profession called IT.
I used to work on software for non-profits. I found it fulfilling but it was hard to do the work since I found fullstack technically uninteresting (this is my own shortcoming).
Finding a balance in that is difficult. I have seen that it might be easier to find a societally good job the less technically deep the job gets. Networking research seems to be both technically interesting and connected to societal impact (eg. because of the ties to censorship, security, net neutrality etc)
It seems hard to continue doing this sort of research after your PhD though, as in both your school name matters immensely (i.e. you're screwed if you didn't go to Berkeley, CMU, Stanford, or MIT) and so does your publishing success to land a research job, which seems like an enormous task.
I honestly think is it bad for you to be that morally insistent against "evil" companies.
I also think it's not as easy as most people make it. It's not the poor and innocent people that are oppressed by all this evil companies. These companies are just a reflection of the people and the society we live in.
> I honestly think is it bad for you to be that morally insistent against "evil" companies.
Why is that? I broadly agree with the idea that even "evil" companies have parts that do good things or neutral things, but I am curious about your rationale.
The key to not working for evil companies is to have more choice in who you do work for, which involves living way below your means so that you can save inordinate amounts of income and "retire" early - which is just code for "do the work I want to do for those I want to work for".
Because you buy not just a device but into an ecosystem. Because you have expectations of future development. Because, as far as a changing political landscape will allow, you hope you can trust their judgement. Because you want support. Because you want to be able to walk into a store. Lots of reasons…
> Because, as far as a changing political landscape will allow, you hope you can trust their judgement
funny to bring this one up as an example among the others (but i suppose it's evidence that things can go the other way).
i was waiting to buy a new M5 MBP this year until they got so cozy with the current administration. now i'm just making do with my current machine until i can get a decent price on a used M5 machine in a couple of years. i'm in the process of cancelling all of my recurring apple subscriptions as well.
i'll probably use macs for as long as i use computers, but i think i'm done giving apple any money directly.
If you have one company that has "done what you want" for 20+ years and is not "not doing what you want" you will feel sad, and hope they go back to what you want.
Of course, the argument about how much of that is "convincing you that you what what they do" is left to the reader - but marketing hype can only take you so far.
I have a macbook and a Samsung. The products I buy are here to do a job for me and that's it. If another brand does a better job then I'll switch to that with no qualms.
Like it or not, they’re a Silicon Valley institution. They’ve affected technology more and stuck around longer than most everyone else.
It’s like caring about Bell Labs if it still existed, or Kodak at its peak. Sure, they were part of big monopolistic companies, but the other side of that is a unique entity with a resume of accomplishments that make them worthy of national pride.
Of course, accomplishments like the Apple I/II, Macintosh, Newton, iMac, iPod, and iPhone really had nothing to do with monopolistic advantages. All of these industry-changing products were built by a company that was nowhere close to being a dominant force.
In my original comment I did acknowledge the problematic aspects of giant companies like Apple or AT&T in my examples, but I can still see how one might separate that from real legitimate innovation and positive impact and be willing to celebrate that.
I’ve talked to a lot of space enthusiasts that have similar mixed feelings about SpaceX. It’s hard to root against a company that is so innovative in a field of your interest just because the owner is an asshole.
Further examples, I’m sure a lot of aviation geeks feel the same about Boeing. All the scandal, corruption, and military aspects of the company shouldn’t completely erase the awe-inspiring experience of being on a 747 or a 787 jet.
What? It's not talking about WINE, it's talking about SteamOS.
> The Steam Machine is basically a tiny gaming desktop for your TV, running the Steam Deck's SteamOS. That platform is a Linux distribution optimized for emulating Windows titles.
What about operating systems, architecture, compilers, networking, and the like? I have seen people argue that computer science is the more theoretical side of things, but many university CS programs cover both systems and theory (or sometimes skew to one side).
[1] https://github.com/N64Recomp/N64Recomp
reply