For the Love of Pipes - <AUTHOR> https://blog.jessfraz.com/post/for-the-love-of-pipes/ <comment><USER3> [Quote]

The Unix philosophy is documented by Doug McIlroy as:

        Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new "features".

        Expect the output of every program to become the input to another, as yet unknown, program. Don't clutter output with extraneous information. Avoid stringently columnar or binary input formats. Don't insist on interactive input.

        Design and build software, even operating systems, to be tried early, ideally within weeks. Don't hesitate to throw away the clumsy parts and rebuild them.

        Use tools in preference to unskilled help to lighten a programming task, even if you have to detour to build the tools and expect to throw some of them out after you've finished using them.

I really like the last two, if you can do them in development then you are then you have a great dev culture

<comment><USER4> Reformatted to be readable:

> Make each program do one thing well. To do a new job, build afresh rather > than complicate old programs by adding new "features".

> Expect the output of every program to become the input to another, as yet > unknown, program. Don't clutter output with extraneous information. Avoid > stringently columnar or binary input formats. Don't insist on interactive > input.

> Design and build software, even operating systems, to be tried early, > ideally within weeks. Don't hesitate to throw away the clumsy parts and > rebuild them.

> Use tools in preference to unskilled help to lighten a programming task, > even if you have to detour to build the tools and expect to throw some of > them out after you've finished using them.

<comment><USER5> If bots were not discouraged on news.yc, I would have implemented a bot for this long ago. Code-block quotes are so atrocious, esp. on mobile devices.

<comment><USER6> It seems "white-space: pre-wrap" on code block would solve most of the problem. There is also additional "max-width" on the pre that I think is not needed.

<comment><USER7> That would break actual code snippet.

What would solve most of the problems is HN actually implementing markdown instead of the current half-assed crap.

<comment><USER8> I would hate to see the day HN allowed any way to __bold __sections of text.

It's way more restful purveying a page of uniformly restrained text.

<comment><USER7> > I would hate to see the day HN allowed any way to bold sections of text.

HN already has shitty italics (shitty in that it commonly matches and eats things you don't want to be italicised e.g. multiplications, pointers, … in part though not only because HN doesn't have inline code). "bold" can just be styled as italics, or it can be styled as a medium or semibold. It's not an issue, and even less worth it given how absolute garbage the current markup situation is.

<comment><USER9> For a site that's meant to target programmers, HN's handling of code blocks is pretty poor.

Just give me the triple-tilde code block syntax please!

<comment><USER7> > For a site that's meant to target programmers, HN's handling of code blocks > is pretty poor.

Meh. It does literal code blocks, they work fine.

That's pretty much the only markup feature which does, which is impressively bad given HN only has two markup feature: literal code blocks and emphasis.

It's not like they're going to add code coloration or anything.

And while fenced code blocks are slightly more convenient (no need to indent), pasting a snippet in a text editor and indenting it is hardly a difficult task.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> I'm surprised JessFraz who is employed by Microsoft doesn't talk about powershell pipes at all.

Powershell pipes are an extension over Unix pipes. Rather than just being able to pipe a stream of bytes, powershell can pipe a stream of objects.

It makes working with pipes so much fun. In Unix you have to cut, awk and do all sorts of parsing to get some field out of `ls`. In poweshell, ls outputs stream of file objects and you can get the field you want by piping to `Get- Item` or sum the file sizes, or filter only directories. It's very expressive once you're manipulating streams of objects with properties.

<comment><USER11> She is actually employed at GitHub now.

[https://twitter.com/jessfraz](https://twitter.com/jessfraz)

<comment><USER12> Still MSFT, in a way!

</comment></comment></comment><comment><USER13> I'm probably nitpicking, but if you're using cat to pipe a single file into the sdtin of another program, you most likely don't need the cat in the first place, you can just redirect the file to the process' stdin. Unless, of course, you're actually concatenating multiple files or maybe a file and stdin together.

Disclaimer: I do cat-piping myself quite a bit out of habit, so I'm not trying to look down at the author or anything like that! :)

<comment><USER14> In fact, I don't like people optimizing shell scripts for performance. I mean, shell scripts are slow by design and if you need something fast, you choose the wrong technology in the first place.

Instead, shell script should be optimized for readability and portability and I think it is much easier to understand something like 'read | change >write' than 'change <read >write'. So I like to write pipelines like this:

      cat foo.txt \
        | grep '^x' \
        | sed 's/a/b/g' \
        | awk '{print $2}' \
        | wc -l >bar.txt

It might be not the most efficient processing method, but I think it is quite readable.

For those who disagree with me: You might find the pure-bash-bible [1] valuable. While I admire their passion for shell scripts, I think they are optimizing to the wrong end. I would be more a fan of something along the lines of 'readable-POSIX-shell-bible' ;-)

[1]: [https://github.com/dylanaraps/pure-bash- bible](https://github.com/dylanaraps/pure-bash-bible)

<comment><USER15> This is a very silly way of writing it though. grep|sed can almost always be replaced with a simple awk: awk '/^x/ { sub("a", "b"); print $2; }' foo.txt. This way, the whole command fits on one line. If it doesn't, put your awk script in a separate file and simply call it with "awk -f myawkscript foo.txt".

<comment><USER16> I would disagree that their way of writing it is silly.

It is instantly plainly obvious to me what each step of their shell script is doing.

While I can absolutely understand what your shell script does after parsing it, it's meaning doesn't leap out at me in the same way.

I would describe the prior shell script as more quickly readable than the one that you've listed.

So, perhaps it's not a question of one being more silly than the other—perhaps the author just has different priorities from you?

</comment></comment></comment></comment><comment><USER17> I love the idea of simple things that can be connected in any way. I'm not so much a fan of "everything is a soup of bytes with unspecified encoding and unknown formatting".

It's an abstraction that held up quite well, but its starting to show its age.

<comment><USER18> 100% agree. Having to extract information with regular expressions is a waste of time. If the structure of the data was available, you would have type safety / auto-completion. You could even have GUIs to compose programs.

<comment><USER19> I hear what you're saying.

However, how can you ensure the output type of one program matches the input type of another?

<comment><USER20> Allow programs to specify the type of data they can consume and the type of the data they emit. This is how powershell does it (using the dotnet type system).

<comment><USER19> And the problem is _how can you ensure the output type of one program matches the input type of another_.

A program emits one type, and the other program accepts another.

Something will be needed to transform one type into another. Imagine doing that on the command line.

<comment><USER21> Cat file1 | convert | dest

</comment></comment></comment></comment></comment></comment><comment><USER22> For an alternative view, don't forget to read the section on Pipes of _The Unix-Haters Handbook_ : [http://web.mit.edu/~simsong/www/ugh.pdf](http://web.mit.edu/~simsong/www/ugh.pdf) (page 198)

<comment><USER23> > When was the last time your Unix workstation was as useful as a Macintosh?

Some of that discussion has not aged well :)

<comment><USER24> MacOs is layered on a UNIX-like OS. You can use pipes in your command windows.

<comment><USER25> This comment makes me feel really old.

MacOs wasn't always layered on unix, and the unix-haters' handbook predates the switch to the unix-based MacOs X.

<comment><USER26> Of course not, but the switch to BSD fixed a bunch of the underpinnings in the OS and was a sane base to work off of.

Not to put too fine a point on it, but they found religion. Unlike Classic (and early versions of Windows for that matter), there was more to be gained by ceding some control to the broader community. Microsoft has gotten better (PowerShell - adapting UNIX tools to Windows, and later WSL, where they went all in)

Still, for Apple it meant they had to serve two masters for a while - <USER2> school Classic enthusiasts and UNIX nerds. Reading the back catalog of John Siracusa's (one of my personal nerd heroes) old macOS reviews gives you some sense of just how weird this transition was.

</comment></comment></comment></comment></comment><comment><USER27> I twitched horribly at the final sentence, screaming inwardly "you don't _pipe_ to /dev/null, you _redirect_ to it". And now I feel like an arsehole.

<comment><USER28> redirect your feelings to /dev/null, because a pipe will just give us a Permission denied

<comment><USER29> Chmod +x /dev/null

(havent tried above, not sure I recommend that you do)

<comment><USER30> Well you can't read either from /dev/null, and I don't think that's just a question of permissions. I'm pretty sure it's impossible to get /dev/null to behave like an executable.

<comment><USER29> Interesting question.

You could write a executable that accepts piped input and throws it away.

When would it exit though? Would it exit successfully at the end of the input stream? That sounds sensible.

That would be behaving like an executable wouldn't it?

<comment><USER5> > When would it exit though? Would it exit successfully at the end of the > input stream?

A process that attempts to read from a closed pipe receives SIGPIPE. The default disposition for SIGPIPE is to terminate the program (similar to SIGTERM or SIGINT). So yeah, assuming that the previous program in the pipeline closes its stdout at some point (either explicitly, or implicitly by just exiting), then our program would die of SIGPIPE the when it tries to read() from stdin and the pipe's buffer has been depleted.

 _However_ , our program could also set SIGPIPE to ignored and ignore the EPIPE errors that read() would return in that case. In that case, it could run indefinitely. But at this point, you're way past normal behavior.

</comment></comment></comment></comment></comment></comment><comment><USER31> Pipes are awesome and infuriating.

Sometimes they work great -- being able to dump from MySQL into gzip sending across the wire via ssh into gunzip and into my local MySQL without ever touching a file feels nothing short of magic... although the command/incantation to do so took quite a while to finally get right.

But far too often they inexplicably fail. For example, I had an issue last year where piping curl to bunzip would just inexplicably stop after about 1GB, but it was at a different exact spot every time (between 1GB and 1.5GB). No error message, no exit, my network connection is fine, just an infinite timeout. (While curl by itself worked flawlessly every time.)

And I've got another 10 stories like this (I do a lot of data processing). Any given combination of pipe tools, there's a kind of random chance they'll actually work in the end or not. And even more frustrating, they'll often work on your local machine but not on your server, or vice-versa. And I'm just running basic commodity macOS locally and out-of-the-box Ubuntu on my servers.

I don't know why, but many times I've had to rewrite a piped command as streams in a Python script to get it to work reliably.

<comment><USER32> > Any given combination of pipe tools, there's a kind of random chance they'll > actually work in the end or not.

While this may be your experience, the mechanism of FIFO pipes in Unix (which is filehandles and buffers, basically), is an old one that is both elegant and robust; it doesn't "randomly" fail due to unreliability of the core algorithm or components. In 20 years, I never had an init script or bash command fail due to the pipe(3) call itself being unreliable.

If you misunderstand detailed behavior of the commands you are stitching together--or details of how you're transiting the network in case of an ssh remote command--then yes, things may go wrong. Especially if you are creating Hail Mary one-liners, which become unwieldy.

<comment><USER33> If got to agree. I can't recall a pipe ever failing due to unreliability.

One issue I did used to have (before I discovered '-o pipefail'[1]) was the annoyance that if an earlier command in a pipeline failed, all the other commands in the pipeline still ran albeit with no data or garbage data being piped to them.

[1] [https://stackoverflow.com/questions/1550933/catching- error-c...](https://stackoverflow.com/questions/1550933/catching-error-codes- in-a-shell-pipe#comment28578902_4959616)

</comment></comment></comment><comment><USER34> I recently came across Ramda CLI's interactive mode [1]

It essentially hijacks pipe's input and output into browser where you can play with the Ramda command. Then you just close browser tab and Ramda CLI applies your changed code in the pipe, resuming its operation.

Now I'm thinking all kinds ways I use pipe that I could "tee" through a browser app. I can use browser for interactive JSON manipulation, visualization and all around playing. I'm now looking for ways to generalize Ramda CLI's approach. Pipes, Unix files and HTTP don't seem directly compatible, but the promise is there. Unix tee command doesn't "pause" the pipe, but probably one could just introduce pause/resume output passthrough command into the pipe after it. Then web server tool can send the tee'd file to browser and catch output from there.

[1] [https://github.com/raine/ramda-cli#interactive- mode](https://github.com/raine/ramda-cli#interactive-mode)

<comment><USER35> You can just store the first pipeline results in a file, edit it, then use the file as an input for the second pipeline.

<comment><USER34> Well, yes, but this kind defeats transient nature of data moving through pipe. Testing and debugging and operating on pipe based processing benefits from close feedback cycle. I'd rather keep that as much as possible.

</comment></comment></comment><comment><USER36> Yes, pipes are awesome, and the concepts actually translate well to in-process usage with structured data.

[https://github.com/mpw/MPWFoundation/blob/master/Documentati...](https://github.com/mpw/MPWFoundation/blob/master/Documentation/Streams.md)

One aspect is that the coordinating entity hooks up the pipeline and then gets out of the way, the pieces communicate amongst themselves, unlike FP simulations, which tend to have to come back to the coordinator.

This is very useful in "scripted-components" settings where you use a flexible/dynamic/slow scripting language to orchestrate fixed/fast components, without the slowness of the scripting language getting in the way. See sh :-)

Another aspect is error handling. Since results are actively passed on to the next filter, the error case is simply to not pass anything. Therefore the "happy path" simply doesn't have to deal with error cases at all, and you can deal with errors separately.

In call/return architectures (so: mostly everything), you have to return _something_ , even in the error case. So we have nil, Maybe, Either, tuples or exceptions to get us out of Dodge. None of these is particularly good.

And of course | is such a perfect combinator because it is so sparse. It is obvious what each end does, all the components are forced to be uniform and at least syntactically composable/compatible.

Yay pipes.

</comment><comment><USER37> pipe junkies might like to know about the following tools:

* vipe (part of [https://joeyh.name/code/moreutils/](https://joeyh.name/code/moreutils/) \- lets you edit text part way through a complex series of piped commands)

* pv ([http://www.ivarch.com/programs/pv.shtml](http://www.ivarch.com/programs/pv.shtml) \- lets you visualise the flow of data through a pipe)

<comment><USER38> Yes! I love pv. Besides that and tee, can anyone else suggest some more general pipe tools?

<comment><USER39> [http://joeyh.name/code/moreutils/](http://joeyh.name/code/moreutils/) have a couple more:

* pee: tee standard input to pipes (`pee "some-command" "another-command"`)

* sponge: soak up standard input and write to a file

Though in zsh and bash you can create pee using tee: `tee >(some-command) >(another-command) >/dev/(null`

</comment></comment></comment><comment><USER40> Sanjay Ghemawat (the other less visible half of Jeff Dean) wrote a pipe library in Go, learnt quite a bit from it.

[https://github.com/ghemawat/stream](https://github.com/ghemawat/stream)

Edit: Jeff Dean, not James Dean

</comment><comment><USER41> Cool, the pipe command must be one of the most essential things in Unix/Linux based systems.

I would have loved to see some awesome pipe examples though.

<comment><USER42> Ok, here are some example pipelines:

A simple virus scanner in one line of pipe:

[https://everythingsysadmin.com/2004/10/whos- infected.html](https://everythingsysadmin.com/2004/10/whos-infected.html)

And a bunch of pipe tricks that are oh so wrong but oh so useful:

[https://everythingsysadmin.com/2012/09/unorthodoxunix.html](https://everythingsysadmin.com/2012/09/unorthodoxunix.html)

</comment></comment><comment><USER29> Why isn't the pipe a construct that has caught on in 'proper' languages?

<comment><USER43> Many functional languages have |> for piping, but chained method calls are also a lot like pipelines. Data goes from left to right. This javascript expression:

      [1, 2, 3].map(n => n + 1).join(',').length

Is basically like this shell command:

      seq 3 | awk '{ print $1 + 1 }' | tr '\n' , | wc -c

(the shell version gives 6 instead of 5 because of a trailing newline, but close enough)

<comment><USER44> But each successive 'command' is a method on what's constructed so far; not an entirely different command to which we delegate processing of what we have so far.

The Python:

       length(','.join(map(lambda n: n+1, range(1, 4)))

is a bit closer, but the order's now reversed, and then jumbled by the map/lambda. (Though I suppose arguably awk does that too.)

<comment><USER43> That's true. It's far from being generally applicable. But it might be the most "mainstream" pipe-like processing notation around.

Nim has an interesting synthesis where a.f(b) is only another way to spell f(a, b), which (I think) matches the usual behavior of |> while still allowing familiar-looking method-style syntax. These are equivalent:

      [1, 2, 3].map(proc (n: int): int = n + 1).map(proc (n: int): string = $n).join(",").len

      len(join(map(map([1, 2, 3], proc (n: int): int = n + 1), proc (n: int): string = $n), ","))

The difference is purely cosmetic, but readability matters. It's easier to read from left to right than to have to jump around.

<comment><USER45> C# extension methods provide the same syntax, and it is used for all of its LINQ pipeline methods. It's amazing how effective syntactic sugar can be for readability.

</comment></comment></comment></comment></comment><comment><USER46> awk, grep, sort, and pipe. I'm always amazed at how well thought out, simple, functional, and fast the unix tools are. I still prefer to sift through and validate data using these tools rather than use excel or any full-fledged language.

Edit: Also "column" to format your output into a table.

<comment><USER47> Although I probably use it multiple times everyday, I hate column. At least the implementation I use has issues with empty fields and a fixed maximum line length.

Edit: s/files/fields/

</comment></comment><comment><USER48> I have wondered for a long time why pipes are not used more often in production-grade applications.

I have seen plenty pipe use in bash scripts, especially for build and ETL purposes. Other languages, have ways to do pipes as well (e.g. Python [https://docs.python.org/2/library/subprocess.html#replacing-...](https://docs.python.org/2/library/subprocess.html#replacing- shell-pipeline)) but I have seen much less use of it.

It appears to me, that for more complex applications one rather opts for TCP-/UDP-/UNIX-Domain sockets for IPC.

\- Has anyone here tried to plumb together large applications with pipes?

\- Was it successful?

\- Which problems did you run into?

<comment><USER49> The biggest issue is that pipes are unidirectional, while not all data flow is unidirectional.

Some functional programming styles are pipe-like in the sense that data-flow is unidirectional:

      Foo(Bar(Baz(Bif(x))))

is analagous to:

      cat x | Bif| Baz |Bar| Foo

Obviously the order of evaluation will depend on the semantics of the language used; most eager languages will fully evaluate each step before the next. (Actually this is one issue with Unix pipes; the flow-control semantics are tied to the concept of blocking I/O using a fixed-size buffer)

The idea of dataflow programming[1] is closely related to pipes and has existed for a long time, but it has mostly remained a niche, at least outside of hardware-design languages

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

<comment><USER50> Pipes are not unidirectional on FreeBSD, interestingly.

</comment></comment></comment><comment><USER51> I built an entire prototype ML system/pipeline using shell scripts that glued together two python scripts that did some heavy lifting not easily reproduced.

I got the whole thing working from training to prediction in about 3 weeks. What I love about Unix shell commands is that you simply can't abstract beyond the input/output paradigm. You aren't going to create classes, types classes, tests, etc. It's not possible or not worth it.

I'd like to see more devs use this approach, because it's a really nice way to get a project going in order to poke holes in it or see a general structure. I consider it a sketchpad of sorts.

<comment><USER52> My backup system at work is mostly bash scripts and some pipes.

If you write them cleanly they don't suck and crucially for me, bash today works basically the same way as it did 10 years ago and likely in 10 years, that static nature is a big damn win.

I sometimes wish language vendors would just say 'this language is complete, all future work will be bug fixes and libraries' a static target for anything would be nice.

Elixir did say that recently except for one last major change which moved it straight up my list of things to look at in future.

<comment><USER53> \- My IRC notification system is a shell script with entr, notify-send and dunst.

\- My mail setup uses NMH, everything is automated. I can mime-encode a directory and send the resulting mail in a breeze.

\- GF's photos from IG are being backed up with a python script and crontab. Non IG ones are geotagged too with a script. I just fire up some cli GPS tools if we hike some mountain route, and gpscorrelate runs on the GPX file.

\- Music is almost everything chiptunes, I felt interesent on any mainstream music since 2003-4. I mirror a site with wget and it's done. If they offered rsync...

\- Hell, even my podcasts are being fetch via cron(8).

\- My setup is CWM/cli based, except for mpv, emulators, links+ and vimb for JS needed sites. Noice is my fm, or the pure shell. find(1) and mpg123/xmp generate my music playlist. Street View is maybe the only service I use on vimb...

The more you automate, the less tasks you need to do. I am starting to avoid even taskwarrior/timew, because I am almost task free as I don't have to track a trivial <5m script, and spt [https://github.com/pickfire/spt](https://github.com/pickfire/spt) is everything I need.

Also, now I can't stand any classical desktop, I find bloat on everything.

</comment></comment></comment><comment><USER54> I'm not a Clojure person, but there are transducers, [https://clojure.org/reference/transducers](https://clojure.org/reference/transducers).

<comment><USER55> Which are in a way comparable, but I'd say that pipes are more like the arrow ->.

Transducers are compostable algorithmic transformations that, in a way, generalize map, filter and friends but they can be used anywhere where you transform data. Transducers have to be invoked and handled in a way that pipes do not.

Anyone interested should check out Hickeys talks about them. They are generally a lot more efficient than chaining higher order list processing functions and since they don't build.intermediate results they have a lot better GC performance.

</comment></comment><comment><USER56> Fully agree, pipes are awesome, only downside is the potential duplicate serialization/deserialization overhead.

Streams in most decent languages closely adhere to this idea.

I especially like how node does it, in my opinion one of the best things in node. Where you can simply create cli programs that have backpressure the same as you would work with binary/file streams, while also supporting object streams.

        process.stdin.pipe(byline()).pipe(through2(transformFunction)).pipe(process.stdout)

<comment><USER57> Node streams are excellent, but unfortunately don't get as much fanfare as Promises/async+await. A number of times I have gotten asked "how come my node script runs out of memory" \-- due to the dev using await and storing the entirety of what is essentially streaming data in memory in between processing steps.

</comment></comment><comment><USER58> Pipes have been a game-changer for me in R with the tidyverse suite of packages. Base R doesn't have pipes, requiring a bit more saving of objects or a compromise on code readability.

One criticism would be that ggplot2 uses the "+" to add more graph features, whereas the rest of tidyverse uses "%>%" as its pipe, when ideally ggplot2 would also use it. One of my most common errors with ggplot2 is not utilizing the + or the %>% in the right places.

<comment><USER59> I've always thought of ggplot2's process as building a plot object. Most steps only add to the input.

Of course, Hadley admitted it was because he wrote ggplot2 before adopting pipes into his packages.

</comment></comment><comment><USER60> Unix's philosophy of "do one thing well" and "expect the output of every program to become the input to another" is living with "microservices" in nowadays.

</comment><comment><USER61> > "Perhaps surprisingly, in practice it turns out that the special case is the > main use of the program."

This is, in fact, a Useless Use of Cat [1]. POSIX shells have the < operator for directing a single file to stdin:

        figlet <file

[1] [http://porkmail.org/era/unix/award.html](http://porkmail.org/era/unix/award.html)

</comment><comment><USER62> If you want to see what the endgame of this is when taking the reasoning to the maximum, look at visual dataflow languages such as Max/MSP, PureData, Reaktor, LabVIEW...

Like always, simple stuff will be simple ([http://write.flossmanuals.net/pure- data/wireless-connections...](http://write.flossmanuals.net/pure- data/wireless-connections/static/PureData-DataFlow-sendreceive1-en.png)) and complicated stuff will be complicated ([https://ni.i.lithium.com/t5/image/serverpage/image- id/96294i...](https://ni.i.lithium.com/t5/image/serverpage/image- id/96294i47A75666708C8ECA?v=1.0)).

No silver bullet guys, sorry. If you take out the complexity of the actual blocks to have multiple small blocks then you just put that complexity at another layer in the system. Same for microservices, same for actor programming, same for JS callback hell...

<comment><USER63> > Like always, simple stuff will be simple > ([http://write.flossmanuals.net/pure-data/wireless- > connections...](http://write.flossmanuals.net/pure-data/wireless- > connections...))

That is not actually simple because the data is flowing across two _completely different message passing paradigms_. Many users of Max/MSP and Pd don't understand the rules for such dataflow, even though it is deterministic and laid out in the manual IIRC.

The "silver bullet" in Max/MSP would be to _only_ use the DSP message passing paradigm. There, all objects are guaranteed to receive their input before they compute their output.

However, that would make a special case out of GUI building/looping/branching. For a visual language designed to accommodate non-programmers, the ease of handling larger amounts of complexity with impunity would not be worth the cost of a learning curve that excludes 99% of the userbase.

Instead, Pd and Max/MSP has the objects with thin line connections. They are essentially little Rube Goldberg machines that end up being about as readable. But they can be used to do branching/looping/recursion/GUI building. So users typically end up writing as little DSP as they can get away with then uses thin line spaghetti to fill in the rest. That turns out to be much cheaper than paying a professional programmer to re-implement their prototype at scale.

But that's a design decision in the language, not some natural law that visual programming languages are doomed to generate spaghetti.

Edit: clarification

<comment><USER62> > The "silver bullet" in Max/MSP would be to only use the DSP message passing > paradigm. There, all objects are guaranteed to receive their input before > they compute their output.

in one hand, this simplifies the semantics (and it's the approach I've been using in my visual language ([https://ossia.io)](https://ossia.io\))), but in the other it tanks performances if you have large numbers of nodes... I've worked on Max patches with thousands and thousands of objects - if they were all called in a synchronous way as it's the case for the DSP objects you couldn't have as much ; the message-oriented objects are very useful when you want to react to user input for instance because they will not have to execute nearly as often as the DSP objects, especially if you want a low latency.

<comment><USER63> That is certainly true. My point is that this is a drawback to the _implementation_ of one set of visual programming languages, not necessarily a drawback of visual programming languages.

I can't remember the name of it, but there's a Pd-based compiler that can take patches and compile them down to a binary that performs perhaps an order of magnitude faster. I can't remember if it was JIT or not. Regardless, there's no conceptual blocker to such a JIT-compiled design. In fact there's a version of [expr] that has such a JIT-compiler backing it-- the user takes a small latency hit at _instantiation time_ , but after that there's a big performance increase.

The main blocker as you probably know is time and money. :)

</comment></comment></comment></comment><comment><USER64> I made a simulation and video which shows why the pipe is so powerful: [https://www.youtube.com/watch?v=3Ea3pkTCYx4](https://www.youtube.com/watch?v=3Ea3pkTCYx4) I showed it to Doug McIlroy, and while he thought there was more to the story, he didn't disagree with it.

</comment><comment><USER65> I love writing little tools and scripts that use pipes, I've accumulated a lot of them over the years and some are daily drivers.

It's a great learning tool for learning a new programming language as well as the interface between the boundaries of the program are very simple.

For example I wrote this recently [https://github.com/djhworld/zipit](https://github.com/djhworld/zipit) \- I'm fully aware you could probably whip up some awk script to do the same, or chain some existing commands together, or someone else has written the same thing, but I've enjoyed the process of writing it and it's something to throw in the tool box - even if it's just for me!

</comment><comment><USER66> This is cool and useful, but not all unix programs follow this convention:

      * find
      * cal
      * vi
      * emacs
      * ls

These don't use one of standard input/standard output. (edited) and are not fully pipeable.

I don't recall seeing a list of programs--tools, in the original description-- that distinguish between pipeable and not-pipeable programs.

Also, none of the corrective cat/grep code in these threads point out that grep in fact takes file names, so "cat foo | grep stuff" is just a silly no- op.

<comment><USER67> Well find, cal, and ls don't take input at all. And vi (well vim) in fact does. If you invoke it with a - for the file name argument, it will read standard input into the buffer. I can't comment on emacs as I don't use it much.

<comment><USER66> Ah, correct on that point.

What about standard output? That is, can vi be used in a pipe?

<comment><USER68> I use vim as a visual pipe or pipe debugger with undo when I need to perform a series of transformations (grep/sort/cut/lookup/map/run other data tool). Obviously geared towards text files because it is vim.

The ! command sends the selection through external command(s) as STDIN and then replaces the selection with STDOUT from the command(s). For example, grep or sort, but can be any command that works with pipes. Buffer is replaced with output (sorted file for example). Undo with U to go back to original data. Redo with R to go forward to transformed data. Command line history is available to add more commmands or correct when you type ! again.

Edit a file. Select block (Visual mode shift-V) and type ! or use the whole file with gg!G command. Type in the commands you need to run.

Vim also reads stdin if you give - as the filename, like "ls -l | vim -" so you we can use it at the end of a pipe instead of redirecting to a file.

Like I said, I use it as an interactive debugger to assemble pipelines and see the results.

vi / vim filter commands: [http://vimdoc.sourceforge.net/htmldoc/change.html#](http://vimdoc.sourceforge.net/htmldoc/change.html#)!

</comment></comment></comment></comment><comment><USER69> I think the Unix pipeline works because this it has this moldable and expressive text substance that is exchanged. Gstreamer also has pipelines, but the result in my opinion is quite awkward because events of many types are exchanged. Windows Powershell also has a pipeline where objects are exchanged, but it also somehow failed to become a huge success.

i think the unix pipeline concept doesn't quite scale to other domains that try to exchange a different unit of information between the pipeline elements.

<comment><USER70> While I do agree they can sometimes be tricky to use, Gstreamer pipelines are also it's best feature. Is there a better way?

<comment><USER69> ffmpeg took a different approach (sort of like a single program/system with many command line options). Some say its easier to use (at least easier than gst-launch)

<comment><USER70> I find the ffmpeg options dizzying whereas the single syntax for gst-launch and parse_bin_from_description is pretty neat. But then I guess you've still got a selection of randomly named properties to discover and correctly set.

<comment><USER69> occasionally they have events exchanged that can't be implemented with gst- launch, you have to do it in C. Go figure.

</comment></comment></comment></comment></comment><comment><USER71> I built a little tool to audit objects in your R pipeline here:

[https://jabustyerman.com/2017/09/29/auditing-your-r-data- pip...](https://jabustyerman.com/2017/09/29/auditing-your-r-data-pipeline/)

This basically allows you to tag (wrap) intermediate functions in your pipe, and then inspect the objects generated by that function later.

</comment><comment><USER72> In Unix, everything is a file. /dev/null is a file but not an executable so it can't even become a process. So you can't pipe anything into it. If you consider this last sentence as a "figure of speech" then you should have probably avoided the use of "pipe" vs "redirect" and used send them to /dev/null.

</comment><comment><USER73> One of my most used tools with pipes on the Mac is `pbcopy`, which copies whatever you're piping to the clipboard.

Copying your public key somewhere? `cat ~/.ssh/id_rsa.pub | pbcopy`

Pretty-printing some JSON you copied from a log file? `pbpaste | jq . | pbcopy`

It's one of those little tools I use daily and don't think about much, but it's incredibly useful.

<comment><USER74> And of course, its cousin pbpaste is also quite useful: pbpaste | clang -x c -; ./a.out

</comment></comment><comment><USER75> I love pipes so much! In particular, I love pipes in Angular.

I gave a talk about including a bit about pipes in Angular: [https://youtu.be/Gv7IfU78vxw?t=578](https://youtu.be/Gv7IfU78vxw?t=578)

</comment><comment><USER76> Elixir/Unix style pipe operations in Ruby! [https://github.com/LendingHome/pipe_operator](https://github.com/LendingHome/pipe_operator)

</comment><comment><USER77> has there been proposals/research on having non linear / branching pipe syntax ?

        a |1 b | c | d, |1 e

aka piping a to both b,c,d and e branches ?

<comment><USER7> Smalltalk's "method cascading" (the `;` operator) did roughly that. I don't think you're forking an entire sequence of methods though, it just allows performing operations on the same root object e.g.

        a foo
        ; bar
        ; baz

would sequentially send "foo", "bar" then "baz" to "a", then would return the result of the last call.

The ability to fork iterators (which may be the semantics you're actually interested in) also exists in some languages e.g. Python (itertools.tee) or Rust (some iterators are clonable)

<comment><USER77> I see.. but I wonder if st syntax allows for more than methods:

        a (foo duh meh) <- classic composition here
        ; bar
        ; baz

<comment><USER7> I don't think the first line is even valid, it translates to

        a.(foo.duh.meh)

in e.g. ruby.

</comment></comment></comment></comment><comment><USER78> I wish there was an operator to allow a branch then join. Like send output to a lookup, do the lookup, join results

Can do with named pipes, but an operator would be nice

<comment><USER50> GNU awk co-processes are another way to do this.

<comment><USER78> I'll look into it thx

</comment></comment></comment><comment><USER79> It's sad that developers have had access to pipes for decades, yet the most similar feature they provide to end users is still copy/paste.

</comment><comment><USER80> Pipes are awesome. Even in more general programming the pipes and filters pattern is very important and yet a lot of devs still don't know it.

</comment><comment><USER81> I never really associated the Unix philosophy with unix pipes, now it seems so obvious

</comment><comment><USER82> Pedantic, but: you don't pipe to /dev/null, you _redirect_ to it.

</comment><comment><USER83> Piping is fairly common when working with databases and importing CSV files

</comment><comment><USER84> Fantastic article!

</comment><comment><USER85> Danny, boy, the pipes are calling!

(I love pipes too btw)

</comment><comment><USER86> If only there was some standard format to interchange structured data over pipes, other than plain text delimited with various (incompatible) combinations of whitespaces, using various (incompatible) escaping schemes.

<comment><USER87> That's one of the design goals of Powershell, you don't pass streams of text between cmdlets, you pass objects, which have a type, properties and methods you can use in standard ways (they may also be strings)

<comment><USER88> A while back I made a PoC that used pipes to create bidirectional json- speaking connections between applications and then distribute the communication between distributed nodes. The idea being, don't just distribute TCP streams between distributed processes, but give 'em objects to make data exchange more expressive. I don't know where my PoC code went, but it wasn't very stable anyway. Just figured it was something we should have adopted by now (but that Plan9 probably natively supports)

</comment></comment></comment><comment><USER89> The Pure Function Pipeline Data Flow

[https://github.com/linpengcheng/PurefunctionPipelineDataflow](https://github.com/linpengcheng/PurefunctionPipelineDataflow)

Using the input and output characteristics of pure functions, pure functions are used as pipelines. Dataflow is formed by a series of pure functions in series. A dataflow code block as a function, equivalent to an integrated circuit element (or board)。 A complete integrated system is formed by serial or parallel dataflow.

data-flow is current-flow, function is chip, thread macro (->>, -> etc.) is a wire, and the entire system is an integrated circuit that is energized.

<comment><USER90> Yes, there is a strong connection between pipes and functional programming, they all transform what passes through them and should not retain state when implemented properly.

<comment><USER91> They also both rely on very generic data types as input and output. Which is why I was surprised to see the warning about avoiding columnar data. Tabular data is a basic way of expressing data and their relationships.

</comment></comment></comment><comment><USER92> Anyone else disappointed that this wasn't some in-depth, Docker related pipe usage post?

For those of us that know who Jess is, the post is a little lacking. I went there to read about some cool things she's doing with pipe, but was disappointed at a post that contained nothing.

<comment><USER93> I disagree - the pipe command is trivial at least to us whom have used linux (or unix) based systems for a long time.

But to people who follow her and are rather new to this way of doing things, this could be a good read.

Either way, it is nice to be reminded of the unix philosophy about chaining tools together for junior and senior alike.

Edit: typo fixes

<comment><USER92> Fair enough. I'm a little surprised at the response. I didn't expect many people here aren't already intimately familiar with pipes, and for those that aren't *nix users, I'm not sure the content is of interest.

I guess being honest around here is the wrong thing.

<comment><USER93> For what it's worth, I had no issue with your opinion and also didn't downvote either of your comments.

And I also didn't upvote the article, because it is indeed quite basic. Though apperantly enough people did find it interesting enough to make it to the frontpage ^^</comment></comment></comment></comment>


Ask YC: what CMS do you use? - <AUTHOR>

can u suggest powerful content management system (Joomla, Drupal, Pligg etc.). yes, it has to be open source. <comment><USER2> Why open source? As a pro developer, the time saved (and time is often much more costly than a License) on a proprietary CMS may best serve myself and the client.

You should not limit your available tools. And of course, different tools work better for different jobs.

For most things, I prefer ExpressionEngine.

</comment><comment><USER3> We are a web-shop, and the CMS we use is called Seagull (google Seagull Project) - it's relatively unknown, however has been in development for a few years now. It's quite powerful and robust providing many commonly used modules that are found in most sites (user, CMS, media etc.)

It's open source and the developers are quite helpful on the mailing list. Documentation is fairly decent with many howto guides for newcomers. Being a web-developer for over 7 years I highly recommend it.

</comment><comment><USER4> I think Google could suggest such things. It just kills me when I see quick posts like this. Just go to Google, do your research, and then ask us _specific_ questions. Do you like this CMS? Does anyone have experience using x?

You're wasting your time with this kind of post.

</comment><comment><USER5> Mediasurface for my job, but they are seriously searching for a good replacement.

</comment><comment><USER6> Wordpress</comment>


OpenX Sells Off OpenX Source To Developer - <AUTHOR> http://www.socaltech.com/openx_sells_off_openx_source_to_developer/s-0051365.html

<comment><AUTHOR> Help me understand this, does this mean we're going to have back an OpenX _open source_ project?

<comment><AUTHOR> Here it goes... [http://www.revive-adserver.com/](http://www.revive- adserver.com/)

</comment></comment><comment><USER2> Will a network be able to use this for mobile ads? (Not banners)</comment>


Counties with higher lynching rates have low voter turnout today - <AUTHOR> https://www.postandcourier.com/politics/counties-with-higher-lynching-rates-have-low-voter-turnout-today/article_627132ba-9375-11e9-b335-3f61123ae128.html <comment><USER2> Is it an innocent blunder that the editor wrote "Counties with higher lynching rates" rather than "Counties that had higher lynching rates"? I don't think so.

<comment><USER3> After skimming through, the author uses present tense for the rate:

" Greenwood County, which has the highest lynching rate in South Carolina with 6.87 blacks lynched per 10,000 people in the black population in 1900,... "

But then uses past tense for the voter turnout

" ... had a black voter registration rate in the 2008 presidential election of 72.4 percent. "

But I am not sot sure that I understand why either.

<comment><USER4> I don't think they're limiting the time period for the lynchings. So although the rate is based on the population in 1900, it's not limited to that year or decade, so it's not past tense.

</comment></comment></comment><comment><USER3> To someone who understands statistics, why is the method conducted by the researchers:

" To examine the connection between historical acts of racial violence and modern-day voting behavior among blacks in the South, Williams examined county-level voter participation data in the six Southern states where individuals are asked to identify their race when they register to vote. "

Where they basically drew connections between two sets of statistics, different from what 'spurious correlations'[1] takes aim at? Although the article doesn't mention at any greater depth as to how the research was done.

[1] [https://www.tylervigen.com/spurious- correlations](https://www.tylervigen.com/spurious-correlations)</comment>


Ello co-founder: Funding or not, we hate ads and we want to "shift values" - <AUTHOR> https://gigaom.com/2014/09/25/ello-investor-co-founder-funding-or-not-we-hate-ads-and-we-want-to-shift-values/

<comment><USER2> Open-source your product, let me use a custom domain (so that I can still keep my URLs alive after you belly up), and then I can reconsider, but, for now, Ello is not much different than the rest. Hates and likes change, plus, VCs can twist arms (or show you the door) - let's cut the BS! The premises I listed are still not enough though as it won't keep my interactions with people who are either unwilling to self-host later or who picked the default domain. Maybe transfer the ownership of the main domain to an independent nonprofit entity to ensure life-after-death?</comment>


Equifax Sued Over Massive Hack in Multibillion Dollar Lawsuit - <AUTHOR> https://www.bloomberg.com/news/articles/2017-09-08/equifax-sued-over-massive-hack-in-multibillion-dollar-lawsuit?cmpid=socialflow-twitter-business&utm_content=business&utm_campaign=socialflow-organic&utm_source=twitter&utm_medium=social <comment><USER2> OT question for native English speakers:

>In the complaint filed in Portland, Ore., federal court, users alleged Equifax was negligent in failing to protect consumer data, choosing to save money instead of spending on technical safeguards that could have stopped the attack.

Wouldn't that be "was negligent in protecting"?</comment>


Ask HN: How does one overcome solo founder loneliness? - <AUTHOR> <comment><USER2> I've been a solo-founder multiple times (a couple quite successful). There are lots of advantages of being a solo founder, but there are also a number of struggles. The biggest struggle bus I seemed to always be on is the loneliness or isolation which is how I describe it. When you have a co-founder the isolation is still there, but you have someone to share it with, which helps you motivate each other and push each other.

For me, to overcome that isolation, I found that I had to engage people in the industry more, engage with activities and people that I feel were reasons I started. This helped me fight the isolation. Another good side affect of doing this is that I was able to meet more customers, engage them directly and use that to help me not feel so isolated.

I also feel finding someone you can turn to and just vent that understands you are not fatalistic but have to vent so you can get it out of your head to refocus is critical. Sometimes you get 2 people, one too vent to like that, and one who can mentor you in the business aspects. I am lucky that I had a mentor that would/could do both, and he has the credibility on business.

Today I have more than one mentor but for different things. I am also not a founder currently but it is only a matter of time before I start something new. And given my past, there is a high likelihood I will be solo again unless I just ran into the right co-founder.

<comment><AUTHOR> Thank you for the detailed answer, it is quite helpful! Much appreciated!!!

</comment></comment><comment><USER3> Option A: Get married. Your spouse is now your co-founder, gets a 50% share, and is invested in your success. This is the path nearly all great "solo" founders go, but it can end in divorce, because that's the only exit.

Option B: Find your #1 fan. Just tell random people about what you're doing. Someone out there will be a fanatic who gets excited about every update. Some might even propose things or offer resources to help. Sometimes you can promote them to a cofounder (mine started at 0% then 5% then 15% equity). It might seem like a bit, but the moral support can be surprisingly powerful.

Option C: Promote a hardcore employee. At some point you'll get employees who really believe in the vision, sometimes even more so than the founder. This seems to be the second most popular support pillar for solo founders.

</comment><comment><USER4> I read Hacker News. It's a useful distraction from the work I'm supposed to be doing.

<comment><USER3> "useful distraction" can easily turn into a procrastination pit though, especially when it's a strong negative emotion like loneliness.

<comment><AUTHOR> Apparently productivity is correlated with the ability to control your emotions well...

</comment></comment></comment><comment><USER5> I'm just talking to my entrepreneur friends about my projects.

<comment><AUTHOR> But when you work, wheres your office? Doesnt it feel lonely when its only you and your laptop?

<comment><USER5> No, when I work I need silence :)

<comment><AUTHOR> You can have silence at the library no?</comment></comment></comment></comment>


Joseph Traub, Who Helped Bring Computer Science to Universities, Dies at 83 - <AUTHOR> http://www.nytimes.com/2015/08/27/science/joseph-traub-who-helped-bring-computer-science-to-universities-dies-at-83.html?hpw&rref=science&action=click&pgtype=Homepage&module=well-region&region=bottom-well&WT.nav=bottom-well&_r=0

<comment> bra-ket I took a class with Prof. Traub, he would explain a problem, ask us to come up with an algorithm and then always ask "Can we do better?" and push us to find a better solution, he repeated it so often that every time I think about solving something "Can we do better?" is at the back of my mind.

He was interested in optimal algorithms and was one of the founders of the field of "information-based complexity": [https://en.wikipedia.org/wiki/Information- based_complexity](https://en.wikipedia.org/wiki/Information-based_complexity)

</comment><comment><USER2> Search the online Traub Collection:

[http://dli.library.cmu.edu/traub/](http://dli.library.cmu.edu/traub/)

</comment><comment><USER3> Never had the chance to meet him, but I still have a lot of respect for what he's done for Computer Science. Thank you Joseph, and may you rest in peace.</comment>


The Tunguska Event - <AUTHOR> http://www.slate.com/blogs/atlas_obscura/2016/02/22/more_than_a_century_later_there_are_still_questions_about_what_happened.html <comment><USER2> > Given a long enough time period, there is a nearly 100-percent chance an > asteroid large enough to destroy most life on Earth will impact our planet.

No worries. Since quantum mechanics dictates that, given enough time, anything can happen, we can also say that given a long enough time period, life will spontaneously reappear.

<comment><USER3> A more interesting question is : what kind of delay is worth worrying about?

I mean, for instance it is known that life will remain possible on Earth for about 500 million years, after which the Sun will be too bright. We don't seriously worry about it, since so many things can happen in half a billion years that it does not make much sense to try to plan or predict anything in such a timeframe.

Similarly, I personally don't worry about an impactor of 10 km diameter or so. Such an event is so rare that it's not likely to happen in several million years. To me that's still the kind of timeframe it does not make sense to worry about. I'm sure some people will disagree though.

What is the limit? 10,000 years? 1,000? 100?

<comment><USER4> Reminds me of one of my favorite jokes.

The professor is lecturing, and says, "The Sun will grow to be a red giant, destroying all life on Earth in about a billion years...."

A distracted student suddenly sits up and cries out, "Oh my god!"

The professor says, "What's wrong? A billion years is a long time, you know. Nothing to worry about."

The student is visibly relief. "Oh, great! I thought you said a million years!"

Personally, I'd say a few hundred years is probably the reasonable max, maybe a thousand years. Beyond that, technology will be so incomprehensibly different that the risks and challenges will be completely different as well. What would be a civilization-killing asteroid today might just be "ooh, tasty resources already on a convenient trajectory" tomorrow. Or "aw shucks, it's going to make a big splash in the gray goo."

<comment><USER5> I strongly suspect that our species is already on its way to inevitable extinction, and much more quickly than a few hundred years.

Barring some science fiction scenarios, fertility has dropped below replacement and is of a nature where it never truly rises. Children who grow up in a low-fertility environment learn behaviors and personality traits that encourage and enhance the already-low fertility, and any who are atypical and have above-replacement fertility themselves are never enough to get the global average back to (or above) replacement. Not only have we trained the kids to have few kids themselves, we've trained them to train those few kids of their own the same (but with extra!).

You can disagree, almost everyone does. But the implications of disagreement are bizarre, you must imagine some future where all 5th generation-only children wake up and say "I want 2.1 children" or 10 percent of those 5th generation children wake up and say "I want 20 children".

<comment><USER3> Long ago I read "essai de prospective demographique"[1] written by French demographers. They were raising the concerns you mention and were trying to warn the public of a coming "demographic winter". So your point of view is not rare.

That being said, even if a demographic winter would probably have very adverse consequences, as it is not clear how well the industrialized society would fare if the population was drastically reduced, I have hard time picturing how that could lead to the complete extinction of mankind.

There will always be pockets of population with high fertility, at the very least among highly religious communities. Even if as you suggest reproductive behavior is transmitted, that works both ways, and simple natural selection will always, in the end, favor the reproductive behavior that leads to increasing numbers.

Demographic winter is a serious concern, but I can't imagine it leading to a complete extinction.

1\. [https://books.google.fr/books/about/Essai_de_prospective_d%C...](https://books.google.fr/books/about/Essai_de_prospective_d%C3%A9mographique.html?id=lz9mPQAACAAJ&hl=fr)

<comment><USER5> > There will always be pockets of population with high fertility,

What makes you say that? Is there some underlying principle I've failed to consider?

> I have hard time picturing how that could lead to the complete extinction of > mankind.

It's simple math. Below-replacement fertility leads to extinction. More people die than are born, and since the original number is finite, the end number must be zero.

If you think that will not happen, what you're imagining is that the fertility rate will either rise at some point in the future, or at least plateau at whatever number leads to a stable population.

Why would they rise? If you grow up in a world where everyone around you has few children, then you grow up thinking/feeling that few children is the way things should be. You have few yourself. You might even have fewer than your parents' generation... but you'll rarely if ever have more. On average, you'll never have more.

Even in the fertility hot spots, this is true. They're above replacement fertility still, but each generation has a lower number. It's not exactly some sort of hidden trend, it's pretty basic.

> at the very least among highly religious communities.

It looks like the children of these communities break away from their religious upbringing at a higher rate than their pious siblings can replace with nephews and nieces. Especially in those religious communities that are unable to achieve a healthy economy... the FLDS communes that dispose of their sons, the ultraorthodox jews in their own self-imposed ghettos where there is little employment to be had.

> Even if as you suggest reproductive behavior is transmitted,

That's a little silly of me, actually. It must be the one behavior pattern that isn't transmissible.

> and simple natural selection will always, in the end, favor the reproductive > behavior

The natural universe has no favorites. It does not preclude this sort of extinction. Those few who buck this trend will be starved for adequate mates at some point, and will raise their own children in a culture that ostracizes fertility...

<comment><USER3> > What makes you say that? Is there some underlying principle I've failed to > consider?

Low fertility rates is a statistical rule. It's not absolute. There will always be people with high fertility, at the very least because they will be at the edge of the bell curve. Also again, look at religious communities, like the Amish. Those people do exist. Among seven billion human beings, you certainly can find a few millions that are very much willing to make babies. It only takes a small minority to ensure that the numbers will not go to zero.

> The natural universe has no favorites. It does not preclude this sort of > extinction.

The lineage of people who don't have children will simply disappear, leaving room for the lineage of people who do. It's as simple as that.

> Why would they rise?

The fertility rate will rise because people with low fertility rate will die with no children. What will remain will be the children of people with high fertility rate, and presumably those children will have a similar reproductive behavior than their parents. Low fertility reproductive behavior will be "naturally" filtered out.

> Those few who buck this trend will be starved for adequate mates at some > point, and will raise their own children in a culture that ostracizes > fertility...

Fertility declines, but it's quite a stretch to talk about ostracization of fertility. And ostracization is not prohibition.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> > With this in mind, we can view our future with some certainty. Something big > is going to smash into us, sooner or later, and probably sooner.

I started reading Cosmos by Carl Sagan a week ago and he discusses the Tunguska event for several pages. It's an amazing book that I wish I had studied long ago. Had I not read that book, this statement would have instilled an impending sense of doom into me, which does nothing but demoralize me. Now that I've read that book, I can now tell with certainty that this prophecy is utter crap. As this article mentions, the asteroids are being tracked, so, we most likely will know it before hand.

OTOH, here's an article from science alert

[http://www.sciencealert.com/next-month-an-asteroid-will- pass...](http://www.sciencealert.com/next-month-an-asteroid-will-pass-so- close-to-earth-that-we-could-see-it-in-the-sky)

> Before you freak out, there's no chance that the asteroid is going to smash > into us. The space agency is still determining its exact trajectory, but at > the closest estimate, it'll be 18,000 km (11,000 miles) away as it passes us > by - which would make it easily viewable with the help of a telescope. To > put that into perspective, that's roughly one-twentieth the distance from > Earth to the Moon. Alternatively, the asteroid could travel further afield, > and pass us at a distance of around 14 million km (9 million miles).

> The reason for the big difference in these two estimates is that NASA only > discovered this asteroid three years ago - hence the very-catchy name, > asteroid 2013 TX68 - and haven't had much time to observe it just yet.

</comment><comment><USER7> There is a great twitter feed, @AsteroidMisses, that tweets out based off a NASA monitoring dataset. Browsing it provides some perspective on just how many asteroids are whizzing around the Earth all the time.

[https://twitter.com/asteroidmisses](https://twitter.com/asteroidmisses)

</comment><comment><USER8> A fun science fiction read is "Singularity" by Bill DeSmedt; the premise is the Tunguska event being a mini-black hole - and it's caught inside the earth, eating it from the inside out.

<comment><USER5> David Brin did that too. Then an earth goddess showed up, some white guilt about overpopulation and coke can pull tabs.

Is the DeSmedt book better?

<comment> norea-armozel I would argue it's much better. I don't want to give away too much of the story but it has lots of questions about physics, politics, and alternate history. It's quite a good read.

</comment></comment></comment><comment><USER9> My favorite conspiracy theory on Tunguska:

[http://www.reformation.org/tesla-and- tunguska.html](http://www.reformation.org/tesla-and-tunguska.html)

<comment><USER10> The Tunguska+Tesla event is quite fascinating (the whole life of Tesla is actually).

People love to make up a lot of theories and conspiracies, it's nothing new.

What is particularly worrisome is that Tesla was a very brillant man and that he believed himself to have caused this. From the information that we have, it wasn't a marketing stunt by his entourage. The guy himself was working on this particle-beam for some time and claimed to have triggered it that night. He tried to sell the technology for more almost 3 decades.

Was this made up, was this a coincidence, or did it actually happen?

It's been over 100 years and no one is certain.

<comment><USER11> Extraordinary claims require extraordinary proof. "No one is certain" is not the right way to approach the possibility that Tesla actually caused Tunguska.

edit: clarified what "this" means

<comment><USER10> I don't think it's plausible that Tesla is responsable for it, but we can raise some questions surrounding the event.

Apparently there's still no scientific consensus (is that even possible?) on the Tunguska explosion and NASA seems to acknowledges that.

Taken from: [http://science.nasa.gov/science-news/science-at- nasa/2008/30...](http://science.nasa.gov/science-news/science-at- nasa/2008/30jun_tunguska/)

"A century later some still debate the cause and come up with different scenarios that could have caused the explosion," said Yeomans"

No remains of the asteroid, no impact crater and the claims from Tesla together is what is fascinating to me.

</comment></comment></comment></comment><comment><USER12> I'm curious if we could mine in areas where large asteroids impacted and gets lots of minerals. Why do asteroid mining if we already have a few in the ground?

<comment><USER13> I saw a documentary a couple of years back which looked into a correlation of former (likely/suspected) meteor impact sites and natural resources. It looked like lots of areas rich in interesting metals/minerals turned out to probably have been hit by meteors in the past.

So in a way, we are doing that already (at least if that documentary was not totally bogus).

<comment><USER14> New evidence for that: [http://www.bbc.com/news/science- environment-14827624](http://www.bbc.com/news/science-environment-14827624)

</comment></comment></comment><comment><USER15> I read an entire book about the Tunguska explosion when I was in junior high, but it's interesting that astronomers now think an event like this could happen every 300 years.

<comment><USER13> One interesting detail I found, I think, on Wikipedia, is that if the meteor had hit about four hours later, due to Earth's rotation, it would have roughly hit Saint Petersburg.

If such events happen so frequently, we're pretty lucky so far. Given that much of Earth is covered in water, I could imagine a lot of these simply hit the ocean, but I don't know what would happen if it hit close to the coast.

<comment> saiya-jin a simple hit of ocean might be more devastating than hitting uninhabited parts of taiga. think about massive tsunami (at least that's what I would expect, depending on the impact force of course)

<comment><USER16> water is very dampening. tsunamis are from sustained force

<comment><USER17> It's literally wet! You'll get dampened indeed.

Tsunamis are generated by water displacement from e.g. underwater seismic activity or a massive landslide. Wind-driven waves or tides would be driven by sustained forces.

Whether or not an asteroid can/has cause(d) a tsunami I don't know.

<comment><USER18> A sufficiently energetic meteor strike will cause a high enough amplitude wave to qualify as tsunamis (and which therefore would produce destructive effects onshore).

Exact modelling is tricky, but that sort of thing appeals to some geophysicists.

Funny headlines, serious research:

[http://news.ucsc.edu/2003/05/355.html](http://news.ucsc.edu/2003/05/355.html) [http://www.livescience.com/49298-asteroids-causing- tsunamis....](http://www.livescience.com/49298-asteroids-causing- tsunamis.html)

</comment></comment></comment></comment></comment></comment><comment><USER19> The scaling with meteor size is impressive.

A 100 m object will flatten some trees in Siberia.

A 10 000 m object will kill 75% percent of all species on the planet (the KT event).

<comment><USER20> The problem with the latter is that it will cause a nuclear winter. So that 75% will not die instantly but in 2-3 years after the impact. Add an order of magnitude or even half of that and then you have an extinction level event. It could kill organisms even at microbe level.

<comment><USER21> Ok simple... figure out what will disperse all the ash to prevent the nuclear winter!

Lets start testing this stuff now... may also solve the greenhouse gas problem.

</comment></comment></comment><comment><USER22> Here's a fantastic simulation of a much bigger impact:

      https://www.youtube.com/watch?v=zc4HL_-VT2Y

<comment><USER23> A few questions/comments:

* What is the "4 billion years ago impact" that is refered in the video? At first I thought it was the Theia impact, but the sizes and speeds don't quite match, and the simulation doesn't result in a second moon.

* It also mentions that it has happened 6 times. The only impact large enough I can remember of the top of my head that sort of matches that scale would be the canadian impact basin. A quick search on wikipedia tossed me to this list [0] but everything there seems to be on a different scale than what's described in the video. Are those impacts mentioned in the full program?

* It was recently reported that an expedition drilling in a part of the ocean where the crust is thin had found microbes near the magma, but I can't find any link. Given that it has been theorized even Venus may hold life in it's upper atmosphere [1], my guess would bethat, life is far more resilient than we imagine it to be.

[0] [https://en.wikipedia.org/wiki/List_of_impact_craters_on_Eart...](https://en.wikipedia.org/wiki/List_of_impact_craters_on_Earth)

[1] [http://web.archive.org/web/20110807004311/http://gltrs.grc.n...](http://web.archive.org/web/20110807004311/http://gltrs.grc.nasa.gov/reports/2003/TM-2003-212310.pdf)</comment></comment>


Let the Fountain Pens Flow - <AUTHOR> https://www.nytimes.com/2018/12/26/style/fountain-pens.html <comment><USER2> I started using fountain pens a couple of years ago, and still do for my daily writing.

I write rather a lot; I don't bring my laptop into meetings unless I need to. Combine that with my handwriting being relatively neat, small, and stylized, and I needed something with a sufficiently fine nib, and ink that would flow well through it.

It turned into a fascinating optimization problem, during which I ended up down the rabbit hole of nib sizing (European nibs tend to run wider than Japanese nibs), notebook paper (there are plenty of good notebooks that are fountain-pen friendly, and that Moleskine notebooks are both comparatively expensive and the paper just isn't great), and different types of ink (which brands run "wet" or "dry", etc.)... and all of this is before getting into eyedropper-conversions, nib repair, and all of the other craft-related things one can get into.

I started with (and still have) a Pilot Metropolitan and a Platinum Preppy that still see use, although I've gone over to a Kaweco Special FP and a Pilot Vanishing Point (both with extra-fine nibs) for daily writers.

The current "daily writer" tuples are:

1) Pilot Vanishing Point (extra-fine nib), Pilot black cartridge ink.

2) Kaweco Special FP (extra-fine nib), Faber-Castell Carbon Black ink.

...preferred notebook is the Kokuyo Campus High Grade MIO notebook (A5 paper, 80 sheets, ~$6.50 each).

That all being said, I still use ballpoint pens on airplanes; the Pentel BK77 Superb (fine point, black) works just fine.

<comment><USER3> This is why I won't let myself get started on fountain pens. I tend to go down the rabbit hole _hard_ when I pick up a new hobby, and fountain pens have always seemed like such an enticing rabbit hole to dive into!

Three months into the hobby I'd probably have two desk drawers full of pen paraphernalia and a credit card bill full of shame! Not that other pen freaks do this. I just know I would.

(and I'm left-handed....)

<comment><USER4> Sounds like you'd fit in just right with the others at r/fountainpens

<comment><USER3> Ha, that's the problem, right?

I fit in with obsessive gear geeks a little _too_ well, and can't afford a new time- and money-suck of a hobby.

As somebody who enjoys playing games, managing to avoid the MMO craze entirely was a struggle and an achievement...

</comment></comment></comment></comment><comment><USER5> Not quite the same, but I've been getting into technical pens because normal pens don't work as well in my plotter. I've found a lot of different failure modes in all sorts of writing implements so far... Example output: [https://twitter.com/joshu/status/1074836822751010816](https://twitter.com/joshu/status/1074836822751010816)

<comment><USER6> Ohhhh! What pen is that? I'm actually a big fan of using sharpies in plotters (made some drawings like this: [http://blog.blhack.me/show?p=colorBook](http://blog.blhack.me/show?p=colorBook))

The problem is that they run out of ink very quickly. I've been looking for a more "pro" version of them, and it seems like your pens might be a good place to start!

<comment><USER5> I started with sharpies originally but they get exhausted very easily.

I am currently using Koh-I-Noor Rapidograph on Bristol Board paper from Strathmore or Canson

</comment></comment></comment><comment><USER7> I grew up in France, where schools don't allow you to use anything else but fountain pens.

They don't teach you how to use one - to me, it's always been the same thing as using a ball pen, except you trade the convenience (you have to change the ink cartridge) for practicality (you can erase the ink with special eraser) while keeping some style (it's still ink, not pencil, kept for drawing).

Getting a new pen felt weird at first, but just like a new pair of shoes, you end up accustomed to it.

So it's interesting to read about fountain pens in America, where people talk about having to "learn" how to write with a fountain pain. It's seen as such a special, luxury or just nerd thing, while in France, it's just something common nobody really pay attention to.

<comment><USER8> This also explains why Americans tend to doubt the usefulness of learning cursive writing: it is feels terrible and is quite slow when using ball point pens, but smooth and fast with a fountain pen.

<comment><USER9> > the usefulness of learning cursive writing

Honest question - What do you see about it as being useful? I was taught to write in cursive when I was younger but I honestly don't feel like it has ever been all that useful (especially given that most of my communication and writing is done on a computer/smartphone).

<comment><USER10> It's much faster when you learn it properly and write it with the proper instrument. Ball point pens are _awful_ for cursive, but when writing with a fountain pen you'll almost automatically switch back to cursive.

<comment><USER11> I've never used a fountain pen, how well do they work for lefties? I sometimes have problems smearing ballpoint ink with my palm, do fountain pens smear more, less, or about the same?

<comment><USER12> I'm a lefty and fountain pen smearing is an issue. Doubtless there are techniques and inks to optimize for quick drying better than I managed, so I'd encourage you to try and find out for yourself. It depends on how you're able to position your hand and I've only ever managed to write by dragging either all the time or inadvertently when trying to keep my palm raised. It's a shame because the pens and their output can be quite elegant.

</comment></comment></comment></comment></comment></comment><comment><USER13> I did my schooling in India where, in those days, they transitioned us from pencils to pens in grade 5. Most notably, we were never allowed to use ballpoint or even felt-tip pens, it always had to be a fountain pen. I have never lost my love of the fountain pen. I bought a Kaweco just a few months ago.

<comment><USER14> I remember being excited when I went into standard 4 because I could finally use a fountain pen. Then I went abroad for 4 years and when I came back, fountain pens were gone - history.

</comment></comment><comment><USER15> If you are like me - and yearn for the feel of ink, yet the convenience of a ballpoint..then do try using a rollerball.

The hack here is to use some very specific refills and use it inside your cool Rollerball.

For example I use a Signo 307 refill (which is smear, water and tamper proof and specially designed for anti-document signing fraud) inside my special edition Waterman.

The other super cool Rollerball refill is the Pentel Energel. That's as close to an ink pen experience you'll get.

<comment><USER16> I have a TWSBI and several Lamys, which are great, but the pen I buy and use in bulk is the Uniball UM-153S rollerball. All the fun of a fountain pen without the hassle of dealing with ink. It's the pen for notes and shopping lists. From my Amazon orders, I seem to buy a 12 box of them at least once a year.

To Mitsubishi Pencil Co (makers of the Uniball): please make a green ink version!

<comment><USER17> I just saw them in green yesterday (and a host of metallic inks) in a Coop supermarket, also available online: [https://www.amazon.de/Uni-Ball- UB-157-Tintenroller-Spitze-St...](https://www.amazon.de/Uni-Ball- UB-157-Tintenroller-Spitze- Stück/dp/B00HT78XYC/ref=mp_s_a_1_2?ie=UTF8&qid=1546171227&sr=8-2&pi=AC_SX236_SY340_QL65)

<comment><USER16> Yes I have this set too :-) However it's slightly different from the UM-153S, in particular the nibs are narrower and not quite so nice to write with. (I will admit I'm now being very picky indeed - all of these pens are far superior to biros).

</comment></comment></comment></comment><comment><USER18> You can get a Pilot Metropolitan from Amazon for about $14, and there are other fountain pens that are a little cheaper. It's not like you need to spend $120 to start trying.

I started maybe two years ago with a set of Pilot Varsity disposable fountain pens that I bought from Amazon for $9 or so. I liked the feeling so when one of them started to run low on ink I decided to buy a 'real' (non-disposable) fountain pen.

That was when I found the Metropolitan. If I'd known I could've bought a pen for so little I would've bought that instead of the disposable ones to start.

They're so much smoother to write with and don't require anywhere near as much pressure as a ball point pen. I've started thinking about improving my cursive because of playing with fountain pens.

If you do any writing at all, give it a try. I use mine at work for taking notes in meetings.

<comment><USER19> I like the reviews on [https://www.penaddict.com/top-5-pens/](https://www.penaddict.com/top-5-pens/) They have sections for different budgets etc. I have no connection to them, my handwriting is terrible. I just like the site :)

</comment></comment><comment><USER20> I used to write with a 0.2 Rotring in school in the seventies. It was not designed for this task, and worked poorly (not unrelated to my general lack of dexterity).

However, it had one supreme advantage over others: I kept my tiny 1/8th of hash wrapped in foil, in the tiny devo-like removable butt screw on it. A fatter nib might well gave worked better, but this one was mine...

</comment><comment><USER21> The aesthetic value of fountain pens is undeniable but for the left-handed amongst us who refuse to twist their writing hand into some bizarre contortion, the fountain pen will never be viable. My personal left-handed recollections of using fountain pens all involve smears of ink on the side of my hands and smudged lettering.

<comment><USER22> I'm left-handed and there are several techniques for writing left-handed with a fountain pen. They don't all involve twisting your writing hand into "some bizarre contortion".

I collect vintage fountain pens, mostly about a hundred years old with flexible nibs that allow for fancy copperplate calligraphy. These kinds of pens are very delicate and some of them are so sensitive that if you don't know what you're doing you can destroy them pretty easily. With a little bit of work and a little bit of practice I was able to learn to write with them the way they were intended.

If you had an interest in fountain pens, don't let something like this kill it. With a small amount of effort you can find a technique that works for you without being uncomfortable.

<comment><USER23> > I'm left-handed and there are several techniques for writing left-handed > with a fountain pen. They don't all involve twisting your writing hand into > "some bizarre contortion".

I'm just curious if you've ever tried the mirror script technique? I remember reading in Isaacson's biography that Da Vinci wrote everything in the mirror script not to code it but because that's how left-handed people were taught to write. I figure that it'd work just as well in modern days, though obviously not if you needed someone else to read it.

<comment><USER21> I tend to scrawl directly over the path of the text I'm writing. I'm aware of several writing techniques that I could adopt although I have to say that I've never even considered the mirror technique. I'm very surprised that they even bothered teaching an alternative method to left-handers to write during Da Vinci's era as I was always under the impression that, up until fairly recently, the strategy simply was to force people to write with their right hand regardless of their natural inclination.

<comment><USER23> I was under that impression as well, but Isaacson implied that that's a more _modern_ way, relatively speaking, at least when compared to Renaissance Florence. Which is partially why I was interested in seeing if you had tried it.

</comment></comment></comment></comment></comment><comment><USER24> I'm in my mid 30's and have been collecting fountain pens for a few years now. Not a a lot of vintage but I have a few rare limited editions and high end stuff not because of status or collectibility but because I love the materials and look and feel. To be honest, it's the tactility of it. Being all digital all the time makes me miss the closeness to the words when I'm actually writing with a pen and paper. And when you have this wonderful somewhat piece of art of pen and ink to write with it makes writing different - more emotive somehow. There are plenty of pens now that suit any particular style and budget which is great. It's a great hobby to be honest.

<comment><USER23> I'm about 10 years younger than you, and have always been interested in fountain pens, even before I started becoming more cynical about technology. Any advice on how to start collecting them? Or even just finding good ones to use?

<comment><USER25> Your best bet is probably the subreddit. It's extraordinarily active.

</comment></comment></comment><comment><USER26> Growing up in Malaysia, we students made the transition from mechanical pencils to using pens in high school. I pretty much hated ballpoint pens due to the increased force needed to make ink stay on paper (lots of fatigue when you write 700 word long essays). I grew up using Pilot G1 and G2 gel pens. I finally caved and bought myself a Pilot Kakuno fountain pen while I was back in the motherland a week ago. I doubt I can move back to ballpoint again, but still keep one in the travel backpack just in case I need it to fill up customs forms in the plane.

<comment><USER27> I like how chunky and oddly modern the Kakuno is. It even comes in a clear version and is easily converted.

</comment></comment><comment><USER28> Plus ça change…

 __ _In this coldly pixelated age, old-fashioned writing implements make a small but meaningful comeback_ __

I used to be sympathetic but am getting quite tired of this trope. Without having researched it, could it be that this started a few years after the introduction of the iPhone?

[1] H. Wallop. The return of the filofax. The Telegraph, Feb 25 2010.

[2] P. Paul. A paper calendar? it's 2011. New York Times, Jul 29 2011.

[3] L. Kellaway. Digital diaries are no match for our paper past. Financial Times, Aug 31 2014.

[4] A. Chemin. Handwriting vs typing: Is the pen still mightier than the keyboard? The Guardian, Dec 16 2014.

[5] C. Martin. Moleskine notebooks adapt to the digital world. New York Times, Apr 18 2015.

[6] The Economist. Schumpeter: On the cards. Mar 14 2015.

[7] N. Sovich. The handwritten to-do list makes a comeback. Wall Street Journal, Sep 08 2016.

[8] A. Birrane. Why paper is the real 'killer app'. BBC News, Jan 23 2017.

[9] K. Wong. The case for using a paper planner. New York Times, Jan 4 2018.

[10] ∞

I guess one factor is that the industry is fighting a rearguard battle and paying PR agencies to place this sort of article in popular media[+]. Admittedly, they got me: Before the introduction of the Pencil, I did indeed fall for it and buy a few high-priced "good" pens by the likes of Montblanc and Faber-Castell plus overpriced stationery.

But I'll be damned if it wasn't all this fucking nostalgia that got us into the current mess, even though there are so many good things happening. And it is nostalgia that is holding us back or slowing our speed forward, to a better world than the old, retrograde shit.

So yea, I tossed the pens, effectively. No use for paper anymore. Attachment to old shit, for oldness's sake, has become toxic in my mind in the last few years.

___________________________

[+] Something similar seems to be happening too in watches, after the popularization of smartwatches after 2015. I see a LOT, really a lot, of ads for watches in magazines and newspapers (which I consume mostly in PDF version of the print magazine, so no microtargeting going on there).

</comment><comment><USER29> This old article blames poor penmanship on ball point pens (rather than keyboards) and considers them a poor replacement for fountain pens.

[https://getpocket.com/explore/item/how-the-ballpoint-pen- kil...](https://getpocket.com/explore/item/how-the-ballpoint-pen-killed- cursive)

</comment><comment><USER30> In the UK I think every school child still learns to write with a fountain pen around the age of seven. There's one particular cheap plastic pen that everyone used to have that stationers sold in bulk. I had to do a sort of thesis about a topic I was interested in and hand-write it in a fountain pen to become a 'master scribe' or something like that - I did mine about special effects in film.

<comment><USER31> One of the many, many lies I was told at primary school: "You need to learn to use a fountain pen, because you have to use one at secondary school". _Nobody_ used a fountain pen at secondary school.

<comment><USER3> Similar to the lie I heard about computers from one particular teacher in high school: "You can't use a mouse, because nobody uses a mouse in the real world!"

This was in 1994 and it hadn't been true for quite some time!

(In her defense, WordPerfect 5.1 was a heck of a lot more productive with keyboard shortcuts, especially if you had the little "cheat sheet" to place atop the function key row on your keyboard, and of course developers and other engineers know the benefits of minimizing the need to remove one's hands from the keyboard as well)

<comment><USER25> Someone told my friend that they would be forced to use VIM at work as an IT requirement, at university in 2015.

Even if he was only using remote terminals I can't see how this is a sane thing to say to a class of students.

<comment><USER3> That's hilarious. Knowing how to us vi(m) is a valuable skill (and one I lack sadly) but you only really neeeeeeed to know if if your IT role involves working on random remote systems.

As a software developer that has never been an issue for me. I can think of only one or two times in my whole life I was working on some random server and didn't have pico/nano available. And even then I think I was just able to use sftp to edit it with my local editor of choice.

</comment></comment></comment></comment></comment><comment><USER32> I have a number of fine Jinhao pens, that I use for all my work related writing.

At around $3,inclusive of postage, they are a bargain.

Their nibs might need some adjusting. They also do a line of Montblanc clones...

I have had a few Lamys but prefer the Jinhaos.

<comment><USER33> I like the Jinhaos too. At the price, they are extremely cost-effective and they make really versatile sketching tools. Here's a quick drawing for fun:

[https://www.instagram.com/p/BSrsp2cgq-e/?utm_source=ig_share...](https://www.instagram.com/p/BSrsp2cgq-e/?utm_source=ig_share_sheet&igshid=1404236e72a9e)

</comment></comment><comment><USER34> Learning to write with a fountain pen is sort of like playing a violin but on a small scale. Presure, direction, speed, stroke, and technique all play a huge part.

</comment><comment><USER35> I always carry at least 2 fountain pens with me when travelling - even with the possible hazards of leaking etc. Just find writing with them is so much fun, plus - less fatiguing. Writing with a fountain pen means I don't grip the pen as hard and _have_ to use a lighter touch so as not to damage the tip. That leads to more writing time with less hand cramps and tiredness.

I just got some new Iroshizuku inks [0] for Christmas, and can't wait to try them out.

[0] - [https://www.gouletpens.com/collections/pilot- ink?limit=24&of...](https://www.gouletpens.com/collections/pilot- ink?limit=24&offset=24&slot=collections%2Fpilot-ink)

</comment><comment><USER36> I got given a mall voucher eight years ago and decided on a whim to get a Lamy Al-Star with it. I've been using it ever since as my daily pen. I keep a paper diary in an a5 notebook using it and have filled almost 10 volumes. In recent years I have de-emphasised verbose writing and started sketching small maps etc in it as well.

Nothing I do is particularly groundbreaking or interesting, but I like the exercise!

</comment><comment><USER37> When I was learning to draw years ago, I read in a book comparing every kind of pen, that steel nib + ink is incomparably the best for drawing. (Not a fountain pen, just a steel nib stuck into a wood or plastic holder) And indeed it is! Vary the stroke width as you go from super-thin to thick, (or change ink colour to whatever you like at any moment), or change between bendy and stiff nibs, there's nothing like it. Also they're cheap and last for many years.

When I was in high school in the 80s I never used a ball-point, but only Artline, with their weird fibrous tip that didn't last long. Then when Uniballs came along I used nothing else for many years, black and blue. Now I find most ball-points are fine for writing, they mostly have a rollerball feel compared to the ones a few decades ago. But for drawing, steel nibs.

</comment><comment><USER38> My calligraphy is awful, but I've dipped a toe in fountain pen related items to attempt get into a ritual of writing. It's been fun so far, the usage of fountain pens have improved my chicken scratch for sure. I've got the entry level starter kit of a Pilot Metropolitan and a Bullet Journal.

</comment><comment><USER39> One brand I found nice is the the Chinese make Jin Hao, which makes all-metal bodied pens, at quite low prices.

</comment><comment><USER40> > Packed around a table with notepads and test pens, the group, ethnically > diverse but mostly men, lacked the slick appearance you expect of customers > at a luxury boutique.

Why do we have to know the demographics? How is it pertinent info, and why is it bad that it was mostly men?

<comment><USER41> The demographics are the least of it. The whole article reeks of a kind of superficiality and condescension: "...who had the handsomeness of a 1950s young dad, thick hair like mink, broad shoulders, a warm handshake."

I do wish that when newspapers describe a trend, they would stop trying to write literature and simply provide the information. If I want more detail with off-topic asides, I'll subscribe to a magazine or read blog posts.

<comment><USER3> Honest question. How would one write about a trend/subculture/community/etc without... writing about the sorts of people who comprise it and the community itself? As somebody who's always been into pens but never taken the plunge into fountain pens, I found this to be the most interesting part of the article.

Sure, it could have been a simple list of links about places where one can buy pens or whatever. But I already have Google and a Reddit account for that.

If I'm reading an article in the NYT or some other publication, the bare minimum I'd expect would be for them to for them to bring some things to the table that I can't get from thirty seconds of Googling or looking for the most popular relevant subreddit.

<comment><USER41> I am totally on board with your point. Giving color to the feel of a community is indeed an important part of reporting. And I think in that context, the inclusion of demographics make sense despite OP's displeasure.

What I object to is the characterization of a single individual based on his looks ("Hair like mink"). Not only does it tell the reader nothing useful, it doesn't give any sense of the community being covered. It's just a superficial aside, which if removed from the article would not lessen the reader's understanding.

<comment><USER3> By all logical measures, what you say about those superficial descriptions is of course correct.

However illogical it may be, though: I enjoy reading them! Though in this case, perhaps the article would have been better served by a picture of this person (who's apparently a big deal in the pen world)

Certainly there is some threshold after which I'd consider those physical descriptions distracting. I'm not sure what that threshold is.

</comment></comment></comment></comment></comment><comment><USER42> As a keyboard jockey, you're liable to get RSI, as I did — as such, I've been using a fountain pen for nearly 20 years. You use much less pressure when writing, and it's great using a pen that you don't have to throw away.

My two Lamy 2000's have been going strong for many years. But even a cheap Lamy Safari can last just as long.

If you've never tried a fountain pen, strongly suggest you do.

</comment><comment><USER43> Pelikan Souveran and Diamine inks, highly recommended. I don't write as much as I used to, but it's always a pleasure. I also have a Lamy Safari and a Shaeffer Prelude with some different nib sizes and filled with contrasting inks, for variety.

</comment><comment><USER44> My terrible handwriting is my largest regret. I don't know why it turned out terrible. Maybe I did not pay enough attention how to hold the pen properly in school. I have a feeling I am too tense. Really hard to break that habit.

</comment><comment><USER45> I really like fountain pens, but I've ruined too much stuff with ink spills. Maybe I'm just clumsy.

Also I burn through legal pads as scrap paper and I imagine I would get bad bleeding on that paper.

<comment><USER46> If you like fountain pens enough to give them another shot, a couple suggestions:

> but I've ruined too much stuff with ink spills.

Try a pen with replaceable cartridges instead of an ink well. Pilot makes pens like this, and I'm sure other companies do as well.

> Also I burn through legal pads as scrap paper and I imagine I would get bad > bleeding on that paper.

Yep, legal pad paper is pretty much the worst thing ever for fountain pens. I won't recommend specific brands because everybody has different tastes on paper, but spend some time on /r/fountainpens and you'll get several dozen options for paper that works great with fountain pen ink.

<comment><USER45> I'll give it a thought. I'm not tied to legal paper but I do a lot of quick math and scratch work so I would like to have a disposable paper option.

</comment></comment></comment><comment><USER47> For the veterans. Can anyone make any ink recommendations for inks that don't bleed to the point of completely obscuring the text when the paper is later exposed to a little water?

<comment><USER48> Two of my favorite inks are waterproof: Noodler's Baystate Blue is gorgeous and removable only with bleach or _very_ hard scrubbing (filling a pen with it is something of a terrifying ritual); and Noodler's Warden series Bad Black Moccasin is everything-proof and the smoothest ink I've ever used.

<comment><USER47> Ha! I had not actually considered that an ink that is hard to get out of paper might be hard to get out of your skin as well!

</comment></comment></comment><comment><USER49> hmm. i noticed this trend about 5 years ago. Glad to see it hasn't peaked yet, fountain pens are great fun.

My calligraphy hand is trash, though — thankfully that's mostly irrelevant for the sort of writing i normally do!</comment>


Former FBI Director Predicts Russian Hackers Will Interfere with More Elections - <AUTHOR> https://www.nytimes.com/2017/06/10/us/politics/trump-comey-russia-fbi.html?_r=1 <comment><USER2> stop using shitty old technology for voting... jesus xrist is it that fucking hard to figure this shit out...</comment>