Why Don't We Have a General-Purpose Tree Editor? - <AUTHOR> http://pcmonk.wordpress.com/2014/04/01/why-dont-we-have-a-general-purpose-tree-editor/ <comment><USER2> DOT/GraphViz [1] is very powerful. You might find it a bit unwieldy at first but, as with everything, editing in plain text is often faster than trying to use a GUI.

For extremely simple stuff, you can use TGF [2] to represent the graph and something like yEd [3] to view it.

None of these tools have any real provision for structured proofs etc., but that could be built.

[1] [http://www.graphviz.org/Documentation/dotguide.pdf](http://www.graphviz.org/Documentation/dotguide.pdf)

[2] [http://docs.yworks.com/yfiles/doc/developers- guide/tgf.html](http://docs.yworks.com/yfiles/doc/developers-guide/tgf.html)

[3] [http://www.yworks.com/en/products_yed_about.html](http://www.yworks.com/en/products_yed_about.html)

<comment><USER3> I've made "proof graphs" with GraphViz, but honestly it was something of a challenge to make them look how I wanted them to. Compared to the time I spent drawing the graph on paper, (ie, collecting the statements and theorems), making the GraphViz version look okay took a long time.

[http://www.naftaliharris.com/blog/mc- graph/](http://www.naftaliharris.com/blog/mc-graph/)

[http://www.naftaliharris.com/blog/mg- graph/](http://www.naftaliharris.com/blog/mg-graph/)

<comment><AUTHOR> Those graphs are good examples of what I want to be able to make. You bring up a critically important point, though: I must be able to write graphs very quickly, easily, and painlessly, like I use vim to write text or Trello for to-do lists. Most tree-editing interfaces are painfully inefficient and slow to use (and are far too reliant on the mouse).

<comment><USER4> Speaking as someone who has used graphvis before, those examples are one possible mode of output. The input for the graphvis programs are plain text files. See:

[https://en.wikipedia.org/wiki/DOT_%28graph_description_langu...](https://en.wikipedia.org/wiki/DOT_%28graph_description_language%29)

</comment></comment></comment></comment><comment><USER5> We do not have a general purpose tree editor because trees are quite the complicated structure, and most valuable operations on trees require quite a bit of knowledge of what the tree represents.

Look at, for instance, source code. In many languages, we represent code in a tree-like structure, just with text and braces/parenthesis/tabs as indentations. But we all know that there are major limitations on how to represent a class. If you have 200 methods in a class, said class is unwieldy. If your methods are very deep, the whole thing also becomes unwieldy, so we make them smaller. We'd still do that with huge monitors that could show lots and lots of code at once: Without abstraction, any nested structure is hard to manage.

Many text editors will collapse levels for you, but really, how often do you all use them? Whenever you need to use them, it's a smell, because it means that the structure is getting too complex for a mind to handle.

This is not an issue that is unique to code. Any tree structure has the same issue of abstraction: We are not designed to handle more than one layer at a time, unless we are dealing with a tiny number of nodes. We have trouble seeing trees and navigating trees, so of course we can't have good general tree editors. I've seen four attempts at just general tree visualizers at work in the last year. The most successful barely pay lip service to regular tree 'views', and instead try to answer secondary questions that would help us know how we want to explore the tree.

And, as others here have already said, there's always non graphical representations. find, awk and grep can go very far when you are trying to find things on a tree. Proper indexing does a good job too.

<comment><USER6> > Many text editors will collapse levels for you, but really, how often do you > all use them? Whenever you need to use them, it's a smell, because it means > that the structure is getting too complex for a mind to handle.

I agree with you on everything except this: code folding is very useful in creating a high level view of code to reason about. I would argue further for code bubbles, but they haven't really been done right yet; perhaps we will eventually see some interesting good solutions in LightTable.

<comment><USER7> Agreed. I frequently mention Code Browser ([http://tibleiz.net/code- browser/](http://tibleiz.net/code-browser/)) which has multi-level folding that works very well. When I work solo on a project, I tend to fold many levels deep and create what would otherwise be a "smell" but it doesn't seem to cause problems. Unfortunately, I can't use it when working with a team because I know of literally nobody else who uses the editor.

I've considered writing a plugin for LightTable or perhaps Sublime Text but I have no experience with either of their API's and I am not sure whether it would even be possible.

</comment></comment></comment><comment><USER8> In the comments in the article somebody mentioned this:

[http://strlen.com/treesheets/](http://strlen.com/treesheets/)

Looks really cool. I always felt spreadsheets were too grid-oriented and flow charts too much about vectors and nodes. Treesheets looks like a great mashup of those two.

<comment><USER9> I agree. It also seems quite suited for keyboard navgation and editing. It has a linux version and the tutorial is very well made.

</comment></comment><comment><USER10> Some others have already mentioned that "mind mapping" software is similar, and I'd agree -- just see this image[2]. That image was created with Mindnode[1], which I really like (I've only tried the light version, but that seems to be discontinued).

[1]: [https://mindnode.com/assets/images/screens/iphone-1-1136x640...](https://mindnode.com/assets/images/screens/iphone-1-1136x640-withstatusbar.png)

[2]: [https://mindnode.com/](https://mindnode.com/)

<comment><AUTHOR> I'd never really seriously considered mind mapping software, and while I still don't think it's exactly what I want, it actually seems to have more potential than it seemed. Thanks for the suggestion.

<comment><USER11> For tree data you may want to look into various XML designers / editors. You can easily define a recursive XSL style sheet that has the structure you want, after that there are various editors that automatically read that structure and give you a GUI from it. It's been a few years but I found XMLSpy to be fairly decent. [http://www.altova.com/xmlspy.html](http://www.altova.com/xmlspy.html)

Edit: The simplest tree editor is probably the file system on your computer. However, the problem is for proof's I suspect your going to want to have some sort of graph structure.

PS: If your willing to do some light coding XQuery/XSL-FO let's you transform the raw XML into various more user friendly formats like PDF's. However, if your structure is really nested that quickly get's hard for people to understand.

</comment></comment></comment><comment><USER12> Just slightly away from the practical job of finding a usable editor, but I found the following demo of an in-game node-based tree display/editing interface from Limit Theory[1] lone developer Josh Parnell quite impressive as eye candy if nothing else:

       http://www.youtube.com/watch?v=Ekq56VZqQvs&t=5m25s

earlier version:

       http://www.youtube.com/watch?v=KN3tKT0E0t8&t=14m30s

(EDIT: also at: [http://www.youtube.com/watch?v=KN3tKT0E0t8&t=19m40s](http://www.youtube.com/watch?v=KN3tKT0E0t8&t=19m40s) as he updates the layout algo in real time (!))

Worth watching as he puts it through its paces.

If I was hiring someone to create a generic tree editor, his number would be top of my call list :)

[1] [http://ltheory.com/](http://ltheory.com/)

<comment><USER13> Wow, it's not often that I see something that makes me sad I wasn't the one who implemented it, but damn this is one of those. Beautiful and elegant, really nice. Thanks for linking to it.

This takes me back to high school when a friend and I goofed around with spatial navigation through hierarchical structures. Of course that was in the era of the 486, and we had no idea what we were doing, trying to build something based on vector graphics with Pascal on DOS... so this was what we were dreaming of but couldn't make (nor properly articulate).

<comment><USER12> Code envy: yes indeed! :) Apart from the nice graphical touches like animating the branches and zooming and whatnot, the node-based navigation looks like a win for dealing with scale issues.

It's also nice that he abstracted the layout so thoroughly that he can not only create a variety of 2D and 3D views, but also map the underlying data structure onto actual game elements in the game's main display, as you can see in one or two of the other demo videos.

</comment></comment></comment><comment><USER14> I think there are many of examples out there; the simplistic answer to the OP question is "we do; you just haven't heard of them."

My favorite is OmniGraffle... you can enter nodes in a text-entry outline style mode and the results are updated instantly. The default styles and stencils, while recognizable as being generated by OG, are inoffensive, and the layout tools are among the best of any layout or presentation software.

Others have mentioned GraphViz, which is a general purpose graph description utility.

Outliners as a general category of software have existed since the 1980s and seen an ebb and flow of popularity. Just a few off the time of my head... Think, More, Acta, OmniOutliner.

The Frontier scripting language in particular stands out as a programming environment completely integrated into an outliner paradigm. My first exposure to code folding came when discovering Frontier sometime in the mid-'90s. As Apple put its Mac scripting focus on Applescript, Userland reimagined Frontier as a web site programming environment: templating, scripting, and content management all rolled into one. But at the same time it was a general purpose scripting environment.

Maybe my graphing needs are not so deep that these tools (or some combination with a few others) wouldn't suffice for a variety of tree/graph related tasks.

<comment><USER15> Frontier was one of my first experiences with programming and I still have a soft spot for it. Small nit: Frontier was the environment (object database, etc.), UserTalk was the scripting language Frontier used.

</comment></comment><comment><USER16> The author's examples -- proofs and ASTs -- provide a hint at the reason.

If you need a tree, it's most likely that you want some custom operations on that tree (e.g. parsing text into the tree, pretty-printing the tree, traversing the tree in various ways, etc.)

At some point, the tree is just a data structure and what you're interested in are full-blown, non-trivial algorithms/programs for fairly domain-specific tasks. In these cases, a library (or even custom implementation) for a general purpose programming language is more useful than a tool (a la Excel or vim).

Viewed in this light, it's not unsurprising that we have many domain-specific tools for manipulating trees. Most of the proof assistants have a GUI based on Gentzen-style sequents.

LaTeX has styles for type setting proofs which look like the ASCII ones in the article.

Tools for generating parsers often have tree-based UI's.

And so on.

<comment><AUTHOR> You're right that most of the time we need non-trivial algorithms or visualizations for trees for it to be useful. If I ignored that it would be like wishing for a "general binary editor" because it would be so "powerful" and all data can be represented as binary.

I think, though, that there's enough common ground between the various domain- specific tree editors that some kind of useful intersection exists. Then the domain-specific tree editors would simply be plugins.

<comment><USER16> Perhaps the "killer app" is an extensible GUI framework with some sensible defaults already implemented (e.g. those mimicking some of the design dimensions explored by the software mentioned in other posts), combined with a scripting language and/or a suite of good libraries/apis for popular languages.

At any rate, thanks for provoking the discussion.

<comment><AUTHOR> Yeah, I guess that's essentially the ideal.

</comment></comment></comment></comment><comment><USER17> Well, if you're okay with XML there's Microsoft's XML Notepad. It's xsd-aware so you get type-safe constrained tree editing. But it's ms, XML, and xsd...that's like 3 strikes.

</comment><comment><USER18> I posted this on the blog itself, but re-mentioning it here... I've been evolving Xiki for over 10 years to do be a language for doing this kind of thing. The ideas is you can interact with trees and other nested structures (file paths, dbs, general UI's) from your text editor, using a simple plaintext representation, but in a GUI-like manner.

I've done talks about Xiki at RubyConf, Strange Loop, and QCon. Here's a quick 3 minute video - [https://www.youtube.com/watch?v=bUR_eUVcABg](https://www.youtube.com/watch?v=bUR_eUVcABg). I'm doing a Kickstarter campaign soon, to bring Xiki support to vim, sublime, and possibly other text editors!

<comment><USER19> Wow, that video is incredible. I'm definitely going to dive into this, thanks for sharing.

<comment><USER18> Thanks! :)

</comment></comment></comment><comment><USER20> You already have fairly general-purpose tree editing right under your nose - look at GUIs for your filesystem.

You can drag and drop folders and files. You can see the hierarchy on one side of your screen, and then the contents of a single node on another. Minimizing/expanding usually works. You can rename things in-place.

If you're imagining tree structures that don't map really well to this kind of GUI, then the reason your tree editor doesn't exist should be apparent.

<comment><USER21> Assuming one agrees that filesystems map really well to that kind of GUI in the first place. It's not obvious to me that they do.

</comment></comment><comment><USER22> [http://scripting.com/98/01/stories/frontier5IsAnOutliner.htm...](http://scripting.com/98/01/stories/frontier5IsAnOutliner.html)

<comment><USER23> Frontier has been reborn. Dave Winer's outline editor is now GPLed and runs in a browser: [http://scripting.com/2013/09/16/concordOurGplOutliner](http://scripting.com/2013/09/16/concordOurGplOutliner)

There's a forked version that can save to the local filesystem here: [https://github.com/interstar/OWL](https://github.com/interstar/OWL)

<comment><USER24> I wonder if this good be a Getting things Done tool. You'd probably need multiple of those trees and a way to put simple, wiki-like multiline articles (maybe markdown syntax?). I'd use something like that!

<comment><USER25> You can do that with Fargo.io. Concord out of the box appears to just hold a single outline.

</comment></comment></comment></comment><comment><USER26> I once wrote an ASCII graph/tree compiler that compiles ASCII representations like the example in the article into data structures.

[https://github.com/mgraczyk/GraphCompiler](https://github.com/mgraczyk/GraphCompiler)

The data structures can be used directly in Python or parsed/consumed elsewhere. I think it is pretty useful, and I have used it in a couple of places where moderately complicated trees are used to generate C/C++ code.

</comment><comment><USER27> Are you kidding? We have excellent tools to edit and manage trees: touch, mkdir, cd, mv, ... :)

<comment><USER28> Why the joking punctuation? With userspace filesystems it is easy to expose any tree like data as a filesystem. In fact, a while ago I made a (still readonly) filesystem for my browser bookmarks.

As long as I am on the topic of this, you know that you are in under explored territory where the first man page you visit for debugging your first non- trivial problem starts with "This is not the function you are interested in." (man getdents).

</comment></comment><comment><USER29> Like paredit: [http://www.emacswiki.org/emacs/ParEdit](http://www.emacswiki.org/emacs/ParEdit)?

<comment><USER30> I know it's a cliche, but really, the answer to nearly every question often is "It's already an emacs macro"

</comment></comment><comment><USER31> Internally, we have a graph editing tool which uses D3 (screenshot [1]) which I threw together based on some existing examples. I'd be happy to open up the source code if there was any interest, though it's really nothing all that special. The layout algorithm could definitely use some work for our use-case at least. It's force-directed at the moment, using stock D3 layouts, but really needs a hierarchical mode. While it's not perfect, it is intuitive enough that non-technical people "get it".

Beyond this, yEd[2] is really quite cool (even if it does have a very dated UI).

[1] [https://www.evernote.com/shard/s3/sh/67c67a48-8b3d-4eac-b7ee...](https://www.evernote.com/shard/s3/sh/67c67a48-8b3d-4eac-b7ee-427fbf6fb5ca/ab7dff4c05a5503d06b001ac7f248451/deep/0/Define- concept-relationships.png)

[2] [http://www.yworks.com/en/products_yed_about.html](http://www.yworks.com/en/products_yed_about.html)

</comment><comment><USER32> Actually we have a lot of such editors. For example, JetBrains, MPS ([http://www.jetbrains.com/mps/](http://www.jetbrains.com/mps/))

I am currently working on a web based version of such an editor at JetBrains. You can take a look at it here: [http://jb-proj-demo.appspot.com/](http://jb- proj-demo.appspot.com/) (It's open source and it's available on github here: [https://github.com/JetBrains/jetpad- projectional](https://github.com/JetBrains/jetpad-projectional))

<comment><USER19> Fascinating project, what library did you use for your HTML based graphs? I'd be interested in using it, I was thinking about building something similar the other day. Great work.

<comment><USER32> If you are interested in graphs, you might also want to look at this demo: [http://mbeddr-dataflow.appspot.com/](http://mbeddr-dataflow.appspot.com/)

We have quite a smart layout here which was implemented from scratch.

</comment></comment></comment><comment><USER33> I am surprised that nobody has mentioned Tinderbox. It is an awesome mindmapping/outlining application and one of the two applications that make me jealous of OSX users. (Bibdesk is the other)

[http://www.eastgate.com/Tinderbox/](http://www.eastgate.com/Tinderbox/)

<comment><USER34> Calibre is a multi-platform alternative to Bibdesk, the UI is ugly but it's very usable.

<comment><USER33> I am sorry but Calibre and Bibdesk are completely different programs. I have used both programs and I am surprised you would say that calibre is an alternative to bibdesk. Calibre's focus is ebooks and bibdesk's focus is bibliographic information. The only possible overlap is that they both create a directory with electronic reading material. In order to get calibre to organize a directory like bibdesk (ie configured by author/journal/year) you have to jump through a million hoops and it requires duplicating your library. Have you ever used Bibdesk?

I grudgingly use calibre for epub/mobi conversion. Calibre's UI is ugly and it is not very usable: there are _three separate pairs of arrows_ on the ebook preview screen! How would you decide which pair is for pgup/pgdn? And what would a user expect the use is for other two sets?

</comment></comment></comment><comment><USER35> Productivity problem because of degrees of freedom.

Hard to do without graphics, and once you introduce graphics, you end up with endless non-productive futzing by non-graphics artists trying to be amateur graphics artists with move this one pixel over to get an artistic look or whatever other graphical effect. Unfortunately the user isn't a graphics artist and is theoretically hired to write code or memos or reviews, so they're both working way out of their core competency AND usually not any good at graphics arts. And if you don't allow hours of futzing, a competitor will, and you'll be destroyed in the marketplace. People like futzing even if its by definition totally anti-productive, which isn't all that weird given the popularity of the open plan office and so on.

Nothing is ever new in IT. In the early years of desktop publishing, productivity suffered dramatically because a simple memo meeting notice which took 10 minutes on typewriter and xerox, now took at least 3 hours of font selection (at least 6 different fonts and sizes per page) and endless clip art and at least 10 revisions to get it "just right".

</comment><comment><USER36> The author might be looking for Treesheets: [http://strlen.com/treesheets/](http://strlen.com/treesheets/)

</comment><comment><USER37> It's been a few years since I've played with it, but Leo[1] seems like it might be what the author is looking for. It's even scriptable (in Python). Looks like it is actively maintained[2].

[http://leoeditor.com/](http://leoeditor.com/)

[https://github.com/leo-editor/leo-editor](https://github.com/leo-editor/leo- editor)

<comment><USER38> I was just about to write that... I barely know it but it seems it can be summed up as a hybrid of mind mapping [1] and literate programming [2], with a graph data model [3].

[1] [http://leoeditor.com/tutorial-basics.html#selecting-and- movi...](http://leoeditor.com/tutorial-basics.html#selecting-and-moving- outline-nodes) [2] [http://leoeditor.com/tutorial- programming.html](http://leoeditor.com/tutorial-programming.html) [3] [http://leoeditor.com/tutorial-pim.html#clones](http://leoeditor.com/tutorial- pim.html#clones)

It's status somewhat resembles Org Mode: it has its own format (which hasn't caught on as interchange format) but has sufficient manipulation and export power to allow some people to spend their life inside it.

\---

The second thing that spings to mind is YAML which is usually used for trees but the actual data model allows graphs. Is there any structured YAML editor (a-la paredit)?

</comment></comment><comment><USER39> I created GraphBin ([http://graphbin.co](http://graphbin.co)) because my data structures and algorithms prof didn't want us to hand draw graphs for assignments. I didn't want to make them via paint either.

Maybe not a general purpose tree editor, but at least it's helped me out so far :)

<comment><USER33> How do I select the two nodes to create an edge? (Iceweasel beta in case that makes a difference)

<comment><USER39> Hit Selection Mode > Press and hold "s" for source node and click on the node you want > Press and hold "t" for target node and click on the node you want > Once the names of the nodes appear to the left under the header "+/\- Edge", hit Add Edge.

</comment></comment></comment><comment><USER40> For general purpose graphical tree editing a tool like yED [1] might be the most flexible solution. yED's native GraphML can be easily transformed into other XML-like Structures.

If you like a plain text solution the TGF Format might suit your needs. It can also be visualized and edited in yED but it's very limited in its feature set.

A very nice and simple solution for visualization of small trees is to parse plain text with XSLT and transform it into SVG [2].

For are more programmable concept i would recommend to have a look at the combination of D3js [3] + JSON (or XML).

[1] [http://www.yworks.com/en/products_yed_about.html](http://www.yworks.com/en/products_yed_about.html) [2] [http://www.xml.com/lpt/a/1472](http://www.xml.com/lpt/a/1472) [3] [http://d3js.org](http://d3js.org)

</comment><comment><USER41> We have file tree viewers, and standard GUI components like Java's JTree.

I only skimmed, but the article didn't seem to address the questions raised ("why?"), but instead described the problem and proposed solutions.

I think an answer to the question would be far more interesting and revealing... it might simply be that 1. it's hard; and 2. text is far better at hierarchical structures. Like his examples, lisp, programming languages in general, arithmetic algebra.

So I think the hint is that the Human Processing System is adapted to handling hierarchical structures linguistically (i.e. symbolically: speech, writing, text). I suspect there is a very good and deep reason for this, to do with the kinds of operations (transformations) typically needed. But I don't know what that reason is.

</comment><comment><USER42> can't believe nobody has mentioned org-mode yet.

<comment><USER43> Why did I have to scroll so far down for this! I was starting to think I was going to have to write "can't believe nobody has mentioned org-mode yet." myself.

Org-mode (and outliners in general) are tree editors. If they support links then they are graph editors.

</comment></comment><comment><USER44> Might be more fruitful to think of a graph or tree "ecosystem" rather than just an editor. For an ecosystem one can think of the following aspects:

\- a representation that can be shared by various tools, possibly in parallel. Allow attaching arbitrary attributes

\- ability to map between equivalent but different representations (adjacency matrix, node/link/port etc.)

\- plugins that operate on a specific rep. and map to some visual representation

\- a language for programmatic construction (or may be a library)

\- efficient storage representation (one or more)

\- communication protocol for sharing/moving subgraphs

\- key/mouse bindings when viewed graphically

\- macros/functions to encapsulate useful patterns

\- graph manipulation & mapping tools (e.g. mapping a circuit schematic to a PCB, compiling, etc.)

[Sorry for the frequent editing - I was trying to get the list right. Still not quite right.]

</comment><comment><USER45> Another project related to the one propossed in this article is a diff- diff3-patch like program suite that can be used on trees. It would fit in a great way with version control systems and make them (more) aware of structural changes in changesets.

Imagine being able to dump plain-text files for real trees when diffing- merging. The way differences are shown to the user could be like a project i did a few years ago to show differences in graphs (applied to basic-blocks graphs). Here is the link: [http://corelabs.coresecurity.com/index.php?module=Wiki&actio...](http://corelabs.coresecurity.com/index.php?module=Wiki&action=view&type=tool&name=aureliax)

<comment><AUTHOR> This would be wonderful. Certainly a prerequisite for any serious programming.

</comment></comment><comment><USER46> I use treeline.

[http://sourceforge.net/projects/treeline/](http://sourceforge.net/projects/treeline/)

<comment><USER47> Looking at the screenshots reminded me of Leo. I only used it a little bit but liked it.

From their homepage:

> Leo is a PIM, IDE and outliner that accelerates the work flow of > programmers, authors and web designers. Leo's unique features organize data > in a revolutionary way:

> * Leo outlines are views on an underlying graph.

> * Outline nodes can reside in many places within a single outline.

> * Leo is fully scriptable in Python.

> * Leo scripts have full access to Leo's source code and all outline data.

> * Outline-oriented markup generates external files from outlines.

[http://leoeditor.com/](http://leoeditor.com/)

</comment></comment><comment><USER48> Hm... I've been quite happy using an Open Source tool called FreeMind. It seems to be a "tree editor", although I'm not sure it quite satisfies what this author is looking for.

Screenshot: [http://freemind.sourceforge.net/wiki/index.php/File:FreeMind...](http://freemind.sourceforge.net/wiki/index.php/File:FreeMind- computer-knowledge-080.png)

Website: [http://freemind.sourceforge.net/wiki/index.php/Main_Page](http://freemind.sourceforge.net/wiki/index.php/Main_Page)

<comment><USER49> Yeah, outliners and mindmappers provide a lot of this functionality although, alas, not _all_ , which would certainly be nice.

<comment><USER50> Are any of them scriptable to the point where we could add our own desired functionality? Python preferred for me, but I'd learn another language if the app was compelling.

<comment><AUTHOR> This is certainly an important point. There seems to be more potential in mind mapping software than I thought, but extensibility is key.

</comment></comment></comment></comment><comment><USER51> I have used yEd for a few years to do simple mind mapping with graphs. Not the best solution, but it works.

</comment><comment><USER52> The problem is that everybody has different goals in a tree editor. But the Sony ATF framework, has a lot of support for graph editing.

[https://github.com/SonyWWS/ATF](https://github.com/SonyWWS/ATF)

See many examples in the gallery: [https://github.com/SonyWWS/ATF/wiki/ATF- Gallery](https://github.com/SonyWWS/ATF/wiki/ATF-Gallery)

</comment><comment><USER53> You say things like "programming languages have an AST", but in reality, it is more like a couple of directed graphs over an AST in terms of the semantics. The AST is more an accident of how we compile, but syntax is still invalid if you fail to match types, which are context sensitive; all of the calls (and thus most of the meaning of a function) refers to these tables as well, and many nodes can share the same "semantics" subnode; and by far the most important part to us as while programming is the data flow, which is structured as an often cyclic directed graph. Really, the tree does not buy us much of anything in this case: modern editors tend to allow syntax aware edits and refactoring anyways, and coding structure dictates that your code "look" like the AST anyways with blocks and spacing and such.

Similarly, proofs are only treelike at a very small depth before becoming directed graphs, and most modern data stores like XML and JSON which form trees tend to have additional logical (if not formal) schemas that add complexity to the problem.

</comment><comment><USER54> Ashton Tate made a tree editor called [Framework]([http://en.wikipedia.org/wiki/Ashton- Tate#Framework](http://en.wikipedia.org/wiki/Ashton-Tate#Framework)) which I used to write my thesis in the late 80s on a DOS machine. I loved it. It had intuitive keystrokes, using the numeric keypad to zoom in (+) and out (-) of the tree with an easy way to collapse the tree branches (enter).

Each frame held other frames, or could hold text, a spreadsheet or a database.

It wasn't a DAG (directed acyclic graph) which was frustrating sometimes.

I think you could program leaves to link to other leaves, but I wasn't any good at programming. It had its own programming language FRED.

The people who grokked it loved it.

I think there is still a [closed source]([http://www.framework.com/](http://www.framework.com/)) community supporting it, last time I looked.

I hope you will use markup with something like YAML or [JSON- LD]([http://manu.sporny.org/2014/json-ld- origins-2/](http://manu.sporny.org/2014/json-ld-origins-2/)) to store your links.

</comment><comment><USER55> It seems like he (or someone) could quickly code up a javascript demo of what he wants using D3.js. Maybe this is my excuse to learn D3.

<comment><AUTHOR> When I learned about D3.js this was exactly what I wanted to use it for. Unfortunately, I've mostly avoided web development, so my javascript isn't good enough to _quickly_ code anything up. You're right, though, this could be a good excuse to learn it.

(by the way, I love your blog)

<comment><USER55> ty

Graph layout algorithms have come to mind for a topic on my blog from time to time. It's a woefully underdeveloped field, and it could be good blog fodder...

My favorite casual text editor is this one [1]. So likewise I imagine a graph editing program that's very simple and one could use it anywhere. Say you click and that creates a new node and a text area pops up for you to type things in. Then you can create a new node, drag to form an edge, etc. The only thing is that I imagine I'd hate working around the force-guided graph layout algorithms the entire time, cause stuff would keep bouncing around. I'd want to be able to drag and drop nodes to move them away momentarily, zoom in and out and pan to focus my attention on some small part of the graph, and then toggle the layout algorithm to snap things back into place.

Everything would be stored locally in the DOM (or, say, in the url), so you could bookmark and share easily, and import/export to JSON or edge-list representations. And... yeah that's about it. I can't imagine wanting colors or styling, but if the design is simple enough you could have plugins for that (and plugins for layout algorithms, etc). I also can't imagine how one would do text navigation on nodes of large degree... Even if you did come up with a system, it would necessarily depend on the graphical layout decisions (which change dynamically) and that would require you to tie the graph data structure to its geometric interpretation, which smells like spaghetti design to me.

It's something to think about. If your ideas are along similar lines, I'd be happy to team up and start a github repo. I just can't commit to working on it all that often.

[1]: data:text/html, <textarea style="font-size: 1.5em; width: 100%; height: 100%; border: none; outline: none; font-family:monospace" autofocus /> (copy and paste this as a url)

EDIT: I suppose if you really wanted a keyboard-based system you could have a text representation of the graph (as a vertex list + edge list) and have the graph update in real time. When you make changes in one side the changes automatically update in the other side. Then you could use keyboard or mouse however you see fit.

</comment></comment></comment><comment><USER56> This is pretty much exactly what we're trying to achieve with Gingko.

It's a full tree editor, that is being used for everything from PhD theses, to television screenplays.

[http://gingkoapp.com](http://gingkoapp.com) [https://www.youtube.com/watch?v=egCKZHsICm8](https://www.youtube.com/watch?v=egCKZHsICm8)

<comment><USER57> It's a shame that this is proprietary and hosted—as good as nonexistent in the discussion of general-purpose tools.

</comment></comment><comment><USER58> I think text editors are a bad comparison because they do something a little different. They are not linked to a specific data structure, they are linked to a particular data type. All of the examples of how diverse text editors are (Latex, csv files, log files, etc) are completely different data structures but all are stored in the same data type -- plain text. You can easily edit tree data in text files as long as they are stored in a plain text encoding. Counterpart to text editors would be hex editors, and all of the above can be done in them if the original data was stored in a binary format.

Text editors are useful because standards have evolved with them. We have standards for trees - XML and JSON for example. CSV editors are useful because there are ways to convert other table data into CSV to work with. If you just allowed a tree editor like XCode's plist editor to import other file types it would be the same situation.

</comment><comment><USER59> I said I was jut going to ignore this downthread, but I just can't help myself. Feel free to dismiss it as "another emacs dweeb pointing out they've been using alien technology since the 1970s".

[http://orgmode.org/manual/Structure- editing.html](http://orgmode.org/manual/Structure-editing.html)

</comment><comment><USER60> Heck why don't we have an xml editor, with syntax checking through a schema? This has been possible for a decade.

<comment><USER61> If you're not joking (and it is April 1), you seriously should check out nxml- mode for emacs. It has amazing support for RelaxNG based schema (the compact syntax).

<comment><USER60> I'm looking for more of a forms editor, that generates xml and guides editing with an xml schema. So no I don't want to edit xml; I want to edit data records, configuration file entries etc with a schema-driven editor.

</comment></comment></comment><comment><USER62> I'm definitely thinking of making a graph based text editor.

I think I could work off of code-highlighting files to figure out where to break code out into different nodes.

Then, I would look for matching terms in each node, and make connections. Connections could also be made based on containment (part of a class, or a child function, or a where clause).

One hotkey to follow a connection to it's destination (and select that node). Another to pull it in and make it share the screen with the current node (and select it). Pressing the "pull in" key would push a node off the screen if it were already on screen.

Of course, maybe you would only want to explode some of your code as nodes. You could highlight part of you file and hit "explode" to break it out into nodes for a minute.

</comment><comment><USER63> Fargo is quite nice [http://fargo.io/](http://fargo.io/)

<comment><USER64> Is there a way to play with this without using Dropbox?

<comment><USER65> You could try Little Outliner[1]. Dave Winer has been making outliner software for decades[2]. I remember playing about with a desktop app years ago. I guess Fargo is the latest iteration.

[1]: [http://littleoutliner.com/](http://littleoutliner.com/) [2]: [https://en.wikipedia.org/wiki/Dave_Winer#Career](https://en.wikipedia.org/wiki/Dave_Winer#Career)

</comment></comment></comment><comment><USER66> I'm writing one. Inspiration from [http://www.treepad.com/](http://www.treepad.com/) I use Treepad for notes heavily. Now I want to be able to manipulate the tree programmatically.

Also it will serve for a html/js workshop for kids. They have a hard time setting up and working with regular editors and the file system.

The program is general purpose (different kind of node can be handled with plugged-in "drivers").

If you're interested, drop me a mail.

</comment><comment><USER67> It's ugly, but take a look at the HDF editor:

[http://www.hdfgroup.org/products/java/hdfview/](http://www.hdfgroup.org/products/java/hdfview/)

There's also:

[http://oboedit.org/](http://oboedit.org/)

The deficiencies in the generally available tools are obvious, but refined versions do exist here and there.

<comment><USER67> I wasn't insinuating that those example are 'refined' or anything; just that the ideas embodied in those tools might be worth knowing about.

</comment></comment><comment><USER68> Sounds sort of like OmniOutliner with plugins.

<comment><USER69> OmniOutliner is commercial; only for OSX; and a GUI, not a CLI. Just to mention _some_ weaknesses.

<comment><USER70> Another big limitation with Omni - it doesn't have a mode where it can just operate on and save to graphviz format. It's screaming out for this. Omni could be the editor of choice for graphviz. Instead they have gone down the route of allowing you to import what you want, but then you have to save it in their opaque format.

</comment></comment></comment><comment><USER71> What about Workflowy ([https://workflowy.com/](https://workflowy.com/))?

<comment><AUTHOR> It seems like a good product, but it doesn't fit my requirements because (1) it doesn't support plugins to specialize its functionality to particular domains and (2) its reliance on the mouse looks like it would make it far too inefficient for the kind of work I would like to do.

It's an interesting project, though, I'll try to check it out and see what I can learn from it.

<comment><USER72> Workflowy has keyboard shortcuts for pretty much everything. I've been using it for about 6 months now and I swear by it.

Workflowy is an enlighteningly simple app (it's really just bullet lists with zooming) but it's incredibly effective for what it does, and the free-form nature of it makes it easy to just brain-dump random notes to get your thoughts out into text. I use it to do rubber ducking [1], because just the act of putting my problem into text helps me organize my thoughts. I can't say enough good things about it.

[1] [http://c2.com/cgi/wiki?RubberDucking](http://c2.com/cgi/wiki?RubberDucking)

</comment></comment></comment><comment><USER73> I use a tree editor[1] in one of my products, it's almost a graphical DSL, originally inspired by a now deceased product called FormScape.

[1]: [http://www.folderagent.com/images/blog/fa-rules- tree.png](http://www.folderagent.com/images/blog/fa-rules-tree.png)

</comment><comment><USER74> For this purpose I like typing out YAML files in Sublime Text 2. It has syntax highlighting and a formatting plugin. YAML is much more concise and readable than XML and JSON, and many programming languages have libraries for parsing and deserializing it into an in-memory object.

</comment><comment><USER75> Because we don't have a commonly-accepted tree file format, so an editor has nothing to edit.

<comment><USER42> but we do: basic emacs org-mode file format is simple, intuitive, text-based and human-readable.

<comment><AUTHOR> I don't think that qualifies as "commonly-accepted". It's not a bad format (for trees -- it doesn't look like it generalizes to DAGs or graphs), but a standard format might be helpful.

</comment></comment></comment><comment><USER76> I've actually looked into the existence of quality JSON-editing tools that can deal with more than 2 dimensions and have not found anything good yet. Too bad, because excel/csv can be pretty restrictive for certain types of data.

</comment><comment><USER77> Have you seen Tom Sawyer software? components such as [https://www.tomsawyer.com/products/layout/index.php](https://www.tomsawyer.com/products/layout/index.php) (commercial).

</comment><comment><USER78> What I'm looking for is a code editor that doesn't let you edit text but rather the code tree. That prevents you from writing a code that is not a valid tree but doesn't get in the way too much.

</comment><comment><USER79> Well, I used to develop MindVisualizer ([http://innovationgear.com/mind- mapping-software/](http://innovationgear.com/mind-mapping-software/))

</comment><comment><USER80> I have this crazy idea in the back of my mind to write a visual programming language based on Haskell, where shape and colour convey kind and type information. Still cooking that one.

</comment><comment><USER81> Maybe because we don't have a general-purpose tree file format?

<comment><USER82> XML. : )

<comment><USER83> or JSON or S-EXPR; or structures in memory with pointers between nodes (multiple ways to do that, also very specific to the current programming language) and you can store that with some serialization mechanism; or records in SQL table with links as foreign keys (nasty); or object oriented databases (overkill)

It is hard to do them all, or to come up with one solution that pleases everybody, therefore everybody is doing his own tree. Maybe that's not the most general solution, but in reality you really need this one particular choice of tree representation to do your job.

</comment></comment></comment><comment><USER84> Freemind might be similar to what you're looking for.

[http://freemind.sourceforge.net/wiki/](http://freemind.sourceforge.net/wiki/)

</comment><comment><USER85> One of the best tree editors I have used (actually a graph editor) was built into the InterLisp-D programming environment on my Xerox Lisp Machine.

</comment><comment><USER86> You might like Flying Logic (flyinglogic.com) .

</comment><comment><USER87> A web browser is a GUI for viewing a directed graph, the web (vertices = pages, edges = hyperlinks). It's quite popular.

</comment><comment><USER88> nestgrid is a general purpose tree editor. Description, in-browser flash demo and desktop app installer are available at [http://nestgrid.org](http://nestgrid.org)

ETA: incidentally, architecturally it is structured for easy plugin / "script" extensibility, like a low key emacs.

</comment><comment><USER89> What about hnb? [http://hnb.sourceforge.net/](http://hnb.sourceforge.net/)

</comment><comment><USER90> Well mathematically we represent trees with matrices. So anything that can edit tabular data can edit trees.

<comment><USER91> Do we? That's only one possible implementation, and not a very efficient one for most uses.

<comment><USER90> Efficient in what sense? Computationally and storage wise it is the most efficient.

<comment><USER92> that isn't true. there are tradeoffs between using an adjacency matrix, and other representations. different operations will be more efficient on different representations.

and in the special case of extremely sparse graphs like trees, the adjacency matrix isn't going to win very often.

your copy of CLRS should discuss all of this. and for practical uses of non- adjacency matrix representations of trees, you can take a look at every functional programming language, ever.

</comment></comment></comment></comment><comment><USER93> There's one for JQueryUi I've used and been pleased with, but damned if I can remember it now

</comment><comment><USER94> [http://xanadu.com/zigzag/](http://xanadu.com/zigzag/)

</comment><comment><USER95> Let me get back to you on this... :)

</comment><comment><USER96> askrafiki.com is a good example of a general purpose editor

</comment><comment> arvidj</comment>


Show HN: An AI Powered HR Assistant for Every Employee – Workbud - <AUTHOR> https://workbud.ca <comment><USER2> I would encourage the developers to spend some time with basic spell checkers and grammar checkers on the text for this site.

Those kinds of errors make it hard for me to trust that they actually know what they're doing.

I would also encourage them to look at the competitors in the field and carefully lay out the explanation of why they are better. There are a zillion Slack chatbots out there, and I'm sure more than a few of them operate in the same space.

Finally, the name "workbud" seems a bit low-brow and untrustworthy to me. And also smacks a bit of "bro" culture.</comment>


The Price We Pay for Cheap Meat - <AUTHOR> http://www.rollingstone.com/feature/belly-beast-meat-factory-farms-animal-activists <comment><USER3> A couple of years ago I moved to the Yukon and had the opportunity to go Moose hunting. I really didn't know if I'd be OK with killing such a large animal and "getting down to it" and have found to experience to be quite powerful.

There is a lot of respect for the animal and we treat every square centimeter of edible meat with the utmost care. It's quite a strange sensation to be working so hard (it's extremely heavy and time consuming to field dress such a large animal) but have this feeling that it's the right thing to be doing. Somehow, I know my ancestors have been doing this for tens of thousands of years.

When I cook at home I make certain that every plate is eaten or saved for leftovers. I would never let someone simply scrape that into the trash, as I might have done when buying shrink wrapped meat from Safeway.

It's a highly rewarding and enlightening process which I highly, highly recommend to anyone that eats meat.

UPDATE: I've been putting the finishing touches on a blog entry about this experience and photos from my first moose hunting trip.... I'll try to have it done later today, the post will be at the top of [http://theroadchoseme.com](http://theroadchoseme.com) when it's done.

<comment><USER4> This has been my experience almost exactly (s/Yukon/Alberta/). I now hunt yearly and basically don't any meat that I didn't kill myself. One deer is enough for a couple for a year.

I found the experience it very self-illuminating, the hypocrisy of will-not- kill-but-will-eat-from-store became much more focused.

The experience of hunting wildly varies. I've had one or two gut-wrenching bad shots, hitting the animal in the leg then having to track it down and end it. Most of the time, the animal is dead before the sound of the shot reaches them, before which they were blissfully grazing.

Regardless of the experience, you reflect on what you've just done _far_ more than when you buy meat on a shelf.

<comment><USER5> If it works for you, fine. But I object to you calling people who eat what they do not kill hypocrites. If someone takes part in a protest against meat products because of animal suffering, and then eats meat or wears leather, they are hypocrites. But if they cannot bring themselves to kill the animal themselves but still eat meat, they are not hypocrites. If they were, people who are queasy when they see blood, but would want a surgeon to care for them or their friends when they are in an accident, would be will-not-doctor-but- will-be-doctored hypocrites.

I think the main problem here is that when some people have an experience they find illuminating, their reaction is to look down on other people who do not share the newly acquired viewpoint.

<comment><USER6> > If someone takes part in a protest against meat products because of animal > suffering, and then eats meat or wears leather, they are hypocrites.

I highly disagree.

Why would wearing a leather jacket make me a hypocrite? It's very much possible to raise and butcher an animal humanely, and still enjoy its meat and leather.

<comment><USER5> I was not specific enough. I should have said if someone takes part in a protest against _all_ meat products. You are right: it is not hypocritical to campaign against inhumane treatment of animals but not against humane butchering.

</comment></comment></comment></comment></comment><comment><USER7> Its hard for me to seriously consider changing my opinion from an article that shows its biases so clearly. You show me the worst case scenario, but what is the _average_ case? Also, what are the alternatives to these techniques? If you don't like cattle prodding, what do you suggest instead? Not eating meat or drinking milk is not going to be an acceptable answer.

Edit: Not going to be acceptable as an alternative to animal cruelty to the American public. I think that is pretty objective in terms of what is actually feasible through legislation/cultural change.

<comment><USER8> Pay more for your meat. Eat less meat to pay for it if you must. Research the premium brands available in your supermarket - the words "free range" or "organic" on their own are pretty meaningless. Find out what delivery services are available in your area, research them. Buy from a provider you trust.

<comment><USER9> This is a useless advice as there is no accountability/testing for these claims.... you cannot even be sure what kind of fish that you are buying nowadays (organic is even harder to prove). DNA testing would solve that, but the FDA apparently don't have the budget. For example: [https://www.nydailynews.com/life-style/health/one-third- fish...](https://www.nydailynews.com/life-style/health/one-third-fish-isn- article-1.1270792) .

<comment><USER8> That's where the "research" bit comes in. Take that report to your fish- monger[1] and ask him about it. If he has a strong opinion about it he's probably a keeper. If not, ditch him and get your fish from somewhere else. Again, check online vendors.

1: Here's a direct link to the actual report so you don't come off as someone who gets his information from tabloid newspapers: [http://oceana.org/sites/default/files/Fishy_Business_updated...](http://oceana.org/sites/default/files/Fishy_Business_updated.pdf)

</comment></comment></comment></comment><comment><USER10> I think its unfortunate that opposition to torturing animals is often lumped in with opposition to merely killing animals.

<comment><USER11> If we have the right to kill, why don't we have the right to torture?

<comment><USER12> The very act of torture requires a level of emotional depravity that merely killing does not.

<comment><USER11> You presuppose that torture is always willful. In the context of human-scale meat production, it seems unavoidable. Yet we accept this, as it is necessary for consumer demands. The employees of factory farm facilities may very well suffer "emotional depravity;" not as a prerequisite for their duties, but as a result.

The nature of torture aside, taking the life of a sentient being is the ultimate violation of its rights. I don't see how any act less than killing can be considered morally worse than killing.

<comment><USER12> Animals are not sentient. Higher animals have some form of emotion and a great capacity to suffer but as far as we can tell today, they do not have self- aware and self-reasoning intelligence.

<comment><USER10> Sentience doesn't mean what you think it does: [http://en.wikipedia.org/wiki/Sentience](http://en.wikipedia.org/wiki/Sentience)

<comment><USER12> Okay, I used the wrong word. My point remains unchanged. Animals, in their various are not capable of enough intelligence or self-reasoning to be considered thinking beings requiring equal protection with people. It is not morally wrong for a human to hunt animals, farm animals, use animals for labor, or keep animals as pets.

This does not make it right for a human to deliberately cause harm to an animal for pleasure or entertainment. I also would consider trophy hunting to be immoral if one leaves the body to rot.

<comment><USER10> I agree with you. My point was: you used the wrong word. :)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> Infotainment!

I know it's considered a failing of hn that commenters tend to attack the style rather than the content, but here the style is aggressively designed to provoke a particular reaction. I find that pretty insulting to the readers: "Don't bother to make up your own mind, let the sounds of dripping shit do it for you!"

It's the multimedia equivalent of Taibbi's expletive-laced purple prose.

<comment><USER14> s/meat/NodeJS/g and it is a rather standard front-page article.

<comment><USER15> I can't help but think that "NodeJS" is a more appropriate HN topic than "meat".

</comment></comment></comment><comment><USER16> How do you know there are vegans on HN? Post anything about eating critters or dietary subjects.

I'm about 1 more story from just flagging these from HN because the discourse on these subjects is as predictable and brain dead as a Daring Fireball discussion.

<comment><USER17> Flag a view you disagree with? How original and insightful. Well researched long form journalism is something HN discussion desperately needs more of.

Whatever your opinion on eating animals is, where our food comes from is a discussion that needs to be had. We need less of Stallman and Bitcoin.

<comment><USER16> It's not the article I object to, it's the vegans crawling out of the woodwork throwing heresay, poorly researched studies, outright lies and moral browbeating around that I find endlessly tiresome.

<comment><USER18> Then _engage_.

This is an issue that people feel strongly about, in both directions. Both sides make all kinds of strange claims sometimes but there is good stuff there too.

I think the widely varying level of argument shows that this is an infant discussion that needs to mature. It is only going to do that if we keep talking about it.

<comment><USER16> You'll see that I have here. While doing so I came across some new bizarre claims by vegan publications I hadn't seen before like "omnivores are _also_ b12 deficient!" and other absolutely unbelievable garbage. It's amazing to me that anybody who claims to be a thinking animal can fall for what are essentially outright lies needed to justify an extreme life-style.

</comment></comment></comment></comment></comment><comment><USER19> I'm surprised and happy to see a big outlet like the Rolling Stone doing such an extensive feature on the meat topic. Yes, they present it completely biased and it's clear what the motivations of the publisher here are, but I think it's important to finally get visibility on what meat consumption actually means.

It's fascinating to see that people who want to eat meat are okay with the fact that we're so detached from what it actually is. The objectification of everything in this world is definitely playing a part in this, we just remove the moral context of the products we buy so we don't have to think about it, problem solved.

I eat meat, but I am struggling with where I buy it, what I pay for it and how much I eat it.

I recommend reading Eating Animals by Jonathan Saffran Foer, where he leaves the decision up to you but is providing you with interesting thought experiments (why not eat dog meat?) and information so you can make up your own mind. It is unfortunately written about the American meat industry, I'd love to see exposure like that on European countries as well.

</comment><comment><USER20> ugh...this is the reason I have not eaten poultry for the last 10 years, except when I am back in Ireland where I can buy organic, free-range chicken from a farmer....it might cost $27 a pop, but as my grandma says....it tastes & has the texture of what chicken used to be like.

I used to love bacon / pork, but cannot eat that stuff anymore after reading about how toxins are formed / retained in the meat.

The only beef I eat is grass-fed pasture raised - no hormones or antibiotics.

My opinion is that you pay for your health one way or the other, either in preventing illness or after you become ill, there is no escaping the high cost of staying healthy in western, urban centers.

<comment><USER21> You _can_ get good poultry in the US if you go out of your way for it and are willing to pay for it. Even if you leave ethics out of it, the taste and texture difference between a $17 chicken and an $8 chicken is pretty huge.

</comment></comment><comment><USER22> I've never seen a more compelling reason to become a vegetarian.

<comment><USER23> Meat in the USA is made in the Farm Industrial Complex, sure. But so is all the mass market food; becoming a vegetarian doesn't change that. And I am a vegetarian.

<comment><USER24> Meat in a wold with 6-billion+ will come from the FIC, in the USA or elsewhere. Heard about the horsemeat swap in the EU, or the tainted (with industrial chemicals and or cardboard) meat in China?

It's not a US or EU or CN thing. It's a feeding 6-billion+ people on-the-cheap thing.

<comment><USER25> Meat persists not because it's "cheap", but because it's an ingrained part of society. Consider the feed conversion ratio. [1] There's an high cost to feeding livestock in the form of wasted food calories that could be avoided if humans consumed that "feed" directly.

[1] [http://en.wikipedia.org/wiki/Feed_conversion_ratio](http://en.wikipedia.org/wiki/Feed_conversion_ratio)

<comment><USER24> Right, but to ignore that as people have more purchasing power they tend to buy more meats is to ignore a large part of the issue. It's really beside the point. People want meat and they want it cheaply. If you could steer (no pun) them away from meats, that'd help a lot, but in the mean time, there is a demand. Given the large demand, the only way to satisfy it is the FIC.

If the world consisted of 100 million people, and everyone one wanted to eat half a kilo of meat per day, there would be little problem satisfying that need without a FIC.

</comment></comment></comment></comment></comment><comment><USER26> "If you're a broiler chicken... you weigh at least double what you would in the wild, but lack the muscle even to waddle, let alone fly."

So...yeah chickens don't fly.

Otherwise this article is good. There's a lot to be said for responsible consumption.

<comment><USER27> From Wikipedia:

 _Domestic chickens are not capable of long distance flight, although lighter birds are generally capable of flying for short distances, such as over fences or into trees (where they would naturally roost). Chickens may occasionally fly briefly to explore their surroundings, but generally do so only to flee perceived danger._

So…yeah chickens _do_ fly short distances, unless they weigh too much.

<comment><USER15> The flight of chickens is much like that of wild turkeys, which they resemble somewhat. A turkey flies when it roosts at night and whenever it sees or hears a predator, which may not happen every day.

The point is, since these two similar species have similar flight habits, and one of them is not domesticated, it's misleading for the editors to say " _domestic_ chickens are not capable..." as if there were some ancient ancestor chicken that soared with the eagles.

</comment></comment></comment><comment><USER28> Stories like this one make me even more excited about the possibility of producing meat in a lab on a larger scale.

</comment><comment><USER29> I tried to eat only expensive meat to reduce the chances that the animals it comes from are bred in conditions such as those described in the article. The idea was that naturally this would reduce the amount of meat I ate as the cost of the meal went up.

Found it wasn't possible.

\- There were no expensive ready meal options at my local supermarket \- Labeling contains no information about what kind of environment animals are brought up in

Solution: \- Enforce labeling about environment animals are kept in \- More NGOs need to take initiative to make it easier to access information - e.g. packaging should tell me name of factory meat was made in. I should be able to go online and view (ideally) live webcams for welfare and if not at least periodic photos of all areas where animals are 'processed'

Ultimately I wish I had the will power to turn fully vegetarian but my issue isn't with eating meat as such - more that I don't want to be a part of any operation that kills animals en masse and I hate words like 'processed' being associated with my food and live animals.

Working post, feel free to build on it.

<comment><USER30> >There were no expensive ready meal options at my local supermarket - <USER2> contains no information about what kind of environment animals are brought up in

I think you know why. :)

>Ultimately I wish I had the will power to turn fully vegetarian

The way I started (I'm a veggie now) is not to fully eliminate meat completely for your diet, but just 1 day a week.

The way to look at it is not that you're missing out on meat for 1 day, but as an opportunity to try out non-meat options.

Here's some suggestions: go to a middle eastern place and order falafel wraps, or tofu next time you go to a Chinese place. Also there's lots of Indian food that's veggie friendly. i.e. Indulge your palette in food that you generally wouldn't try. You might like it!

<comment><USER29> Thanks for the tips Vlod. I do actually eat veggie quite a lot and enjoy actively trying out the vegetarian stuff that I wouldn't without the mindset that I have now.

My issue is that when you're traveling or you just come across a really tasty meat dish, that's when I lack the willpower to be 100% vegetarian.

So all in all, I eat far less meat than the average person and I have cut down intentionally but I am not vegetarian all of the time.

</comment></comment></comment><comment><USER31> -1 for the autoplaying audio, even in a background tab.

</comment><comment><USER32> Nature is full of similar cruelty:

[https://www.youtube.com/watch?v=HRPzPjOR9lc](https://www.youtube.com/watch?v=HRPzPjOR9lc)

[http://en.wikipedia.org/wiki/Tarantula_hawk](http://en.wikipedia.org/wiki/Tarantula_hawk)

</comment><comment><USER33> Too bad its on Rollingstone. Can't visit that site after they glorified the boston bomber on their cover.

</comment><comment><USER34> What do we know about these mega-meat companies? 1) they do all this crap for the money 2) they will do whatever it takes to protect that cash flow

If you believe those statements, it stands to reason, the only thing these companies will ever respond to is competition. I think PETA, HSUS, and the over activists need to stop focusing on trying to get these companies to do the right thing because they never will when profit is their motivator.

We also know the demand for meat is going to remain high in perpetuity. What the activists need to focus on is a model which can compete and is humane enough for their standards. Yes, the activists need to turn into farmers or at least partner with farmers willing and able to scale up to the size of these meat companies. They need to put them out of business; or make consumers not want to do business with them, by giving consumers another option (trying to expose them, and shame consumers for eating meat will never scale).

So, start a farm. Innovate on every process so that it's humane and cost effective. Focus on scale, without scale you can never compete or put a meaningful dent in their market share. Maybe it is never as cheap as the other guys, but it's better - and you can sell that. It will be a slow difficult battle, but I think the activists are used to that. Over time, you can create a "PETA approved" meat stamp, market that to consumers, and much like the "organic" movement - a great deal of people will be willing to pay for what is better.

</comment><comment><USER35> Cruelty is, of course, despicable and should be stopped. The vast majority of growers are decent and moral. It's easy for activists to find and focus on bad apples and make it seem like all meat suppliers are criminal monsters. This is simply not true. This would be like meat eating activists finding bad actors in the farming industry to then acuse the entirety of that industry with criminal behaviour. Ridiculous.

As for vegan vs. meat. Well, few things in life have more evidence than the support provided by millions of years and thousands of species who would not have survived had they not used other species' meat for food, for energy and nutrition. The species that did evolve to survive on plants (cows, for example) have radically different anatomy and mechanisms evolved over millions of years of adaptation to that diet.

We are meat eaters. More accurately, we are omnivores. The only reason one could even consider going vegan is that we've industrialized food production and distribution.

Drop two people on an island. One of them is constrained to eating plants while the other is able to eat anything, including any animal, plant and even his left foot. Over time the vegan will either get horribly sick and maybe even die. In addition to that, he would have to devote huge chuncks of the day to finding vegan food. The omnivore could easily ingest all the energy and nutrients needed to function at a high level of exertion for a full day during one meal. One could focus most of his time trying to get off the island while the other has to focus on eating constantly.

Here's another way to look at it. Veganism can be hypocritical in that one's ability to choose this approach would not exist without millions of years of eating meat. You are who you are and you exist because our ancestors, including your parents, grandparents, etc. killed and ate meat. A vegan is only possible because of millions of years of eating meat. Our species would not exist without eating meat.

Yet another view is that millions of meat eaters make veganism possible.

The vast majority of the people in a vegan's food supply chain are almost guaranteed to be meat eaters. How much of a hypocrite does someone have to be to rationalize eating vegan when tens of thousands of meat eaters --killing and eating hundreds of thousands of animals-- are quite literally feeding them their vegan diet. A vegan who makes sure their entire food supply chain is vegan is, of course, being absolutely honest in support of their choice.

<comment><USER30> > The vast majority of growers are decent and moral.

Really? I think a lot of these decent/moral farmers are getting replaced by huge corporations that are only interested in profit.

>Drop two people on an island.

 _Sigh_ This point is taking it to an extreme. Yes, I'm a veggie/vegan becz of the environment I'm in. Put people on an island and most likely everyone will turn into a raving beast (aka Lord of the Flies).

>The omnivore could easily ingest all the energy and nutrients needed to function

Are you some crazy survivalist? I would guess not. Also most of the (let's say US) population couldn't survive. _Most_ people get their meat from fast food restaurants or else packaged in a supermarket.

Scenario, you land on a desert island. You don't have a gun or a knife. You think the mass population could trap and kill a wild pig? You need training to do something like that. Even something smaller like a wild bird or some sort of rodent is not easy.

Then there's the question of having to cook it. Do you think most of the population can start a fire without matches?

<comment><USER35> It's hypothetical. Don't over-think it.

Still, both people would be handicapped in different respects. How many vegans can climb trees and identify the various edible species of plant life on an island. I'll tell you one thing, the idea of having to live off plants in the wild scares me. Unless you happen to come upon something like an apple, orange, fig or other recognizable tree you are screwed. The guy in the Survivorman show makes it look easy, but he has an army of consultants preparing him before each trip. That's how he knows that a specific grass is edible and that the root of a given plant is good food. Without that most city dwellers would not know what to do with most vegetation on an island. You could easily kill yourself if you eat the wrong plant.

In that sense meat is easy. So long as the animal doesn't kill you first and you clean and cook it you are generally pretty safe.

An omnivore can eat anything, ants, grubs, bugs of all kinds, worms, snakes, lizards, crabs, rabbits, rats, etc. You just have to be smart enough to make a trap and a fire. Find a reasonably flat rock, heat it up and use it to cook. I think most people who have watched a little television can figure out how to do that, particularly when coupled with the intense need to survive. Making fire isn't easy. I've done it. I failed miserably a bunch of times before I got it. My hands were shredded, but I did it. If you are not injured and persevere it isn't impossible. It can be painfully hard, but not impossible.

</comment></comment></comment><comment><USER36> humans are animals, nothing more, nothing less. I'm not against improving animal's conditions, but I have the impression that most of the activist don't have much contact with nature and they feel that we are superior, so we don't follow nature's rule.

the reality is that a lot of people still struggle to survive like other animals, and it can be brutal.

</comment><comment><USER37> The real price are cancer, diabetes, strokes, heart attacks, obesity and a dirty world.

<comment><USER38> Vegan propagandism; meat is not inherently unhealthy so as to cause those issues when consumed in moderation and as part of a balanced diet.

</comment></comment><comment><USER39> The opinions on this topic around here are so depressing given how easy, cheap and healthy it is to live without meat, or dairy, for that matter.

<comment><USER16> > how easy, cheap and healthy it is to live without meat, or dairy, for that > matter.

Given the volume and nature of advice in the vegan community for how not to hurt yourself eating as a vegan, I would say that "easy" or "healthy" is not a word that could be reasonably associated with a sustained, long-term vegan diet.

Even long-term vegans have difficulty in getting complete nutrition on their diet which is offered almost by default in a basic omnivorous diet.

<comment><USER30> >Even long-term vegans have difficulty in getting complete nutrition on their diet which is offered almost by default in a basic omnivorous diet.

You over estimate the difficult, yes it's a _little_ more work.

Heck you can say the same thing about the current US omnivorous diet. Most omnivores have problem getting sufficient nutrition (in the form of fruits, veg and Vit.D) in their diet. It's not that they can't get it, it's just that they are a little lazy.

Tip to Vegans: for B12 put nutritional yeast on your popcorn... kinda tastes like cheese and super nutritious and delicious!

<comment><USER16> > Heck you can say the same thing about the current US omnivorous diet. Most > omnivores have problem getting sufficient nutrition (in the form of fruits, > veg and Vit.D) in their diet. It's not that they can't get it, it's just > that they are a little lazy.

Pretty much agree, but the kinds of nutrition omnivores lack are absurdly easy to get even by accident.

But then again, you had to put a nutritional tip in your post which is a perfect exemplar of what I was talking about. Considering how small a percent of the population Vegans are (1-3% I believe), the amount of nutritional advice available and needed by the _average_ vegan to sustain such a diet is...voluminous to put it mildly.

Socially, it's also highly irritating to be around. Since most Vegans are converts to the life-style, it's like any other recent convert to a chosen life-style (religion, fitness, chosen computer platform, etc.), endlessly inserting it into every conversation and constant moral chastisement to self- justify the difficulties of their chosen life-style to those that honestly don't care in the least and have better things to do with their time.

<comment><USER39> >Socially, it's also highly irritating to be around. Since most Vegans are converts to the life-style, it's like any other recent convert to a chosen life-style (religion, fitness, chosen computer platform, etc.), endlessly inserting it into every conversation and constant moral chastisement to self- justify the difficulties of their chosen life-style to those that honestly don't care in the least and have better things to do with their time.

It's more complex than that.

Every time I sit down to eat in a social situation, everyone around me is fishing for small talk to make. So, they comment what I order, and want to hear all about it. Since I've had this conversation a thousand times before (at least), I'm sick of it, but also well versed in any responding to anything they say.

It's also stressful, because many times I've had to play this game, people will say patently offensive things - sometimes obliviously so, and sometimes because they genuine assholes. Either way, it slowly sticks to your psyche

So, I'm making small talk, on a topic, which makes me feel bad, that bored me to tears long, long ago, and has marked me as a permanent outsider in more than one situation. And this is while my erstwhile friends sit around chewing on a steaming piece of something that I could have easily made friends with too.

So, I'm not at my best.

<comment><USER16> I upvoted you for putting me into your shoes. I don't have much sympathy for people who get upset because their chosen life-style is difficult or inconvenient or socially awkward, but I'll definitely try to make better small talk to my vegan friends in the future.

<comment><USER39> Yeah, I'm definitely not blaming people for making small talk or being interested in me. If anything, it's on me to steer the conversation towards other things - something I'm actively working on doing.

</comment></comment></comment></comment></comment></comment></comment><comment><USER40> If the suffering of animals matters, then eating meat is morally wrong. Animals are non-human persons who are aware of their own existence and who feel a wide range of emotions, just like we do.

Killing animals may still be acceptable in western society, but it's wrong. It's wrong just as slavery in the United States in the 18th and 19th century was once acceptable but wrong. Just as hanging, drawing and quartering to an audience of thousands in Europe was acceptable but wrong.

To disregard the pain and suffering of animal persons without regard for their interests - just because they're not human, _is a form of racism._ Peter Singer[1] calls it 'speciesism'.

We don't need technological advances in this society as much as we need advances in morality.

[1][https://en.wikipedia.org/wiki/Peter_Singer](https://en.wikipedia.org/wiki/Peter_Singer)

<comment><USER41> > Killing animals may still be acceptable in western society, but it's wrong. > It's wrong just as slavery in the United States in the 18th and 19th century > was once acceptable but wrong. Just as hanging, drawing and quartering to an > audience of thousands in Europe was acceptable but wrong.

Wow, wait until you watch an animal kingdom video. Your mind is about to be blown but the amount of animal on animal violence you'll see.

I mean blue whales will eat litterally 10 of thousands of shrimp in one meal.

Lions will attack and pick on the weakest of the gazelles. nature must have really gotten it wrong.

Look, you just can't come out and state that eating meat is wrong without providing some sort of rational around it. Just claiming its morally wrong doesn't really make an impressive argument at all.

The biggest problem you make is to lump together the poor treatment of animals and the eating of meat. Many farms treat animals in ways that are considered by the vast majority of people to be fair and proper.

Many people who eat meat have educated themselves and consider you to be wrong about the ethics of eating meat.

TD/DR, you just can't take your own beliefs, state them as fact and then state that they are the correct moral thing to do and any one who dares disagree with your narrow beliefs is just wrong.

<comment><USER42> Nature is not morally right. In fact, nature is amoral. Pointing to nature and saying "nature does it so it's ok" is a bit like pointing at a landslide and saying "nature does it so it's ok to build my house like this". It's meaningless.

Unlike most animals (as far as we know) we are in the unique position of being moral creatures. We created this morality idea, which was not present in nature before us.

Killing any kind of sentient creature whose death could have been avoided is immoral (whether legal or not). That some countries still apply the barbarous death penalty doesn't make it less immoral. We don't know exactly the level of sentience of the animals we kill and eat, but they are at the very least self- conscious to some extent. Pigs, squids, dolphins, dogs, cats, etc, are all clearly human-like in some ways. Killing such animals is not that far off from killing sentient beings.

I think it's a fair statement to say that killing animals is _wrong_.

That being said...

The issue is complex. There is a lot of historical baggage that we have to deal with here. And it could be argued that many of those species only exist because we eat them (or at least that most of their numbers exist only because we eat them). Endless such arguments can be contrived. None of them make it right, but they explain why this is not a simple "X is wrong, let's stop doing X" situation.

I say all this above as a meat eater, btw. I eat (a lot of) meat. That I do so while knowing that it's morally wrong is, I guess, just one of those "contradictions" that we humans get to live with.

<comment><USER41> > Nature is not morally right. In fact, nature is amoral. Pointing to nature > and saying "nature does it so it's ok" is a bit like pointing at a landslide > and saying "nature does it so it's ok to build my house like this". It's > meaningless.

Completely agree here, luckily I never made that argument:) I basically made a tongue in check throw away remark

> Killing any kind of sentient creature whose death could have been avoided is > immoral (whether legal or not)

Here we disagree if by sentient creature you included animals, which I'm assuming you do or you'd just say humans:)

Look I recognize your name on this site now and I respect a lot of what you say but you just can't make this statement and assume its a fact that isn't debatable. Because its very much debatable.

Look we just disagree on this point, which is fine as its all opinion based and no right or wrong here.

<comment><USER42> Everything's debatable! But there are pretty strong arguments for "killing sentient beings is wrong".

Most morality stems from the Golden Rule (treat others as you'd want to be treated). If we take that as a given (a reasonable non-controversial starting point imho), then we can easily agree that breeding and killing other humans for food is immoral.

The Golden Rule is generally applied to a small subset of sentient beings, of course. However, one thing is observable throughout history, which is that the group of beings included in the Golden Rule has generally gone up with time. It used to be only a subset of humans, and has progressively grown to include most (and yet still not all) humans in most (still not all) cases. But it continues to grow. And already some types of treatment are considered abhorrent even when applied to non-humans.

For example, we may debate eating pigs, but we would presumably all agree that deliberately torturing a pig for your own personal satisfaction is immoral (hence all the laws against cruelty to animals).

This progress of history seems pretty constant - it may be the only progress we can measure as far as the question "are we getting more civilised" goes. Our measure of progress is, how many more groups do we include under the shield of this Golden Rule.

It's pretty reasonable to predict that, unless things go very badly for humanity, eventually many animals that we currently breed and kill for food will come join us on the safe side of the Golden Rule. We may start with the more inspiring or cuddly ones like Dolphins or Whales, but can you doubt that humanity from 500 years in the future will consider eating a dolphin as abhorrent as we would consider, say, eating someone's pet labrador?

Did eating someone's pet become less moral over time, or has it always been immoral, but before it was tolerated? What about eating other humans? What about other applications of the Golden Rule?

Obviously you can respond that morality is a moving target... and you're right. But then you're still agreeing that the topic we're discussing is something that could easily be conceived as immoral in the future (unlike, say, petting a cat or painting a nice painting, which are unlikely to ever be considered immoral as far as we can predict without resorting to extreme scenarios).

I take the view that something which will be immoral in 500 years is already immoral, we're just too undeveloped to realise it yet, much in the same way that I'd say that death penalty or torture were always immoral, but people weren't civilised enough to realise it in the past.

<comment><USER16> > It's pretty reasonable to predict that, unless things go very badly for > humanity, eventually many animals that we currently breed and kill for food > will come join us on the safe side of the Golden Rule. We may start with the > more inspiring or cuddly ones like Dolphins or Whales, but can you doubt > that humanity from 500 years in the future will consider eating a dolphin as > abhorrent as we would consider, say, eating someone's pet labrador?

Interestingly, humans rarely live as a solo species. Most concentrations of humans are part of a larger menagerie of symbiotic utility and pest animals that rely on human existence and activity and despite the constant presence, it's rare that those animals ever enter even the most carnivorous human diet outside of very specific cases.</comment></comment></comment></comment></comment></comment>


Walmart SSL certificates - <AUTHOR> http://www.codefromthe70s.org/certcheck.asp?t=www.walmart.com

<comment><AUTHOR> To elaborate: they are using well-known private keys in their certificates, so all SSL connections towards their servers cannot be guaranteed to be private or authentic. They are wide open to active eavesdropping and it makes them pretty much as secure as an obfuscated HTTP.

<comment><AUTHOR> And not 24 hours later they fixed it .. even though the issue was first reported to them few weeks (if not months) ago. Interesting ..

Their original cert is still available here - <http://codefromthe70s.org/sslblacklist-badcerts.asp></comment></comment>


Orson Welles' first attempt at movie-making - <AUTHOR> https://dangerousminds.net/comments/orson_welles_first_attempts_at_movie_making_too_much_johnson <comment><USER2> Different topic, but about Orson Welles from Every Frame a Painting: [https://www.youtube.com/watch?v=1GXv2C7vwX0](https://www.youtube.com/watch?v=1GXv2C7vwX0)

</comment><comment><USER3> Here is an archive of Orson Welles' radio artifacts:

[https://orsonwelles.indiana.edu/](https://orsonwelles.indiana.edu/)

</comment><comment><USER4> I watched 11 minutes, I swear it felt like 30!</comment>


A Growth Marketing Analysis on How Allbirds Acquires and Converts Customers - <AUTHOR> https://medium.com/@Gallantway/see-how-direct-to-consumer-darling-allbirds-acquires-and-converts-customers-online-77a6f4b57078 <comment><USER2> Interesting. I do wonder what the drawbacks of this business model are. Is brand a defensible advantage in a market?</comment>


Trivers–Willard Hypothesis - <AUTHOR> https://en.wikipedia.org/wiki/Trivers%E2%80%93Willard_hypothesis <comment><USER2> This strongly suggests that in times of repose, women are pregnant with males, and in times of uncertainty and stress with females. Is this true in your experience?

Thinking of it like a forest, women are the trees that create further forest and more life. The tendency for the forest to wish to cover the landscape with greenery and trees is normal, and once the forest is flourishing the focus changes to romping and playing.

Tragically and ironically, the 1 child policy in China was likely quite destructive because it caused so much stress and anxiety, uncertainty, and therefore mammalian ladies were likely creating mainly females, which were discarded in favor of males -- seen as the more important choice in times of scarcity -- in clear cross-facing against the grain of nature as she appears to play it in such times, according to the suppositions and supports of the hypothesis.

</comment><comment><USER3> I've also read a study that human couples with more symmetrical faces produce more daughters than sons.

</comment><comment><USER4> Quick fact for everyone:

Billionaires have more sons, which is somewhat proof of this for humans

<comment><USER5> Even if that is true, given how easy it is for a billionaire to have an abortion if they don't want a daughter, and to make sure no one knows about it, I don't think it's proof of anything directly.

<comment><USER6> I don't think people are preferentially aborting females to any appreciable degree in the west. Received wisdom is that boys are a pain in the ass to rear. And, anecdotally, most parents are interested in having one of each, not in having one particular sex over the other.

<comment><USER7> I think a more likely factor would be stopping after the first child if it's what you wanted, and trying for more if you really wanted the other.

But there's so many other confounding factors (e.g. do billionaire men have more testosterone, as either a cause or an effect of their success, do they have children when they are older but the mothers are younger and so on) that it offers no evidence on its own.

<comment><USER6> > I think a more likely factor would be stopping after the first child if it's > what you wanted, and trying for more if you really wanted the other.

In my experience, the primary consideration for most couples is the number of children. Then, if they want more than one, they want one of each. For whatever my personal experience is worth (mostly with middle and upper-middle class Coastal urban people).

</comment></comment></comment></comment></comment><comment><USER8> Anecdotally, my parents had a son while under the financial support of both sets of my grandparents. Then 4 daughters while only supported by a single not quite middle class income. Then a 10 year gap and under the support of two middle class incomes had their second son.</comment>


Crowdsourcing Pictures of Sports Events? - <AUTHOR>

Do you know of any good crowdsoucing picture sharing sites, e.g. for marathons.<p>This should be possible? Any ideas how to create this? <comment><USER2> If there is a specific hashtag for the event, you can try out my web app Picsho <http://picsho.com>

</comment><comment><AUTHOR> What are the image scanning(Text/Numbers) solutions can i use for my project?</comment>