296 karma · joined June 26, 2023
But this is being reversed now and this has gradually been the case over the years. By just using linux are you capable of debugging the kernel? When the code itself grows unbounded in size and complexity, the moat grows more and more. Tomorrow if you had a nasty GPU driver bug or scheduler bug in any of these systems are you personally empowered to make that change? I would argue no. I've had this, I've tried trawling through the kernel to help some nerds debug why ppc64 KVM was not working when running in BE mode and it was completely intractable. I could just be an idiot though, the evaluation of that is left to the reader.
My point with referencing with LLMs is that this has turned this dial up to 11, now you have developers shipping a crap ton of code and complexity is growing more. The more the developers rely on this stuff the more there is this kind of implication that in order for you to keep up you will use it too. Is that carrying the spirit of the luddite?
Also FreeBSD is also taking LLM stuff, OpenBSD doesn't have a policy prohibiting this, NetBSD does.
Linux has gone from attracting hippies to openly endorsing corporate closed-source products, something something live long enough to become the villain.
In regards to using it for a "cloud native" stack, the issue is that people want to run code that isn't designed for Plan 9. You could build whatever backplane type thing you want out of plan 9 but the end goal is still likely to be to run some web app or REST api server. Unless someone does a great deal of effort to port all of those environments that people want (nodejs, modern python, etc) you're going to be stuck using a VM and losing a lot of the benefit.
This feels similar to what Joyent did with lxzones in SmartOS, where the backplane was solaris based but the apps they were running for clients were using Linux. It's hard to make the plan 9 backplane better enough to warrant dealing with integrating the guest and host environment.
[0] https://www.rfc-editor.org/rfc/rfc5891 § 4.1 "By the time a string enters the IDNA registration process as described in this specification, it MUST be in Unicode and in Normalization Form C"
source: I've implemented Unicode normalization from scratch
I like to think of code as not that much different than prose, they are both strings of text for communicating information, typically in a fashion of one thing after the other. I think most people would find syntax highlighting for prose to be more annoying than not (outside of perhaps seeing grammar rules for learning). Once I tried reading and writing code without syntax highlighting I found that it encouraged me to actually read and digest code instead of just skimming it. Compare it to reading prose with and without certain subsections highlighted.
Autocomplete strikes me as optimizing the wrong end of the problem. When I'm writing code I generally am spending a lot more time thinking about the problem space or considering possible implementations then I am having my fingers on the keyboard actively typing it out. In general I think the more you're able to think carefully about code in general the smaller it gets, so I find it hard to believe that by making it easier to quickly dump large amounts of text on the screen you're really gaining much. I think there should be a larger focus on reading and understanding code than writing it.
Stuff like code search is quite nice, and even in 9front we do have some scripts and tooling built-in to help us do that. We have programs like 'Bfn' which can search for a function and send it to your text editor, file names with line numbers can also be quickly sent to the editor as well. I think advancements in tooling that helps people move around in code are generally great, the time spent searching for something is generally not something I enjoy. This was perhaps the nicest part of LSPs in my experience. However I do also think that if you make it quite easy to jump around to lots of different files there is less of an incentive to carefully consider how you're laying out your code. How 9front works where there is some tooling to reduce the monotony but not enough to make it easy to traverse a couple million line java project strikes a nice balance for me.
This is not quite the same, if a single magazine starts to become more ads than decent content it is not insurmountable for another company to start a competitor. It's not ad income itself that is bad, it's that in the case of a web browser it is insurmountable for a company to start up a competitor from scratch. It wasn't always the case, but because google has dumped so much engineering in to chrome they've effectively pulled up the ladder behind them.
I know the focus by the DOJ here seems to be more on search and less on the technical control that Google has over the web experience through implementation complexity, however I can only hope that by turning off the flow of free cash more "alternative" browsers are given some space to catch up. Things like manifest V3 show that Google is no stranger to tightening the leash if the innovation of web technologies impact their bottom line, I'd like to have a web where this type of control isn't possible.
I am also skeptical to your claim about removing memory bugs freeing up brain space for logic bugs, at least for Rust. Rust has grown quite a number of language features, that in my experience, result in a higher cognitive load compared to C. If you seriously reduce your reliance on the C macro system (as Plan 9 has shown possible), the language itself is quite simple.
> ... has a lot of third party software that would be hard to maintain along with the rest of the system
This is the point that the article is trying to challenge. I think 9front proves that it's doable.
> Most people don't care what commit your system is built from as long as it works as their programs expect it to.
The former helps the later a lot. Everything is tested with each other and for a lot of functionality there is only one option.
The illustrate how I think Plan 9 is different in this regard. A patch for 9front could include a new feature for our compilers and then also show how useful it is by using it within other parts of our code. In plan 9 you can interact fully with every component.
Which makes security spending like entertainment spending, when you have extra money to spend you do it to make yourself and potentially your customers feel good. If the economy is bad you lie about your security posturing just like you lie about how much you care about the customer in general.
I'd also like to add the Plan 9 implementation[0], which also uses the properties of utf8 as part of its state machine and anecdotally has been quite performant when I've used it.
[0] http://git.9front.org/plan9front/plan9front/107a7ba9717429ae...
Both gb and gba make an attempt to preserve the cycle timing for each instruction and memory access (ie some of the later portions of the gba cartridge rom have increased load times). For gb I have thrown a couple of those "acid tests" and it usually does pretty good, but I have yet to really sit down and extensively test. When I implemented the serial cable link over tcp for gb I did find there to be some desync in stuff like pokemon battles, that smelled like perhaps a timing accuracy issue but I have yet to really figure it out. My current theory is that the hand off between the cpu and the ppu are not quite accurate. Its cute code that uses some setjmp/longjmp magic, but perhaps not true to hardware.
To me the selling point of these emulators are not "these are the most accurate to hardware around" but more their general simplicity of implementation. They are really quite compact for what they do, almost all are just a couple thousand lines of C.