Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
TempleOS (templeos.org)
154 points by newswasboring on May 8, 2020 | hide | past | favorite | 73 comments


I personally interviewed Terry and delivered a care package for him in '18.

I am Kenneth from the BBC interview: https://www.bbc.co.uk/programmes/m000b4r3

Things were pretty much on a downward spiral after 4chan funded his drum set: Terry got kicked out, and then Terry's van got impounded along with $1000 of a lot of electronics. Once he was homeless living in CA, people thought (and rightfully so) that he would die on the streets. It's such a shame what happened, honestly. 15+ years of social isolation and events in his past ultimately led to his downfall. His death made me very distraught, especially after meeting him in person months prior. Meeting him left a profound effect on me because he was so appreciative and seemed mentally sharp when he engaged with me.


I read and watched a lot about the story since this post.

It's a very sad story on many aspects and likely controversial (giving him publicity, contacting authorities, ignoring him, banning him, etc); all these actions had consequences and forged his mind this way.

I wish more people would support him and his family instead of encouraging him in his dementia.

This software is certainly good food for thoughts, not just about computers, but life in general, so it could be worth including it in some sort of museum.


What happened with the drum set?


People from 4chan donated money for a drumset. He got the drumset and then his parents kicked him out because of the noise.


I really miss reading Terry's comments here. He was the single reason I turned on showdead - they weren't always insightful and were often offensive, but they were always an interesting view into his mind.


He commented on my website once that my complaints about binary sizes were alleviated in TempleOS with Holy C. One of the highlights of my life. The world has lost a real gem.

https://donatstudios.com/Golang-Binary-Sizes#Comment23602


You can find them here: https://news.ycombinator.com/threads?id=TerryADavis

(small warning: he was very rasist, but because of his illness it is hard to tell if he could do something about this)


It only goes back to 2015, and replies on his oldest comments seem to imply he was known on HN before then[1]. Was there another account?

[1] https://news.ycombinator.com/threads?id=TerryADavis&next=926...



don't forget this one

https://news.ycombinator.com/threads?id=TempleOS

I remember seeing 4 or 5 different handles once he started getting deaded/shadowbanned.

I miss him a lot. Not his spout-outs, but him and his technical insights.


First time that I read about this man. A really sad story, his last years of life (see https://en.wikipedia.org/wiki/Terry_A._Davis ). TempleOS is an incredible achievement!


I think there's a real lesson to learn from Terry which was perhaps magnified by both his personality and this community. The truth is that there are people all around us that suffer from various degrees (and types) of mental illness. Some are undiagnosed while others feel they need to hide their diagnosis due to shame and/or public stigma. I appreciated that Terry didn't hide who he was, nor did he shy away from saying what he thought. As pointed out elsewhere on this thread, some of his comments could be offensive while others could be brilliant. What we can learn from Terry's contribution here is that, we don't know what demons others here are fighting and sometimes tolerance can be a very charitable gift - not tolerance of abhorrent comments but rather tolerance of the individual.

RIP Terry!


IMO your comment (and others) show to me why privacy is such an important thing.

Shame is one thing, and IMO already reason enough to want privacy but one could argue that it's debatable.

Being bullied, however, (as stated in another comment) really shows why privacy is needed. Even if you get all the praise in the world, if you get too much negativity, one can die from it (most likely indirectly). I find it very harsh and unfortunate to say, but this seems to be the case. While everything is debatable, I could imagine that not everyone thought about this particular reason (I haven't nor have I ever read this from privacy advocates) and find it a more compelling reason to uphold privacy.


I can totally understand why this is a constant source of fascination for programmers. It's a one possible answer to the question "What would I do if I was stranded on a deserted island with a working computer but no OS?". We use all this software developed by other people, and many of us wonder how much of that we could make ourselves, given enough time.


There are many great ideas in his OS and programming language.

One idea I miss very often while programming: embed info like pictures in your code (as comment).

It would be great to add flowcharts, diagrams, screenshots into code as comments (an IDE could collapse this as needed).

Does anyone know if there are languages that also can do this?


Seems like this could be achievable in any language with a special doc comment notation that supports image references similar to Markdown.


Doc comment notation is not a language concern. You could simply start writing Markdown with image references and if your documentation generator supports it and can resolve these refs, they'll be included. A different approach is to use a literate programming tool like NoWEB in which case the code is included as part of the documentation, and extracted separately.


You could probably embed images in language comments as base64 and then have a plugin for your favorite text editor that renders those (which would probably be easily achievable with Electron-based editors, not so much in others). Even then, that would be a bit of a pain in the ass since other people would just see long strings. I don't think I can name a single language/technology that does it out of the box though.


This actually exists in Racket and the DrRacket IDE for it. You could actually even use images as variable names, so back in school there was a funny lesson where the professor used the image of a sailboat as a variable name everywhere and joked "why wouldn't you be able to?"


I sometimes embed plantuml diagrams in comments; your IDE of choice might have a plug-in to render the diagram (Jetbrains IDEs do)


Ah wow, I never heard of this. Just installed PlantUML into Jetbrain's Rider and it works great.


I think this is an extension of the idea behind "literate programming," whereby the program code is just a part of a larger text designed for reading by humans in the first place. (This is opposite to embedding comments in code.)


I ported a SNES/SFC Emulator [1] to TempleOS earlier this year, and more recently started porting the old Apogee game Cosmo's Cosmic Adventure [2]

[1] https://gitlab.com/obecebo/bahamut

[2] https://www.youtube.com/watch?v=BPdUoEA8E54


Also well worth reading: A constructive look on TempleOS http://www.codersnotes.com/notes/a-constructive-look-at-temp...



The most sad part of Terry's death is that he became the object of fascination and obsession of a forum of internet trolls who actively worked to make his life worse. I think he was off his medication and homeless at the end of his life, due in part to the goading of the trolls.

I was interested reading Terry's posts and thoughts, and spent some time playing with TempleOS. Unfortunately some people couldn't leave him alone.


I didn't realize he died. It's a real shame that his illness had control of him.


He didn't die because of his Schizophrenia in case you think so. He got hit by a train because he was walking on train tracks and didn't see it.


Was that sarcasm? A person without schizophrenia usually does not walk on train tracks and in case they do, they usually are aware that trains can pass by. So now while also other people sometimes get hit by trains, in his case his mental condition might be related.


So why was he walking on a train track? Is this uncorrelated to his diagnosis?


It was indirect cause though, if it wasn't for his schizophrenia, he probably wouldn't have become homeless and aimlessly wandering through the states which is when that happened.


Rest in piece King Terry you'll always be the king of the.... CIA and the cattles. You will always be the best


I remember this interesting read about Terry Davis and TempleOS from Vice: God's Lonely Programmer - https://www.vice.com/en_us/article/wnj43x/gods-lonely-progra...

It was discussed in HN (2014): https://news.ycombinator.com/item?id=8658283


Make sure to check out Shrine (based on TempleOS) that adds networking and many other things.

Website: https://shrine.systems/

Source code: https://github.com/minexew/Shrine


I ask out of curiosity, not dismissiveness: What is the goal of this project?

Without context, it strikes me as somewhat akin to adding details to a Picasso. The reason I'd use TempleOS is to get a peek into Terry Davis's mind, so what happens when someone else adds networking support?

Is it seen as a research project? Just something fun to play with?


I don't know, I'm not the author, just something I remember seeing related to TempleOS, I'd guess just a hobby kind of thing, we're on _Hacker_ News after all, so tinkering with technology just for the fun of it should be the priority.


I kind of get it. TempleOS seems like a pretty cool project, and making it into something suitable for actual modern use sounds fun and ambitious.


I was just wondering what happened to this guy since I rarely saw his comments anymore. Didn't realize he was well known outside of this forum


Some time ago I published four small articles[1] about templeOS. Unfortunately I had less time to deal with this OS. I can only guess that you should have a look at this OS. If you ignore all the religious information you can experiment a lot. Even though Terry was very ill, I have an incredible respect for what he did. There are not many people who have put their own OS on its feet and even implemented very unusual ideas of their own. All this running on ring 0 is pretty exciting.

[1] https://alligatorbrowser.github.io/voidnill.github.io/a/a32....


Oh, cool. I saved this to my templeOS notes.

I've been thinking about writing a technical analysis of TempleOS, in the style of the the Xinu OS textbook [1]. No strong reason for doing so, though it is curious how much more one could learn about him by identifying patterns in the code and OS structure.

It will probably take me a while to recover from my current burnout to look at a holy-influenced C dialect, though. A venture into the library of babylon requires preparation. So, I'm just passively collecting writings that already exist, and the likes, like you just posted. I'm on the #templeos IRC on irc.rizon.net, if you would like to chat sometime. It's pretty inactive, with sprinkles of relevant conversation occasionally.

1: https://xinu.cs.purdue.edu/#textbook


RIP Terry A. Davis


Rest in peace Terry, you were gods programmer.


This has been discussed many times in the past [1].

tl;dr: The creator was a brilliant programmer who experienced a psychotic break late in his life, which led to chronic and severe schizophrenia. He killed himself in 2018.

[1] https://news.ycombinator.com/from?site=templeos.org


"Investigators could not determine whether his death was suicide or accidental."

https://en.wikipedia.org/wiki/Terry_A._Davis


IIRC he was an active reddit user as well, so there are many discussions over there as well


Oh, I wasn't aware of his passing . . .

According to his Wikipedia page #1) He passed away August 11, 2018, just the same day he posted his last video on YouTube (the same as included on his TempleOS home page): https://youtu.be/oH41gGBVpkE

His Wikipedia #1) page says the following about his passing: "Investigators could not determine whether his death was suicide or accidental, although the train engineer believed his death to be a suicide. The police report stated that Davis was walking with his back toward the train and that he turned around before the moment of impact".

Bless his soul!

#1) https://en.wikipedia.org/wiki/Terry_A._Davis


Here are (some of?) his HN accounts: https://news.ycombinator.com/threads?id=TerryADavis, https://news.ycombinator.com/user?id=TempleOS

Warning: not for the faint of heart - banned for obvious reasons.


>Warning: not for the faint of heart - banned for obvious reasons.

I lived through it - on 4chan, reddit , and HN.

It's still not obvious to me why he'd be banned, I don't think you should hand wave it that easily.

The guy had mental issues, but he had some amazing lucidity at times.

If I owned a movie theatre or restaurant I surely wouldn't ask someone with vocal tourettes to leave the establishment, and if I did i'd be ostracized all over the media and community -- so it's not as clear to me as you seem to think it should be why he was treated the way he was on the various forums.

I get that he said abrasive and racist comments routinely; but I think there is something to be said about the fact that his voice was routinely listened to and considered on 4chan's /g/, and routinely sequestered and removed on HN and reddit. 4chan turning their attention to him wasn't a good thing, nor is it usually ever, but that forum did give him a place to talk without fear of bannings, karma struggle, deaded comments, whatever.

Treating someone as good as they are treated on 4chan is a low bar. Back then the HN method of constant deading and shadowbanning felt heavy handed and unneeded; we're supposed to be adults who are aware that mentally ill individuals exist in real life and here on HN, but the way it was dealt with was by silencing an already schizophrenic person so that the 'normal' crowd could go on with business as usual.

I can't think of a more head-in-the-sand response, and I'm not even saying that it wasn't a required action to keep the forum discourse on some level of civility , but boy does what happened to Terry make me feel nauseous -- the same kind of feeling I get in the pit of my stomach that is usually a sign for me that I am witnessing something morally uneven. I don't know the solution, nor do I claim to. I just feel bad about what happened.

As someone who chatted in emails with him after his bannings, I still feel bad about his treatment and demise, and I miss him and his technical insights immensely. I think he got a poor run of life, and I wish that more people had been supportive of him, able to filter out the profane for the insight -- especially since he became fascinatingly technically capable and astute when spoken to personally with your 'vocabulary filter' on.

Terry was an individual by which most mistook his trees for the forest -- and I'm glad to read in this thread that I'm not the only one with that positive sentiment towards him and his memory.


I'm not sure I understand what's going on there ?


As always, there's a complete explanation on wikipedia: https://en.wikipedia.org/wiki/Terry_A._Davis


The BBC did a reasonably good audio piece about this & it's creator: https://www.bbc.co.uk/programmes/m000b4r3


it's a very deep rabbit hole


Funny you put it that way. There is a good youtube video about it.

https://www.youtube.com/watch?v=UCgoxQCf5Jg


Before you watch the meta-commentary about TempleOS, here it is in its purest form: https://www.youtube.com/watch?v=gBE6glZNJuU They were all like that.



Youtube Terry Davis. There's a thin line between insanity and a genius.


you could say they often overlap


I suppose one could say that, but it would not be supported by evidence. This is just visibility bias. Sane geniuses aren't loud.


He was mentally ill.


AFAIK, TempleOS seems to be the only operating system running everything in supervisor mode.

I wonder what would happen if we can find a way to build software protection in supervisor mode, ditching user mode and associated context switches.


Agree this is interesting, and user mode looks like legacy for some major domains.

For example, if you are building a grid computer, you don't need mechanisms that were designed to protect university students from one another. Consider if everything is driven from a single codebase. Your type system can provide protections that have traditionally been done by the kernel.

I am currently playing with this. Have a boot loader up, and a handoff to c++. Today I am looking at page-management.

There are some interesting trade-offs that come from unconventional approaches like this. For example, I have read that if you make SIMD registers available to the kernel, it hurts the performance of context-switching. (https://os.phil-opp.com/minimal-rust-kernel/)

A mitigation I am considering: do all interrupt handling on one core, and then have all other cores for work-processing. Use channels to communicate between the burnt interrupt core and the worker cores. Downside of this: worker cores would need to poll for new messages. In low-activity periods, I could slow the poll interval. I would be interested to hear from anyone who has gone deep on this, or knows of papers.


Technologies such as DPDK are designed to get the kernel out of the way. For some applications it has no reason to play a part once the system has booted, it's just an overhead.

For what you're doing I recall reading about IncludeOS[1] which seems to have similar goals

[1] https://www.includeos.org


Thanks for the reference to includeos. They do seem to have built something in the spirit of what I have been looking into.


MS-DOS did the same, as do most embedded OS's today. Separate address spaces are definitely needed these days in order to avoid Spectre vulnerabilities, but that's only an information disclosure concern.

Ideally, OS's would explicitly support information protection domains (after all, this is already a feature in some niche, specialized OS's) and only sensitive info/data would be protected by a switch to a different protection domain. Most user tasks which deal entirely with non-critical data could simply run in a shared address space.


> Separate address spaces are definitely needed these days in order to avoid Spectre vulnerabilities

That's nonsense! Separate address spaces have nothing to do with hardware vulnerabilities. The MMU uses address spaces to isolate processes from each other, which is required for proper multi-tasking.

If you don't use process isolation, every task can overwrite the heap and stack of every other running task (including the OS kernel and drivers!). Information disclosure (in this context) is only relevant in virtual environments, where multiple tenants have to be strictly isolated from each other and affects (hardware) VM supervisors.

It's a different topic entirely.


> If you don't use process isolation, every task can overwrite the heap and stack of every other running task (including the OS kernel and drivers!).

This is not a concern if all code is rigorously checked for memory safety which is quite feasible in principle, and possibly already the case for some uses of WASM/WASI. (Native binary code would need to be annotated with low-level proofs, to be checked by the OS.)


Right. That's why no sandbox has ever been broken... So no. WASM relies on process isolation like every other system.

It's impossible to automatically check memory safety at compile time as that implies solving the Halting Problem.

Runtime checks would need to rely on the compiler enforcing these checks in the RTL. This, however, can easily circumvented using return-oriented programming (remember: you don't want the MMU to protect stack spaces).

No amount of software-based sandboxing or compile-time checks can effectively prevent non-isolated processes from accessing and corrupting each other's state. That's exactly why MMU were introduced in the first place.

Experiments using Software-Isolated Processes like Microsoft's Singularity [1] rely on complete toolchains from OS kernel to "safe" languages and runtimes and are not suitable for every requirement (e.g. hard real-time becomes near impossible).

The SIP concept also just shifts the burden of proving correctness from app and system developers to compiler and toolchain developers and we all know that those guys never make mistakes ;)

[1] https://www.microsoft.com/en-us/research/wp-content/uploads/...


> It's impossible to automatically check memory safety at compile time as that implies solving the Halting Problem.

For the general case, yeah. And while I agree that I would not remove process isolation, I think they have a point about "almost guaranteed to be safe" languages could be potentially used without isolation (not with zero risk, of course).


I agree that current sandboxes and even current compilers/toolchains do not provide these rigorous guarantees, as of yet. WASM/WASI is however quite simple, and could thus be up to the challenge. It's certainly simpler than MS's Singularity approach.


Singularity just was a PoC, though. I'm not saying it can't be done, it's just not practical for every use case.


> If you don't use process isolation, every task can overwrite the heap and stack of every other running task

We have a lot of modern languages that are memory safe at least in theory. However quite a few rely on the OS using these safety features in the background. For example the Java Runtime uses segfaults to catch null pointers instead of actively checking for them, at least as far as I remember.


God mode


For those interested in a (very good) overview of Terry and TempleOS in a video documentary format: https://www.youtube.com/watch?v=UCgoxQCf5Jg




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: