Collapse OS – Why Forth? - <AUTHOR> https://collapseos.org/forth.html <comment><USER2> If I had to put my finger on why Forth is hard for most programmers, it's like this: the structured program theorem suggests using sequence, selection, and iteration to control program logic. Assembly code on hardware architectures will assign all meaning sequence-relative, late-binding the selection and iteration. Forth doubles down on this sequence-first approach through a more versatile assignment mode(the stack) while only minimally accommodating the other two. That makes it easy to implement, while not explicitly addressing expressability.

Forth written "flat" with shallow data stack usage is assembly by another name, a wrapper for load-and-store; Forth that does everything with intricate stack manipulation is a source of endless puzzles since it quickly goes write- only.

But, like any good language with meta expression capabilities, you can work your way up towards complex constructs in Forth, and write words that enforce whatever conceptual boundaries are needed and thus check your work and use the system as a compiler. That's what breaks Forth away from being a simple macro- assembler. But you have to write it in that direction, and design the system that makes sense for the task from the very beginning. That falls into an unacceptable trade-off really easily in our current world, where the majority of developers are relatively inexperienced consumers of innumerable dependencies.

<comment><USER3> For me, the main problem with forth is a lack of names -- most languages (functional or imperative or even declarative) assign names to things -- things like function parameters, temporary values and so on.

Even Prolog, which is as far from traditional structural program as one can go, usually has descriptive names for unbound variables.

Compared to this, Forth is very name-terse. You get "function names" at best, and nothing else. This really makes programs much harder to understand, as it requires one to remember much more things while reading the code.

<comment><USER4> Note that Forth also supports locals. These will consume and remove N members from the stack so you can summon them as needed prior to calling the words.

But as someone that really got into Forth this year, I can assure that it does get better once you get more familiar with the language. I used to write commenting the stack effects on each line and now I barely need them as I write words in one sitting without that much effort.

Other developers are doing tacit programming in J or Haskell, pipe forward operators in F# or OCaml and threading macros on Lisp dialects and they seem to do fine.

<comment><USER5> It's been a long time since I did anything substantive with Forth, but, as I recall, the big problem here is that most Forth guides get so excited to show you how much rope the language gives you that they forget to teach you how not to hang yourself with it. So you're kind of left to figure out all the little idioms and best practices for stack management all on your own.

<comment> no-s >> So you're kind of left to figure out all the little idioms and best practices for stack management all on your own.

That was my experience learning Forth in the 80's. Initially I tried to add compositional features I was familiar with from APL and Lisp. I raged against the limitations of the cell and schemed to use a typed stack. Eventually I became one with PAD and was able to ALLOT peace to my code. At some point I ranted on how the idiom of counted strings could be generalized to all sorts of useful sin and had an epiphany. 2ROT on!

</comment></comment></comment></comment></comment><comment><USER6> If this gets you interested in z80 hardware, I would recommend building an RC2014: [https://rc2014.co.uk/](https://rc2014.co.uk/)

I built an RC2014 after CollapseOS was posted last year, and thoroughly enjoyed it.

I ended up adding a front panel, complete with switches and lights, to allow toggling in and executing code without a ROM, and also wrote a HTTP/1.0 server for CP/M (which was an enormous headache for lots of different reasons). Never did get around to running CollapseOS on it though.

<comment><USER7> I love this project, and check in on it every few months. I particularly like the idea of scavenging hardware:

> With a copy of this project, a capable and creative person should be able to > manage to build and install Collapse OS without external resources (i.e. > internet) on a machine of her design, built from scavenged parts with low- > tech tools.

I'd be interested in trying to build my own proof-of-concept, but my hardware experience pretty much starts and stops with kids' electronics kits from 20 years ago.

Assuming I can scavenge a Z80, what would be a logical next step? What books/other resources should I be reading to learn more?

<comment><USER6> Definitely read (at least the first chapters of) the Z80 cpu manual: [http://z80.info/zip/z80cpu_um.pdf](http://z80.info/zip/z80cpu_um.pdf)

It gets a bit dry when it gets to the bit that documents the individual instructions, but the overview before that point is well worth reading.

Once you've done that and you're trying to write code, this page is a good reference for the instructions: [http://clrhome.org/table/](http://clrhome.org/table/)

To build a scavenged machine, you'll need a Z80 CPU, a clock source (I think an RC oscillator would be the simplest working setup?), probably some sort of ROM, an SRAM, some sort of IO device (probably a Z80 SIO/2 for serial), and a 5V power supply. I think that should be all that is required. Then you need to load your code into the ROM at address 0.

Then you can connect the SIO to a USB serial cable (e.g. FTDI) and communicate with your Z80 using a modern PC.

I can't remember if the SIO/2 needs external address decoding logic, maybe you could cope without it if you are happy for it to use up every address?

But building an RC2014 would be easier and more likely to result in a working machine, and would give you almost all the knowledge required to build a scavenged one later if you still want to.

<comment><USER8> Thank you for your thorough answer. Especially when you frame it like that, the RC2014 sounds like like a fun next step. I'll definitely look into it.

<comment><USER6> You're welcome.

For help and support, the rc2014-z80 mailing list is quite active: [https://groups.google.com/forum/#!forum/rc2014-z80](https://groups.google.com/forum/#!forum/rc2014-z80)

And I'd also happily receive RC2014 or Z80-related questions by email (available in profile), although I'm not much of an expert compared to many of the people who are active on the mailing list.

</comment></comment></comment></comment></comment><comment><USER9> I think I've had my own moment of clarity that spans both Forth(s) and Lisp(s) and explains why neither is as common as other languages.

In most common languages, there is a complicated base spec that covers many cases and defines a broad range of affordances, plus libraries and libraries that expand on an already fleshed out collection of tools and etc.

Forths and Lisps give you the core of an environment, and let/expect you to build on the foundation to create your own implementation. Like someone else in this thread said, N programmers, N dialects. Or, more accurately, every Forth program is its own DSL for accomplishing its work.

<comment> sahil-kang I think you can draw this 'core of an environment' parallel between Forth and Scheme: both are small languages and they emphasize growing the language to the problem domain [1]. Common Lisp, on the other hand, is a large language: implementations provide much more than a foundational core, and a fairly comprehensive list of libraries exists. I think RPG's Worse Is Better highlights some of the reasons why CL isn't as popular as other languages [2].

[1] [https://youtube.com/watch?v=_ahvzDzKdB0](https://youtube.com/watch?v=_ahvzDzKdB0)

[2] [https://www.dreamsongs.com/WIB.html](https://www.dreamsongs.com/WIB.html)

<comment><USER10> Off topic, but this (from RPG's Worse is Better) sounds very familiar:

> Part of the problem stems from our very dear friends in the artificial > intelligence (AI) business. AI has a number of good approaches to > formalizing human knowledge and problem solving behavior. However, AI does > not provide a panacea in any area of its applicability. Some early promoters > of AI to the commercial world raised expectation levels too high. These > expectations had to do with the effectiveness and deliverability of expert- > system-based applications.

</comment></comment></comment><comment><USER11> I hate this headline but the project is very cool. People like me who were ignorant should start here instead of the Github to get a better sense of the design goals (and why they are using Forth): [https://collapseos.org/forth.html](https://collapseos.org/forth.html)

<comment><USER12> I've read that page and I'm still wondering why they're using FORTH.

C has excellent portability and performance. The article agrees with the general consensus that C is also generally a better language for the programmer. So why use FORTH? What does it matter that it can do cute things with self-hosting? What does 'compactness' matter?

If the goal is to build a portable means of writing programs for Z80 and AVR, why not develop a C-like language, or an IR, or put work into developing a serious optimising C compiler targeting the Z80? I get the impression that's a relatively unexplored area for (rather niche) compiler research.

<comment><USER9> The rest of the storyline of this page covers what I think is the core concept that Chuck Moore started from, and defines Forth as its own environment: the core of the language that needs to be defined in order to write and execute Forth words is surprisingly small. Once you have the core words in place, you can layer on exactly the constructs you need.

I won't claim to be a proficient Forth author, but I've used it to accomplish a couple of rather odd one-off projects, and it is amazing how much you can do, as long as you're not expecting graphics or networking or huge storage needs.

Compactness matters because when you're trying to bootstrap into a tiny (or hacked together custom build) environment, the tiny bootstrap footprint means you can be up and rolling that much faster.

C is all good, I've been writing it for a long time, but I'd much rather get a Forth core going in raw assembly than even a stripped down to brass tacks C compiler.

<comment><USER12> Seems like an IR would make sense here. Perhaps a stack-based one. If you need a compact program representation, that doesn't mean you have to use FORTH as your source language.

<comment><USER13> I think the argument against a custom IR is that once you start optimising your IR for compactness you'll probably end up near Forth in the design space anyway. As you say perhaps making the IR stack-based.

Once you're at that point you may as well just use Forth, especially since it's got a proven ability to work in these kinds of resource contrained, self- hosting/self-bootstrapping environments.

<comment><USER12> > you'll probably end up near Forth in the design space anyway

Good point. Related to this, FORTH can be treated as a target platform for compilers, although I don't think there are many mature compilers that do this.

I wonder if CollapseOS will ever seriously target heavyweight platforms like x64 (and not just through emulation with libz80). I suppose that's out scope, but it would open the door to JIT.

> you may as well just use Forth

Presumably it could be a little more compact if a less human-readable variation were used, no? FORTH uses _DROP_ and _THEN_ , which could be shortened at the cost of readability.

</comment></comment></comment></comment></comment></comment><comment><USER14> First time i hear about this project and i love it.

I often talk with a friend who's an historian, and that makes me realize how our relationship with time, as an industry, is extremely short sighted.

The internet archive is an immensely valuable project, as well as all the websites archiving old documentation, etc. But i don't think a lot of people realize the value of things they're destroying everytime they execute a delete statement in a DB or a filesystem.

This Collapse OS ambition to be able to "bootstrap" something useful over any kind of primitive hardware and sustain the passage of time ( or catastrophic event) may have an immense value in the future.

<comment><USER15> DELETE statement... That's far too obvious. With every UPDATE statement you are forgetting the past, yet it's still the goto DB paradigm! It's okay to constantly lose information apparently...

And it's not like we don't have alternatives. There is Datomic of course, but also juxt/crux and DataHike.

</comment></comment><comment><USER16> > The Z80 asm version of Collapse OS self-hosts on a RC2014 with a 5K shell on > ROM, a 5K assembler binary loaded in RAM from SD card (but that could be in > ROM, that's why I count it as ROM in my project's feature highlights) and 8K > of RAM. That is, it can assemble itself from source within those resources.

Meanwhile, you can't compile rustc on a 32-bit system because it runs out of address space...

</comment><comment><USER17> There seems to be a common conception that Forth is always interpreted by some kind of virtual machine. But it's quite possible to compile Forth all the way down to native machine instructions with no loss of interactivity and without losing the rapid bootstrap capability the author describes. Such a Forth runs almost as fast as C ( _almost_ because modern out-of-order and other processor optimizations probably don't work well on compiled Forth code).

I used this approach when I bootstrapped a Forth compiler on the TI 34010 graphics chip in a similar fashion as the author. It even had local variables so you didn't drive yourself mad thinking about the stack all the time.

My favorite commercial example of such a Forth was Mach 2 Forth on the early (pre-OSX) Macs. I don't know if any modern Forths do down-to-the-metal compiling or local variables, but I'd be interested to find out.

<comment><USER18> > local variables

I believe most modern forths will have these, gnuforth does for example.

> down-to-the-metal compiling

I think there are some that do this, but back in the day, the opinion of lots of forth programmers was that threaded code was good for the 90% of the program where performance didn't matter, and added an inline assembler for areas where it did.

<comment><USER19> And of course, you can always add support for local variables yourself. For an example, see [http://turboforth.net/resources/locals.html](http://turboforth.net/resources/locals.html), which takes 808 bytes to implement. That's hefty, for some systems where one would use Forth, but, FTA, _"Placing key values in locals will actually both increase peformance, and make your code smaller"_ , so you can earn that back if you use the facility enough)

</comment></comment></comment><comment><USER20> I thought this is pretty fun project and the idea is just cool right away, but then I went on reading and was surprised by the fact it seems the author is serious. I would be really curious to hear his opinion on why the supply chains should collapse before 2030. Obviously, there wouldn't be a shortage of people in the comments who can start speculating on why it might happen, and, of course, I myself also can provide a couple of feasible scenarios, but nobody of us were serious enough to actually start this project, so _his_ opinion on the matter is somehow quite more interesting to me than it would normally be.

<comment><USER21> If you had told me last year that we would have a pandemic, lockdown, massive economic recession and job loss and now riots and protests etc and all at the same time I probably wouldn't have believed it. I'm starting to think the world is a lot more fragile than we all thought.

<comment><USER22> Not "we all" thought — plenty of people have been saying this would happen for years. Specifically, epidemiologists and black people. Maybe we should listen more!

</comment></comment></comment><comment><USER23> The weird thing about history is that it only makes sense backwards. Someone 500 years in the future might think of this as the Gutenberg printing press. It is often difficult to appreciate the magnitude of actions in the present.

<comment><USER24> Why should they think that?

The gutenberg press was used in the real world. There are lots of OS being used in the real world for real work.

So why should someone in 500 years think this is more relevant, than for example Linux?

And if there is a real collapse, then I also do not really believe everyone makes a run for collapseOS. There are other options: all the ones, tinkerers and hackers use already today.

<comment><USER23> We don't know how history will pan out. Just wanted to share the weird feeling I sometimes have about current events. For all we know, post-collapse technology could be based off QMX reverse-engineered from luxury vehicles. It's just fun to think about how events can have that unexpected butterfly effect. I sometimes catch myself with the implicit belief that we are "late" in the story of history. But given the possible expanse of time, we might be the "hunter-gatherers" of a civilization we cannot even begin to comprehend. This might just be the second of the dark ages.

</comment></comment></comment><comment><USER15> I'm surprised that no one has mentioned [https://flashforth.com/](https://flashforth.com/)

There is no intriguing backstory for it, like for CollapseOS, but it's a ~6 kiloword, practical 4th environment for Microchip PIC microcontrollers, which are a lot simpler than Z80, btw... The source code is trivial to understand too. My father is still using it daily to replace/substitute Caterpillar machine electronics or build custom instruments for biological research projects.

We started with Mary(Forth) back then, when the first, very constrained PIC models came out, with 8 deep stack and ~200 bytes of RAM. Later we used the [https://rfc1149.net/devel/picforth.html](https://rfc1149.net/devel/picforth.html) compiler for those, which doesn't provide an interactive environment.

I made a MIDI "flute" with that for example, which was fabricated from sawing out a row of keys from a keyboard and used a pen house as a blow pipe and a bent razor with a photo-gate as the blow-pressure detector...

There are more minimal Forth OSes, which might be more accessible than a Z80-based one.

I would think those are more convenient for learning, how can you have video, keyboard and disk IO, an interactive REPL and compiler in less than 10KB

I remember, I played a lot with [https://wiki.c2.com/?EnthForth](https://wiki.c2.com/?EnthForth)

But if you really want to see something mind-bending, then you should study Moore's ColorForth! I found it completely unusable, BUT I've learnt immense amount of stuff from it: [https://colorforth.github.io/](https://colorforth.github.io/)

There are more usable variants of it, btw. Also worth looking into Low Fat computing: [http://www.ultratechnology.com/lowfat.htm](http://www.ultratechnology.com/lowfat.htm) I think it's still relevant today.

</comment><comment><USER25> I'm delighted to see that hsoft took suggestions about Forth to heart, and that it has lead to both simplification and enrichment of the project.

</comment><comment><USER26> I love this project. Thank you for posting it. The idea of a post collapse operating system reminds me of slackware/subgenius's old slogan: "...the world ends tomorrow and you may die!"

I'll be trying to compile collapseos, write forth and load slackware on floppys in a few years then. (Will systemd survive civilisation's collapse, especially when it caused it, that is the question....)

<comment><USER27> For me this is slightly into Poe's Law territory: Is this actual prepper mindset, or tongue-in-cheek?

<comment><USER26> Thanks. I'd never heard of that law before. I think he's serious. I'll appreciate his work both pre and pos civilisation collapse. I like his software aesthetic too.

Maybe I'm getting old, maybe I'm seeking more control, maybe the world has come needlessly complex, but there's a certain appeal about returning to more manageable days, where it was possible to fit a software and hardware system in your brain, and your brain was swimming with ideas on how to use a limited system rather than drowning in layers of complexity.

<comment><USER27> I liked playing the Fallout games, I grew up with 8 bit machines, so I'm all in at using a post-apocalyptic scenario as a setup for a though experiment tech stack. In a "ha ha only serious" manner.

But on the other hand, real preppers scare the effing s out out of me.

</comment></comment></comment></comment><comment><USER28> Forth is one of the last languages on my list. Whenever I read something like this article, I want to learn it. The advice at the end of the article seems interesting. Does anyone have any resources that might help with this?

<comment><USER29> A Forth shibboleth is that you have to implement your own in order to understand it. Try reading the assembly, then forth source, for jonesforth: [https://github.com/AlexandreAbreu/jonesforth](https://github.com/AlexandreAbreu/jonesforth)

This is how I learned.

<comment><USER28> Oh wow, thanks. That is pretty much exactly what I was looking for.

<comment><USER30> Original repository and introductory article:

[http://git.annexia.org/?p=jonesforth.git;a=shortlog](http://git.annexia.org/?p=jonesforth.git;a=shortlog)

[https://rwmj.wordpress.com/2010/08/07/jonesforth-git- reposit...](https://rwmj.wordpress.com/2010/08/07/jonesforth-git-repository/)

<comment><USER28> For anyone stumbling over this and having trouble to build it, I had to figure out two things: 1\. When building on x86_64 Debian, I had to install linux- libc-dev:i386 to get /usr/include/i386-linux-gnu/asm/unistd.h. I also had to adapt the include path to have it actually found. 2\. If you see a segfault when running the executable, you likely need to remove -Wl,-Ttext,0 from the build command. At least on my system, it fixes the segfaults and now jonesforth runs as expected.

</comment></comment></comment></comment></comment><comment><USER31> > Some Forth enthusiasts like the language for itself. They think that its > easier to express much of the logic of a program in this language. Many > books and tutorials are touting this. [...] That's not my opinion.

In my opinion, it's not that FORTH code is hard to read, but that FORTH gives the programmer so much freedom that every program becomes its own microcosm of DSLs.

<comment><USER32>
        : C(-; LICK SMILE NOSE WINK ;

( See my profile for more microcosmic FORTH DSLs! )

c(-;

[https://news.ycombinator.com/user?id=DonHopkins](https://news.ycombinator.com/user?id=DonHopkins)

</comment></comment><comment><USER33> [https://collapseos.org/why.html](https://collapseos.org/why.html)

"That being said, I don't consider it unreasonable to not believe that collapse is likely to happen by 2030, so please, don't feel attacked by my beliefs."

Triple negative? Quadruple negative? (If we count the second "don't".)

Compare something like:

"I consider it reasonable to believe that collapse is unlikely to happen by 2030, so please, don't feel attacked by my beliefs."

It is almost as if the grammatical structure reflects the life perspective of the author.

<comment><USER34> This is the perfect comment - pedantic, snarky, and more focused on the superficial features of the article than the content, mixed in with some grammatical pseudo-psychology. Check, check, check, and check! This is peak tediousness. Well done!

</comment></comment><comment><USER35> this might be a dumb question but can someone briefly explain why Forth is more suitable over C or other languages in general on post-apocalyptic OS?

<comment><USER36> \- It's tiny and dead simple to implement

\- It sits very close to assembly

\- It allows high-level programming like in C

\- The concept of pushing/popping things onto/off the stack is a relatively straightforward programming model when done consistently

One of the old competitors to the likes of UEFI and uBoot is OpenFirmware (also known as OpenBoot), for which the primary UI is a Forth shell; OpenFirmware was the BIOS equivalent for Sun's SPARC workstations/servers (and still is for Oracle's/Fujistu's SPARC servers, last I checked) and most POWER hardware (including "New World" PowerPC Macs), among others. About the most delightful pre-boot environment I've used; it's a shame it didn't catch on in the x86 or ARM space.

<comment><USER37> Also works great with graphics. PostScript is similar to Forth.

<comment><USER38> I got into Forth recently - using Gnu Forth - but got bogged down at my inability to do graphics. There are hardly any Forth programming videos of any kind online, besides the "101" kind, but I found one by a guy who managed to get graphics/windows going, I think with GForth. (Can't find it on youtube now.) Looked mega-complicated. So lately back into Tcl/Tk, which also satisfies my "bizarre, powerful and very cool language" itch but actually makes graphics/windows super-easy. I do think Forth is awesome though!

After getting into Forth I got into PostScript, which does have most of the Forth fun/freedom taken out of it. It's not usable for GUI-type programming is it?

<comment><USER39> Look at Sun NeWS and Display PostScript for GUIs written in PostScript (well...an extended PostScript).

</comment></comment></comment></comment></comment><comment><USER40> This is the kind of malarkey I'd get up to on a personal project of mine. Like, I wonder if I'd get farther if I'd written it in Forth/TinyScheme/Erlang? May as well completely overhaul it and find out!

</comment><comment><USER41> I feel sheepish for being on that thread as a detractor, after reading this post.

</comment><comment><USER42> Nice. Must revisit my own Forth OS, or maybe just start contributing to this.

</comment><comment><USER43> Love this project. I wonder why not make it run on smartphones? I'd imagine that's the vast majority of computers out there today. Easier to find a working smartphone than retro consoles.

<comment><USER44> Usually it's nontrivial to get anything custom to run on a smartphone, they're pretty locked down like that compared to more general hardware.

</comment></comment><comment><USER45> CollapseOS? Meh. What we need is ApocalypsOS. Something to play Tetris on after having hauled a bucket of wellwater (and some wood) to the 23-rd floor apartment where I try to survive.

</comment><comment><USER12> On the topic of compactness: is FORTH ever used in the demoscene?

As I understand it, they tend to write assembly, and compress the resulting machine code, for decompression at runtime.

</comment><comment><USER46> See also [https://news.ycombinator.com/item?id=21182628](https://news.ycombinator.com/item?id=21182628) from last year.

</comment><comment><USER47> I want to learn forth now. Where can I find a modern usable forth that works well on windows to make real programs? Does such a thing even exist?

<comment><USER4> You can do just fine with the free versions of SwiftForth and VFX Forth as long as you don't mind that they are 32bit only.

If you end up liking it and want 64bit, you can buy iForth for 100 EUR. It's what I use.

These are all amazing optimizing compilers.

If you care about OSS: Don't waste your time with GForth. If you want something simple that you can hack yourself, take a look at pforth.

<comment><USER48> This. Pforth works really well and the ".S" word is straightforward, while pfe is not. GForth is too difficult; altough you can code for the Game Boy with it, but in order to learn, pforth is more than enough.

</comment></comment></comment><comment><USER37> I keep hoping that a Rubyist will someday do the same thing for Forth like José Valim did for Erlang, with Elixir.

</comment><comment><USER49> Is the focus on forth to rapidly bootstrap from more than just z80, or for readability, or for some other concern?

<comment><USER42> Not the developer, just a forth enthusiast. But I'd imagine it's the ability to rapidly bootstrap on other architectures. Readability is just a bonus on top of that.

The focus of CollapseOS is, well, an OS that can be used after society has collapsed, something running on scavenged chips on hand-soldered boards (in the worst case scenario).

The original logic was the Z80 is still pretty prevalent, so it was thought to be a good choice to base the OS on.

Turns out that a Forth interpreter/compiler is incredibly easy to write (just a few hundred bytes of a assembler, a few thousand at the upper end), so by using Forth they hugely expand the range of scavengeable chips.

</comment></comment><comment><USER33> Here is a Forth you can use on Linux and Windows

[http://web.archive.org/web/20080828064920/http://ronware.org...](http://web.archive.org/web/20080828064920/http://ronware.org/reva/wiki/stable)

</comment><comment><USER50> Forth is Lisp, but with composition as the basic operator instead of application. The result, of course, is a wildly different language but one which inspired the same degree of fanaticism among its adherents in their search for simplicity and elegance.

A truly under appreciated language imho.

<comment><USER25> I rather disagree with your first sentence. Forth is not Lisp, nor is Prolog or APL Lisp, and none of these languages are one short conceptual leap away from the others. Even a very rudimentary Forth can express concepts which have only hazy correspondences in a Lisp, like words which twiddle the return stack or yield a variable number of results on the parameter stack.

I find it misleading _at best_ to casually intimate that Lisp is some kind of ur-language which exemplifies simplicity and thus lies at the root of any design space. Fans of Lisp are overly eager to stake claim upon ideas which do not belong to their language.

I don't mean to bite your head off about it; this is just a trope I find tremendously frustrating.

<comment><USER50> The core of Lisp is a small set of rules about abstraction and application using lists. Forth, at its core, can be formalized with the exact same set of rules (one to one correspondence) but with stacks and composition as the operator. The languages are very VERY different, but there is a similar bare bone formal framework at the bottom.

<comment><USER51> I'm very new to Forth, but find this intuition really appealing; do you know of any examples that demonstrate/prove this correspondence?

<comment><USER50> It's only the newer "concatenative" languages that have explored this forms correspondence. See this essay by Jon Purdy (author of Kitten) on "why concatenative languages matter":

[http://evincarofautumn.blogspot.com/2012/02/why- concatenativ...](http://evincarofautumn.blogspot.com/2012/02/why- concatenative-programming-matters.html?m=1)

</comment></comment></comment></comment></comment><comment><USER52> If the author wants their code to survive the apocalypse, they should generate Turing Machines that have a simple shim interpreter for low-power architectures. The benefit of this is you can build an interpreter for a TM in wood or other simple materials. Semi-Thue systems also fit.

<comment><USER52> I don't get why this is downvoted.

<comment><USER53> Me neither. I like it but the limiting factor on post-apocalyptic digital electronics will be access to datasheets, eh?

It would be interesting to build a minimal useful CPU out of fluidics. [https://en.wikipedia.org/wiki/Fluidics](https://en.wikipedia.org/wiki/Fluidics)

<comment><USER52> Definitely. Or mechanical logic gates. But the surface area would very quickly become an issue for such a project, and you'd need to assume only a certain few tools.

<comment><USER53> True. I wonder what kind of computations people would need to do that would make it worthwhile to make big, slow computers?

I bet it would be easier to make up "sacred dances" that incorporated processing in the motions of the dancers.

And let's not forget that a human with an _abacus_ can do a great deal of the math required for everyday life. :-)

</comment></comment></comment></comment></comment><comment><USER54> somewhat OT, but are there any active Forth communities/forums to follow if one wants to see what people get up to with it?

</comment><comment><USER55> And all I wanted was a pipboy.

</comment><comment><USER56> Why not Factor? :P

<comment><USER4> Because Forth is more (less?) than a Smalltalk on RPN.

</comment></comment><comment><USER57> It's odd to highlight that Forth is 50 years old, considering C is 48 years old and still in very heavy use in operating systems development.

<comment><USER58> Perhaps Forth has changed less than C in that time. The C of 48 years ago can look quite different from modern C.

<comment><USER25> There has never been one Forth. In a world with N Forth programmers, one can expect roughly N implementations of Forth. Perhaps closer to 2*N. An ANS spec exists, but most Forth programmers would say it misses the point.

Forth is a collection of ideas and philosophies toward programming as much as it is a language. Two stacks and a dictionary. Threaded code (direct, indirect, token, subroutine, etc...). Collapsed abstractions. No sealed black boxes. Tight factoring.

C has changed. Forth is everchanging.

<comment><USER59> This is a slightly off topic question for you, do you think the attributes you named are required for having a "Forth" or are they just the most common implementation characteristics? My current pet language project certainly looks Forth-like, with different semantics and a modal dependent type system, but is not threaded nor does it have the traditional stacks and dictionary. I don't know if I'd call it a Forth, but maybe it is?

<comment><USER25> "The dictionary" can be implemented in many ways; simple or clever, namespaced or not. A language without any form of local or global name binding would presumably need quotations ala Joy/Factor, which means your stacks probably have to store _objects_ rather than raw numbers. This tips the scale in the direction of a higher-level language.

The stacks are likewise a description of semantics rather than implementation. Some Forths keep the top few stack elements in registers to reduce overhead. If the return stack isn't user-accessible (r> >r etc.) then, again, you're straying closer to a higher-level functional language than a Forth.

There are many kinds of threaded code. For example, subroutine-threaded code uses native subroutine call instructions in word bodies and does away with the inner interpreter. Threaded code is a natural consequence of disentangling conventional "activation records" into two stacks which grow and shrink independently. You could have a Forth without threaded code, I suppose.

Some Forths attempt to "seal off" or otherwise obscure some parts of their own internal workings from "user programs". This is more common among dialects which try to adhere to ANS specs, like GForth. This isn't a total anathema to Forthiness, but it tends to introduce additional complexity. If a word is useful for implementing a forth kernel, why couldn't it be useful in implementing other functionality, too?

If you're building something higher-level which vaguely resembles Forth, it's probably better to describe it as a concatenative language. A dependent type system doesn't sound very Forthy, imo.

<comment><USER59> I don't think you're wrong in your assessment. But just for fun I will point out that I probably assumed a bit to far when I stated no dictionary, there is a name binding mechanisms for 'words', but I have a quote form as well. Also, while I would say the language is functional, it is also intended to be low level, ideally, the base of the language is a dependently typed pseudo- assembly language, but the modal type system and homoiconic syntax enable building words that are semi-macros. It is, at this point, basically my attempt to blend Forth's philosophical leanings with category/type theory. But thanks for the reply, outside perspectives are always great for me to hear.

</comment></comment></comment></comment></comment></comment><comment><USER60> > Forth doesn't elegantly describe complex algorithms… However, this mental > pain does makes you question your need for complexity… This is something > that I think few developers are familiar with and is hard to describe with > words. It needs to be experienced.

Nice framing, that it's not an intellectual argument you can make to justify the benefits of drawbacks (i.e. an infamous red flag of stockholm syndrome), so you have to point to the experience of the thing itself ("you had to be there").

<comment><USER61> Or there are experiences which have hard to describe intangible qualities that are hard to put logically. Not sure why you have to reach for stockholm syndrome here.

<comment><USER60> my comment was way off the mark, didn't realized it sounded sarcastic. i was instead trying to appreciate his approach to the intangible—pointing to direct experience to avoid stockholm criticism.</comment></comment></comment>


The Fuzzwich Cartoon Maker (yc summer 07) - <AUTHOR> http://www.techcrunch.com/2007/08/06/the-fuzzwich-cartoon-maker/ <comment><USER2> I had some fun with it, no offense to anyone involved. It's pretty cool actually, because of how simple it is.

<http://www.fuzzwich.com/minivid/minivid.php?vid=400>

<comment><USER3> That made me laugh out loud. I put it on my frontpage.

<comment><USER2> I'm currently reading a book, 'The Black Swan', that talks about randomness, and I have to say... I didn't wake up this morning thinking that I would create a cartoony animation subsequently featured on PG's web site.

</comment></comment></comment><comment><USER3> This is strangely addictive. I still haven't figured out exactly why.

</comment><comment><USER4> Looks awesome! Out of curiosity, why can't a user upload a sound or image and use it in their cartoon? If you're worried about NSFW issues, you can always use Amazon's Mechanical Turk to mark a sound or image as NSFW.

<comment><USER5> User upload will be coming in the near future. At least for images. For now, we wanted to push out something that was dead simple and involved as few steps to create something as possible.

On another note, our more powerful and feature rich online music animator, currently in the works, completely revolves around user created and uploaded content.

<comment><USER6> While live record is a great way to get it out there... keyframe based animation (even without explicit timing spline control) would really help.

<comment><USER5> Completely agree. While keyframing may never make it into Mini-vid (maybe a quiet advanced feature?), it will most certainly be in our complete music animator product (which we really need to decide on a name for :) )

<comment><USER6> I've got lots of ideas on some cool ways to do keyframing and animation for non-animators... anticipating the next product.

</comment></comment></comment></comment></comment><comment><USER7> The more I play with it and think about it the more impressed I am. The level of user constraint is spot on. You are constrained enough that it's super simple to use but there's plenty to play with for a long time.

</comment><comment><USER8> Couldn't get it to work. I have Flash 8. No error or anything.

<comment><USER5> Heh. Yes it currently requires Flash 9 and we have zero checking for upgrades. Right now, we are under the horrible assumption that more or likely you have been to YouTube, which requires Flash 9. That will be fixed by the end of the day. Sorry about that oversight!

<comment><USER9> I always used YouTube with Flash 7. There was a big gap between 7 and 9 for Linux with no 8.

</comment></comment></comment><comment><USER10> double congrats to them! A few of them went to Georgia Tech and were in classes of mine. my thoughts about it from yesterday: <http://urltea.com/15s0>

<comment><USER11> I'll second that. Congrats to Rob and Devin and whoever else is on the team!

</comment></comment><comment><USER12> <http://fuzzwich.com/minivid/minivid.php?vid=662>

You are my new favorite website for when I'm too tired to code yet too wired to sleep...

Thank you!

</comment><comment><USER6> Wow. This is great. I was just (yesterday) thinking about how there are no user accessible animation tools out there. There's a long way to go, but this is a wonderful start.

Congrats.

</comment><comment><USER13> Cool name, Fuzzwich. Where is it from? I'll buy a beer for the guy who invented it, if I ever meet him I like it so much. FUZZWICH.

</comment><comment><USER14> Reminds me a bit of <http://quickcomic.com/> \- but done right. Well done guys.

</comment><comment><USER15> This is a fine piece of flash/flex engineering -- congrats guys!

</comment><comment><USER16> I bet Terry Gilliam wished this was invented years ago...

</comment><comment><AUTHOR> congrats guys!!</comment>


WhatsApp threatens legal action against API developers - <AUTHOR> http://www.h-online.com/security/news/item/WhatsApp-threatens-legal-action-against-API-developers-1716912.html

<comment><AUTHOR> Anyone who's interested can still check out the git repository at <https://github.com/venomous0x/WhatsAPI>. They didn't remove the actual commits yet.

<comment><USER2> The API is back online.. and the security issues prevail (check out my post [http://wnstnsmth.net/blog/2012/09/whats-up-with-whatsapp- a-s...](http://wnstnsmth.net/blog/2012/09/whats-up-with-whatsapp-a-summary-of- the-recent-security-flaws-for-the-ignorant-user))</comment></comment>


Yahoo CEO Marissa Mayer Loses Bonus And Stock Award Over Security Breach - <AUTHOR> http://gpbnews.org/post/yahoo-ceo-marissa-mayer-loses-bonus-and-stock-award-over-security-breach <comment><USER3> Quote from MM -

"When I learned in September 2016 that a large number of our user database files had been stolen, I worked with the team to disclose the incident to users, regulators, and government agencies. "However, I am the CEO of the company and since this incident happened during my tenure, I have agreed to forgo my annual bonus and my annual equity grant this year and have expressed my desire that my bonus be redistributed to our company's hardworking employees, who contributed so much to Yahoo's success in 2016."

So does that mean no one pushed it up the chain

<comment><USER4> From this quote it seems like she didn't so much lose her bonus as voluntarily declined it.

<comment><USER5> When you agree to forgo something, you do so because someone else asked you to do it. Otherwise you would say you offered to forgo and they accepted.

<comment><USER6> That is a pretty good demonstration of a fluency in business speak.

<comment><USER7> Business speak in the upper echelons.

</comment></comment></comment></comment></comment><comment><USER8> The state Yahoo is in, I don't think anyone else in there expected less.

Public information on these bonuses shocked me, to be frank. Ok, you took a hard job, but you also failed. A culture that rewards upper management - <USER2> on failures - is a recipe for failure, especially when you employ a large portion of talented and educated individuals who can very easily move somewhere else.

<comment><USER9> They probably agreed on the bonus ahead of time. I doubt she would have taken the offer if it was conditional on Yahoo doing well.

<comment><USER10> > I doubt she would have taken the offer if it was conditional on Yahoo doing > well.

But that's the point. What motivation does she have to do a good job and actually care about the well-being of the company if she gets extraordinary sums of money no matter what?

<comment><USER9> If she had turned Yahoo around, she would be making much more in equity.

<comment><USER10> But does she care? Clearly if someone negotiates to get paid no matter what, they're putting themselves before the company. And based on how she's acted as CEO, I don't see any reason to believe she cares about saving Yahoo!

<comment><USER11> _Clearly if someone negotiates to get paid no matter what_

This is generally how I go about negotiating my salary.

</comment></comment></comment></comment></comment></comment><comment><USER12> So when she ultimately escapes from the crumbling wreckage, she'll have marginally fewer millions.

The incentives for CEOs at today's ridiculous pay grades are all towards short-termism. That's how we get into messes like this in the first place.

<comment><USER13> > The incentives for CEOs at today's ridiculous pay grades are all towards > short-termism. That's how we get into messes like this in the first place.

That's a pretty weak criticism of Marissa Mayer. First, she was hardly set up for success - a first-time CEO placed at the helm of a company that had been struggling for years to find its market, and whose _two_ predecessors were _both_ fired in very public scandals. I'm not sure if anyone could have turned Yahoo around in those circumstances.

Furthermore, Mayer was not at all incentivized towards short term thinking. Yahoo's share price was largely driven by Alibaba from when she joined until the IPO, and it was literally one of the selling points used to recruit her: that she, unlike most CEOs of public companies, would be able to focus on executing a long-term vision without the pressures of worrying about the daily share price for the first couple of years (until the Alibaba IPO).

<comment><USER14> >"That's a pretty weak criticism of Marissa Mayer."

I don't believe the OP was criticizing her but rather the exclusive "CEO Club" where their compensation is 2200 times[1] what their average employees get paid, recieve bonuses in bad or unprofitable years, always get to resign and never fired, and if they do resign in a cloud of scandal they magically show up somewhere else and repeat the whole process anew.

[1] [http://fortune.com/2015/06/22/ceo-vs-worker- pay/](http://fortune.com/2015/06/22/ceo-vs-worker-pay/)

</comment></comment></comment><comment><USER15> Is it a cultural thing (american?) that everyone here is calling her "Marissa Mayer" or "MM" or "Ms Mayer"? No one would say "Mr Mayer", or "Dave Mayer" or "DM" in a hacker news comment, they just say "Mayer". Is that a traditional thing, or is it specific to Mayer?

<comment><USER16> I guess something in the name makes it feel more natural to use the full name.

In the case of Bill Gates for example, I rarely see anyone using "Gates", the full name "Bill Gates" is used.

<comment><USER17> Does not explain Ms Mayer though.

<comment> purple-again Look up my post history, I referred to Warren Buffet as Mr. Buffet. It's a sign of respect for someone you are discussing but have no personal connection to. Nothing sinister going on here.

</comment></comment></comment></comment><comment><USER18> It wouldn't be a bonus if you were entitled to it no matter the circumstance.

<comment><USER19> That's true, but the circumstances to which she is entitled the bonus are probably well defined. The article made it sound as if she was still entitled to the bonus, but was asked to not accept it. In this case, being asked to do something is a pretty loose definition, there's usually fallout from refusing these kinds of things.

</comment></comment><comment><USER20> What I imagine happened based on hints of what Ms Mayer wrote is that the breach affected all employees bonuses for 2016. Ms Mayer would have been under pressure to forego her bonus and put it into the general employee pool and even then bonuses are likely much lower than previous years.

</comment><comment><USER21> Wasn't the guy responsible during this time frame the guy who now heads Facebook security?

</comment><comment><USER22> I hope this is the start of something better. There's been a distinct lack of punishment for allowing and even hiding breaches across the industry that I've seen.

</comment><comment><USER23> Marissa Mayer is still the CEO of Yahoo?

<comment><USER24> The deal with Verizon is still on hold [http://money.cnn.com/2017/01/23/technology/yahoo-earnings- ve...](http://money.cnn.com/2017/01/23/technology/yahoo-earnings-verizon- sale/)

</comment></comment><comment> git-pull [https://news.ycombinator.com/item?id=13654513](https://news.ycombinator.com/item?id=13654513)

[https://news.ycombinator.com/item?id=13386349](https://news.ycombinator.com/item?id=13386349)

I still don't have my flickr account.

Here's the response from Yahoo Concierge: [https://imgur.com/a/smjuL](https://imgur.com/a/smjuL)

The employees at Yahoo have been kind and helpful to me. But the bureaucracy is a rotted waste who just doesn't care.

What am I supposed to do? Why can't you just allow accepting verification documentation like FB and Blizzard does.

The engineers are great. The managers are great. But the rotten core would screw over tens of thousands of people locked out of their account so as to not make one mistake with an identity theft.

How can I be sure my account wasn't one of the ones hacked in one of their many security fiascos?

I'm just exhausted.

<comment><USER25> If the information you can provide doesn't match, what would you prefer they do? (Going off the picture you shared here)

<comment> git-pull Accept the mountains of information I've provided them:

\- Picture of me with my driver's license (which has logins from the area)

\- Sworn oath under penalty of perjury

\- Proof photos in my public account are linked to me (I have pics of a laptop with an xmonad config open which is the same as my GH) [https://farm3.staticflickr.com/2741/4437425032_a059639217_o_...](https://farm3.staticflickr.com/2741/4437425032_a059639217_o_d.jpg) == [https://github.com/tony/xmonad- config/blob/master/xmonad](https://github.com/tony/xmonad- config/blob/master/xmonad)

<comment><USER25> The fact that you can present the Credit Cards that were used for billing and then the bank can prove provenance and all that is in your name would be pretty convincing to me. I'm surprised by their strict adherence to policy here.</comment></comment></comment></comment>


Pieology Pizza is the fastest-growing restaurant chain in the U.S - <AUTHOR> http://www.businessinsider.com/pieology-pizza-business-story-and-expansion-2015-6 <comment><USER2> This reads like a paid-for press release. There's nothing substantial about the market, the competition, the context, or even the founder of the company.

<comment><USER3> Well, it's BI, so there's a 90% chance it's either overt stock manipulation or a press release. They don't exactly put out many substantive articles.</comment></comment>


Sketchviz – Graphviz graphs in a hand-drawn style - <AUTHOR> https://sketchviz.com <comment><USER2> Really cool! I like the random perturbations; you can use them to make squigglevision-style diagrams:

[https://giphy.com/gifs/sketchviz-squigglevision- WtV9O3ufeqeO...](https://giphy.com/gifs/sketchviz-squigglevision- WtV9O3ufeqeOqYnYDU)

<comment><USER3> Is there a point to this? I've long been wanting to implement hand-drawn styles for our interactive graph editing component, but one part that kept me from doing it was that I had no idea how to keep the strokes stable enough to not induce seizures when editing. At least I don't want everything wobbling around when I draw lines or move a node. And I couldn't find a good way to incrementally just roughen up subsequent parts of a stroke.

</comment></comment><comment><USER4> It can be combined with Wired Elements [0] for the whole hand-drawn experience!

[0] [https://wiredjs.com](https://wiredjs.com)

</comment><comment><USER5> Looks great, really like the look of it. For me it always helps, when my daily tools look pleasing. Somehow makes working with them less tiring.

Also working with Graphviz was a great experience while my thesis. Simple and easy enough to 'sketch out', but at the time it offers all needed tools to expand these sketches into something complex. Great tool! Sadly my work uses draw.io which is the exact opposite. For quick sketches on my phone I use MindNode.

</comment><comment><USER6> Pretty neat. How does it work? Are you the creator?

<comment><USER7> Hey, that's me, actually. Thanks for calling it pretty neat!

As I mention on the about page, this is really just stringing a bunch of existing tools together, so most of the credit goes to those folks:

\- the Graphviz contributors for creating everyone's favourite 1990s-era graphing tool

\- Mike Daines for viz.js, which uses Emscripten to compile Graphviz to JavaScript

\- Preet Shihn, for RoughJS, which has the algorithms to transform shapes into scruffier shapes

\- GitHub user @ismay, who made a wrapper for RoughJS to make operating on SVGs, which Graphviz can emit as output, braindead simple

I just duct-taped things together and did some of the tedious fit-and-finish stuff. For example, ensuring fonts render consistently regardless of whether you were previewing in the editor, downloading the PNG (which generates locally for speed) or embedding the graph on another website (which generates in an AWS Lambda using a headless Chrome to render it).

<comment><USER8> > this is really just stringing a bunch of existing tools together

This is essentially what all developers do to varying degrees. The whole is greater than the sum of its parts!

<comment><USER9> Yes. Great work. That is one of my favourite tools.

</comment></comment></comment></comment><comment><USER10> Matplotlib has XKCDify which is similar[0]. It's great for rough or estimated graphs that are not to be read accurately.

[0]: [https://jakevdp.github.io/blog/2012/10/07/xkcd-style- plots-i...](https://jakevdp.github.io/blog/2012/10/07/xkcd-style-plots-in- matplotlib/)

<comment><USER11> the author of this post is the creator of Altair - a declarative visualization library in python built on Vega.

[https://altair-viz.github.io/](https://altair-viz.github.io/).

its exceedingly cool!

</comment></comment><comment><USER12> Another neat graphviz trick is using vuejs (or now sketchviz!) to provide the UI, then layering JS to make the nodes clickable as a visual programming interface.

</comment><comment><USER13> Also of interest: Wolfram's `XKCDConvert` function ([https://resources.wolframcloud.com/FunctionRepository/resour...](https://resources.wolframcloud.com/FunctionRepository/resources/XKCDConvert)) in Mathematica. This allows you to convert plots, charts, diagrams, etc to XKCD style.

</comment><comment><USER11> this is very very cool! thanks so much.

</comment><comment><USER14> Nice idea, however it would be lot easier and faster for my to draw the digram than it would take to write the code in strange language.

<comment><USER15> Others have mentioned generation and speed, but there's a much more important piece, IMO:

Maintainability. With declarative text-based diagramming, you can check these in as text files, and when the system evolves or the diagram has a need to change, it's easy to make a change and re-generate the image.

<comment><USER16> This. With the right tooling, you can embed diagrams as part of a larger document using a code block, which can be tuned and maintained as the system it's describing changes.

Once you learn the rules for the type of diagram you're making, it's much simpler than opening up <diagram tool of choice> and trying to shuffle the pieces around to make room for the change, or re-sketching the whole diagram from scratch on a piece of paper.</comment></comment></comment>


How to force Android 4.2 update OTA on your Nexus devices - <AUTHOR>

If you don't already know, follow the steps below:<p>1. Switch to airplane mode; 2. Goto Settings>Apps>All>Google Services Framework, then Force stop and Clear data; 3. Open airplane mode <comment><USER2> Thank you very much for the instructions. I've tried this one, but without switching to the "AirPlane mode" just power the device off... and it haven't worked for me.

But now, after second time - it's updated!! Yay!!! Thanks one more time!!!

</comment><comment><USER3> Note that this will revoke your security approval for Google Apps (if you are using Device Approvals). It also didn't work for me.

<comment><USER3> Follow up: actually this trick does work, the second time you do it. Currently downloading.

</comment></comment><comment><USER4> Yep, does not work.

</comment><comment><USER5> it worked on the second time :)

</comment><comment><USER6> doesn't work</comment>


ClearFog ITX Workstation May Be the Ultimate Arm Developer Platform - <AUTHOR> https://www.cnx-software.com/2019/03/29/clearfog-itx-workstation-ultimate-arm-developer-platform <comment><AUTHOR> Let me know if I can answer any questions.</comment>


(Telegram) Why? It's all in the cloud, so you won't lose it - <AUTHOR> https://twitter.com/telegram/status/507131601554530304

<comment><USER2> So they allow you to search through your previous chat history... that says to me its not encrypted on the server?

<comment><AUTHOR> They have a normal chat system, and a "secret" chat which is encrypted.

I use the normal chat a lot, and have used it for so long that I'm starting to see a need to export my data. They seem to be ignoring this issue, and have been for months: [https://github.com/DrKLO/Telegram/issues/384](https://github.com/DrKLO/Telegram/issues/384)

<comment><USER2> Gotcha. Its unfortunate that it is so difficult to get people on a new chat app. A while back I set up an XMPP server and ChatSecure with OTR on iOS and Android but no one would use it.

<comment><AUTHOR> It's taken me a while, but pretty much all of my main contacts are on telegram, I managed to convince them all, simply because the text chat is so much lighter than Skype or Facebook, works cross-platform without issues, and is instant unlike the other two. However, the inability to export my own chat history with my contacts is the breaking point, and if they continue to ignore it, it's going to push me to another messaging service which actually respects data liberation.</comment></comment></comment></comment>


Simon Schubert creates complex scenes in paper using creases - <AUTHOR> http://www.simonschubert.de/papierarbeiten.html

<comment><USER2> If it could be automated, imagine what such a technology would mean to the blind. Printed pictures would no longer be just blank pages...

I wonder if something could be done with bump maps [1] and a high-resolution printer by doing multiple passes.

1\. <http://en.wikipedia.org/wiki/Bump_map>

</comment><comment><USER3> Am I the only one who finds that kind of thing depressing?

<comment><USER4> Agreed. I can only look at it for a few moments, and I want to stop. Fuzzy, grey, depressing scenes. Mostly of hallways receeding or stairways. Blank, soulless, inorganic.

If that's what the artist was going for, then they succeeded.

</comment></comment><comment><USER5> This is awesome. I wonder which is the process for realizing one of those. How he can make a crease without breaking the others, for example.

<comment><USER6> He would be using tools like solid rulers to press them against paper. And he most probably use water and heat to shape 3d ovals.

</comment></comment><comment><USER7> Alas, it doesn't appear there are any M.C. Escher creased pages. I was really hoping to see this: <http://en.wikipedia.org/wiki/File:Escher%27s_Relativity.jpg></comment>


World Record RC "Paper" Airplane (2012) - <AUTHOR> https://www.youtube.com/watch?v=KUuTvERSpWA <comment><AUTHOR> I am not sure what the "World Record" part of this video means but this thing is quite a sight to behold</comment>


Intake – American's largest psychiatric chain - <AUTHOR> https://www.buzzfeed.com/rosalindadams/intake <comment><USER2> > Lauren Singer, who worked for six months at the front desk of Colorado's > Highlands Behavioral, said people who were waiting in the lobby for an > assessment would ask her what it would entail. "I would frequently get > yelled at for overstepping my bounds and telling them too much about the > evaluation process," Singer said. A button behind the receptionist's desk > controlled the lock to the front door of the facility, and, she said, "If > someone came in voluntarily, I wasn't allowed to let them out of the door."

That's terrifying. Earlier in the article they talked about people coming in for simple depression screening based the hospital's ads, but things like locking the doors behind people who choose to come in are probably keeping a lot of people from getting the help they need.

Medical care, especially medical care with an involuntary component, should never be for profit. The profit motive is just too corrupting.

<comment><USER3> There can be pernicious motives whether a facility is nominally for profit or not.

(For instance, say there is a doctor who gets paid in proportion to the time they spend treating patients at a non profit facility)

<comment><USER4> >There can be pernicious motives whether a facility is nominally for profit or not.

This is colloquially known as "whataboutism".

The fact that there are _other_ pernicious motives is completely irrelevant. For-profit medicine constitutes a pernicious motive -- that's the point.

<comment><USER3> Well, I don't agree with that. I see generous salaries as being exactly the same thing as profit (they are just taxed differently). I also have difficulty with the idea that only de facto agents of the state can deliver healthcare (care only available at fixed prices, etc).

So my point is that you need external controls regardless of the motivations of the actors inside the institution.

<comment><USER5> > I also have difficulty with the idea that only de facto agents of the state > can deliver healthcare (care only available at fixed prices, etc).

It seems that they aren't the only difficulties you have. In a social health- care system, possession of a medical license doesn't entail one's employer. You're more than welcome to set up private practice, though you'll have less chance of the career defining cases, as the majority of patients will not be using your one-man-band practice. Thus many doctors in the UK, split their time between their private practice and public services. The only thing that's "de-facto" is the need to be qualified to treat people.

<comment><USER3> It's implicit in the argument I replied to that the side practice better not deliver excess economic benefits (profits!) compared to working in the public facilities.

</comment></comment></comment></comment></comment></comment><comment><USER6> Based on my experience as a patient (not at a UHS facility, as far as I can tell) I'm pretty confident that the stuff reported in this article is just the tip of the iceberg. These facilities are structured in a way that makes people doubt their own memories and feel powerless, even before the neuroleptics come out. Treatment "progress" is predicated on -- if not synonymous with -- submission. I was put on suicide watch after having a bad night's sleep and complaining that my experience had been harmful rather than helpful. I found out later that the psychiatrist had written in my file that I'd had psychotic episodes, which never happened (I'm torn on whether to attribute this to error or falsification). I've thought about challenging this, but I wouldn't even know where to begin, and I'm fairly certain it would just end up being my word against his and not actually doing any good. Basically, the playing field is heavily tilted against reporting misconduct. For every person Buzzfeed was able to find, there are probably ten who didn't feel like they could speak out about it, or convinced themselves that they were just being irrational since, after all, they were literally a mental patient.

<comment><USER7> Heres one who hasn't spoken out.

I'm glad that I was able to get appropriate treatment (15 years later) but how I was treated as a teenager in a mental health facility was atrocious. Misdiagnosis, over medication, and only keeping patients as long as their insurance held out was par for the course.

<comment><USER8> TIL, contrary to recent political claims, there are some situations in which it's _better_ for one's health insurance not to cover mental health.

<comment><USER7> A product of misaligned incentives caused by profit-driven healthcare industry.

</comment></comment></comment></comment><comment> rm_-rf_slash American asylums are a perfect example of the sin and corruption at the root of American society: dehumanizing and illegal detainment of human beings to preserve power and profits.

...

In the 1970s, a researcher sent fake (healthy) patients to asylums. They were loaded with powerful antipsychotics and not allowed to leave until they faked the cures the psychologists expected to see.

When the fake patients were all out the story blew the lid on the American psychological profession, so the psychologists said "bring more fakes, we can sort them out."

The original researcher said "sure."

The psychologists proudly stated a few weeks later that they had weeded out several dozens of "fakes."

There was no second fake cohort.

[https://en.m.wikipedia.org/wiki/Rosenhan_experiment](https://en.m.wikipedia.org/wiki/Rosenhan_experiment)

<comment><USER9> I can't speak about asylums in the 70s, but I think modern mental health centers have problems, some different, some similar. First is that these tend to be either state-run or contracted, and there is a great incentive to provide the bare minimum of care. There is also a serious issue with organization. My father used to work at some of these institutions. He's a psychologist with a PhD and 20+ years of experience treating the mentally ill. His bosses, who are in charge of running the place and determining policy, had high school educations. The nursing staff, who spent most of the time with the patients, also had high school education (maybe some nursing school education, but usually not). I think we should increase funding for mental health clinics, and put the professionals in charge.

Also, I understand the aversion many people have to even the concept of asylums, but the problem is in the implementation, not the concept. De- institutionalization is great, asylums should be an absolute last resort and many cases can be more easily dealt with in out-patient care or medication. But, absolute de-institutionalization means the mentally ill wind up homeless or in prison.

<comment><USER10> There's also a problem that the money saved by closing the big institutions wasn't put back into better community (outpatient) care. So people have to be acutely unwell to get any treatment. People with chronic problems don't get the treatment.

<comment><USER7> A lot of really good therapists don't accept insurance. A lot of really good psychiatrists don't take insurance.

Insurance covers on average two sessions of therapy annually.

Therapy is only effective over long periods (years) of regular (weekly/biweekly) sessions.

It's a fucking travesty.

I spend close to $500 per month, after insurance, for my mental healthcare. This is a therapist and a psychiatrist.

None of this is covered by my insurance.

I pay what I can with an FSA but it's extraordinarily exhausting.

</comment></comment></comment></comment><comment><USER11> By the way let's not forget this is excellent investigative reportage by Buzzfeed who is using their clickbait revenues to do real journalism.

<comment><USER12> Is there a business model behind it or just prestige? These types of articles definitely lose money for BuzzFeed.

<comment><USER11> I believe Peretti has made repeated claims dating back to the founding of the company that this was the plan. Either he's committed or doesn't want to be legitimately called a liar :-)

All joking aside: so far they've done good work and I assume it is earnest.

</comment></comment></comment><comment><USER13> > "Your job is to get patients," said a former clinician at Salt Lake > Behavioral. "And you get them however you get them."

> Two dozen current and former employees from 14 UHS facilities across the > country told BuzzFeed News that the rule was to keep patients until their > insurance ran out in order to get the maximum payment.

Coincidentally, I was discharged this morning from a psychiatric hospital in Canada. In a non-profit system, there is no financial motive to keep patients longer than necessary. Furthermore, hospitals in Canada almost always operate at capacity to keep costs low. This is a double-edged sword of course, but it means doctors have an incentive to help their patients recover so they can be discharged to make room for new arrivals.

<comment><USER14> On the flip side, the state run facilities in the US always try to push people out or, "get them back on their feet."

I had a swimming instructor who told me her brother was mentally ill and was in and out of these all the time. He'd feel he'd need to stay there a few more weeks, but they'd push him right out. He'd do okay for a while, then stop taking his meds (because most of those meds do make you feel like shit), then he'd start having delusions again.

Eventually he'd be back to begging for 40ozs and eventually be back in the center. America's system doesn't provide enough funding, not just for mental health, but all the other services around health to help people out and be self sustainable in their communities.

<comment><USER5> Sadly for people who are like the man you mention, "a few more weeks" is in actual fact a lot longer. The problem is more likely to be the lack of a proper support network to help this individual care for themselves in the long-term, as well as helping maintain routines and structure in their life. This is not something that can be done in an environment as tightly constructed as a mental institution. It requires a combination of professionals and friends on the outside, who are able to give this person round the clock support to help deal the the complexity of life in a uncontrollable environment.

Unless we (as a society) can find a way to provide this for those who have been pushed to the fringes of reality, there will still be a significant portion of people pushed into the Treat-Release-Repeat loop for years to come.

</comment></comment></comment><comment><USER15> So, I don't know that this is universally "a thing" but when I had a 3-5 hour break down in June I got in contact with the University of New Mexico's SHAC[1], I was registered but not yet taking a class and I think its open to the general public. They give you a little 10-15 minute "counseling triage" and then give you an appointment or whatever as they feel appropriate.

If you feel like you're in a bad place I encourage you to call your local university. _Even if you aren 't a student_: schools are extremely used to dealing with people who don't know how to get started with the mental health (or any health) industry and they won't fucking kidnap you.

[1] [http://shac.unm.edu/](http://shac.unm.edu/) they accept any one by the way. Please look for help if you feel like everything is awful, even if it's just finding some one to talk to.

</comment><comment><USER16> It is so crazy how doctors can just lock people up and drug them. No trial, no right to an attorney, not even a one phone call always... Someone who just murdered someone and went to jail has more rights than these doctors give people.

Personally, I think a majority of the mental health industry is a fraud. These are the same people who voted that being LGBTQ is a mental illness in the DSM. :( Plus they don't even have blood testing like the majority of doctors can use as a test.

Then they over diagnosed kids and drug them, as a result of the one size fits all and boring education system - which promotes testing and memorization over charter and critical thinking.

</comment><comment><USER17> Yeah, after reading all this, I wouldn't blame those patients if they didn't trust healthcare professionals anymore. It's clear these people don't have the patient's best interests in mind.

Locking the doors behind people coming into the hospital voluntarily? I wish they were making this up.

</comment><comment><USER18> I immediately went to their web site, and looked for their facilities near me. There are two, and a third in the region.

I hope I remember not to go there in a crisis.

<comment><USER19> What you want is a Psychiatric Advance Directive. It's a way to outline your wishes for treatment before you have mental health care crisis.

[http://www.nrc-pad.org/](http://www.nrc-pad.org/)

</comment></comment><comment><USER20> This would make two incredible movies.

First a horror movie about false involuntary admittance.

Second, a fantastic corporate drama ala michael clayton about the corporate hierarchy that built, runs and protects the machine.

If anyone writes the screenplay for these, I want royalties.

<comment><USER8> "Changeling" is one movie that portrays involuntary psychiatric admittance, although in that case it wasn't motivated by profit.

</comment></comment><comment><USER21> Psychiatry in America is an ongoing "crime against humanity". The third world gets better results for their mental health patients because they can't afford the pharmaceutical industry's FDA-certified psychotropic medications.

In October 2016 I found videos of my friend before the first hospital. She quipped about alcohol and drugs, but sounded "normal". We were frying donuts.

About two weeks after the videos were filmed, my friend ran out of alcohol. Her mother called the "crisis team", who took her to the hospital. I don't know what happened, exactly, but I assume they treated her with Haldol, an old cheap "tranquilizer" that is sold to patients as an "anti-psychotic".

But... It's been known since the late 1970's that anti-psychotics make psychosis worse over time. Robert Whitaker wrote "the case against anti- psychotics" [1] to provide as succinct a case against this class of drugs' use as possible.

[1] [https://www.madinamerica.com/2016/07/the-case-against- antips...](https://www.madinamerica.com/2016/07/the-case-against- antipsychotics/)

After being given this psychosis-provoking drug, my friend was diagnosed as "persistently disabled." This diagnosis (professional opinion) is disproved by my videos, but these have never been viewed by any judge.

Anti-psychotics are also known to make cocaine users more likely to use cocaine, which is known to cause psychosis. Alcohol withdrawal is also a known cause of psychosis [2]. My friend told the psychiatrists that she'd been drinking 2 bottles of liquor a day (methadone side effect, I think), and using cocaine, but they gave her anti-psychotics anyways.

[2] [https://en.wikipedia.org/wiki/Substance- induced_psychosis#IC...](https://en.wikipedia.org/wiki/Substance- induced_psychosis#ICD-10)

My friend escaped briefly from her court-ordered medications in March 2016.... Then she was given an SSRI "anti-depressant" in May 2016, which caused much anxiety, which led to her getting arrested... She's now being forced to take tranquilizers again.

I'm still trying to protect my friend from her doctors. When a petition to the court is dismissed "without prejudice" it means that you can correct the errors and re-file. I've re-filed twice, but I don't think the judge even read the second and third petitions. I guess I'm going to the court of appeals next... <sigh>

edit 1: clarification... edit 2: added the paragraph about getting ordered by the court to submit to psychiatry. edit 3: added sentence about the third world

edit 4: Oh my... This buzzfeed article is about "Universal Health Services". My friend stayed at two of their locations: [http://www.uhsinc.com/locations/uhs-facilities-map- usa/](http://www.uhsinc.com/locations/uhs-facilities-map-usa/)

edit 5: I actually went to talk to an investigator with the state attorney general's office this morning - his department was "health fraud and abuse". He was not optimistic of being able to find something to investigate. I'm going to print this buzzfeed article and take it over.

edit 6: forgot to include link for [1]

<comment><USER22> Good luck, in all seriousness. The article is fresh, and maybe it's recentness will help you win over the AG office.

</comment></comment><comment><USER23> They only need to merge with a private prison operator and you have the perfect customer pipeline.

</comment><comment><USER24> Great to see the Investigative, Serious Business arm of Buzzfeed get linked here (I don't visit their site often but know of their growing legit digging). A sensitive, yet salacious type of subject that can use a spotlight in my opinion. Simply put, I hope for improvement.

One of the first films I ever watched with my Dad was "One Flew Over The Cuckoo's Nest" partly because it's part of his life history (grew up in Pac Northwest, ran into Ken Kesey a few times) but also because of the amazing life lessons within. The book is even more epic and deep. And, growing up in the US, I know mental health is still not quite up in the priorities as much as, well, look at commercials, there's a glut of dick-pills for sale.

I'm a proponent of using fiction to help re-package heavy, important lessons that journalism brings up. I'd written a short treatment years ago about a serious PhD Psychiatry student discovering most everybody in the "profession" at his Public/Private Treatment Center suffered from their own DSM-diagnosable serious mental illness. From macabre understanding we're all flawed might come enlightenment. Or, you know, just comedy.

</comment><comment><USER25> They are like the ITT of the psychiatric care industry.

</comment><comment><USER26> There was an interesting Diane Rehm show about involuntary psychiatric admission recently. It seemed a bit better balanced than the Buzzfeed piece since it wasn't focused on the apparent misdeeds of a particular organization.

[https://thedianerehmshow.org/shows/2016-11-29/the-debate- ove...](https://thedianerehmshow.org/shows/2016-11-29/the-debate-over- involuntary-psychiatric-treatment)

</comment><comment><USER27> There should be a special place in hell for people who abuse the most vulnerable of people.

<comment><USER28> There is.

</comment></comment><comment><USER29> Are there any UHS locations in New York State or California?

</comment><comment><USER30> _" Current and former employees from at least 10 UHS hospitals in nine states said they were under pressure to fill beds by almost any method — which sometimes meant exaggerating people's symptoms or twisting their words to make them seem suicidal — and to hold them until their insurance payments ran out."_

Don't worry, free-market ideologues will coolly tell you. Their logic will seem airtight: over time, if Intake's psychiatric wards were really, truly locking up sane people who don't want to be locked up, the reputation of these facilities would no doubt have already suffered by now, and the company would have already been forced to close them. These incidents can only be isolated cases, regardless of the evidence. The profit motive will keep the company in check.

If you believe that, you haven't read the article.

<comment><USER31> You've introduced an ideological talking point in order to refute it, but that's the sort of tangent we ask people _not_ to introduce into divisive threads, because they usually turn into generic arguments/flamewars that overwhelm the (far more interesting) specifics of a story.

<comment><USER30> dang: that wasn't my intention, but rereading what I wrote, I must admit you're right. The story upset me and I overreacted. Please feel free to delete/hide my comment. I added a note to prevent upvoting for now.

<comment><USER31> I'd never delete an exchange with so exemplary a recovery :)

</comment></comment></comment></comment><comment><USER32> I have a (relatively minor) nit-pick with some of the language in the article.

Early in the article the author writes "Current and former employees from at least 10 UHS hospitals in nine states said they were under pressure..."

However, a few paragraphs later she writes "But scores of employees from at least a dozen UHS hospitals said those facilities tried to keep beds filled even at the expense..."

I don't understand why the employees are from "at least" a certain number of hospitals, unless her sources were unclear about where they worked. And why does this number change?

<comment><USER33> As you're learning about the story, you might hear a few things "on background, off the record." That means that you can't really act like you were told that, but you now know that you have a story. So, you start reporting, and over time you get employees asking for anonymity from 10 hospitals to say such and such, and from 12 hospitals to say another thing, and you heard some of this on background. So you can say "at least" but you can't say the full number. If there is a libel or defamation lawsuit, your sources can be reviewed under seal, but since you don't note the source of your background information, you can't state that those sources exist.

</comment></comment><comment><USER34> I should hope this comes as no surprise to anyone. Every single psychiatrist I've ever visited had the same policy, only their lock was medicine rather than a door (outpatient vs inpatient). I feel bad for the lady because she didn't know any better and joked about suicide, but shouldn't it be common sense you don't tell anyone about that--you don't even joke about it-- _especially_ to a doctor with the power to commit you? I'm pretty sure you can't have decent therapy if you're not truthful with your therapist, but that's the catch-22 of needing mental help in America. Fucked if you don't seek it out and really fucked if you do.

<comment><USER2> > but shouldn't it be common sense you don't tell anyone about that--you don't > even joke about it--especially to a doctor with the power to commit you?

It _shouldn 't_ be, because doctors should have the sense and motivation to differentiate a joke from a true statement.

It's just a really sad statement that our society has traps like this (that people really need to be aware of), which can really screw you over.

<comment><USER35> The problem is that one person that tells you they're just joking and actually goes out and commits suicide. Then it's on you, the healthcare professional. Lawyers would ruin you in court.

I've been in and out of various psychiatric facilities, including that very same facility in Arlington, and it seems like a lot of the policies & procedures are to cover themselves legally.

Oh, I've been there as a Paramedic, not as a patient. Almost forgot that bit. We typically bring people in the front door. Even voluntary admissions. The one thing that struck me as odd is that Millwood always has someone (a LCSW or something) come out and talk to patients there in the lobby some before having them sign any of the admission paperwork. They don't lock you in a room and _then_ have you sign.</comment></comment></comment>


Tell HN: No, your donation to Mozilla doesn't support Firefox - <AUTHOR> I've been donating money to Mozilla hoping to support Firefox, but a recent posting on HN made me doubt it. So I asked Mozilla Foundation if any of my money goes to Firefox. Here is the answer:<p>> Thank you for being a Mozilla supporter.<p>> Donations to Mozilla support the work of the Mozilla Foundation, as described on our website here: https://foundation.mozilla.org/.<p>> Donations to Mozilla do not support the Firefox browser; instead, their development efforts are funded by revenue generated within the product itself, primarily partnerships with search engine companies. <comment><USER2> I think donating is the least-effective way to help Firefox. Mozilla Corporation sits on half a billion in assets and 2% of their revenue goes to Mozilla Foundation. That in itself is a lot of money, but what we might overlook is that Mozilla Foundation owns Mozilla Corporation, owns the other 98% of their revenue too, and owns their half-billion in assets. Let's talk about their funding again when their assets stop growing.

In the meantime one thing we can do to help is to not create a mono-culture "Designed for Chrome" internet that excludes Firefox. Just ignore Google's defacto-standards unless they follow the process to become shared standards.

[https://assets.mozilla.net/annualreport/2017/mozilla- fdn-201...](https://assets.mozilla.net/annualreport/2017/mozilla-fdn-2017-fs- short-form-final-0927.pdf)

</comment><comment><USER3> I came here naively expecting too refute what I assumed was a trolling. However, your willingness to link to the foundation's site gave me pause, so I did a little looking:

The site itself states:

"Contributions go to the Mozilla Foundation, a 501(c)(3) organization based in Mountain View, California, to be used in its discretion for its charitable purposes."

Further, the site says basically nothing about FireFox or any real product. It does however talk about "initiatives" that it supports/leads. I now suppose that is where your contributions must go. [https://foundation.mozilla.org/en/initiatives/](https://foundation.mozilla.org/en/initiatives/)</comment>


Don't use Microservices - <AUTHOR> https://medium.com/me/stats/post/c3b5484b329a <comment><USER2> Medium now wants to track what you read. So...no more medium for me. If you want people to be able to read your material then make sure you're using a platform that makes that material freely available to your readers without tracking. After all this was the original vision of the web.

<comment><USER3> I was going to say "Medium's annoying about asking you to log in, but you don't have to". And then I realized clearly they have just made a change. This should be bigger news, wow.

<comment><USER4> Look at the URL: the submitter linked to their "backend"/editing view of the article, which of course belongs behind authentication and not on HN.

</comment></comment></comment><comment><USER5> Don't use medium... I can't read your article.</comment>