Hacker News new | past | comments | ask | show | jobs | submit login
A Constructive Look at TempleOS (codersnotes.com)
463 points by kayamon on June 8, 2015 | hide | past | favorite | 169 comments

While not very familiar to many, this is highly similar to the old Lisp Machine environments. Those were similarly a clean break from prior OSes, with:

  - a powerful REPL to call either apps, inline tools, or direct commands
  - interactive shells made up of mouse-interactable graphical components being
      printed to the screen
  - compilation of source code directly into the running image

They were also single-user, but did networking as well. People logged into a machine remotely could have the same interactive graphical sessions in their own context.

Given the history of computing from the 50s - 80s, this desktop architecture idea comes naturally to a lot of people. The major OSes, however, all have their ancestral lineage which prevents major rethinking. But another issue is that these ideas are at least power-user oriented.

While the mobile market did some major rethinks about the UIs, they're still *nix inspired descendants underneath, and don't expose anything but pre-baked applications to their users.

Windows NT is sad for its missed opportunity. MS could have done something inspired by these newer architectures. They did depart from Unix, but to do something in no way better and in many ways worse.

MS were very inspired, unfortunately by VMS.

Why do you consider being inspired by VMS (which NT is to my knowledge) as unfortunate (serious question)?

It's just... sigh... I dunno.

It's like COBOL. Or COM. There's nothing in any way pleasant about it. It's undeniable that it works, and perhaps gets things done in a practical manner.

But there's no love in it. Just my 2c though.

I had the same feeling, the good news for PU is that there is still one (virtual) lisp machine standing called GNU/emacs.

A Lisp Machine is a real computer with a Lisp OS, applications, libraries and tools. An editor is just a part of that experience. But not the central part. Typically the environment of Lisp Machines was NOT written around the editor. They had a window/mouse/GUI oriented user interface with a lot of support for keyboard use. If you take for example the Lisp Listener in Symbolics Genera, it is not a Zmacs application and it does not use Zmacs in any way - other than that you can switch to Zmacs windows.

GNU Emacs is an editor written in some more primitive Lisp with extensive libraries and applications. It lacks the extensive low-level features, multi-threading, Flavors/CLOS etc of Zetalisp or Interlisp. GNU Emacs implements all their applications inside the editor. Lisp Machines did not do that.

If you've ever used a Lisp Machine, the look&feel was quite different from GNU Emacs.

It's time to retire the disputes about Terry's mental health and his use of racist language that perennially dominate these threads. These arguments are always the same, they lead nowhere of value, and it's wrong to gossip about a human being as a case specimen as if he weren't here.

We've had years of this already and it's enough. If someone wants to do the work of making a list of threads we've had about it in the past, we can all point to that the next time someone inevitably starts this controversy up again.

I'm not talking about Terry's technical work, of course. That is as on topic as anyone else's.

>it's not right to gossip about a human being as a case specimen as if he weren't here.

Well said. Its infuriating the lack of common courtesy and sensitivity that people show in threads about his work.

It seems to me that he would, like most of us would in his situation, want to be judged on the merits of his work, without other people constantly framing in the context of his mental illness.

It would be easier if his posts were only bizzare or incoherent. Even his messia complex would probably be forgivable. The condescending, rude and racist things he says are just extremely hard to overlook. Giving one person a free pass at the expense of many others being able to come hear and not see racist, hateful speech tolerated. It's a shame as smart as he is he can't seem to figure out that certain terms are just not ok to use in a public forum (or anywhere really). I'm not even sure he means them as they are verbalized anyway.

Giving one person a free pass (...)

terry is given the exact opposite of a "free pass." he has created at least eight accounts at this site. all of them are now hellbanned.

Getting hellbanned for behaviour is not the opposite of a free pass, exact or otherwise.

And when he creates his 9th account and proceeds to use the n-word to insult people he feels are intellectually inferior to him - that one will be hellbanned as well, and rightly so in my opinion.

The guy learned how to write compilers and operating systems, surely he is capable of learning to stop using that term - at least on this forum.

If he didn't have schizophrenia, i'd completely agree with you. As it is, i'm not sure he is capable of learning to stop using any particular terms. At least not during an episode.

This is an example of the perennial dispute that we're talking about. It's (a) not ok to begin with, and (b) endless regurgitation. It's time to stop.

There should be a separation of the person and their work. Hubble had unsavory views, but those do not come up when discussing the speed of galaxies.

Indeed. Newton was a devout alchemist/occultist who believed he could find the temple of Solomon - but it doesn't make gravitation or his laws of motion irrelevant.

You two are conflating scientific discoveries with products. Gravity existed before Newton discovered it. He didn't create it. Likewise, it is fine to consider the theory of relativity without going into Einstein's childhood or upbringing or other personal traits of his.

It is, however, absolutely essential to take into account the person behind a product when evaluating a product. You would never write an essay on the film stylings of Stanley Kubrick or Roman Polanski without fully considering their backgrounds and personality quirks. You would certainly never write about a work of classic literature without first taking into account the context of when the book was written, what life experiences the author had, or what inspired the author to write such a book.

Products like TempleOS should be treated the same.

It is not absolutely essential to do anything of the sort - that's one of the central arguments of the post-structuralist movement in critical theory: http://en.wikipedia.org/wiki/Post-structuralism#General_prac...

There's a difference between using information about an author to help analyze the thought process behind their work and using information about an author to prejudge their work. I can analyze Sir Arthur Conan Doyle's writing based on his belief in spiritualism, but that isn't the same as labeling Sherlock Holmes blasphemy. You are confounding evaluating purpose and evaluating quality. If I was writing an essay on the origins of TempleOS, then knowing the personal life of the creator helps. If I'm evaluating the quality of the software, then information on Terry is irrelevant.

Product? Howabout the transistor. Look up William Shockley. Brilliant but filled with hate.

His mental health directly impacts and influences what he writes.

And yet what he writes can be judged on its own merits. Only in issues of trust should character come into the question. I am most familiar with an attack on character being a technique that allows for a person to dismiss some writing without effort.

If someone with a mental illness writes a word salad, it can be dismissed as a word salad, not because the write has mental issues, but becasue the writing is a word salad.

That said, it takes time to read and judge the merits of a writing, and give a limit to our time we all develop heuristics to help us determine to help us avoid wasting time.

Some of his remarks are actually technical and relevant but invisible to most people (only accounts with the show-dead-threads flag active can see them). It would be nice if one could sponsor just those comments, I think would be a good thing for him too.

We're working on that.

As is true of anyone. Not seeing the point here.

That what he has written, complete with its oracle, and his communication style/content is directly a product of his unusual mental state.

It's notable because he writes the software in ways that someone without his condition would not consider. You can't separate the two.

The threads aren't full of sensitive analyses of the design of TempleOS. They're full of unseemly gossip and flamewars that are the same every time. That's what I'm calling off-topic. As moderation calls go, the distinction doesn't seem like a difficult one.

The guidelines already cover this when they say: "Please avoid introducing classic flamewar topics unless you have something genuinely new to say about them."

You can start by un-hellbanning him if you want to treat him like a human being.

It is failing to treat someone as a human being. You are ignoring them because you perceive their mental illness to be dangerous. You're failing to make eye contact with him, because you think he is an animal.

The admins on this site need to do a lot of soul searching if they are ok with this. And now I'm hellbanned for speaking up for terry. Fuck you hackernews.

Lots of human beings are hellbanned. Anyone else who posted the way he does would, almost certainly, be hellbanned.

Hellbanning is not failing to treat him like a human being.

If you want to make the argument that there is a good reason consistent with the purpose of the community to excuse conduct in his case that would otherwise merit hellbanning, that might be an argument with merit -- without the argument being made, I don't see it, but it might be there. But, in any case, that's not am argument you've made.

Agree. Hellbanning is a step too far. If you're going to ban someone, just kill their account honestly, not let them toil away posting.

The moderators' time and effort is valuable too. If someone reacts to a normal ban by creating new accounts and continuing their previous behaviour, what use is there in telling them that their behaviour is not acceptable if they refuse to listen?

That's the price of running a community on the internet.

Bear in mind I've run forums with 50,000+ subscribers and was an EFnet and Quakenet IRC op.

Someone should start a Kickstarter for a professionally done documentary of Terry Davis and TempleOS. He's such an interesting person. I'd watch it. It would probably be an amazing documentary if done well and assuming Terry Davis would be OK with it.

There's a guy known as Ulillillia who has a somewhat similar long term obsessive project (a game, Platform Masters). There was a documentary shot about him that unfortunately seemed to go off the rails in post-production and wasn't released.

Do you have any links with related information to this?

Probably not quite what you're looking for (I'd like to know more about the documentary, too), but here's a 1h49m Youtube video of the author giving an overview of Platform Masters: https://www.youtube.com/watch?v=rzjW0xsW7_A

and the author's website:


I'd be concerned that the increased attention from a documentary would unhinge him further.

Schizophrenia is an organic disorder, not a neurosis; aside from that, given the pretty plain fact that Mr. Davis isn't equipped to make his own way in the world, presumably whoever looks after him would intervene to prevent a documentarist's efforts from flustering him too badly.

Yeah, it's not every day you see someone with the persistence to roll their own OS like that, and really he has a lot of neat ideas there; guy seems like quite a character, I'm sure there's probably something for all of us to take away, and I'd sure watch it too. It would be really interesting to see the world, for a moment, through his eyes.

I'd love to see a VICE-style documentary which interviews him and really dives into his story.

For now this VICE article will probably have to do http://motherboard.vice.com/read/gods-lonely-programmer

Nice, hadn't seen this one. Thanks!

I'm sure if someone like Werner Herzog covered it, it'd be fascinating to watch. There's already hours of source material on YouTube.

Great article. I really like this kind of open-minded "everything can teach us something" attitude.

I'm not sure I really want to use TemplOS, but if you look at it as a research OS like the article suggests, lots of the ideas here are very compelling. DolDoc sounds like something I wish I had today.

I kind of wonder what could be created if these ideas were filtered through more modern design ideas?

Some of TempleOS actually reminded me of the MOAD[1], and even the Acme[2] editor a bit. The beauty of plain text is that it's trivial to interpret though (not unicode so much). Anything else and you need to start to worry about backward/forward compatibility, byte orders, etc... I imagine it's probably easier when you only have only one platform to think about though.

I liked the index concept. There have been more than one (successful) efforts to build a filesystem that fully supports indexing content, but they're generally implicit indexes. Explicit indexing via file content might be interesting.

I'm not sure what the real justification for running everything in Ring-0 is. I can't think of many reasons for anything more than minimal privileges to be a benefit.

[1] https://www.youtube.com/watch?v=yJDv-zdhzMY

[2] http://acme.cat-v.org/

A lot of the capabilities described for DolDoc, and for TempleOS documents in general, also exist in Emacs' org-mode, albeit of course in a rather different style -- inline images, hyperlinks to live searches as well as static content, and the like.

You can also embed code fragments of arbitrary length, in any or all of dozens of languages, and execute them inline with arbitrary input, including both other sections of the same document and the output of other code snippets therein. (TempleOS seems to have a similar capability, but of course only for the single language in which everything to do with it is implemented.)

It's a cliche, but Emacs really is almost like a LISP operating system disguised as a text editor. It's easily possible to use a computer productively using nothing else, if you devote a bit of time to learning how.

I have to admit - HolyC is a clever name http://en.wikipedia.org/wiki/Holy_See.

I realized that the other day when I was reading about TempleOS and laughed at how puntastic it was.

I wrote a Julia Set viewer in HolyC about 6 months ago. It was a very interesting experience to say the least.

Terry seemed to think it was pretty cool, so he made a 3rd Party Software page and linked to the GitHub repo.


How does installing software work without networking?

I feel very old now. Traditionally you went to the shop, bought your boxed set of floppies[1] (or later CDs, though networking was becoming ubiquitous at this point) then went home and installed them one by one to your hard drive. I was early among my friends to get a modem in 1990 (along with a Compuserve subscription), but before that every piece of software I had was bought or copied from friends on floppy disk.

[1] http://farm8.staticflickr.com/7112/7488906888_f49800754f_z.j...

I guess I'm surprised there's code to run the floppy drive but not code to run the network card. Especially if the project started in 2003. But then again, maybe with a memory model that permissive, it's not very safe to open yourself up to unfriendly bytes.

Very interesting article. But ...

>> If a crash in one users’ programs could take down all the others, then obviously that would be bad. But for a personal computer, with just one user, this makes no sense. Instead the OS should empower the single user and not get in their way.

My PC doesn't have 100 users, it has 100 processes serving one user. It's nice that they can't stomp all over each other.

But I hear you on the low level access. For me it was a Tandy Color Computer, and then a Columbia 8088 luggable, and finally a 80286. All those systems ran DOS or something similar to it in real mode, and I had fun poking bytes into RAM too :).

When I got to the part where the article dismisses memory protection, I just thought "wow someone never used any of the Windows 9x operating systems." Because in that space the lack of memory protection most certainly WAS user impacting, even single user...

The problem is that software is buggy, and without memory protections a buggy piece of code in one process can cause unpredictable things to happen in another. Essentially it turns a process which executes in a "knowable way" into one that executes in a arbitrary way.

Windows 9x suffered from this with drivers in particular, where a single buffer bug in one driver could cause other drivers to seemingly crash, and the root cause was incredibly difficult to track down.

TempleOS would appear to be a computer from "before the fall" - ie, before error crept in, in the form of viruses and badly-behaved programs... in the same way that the architecure of an IRL temple is designed to be a representation of heaven on earth.

I understand his perspective - computing in the 1980s was very much an age of innocence. The programmer's God/Genius is telling him to build a modern, developed version of the environment that he spent his healthy youth in. I don't suppose it's entirely beyond the realm of possibility that it might hold a key to resolving his problems and coming to terms with his illness.

It may be a trite comment, but in an environment where these conditions are treated as "holy madness" or shamanism, the sufferers have more of a place in society.

cf. John Nash, although Schizophrenia is a scale of greys.

It's funny you mention lack of memory protection in Win9x, because they did have memory protection. They just sadly didn't have it for one critical segment.

.. and if those processes come from different vendors, then you effectively have 100 different admins and one user. This is the prevailing situation on mobile devices, where the priority is protecting the single user from potentially malicious vendors.

Ironically, the actual Jewish temple was layered architecturally. The holy of holies in the center, where God resides, would be ring-0 I suppose.

When you have cheap VMs like modern environments do, you don't need memory protection as bad. Just run a dozen of TempleOS instances. Of course there should be some intranet between them.

So instead of using a virtual memory system you use full blown virtual machines with a host system that'll do the virtual memory management for the guests? What exactly do you gain from that?

The ability to choose whether you want memory protection or not.

That doesn't sound very useful to me.

Virtual machines are simpler, faster and safer. It's like choosing 3/3 of having it faster, better or cheaper.

Wow, theres actually a lot of cool stuff in that. HolyC[0] also has some very nice features and is much more practical than I had previously thought, although I'm not sure I could last for long with it -- a lack of type checking is somewhat brutal.

[0] http://www.templeos.org/Wb/Doc/HolyC.html

It reminds me of the Turbo family of IDE's from a past age: small, fast, integrated.

It’s very easy to be negative, but you will never learn anything new by doing so.

Couldn't agree more, and something I'm going to try to keep in mind more often.

I enjoy reading the source code of TempleOS. Its simple and down to earth. No gimmicks or traces of someone trying to show off. The kind of code you just sit down to read whenever the daily grind of battling technical debt gets to you.

What really gets to me about all this is that I probably see more articles about losethos/TempleOS than I do about the BSDs.

There's a whole world of hundreds of small and innovative hobbyist/niche OSes (Sortix to name just one), but we only ever hear about this one. Again and again, over and over, because the author's mental health makes for good clickbait articles for people to gawk and stare at, apparently. It's really quite sickening.

I'm okay with this article though, I like that it presented something new for a change.

It is very interesting to see some comparisons you did. You mentioned Oberon[1], which has an explicit reference to Doug Engelbart. Seeing some TempleOS highlights reminds me a lot of those ideas, including LightTable[2].

[1]: http://ignorethecode.net/blog/2009/04/22/oberon/ [2]: http://lighttable.com/

Seeing projects like this makes me wonder: how come great ideas often fail to be picked up, when bad ones are repeated again and again.

Take the idea of having a single language for the shell and system programming. It forces you to think harder about the design of the language, so that it correctly works both as a command-line interpreter and as a compiled language. Lisp machines had that. Oberon system had that (in a graphical way, even). Forth systems had that. So it's not like we collectively didn't know. But neither Unix nor DOS/Windows even tried. Instead, they both feature shell languages that can best be described as "pathetic". Why did we have to wait until Windows 10 to have useful text selection in the CMD shell?

Or in programming languages, why is it that new languages always seem to take C and C++ as role models, while spectacularly failing to take any inspiration from Erlang, Ada, SmallTalk, Intentional Software, or Lisp? Why is XL, my own language, still the only one I know where it's easy to do multi-operator overloading, i.e. overload A+B*C, something it has been doing for at least a decade? Why are we unable to create a language that would work well both on GPUs and CPUs, or better yet, let me easily describe an application that uses both?

Or in interactive apps, why do we still not have good reactive functional frameworks for the web, similar to what Tao3D does for interactive 3D? (See http://bit.ly/1G8VOmr for my rant on that topic). Why is creating an OpenGL application getting more complex with each generation, instead of simpler? Why can a kid easily use GameMaker, but none of the Apple developer tools?

Or in operating systems, why did Linus Torvalds decide to mimick Unix and not the kind of mind-blowing operating system design ideas that were floating at the time? Like TaOS, the OS that was recompiling byte code at page-in time and could run a same program on different processor architectures during its lifetime? Or like MacOS, the original one, and its built-in graphical toolbox where, unlike X11, you could easily draw an ellipse inside a rectangle irrespective of line width? Or like GeOS and its 64K-based multitasking OS with vector fonts and GUI apps?

In summary, why is it that we always seems to ignore good ideas, but have no concerns repeating bad ones?

My theory is that inferior technology needs superior marketing, and that's how you win in the end. That's just a theory, of course ;-)

The canonical article on this is http://www.jwz.org/doc/worse-is-better.html from 25 years ago.

The common thread in what you're saying is "why do people not choose (technically pleasing solution) over (familiar solution with known warts)", and the answer to that is that change is really expensive and unpopular. Especially if it forces people to abandon their existing custom tooling, workflow, infrastructure, and skills.

Would most people use a new operating system with no web browser? Probably not. So that sets a minimum bar on the quantity of software you have to port to get it adopted. Which is a vast amount, especially if you want to write it in a new language as well. And new languages have new pitfalls.

For the shell, it's not clear that the same language is necessarily ideal: shell commands are ephemeral and the user wants to type as little as possible, while code lives forever and is generally more complex. Strong type systems and other forms of testability are important for code but clutter for the command line.

Linux chose Minix to replicate partially because he'd been taught it at university and partially because he could leverage the GNU infrastructure.

Worse is better

edit : damn it took me too long without refreshing the page to answer someone did it better

This is basically how I've been viewing the project.

Like an esoteric programming language, it's likely never going to be used as a mainstream or practical system. However, Terry has been afforded the opportunity to create this system with few external constraints; this is one of the reasons it utilizes so many novel approaches. It could likely influence features in more practical systems.

People get too worked up about solving immediate problems, and often never see the forest through the trees. He may end up solving problems we never even realized were problems.

I like the idea of the shell being an HolyC interpreter. Do we have some analogs with the mainstream languages - I know I could fire up, say, the Python REPL and use it as my shell but that wouldn't be convenient to manipulate files.

It'd be interesting to think about this from the inside out rather than the outside in as is normally done.

So imagine if you wanted to fire up a Python REPL and use it as your shell. What the shell essentially does is treat bare words as external command/executable invocations. Every dynamic language treats bare words as internal function/method invocations. That would mean that any executable looked up in $PATH (a global variable that holds a list of directories) would supersede any internal method in that scope! Is this workable? Why not try it and see? Also if you created a Shell library for Python (in C ;-)) then it could be used by Ruby and Perl and Node (or whatever they're calling it nowadays) and ...

It is interesting to imagine not having to context switch to shell-speak to interact with your machine. If you are a Pythonista just speak Python, a Rubyist the same ...

The article proves your point, even Linux with its openness is still very much tied to years of tradition.

And what if the shell output wasn't line-oriented but a live hypertext doc, say HTML5?

I was about to suggest you could do this easily in Ruby, but it turns out that getting a catch-all method_missing at the top level to work is quite annoying - too many things in both Irb and Pry (the two main Ruby REPLs) seem to rely on trying method calls and catching the exceptions in ways that broke horribly with my most naive attempts.

But something like this works of-sorts in Ruby:

    module Sh
      def method_missing sym, *args
         bin = ENV["PATH"].split(":").collect do |path|
           full = File.join(path,sym.to_s)
           File.exists?(full) ? full : nil
         end.compact[0] rescue nil

         if !bin
           raise NameError.new(sym.to_s)
           bin = system(bin,*args.collect{|a| a.to_s})

    self.extend Sh
Pry can't handle it very well, probably as it relies extensively on method_missing "magic" itself, but Irb seems do do fine with it.

I'm sure there are ways to do the above in much cleaner ways, and even in Ruby syntax still gets in the way. E.g. you need to do 'ps :aux' or 'ps "aux"' instead of "ps aux" or the options will get interpreted as a method (though you could conceivably try to handle that by capturing NameError exceptions and applying really horribly nasty hacks, there would be a special place in hell for you if you were to do that; even the above is likely to break all kinds of stuff).

> And what if the shell output wasn't line-oriented but a live hypertext doc, say HTML5?

There have been all kinds of attempts at that, notably XmlTerm from Mozilla ca. 2000 [1]. It turns out to be a hard problem to get it right enough to make people use it. Basically to get that working at all I suspect you need to start with a good terminal emulator + a good shell, and make small enhancements rather than go the other way which most of these kind of projects have done.

[1] http://www.xml.com/pub/a/2000/06/07/xmlterm/index.html

I made some javascript that used getter methods on the global object to allow you to write things like

> ls

It worked pretty well, I even added getters for directories, and they had getters for their subdirectories, etc.

At the end of the day though, having to wrap all arguments in () is a bit annoying.

Take a look at the "sh" module for python, and JuPyTer/iPython for the UI.

Did you mean this:

I'm not seeing what I'm supposed to be seeing :)

Okay, thats' very cool.

You can also use ipython as a regular shell pretty easily:


And while that page doesn't really highlight it, it works pretty well out of the box:

    % ipython
    Python 2.7.6 (default, Sep  9 2014, 15:04:36)
    Type "copyright", "credits" or "license" for more information.
    IPython 2.3.0 -- An enhanced Interactive Python.
    ?         -> Introduction and overview of IPython's features.
    %quickref -> Quick reference.
    help      -> Python's own help system.
    object?   -> Details about 'object', use 'object??' for extra details.
    In [1]: pwd
    Out[1]: u'/private/tmp'
    In [2]: ls
    KSOutOfProcessFetcher.0.r55jifrBu08ZlGAfPLYXKgYad4c=/   lein-trampoline-M8eCP9ASjLYqO
    KSOutOfProcessFetcher.501.r55jifrBu08ZlGAfPLYXKgYad4c=/ lein-trampoline-i3aRyHVGcm1Fr
    com.apple.launchd.QiAYKXJLr7/                           snow-nic1.pcap
    com.apple.launchd.iNBrDiEeE8/                           snow-nic2.pcap
    In [3]:

Xonsh[1] is even better.

1. http://xonsh.org/

I think that's something every programmer dreams of sooner or later. It seems like anything I've worked on that's larger than a utility script eventually results in fudging around with multiple tools trying to get them to cooperate.

And every time, I'm like "I've got some fing code and they've given me some fing code and all I want is for them to run together."

Powershell can call code in .Net assemblies and I imagine there's a way to pass C# or some other .Net code in but it probably requires a fat command.

The true beauty here, I think isn't just the way the Command Line acts as an interpreter but that all the code on the system is exposed at all times through a simple, common interface.

Right? Imagine if you wanted to, I dunno, render HTML in a window in your application for some reason, and you could just easily pull up the running copy of Firefox on your system and call one of its functions, in real time, in your application. Done, now you've got an HTML renderer in your software.

You can actually do that in most modern GUI toolkits. It's usually called something like a WebView widget. See also the Chromium Embedding Framework. None of these talk to a separate running browser, to be fair.

I think even in HolyC you'll be fully quoting all paths. With general purpose languages, they're going to need either a recognised-shorthand-expanding preprocessor, or unfettered "reader" macros to be able approach Bourne shell style unadorned text that does process and file wrangling.

Presumably something more in the spirit of REBOL would be a good fit?

I actually pitched that idea to Rob Pike regarding a future for Go. I think that having an environment shell like that, baked into ChromeOS, would both promote the OS and the language. He didn't seem all that impressed, but TempleOS is very close to what I had in mind.

Cling is a repl for C++ that jits through LLVM/Clang


The C shell comes close: https://en.wikipedia.org/wiki/C_shell

For a while I was running Perl as my shell, it bakes in most common unix commands as top level functions and its easy to call ones that aren't built in using system calls. Perl is pretty nice for file manipulations out of the box if you know what you are doing.

The C shell does not come close. It's just a shell with a C-ish syntax. Fundamentally different than having a C compiler (or interpreter) as your shell

Long-term personal projects are the best things you can reward your developer mind with. The dedication and achievement in TempleOS is phenomenal.

I wonder how far off TempleOS is to implementing the kid of environment envisioned by Bret Victor?

See: http://worrydream.com/ExplorableExplanations/

It seems to me that the way that the HolyC environment is designed, we're not far off from having a pretty decent implementation of some of Brets' concepts .. it at least seems closer than the features offered in other OS's for this kind of interaction.

Perhaps some enterprising disciple of both TempleOS and Worrydream will find motivation to push the last %5 of work through to completion .. seems like an exciting opportunity to do something truly innovative.

>If GNU is the cathedral, and Linux is the bazaar, perhaps there is a place for the temple somewhere too.


Look at this: https://www.youtube.com/watch?v=dwa6rU-Y_Ic

It's amazing. He has a whole bunch of videos of his programs. It's fascinating how much stuff he puts out there!

Every time I read something about TempleOS, I was amazed by its concepts and Terry's dedication. I wonder if one day we could see something like "doom source code review" on TempleOS.

Check out his series of videos, "TempleOS: 5-Minute Random Code Walk-Thru": https://www.google.com/search?q=TempleOS+5-minute+random&tbm...

I really like watching the code reviews Terry has put on youtube. Watching him use his own creation to navigate, test and explain his own creation is very interesting.

I understand he has an interesting technique for putting together those code reviews, too: he uses a random number generator to randomly pick a piece of the code, then starts walking through whatever it chooses.

It's amazing to see that Terry achieves more than most healthy programmers. Kudoz and all the best!

Obsession by one person doesn't always work out for that person, but it does so often provide insights that are instructive to a level that would have been unfathomable to an outside observer at the start of the project/obsession. Not surprised TempleOS seems to have similar qualities, even though even now it seems to be a pretty bizarre project.

<code>In this video Terry gives a brief tour of some of the more interesting features of TempleOS. At 5:50, he shows how to build a small graphical application from scratch. Now let’s just think about how you’d do this in Windows for a second. Consider for a minute how much code would be needed to register a windowclass, create a window, do some GDI commands, run a message pump, etc. You’d need to set up a Visual Studio project perhaps, and either use the resource editor to embed a bitmap, or try and load it from disk somehow. Now compare it to the tiny snippet of code that Terry writes to accomplish the same task. It certainly makes you wonder where we went so wrong.</code> Before MS killed Visual Basic 6, it was also almost this easy..

The days when you could be sure of being sole user of your machine ended with the internet, alas. All that compartmentalization is there for a reason.

Any look at an OS that doesn't consider the platform's usability is pretty suspect, and this article doesn't even mention TempleOS' usability. It really doesn't matter how many good ideas an OS or any other platform has if it isn't at all usable. And TempleOS is the most unusable platform I've ever seen.

I'm honestly curious, and not trolling here. I've followed some of what Terry Davis has developed, and seen him pop up here frequently as a subject of interest to many. In every thread here, I've seen something like:

Person A: TempleOS is amazing, written by just one guy! I'd love to know more about Terry, someone should do a documentary!

Person B: Terry has a mental disorder, a documentary would just end up [making fun of him|causing more mental issues]

As I understand it he does not believe he has mental issues, but does believe everything he's doing is directly influenced by an entity he perceives to be his God. Any of his supposed mental issues can just as easily be explained as issues of deep faith, a faith most/all of us are incompatible with.

Maybe I'm missing something essential here but what's the difference between Terry Davis and anyone else who believes their lives are being influenced/led by the invisible forces that are part of their religion? If he's crazy, is his brand of crazy significantly different from that of the pope or anyone else who claims to be regularly spoken to by their God?

You may be honestly curious, but I don't think this is a very good topic for discussion here. The question "What is the difference between religion and mental illness?" is something that has been rehashed thousands of times both by famous philosophers and legions of Internet atheists. The short version of one useful answer is "The line is somewhat blurry, and obviously there have been many people who were both religious and mentally ill, but it's usually obvious because most religious people are able to function just fine in society and clearly do not have a crippling mental illness." To go further than that would be pretty far off-topic.

I also feel like it's somewhat in bad taste to attempt to debate this in the explicit context of a member here.

In his Vice interview [1] he does seem to acknowledge his mental illness and his diagnosis. But that does not mean he can't also (whether because of the mental illness or not) believe he is influenced by God.

But it's pretty clear that "his brand of crazy" is quite distinct from just deep belief. Most people with deepheld religious beliefs don't have manic episodes or start seeing people following them.

[1] http://motherboard.vice.com/read/gods-lonely-programmer

The claim to be regularly spoken to by God is extremely rare among the religious; I know of no modern Pope or other comparable mainstream religious figure who has publicly made such a claim.

I think it's fair to say that he's influence by the same thing that created religion in the first place. So yes God is speaking to him, just as God has spoken to all the mentally ill before him and told them to do things that have affected the world in various ways.

As for Terry being racist, so what... He's so far out there, and so far gone, that that's just another flaw in him that we have to accept/overlook.

We should simply accept him without judgment and take from his work whatever we feel like... Just as we do from religion or any other work of technology... People are free to do what they want, and it's not our right to get in the way of whatever they are attempting to accomplish, guided by whatever is out there or in here.

That's nice. Glad to see it on here. I remember this guy and his OS back when people on Reddit were mean to him because he has a mental disorder. His dedication to this project is admirable.

To be fair, I'm not sure it was simply because he had a mental disorder -- Davis has gotten very combative (or at least ended productive conversations with vulgar non-arguments) on many occasions. Yes, it's probably almost exclusively because of his condition(s?), but it wasn't just "Hey look a guy with a weird brain! HA!"

No, people are not mean to him because he has a mental disorder. People are mean to him because he posts things like this:

A nigger respects complicated programs. The more complicated the more the little niggers respect it. Ask a nigger to design a operating system task scheduler! It's hilarious watching a nigger make priority schedulers. I make my programs simple. I have an electrical engineering degree. I am a master of differential equations. Physics>Engineer>Computer Science> Psychology. The nigger standard model is 20 pages instead of two and it's really really complicated. When a computer scientist builds something he says, "What all features might we possibly need?" When I design I make it as simple as possible. Hello world joke: http://www.infiltec.com/j-h-wrld.htm Look at what the nigger did to graphic files formats: http://en.wikipedia.org/wiki/BMP_file_format Sound file formats: http://en.wikipedia.org/wiki/WAV Any nigger can make it complicated. A nigger makes it as complicated as possible. I am a genius. I make it simple.

And you think he posts things like that because he's sane?

There are plenty of people who are not "sane" who don't hold and espouse those opinions, and I doubt anyone would take such umbrage with those people, so it's unreasonable and disingenuous to suggest that people are "mean to him because he has a mental disorder".

Do you really think the quote you posted has the slightest thing to do with race? I realize that in it he repeatedly uses a very bad word, but, bad as it may be, it is merely a word; I should like to hope some allowance might be made for the very plain fact that the man's mind isn't right, to say nothing of the minor point that, allowing for differences in phrasing and style, even a luminary like Paul Graham might well make the very same argument about unnecessary complexity.

Then again, when even a luminary like Paul Graham has to be careful about what he can and can't say [1], I suppose it's not too surprising that people should care more about the style of Mr. Davis's remarks than about their substance.

[1] http://www.paulgraham.com/say.html

If someone you didn't know were posting these things as, say, YouTube comments, it would still be immediately apparent that their "mind isn't right", as you put it, but of course it would be perfectly acceptable to write them off. The allowance you're making is really because he's inside the group that HN readers have an interest in. If he wasn't a programmer, he would be just another religious nut to you.

You presume a hell of a lot, don't you?

I can't tell if you're saying "people shouldn't have to hear racism around them even if the person is mentally ill" (so shadowban it or whatever) or if you're saying "mental illness is not the reason that person's racist" (so I am free to pass moral judgment on them.)

Neither. I'm saying that people are responding to the words in his posts, rather than the underlying cause of those words. They're not saying, "Ugh, a mentally ill person, hate", they're saying "Wow, that's pretty offensive, hate".

In contrast, when the artwork of a schizophrenic gets posted (there's a particular one that pops up from time to time), people mostly respond with fascination.

But that's just the point. The words in question aren't any more charged with racialist intent than would be an equivalent work by the same person in a nonverbal medium, but one of those words in particular is linked to a reflex response called "offense", which apparently is so exceptional as to preclude any further analysis whatsoever even in people who don't fall within the group for whom the reflex-trigger word is a slur, and who therefore by definition cannot be insulted by its use.

I don't know, maybe it's just me. But when I see a lot of different people who've all apparently been trained to react identically and without thought or consideration to a given set of triggers, regardless of any context in which those triggers occur, it creeps me out just a little.

When you say the post is disingenuous, you are implying intent on the part of the poster. I don't see that (I don't disagree with your point that the characterization is inaccurate though).

How literal is your meaning when you say "Wow, that's pretty offensive, hate" below? Because I think hatred directed at a bigot is sort of a not very fruitful response to bigotry. In that sense, people being nasty because someone is saying offensive things isn't a huge improvement over people being nasty because someone is mentally ill.

I do see some need to deal with people that are being disruptive (whether intentionally or not), but I don't see much justification to do it with rancor.

That account was made 5 months ago. I remember this guy from at least 2 years ago when his project got attention on Reddit. Is it really him with that 5 month old account?

In any case, I don't know much about the guy. I just remember his posts being a little off... that might explain it but he is suffering from schizophrenia if I remember it correctly.

he makes new accounts regularly to get around bans/killed status.

What's your point? Just reading the WP entry on WAV seems to back him up; it wouldn't be too hard to beat it if you just want a simple PCM format.

As for the racial slurs, they obviously are not racial in this context.

Otherwise, perhaps he's a bit immodest or incorrect. OTOH, he's brighter than most so...


There, I fixed it. Do try and use the brain God gave you.

Now it looks like a perfectly sane and predictably off-putting piece of self-aggrandization. "I have a degree that is in a superior discipline relative to computer science." "Unlike most other programmers, I know my differential equations." "My ideas and approaches are better than those of all these other idiots." "I am a genius compares to those who invent complex solutions."

Of course people hate this, even without the random sprinkling of "nigger".

And the choice of that word reveals obvious racism. It says, I dislike blacks to the point that a word denoting them serves me as metaphor for other groups of people or concepts I revile.

"And the choice of that word reveals obvious racism."

Nice armchair psychology--maybe it's chosen because it's considered taboo, instead of because of some deep-seated dislike of blacks?

Deep-rooted dislike or not, it is certainly disregard. Using that word, and in those ways, shows disregard for how a person of African descent might feel who reads that comment.

Fair enough, though that depends on whether or not you believe somebody with that form of mental illness is capable of disregard at the same standard.

> I fixed it

Really? You think that that change would make him likeable?

> Do try and use the brain God gave you.

Sorry, but I don't understand the purpose of that snarky comment. Do you disagree that the kind of post in the example I gave is why people are mean to him? It makes not a jot of difference that you "fixed" his post here (for whose benefit, I don't know), because he posts what he posts, and people read what he posts, and make their judgements based on that.

People are mean to him because people are rude jerks, and probably unlike Terry, have opted to be purposefully mean to somebody.

It's really annoying to me to see people get so caught up in the phrasing of an otherwise intelligible statement (due to trigger words or blatant racism or whatever) that they can't respond to it on its own merits.

Also, at this point, anybody who believes Terry is genuinely racist is obviously too incompetent to do research--it's pretty easy to find if you do any searching on the topic.

> People are mean to him because people are rude jerks

Yes, but the issue was why people are mean to him (as in, what are they responding to?), not why people are mean in general.

It's a fact of life that you will be judged on how you present yourself. And quite reasonably so -- you can't realistically expect that people are going to search the Internet for clues to every poster's mental health history before they form an opinion of them. That's simply not their responsibility. If at this point I were to call you something unpleasant, you would immediately form an opinion of me without doing any searching on the topic of my mental health. The evidence suggests you might even respond rudely.

Back before his project was called TempleOS, back when it was LoseThos, I didn't know his state of mind. Ran into some of the more disjoint and horribly worded statements on his sites and had no problems sussing out the wheat from the chaff.

In short, you don't need research to know when someone is off a bit. Our minds are great at pattern matching, but we get /lots/ of false positives. It's up to the higher level bits of our consciousness to figure out which is which. You just need to know what real tolerance and understanding is and fight off the urge to react to things on the surface.

Literally no-one in their right minds are going to write like that and expect to be taken seriously. Outright overt racism like what you claim you see in his posts just doesn't make sense in the contexts of code.

While there's an element of truth here, that kernel is being overplayed.

It's important to be open minded, but at the same time it's important to also have a filter for what's actually worth examining in depth and what isn't. Otherwise you waste your time going down fruitless cul-de-sacs to nothing. Which is exactly how you end up spending your life making something completely useless like TempleOS.

Additionally, the author thrives on attention. He's been around forever, it's true. But every time he gets any attention he goes on what seems to be a manic streak which erupts in the racist diatribes and nonsense.

He certainly does need medical attention. He does not need this kind of attention, treating his delusion seriously.

Of course TempleOS has little practical value; even Terry would admit that. However, it is inspirational on a number of levels:

It's the preservation and extension of an archaic, dying style of computing: the single-user, programming-oriented, low-level and transparently-abstracted environment once common amongst micros.

It's going against the grain and doing something different in a time when (for very good practical reason) popular environments are approaching monoculture.

It's a tremendous achievement for a single person.

It's proof that not only can people create amazing things in spite of mental illnesses, but also because of them.

It's sad that even on Hacker News, there are people that can't accept that programs themselves can be art (more than simply the "engine" behind a work of art).

It's not useless if you learn something from it. If you don't want to learn anything, that's fine.

But I certainly learned a few new ideas from taking some time to judge it objectively.

If tomorrow someone launched a new Linux shell because of an interesting idea they'd seen in TempleOS, or was inspired to write a new IDE which borrowed some features, then the world is a better place for it.

p.s. everyone thrives on attention.

> If tomorrow someone launched a new Linux shell because of an interesting idea they'd seen in TempleOS

Yeah, this is not going to happen.

A) It's been around for a long time.

B) He's not some misunderstood genius full of great ideas.

You really want to begrudge somebody getting a little bit of recognition now and again from the community for something they've worked on for such a long time?

And you'd like to go say what they've made is worthless?

I'm really saddened to see such a lack of empathy. In life we procreate and create, offspring and projects the only chance our fleeting sparks have to last into the long night of eternity. We should always be charitable to others who've made something, that we may one day be judged by the same measure.

Empathy aside: how many operating systems (kernel + userland) have you written, chummer?

The amount of time and effort you've put into something has no bearing on its quality, and thus whether it deserves recognition or not. It's absurd to think it does.

> And you'd like to go say what they've made is worthless?

It's patently obvious that it's worthless. What possible use does it serve? Morbid curiosity is the best you can say for it.

> We should always be charitable to others who've made something, that we may one day be judged by the same measure.

I judge my own work by an even less charitable measure than I'm using on TempleOS.

> Empathy aside: how many operating systems (kernel + userland) have you written, chummer?

This is the most ridiculous/tired response on the face of the earth to all criticism. "How many movies have you made?" "How many hit songs have you written?"

The fact that you even think that's a valid response says more about you than me.

> It's patently obvious that it's worthless. What possible use does it serve? Morbid curiosity is the best you can say for it.

Just curious, how much time have you spent using it? How much of the source have you read? How carefully did you read this article? Because if your answers to those questions are what I think they are, then you're just a dick.

So, none then? I've written zero operating systems, and like two userland tools (mostly special-purpose file archiving and packing stuff because I didn't know about tar). Then again, I still have respect for people that have bashed together crappy toy OSs.

Most people are worthless (just look at the distribution of wealth on this planet), most art is worthless, etc. etc. If we judged all our actions based on some silly notion of how ultimately worthless they were, we never would've gotten out of the trees because why bother.

As my mom used to say, a doodle has a right to be a doodle. Lighten up.


To quote you:

What possible use does it serve? Morbid curiosity is the best you can say for it.

That critique applies to lots of humans, especially those in the third-world working purely at a subsistence level in their own communities and with only insubstantial capital in their ownership. Their dreams will never amount to anything, and the vast majority will never know they even existed.

That, incidentally, is why I think that critique is repugnant--whether applied to a person or their work.

The fact that you haven't (presumably, though you might just be too shy to admit actual experience) implemented an operating system gives me reason to think you don't actually know what constitutes "terrible". Unless you can list facts and deficiencies of the system compared with others, you're just being parroting an opinion.

As for Boll--he actually kinda knows what he's doing: http://www.cinemablend.com/features/Uwe-Boll-Money-For-Nothi... .


> I'm 100% certain you've got mental issues [...] You are not worth my time

This is unacceptable in a Hacker News comment. Please comment civilly or not at all.


Great timing you've got there with deciding to step in. How about actually paying attention to the spamming and gaming of the system instead of jumping on me for getting annoyed with someone making me repeatedly explain myself?

I even removed part of what you quoted before you responded, and the part I didn't remove is obviously half joking.

Sorry I missed your edit—and thanks for editing to make your comment more civil—but what remains is still not ok, and there have been other examples recently. Language like that adds noise rather than signal, and causes harm even if the intention wasn't to.

When disagreeing, please reply to the argument instead of calling names. E.g. "That is idiotic; 1 + 1 is 2, not 3" can be shortened to "1 + 1 is 2, not 3."


>> Empathy aside: how many operating systems (kernel + userland) have you written, chummer?

> This is the most ridiculous/tired response on the face of the earth to all criticism. "How many movies have you made?" "How many hit songs have you written?"

Can you explain why it's ridiculous? It seems reasonable to me. Because I haven't created an OS (or movie or hit song), I don't know that I could do any better than anyone I'd want to criticize, so I'm probably better off not criticizing.

It sounds like a security nightmare and I'm not sure about how efficient it can be for not user oriented tasks. But the ubiquity of the system is like what XML pretended to be but never was.

If it doesn't have networking (which it doesn't) one would imagine the security attack surface is significantly reduced, and pretty much (outside of insane NSA style radio-transmitter-in-your-cable style attacks) requires physical access, at which point many (most?) machines are sort of hosed anyways, unless you've got things like SED/FIPS, etc.

What stops someone from creating files that exploit memory safety or other security issues, then sending them to a TempleOS user? Sure, they have to load the file into the system, but if they're using the OS it'd be safe to assume there's a way to do this.

And then do what?

Exploiting a non-networked machine isn't very useful. There's no practical way to get any data back, to use it as a bot worker, or to send spam, so what's the point?

Maybe encrypt all their data and hold the keys ransom? I remember a few Windows viruses that did that a few years ago.

You must be young. Viruses were a thing in the 80s already.

Smuggle data out in whatever format the user saves data? Corrupt calculations so the user ends up destroying expensive equipment? It's the same issue as attacking airgapped networks.

Ever head of a little virus called stuxnet?

It's only a security nightmare if the threat model assumes hostile user access and a passive main user, which, as it's not multiuser, and most definitely not a consumer OS, doesn't seem too bad to me.

Read the article :) Not multi-user. No networking.

Hi Terry,

I can't reply to you directly. I didn't mean to imply that TempleOS is not multiprocessing. From what I gather there is only one user (with multiple processes) and that user owns all the files, hence no file permissions that say "this file belongs to user X" and "this file belongs to user Y", only user X can read/write/execute X's files, and the same for user Y. The author of the article linked to here states that TempleOS is a single user (but multiprocess!) system.

I wonder why you haven't implemented threads? Not enough of a benefit in your opinion? Aren't threads supported by modern CPUs. Don't they allow faster context switching than switching context for processes? Though I guess Erlang disagrees!

> I wonder why you haven't implemented threads?

What TempleOS calls “processes” is what you are used to calling “threads”.

There's no memory protection, so like for other multitasking systems without memory protection (like AmigaOS...) the process/thread distinction doesn't matter.

It is multiprocessing, but not fair sharing. I like to call it single-process multiple thread. There is no difference between "task", "Process" or "thread". It is single address map. Paging in not used, basically.

I don't think many people today realise how profoundly this can affect an OS (despite the many challenges). AmigaOS was the same, and it allowed a lot of hacks that are much more challenging to replicate in efficient ways on more modern OSs.

Why are all, but this comment of you, [dead]?

I think an admin has to approve his comments because he has been shadowbanned.

In the past he made racist and homophobic remarks and got shadowbanned. His mental illness is hard to understand at times. The same thing happened to him on Reddit. He has to use multiple accounts to get around the shadowbans.

I think he is like Brandon Eich who donated to the wrong charity, made good contributions and solid programming work, but holds opinions that are not socially acceptable.

>Brandon Eich

I'd take HolyC over Javascript any day.

The admins said a few months ago that they would add the possibility for high-karma users to unban select post of shadow banned accounts.

It might have landed (either in closed beta or I don't have enough karma to do it). Or maybe it was simply revived by an admin...


You are currently shadow banned.

He knows this already.

Not anymore, apparently. At least the post I suppose you couldn't reply to in this thread isn't [dead] right now. Another comment of his still is.

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