How Python is killing Lisp - <AUTHOR> http://ynniv.com/blog/2006/11/how-python-is-killing-lisp.html <comment><USER2> I wrote 2 Springer-Verlag Lisp books in ancient times, and have about 25 years of Lisp experience.

That said, Ruby has mostly replaced Lisp in my toolbox. When I do use a Lisp family language, it is most often Gambit-C Scheme to build small standalone executables - and sometimes Franz or SBCL Common Lisp.

BTW, I consider Python and Ruby to be fairly interchangable - use whichever you like best. Both are great languages with great libraries and supporting open source projects.

<comment><USER3> Mark, you're a polyglot. I would say for the last 20 years you have been a C++, then Java author more than a Lisp programmer.

The first C++ book I ever owned was yours, the one about artificial agents that had a sculpture on the cover, and that must have been 15 years ago.

If you're in the business of education, your "toolbox" is essentially whatever people need to learn. You wouldn't hear an English teacher in Korea with 25 years of experience saying she is done teaching English, because teaching Spanish is so much more easier. That doesn't make any sense. At the time you wrote the published Lisp books, it was the height of AI-bubble and people needed to learn Lisp and Prolog. Then you wrote an Smalltalk book (IIRC.) then C++, Java .. all dictated by what the public needed.

Btw, you still have the literary and expository prowess to teach today's hot technologies as well. But that doesn't say anything about Lisp, Prolog, Smalltalk, C++, or Java except that you are no longer in the business of teaching them.

And I mightly thank you for the Agents book, btw. I didn't know what I was doing and just typed in the code into Borland C++ 4.5. The diskette was missing when I bought it, and I am sure I tried to download the source code from the Addison-Wesley ftp site (it could have been a Prentice Hall book as well)

Cheers!

<comment><USER2> I must admit that I usually think that whatever projects that I happen to be working on are: most fun, most interesting, etc. Same comment applies to programming languages, tools, and frameworks. This is a reflection of a simple fact of life: whatever we think hard about and generally mull over, becomes very interesting.

</comment></comment></comment><comment><USER4> Three years old.

When this was written, there was no such thing as Clojure [1], and a number of now-essential CL libraries were just getting started.

Providing no new information, this article just invites needless soapboxing.

[1] Clojure is fast, free, trendy, inherently parallel, and fits seamlessly into the Java ecosystem. It's just an anecdote, but I notice less complaining about parentheses, too.

<comment><USER5> You are correct. Still I think it offers useful historical perspective.

<comment><USER4> Lisp already has too much historical perspective. That's one of the things people like about Clojure.

</comment></comment></comment><comment><USER6> Personally, it's the double learning curve of having to learn Lisp and Emacs. I understand the basic concepts of Lisp now, but could someone point me to a good introduction to learning Emacs, Slime, and Lisp all at once? Does Practical Common Lisp do that as well?

<comment><USER7> You don't have to learn Emacs. Also, Common Lisp isn't the only option. Try Scheme, this one: www.drscheme.org.

<comment><USER6> The thing with Emacs is that I feel like I am missing out on the full potential of developing in CL if I'm not using it. How true is that?

<comment><USER8> I don't think it has to be true, though they do go together well. Not all CL hackers use Emacs. You might consider trying the Lispworks IDE, or the Allegro IDE (on Windows) or the Clozure IDE (on Mac).

</comment></comment></comment></comment><comment><USER9> As a non-lisp programmer, what scares me away is the syntax. I don't think I could ever wrap my head around the (admittedly succinct) examples I see online, because it takes so much effort for me to figure out what's going on in even a few lines of code. Comparatively, I was able to understand what was going on in most python scripts before I knew the language. Is this something that just takes a while to get down? Or are some people just naturally prone to the syntax?

<comment><USER10> The reason this syntax scares you is simple: it's different.

At the very root, Python syntax is nearly identical to Java, C, etc.

The syntax of Haskell, OCaml, etc, is a deviation from that of Python, Java, etc, but not an incredibly significant one. Perhaps you may find that the syntax of these languages scares you but you think you could probably learn it after a bit of mind-wrangling.

Lisp, on the other hand, is old. It was developed over 10 years before even C came to being! So the syntax is completely different, and requires you to actually learn it instead of just assuming that your knowledge of other programming languages will pull you through.

In summary, it's not a fault in you. It's just that you are used to C-derived and influenced syntaxes, but not to Lisp; and the syntax of Lisp is different enough that you need to actually _learn_ it.

Here's a crash course:

      (f a b c) is the same as f(a,b,c).
      '(a b c) is kind of like ["a", "b", "c"].
      '(1 2 3) is just like [1,2,3]
      (defun x (a b c ...) ...) defines a function x(a,b,c).
      (+ 1 2 3) is just like +(1,2,3) = 1 + 2 + 3
      (setf x 5) is just like x = 5
      '(a b ,c) is just like ["a", "b", c]
      if L is equal to '(1 2 3), then
        `(10 20 ,@L) is like [10, 20, 1, 2, 3]

Now, to be honest, I just showed you nearly 100% of the 'syntax' Lisp has. The rest is already understanding the language (knowing how to def. functions, how to do loops, etc).

By the way, what you might find interesting is that I once showed this to a friend of mine who knew nothing about programming. I showed him how to write a basic program in Java (with a few subroutines and a loop), then how to do it in Lisp. He exclaimed, "Argh! If I can do it like this, then why do I need all those fancy weird words like public and void and what not and braces and... eugh!"

Sorry for that longish post, I hope you found it at least a bit informative. ;)

<comment><USER9> Very useful! I suppose I was wrong to say the syntax is confusing, because lisp is so syntactically minimalistic. But when I look through lisp code, I can't determine anything with respect to scope. Take, for example, the code in pg's A Plan for Spam: <http://www.paulgraham.com/spam.html>

(let ((prod (apply #'* probs))) (/ prod (+ prod (apply #'* (mapcar #'(lambda (x) (- 1 x)) probs)))))

It took me several minutes to weed through this code. Part of that is because I didn't know what, say, apply did, and had to look it up. That's not an issue because you have to do that when learning any new language. But I had to carefully inspect the source bottom-up and break it apart because I couldn't tell what the arguments are on each function call. An IDE that does block highlighting would help a lot, but even then it feels overwhelming, because it only helps me inspect the block that my mouse cursor is currently on.

I guess what I'm saying is, I feel as if the syntactical constructs in other languages are necessary for me to be able to quickly parse a language.

<comment><USER3> Paul Graham has a peculiar Lisp style which is NOT mainstream. He is succinct, clever, and usually performance-agnostic. He writes expository code like we write one-liners in the repl to quickly test something out.

That example you linked to is confusing because: 1) You don't know the syntax to read it out like a formula, and 2) he uses the names _prod_ and _probs_ which look the same and strain the mind of a newbie.

The way you read "hard" Lisp code, specially one in Graham's style is to read from the last line upwards. The tell-tale is the deep indentation, btw.

Start at the last line, which is the body of MAPCAR, you know mapcar is MAP which applies its first argument function to successive elements of its second-argument, which should be a list.

      (mapcar #'(lambda (x)
                   (- 1 x)) probs)

Make a mental note about the free variable, _probs_. You can recognize the function as the usual arithmetic step of converting integers to probability values between 0 and 1. The sharp-quote, #', is an archaic style and unnecessary, so let's wrap up these two lines into a function and change the names to be readable.

      (defun normalize-probabilities (probabilities)
        (mapcar (lambda (x)
                  (- 1 x))  probabilities))

Ok.

Look up further and notice the result of this function call, a list, is being reduced to an integer. APPLY applies its first argument, a function, to its second argument, a list. For example, (apply #'+ (list 1 2 3 4)) means sum of the first four digits. C programmers should find this familiar: (apply #'main argv)

Where MAPCAR returns a list, apply returns whatever its function argument is supposed to return. We know the function #'* takes a list of numbers and returns their product. So, the snippet is just multiplying the list of probabilities, or reducing to a scalar.

      (apply #'* (normalize-probabilities probs))

Then:

      (+ prod (apply #'* (normalize-probabilities probs)))

And here something called _prod_ is being added to our scalar. Hmmm.

Look up a bit and see where that's coming from. The nearest binding form for _prod_ is in the LET body on top. Looks very similar to something we have seen before. Another application of multiplication to the list named _probs_. This is not a Lisp issue, it's a Bayesian statistics or perhaps a PG issues. You continue reading the paper and discover his formula in English prose. Aha! :-)

You can move code around, tuck it into functions and do whatever you want with it. See if you recognize the code snippet now:

      (defun normalize-probabilities (probabilities)
        (mapcar (lambda (x)
      	    (- 1 x))  probabilities))

      (defun pg-foo-fomula (product)
        (/ product (+ product
      		(apply #'* (normalize-probabilities probs)))))

      (defun main ()
        (loop
         (let ((probabilities (eval (read))))
           (when (listp probabilities)
    	     (print (pg-foo-formula (apply #'* probabilities))))
           (princ "OK > "))))

Typically you don't do that; you don't make silly repls and you never ever write a MAIN or any other program entry function. You write libraries, that you use in other libraries, and you orchestrate them all via interactive use and deploy in a custom image.

<comment><USER9> You should write a book on practical lisp. I'd buy it!

</comment></comment></comment></comment></comment><comment><USER11> Python also wins because it's a living language, still changing, adapting and updating itself while Common Lisp died the day the ANSI standard was published and today is a zombie, even if it still smells fairly nice.

Now that comp.lang.lisp is utter crap, there isn't much of a community either except for #lisp, which as an outsider I find kind of intimidating and not a good place to ask for help. Actually, what lisp really needs is for Conrad Barski to clone himself 10x :)

<comment><USER5> Well, there is always Clojure, as another commenter mentioned. Its community is different (friendly and helpful) and so is the language (vibrant, modern and evolving).

</comment></comment><comment><USER12> I started learning scheme recently, and enjoyed it for a while, then went back to ruby. (I have been programming in Ruby for a few years now.)

If I want to prototype something quickly, I will use ruby. I think the modular way you can program in an oo language is another factor. It is easy to write a demo, and then add the class to a rails project. I tried to read about using modules, such as those used by gambit-c, but the mailing list replies were dense with jargon, which I found more of a barrier than the parentheses.

I found the scheme environment too fragmented and lacked a decent equivalent of rubygems. The lack of a non-emacs editor with nice indenting was a contributing influence.

Replace ruby with python and scheme with lisp above, to see the relevance.

</comment><comment><USER13> But ECMAScript is killing Python. The writing is on the wall.

<comment><USER13> Hello, (former) fellow python fans. ECMAScript, formerly known as JavaScript, is doing very well. So well Python developers started to show their concern for about 2 years. You could read it on PyPy blog and Python mailing lists.

The new ECMAScript VMs are getting faster and already beating Python's. And they are getting faster with plenty of room to improve. The language is cleaning up, with a major milestone reached a few days ago. They have the biggest installed base in the world and there are more developers. The language fits in precisely the same slot as Python.

The writing _is_ on the wall. Down-voting what you don't like doesn't make it go away and it should be very un-HN.

EDIT: Read again the name of the story title if you think _my_ post was flame- bait.

<comment><USER14> Well - this comment is quite interesting. The parent one looks like a one-line "meh" comment. I'm quite happy to downvote the original and upvote this one...

But is it really killing python? The language is basically the same (almost- dictionary based, easily extensible types / prototypes, etc.). There's a big difference though: afaik there's no real library for ecmascript that would integrate it with the os. There's simply no way to use ecmascript standalone on a typical system. ecmascript is good in places where you need an embedded scripting language, but lua is not enough. Unfortunately neither of them is useful as a general-purpose language right now. Once someone produces a serious repl-like environment and a set of sys / os / file libraries - it can compete with python.

<comment><USER5> I agree with the library argument and the GPL argument. And I agree that it is unfortunate these two languages (Lua and ECMAScript) do not have a complete standalone environment at this point.

I disagree with the downmod argument: the one-liner did not feel as a "meh" argument but a succinct reference to an easily (re)constructed (but more verbose) argument regarding ECMASCript versus Python similar to the original argument of Python versus Lisp. I think such succinct arguments are fine here (in fact, I have upmodded it to compensate for what I considered the undeserved negative score).

<comment><USER15> In what sense does Lua not have a standalone environment? That's news to me.

       $ lua
       Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio
       >

<comment><USER16> Same for javascript... I use the js console all the time. Thank you, spidermonkey.</comment></comment></comment></comment></comment></comment>


Seattle tops Boston as North America's No. 2 tech spot  - <AUTHOR> http://www.techflash.com/Seattle_moves_ahead_of_Boston_to_claim_nations_No_2_tech__46847702.html <comment><USER2> The full data that the article refers to is here: <http://www.milkeninstitute.org/nahightech/nahightech.taf>

</comment><comment><USER3> I moved to Seattle (well, Redmond) two weeks ago. What resources should I be hitting up to get involved in the startup scene?

<comment><USER4> You might try out Lunch 2.0. <http://www.seattlelunch20.com/>, or the Seattle DORKBOT scene <http://dorkbot.org/dorkbotsea/>

<comment><USER5> Dorkbot isn't super useful for startups, but it's great if you just want to meet a bunch of interesting nerds.

If you want startups, join the Seattle Tech Startups mailing list (Google it), and you'll have more than enough events and information. There's a monthly meeting, a weekly breakfast, pub crawls, and tons more.

</comment></comment></comment><comment><USER6> An amazing company called QL2 is based out of Seattle. It's not a startup though.</comment>


Ask HN: Is there a site like HN for content creators? - <AUTHOR>

<comment><USER2> You can try on Reddit. Select subreddit like [http://www.reddit.com/r/graphic_design](http://www.reddit.com/r/graphic_design) for example.

</comment><comment><USER3> [http://thetechblock.com](http://thetechblock.com) might be something you're interested in. (shameless plug)</comment>


Show HN: Funge++, a procedural Befunge-93 Extension - <AUTHOR>

So I got inspired today, and threw this together.
it's a procedural extension of the Befunge-93 language called Funge++
Linked, you'll find the open source C++ interpreter I made for it, FungePP. (you'll have to build from source, as I've only compiled and tested it for 64-bit Ubuntu 14.04 )
The key change is the addition of the gate control or 'H' which has the following behavior, "pop y, x, and d. move the PC to x,y with direction d%4 where 0=N,1=E,2=S,3=W"
With this addition, (essentially a goto) Fungoid programmers like myself can now implement the procedural programming paradigm. I've attached some sample Funge++ programs to both demonstrate the gate, and backwards compatability with Befunge-93
https://github.com/CzechsMix/FungePP <comment><USER2> Posts without URLs get penalized. You'd be better off posting this with a link to the page, then including your text as a first comment in the thread.

<comment><AUTHOR> I didn't know that, Thank you!</comment></comment>


Education Is All in Your Mind - <AUTHOR> http://www.nytimes.com/2009/02/08/opinion/08nisbett.html?pagewanted=all <comment><USER2> "Fortunately, stereotype threat for blacks and other minorities can be reduced in many ways. Just telling students that their intelligence is under their own control improves their effort on school work and performance."

More generally, teaching children about "growth mindset" rather than "fixed mindset" significantly improves their performance.

[http://www.stanfordalumni.org/news/magazine/2007/marapr/feat...](http://www.stanfordalumni.org/news/magazine/2007/marapr/features/dweck.html)

<comment><USER3> The results of one of the studies in that article has been stuck in my head for the year or so since I read it and has definitely made an impact in my life. The idea that just splitting up kids in a class and praising them either for innate intelligence or hard work could yield such drastic differences both in test results and attitude was a real eye-opener. And made me reframe some of the "gifted" education I'd had in my formative years and whether it was more about making kids feel special than rewarding them for hard work.

</comment></comment><comment><USER4> This is an analysis of various studies that all point in the same direction: demonstrating how minorities' negative expectations can damage their performance and how simple interventions can largely erase that damage.

Of relevance to all of us involved in challenging careers like hacking is the impact that we may have on our own futures when we release ourselves from doubts about our own potentials in demanding, competitive circumstances.

</comment><comment><USER5> linking funding to performance? I seriously doubt a government agency will consider such a wildly logical suggestion.</comment>


Show HN: Private Dart Repository Service from Cloudsmith - <AUTHOR> https://cloudsmith.io/l/dart-repository/ <comment><AUTHOR> Just FYI - We've released the world's first private DART repository service.

Free to trial, and Free for Open-Source projects forever!

I would absolutely love any feedback at all (positive or negative!) and I'm happy to answer anyone's questions about this (or any of the other 18 package formats that we support!) Please do give it a try and let us know what we are missing / can improve / are doing well.

Accompanying Blog Post: [https://blog.cloudsmith.io/2020/02/03/worlds-first- private-d...](https://blog.cloudsmith.io/2020/02/03/worlds-first-private-dart- repository-service-w-cloudsmith/)</comment>


IETester is a free web browser that allows you to have the rendering and javascript engines of IE - <AUTHOR> http://www.my-debugbar.com/wiki/IETester/HomePage

<comment><USER2> It only lets me launch IE 5.5 and IE 7 instances on 64-bit Vista. It's also not independent from existing IE settings (from registry), so if your IE is locked down, this will be locked down too.

It would nice to run each version of IE with application-level virtualization, where each has its own fake registry to mess with.

<comment><USER3> I just run a copy of XP inside VirtualBox to test things in IE. It's not application level virtualization, but I definitely don't care what happens to the registry, as I can just swap in a fresh disk image whenever I want.

<comment><USER4> I love VirtualBox, but it's takes up a lot of space to keep several XP images on my notebook. The fact that this lets you test in IE5.5 through IE8 on a single image is a nice win, IMHO.

<comment><USER5> Co-linux should have a smaller footprint. Then run ie4linux on that.</comment></comment></comment></comment>


Why Top Posting Has Won (2018) - <AUTHOR> https://www.solipsys.co.uk/new/WhyTopPostingHasWon.html <comment><USER2> The comments here seem to be divided between two groups:

1\. Those who were net denizens pre-Outlook, who grew up with sophisticated mail and news clients that properly threaded discussions, along with strong cultural norms to reply inline, _trim quoted messages_ , and keep signatures short.

2\. Those whose first experiences with email were post-Outlook, for whom the norm has always been top-posting.

It's hardly surprising that each group regards the other with suspicion, but I think it's really telling that all the people who regard email as a bad tool for managing lengthy, in-depth discussions between multiple people seem to fall into the second camp.

<comment><USER3> I am in group 1 and this is exactly right.

Top posting limits the complexity of discussion that can be had to what can be kept in working memory of the people involved. Which makes it impossible to have a conversation that tracks multiple parallel ideas at once. I miss the days when that kind of conversation used to be common on Usenet. If you've never experienced it, there is no way to describe what it was like.

<comment><USER4> I think I'm misunderstanding what you're describing here. To me this sounds like what I go to Reddit or HN for. How does it differ?

<comment><USER3> The standard used to be that replies and the original content were mixed. This made it easy to reply to every point made by the previous person, and easy to see what was skipped.

As opposed to what happens here which is that when I go to reply to someone, I first read, form an understanding, and then reply to my understanding. It is extremely rare to find people going through what someone said point by point and agreeing or disagreeing with each bit.

If you've ever experienced that style of discussion, it is clearly superior for complex discussions. If you haven't experienced it, it is very hard to understand how it might possibly work.

(I often reply here by quoting several points in italics and replying separately to each. That is a strictly inferior to what used to happen, though, because they don't have a way to do the same back and keep straight what they said before, what I said in reply, and how they are correcting my reply.)

<comment><USER5> This is still a standard in a couple of blogs that I follow, when different bloggers have back and forths.

The comments of those blogs also tend to follow this style (especially if both bloggers end up in the same comment section)

</comment></comment></comment></comment></comment><comment><USER6> To make it worst, "outstanding" software such as outlook or gmail (and others, they're just examples) still don't know how to present threads properly (as in who replied to whom), a problem that has been solved for at least 30 years...

So not only you have to read all the replies from bottom to top but replies to different emails in the stack are just sorted by date so they also get presented out of order in the stack.

<comment><USER7> Gmail is bad in lots of ways but it is free. It's a case of "What do you want for nothing?".

Outlook OTOH is something that a business usually pays for. Someone should be able to walk into that business and do a presentation for something that just blows Outlook away. But that never happens, even these days when Microsoft is not the monopoly it used to be.

<comment><USER8> If only gmail was free. I made a mistake some years ago and accidentally dropped out of the "free" category. It now costs me US$12/month (along with whatever other gapps i want, mostly). No way to go back (without using a new email address; since I own my own domain, that's not happening).

<comment><USER9> If you use google as your registrar they will forward to gmail (or anywhere) for free.

<comment><USER8> I don't think fixes it. Once you fall into the pay-for-google hole, I don't think you can get out of it.

</comment></comment></comment></comment></comment><comment><USER10> Top posting has won because major e-mail clients (gmail) made it the default. When you hit reply, they add two newlines at the top and place your cursor there. You really have to go out of your way to bottom post.

<comment><USER11> I distinctly remember Outlook doing top-post by default (and making proper replies tedious) way before GMail existed. That's when top-posting invaded everything.

<comment><USER6> I kinda agree, corporate email clients made it worse.

Lotus Notes wasn't better in my memory and it was _THE_ corporate email platform back then in the 90's before Microsoft Exchange was a thing then Outlook at the end of the that decade.

</comment></comment></comment><comment><USER12> I was socialized in the early days of the Internet, were TOFU posting was nearly on the same level as a cardinal sin.

I didn't think much of it when I started doing correspondence with the corporate world: More than once when distilling emails and do inline quoting I've been accused of distorting the correspondence and should follow "proper" ettiquete.

People never questioned TOFU, they just took the default mode of a certain email client as gospel, as a law written in stone, the ultimate authority.

I've long given up. Text compresses well and all those redundant quotes are made short work of by even by the most naive Huffman tree coder.

</comment><comment> grey-area Top posting is also useful. It reverses the order of the stack of messages in the expectation that you've read the rest already and are more interested in the most recent. In many cases that's the correct assumption:

* Long email threads

* Long forum threads that people visit every few days to catch up.

HN has an interesting mix of top posting (new comments start at the top), and voting.

<comment><USER13> That's not really top posting. What I'm doing here, by putting the untrimmed quoted material I'm responding to below my response is essentially top posting (but I'm responding to your last sentence).

I can't think of a comment I've read on HN where material from the parent post was quoted in the way I'm doing now.

> Top posting is also useful. It reverses the order of the stack of messages > in the expectation that you've read the rest already and are more interested > in the most recent. In many cases that's the correct assumption:

>

> * Long email threads

>

> * Long forum threads that people visit every few days to catch up.

>

> HN has an interesting mix of top posting (new comments start at the top), > and voting.

</comment></comment><comment><USER14> What's worse is that almost no one prunes the quoted emails, so you end up with extraordinarily long emails with a bunch of useless quoted text, most of which are signatures and legal disclaimers, repeated endlessly.

I've given up on fighting the top posting fight and instead try to lead by example by pruning the quoted text so only relevant text is quoted.

<comment><USER15> What is irrelevant to one person is relevant to another. So by pruning down to what we think is important, we have removed context someone else added to the thread later may need. Long quoted sections of emails are ugly, but they do a great job of preserve the context for anyone to follow.

<comment><USER14> You make a good point about providing context to people added to the thread later, but it would still only provide partial context because people don't always reply to the most recent email in a thread.

Also it's quite common for multiple people in a thread to respond to the same email near simultaneously, or for people to reply to a message earlier in the timeline. This then creates branches in the message history. The conversation is then likely to settle again at some point on one of the branches and any recent additions to the CC list are still going to miss context.

Also at some time you have to consider that the needs of the many outweigh the needs of the few or the one. Is it really useful to have a 5 word email nested 15 quotes and 1000 lines deep when 80% of the quoted lines are just signatures and disclaimers? The signal to noise ratio is just too low for it to be useful. I've just pulled up an email from a customer today and their signature has 33 lines, 133 words, and 1100 characters AFTER the name and company name. It even includes the email address which is the same as the address they used to send the message.

I know that when I'm added to such a thread that I'll generally just make a phone call to a colleague to get up to date rather than try to make sense of everything. I personally don't have the patience for it.

The irony of the whole thing is that this is what passes for professional communication today. The groups of misfits, slackers, and stoners I hung out with on the BBS's of the 90's had better online communication skills than today's corporate world.

Anyway sorry for ranting, it's not directed at you, it's directed at the eternal september that most of us live in now. Your point about preserving context is a good one I hadn't considered but I think some pruning would go a long way towards making that context more accessible and useful.

<comment><USER15> I can certainly see your point, but in my experience of late, email communication is rarely used to host lively communication. It's killer in this role was IRC, Slack, Discord, and other real-time communication channels. It's not until this live communication has come to a head that email is used to preserve the decisions and forward them to leadership or outside companies.

So while some intelligent pruning may be of use, it's been made much less valuable over time. I've been added to a few lengthy email chains late in the process, and the lack of pruning was not even really noticeable.

<comment><USER13> > It's killer in this role was IRC, Slack, Discord, and other real-time > communication channels.

Yet, there isn't a single instant messaging client/platform that I know of that puts new messages at the top of the window instead of at the bottom.

I think the root of the problem is that people want to treat email as a chat client where only the few words or line at the top matter, and, conversely, people want to treat chat clients (i.e., Slack) like a discussion that needs threading where responses need to be associated with the text that it was in response to.

</comment></comment></comment></comment></comment><comment><USER16> I think the only reason why top posting exists at all is outlook and an "optimization" in exchange where the replied-to message is referenced (not copied).

Trying to reply in "proper" e-mail style in outlook wasn't really possible as anybody that tried to email lkml 20 years ago can attest.

</comment><comment><USER17> Top posting won because that's what makes sense to most of the world. You're having a conversation with someone. You want to open the latest email and see their response. You don't want to dig through all that other information.

I understand that there are a few oddball exceptions. For the vast, vast majority of email exchanges, top posting is more efficient.

<comment><USER18> Of course, decent mail clients should make it so that it doesn't matter either way…

<comment><USER19> That's an interesting, and non-trivial, suggestion.

I would love to see mail clients try to figure out, given several raw messages, what the flow of the conversation/thread is like, then offer a canonical representation of that conversation, with perhaps a focus on what a single message contributed to the whole. Or one of several representations, among which the user chooses. That would be quite neat - but like I said, it's not at all easy

<comment><AUTHOR> Yup, that's what my tool does. It wasn't easy, it doesn't always get it right, but it's pretty good, and makes complex email conversations usable, even when people top-post.

</comment></comment></comment></comment><comment><USER20> I've never really understood why so many geeks/nerds/techies complain about top posting. It's simply a stack instead of a FIFO.

<comment><USER21> Because you read top to bottom.

It is non-orthogonal to stop then scan up to the beginning of the reply and then read to the bottom again.

<comment><USER22> Top posting makes more sense if the frequency of messages is slow enough that people will have already read the previous messages, because you don't have to scroll past all the content you've seen. Where it fails is in a set of messages where you haven't seen everything else already.

Really, mail and messaging clients should have a way to track each message separately, and just give the user a choice about how they're displayed.

<comment><USER6> It's threading and the info is there: that's what Message-ID, References, In- Reply-To are for...

But not only top posting won but software made it worse by not displaying threading properly (I'm looking at you corporate outlook, that said gmail and others are the same).

</comment></comment></comment></comment><comment><USER18> Top posting is actually quite useful for context when you've been CC'd on a thread in the middle: you can go back through the previous mails that are embedded at the bottom of the email and reconstruct the chain in your head. And one you've done that, you can just recollapse the quoted content and it won't bother you again for the rest of the thread. (You're using a mail client that automatically collapses this kind of thing, right? I do hope that the complaints about "visual noise" aren't just people pining for this feature…)

<comment><USER13> > Top posting is actually quite useful for context when you've been CC'd on a > thread in the middle: you can go back through the previous mails that are > embedded at the bottom of the email and reconstruct the chain in your head.

That's a lot of work for someone to establish context, and they have to start at the bottom to read the original message, scroll up to find the second message, read through that, and repeat the process.

What's useful is to provide a summary of what was discussed and then follow up from there. In either case, having some type of forum or newsgroup would be far better in this scenario because anyone subscribed could read any message even if they weren't part of the original discussion.

<comment><USER18> Unfortunately, I don't always have the luxury of getting someone to relay an accurate and detailed summary of the thread so far when I get added mid-way. Reading quoted, often heavily mangled content isn't pleasant but it's a very good way to establish this context, and in lieu of the actual messages I consider it the next best option. And since you can't predict who or where a message might be forwarded, I think it's good to do this consistently so that it's available as a fallback by default.

</comment></comment></comment><comment> blaser-waffle I don't know why this matters so much. Most, maybe 95%, of my emails don't need something in-line or require quotes from other emails. And the handful of times they do then chances are it's going to be a long, complicated email anyway, so I'm cool doing it by hand.

<comment><USER23> I've had a slightly buggy mail setup that can't quote email sent from Outlook for a few months now. So what I've done for shorter replies is simply delete the entire fudged quote and write my response.

It works all the time, except for exceptionally complicated cases that wouldn't be helped by quoting a random messy email thread anyway.

</comment></comment><comment><USER24> This post exhibits a lot of the problems with long emails in that it doesn't get straight to the point. People don't have time to read your prose when they simply want the relevant data. Get to the point immediately.

Top posting won because of M$ Exchange.

</comment><comment><USER25> As soon as an email thread has turned into a discussion/back-and-forth and there are more than two participants _you have already lost_. The forum was then wrong to begin with. When you have at most 2 people communicating or at most 2 replies, then there is no chronology to the email. If an email thread starts having more than 3 replices or more than 2 active participants then _abandon_ it, and move to a proper mode of group communictation (forum, chat, voice, ...).

The reason so many people in specific tech circles are mad about top posting I think is because specific tech circles still do text based mailing lists as a form of persistent group communication.

<comment><USER13> > The reason so many people in specific tech circles are mad about top posting > I think is because specific tech circles still do text based mailing lists > as a form of persistent group communication.

Discussions on mailing lists are typically in depth and not just one line responses to one line questions, so top-posting would make it much more difficult to engage in those discussions.

Though, I've never really understood the use of a mailing list over a private moderated newsgroup that people could subscribe to.

<comment><USER25> What does a newsgroup offer in 2020 that a discourse instance or similar doesn't? It feels like text from the same category as the text-only mailing list.

<comment><USER13> The ability to use your own client. For instance, I can use Thunderbird. Another person can use XNews. A third person could use gnus. Many news clients have sophisticated client side filtering capabilities.

I haven't used discord, but based on some brief google searches, these appear to be features that discord lacks that news clients have.

<comment><USER25> > The ability to use your own client.

You will always have limitations. I think it's safe to say that most people consider "no images" or "no UTF" to be much more limiting than "no custom clients" or "no terminal support".

Btw I said "discourse" not "discord" (but both are useful for communication - the latter is a realtime voice app popular among gamers. The former is likely the best forum implementation around).

<comment><USER13> > I think it's safe to say that most people consider "no images"

These can be done via attachments depending on the rules of the newsgroup

> or "no UTF"

That's entirely a client-side issue. Thunderbird, for example, has no problem rendering UTF-8 characters in email or newsgroups.

> Btw I said "discourse" not "discord"

Ah, I thought you had made a typo. I have not heard of discourse, and it doesn't appear that you can use it in offline mode (like you could with an email/news client. As for the other features like images, url embedding, etc., they are features I don't personally find very useful and they also detract from the actual content (based on my experience using Slack). In fact, I disable all those features in Slack so that I don't have to deal with constant visual distraction of animated gifs or emojis. Looking at discourse.ubuntu.com, it doesn't make it obvious who replied to whom via a nested threaded structure like you would see here on HN or on reddit, and there's no thread overview pane where you can jump to a post you're interested in.

It also seems to rely on central based moderation rather than allowing for client side moderation. That is, moderation that's entirely within the client's control rather than relying on an administrator.

> The former is likely the best forum implementation around).

Yet, sites like HN or reddit that don't normally show images, animated emojis or show URL previews work well for their intended audience. But even those websites make it difficult to see new posts since you last viewed the thread and jump to posts you're interested in.

</comment></comment></comment></comment></comment></comment><comment><USER26> The simple truth is that inline replying represents a massive cognitive load. Not just for the writer but for all the recipients.

Not only does the email become very verbose with a lot of repeated paragraphs and psychedelic colors, it's also often content that you are already familiar with and don't really need to read again.

Most email threads take place over a 24-48 hours period, which is enough for most people to have the context fresh in their mind, so top posting is a net gain for everyone.

What is a very bad habit, though, is people not trimming long threads, especially when they forward such discussions.

<comment><USER27> The "psychedelic colours" are a really unfortunate consequence of the fact that Outlook is still incapable of producing sanely quoted text after about 20 years. It's extremely frustrating considering that most email clients did it right back then. Even Gmail manages to get it mostly right most of the time.

</comment></comment><comment><USER28> I quite like this article, but I disagree with the conclusion, although my opinion is actually in the body:

"... And when the thread is short, possibly just a single email, it's easy for the receiver to see the context, and to know to what you are replying."

So, in short threads, top posting is better for both the writer and reader. I think calling it "procrastination" is infair -- procrastination is about delaying or avoid tasks which will have to be done. Top posting is "agile" \-- why put extra work into something now, which 98% of the time will never been needed?

<comment><AUTHOR> I think you're missing the important point.

When the thread is short, possibly just a single email, it doesn't matter what you do. In-line, top-, and bottom-posting all cost about the same.

I disagree when you say:

> _in short threads, top posting is better for both the writer and reader._

In short threads I still want to read top to bottom, I still want to see the context before the reply.

In a short thread, in-line posting (provided your client supports it) is (a) the same cost, and (b) is future-proofing your thread.

It's in-line posting that's "agile", not top-posting.

<comment><USER28> I tend to read email threads in order, so I already know what the previous message was. I don't want to have to scan past it to find the new content. If I do need to see the previous message, it is there below the new content.

I think this is just a disagreement on reading order -- I want to see the reply before the context, you want to see the context before the reply. Unfortunately, without email gaining more structure/context, we can't both be made happy.

<comment><AUTHOR> I usually have so many email discussions going on there's no way I can keep the context in my head. I come to each email without a context, so I need to come up to speed.

And each email can have several points running in parallel, so I get a collection of comments, none of which mean anything without their context, so I need to go hunting.

Top-posting kills my productivity.

With in-line replies, especially with colour coding (as most email clients now do) you can skim down to find the reply first, if that's what you refer. It seems to me that in-line replies would serve you just as well as they serve me.

But you're certainly right that without more structure, email in it's current form can't make both of us happy, and for me, it's simply vile.

<comment><USER28> Please take what I'm about to say as a (hopefully) interesting discussion, and not an attack. We've never met in real life, so neither of us knows what's in the other's head!

I feel like, based on reading your article, you believe that anyone who likes top-posting is just lazy or confused about what's best -- for example "It seems to me that in-line replies would serve you just as well as they serve me."

So, you seem convinced that what I want makes your life miserable (not denying that!), but what you want would make me, and all the other top posters in the world (which, as you say, is most email writers and also email program creators) basically as happy as we are now.

This isn't true. I like top-posting on most threads. I don't like in-line. In- line tends to encourage (in my experience) massive posts, where people end up having several related conversations in parallel, and also huge point-by-point rebuttals.

I'm NOT saying you have to "join us", and I'd certainly be happy with a new answer which makes us all happy! But don't assume we just need to be "educated" against top-posting.

<comment><USER29> Going off a complete tangent (and this is why I love tree-shaped forums vs. linear forums - I can do that without disrupting the rest of the discussion):

> _In-line tends to encourage (in my experience) massive posts, where people > end up having several related conversations in parallel, and also huge > point-by-point rebuttals._

I never understood why that's seen as a negative. What's the point of having a conversation if longer messages and point-by-point discussions are discouraged? The opposite of that is a shallow conversation that doesn't explore the discussed space. I like when people inline-reply to my larger e-mails, because this way I know what they're referring to, and don't have to parse out their attempts at describing in words which parts of an e-mail they're commenting on.

<comment><USER28> It's because, on mailing lists, I find those kinds of conversations can often have a low signal/noise ratio. Not always, but sometimes you end up with massive threads that go on for weeks, with increasingly huge messages.

That's not to say that always happens of course.

<comment><AUTHOR> Agreed, but that's where judicious blocking and muting become essential, possibly on a discussion-by-discussion basis.

That will always be the case in a free-for-all such as mailing lists or forums, rather than a discussion between colleagues/friends.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER30> From my observations, top posting sometimes gives misguided sense of security, particularly when they are not seeing the whole picture of how E-mail works.

I've seen couple of people in the past with habit of keeping just the most recent message, because they think the "history is all there" and want declutter their inbox.

It's a bad practice, but they just couldn't see the possibility someone changing the history. They had hard time when someone decided to prune the old portions, or reply inline without leaving the whole text intact.

</comment><comment><USER31> Can we also talk about CR vs LF and HTML vs plain emails? They're equally relevant discussions and totally not things that have been settled for ages by everyone but the obsessed.

<comment><USER13> > Can we also talk about CR vs LF

Based on my understanding of the SMTP protocol, lines in emails should be terminated with CRLF.

> HTML vs plain emails

Thunderbird has a nice setting (View -> Message Body As -> Plain Text) that takes HTML emails and renders them as plain text (complete with the / /, * *, and _ _ for italicized, bold, and underlined text respectively).

Personally, I wish they would remove support for rendering HTML in emails and just display plain text. URLs would have to be manually copied and pasted into a web browser. That would make phishing emails far less effective.

</comment></comment><comment><USER32> Gmail is why, right? It's not because of any feature of top posting or bottom posting, it's because a generation of nerds grew up using Gmail. (It also mangles threading headers, or did the last time I had the misfortune of long threads with Gmail users.)

</comment><comment><USER33> I do not do top posting myself. For email, I am using Heirloom-mailx which only does bottom posting (if I can get external editor to work, then I can make it doing properly).

For NNTP (I wrote my own client in 2019), I always use interleaved posting, deleting the part of the message which is not relevant and adding the reply after the quoted part which is being replied to. For web forums I also do the same (but would prefer they switch to NNTP instead, or to support both which may be better).

I don't use HTML email, and I don't like HTML email. Plain text is better.

</comment><comment><USER34> The work involved in an effective inline reply is to snip out the irrelevant quote yet still leave enough context for what you were replying to.

An inline reply with a large amount of irrelevant quotes so that people have to hunt down your reply is bad.

An email client that does not keep a thread and people can't effectively trace back old posts to recall context is bad.

A default rich text preference is bad. Email client can easily apply some heuristics or honoring something mark-down-like, but the base need be always in plain text.

<comment><USER35> > A default rich text preference is bad. Email client can easily apply some > heuristics or honoring something mark-down-like, but the base need be always > in plain text.

I'm a grey beard, using email since the early 1990s. All these years later, I've realized HTML email is _better in every way_ than plain-text email.

Basically, you get every "feature" of plain-text plus important _semantic_ additions like hierarchical lists, <strong>, <em>, <h#>, <figure>, <blockquote> etc. that improve clarity of communication drastically.

HTML email can and should be about much more than fonts and colors. A forum like LKML is basically useless without these, but they insist on old-Skool plain text which makes readability suffer greatly.

</comment></comment><comment><USER36> Do E-Mails have an identifier that tells what was replied to ? I don't think there is but if there existed such a marker then you build a very nice tree structure.

<comment><USER37> Yes, that's the In-Reply-To header. It contains the unique message identifier from the Message-ID field of the email you're replying to.

See also [https://tools.ietf.org/html/rfc822](https://tools.ietf.org/html/rfc822) sections 4.6.1 and 4.6.2

<comment><USER38> And that's what mature email clients use to present thread trees, to help make sense out of email conversations. Gmail, etc., are not mature email clients.

<comment><USER39> Observe, furthermore, that References: was in part designed so that a MUA/NUA could reconstruct a tree even if some intermediate messages were missing.

</comment></comment></comment></comment><comment><USER40> What is top posting? Couldn't find a definition in the article and seems that everyone here in the comments already knows what it means.

<comment><USER41> Historically, the facetious reply would be to give this example:

A: Because it breaks the flow of information.

Q: Why is it frowned upon?

A: Putting replies above the original post.

Q: What is top posting?

</comment></comment><comment><USER19> > Some email clients make it nearly impossible to use in-line replies, and > people just won't do it.

Indeed. This is somewhat annoying in Thunderbird and nearly impossible in Outlook.

> People won't do work unless it's rewarding, or compulsory. ... I'm working > on that.

Has the author been working on that? I wonder. Two years have passed, after all.

<comment><AUTHOR> Yes, I have, and I now have a system I use privately within a circle of friends, and with some of my company business. Works a treat, and allows complex discussions that branch, merge, and more.

I now also have an experimental tool that imports from email threads, and re- exports back to standard email formats.

It will never be widely adopted. It's unlikely to reach a level of maturity that would make it acceptable to the muggles, but for us it is incredibly productive.

<comment><USER19> Have you considered integrating this system into, say, Thunderbird, or some other FOSS GUI mail client?

<comment><AUTHOR> I don't have the skills, and I don't have the inclination to acquire the skills. I have more work than I have time to complete, and taking on the task of learning everything I'd need to learn to then integrate this into someone else's project is just not feasible.

Currently the tool works brilliantly, but it's not robust, and it's certainly not foolproof. It's not even average-person-proof. It's insufficiently mature, and if I _were_ to try to integrate it with another mail tool, I wouldn't start from here ... it would need a complete re-write.

So yes, I have considered it, and with my background, skill-set, and availability, it's not going to happen.

</comment></comment></comment></comment><comment><USER42> The site is down for me, here[0] is an archived copy.

[0]: [https://web.archive.org/web/20200407075946/https://www.solip...](https://web.archive.org/web/20200407075946/https://www.solipsys.co.uk/new/WhyTopPostingHasWon.html?td07hn2)

<comment><AUTHOR> My ISP is currently investigating ...

 _Edit:_ Now fixed ... by coincidence there was a DDOS on the machine hosting my site. Should now be OK.

</comment></comment><comment><USER43> Asynchronous multi party messaging is a tangled mess.

Top posting is an emergent phenomenon from using the wrong tool (e-mail) for the job.

Basically when you reply to all, you acknowledged which information you have received from and read, and you communicate that to the other participants by transmitting your whole history of your current view of the thread, leaving users the ability to manually do some Paxos if they want to be able to agree on a consistent shared view.

Email clients have to recourse to some black magic to merge the threads correctly. If you ever have tried to use email to constitute list of players for a football game where each participant add its name to the list you will quickly find that there are some errors and you got either some missing players or some extra. Because when two people answer simultaneously, the merging is not trivial to do and depends on the mail client.

There are also some issues with spam filters or max number of people in conversation which sometimes exclude some people from the conversation. So very quickly history of views can't be merged, and of course it fails silently.

There are also probably some accidentally quadratic problems there, but storage is cheap.

</comment><comment><USER44> Is there an email spec that actually hashes posts, and allows new emails to just refer to the hash it is responding to, and the thread hash-graph. And perhaps as some metadata, some former posts w/ hashes.

<comment><USER45> Message-ID, In-Reply-To and References headers provides this.

Hashing a post is a hard problem, because an MTA can change the encoding of the message in all kinds of ways, so you'd first need to specify a canonical form for the message. But it's also unnecessary if you can trust the sending mail server to add a Message-ID field that is unique (which it can do however it wants to, and then ensure global uniqueness by appending its hostname; note that a client needs to take a _bit_ of care because of course a broken server may not enforce uniqueness).

A harder to solve problem is that it takes very few broken mail clients participating in a thread before it causes a mess.

<comment><USER44> The thing about a hash though, is _any_ client could create the hash, or verify it. You could even have consensus ala blockchain type thing.

I guess if we use message-id, then a signed message from the mailserver with the message id would do. But signed messages still usually contain a hash of the thing they sign, no?

<comment><USER45> You could rely on DKIM signatures for that, potentially.

But lots of systems don't generate DKIM signatures. All systems generate message id's.

Using message-id's for threading has literally worked for decades _when the clients supports the relevant headers_. It's not the message-id that is the problem, but lack of support for the headers carrying them.

</comment></comment></comment></comment><comment><USER46> On web forums, bottom posting has obviously won. I can't remember ever seeing someone top post on reddit.

OTOH twitter appears to have top posting baked into its UI.

</comment><comment><USER19> Actually, when you think about it, HN comments are basically a big pile of top-post replies, don't you think?

(except for those people who quote a few lines prepended with > symbols)

<comment><AUTHOR> No, they're bottom-post replies, without the quoting of context (with a few exceptions). So you can read from top to bottom without having to bounce up'n'down trying to find the thread.

<comment><USER19> You see the replies first and foremost, and the original article only if you click a link. Top-post in that sense.</comment></comment></comment>


Microsoft Hiring Puzzle - <AUTHOR> http://www.techflash.com/microsoft/Can_you_solve_this_Microsoft_puzzle34153059.html

<comment><USER2> Has the systemic use of these puzzles in the hiring process backfired horribly for MS?

I ask because, rather than filtering for smart people in general, these puzzles seem to filter for a specific subset of puzzle-oriented smart people.

There seem to be definite blind spots in MS software when it comes to design, usability, and what you might call developer-to-user empathy. I've wondered for a while whether they might be unintentionally weeding out the employees that could help them with those issues.

<comment><USER3> In my experience, MS does not seem filled with puzzle-oriented smart people.

<comment><USER4> Have you had much experience with Microsoft employees?

<comment><USER3> Yes... getting dangerously close to two years' worth.

</comment></comment></comment></comment><comment><USER5> If I pass it do I get my choice of joining the Excel Macro or Visual Studio maintainence team? Because I do have a clear preference.

</comment><comment><USER6> I absolutely hate puzzles and I absolutely love programming.

When I look at a puzzle like the (non-programming) one posted on the page, I have no idea where to start. When I'm given a programming challenge, I have a huge bag of experience and tools I can draw from and I can immediately start banging away at the problem.

</comment><comment><USER7> These are so lame. I would filter people based on what they have made in the past, not how good they are at school or solving stupid puzzles.

<comment><USER8> You wouldn't filter people based on how good they are at school? I'd definitely weigh that when interviewing a candidate. I agree about the puzzles though. If they're relevant to the job, then sure, it makes sense to ask them. Otherwise, drop them.

</comment></comment><comment><USER9> The answer has very little to do with both programming skills _and_ abstract thinking:

<quote>

 _To solve this puzzle, you need to rearrange the stock symbols in an order that when read down, yields a useful phrase. There is no indication at how to order them, but through trial and error (there are only 120 possible orderings) you can arrive at this:

      HCRE
      UATN
      RNHA
      REEC
      IOME

Reading this down the columns gives the phrase "Hurricane or the Menace." The word that goes with both "Hurricane" and "The Menace" is DENNIS._

</quote>

Good luck with making a hiring decision based on the ability to solve this puzzle.

</comment><comment><USER10> too difficult</comment>


Show HN: 4 Apps in 4 Weeks - Learn Swift - <AUTHOR> http://fork2.com/ios/

<comment><USER2> Thanks this is really great stuff. Its tough finding good resources like this. I much prefer to learn the way you propose, by actually coding apps, and putting all the pieces together.

<comment><AUTHOR> Thank you for the encouragement : )

Please don't hesitate to contact me if you run into problems with the content.

</comment></comment><comment><AUTHOR> The first lesson is here [http://fork2.com/ios/fortuna/](http://fork2.com/ios/fortuna/)</comment>


Hallucinated Gods - <AUTHOR> http://www.meltingasphalt.com/hallucinated-gods/

<comment><USER2> The most irritating part about Jaynes' concept is the premise of alienation foisted upon ancient people, as if they were all dimwitted, half insane, immature fools, each with barely the intellect of a second grader.

I honestly don't buy that for half a second. I think there were a great many very shrewd charlatans, who knew damn well they were telling ghost stories and bluffing each other into superstition, wherever they could fit in a con game that played to their advantage.

Sure, there's always lively mataphysical debate in every culture. Fine, ancient people lacked a precise understanding of the subtleties of things like microbial life. But the rest of the macroscopic world was rational enough to keep most people grounded, in my opinion.

Different people have different takes on what a "god" is. Hallucinations and dreams are powerful psychological cues, but I don't think they represent the common perception for the origin of either polytheistic or monotheistic gods.

For most cultures, I think it's pretty obvious that "The Gods" simply represent a conversational placeholder for forces of nature with origins that are not well understood. In monotheistic religions, I think we see a shift in the broader social understanding that large groups of humanity represent an untamable force unto itself (mob rule), which must also be respected as an emergent hazard in addition to The Weather, The Sea, Disease and other such forces of nature.

In most sane scenarios, I think people are quick to understand that talking to a toy soldier carved from a block of wood will only serve so much purpose. I don't think people bought into such practices as deeply as we like to sometimes think. I think ancient people merely keyed into the premise of rubber ducky programming, when they needed to talk things out.

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

When Socrates was ostracized for lack of piety (in The Apology), I think it was quite obvious to everyone, that he was getting the shaft because he was a busy body, and not because he failed to worship stone temples properly. Most executions related to religion are highlighted for their obvious social implications, in that the religion is a whitewash, and the reality is that the motives were political at their core.

Yeah, cults happen with relative frequency, and the shifting sands of the social order can present a murky atmosphere of moral relativism, but ultimately I lend myself to the opinion that evolution favors those with good survival instincts and a balanced mind.

I sincerely doubt that the vast majority of the ancient world was universally suffering from mass hallucinations, to the point where they all agreed to blow the same mental gasket, drink the kool-aid, and buy into the spaghetti monster.</comment>


A searchable database of all the registered dog names in New York City - <AUTHOR> http://a816-dohbesp.nyc.gov/IndicatorPublic/dognames/ <comment><USER2> cool visualization, but table would be 100x times more informative.

<comment><AUTHOR> CSV on GitHub. [https://github.com/Kaz-A/dog_names/](https://github.com/Kaz-A/dog_names/)</comment></comment>


The C++ coding experience is bi-polar, lets talk about it - <AUTHOR> https://www.reddit.com/r/cpp/comments/718fbx/the_c_coding_experience_is_bipolar_lets_talk/ <comment><USER2> No, breaking old code compatibility is not ok. We have good examples with python 2 vs python 3</comment>


JavaScript Web Apps (O'Reilly Rough Cuts) - 50% off - <AUTHOR> http://oreil.ly/muXQu2

<comment><AUTHOR> Use the code DDM92 to get it for $13.99

</comment><comment><USER2> the owl is awesome !

</comment><comment><USER3> sweet!</comment>


What the iPhone X borrowed from the Palm Pre - <AUTHOR> https://www.theverge.com/2017/9/15/16300402/iphone-x-webos-palm-pre-cards-gestures-nostalgia <comment><USER2> > "It's silly compare the state of tech in 2017 with the state of tech in > 2009. Just because Palm did some stuff first doesn't take away from Apple is > doing them now. Context matters, and our context today is very different."

Nice little walk down [borrowed] Nostalgia Lane .. the line at the end was especially helpful: "nostalgia looks backward and it's fundamentally indulgent in a way that isn't really useful in tech"</comment>


Remote work doesn't need a "virtual office" - <AUTHOR> https://www.friday.app/remote-work-virtual-office <comment><USER2> All of those virtual office things are nightmares to me (on par with open office arrangements), for most of the reasons the author cites. I've turned down two otherwise very appealing jobs because of them.</comment>


Belgium Tells Facebook to Stop Storing Personal Data from Non-Users - <AUTHOR> http://www.bloomberg.com/news/articles/2015-11-09/facebook-told-to-stop-storing-personal-data-from-belgian-surfers <comment><USER2> Just so people are clear --

Even if you are not using Facebook, even if none of your friends ever use Facebok or tag you in any content, Facebook is maintaining a shadow profile on you. They have your web browsing habits from the Like button, and in many countries (such as the United States) they have bought data from data brokers such as Datalogix to gain access to your grocery store purchases and other data. They can sell you as an audience on behalf of other sites/apps if they choose (they aren't doing this now, but they could), and they can continue to use third party mechanisms to keep close tabs on you. They might not know you by name, but they definitely know you by many other identifying traits.

I would be very interested to see the results of a European data request by a non-Facebook-user in a country where Facebook has been aggressive in cutting data brokerage deals. Maybe the UK or something. We can get a lot of feel good rhetoric from the company's PR and employees, but nobody really knows what is collected and stored. (Of course, the company could say "we don't have data for anyone with that name," which would be factually correct.)

There is another comment here that is completely wrong in asserting that Facebook only tracks you insomuch as is required to help your friends make use of the site. This fantasy notion might make people feel better about making use of the site -- sort of like how consumers of H&M will reason that "those Bangladeshi girls really needed the job" \-- but it isn't the truth.

<comment><USER3> Facebook explicitly deny creating 'shadow profiles' and I'm not aware of any proof that they do so, have I overlooked this somehow?

I was interested in this too, and I'm in Europe and submitted a formal request for data. I've never used Facebook but because I'm active in a number of community groups, my name comes up on the occasional Facebook page and I'm in photos taken at some events.

At the time I was using a catchall email address so I entered facebook@(my- domain-dot-tld) which is all they used to search for a match. Because that wasn't a real email address I wasn't surprised that in their response they claimed to hold none of my personal data, though that seems a bit weaselly.

Here is their email reply from 2013:

Hi,

We've received your request for information about the possible storage of your personal data.

There isn't a Facebook account associated with the email address from which you are writing. This might be because you don't have a Facebook account or because you already deleted your account. In either of these cases, we do not hold any of your personal data.

Please refer to our Privacy Policy (also called "Data Use Policy") for more information:

[https://www.facebook.com/about/privacy](https://www.facebook.com/about/privacy)

It contains a description of: \- The categories of data being processed by Facebook \- The personal data that Facebook receives from Facebook members \- The purpose or purposes of the processing of such data \- The source or sources(s) of the data, if known \- The recipients or categories of recipients to whom Facebook members' personal data are or may be disclosed

If you're referring to an account associated with another email address, please use that email address to file a new request:

[https://www.facebook.com/help/contact/?id=166828260073047](https://www.facebook.com/help/contact/?id=166828260073047)

Once we receive your request, we'll take further steps to assist you.

Thanks, The Facebook Team

<comment><USER4> I suspect that you need to ask a very specific question to get Facebook to reveal what they collect about you.

And I think there's a bunch of information that the EU does think is personal that Facebook thinks is not personal.

We probably need some researchers to send a bunch of requests in for different types of data.

</comment></comment></comment><comment><USER5> What I find hilarious is that besides this being like the 4th or 5th time Facebook got caught with this sort of tracking [1], and each time claiming it's "only a bug" \- which it also did when it got caught in Belgium this spring [2] - it now comes and says "Wait a minute! We've been using this umm...bug...for 5 years! We will appeal the ruling! We want to keep using that...umm, bug." [3]

> The company is "working to minimize any disruption to people's access to > Facebook in Belgium," she said.

Is that a threat? Why would there be a disruption? The ruling only affects their tracking of _non-users_. Disruption to the non-users?!

Also, you know how they've also been saying for years that they would _never_ (ever!) use Like button tracking (which is just a - _pretty damn persistent_ \- bug when tracking non-users, anyway) for advertising? Yeah, another lie [4].

[1] [https://www.propublica.org/article/its-complicated- facebooks...](https://www.propublica.org/article/its-complicated-facebooks- history-of-tracking-you)

[2] [http://www.itpro.co.uk/security/24324/facebook-okay-were- tra...](http://www.itpro.co.uk/security/24324/facebook-okay-were-tracking- people-but-its-a-bug)

[3] [http://www.reuters.com/article/2015/11/09/us-facebook- belgiu...](http://www.reuters.com/article/2015/11/09/us-facebook-belgium- idUSKCN0SY27220151109)

[4] [http://www.technologyreview.com/news/541351/facebooks- like-b...](http://www.technologyreview.com/news/541351/facebooks-like-buttons- will-soon-track-your-web-browsing-to-target-ads/)

<comment><USER6> Thanks for the links! OgleFace not only has our best brains working on getting people to click more ads, said brains are also whirring furiously justifying why OgleFace has gone off the charts on the scale of 0 to creepy. Sad..

<comment><USER7> "Best brain", that's a very narrow definition. Best in what exactly ? Crunching some numbers ? Doing nice css ? I guess those brains are sub standard when it comes to ethics...

</comment></comment></comment><comment><USER8> We begin therefore where they are determined not to end, with the question whether any form of democratic self-government, anywhere, is consistent with the kind of massive, pervasive, surveillance into which the Unites States government has led not only us but the world.

This should not actually be a complicated inquiry.

[https://archive.org/details/EbenMoglen- WhyFreedomOfThoughtRe...](https://archive.org/details/EbenMoglen- WhyFreedomOfThoughtRequiresFreeMediaAndWhyFreeMedia)

[https://benjamin.sonntag.fr/Moglen-at-Re-Publica-Freedom- of-...](https://benjamin.sonntag.fr/Moglen-at-Re-Publica-Freedom-of-thought- requires-free-media)

Surveillance is not an end toward totalitarianism, it is totalitarianism itself.

[http://www.bbc.co.uk/democracylive/europe-24385999](http://www.bbc.co.uk/democracylive/europe-24385999)

</comment><comment><USER9> One can see this as one more Belgian eccentricity, and the list is long. But this is bound to generalise. The amount of data collected throught tracking is awfully intrusive. Between google, facebook, linkedin, and the hundreds of ad networks, one can know pretty much anything there is to know on someone: network of friends, political opinions, sexual preferences, health problems, spending habbits, etc. It is bound to become illegal ultimately, when politicians finally get a clue.

I am not sure it would help however. Making something illegal only makes sense if it's enforceable. Making tracking illegal is like making hacking into systems illegal. If the offender is based in another country there is very little one can do anyway. Therefore to me the solution has to be technological. Encryption, strict first party cookies/data/javascript is the only realistic response. The browser as it is is broken.

</comment><comment><USER10> How about not singling out FB and forbid the same to Google and others as well?

<comment><USER11> Yes, LinkedIn is another offender that I'm sure also does this, even more aggressively than Facebook. They blatantly try to download your contact list by directly asking your email password to build shadow profiles and propose new contacts.

And I guess WhatsApp probably also used the same practice to grow their network, using contact lists extracted from phones.

As I understand it, these practices are simply illegal in the EU and always were. Regrettably, the billions that were made this way (mostly by US companies) will probably never be returned.

<comment><USER12>
        > And I guess WhatsApp probably also used the same
        > practice to grow their network

... how would that work? I've never seen WhatsApp offer to let me message someone who didn't have an account.

<comment><USER13> I think the idea of a shadow account is that you build the information on the person (from disparate data points, like phone contacts) and their connections. Then when they sign up they are presented with a list of people that have them in their contacts. From a UX perspective it can be nice but I can definitely see the privacy concerns.

</comment></comment></comment></comment><comment><USER14> so what are we waiting to deny third-party cookies?

<comment><USER15> Blocking third-party cookies breaks some websites, including some bank websites. Then again, Safari on iOS and OS X defaults to only allowing first- party cookies and websites must surely want their services to work on iOS..

Mozilla tried to adopt Safari's cookie policy for Firefox, but backed down when the ad industry turned up the heat:

[https://blog.mozilla.org/privacy/2013/02/25/firefox- getting-...](https://blog.mozilla.org/privacy/2013/02/25/firefox-getting- smarter-about-third-party-cookies/)

[http://www.computerworld.com/article/2495739/internet/ad- ind...](http://www.computerworld.com/article/2495739/internet/ad-industry- threatens-firefox-users-with-more-ads-if-mozilla-moves-on-tracking-plans.html)

<comment><USER9> Blocking third party cookies without blocking third party javascript is pretty much toothless.

</comment></comment></comment><comment><USER16> >Facebook faces a fine of 250,000 euros ($269,000) a day

Facebook's net income in 2014 was US$2.94 billion, according to Wikipedia. I'm not so sure they will care about a fine that low. Especially if they expect to make more money by continuing to store non-users' personal data.

<comment><USER17> Meh, $94MM a year is still probably not worth it just to store non-users data from Belgium.

<comment><USER9> All they need is a simple filter by country of IP. The question is rather they are willing to comply given that this may spread across Europe very quickly.

<comment><USER18> It will spread.

Basically, if Facebook is really building up profiles of people, then the EU standpoint is clear across the board that you don't even need to be able to actually name the person from the data in order to be governed by the data protection laws, and e.g. details like IP addresses that are not considered personally identifiable by themselves easily becomes so when combined with other data.

It is very unlikely that they are compliant anywhere in the EEA if they're not compliant in Belgium.

Their argument that they're only subject to privacy laws in Ireland is a total non-starter, as it "worst case" for Belgian authorities just means they'll have to go after Facebook in Ireland, and given that all EEA countries have privacy legislation closely modelled after the Data Protection Directive, it's highly unlikely they'll get a better result there (and if they do, it'll get appealed, and if they win an appeal, the law is likely to get changed.

If they are maintaining shadow profiles, then what they do is very, very obviously at odds with the principles the Directive are based on). More likely I'd expect Belgian courts to insist they have jurisdiction on behalf of victims in Belgium.

In either case, as soon as this case is concluded, you can expect a bunch of other EEA states to pile on.

</comment></comment></comment></comment><comment><USER19> Good.

</comment><comment><USER20> How about we learn to deal with the fact that they're not storing data that is yours in the sense of ownership, but only in the sense that it's about you? They're not storing data for no reason; They are storing data their customers have provided for the purposes of contacting you. They are storing data about you for the people who, like it or not, you shared your data with.

The nasty 90s database-dump sharing is over; Companies hoard this data and consider it their private treasure, not to mention the nasty and ill- considered privacy laws that have already sprung up around sharing it. Facebook is not selling your info to marketers; They are selling your eyeballs to marketers if you use the service, and using your data to better target it. For all the egregious offenses that Facebook is guilty of, this is not an offense.

I have the right to a little black book. I have a right to a diary that calls you names. I have a right to free speech, and sometimes your name is on my lips.

<comment><USER21> > They are storing data about you for the people who, like it or not, you > shared your data with.

Exactly.

I'll add that on a technical level, you aren't being tracked like a hunter would track prey; your machine is being periodically asked to provide identifying information, and you have it configured to automatically comply.

I get that most consumers of the web don't understand this, but it is the truth.

This is what I find vexing about the EU cookie disclaimer law. Every individual website owner has to add a message to their site letting you know that they are going to _request_ that your browser store some information on their behalf.

It makes me think about all of the manhours that could have been saved if the law had instead required major browser vendors to include a feature enabled by default that would prompt the user before storing cookies.

<comment><USER22> >It makes me think about all of the manhours that could have been saved if the law had instead required major browser vendors to include a feature enabled by default that would prompt the user before storing cookies.

You only need a disclaimer for a permanent cookie, which should only be used when you are logged into an account (and the disclaimer could just be part of the ToS when you create the account). I blame the websites for using permanent cookies when session cookies or no cookies would do the job.

</comment></comment></comment><comment><USER23> Good. But, I expect something unfortunate to happen to a high profile Belgian company or official in the near future.

Of course, there's going to be no way for anyone to prove cause and effect either way. If I'm wrong about the reason, my confirmation bias will convince me otherwise.</comment>


The Feature Google Killed The + Command For Is Now Dead - <AUTHOR> http://searchengineland.com/google-direct-connect-dead-194598 <comment><USER3> I've never been a google+ basher, but I really hated Google dropping the + search operator. It also showed me in a very personal way just how lazy users can be: Wrapping a word in double quotes is "just" 4 keystrokes instead of 1 for the + in front of it, but I effectively stopped using that feature after the change.

<comment><USER4> The shitty thing was that they dropped the + operator at the same time they significantly increased the "fuzziness" of their search algorithm.

For some searches it might have helped, but for extremely targeted or highly technical searches it was a disaster. Almost as horrible as the bad old days when search engines tended to use "or" for search queries instead of "and". Still it's very, very difficult to tell google that you actually for really really realsies want to search for all the terms you typed in.

<comment><USER5> Sometimes when I'm searching I get the feeling Google is dropping things I'm asking for in order to give me more results.

But there's no way they're dumb enough to think that's helpful, right? They _do_ understand that people want less - but more relevant - results, instead of just having more useless ones?

Like just the other day I was searching for "ruby net::ldap <some error message>" and it decided to put, front and center, results from CPAN. Just about as irrelevant as a search result can get. The little grey highlights below the results had "ruby" listed with a strikethrough, to imply that if I had only searched without that word, I could have gotten these helpful results on my own.

I can only hope that this behavior was not a conscious decision by anyone at Google. I hope it's because they added some machine learning or something to their algorithms and this was just some emergent behavior they hadn't accounted for. Because if somebody working for a search engine company decides that irrelevant search results are a good thing, or that _number of results_ are by any means a useful metric, I'm scared for the future of Google.

<comment> nevi-me They do try search combinations with some words omitted, and right at the bottom of each query they tell you which part of your phrase they have excluded.

<comment><USER6> I also get this behaviour all the time, and I have no idea how it could improve the quality of my search results.

Yes, if I search for "Windows 7 NAT", dropping the NAT keyword returns more results. But none of them will give me the information I'm looking for.

<comment><USER5> Exactly. Searches with less results are nearly always better than searches with more... I don't know why Google would think it's helpful to include more, but clearly _less_ relevant results. (By definition, too. If a result is lacking one of your search terms, it's less relevant to what you searched for, strictly speaking.)

This is _especially_ true when what I'm searching for yields almost no results. That's how I typically know that what I'm searching for was probably bogus to begin with. But when the first page is full of a bunch of fuzzed-out results that are only tangentially related to what I searched for, I now have to skim through a page full of results to realize that Google just gave up and decided to omit several of my terms.

</comment></comment></comment></comment></comment></comment><comment><USER7> Matt Cutts gave some numbers about how often the + operator was used - <USER2> even then it was mostly used incorrectly.

> _> In the past, we provided users with the + operator to help you search for > specific terms. However, we found that users typed the + operator in less > than half a percent of all searches, and two thirds of the time, it was used > incorrectly._

[http://insidesearch.blogspot.co.uk/2011/11/search-using- your...](http://insidesearch.blogspot.co.uk/2011/11/search-using-your-terms- verbatim.html)

Check my math, but I think that means that + was used correctly in only 1 out of 600 searches.

People mention "power users". Google does not want power users. Google wants a mass market of people who see, and click, ads.

EDIT: i guess I need to say that I hated when Google changed the plus operator; and I find using Google now to be a frustrating and annoying experience. I'm shown results tha often are not relevant to my queries.

And Barrkel makes a good point about my confusing potentially misleading description of the times + is used correctly.

<comment><USER8> What do they even mean by "it was used incorrectly"? Did they somehow reach out to and ask the user if they found what they were looking for...?

<comment><USER7> They mean it was ran+domly inserted+in weird places. I think.

<comment><USER9> It probably means that people were searching for _Ben + Jerry 's_ or the like.

<comment> xor-ed-wolf Did't it only worked if there was no space character before + character and the word?

</comment></comment></comment></comment></comment><comment><USER10> "No results" is a feature, not a bug, I'd much rather have no results or very few than a whole pile of crap to wade through in case the real results are buried in there somewhere.

Double quotes should translate to 'match this or nothing', what's the point of quoting otherwise. And if the + command is now no longer used then maybe bring back the old usage, which worked just fine.

Change for the sake of change is ridiculous, changing a well known user- interface in order to push a non-core product is slightly mad.

It also shows how bad it is to have all these services belong to one single company, imagine google+ being launched as facebook+, do you think that google would have dropped their '+' operator for that?

</comment><comment><USER11> The Verbatim search option often isn't verbatim enough. Also it can't be combined with a time limited search; selecting "last month" clears the verbatim option :(

<comment><USER12> So true. I run into this when needing to debug some weird stack trace error but have recently run into google fuzzing my "" exact searches. Now I know I'm not the only one

</comment></comment><comment><USER13> _> For example, a search for the word mars generates about 207 million matches. That would find pages that have the exact word plus pages that might not have the word but are deemed related to it._

 _> Searching for mars surrounded by quotes — "mars" — generates exactly the same number, even though that number should drop._

As far as I know, that number is just an estimate, and is wildly inaccurate for the actual amount of results. It's the same reason you could have a search with 10 pages of results shown at first, but after you get to page 3, you only see 4 pages of results. It just estimates it until in needs a more accurate count.

I can't find the original source for this, though I didn't spend much time looking, but found this on stackoverflow[0]:

 _> From a Google developer (Matt Cutts, head of the web spam team):_

 _> "We try to be very clear that our results estimates are just that-- estimates. In theory we could spend cycles on that aspect of our system, but in practice we have a lot of other things to work on, and more accurate results estimates is lower on the list than lots of other things"_

 _[0][http://stackoverflow.com/questions/4397292/how-does- google-c...](http://stackoverflow.com/questions/4397292/how-does-google-count- and-estimate-the-number-of-a-search-results*)

Edit:formatting

</comment><comment><USER14> mars - 197m results

"mars" \- 228m results

+mars - 19k results

+"mars" \- 197m results

Assuming the estimated result count is at all meaningful, it looks like + still does have an effect: it turns ["x"] in to meaning the same thing as [x].

<comment><USER15> So, I was skeptical that only 19k webpages would contain the actual word mars (as per the +mars query), and curious why "verbatim" search wasn't included for comparison.

So I tried verbatim search for mars, to find the estimated results count disappears. However, skipping along the pages got me the counterintuitive result that verbatim search for mars finds only 188 results - I'm pretty sure that google has indexed more mars-mentioning pages than that!

Oh, not counting the "very similar" results:

> In order to show you the most relevant results, we have omitted some entries > very similar to the 188 already displayed.

Clicking this "include similar results" link gets me 45 results pages or about 450 results that mention mars found with a verbatim search.

I feel like I've gone back to 1994!

<comment><USER16> Google has never given you all 18 million or whatever results that it says it has for a term. If you look at just mars (no quotes), it says (for me, not signed in) there are 211,000,000 results, but the results only go to page 26 with the same kind of message:

 _" In order to show you the most relevant results, we have omitted some entries very similar to the 260 already displayed. If you like, you can repeat the search with the omitted results included."_

even though obviously there are more results that aren't "very similar" to the 260 that have been displayed.

The assumption has always been that people don't keep clicking through tens of pages of results...they refine their search terms.

<comment><USER15> I suspect you're right in that it's never given you _all_ the results. I'm pretty sure that it's given me many more than 300 or so results in the past, though, whereas that figure seems to be google's idea of the max any user could possibly want now before they refine their term.

I think _mars_ is probably not the ideal term for testing this sort of thing - just too many hits. I tried _mars "philip k dick"_ and found the same thing - 30 or so pages and then it refused to give me more results. Increasing the obscurity level somewhat, _devil 's vindata_ vanilla search vs. verbatim search did indeed show a reduced set of results for verbatim (the vanilla search results including hits on _devil 's vendetta_)

Overall though, if you're looking for more fringe results for common search terms, millionshort.com might be worth a try, where you can remove hits from the top 10^n sites for your term _it says_.

</comment></comment></comment></comment><comment><USER17> I don't see why that feature needed to change the normal + feature anyway. Couldn't they differentiate between it being at the start and in the middle? It'd be obvious for power users from the recommendations. That said I can see the argument for just supporting single word quotes and to me that seems more intuitive.

<comment><USER18> But it would be at the start in many cases. How would it know if you want to go to the Google+ site of YouTube or just search all the pages that contain the exact phrase "YouTube"?

</comment></comment><comment><USER19> Is there a search engine that is as accurate as Google? Does Bing really stack up?

<comment><USER20> As far as I know, no, there isn't. I've tried going away from Google, but always failed.

The problem is that Google clearly care about search less and less each day. If the trend continues, we'll be able to change some day, but not because the other sites got better.

<comment><USER21> Tried it too. Wasn't that happy. I was also never a fan of different search options in my browser bar so the !bang feature wasn't really my thing either.

Now I'm contributing to OpenStreetMap, because I think at least that stands a chance against google maps and might even help some other search engines. DuckDuckGo is using it and maybe Bing will at one point, at least that would explain why they provide aerial images.

</comment></comment></comment><comment><USER22> Did Google really name a feature after a P2P protocol? Coupled with the + symbol I initially thought this was about a file sharing protocol that G killed

</comment><comment> alok-g Response from 'thisisnotatest' from Google search team [1]:

"I hear you. How to indicate to the user that we don't think there are any good matches for their query is something we debate and experiment with in search quality at Google."

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

</comment><comment><USER23> Lol... I never knew the + stopped working... I've been using it all along. I guess I always assumed the search term I was prepending a + to was always in there, somewhere. No doubt I was getting less relevant results.

Without a doubt, the '+' operator is the most important one, followed only by being able to search for a phrase surrounded by quotations.

<comment> xor-ed-wolf It's strange that you did not. WTF moment was the first thing I experienced when they did that and my search with + returned results that didn't contain the word. I was literally furious.

</comment></comment><comment><USER24> I may be wrong, but I seem to remember using +word since the AltaVista days. I still do it, even though it doesn't work. (grumble)

That and the results changing as I type drive me nuts. It is quite common for me to see something I want only to lose it on the next keystroke which was already queued.

</comment><comment><USER25> Ha, so this explains it. I hadn't been paying much attention, other than noticing that prepending "+" to google search terms (something I did infrequently to begin with) had started to just return zero results most of the time.</comment>


Static Typing Is Not for Type Checking - <AUTHOR> http://www.techblog.bozho.net/static-typing-is-not-for-type-checking/

<comment><AUTHOR> > So, no, static typing is not about the type checks. It's about you being > able to comprehend a big, unfamiliar (or forgotten) codebase faster and with > higher level of certainty, to make your way through it and to change it > safer and faster.</comment>