Physicists Prove Surprising Rule of Threes - <AUTHOR> http://www.simonsfoundation.org/quanta/20140527-physicists-prove-surprising-rule-of-threes/ <comment><USER2> The Efimov constant is only approximately ≅ 22.7. It would be a little surprising to have a physical constant end in exactly 0.7, since it would imply that there's something special about base 10 and bases that are a multiple of 10.

Section 3 of this paper talks about the actual transcendental equation that provides the constant.

[http://rsta.royalsocietypublishing.org/content/369/1946/2679...](http://rsta.royalsocietypublishing.org/content/369/1946/2679.full)

<comment><USER3> I vaguely recall that if a circular disc with a circumference of pi (3.14 ...) is held at an angle of 22.7 degrees relative to a flat surface, it projects an ellipse that has a circumference of 3.000 Coincidence? Eh, probably. Might've also been 26.8 degrees.

<comment><USER4> One common association of those digits with PI is the handy approximation of 22/7 accurate to three digits, off by just over .0004.

I stress that this is an approximation only! I had to explain about PI being irrational rather than exactly equal to the shortcut approximation to a couple co-workers, explaining some poor behaviors in their rotation function.

</comment></comment></comment><comment><USER5> Quite fitting...

 _"What you see is three groups, in three different countries, reporting these multiple Efimov states all within about one month," said Chin, who led one of the groups. "It's totally amazing."_

<comment><USER6> How far were these groups spaced apart?

</comment></comment><comment><USER7> "Although we didn't see an infinite number of them, there's pretty strong evidence when you see three in a row," - What a physicist thing to say :P

<comment><USER8> 3, 5, and 7 are prime, therefore 9 is prime.

<comment><USER9> No: 11 is prime. 13 Is prime. So 9 is just an exception!

<comment><USER10> A teacher asks a group of students to prove that all odd numbers above 1 are prime numbers. After a short while the students begin arguing about the best proof.

Mathematician: "We should use proof by induction, I can show 3 is a prime number by listing all of it's factors, and then from there I can show that 2n + 1 is prime ..."

Scientist: "What? that doesn't make any sense. What we need is experimental data. Let's collect enough points, 3, 5, 7, 9, 11, 13. Six points should do, now look, the general trend is that all of them are prime. We have one anomaly, but it's probably just caused by a random fluctuation in..."

Engineer: "Nah, all this theory is pointless, we only need to know if they are prime in the real world. Let's just take a few and see if they work for our purposes. 3 - prime, 5 - prime, 7 - prime, 9 - nearly prime, 11 - prime, surely that's good enough."

Computer scientist: "While you lot have been wasting your time arguing I have been writing a program that will do all the work for us"

All of the students gather around the CS's computer and watch as he presses go.

Computer: 3 is prime 3 is prime 3 is prime 3 is prime 3 is prime 3 is prime 3 is prime 3 is prime 3 is prime 3 is prime 3 is prime 3 is prime 3 is prime 3 is prime 3 is prime 3 is prime

<comment><USER9> This whole thread is messed up because it has never even mentioned the whole other half of the subject as in the famous monograph, _A Short Table of Even Primes_.

</comment></comment></comment></comment></comment><comment><USER11> I wonder if this principle can also be applied to nucleons. Protons and neutrons are each made up of 3 quarks. And there are some troubles in pinning down the radius of the proton. If Efimov scales apply to nucleons, this would imply that there are multiple scales in which quarks can arrange depending on the outside potential. This could explain the differences of measured proton radius depending on the used experimental setup. But I'm just wildly speculating here.

<comment><USER12> This trick only works for bosons *Edit: I think.

At any rate, these depths of physics are quite complex and not very intuitive, and this kind of discovery shows it is very easy to overlook things. A giant discovery could be looming in the horizon...

<comment><USER13> In the lab. The paper contemplates the possibilities for nucleons too - it's just harder for spin particles: [http://www.uibk.ac.at/exphys/ultracold/projects/levt/efimov/...](http://www.uibk.ac.at/exphys/ultracold/projects/levt/efimov/SovJNucPhys12.589.efimov.pdf)

</comment></comment></comment><comment><USER14> _More than 40 years after a Soviet nuclear physicist proposed an outlandish theory that trios of particles can arrange themselves in an infinite nesting- doll configuration, experimentalists have reported strong evidence that this bizarre state of matter is real._

I think it's quite awesome that Vitaly Efimov lived to see his theory being proved (or, at least, to see strong evidence in its favor).

It always makes me sad when I read about scientists who made great discoveries just to be laughed at until their days end, and then their theories are proved after they are dead.

A classic example is Alfred Wegener, who postulated continental drift just to be ridiculed., but of course there are many, many others.

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

Another, even more tragic story is that of Ignaz Semmelweis, who not only pioneered antiseptic procedures in hospitals, but, to my mind, proved their effectiveness beyond any reasonable doubt, was rejected, and died tragically.

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

</comment><comment><USER15> I swear I'm not trolling, just ignorant, but could a workable theory of local hidden variables be based on this?

<comment><USER16> I am pretty sure this is not related to local realism. I would naively imagine the situation as follows (not having read anything related in detail and not being a physicist). The forces between particles become very weak with growing separation but never become zero. Now imagine throwing two ping-pong balls into a pool making ripples on the surface similar to the force field or the probability of presence of the particles. There will be a interference pattern and you can probably find a valley where you can place a third ping-pong ball and it will sit there more or less stable. Now finally imagine every pair of ping-pong balls forming the valley for the third ping-pong ball. This may of course be incredible far off from what really happens - just making up images.

<comment><USER17> I like the ping pong balls over the surface of a pool, that's a neat analogy. However, I am also not a physicist, but my impression is that this is something closer to how a [http://en.wikipedia.org/wiki/Lagrangian_point](http://en.wikipedia.org/wiki/Lagrangian_point) (in particular, the L4 or L5 lagrange point) works. In fact, I think the size difference thing they describe in the article is probably very similar to how gravity, and relative object positions work out based on their mass ratios. Kind of an equilateral force balance, with a self stable state that things will naturally gravitate towards if the background energy level is low enough. Course, then that makes me wonder if there's a 4-body version with a stable tetrahedron formation?

</comment></comment></comment><comment><USER18> Interesting that they referenced 22.7 falling out as similar to pi, since 22/7 is one of the simpler approximations of pi.

<comment><USER19> Completely coincidental, I'm sure.

<comment><USER20> Obivously, since base 10 is arbitrary.</comment></comment></comment>


Angela Merkel's Scientific Background Could Save Germany - <AUTHOR> https://www.theatlantic.com/international/archive/2020/04/angela-merkel-germany-coronavirus-pandemic/610225/ <comment><USER2> Merkel is a great politician, the kind of which both Europe and Americas are sorely lacking. It's interesting to see the similar background of leaders in China leading to very different outcomes.

<comment><USER3> Eh? Aside from the initial lag, China was extremely successful at halting the spread of the virus.

<comment><USER4> I would take that number with a huge grain of salt, given China's past performance on honesty.

<comment><USER3> This is conspiracy theory level thinking. There is absolutely no evidence that China is lying.

<comment> Engineering-MD It's not conspiracy level at all. China is known in other areas to fudge numbers regularly, and have ejected journalists for not Agreeing with the party line on COVID. While they might be accurate, it's perfectly reasonable to recommend taking any figures with a pinch of salt.</comment></comment></comment></comment></comment>


Swedish Advanced Lead Reactor – passively safe lead-cooled reactor - <AUTHOR> https://www.leadcold.com/sealer.html <comment><USER2> "residual high level waste (mainly short lived fission products) will be vitrified and isolated from the biosphere in a geological repository"

A little known fact..

there is not enough of the appropriate geological strata in the world for the disposal of the whole worlds vitrified waste material.

Sorry no references.. the book with the references is roughly 245km away from me at the moment</comment>


POSIX close(2) is broken - <AUTHOR> http://www.daemonology.net/blog/2011-12-17-POSIX-close-is-broken.html <comment><AUTHOR> Also, there's a bug in HN: When I submitted this under the title "POSIX close(2) is broken" it converted "POSIX" to "Posix" (presumably because PG doesn't like shouting titles), but I was able to edit it back to reading "POSIX".

In this case "POSIX" is correct, not "Posix", of course; but if HN is going to mangle titles it ought to at least do so _consistently_.

<comment><USER2> That's odd. I see lots of titles on the front page right now that include the word SOPA.

<comment><AUTHOR> Maybe it's triggered by having 5 or more consecutive upper-case characters? I have no idea.

</comment></comment></comment><comment><USER3> Recommended reading:

Richard P. Gabriel – The Rise of Worse is Better <http://www.dreamsongs.com/RiseOfWorseIsBetter.html>

[...]

The MIT guy did not see any code that handled this case and asked the New Jersey guy how the problem was handled. The New Jersey guy said that the Unix folks were aware of the problem, but the solution was for the system routine to always finish, but sometimes an error code would be returned that signaled that the system routine had failed to complete its action. A correct user program, then, had to check the error code to determine whether to simply try the system routine again. The MIT guy did not like this solution because it was not the right thing.

The New Jersey guy said that the Unix solution was right because the design philosophy of Unix was simplicity and that the right thing was too complex. Besides, programmers could easily insert this extra test and loop. The MIT guy pointed out that the implementation was simple but the interface to the functionality was complex. The New Jersey guy said that the right tradeoff has been selected in Unix -- namely, implementation simplicity was more important than interface simplicity.

The MIT guy then muttered that sometimes it takes a tough man to make a tender chicken, but the New Jersey guy didn't understand (I'm not sure I do either).

[...]

<comment><AUTHOR> I considered citing that in my post, but it didn't fit anywhere conveniently. In general I like the New Jersey approach of "push complexity to the caller", but not in cases like this where it's impossible for the caller to handle the complexity correctly.

I have the same issue with eventual consistency, for what it's worth: I'm fine with the fact that my updates might not be globally visible immediately, but I want to have a way that at some point I can _know_ that they have propagated (aka. "eventually known consistency").

<comment><USER4> Is eventually known consistency even possible if at any point while the notification of consistency is being transferred to you, the system can enter a non/eventual-consistent state again?

<comment><AUTHOR> By "eventually known consistency" I don't mean "at some point I will know that the system is consistent"; rather, I mean "at some point I will know that the system is consistent _with respect to operation X_ " (or alternatively "... with respect to all operations performed before time T").

</comment></comment></comment></comment><comment><USER5> Link to the standard:

[http://pubs.opengroup.org/onlinepubs/000095399/functions/clo...](http://pubs.opengroup.org/onlinepubs/000095399/functions/close.html)

Some discussion that is related to this:

<http://lwn.net/Articles/365294/>

[http://stackoverflow.com/questions/7297001/if- close2-fails-w...](http://stackoverflow.com/questions/7297001/if-close2-fails- with-eio-will-the-file-descriptor-still-be-deleted)

Something which I would consider to be "the answer" from Linus for Linux:

[http://linux.derkeiler.com/Mailing- Lists/Kernel/2005-09/3000...](http://linux.derkeiler.com/Mailing- Lists/Kernel/2005-09/3000.html)

[http://linux.derkeiler.com/Mailing- Lists/Kernel/2005-09/3171...](http://linux.derkeiler.com/Mailing- Lists/Kernel/2005-09/3171.html)

[http://linux.derkeiler.com/Mailing- Lists/Kernel/2005-09/3202...](http://linux.derkeiler.com/Mailing- Lists/Kernel/2005-09/3202.html)

(Apparently, the first thing Linux does is deallocate the file descriptor; /then/ it starts flushing pending written data. If this process is interrupted, it will return EINTR, but the file descriptor itself is already deallocated, and may have been reused long before close() returned.)

Honestly, after reviewing all of this material, I think the author of this post might simply not know what "unspecified" means (or, alternatively, is making an abstract problem sound overly concrete and blown somewhat out of proportion).

When a specification says "unspecified", it doesn't mean "unknown at runtime, could be anything nondeterministically". It only means that the standard did not specify the result.

Often, this is because there is either a historical artifact or reasonable practical constraint that was posed by one or more vendors that were implementing the standard that meant different implementations simply /weren't/ going to agree on any one value.

However, for any given implementation, there very likely might be a correct answer. In the case of Linux, you should not retry calls to close(): the primary maintainer has told us that it deterministically guarantees the file descriptor is closed even if the function returns EINTR (critical edit: the wording of this sentence was incorrect in original draft).

That said, there may be another implementation out there, possibly one we may use (but with a standard like this, could easily be one that we have never heard of and that already died a death of obscurity years ago) that has the opposite behavior: where EINTR interrupts something (such as pending writes) before the file descriptor is closed, requiring developers to retry.

It is, however, unfortunate that this happened, and the author is right about issues for developers who attempt to use this API "without assuming more than the standard specified".

That said, there may be other options, such as using SA_RESTART, as argued in this discussion I just found (which also happens to talk about the meaning of "unspecified" ;P):

<http://permalink.gmane.org/gmane.os.hurd.devel.readers/265>

(edit:) Oh, and people may find it interesting that standards like this are often modified over time, with "interpretations" and outright edits. As an example, here is some vaguely related discussion regarding closing file descriptors during process termination:

<http://austingroupbugs.net/view.php?id=498>

(edit:) Some more existing discussion:

[https://sites.google.com/site/michaelsafyan/software- enginee...](https://sites.google.com/site/michaelsafyan/software- engineering/checkforeintrwheninvokingclosethinkagain)

[http://lists.freebsd.org/pipermail/freebsd- threads/2010-Augu...](http://lists.freebsd.org/pipermail/freebsd- threads/2010-August/004866.html)

[http://unix.derkeiler.com/Newsgroups/comp.unix.programmer/20...](http://unix.derkeiler.com/Newsgroups/comp.unix.programmer/2009-01/msg00155.html)

<http://www.cpptalk.net/image-vp121851.html>

<http://programming.itags.org/unix-linux-programming/79468/>

Another (very long) Linux-specific thread involving some more responses from Linus:

[http://lkml.indiana.edu/hypermail/linux/kernel/0207.2/0391.h...](http://lkml.indiana.edu/hypermail/linux/kernel/0207.2/0391.html)

[http://lkml.indiana.edu/hypermail/linux/kernel/0207.2/0409.h...](http://lkml.indiana.edu/hypermail/linux/kernel/0207.2/0409.html)

[http://lkml.indiana.edu/hypermail/linux/kernel/0207.2/1173.h...](http://lkml.indiana.edu/hypermail/linux/kernel/0207.2/1173.html)

In this thread we also find someone else claiming the standard is "broken":

[http://lkml.indiana.edu/hypermail/linux/kernel/0207.2/0413.h...](http://lkml.indiana.edu/hypermail/linux/kernel/0207.2/0413.html)

With a possibly not useful response, that at least demonstrates that the examples from the specification did not retry:

[http://lkml.indiana.edu/hypermail/linux/kernel/0207.2/0395.h...](http://lkml.indiana.edu/hypermail/linux/kernel/0207.2/0395.html)

<comment><USER6> What about other operating systems like FreeBSD, Solaris and OS X? I have to support many platforms and my code is heavily multithreaded.

<comment><USER5> FreeBSD: It seems pretty clear in FreeBSD that you should not retry the call to close(); sys_close() calls kern_close() which locks the file, frees the file descriptor (!), and /then/ calls closef() (which, if capable of returning EINTR, is already too late).

[http://lists.freebsd.org/pipermail/freebsd- threads/2010-Augu...](http://lists.freebsd.org/pipermail/freebsd- threads/2010-August/004866.html)

<http://fxr.watson.org/fxr/source/kern/kern_descrip.c>

Mac OS X: Here you should not retry, but you should also be careful; depending on whether you are UNIX2003 you will get different behavior from the close() function from libSystem, directing you to either the syscall close() or close_nocancel().

If you end up with close(), then the first thing that happens is __pthread_testcancel(1) is called, and if the thread is cancelled it will return EINTR before doing anything else: in this case, you would need to retry.

However, I think close_nocancel(), which calls closef_locked(), might be capable of returning EINTR, which will be held and only returned from close_internal_locked() after _fdrelse() has already removed the descriptor.

So, if it is the case that EINTR is capable of being returned from the closef_locked() call, you would need to /not/ retry, which thereby means that the close() version of this call is impossible to use safely on Mac OS X: if I were you I'd avoid it to use close_nocancel() (explicitly if warranted).

[http://opensource.apple.com/source/xnu/xnu-1699.24.8/bsd/ker...](http://opensource.apple.com/source/xnu/xnu-1699.24.8/bsd/kern/kern_descrip.c)

Solaris: Unfortunately, I do not know enough about Solaris to provide any useful commentary. :(

<comment><USER7> Notice how long and complex your discussion of this issue is, and how many different systems you have to investigate in depth to even begin to form a coherent picture.

All we're trying to do is close a file safely. This is core functionality that virtually every application will have to depend on. It would be like free() saying it might be interrupted by a signal, and you have no way of knowing if the memory has actually been deallocated or not. That would be insane.

</comment></comment></comment></comment><comment><USER8> My first reaction to the thread-safety problem: fstat before close, if it fails with EINTR, fstat again. Then you can tell both the state of the fd (since fstat will return EBADF if it's closed), and if it's still a valid fd, _what_ file it actually refers to. So if another thread _did_ open() and reallocate the same fd number, you'll get a different struct stat back, and then know not to retry the close.

As in:

      int safeclose(int fd)
      {
      	struct stat before, after;

      	if (fstat(fd,&before))
      		return -1;

      	while (close(fd)) {
      		if (errno != EINTR)
      			return -1;

      		/* If fstat() fails, our close() succeeded */
      		if (fstat(fd,&after))
      			return 0;

      		/* If we've got a different file, our close() succeeded */
      		if (before.st_dev != after.st_dev
      		    || before.st_ino != after.st_ino /* whatever other necessary checks here... */)
      			return 0;
      		/* Otherwise we've got the same file still open, retry */
      	}

      	return 0;
      }

Any problems/races I'm not seeing? Is comparing 'struct stat' potentially not 100% reliable?

<comment><USER9> It looks like if the other thread opened the same file you might get a false positive.

        struct stat {
            dev_t     st_dev;     /* ID of device containing file */
            ino_t     st_ino;     /* inode number */
            mode_t    st_mode;    /* protection */
            nlink_t   st_nlink;   /* number of hard links */
            uid_t     st_uid;     /* user ID of owner */
            gid_t     st_gid;     /* group ID of owner */
            dev_t     st_rdev;    /* device ID (if special file) */
            off_t     st_size;    /* total size, in bytes */
            blksize_t st_blksize; /* blocksize for file system I/O */
            blkcnt_t  st_blocks;  /* number of 512B blocks allocated */
            time_t    st_atime;   /* time of last access */
            time_t    st_mtime;   /* time of last modification */
            time_t    st_ctime;   /* time of last status change */
        };

The only one of these likely to change is st_atime, but I don't think that's guaranteed to update. (I think different behaviours can be compiled into the linux kernel, including "only update atime if it equals ctime or mtime".)

<comment><USER10> Or mounting a filesystem with the noatime option, which is common.

</comment></comment></comment><comment><USER11> This is a good example but more generally it is hardly possible to write serious long running and reliable software targeting posix in general...

<comment><AUTHOR> It isn't? The use of close(2) is the only place I'm aware of kivaloo assuming anything POSIX doesn't provide.

<comment><USER6> Now that I think about it, dup2() to an existing file descriptor must be broken in a similar manner. In fact, with dup2() you can't even figure out whether the implicit close() succeeded.

<comment><USER12> _From the man page:_

      If  newfd was open, any errors that would have been reported at close(2) time are
      lost.  A careful programmer will not use dup2() or dup3() without closing newfd
      first.

<comment><USER5> Which is actually "interesting" advice, as it cannot be followed in a multithreaded program without insanely extensive process-wide locks ;P (as any call to open() between close() and dup2() has an irritatingly high probability of grabbing whatever file descriptor you just freed up). (Of course, most usages of dup2() are in contexts just after a fork() or at the beginning of main(), so I guess this could often be practical; it still seems unfortunate.)

<comment><USER13> Maybe this can still be worked around by copying the target fd first so it can be closed after fdup()ing the source fd, e.g.

// Assume x and y are open fds and we want to replace y with a copy of x

z = open("/dev/null", O_RDONLY); // Guarantees no other thread is using z

dup2(y, z);

dup2(x, y);

close(z);

<comment><USER5> Hah! (You don't actually need that open("/dev/null") trick, though: you can just use dup(). ;P)

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> Its time to stop reusing identifiers in kernels, libraries etc. There is no good reason not to use a uuid pretty much universally?

<comment><USER15> Other than compatibility with 30 years of software and the huge annoyance of using an identifier that doesn't fit in a machine word. The integer file descriptor is here to stay.

<comment><USER14> New application environments are created all the time.

A new api that exports the true internal (uuid-based) identifier need not obsolete existing (broken) applications.

</comment></comment></comment><comment><USER16> What about checking how language implementations solve this for their 'closes' ?

<comment><USER17> If you mean different other languages, that's interesting... Python seems to be completely oblivious to the issue and signals (Modules/_io/fileio.c internal_close() and others). There is SA_RESTART added if possible in Modules/faulthandler.c - but I'm not sure what conditions activate it.

<comment><USER5> Yeah. This can be a serious issue, for the record. It is difficult for me to come up with an experience that has made me quite as angry as calling urllib.urlopen().read() in a highly-contended program (Apache2 mpm_worker) and getting an EINTR exception bubbled all the way up to the top... I mean, what did they expect I do: retry the entire HTTP fetch? ;P

I finally switched to mpm_event, which caused me to no longer get signals constantly, but until then I was seriously running a patched copy of Python to work around this issue; an issue, by the way, which was reported at the beginning of 2007, and only fixed midway through 2010. :(

<http://bugs.python.org/issue1628205>

The general idea, however, is that if you are using a low-level primitive, one that nigh unto maps directly to a system call (as opposed to urlopen ;P), then you actually "want" (supposedly) EINTR to not be handled for you, as it might be your intention to use it to do something valuable (just as you might from a C program).

</comment></comment></comment><comment><USER18> close(2) can also block even when the socket is set to non-blocking.

</comment><comment><USER19> What about wrapping the first solution into a mutex lock ? Then the multithreaded behavior will disappear. And closing the fd might not be the most frequent operation usually so should not have much of performance impact.

<comment><USER14> Which mutex? What about threads you don't 'own', inside libraries for instance? I don't think you will be able to find "one ring to rule them all"

<comment><USER19> Oh if they use the close direct, too bad. But libraries that launch the starships behind your back with no control left to you are also not the best gift.

Standard's bug aside, I wonder how the practical implementations behave. Is this condition reproducible ?

</comment></comment></comment><comment><USER20> Amazing how, even in 2011, PC Lusering is still the Right Thing.

</comment><comment><USER7> This gets even stranger than you might think. Consider fclose()[1], which says, after the ordinary disclaimer that POSIX defers to the C standard, _"The fclose() function shall perform the equivalent of a close() on the file descriptor that is associated with the stream pointed to by stream."_.

And as part of the C standard, we have _"After the call to fclose(), any use of stream results in undefined behavior."_.

Uh-oh. So does this imply that fclose(), at least, has to do the job right, or does it mean it inherits the close() flaw, _and_ leaves no defined way to try and clean up the mess?

[1] [http://pubs.opengroup.org/onlinepubs/9699919799/functions/fc...](http://pubs.opengroup.org/onlinepubs/9699919799/functions/fclose.html)

<comment><AUTHOR> Given that the standard states

        [EINTR]
            The fclose() function was interrupted by a signal.

I think it's safe to say that fclose is allowed to fail with no defined way to clean up the mess.

<comment><USER7> Yeah, I was just looking at that after I posted my initial comment, and I think I agree with you. That's the only reading I can see that doesn't create more questions than it answers.

I think in this case, Occam's razor says "this part of the standard is not fully thought through".

<comment><AUTHOR> _this part of the standard is not fully thought through_

I agree... and this terrifies me, given that EINTR is mentioned in the man page for close(2) back in BSD Net/2, over 20 years ago.

<comment><USER21> _this terrifies me_

Now think about all the libraries and application that end up calling close() and fclose().

Add a few abstraction layers and good luck figuring out if closing a file is safe in a multithreaded Java app.</comment></comment></comment></comment></comment>


Why (Some) Smart People Hate Programming - <AUTHOR> http://symbo1ics.com/blog/?p=711 <comment><USER2> Parentheses are not Lisp's problem. The lack of useful and compatible libraries is.

Lisp is basically a ghetto where it's every man for himself. You have all the tools to build the most wonderful abstractions ever, and many people do. The problem is that person A's abstractions don't play well with person B's. And that means where the other less-perfect languages have libraries that everyone can share, with Lisp, you're stuck with your own.

This is not a result of syntax flexibility, though, it's the result of attitude. Perl has pluggable syntax and nine billion different ways to do OO. And yet, all the syntax extensions are composible. An object created with Moose can be subclassed "by hand". It all works.

It's attitude, not tools. If you believe that you're the smartest person in the world and that only you see the light... well, it's going to be lonely. And programming is about 50% being smart and 50% not reinventing the wheel. The attitude of a "smug lisp weenie" immediately puts him 50% behind.

(BTW, I say this as a CL fanboi. I love the language. I can just never do anything fun with it, because I have to decipher ten different libraries for writing unit tests, none of which have all the features I need.)

<comment><USER3> If the issue is a lack of libraries, Clojure should solve the issue completely.

<comment><USER4> It's not a lack of libraries - there are probably too many libraries, and all of them subtly (or blatantly) incompatible and difficult to use together.

Clojure, though, is a nice option.

</comment></comment></comment><comment><USER5> In the last paragraph, the author talks about how (paraphrasing - the site won't reload, so I can't get an exact quote) Lisp provides a set of powerful tools that you can use to build any abstraction.

I haven't really used Lisp beyond a few toy projects, but it seems, in this respect, to be similar to Javascript, which I do have quite a bit of experience with. The classic example in Javascript is inheritence. In his "Advanced Javascript" talks, Crockford lists three different patterns for inheritence, each of which is incompatible with the others. Furthermore, I know from experience that each of the techniques has some severe drawbacks - some (such as Crockford's "parasite inheritence") are incredibly wasteful of resources, keeping a copy of each function declared for the object with every instance. Others, such as "pseudoclassical inheritence" don't work if you want to inherit from a native object.

I use Javascript for my day job, but my favourite language is Ruby. And I can't help missing the fact that it is much easier to share code with other people in Ruby (largely because it does have defined mechanisms for code reuse) than it is in Javascript. I'll never get two objects in Ruby that can't be used the same way because their system of construction is different.

I appreciate that such flexibility helps with the expressiveness of the language, but when expressiveness comes with the price of not being able to easily work with others, I can't help wondering if the price is too high.

<comment><USER6> This depends on what you mean by "I'll never get two objects in Ruby that can't be used the same way because their system of construction is different." You have very few guarantees in Ruby, even fewer than in JavaScript.

      new_number = Fixnum.new # FUUUUUUUUUU-
      # Well, OK…
      new_number = Integer.new # OK, seriously?
      # Fine, then. Maybe some specialized classes are exceptions.
      this_should_work_right = BasicObject.new
      # Ah, it worked!
      puts this_should_work_right # WTMFH?!?!?!?!

      ClassA = Struct.new(:name, :age)
      ClassB = Class.new {attr_accesor :name, age}
      a = ClassA.new
      b = ClassB.new

      a[:name], a[:age] = 'Fred', 42
      b[:name], b[:age] = 'Rick', 24 # Won't work

<comment><USER7> It took me a while to figure out how your comment was relevant to your parent, when I realised that you interpreted "system of construction" differently. (I humbly posit that) You are demonstrating how to create an instance of a Struct or Class, whereas the parent's intent was how the Struct or Class is implemented behind the curtain.

</comment></comment></comment><comment><USER8> While I can appreciate the sentiment, it's kinda funny to say "Once you get past Lips's parentheses..." to someone who's just said, "I don't like fighting with languages."

<comment><USER9> First, that wasn't said. It was "[o]nce you get past Lisp's idiosyncrasies", such as those described in a later post. It does not talk about getting past fundamental language features that are perhaps missing.

</comment></comment><comment><USER10> Cached: [http://webcache.googleusercontent.com/search?q=cache:6F5dfOz...](http://webcache.googleusercontent.com/search?q=cache:6F5dfOz9OisJ:symbo1ics.com/blog/%3Fp%3D711+http://symbo1ics.com/blog/%3Fp%3D711&hl=en&gl=us&strip=1)

</comment><comment><USER11> I personally believe we have so many programming languages because we have many problems to solve. When it comes to bad programmers, that's because they use and defend just one language. A good programmer is one that knows as many languages as possible and uses the correct language for the job. For example, if you need to create a nice UI then you use CSS and Javascript. If you need a simple server side language then you use PHP. If you need a program to be fast yet small then you use C. If you need scalable performance then you use Java. All of these languages have their purpose and using them correctly makes a good programmer.

</comment><comment><USER12> It's funny, I'm not particularly fond of formal mathematics, and I always thought it would be made really easier if it looked more like programming. One thing I particularly hate about math are the inconsistent and often not very legible notations.

Let's also not forget that Lisp was originally conceived as an alternative mathematical notation.

<comment><USER13> YES! As a programmer it really annoys me the way mathematicians insist on using single letter variable names. Programmers doing this get laughed out, no exceptions.

Even worse, using the same single letter and adding ` (prime) after it different numbers of times! WHY IS THIS ACCEPTABLE?

I understand a lot of it has to do with blackboards, but this does not apply in a teaching scenario! You do not need to worry about characters-per-minute on the blackboard until everyone in the room is a maths prostgrad. Don't inflict that shit on me and my fellow computational complexity students. Any minor ergonomic gains are offset by that fact that half the room has no fucking idea what is being written about.

edit: the WORST thing is when all the single-letter variable names are letters that RHYME. e, c, d, p, g. There are other letters dammit! We're not all on your end of the autistic spectrum! Have some consideration!

</comment></comment><comment><USER14> I think this is why some programmers go through periods of having to be told what to do. It's easier to swallow telling yourself you're working with a certain programming language when it's assigned.

I think if DHH hadn't had the php constraint, he might have got lost trying to decide which church was true. After a few years of php he was able to forge ahead with a language that fit his ideals better.

I think if someone finds themselves similarly stuck it might be good to spend most of their programming time on something popular for a while.</comment>


Why It's Time to Replace SMS Text Messages with Safe Messaging Apps - <AUTHOR> https://zangi.com/news/en/replace-sms-text-messages/ <comment><USER2> But SMS is pretty universal--you don't have to worry about whether the person you're messaging has the same app.

</comment><comment><USER3> Blah blah blah _our product will save you!!!_

(as soon as all of your friends also switch to our product, data required, prohibited where void, FUD FUD FUD, 5 pages of privacy policy) And the improvement vs. ubiquitous SMS is...GIFs and stickers. Get off my lawn!

</comment><comment><USER4> Does anyone else worry about their SMS getting MITM'd? Particularly for 2FA.</comment>


Ask HN: How do you measure your level of expertise with a programming language? - <AUTHOR> I've been reading about Quantified Self (https://quantifiedself.com/) and the empirical measurement aspect of it seems like it could be a good fit for measuring level of proficiency in using a programming language while learning it.<p>I plan on tracking things like the learning resources I use and how much time I spend programming. But what benchmarks, milestones, or determining factors would you use in determining how "good" you are with a programming language? <comment><USER2> I used to informally pay attention to:

1) How frequently do I have to google for the correct syntax

2) How frequently do I google for an answer to a question I have already asked.

Now, for the most part, the central parts of most languages just are what they are and follow predictable patterns. Now, for me the measure I use is more like:

"Given a problem, can I accurately estimate the cost/effort required to provide a solution?"

That will depend on my ability to answer more specific questions like:

How well do I understand the ecosystem that surrounds a language?

If I have a problem to solve, do I know if that can be solved with the "standard libraries"?

If I need extra libraries/packages, do I know what those actually are?

If so, can I use those libraries effectively even if I am offline?

and so on.</comment>


Becoming a Coder - <AUTHOR> https://www.redhat.com/en/command-line-heroes/season-5/becoming-a-coder <comment> user00012-ab Can you pay to get your content added to Hacker News now?</comment>


2016 was a hard year to be an Apple fan - <AUTHOR> https://www.engadget.com/2016/12/29/2016-apple-fans-lose/ <comment><USER2> Hard for Mac users mostly. Then again, Mac users make all the stuff for iPhone, Watch and iPad users to enjoy, so I suppose the difficulty carries everywhere indirectly.

If you read the recent Bloomberg piece ([https://www.bloomberg.com/news/articles/2016-12-20/how- apple...](https://www.bloomberg.com/news/articles/2016-12-20/how-apple- alienated-mac-loyalists)) it doesn't sound like anything will improve.</comment>


Oracle Product Manager Claims He Was Forced Out for Refusing to Sell Vaporware - <AUTHOR> https://www.theregister.co.uk/2019/12/04/oracle_product_manager_lawsuit/ <comment><USER2> I know someone who was fired from Oracle for exactly the same reason and he wears it as a badge of honour. It's literally on his CV and of course it's the first thing everyone asks about during interviews.

</comment><comment><USER3> Most software is never 100% feature ready for complex implementations. Many new features are added to the roadmap because of customer requirements. Customers can also impose penalties on features that are not delivered on time or ever including non-payment or a multiple of economic damages.

This of course does not necessarily mean that Oracle was not practicing vaporware, but it seems unlikely.

A smart/wise customer would avoid Oracle in the first place.

[https://www.techrepublic.com/article/how-to-avoid-getting- su...](https://www.techrepublic.com/article/how-to-avoid-getting-sued-in-your- oracle-to-the-cloud-migration/)

[https://www.theinformation.com/articles/oracles- aggressive-s...](https://www.theinformation.com/articles/oracles-aggressive- sales-tactics-are-backfiring-with-customers)

This is a comment from the original article:

It pains me to say this but it doesn't sound like a big issue here, more like they put a Project manager in a Sales/Account management role with inevitable consequences. If I must be fair to Oracle (must I?) it sounds like he was asked to project manage/account manage customers according to a Roadmap - doesn't sound too unreasonable to me. Most software companies would go bankrupt if they were asked to deliver something that is feature complete on day 1. Now if he was asked to promise delivery of software that he knew 100% would never be delivered as opposed to features that were just moving up and down a prioritised product roadmap - thats a different issue.

-

</comment><comment><USER4> Good, Oracle lies about their products all the time. They did it to my company when we bought software licenses and I'm sure they do it to others.

</comment><comment><USER5> Oracle does this all the time. I was there during the Oregon obamacare exchange fiasco. They had teams scrambling to make it actually work long after it was supposed to be online. It never worked period!

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

</comment><comment><USER6> happens far too often: Fake it till you make it is fraud at a level that scales</comment>


Redox OS Release 0.4.1 - <AUTHOR> https://github.com/redox-os/redox/releases/0.4.1 <comment><USER2> I hate the internet today.

<comment><USER3> You hate that people experiment with numerous layers of the stack and reinvent old systems as an act of love and appreciation for all of us for free?

I'm curious what you mean here. You want original SysV? Or you mean their website sucks? We sucks for encouraging either?

<comment><USER3> Sigh. I'm guessing it's April fools and I should have waited for the tab in Firefox. I did this to myself. You don't even Fools pages, just links.

<comment><AUTHOR> This was true experimentation into the limits of Redox customization, certainly just as an Easter present.

</comment></comment></comment></comment><comment><USER4> Notable changes:

Standardized resolution Improved color scheme Improved terminal font Beautiful /etc/issue artwork Beneficial sound effects, for improved touch typing Efficient, automatic shell chooser Removal of networking, for security Removal of window manager, for efficiency Removal of ACPI features, for simplicity Increased CPU usage Increased ISO size Known issues:

None

<comment><USER5> First I thought _you_ are trolling. Then I saw _they_ are trolling. Well played!

</comment></comment><comment><USER6> I hope I can use firefox on Redox oneday.

<comment><AUTHOR> Yes, one day. Netsurf is working on Redox now.

<comment><USER7> Really surprised it is not using Servo.

That said, i really wish Netsurf would polish the SDL variant more as it seems to be more forgiving to get going than trying to get it to agree with GTK...</comment></comment></comment>


Show HN: Readdu – the last RSS / Feed reader you'll ever use - <AUTHOR> https://readdu.com/

<comment><AUTHOR> Hey guys,

This is my first submission here and I wanted to give you few more details on the project. My main goal for Readdu was to build it with "as little design as possible". I wanted to give prominence to content, push UI away to the second plan, and to remove the slavery of marking stories "READ". I also wanted to make feed management easy.

The result is an RSS reader with a markdown-like editor, single-focus stream, "ambient" UI, automatically decreasing counters, and one-click catalog of feeds. I hope you enjoy it!

</comment><comment><USER2> This looks really interesting. I'm always in favor of more RSS-readers competing, and Markdown-like also gets bonus points. One thing I'd love to see, as someone who surveyed the field back when Google Reader shutdown and found my new RSS home (Newsblur), is a comparison table/list.

In other words, how does Readdu compare to Newsblur, Feedly, TTRSS, etc. (Bonus points for being transparent on where you don't have an advantage as well as where your advantages are)

<comment><AUTHOR> Thanks for the kind words. I fear that tabular comparisons are poor at capturing the overall experience with the product, which was one of the main motivations to create Readdu. Some other readers feel clunky, filled with lots of controls and UI switches, lots of visual noise, and also require you to click around much (marking stories "READ", dragging them to folders etc.). How do I explain that in a table? ;)</comment></comment>


Ask HN: CSS – ditch floats and use flexbox? - vanilla-almond Hi all
I'm currently creating a website and am wondering what people's thoughts are on adopting flexbox for website layouts.
Flexbox now has good support on modern browsers, but there are still a lot of older browsers in use.
Do you think it's too early to ditch floats for layouts in CSS? Or do you think flexbox is now ready for widespread adoption? <comment><AUTHOR> That would depend entirely on the browsers you need to support. For example I have a product aimed at web designers. Our support in terms of our marketing site for the up to date flexbox spec is about 98%.

Our product is used by their clients. Some of those people are using IE8 and 9. So the approach we take for our product marketing site and the product itself is different.

Flexbox however isn't really designed for full page layout. The UI items it is really great at are often much easier to deal with in terms of legacy support than you entire layout is. You can often use flexbox to enhance a design even if you can't go all in. I would really encourage you to have a look at this video [https://www.youtube.com/watch?v=_98SE8WUvLk](https://www.youtube.com/watch?v=_98SE8WUvLk) Zoe works for booking.com and demonstrates how they use flexbox AND ensure legacy support.

</comment><comment><USER2> Use Modernizer. Then you can "gracefully degrade".

.no-flexbox { // fallbacks }

Or you could do the inverse and style with .flexbox { // enhancements } for browsers that support flexbox. Then you can "progressively enhance".

I hate both of the scare quoted terms.

E:

Or if your layout isn't too complex you can use standard fallbacks. Flex rules will be ignored by browsers that don't support them so using Modernizer is a bit overkill.

<comment><USER3> [http://caniuse.com/#search=flexbox](http://caniuse.com/#search=flexbox)

I'd suggest just _using modern CSS_.

<comment><USER2> Good luck targeting IE8/IE9. Some users/fields still need to support that. Such as in healthcare, where many sites have to work back to IE6/IE7 (which is hell)

Depending on whether or not they expect to have users from IE8/IE9 they should degrade/enhance properly to support the maximum amount of users. If they don't expect people to be using IE8/IE9 then just use flexbox.

For basic scenarios you can still get something acceptable for IE8/IE9 with bare minimum work.

<comment><USER3> Although this is a purely philosophical disagreement, I strongly support making new web pages _actively discourage_ the continuing use of legacy browsers.

<comment><USER2> As do I, for personal projects/personal use. When my company needs to create a functioning website in IE7 for healthcare professionals because _they have to use IE7 and don 't have a choice in updating_ then it better work in IE7...

My point was "if his target audience uses IE8 they should support IE8". It's a simple question for any dev to ask themselves and it comes with a simple answer.

If you expect to sell anything or provide a service - your competitor that supports IE8 will win a number of your customers over by supporting IE8 better than you do. If you can afford to lose those sales to a competitor, feel free to disregard IE8. (It's often only a negligible amount of sales anyways.)

I don't think _anyone_ supports legacy browsers because they _want to_.</comment></comment></comment></comment></comment>


Startup Idea: Marketplace For Social Media Accounts - <AUTHOR> http://anthonypompliano.com/2013/11/06/startup-idea-marketplace-for-social-media-accounts/

<comment><USER2> _Revenue: From a personal perspective, I want the Twitter handle bad enough that I would be willing to pay for it._

You might be in the minority here. If a new social network comes along, and byoung is taken, I'll just register byoung2.

Also consider the side effect: if there is a marketplace for social media accounts, you will encourage squatting. Every new social media platform will be flooded with new accounts for all celebrities and companies to be resold at a premium.</comment>


Ask HN: Billing rate for contract work for a startup - <AUTHOR>

I'm going to be doing contract work for a startup and I'm not sure what to charge. I have a personal interest in the project the startup is working on.
I will mostly be doing front-end web development, and I have 5-10 years experience in the relevant technologies (5 years doing it for money, before that just for fun). If it matters, I am in my mid 20s and located in the United States.
Any suggestions for what rate I should charge? I don't want to charge too much, since I really want to see this startup succeed. I don't want to charge too low because I need to pay my rent. This is my first time doing contact work, so any other tips would be appreciated as well.
Also, any links to other relevant HN threads would be helpful too.
Edit: I forgot to explicitly mention this, but numbers or number ranges would be extremely helpful. I'm really clueless on what to bill, so I need something to work off of. <comment><USER2> Think of how much you need to make, and how much you would get paid with a full-time position. If the work is consistent and you can bill 30 hours a week 50 weeks a year, you need to base your income on 1500 hours a year. You also need to consider that you won't get the benefits of being an actual employee, which means as soon as the contract ends, you may need to look for more work (i.e. you need to have money saved up) and you'll need to pay for health insurance and your entire FICA by yourself. Also, it depends on your location and how far you have to commute, if at all. Another factor is whether or not you'll have stock in the company.

So, in this scenario, you could bill $50/hr and make a comfortable $75k/yr. If the conditions are less than ideal, the contract is shorter, or you live right in SF or NYC, you should certainly consider charging more.

Either way, unless you have stock in the company, regardless of whether you want them to succeed, the only thing you're getting out of it is your paycheck, so make it worthwhile!

<comment><USER3> Another way to help calculate the price is: If you were doing this full time, how much take-home post-tax money would you need? If you need $80,000/yr post- taxes then $80/hr will get you pretty close after self employment, federal (income, fica, medicare, ss, etc), and state taxes.

Granted, this calculates how much you'd NEED to charge to have X income, but it does kind of help with the process of starting to determine a ballpark figure.

</comment></comment><comment><USER4> Charge the same you normally charge, but tell them "I'll work 1 week for free because I love you guys, but after that I'm gonna charge my normal rate".

Lowering your price is going to lead to bad feelings on both sides. Don't do it.

</comment><comment><USER5> In this market, it's possible to charge around $125 or more in SF or NYC, especially if it's Ruby. You can charge more for native apps / html 5 skills. Cisco was hiring for an HTML 5 position at $200 / hour.

</comment><comment><USER6> In my experience, at Fortune 500 companies, front-end web developers are billed at $60-90 (before tax) depending on the company, for your range of experience.</comment>


Apache Airflow Summit: Virtual Conference on Python-based workflow scheduler - <AUTHOR> https://airflowsummit.org/ <comment><AUTHOR> Apache Airflow is a platform created by the community to programmatically author, schedule and monitor workflows as DAG in Python. Originating at AirBnB, it is now an Apache project used by hundreds of projects around the world.

[https://airflow.apache.org/](https://airflow.apache.org/)</comment>


Show HN: Collection of Resources for Building Time Series Database in AWS - <AUTHOR> https://coderecipe.ai/search?q=%23timeseriesdb <comment><AUTHOR> Hi all,

There seems to be multiple ways of storing time series data in AWS based on different requirements, but I always have a hard time finding them all. So, I decided to create a collection myself :)

Some of the resources are labelled as "Crosspost" meaning they are not full fledged code implementations as didn't get time to do that yet. Let me know if there's a specific "crosspost" resource you would like to see implemented or if I am missing anything!</comment>


Dragons, Memory and Navigating the Globe Using Only Your Wits - <AUTHOR> http://nautil.us/blog/dragons-memory--navigating-the-globe-using-only-your-wits

<comment><USER2> Nice introductory article to Polynesian navigation, too bad the title is so misleading (dragons?) and the quip at the end is wrong. Polynesian navigation did almost die out, but the Polynesian Voyaging Society, a child of the Hawaiian Renaissance, has worked hard to keep it alive. They now have more than one reproduction double-hulled voyaging canoes traveling the world with traditional navigators:

[http://www.hokulea.com](http://www.hokulea.com)</comment>


The Troubadour and the Lady - <AUTHOR> http://www.newyorker.com/culture/persons-of-interest/the-troubadour-and-the-lady-kaija-saariaho-lamour-de-loin <comment><USER2> I could not hit Spotify quickly enough. I am starting with "L'Amour de Loin". First "song" in and it is fairly comtemporary classical.

I am just an amateur musician and I am amazed at those with those that could hear such minute details. I have attended various rehearsal session for classical music, and it is astonishing to hear the conductor (or the choral maestro) pick out a certain note in a certain measure from a certain instrument. I can recognize a bad ensemble from a good one, but such detail at that level is simply amazing

</comment><comment><USER3>
        She started composing with a PDP-10 supercomputer.
        In one work from that time, "Vers le Blanc," she
        used a program called Chant to create three synthetic
        voices, which over fifteen minutes change pitch
        almost imperceptibly.

I didn't know PDP-10 was used in this area.</comment>


Recruiter Trolling on GitHub - <AUTHOR> https://github.com/thoughtbot/liftoff/pull/178#issuecomment-57688590

<comment><AUTHOR> Just noticed the account had been removed.

The comments:

[https://dl.dropboxusercontent.com/s/qy3o7nf1422iocc/2014-10-...](https://dl.dropboxusercontent.com/s/qy3o7nf1422iocc/2014-10-02%20at%206.26%20PM.png?dl=0)

[https://dl.dropboxusercontent.com/s/0cpkav56yq3c3xq/2014-10-...](https://dl.dropboxusercontent.com/s/0cpkav56yq3c3xq/2014-10-02%20at%206.27%20PM.png?dl=0)

[https://dl.dropboxusercontent.com/s/0xqd96jvqhudn0i/2014-10-...](https://dl.dropboxusercontent.com/s/0xqd96jvqhudn0i/2014-10-02%20at%206.27%20PM%20%281%29.png?dl=0)</comment>


Volkswagen – detects when your tests are run in a CI server, and makes them pass - <AUTHOR> https://github.com/auchenberg/volkswagen <comment><USER2> Hi, co-creator of volkswagen here. Just some fun trivia about the project, which Kenneth and I obviously made as a joke years back when Volkswagen got caught cheating:

The Node module actually works. If you use it, it will make all your tests pass.

When writing the code, I put the logic for detecting if code is being run on a CI server into a separate node module called is-ci[1] (which the volkswagen module then depends on). That module (later split out into ci-info[2]) turned out to be so useful for actual work, that today it's being used by both React and the npm cli.

I only found this out recently. Imagine the surprise when a tiny part of a joke project you created years ago turns out to be one of your most popular open source projects :D

[1]: [https://www.npmjs.com/package/is-ci](https://www.npmjs.com/package/is- ci) [2]: [https://www.npmjs.com/package/ci- info](https://www.npmjs.com/package/ci-info)

<comment><USER3> When Kenneth joined our team to work with us, I had no idea he was the co- creator of volkswagen module. One day over lunch we were making jokes over how funny that project is and we should legit add it to our workflow for shits and giggles. He goes "yeah, I created that". Our faces dropped. Whoa!

</comment></comment><comment> jay-anderson Be sure to checkout the .gitignore: [https://github.com/auchenberg/volkswagen/blob/master/.gitign...](https://github.com/auchenberg/volkswagen/blob/master/.gitignore)

<comment><USER4>
        # .gitignore:
        node_modules
        emissions
        facts

lol

<comment><USER5> This little gem makes the whole thing for me

</comment></comment></comment><comment><USER6> "If you want your software to be adopted by Americans"

Not to get too off-topic, but while taking the piss out of America is all good fun it should be emphasized that the original nature of the scandal wasnt just Americans whining about dirty engines.

[https://en.wikipedia.org/wiki/Volkswagen_emissions_scandal#L...](https://en.wikipedia.org/wiki/Volkswagen_emissions_scandal#Legal_and_financial_repercussions)

20 countries, the EU included, filed criminal charges against high level executives at Volkswagen factories across the globe. the CEO himself was arrested in Germany.

<comment><USER7> As an American I find it endlessly amusing when Europeans poke fun at us, the history of the 21st century so far makes it almost too easy. The jokes write themselves.

But yes, Europeans should be as mad as anyone, the con of clean diesel that has been foisted upon them has killed at least a few hundred over the years.

<comment><USER8> > clean diesel…has killed at least a few hundred over the years

        [citation needed]

<comment><USER9> Particulates and NOx. [http://www.iiasa.ac.at/web/home/about/news/170918-diesel- nox...](http://www.iiasa.ac.at/web/home/about/news/170918-diesel-nox.html)

<comment><USER10> "Health effect estimates"

"This new study estimates that ..."

<comment><USER11> Which means people did a study, and drew some conclusions, which you reject in a comment on the internet. Do you have research that contradicts theirs? do you have concerns with their methodology?

<comment><USER10> _estimates_ vs "has killed".

<comment><USER7> Coal plants have killed. NOx emissions have killed. Lead has killed. Nuclear waste has killed. Gamma rays have killed.

You're trying to complicate something that is very simple.

<comment><USER9> It is of course entirely possible that coal/lead/nuclear/etc. provide way more benefit than the harm, too.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> That title though. I clicked thinking there was yet another scandal in the brewing but it's actually a software named volkswagen. If nintendo goes batshit when people refurbish gameboys I wonder what volkswagen will do.

<comment><USER13> I wonder if this would fall under protections for satire.

<comment><USER14> I bet VW won't sue anyone about this soon to not have new negative publicity. And I agree, this is clearly satire.

<comment><USER8> I bet nobody from VW is going to know this exists for a year or more, if ever. How many VW corporate employees do you think browse HN?

<comment><USER15> > How many VW corporate employees do you think browse HN?

Out of more than 600'000? A bunch, I bet.

(Yes, I was shocked at the number too)

</comment></comment></comment></comment></comment><comment><USER16> I appreciate the author of this library to no end. There is something to be said about software being made in jest.

<comment><AUTHOR> Other fun software made at least partly in jest (though still quite useful):

eatmydata ([https://packages.debian.org/sid/eatmydata](https://packages.debian.org/sid/eatmydata)) is an LD_PRELOAD library to disable filesystem syncs, to speed up test runs and other cases where you don't care about data integrity (such as if losing power would just mean you run the tests again from scratch anyway).

echochamber.js ([https://github.com/tessalt/echo-chamber- js](https://github.com/tessalt/echo-chamber-js)) makes it look like your page accepts comments, displays them to the person who submitted them, but doesn't show them to anyone else.

<comment><USER17> comcast ([https://github.com/tylertreat/comcast](https://github.com/tylertreat/comcast)) is really helpful for simulating poor network connections. Particularly nice when used in Docker to do network simulations.

</comment></comment></comment><comment><USER18> I've got lots of respect for Kenneth Auchenberg [1], the author of the library. I suspect he's a driving force behind VS Code's current amazingness. He also frequently has a lot of good insights about Chrome DevTools (what I work on) and the web in general.

[1] [https://twitter.com/auchenberg](https://twitter.com/auchenberg)

</comment><comment><USER9> If a VW lawyer contacts them to change the name, the obvious reply is "we will happily rename to hitlercar."

<comment><USER19> Wolkswagon is better.

<comment><USER20> Cloud wagon?

Well, I guess if you're using Travis, but it won't make much sense if you're on a self-hosted Jenkins instance.

</comment></comment></comment><comment><USER21> Sigh... the dependencies remind me of the "left-pad" and "is-positive" package.

Most of the heavy lifting on this one is done by the `is-ci` package [1], which is what does (obviously) the "is this a CI server" request.

But it doesn't end there. `is-ci` just does a single call within the broader `ci-info` library [2].

Any reason it couldn't have just imported `ci-info` and used its `isCI` function?

[1] [https://github.com/watson/is-ci](https://github.com/watson/is-ci)

[2] [https://github.com/watson/ci-info](https://github.com/watson/ci-info)

<comment><USER2> Hi, co-creator of volkswagen, is-ci, and ci-info here. I extracted is-ci into its own module during the time I wrote volkswagen. It then turned out a lot of people wanted a module like that for actual useful things. But they wanted more info than simply "is this a CI server or not" (which was all that volkswagen cared about). So I made ci-info and moved the logic into that module and then made is-ci inherit from that, so to not have to duplicate the logic

<comment><USER22> Which is largely understandable, but shouldn't ci-info have obsoleted is-ci?

<comment><USER2> You're free to just depend on ci-info directly if that's all you need of course. The is-ci module does give you one added benefit however: It allows you to run this on the command line:

$ is-ci && echo "I'm running in a CI environment"

But of course that could technically be baked into ci-info. It's just more convenient to use with npx and to reason about if it's a self-contained module

</comment></comment></comment></comment><comment><USER23>
        Test.prototype.fail = Test.prototype.pass

Dying.

</comment><comment><USER24> I think there should be more digital art like this. By that I don't mean something but done with a computer, rather something that truly articulates some genuine, sincere frontier of this digital landscape.

</comment><comment><USER25> As funny as this is, I'd not be surprised to see a trademark challenge from VW sooner or later.

<comment><USER26> Kenneth Auchenberg: Well done! I hope that Volkswagen tries to sue you for trademark infringement and totally embarrasses themselves by bringing even more attention to their scandal, then gets slapped down and you can sue them back for wasting the court's time.

Volkswagen should be a generic term for cheater, just like Kleenex is a generic term for tissue.

<comment><USER27> [https://www.urbandictionary.com/define.php?term=Volkswagen](https://www.urbandictionary.com/define.php?term=Volkswagen)

<comment><USER26> [https://www.urbandictionary.com/define.php?term=Volkswagened](https://www.urbandictionary.com/define.php?term=Volkswagened)

<comment><USER27> That's it!

</comment></comment></comment></comment></comment><comment><USER28> Probably quote marks around "Volkswagen" would make the title a lot more clear.

<comment><USER29> I agree, that would make it "clear".

</comment></comment><comment><USER30> The funny thing is that this is actually how R development works. The main package repo is CRAN. If your package is not there, your inbox will fill with "can't install help". But getting your tests to pass on CRAN is an obstacle course. (see point 9 in [http://kbroman.org/pkg_primer/pages/cran.html](http://kbroman.org/pkg_primer/pages/cran.html) "put on your armor"). Your tests have to pass on Solaris when very few developers have access to that OS anymore. So there are directives to skip examples in the docs and what not (which should in theory run) but that weakens your test suit for everyone. So someone developed wolkswagen for R, for real ([https://rdrr.io/cran/testthat/man/skip.html](https://rdrr.io/cran/testthat/man/skip.html)) It's part of a mainstream, widely adopted test package, testthat. It's how the R world goes.

</comment><comment><USER31> The tech industry has its own examples. I remember that Nvidia and/or AMD had graphics drivers that would actually detect when they were running certain benchmarks/games and "cheat" to get better results. This was proven by simply renaming the .exe, which adversely affected measurements.

<comment><USER32> Detecting popular games and optimizing for them isn't "cheating", it's best practice for the graphics card companies although it makes some independent game developers unhappy. Detecting the card is being run in a benchmarking environment is cheating, though it may also be a sign the industry needs better benchmarks.

</comment></comment><comment><USER33> LMAO it looks like it would actually work in some cases, he mocks the assert function. [https://github.com/auchenberg/volkswagen/blob/master/.these/...](https://github.com/auchenberg/volkswagen/blob/master/.these/aren't/the/source/files/you're/looking/for.js)

</comment><comment><USER34> Somewhat related (python not javascript), but not just for CI servers:

[https://github.com/ajalt/fuckitpy](https://github.com/ajalt/fuckitpy)

</comment><comment><USER35> Not a lawyer or anything close, but I think Volkswagen is a trademark, and when used in a way that makes fun of them, you are likely to wake up their dogs (legal team) from their sleep.

<comment><USER36> Not selling - no trademark infringement?

<comment><USER37> Unfortunately, whether they profited or not won't make a difference. Just from the individual HN comments alone, there is enough to suggest that the title easily creates the notion that it is Volkswagen that has authorized this github. In fact, until I spent more time reading the comments and the github repo page, did I realize it was not actually Volkswagen but an individual.

Basically, if you publish on a platform that is being used by other large corporate brands, you should more or less expect zero legal protection from the platform as ToS is not a legally binding contract.

</comment></comment></comment><comment><USER38> Ok, now where is the Google/Facebook/Microsoft privacy test repository? If you want your software to be adopted by Europeans, good privacy scores are very important.

<comment><USER39> Eh, no need to turn this into a EU/US pissing contest.

</comment></comment><comment><USER40> I love the reference to the diesel emissions scandal. Nice touch.

</comment><comment><USER19> If they force a name change, change it to Wolkswagon.

</comment><comment><USER41> My god, this is hilarious

</comment><comment><USER42> OMG, this is hilarious!!!

<comment><USER43> did you see that custom build badge? saved!

[https://camo.githubusercontent.com/866c6cc451845f3de1f1487c1...](https://camo.githubusercontent.com/866c6cc451845f3de1f1487c16ad5879761b02fe/68747470733a2f2f61756368656e626572672e6769746875622e696f2f766f6c6b73776167656e2f766f6c6b7377617267656e5f63692e737667)

</comment></comment><comment><USER44> This put a nice smile on my face. Thank you

</comment><comment><USER45> At least they admitted to it.

Good luck getting the petrochemical industry to admit to any wrongdoing they've ever done</comment>


Microsoft's lost eight years online: More than $6 billion down the tubes - <AUTHOR> http://www.zdnet.com/blog/btl/microsofts-lost-eight-years-online-more-than-6-billion-down-the-tubes/37988 <comment><USER2> When MSN was created in the mid-nineties, AOL, flush with cash, prepared for a fight to the death with Microsoft.

The rallying cry at AOL around that time was that "online services will be Microsoft's Vietnam." I believe it holds up as one of the best business metaphors of all time.</comment>


Wolfram Alpha's "Close this [ad]" button covers "Upgrade to Pro" button - <AUTHOR> http://gyazo.com/c25916a1aca250681f5993b45783cc8b I don't know if anyone else has been noticing how slow Wolfram Alpha has been becoming lately, but I do understand their intent in trying to monazite their product. Either way, I'm wondering whether having the two buttons overlap is part of their scheme or if its just an honest bug. <comment><USER2> This is only because you're using AdBlock. The popup window is smaller than it's meant to be since the ad itself isn't being shown.

I don't think Wolfram Alpha cares (or should care) too much that their ads don't render properly when blocked by AdBlock.

</comment><comment><USER3> unfortunate.

fyi, there are so many ads on that page, it took my awhile to see what you were talking about.</comment>


What Makes AI and GPUs So Compatible? - <AUTHOR> https://www.engineering.com/Hardware/ArticleID/15471/NVIDIAs-Artificial-Intelligence-Boom-What-Makes-AI-and-GPUs-so-Compatible.aspx <comment><USER2> > NVIDIA's current growth spurt is based on big bet that Huang made a few > years ago, when he understood that he was in a unique position to help > advance AI, machine learning and deep learning.

What kind of bullshit is this. Alex Krizhevsky used CUDA to run neural nets much faster than you could on CPU, blew up ImageNet and NVIDIA found out they were sitting on a goldmine powered by a revolution they really had nothing to do with.

NVIDIA really had nothing to do with any of this taking off, except happening to provide the hardware.

<comment><USER3> Sir, you contradict yourself - CUDA is software and NVIDIA invested in CUDA long time before anybody believed it would take off.

<comment><USER4> Cuda is a GPGPU paradigm. It was certainly not an investment in machine learning.

<comment><USER5> Seeing as this [https://developer.nvidia.com/cudnn](https://developer.nvidia.com/cudnn) exists and is widely used I'd say that isn't really true.

</comment></comment></comment></comment><comment><USER6> Corrected title:

How GPUs and AI are rooted in DSP and how the lack of generalized DSP chips (perhaps built from FPGAs) have set back progress in concurrent programming immeasurably, especially for the embarrassingly parallel problems whose solutions are making headlines today.

<comment><USER7> Could you elaborate?

The point you're making about untapped technical potential is interesting, but I'm left wanting to know more about what you think the issue/solution is.

<comment><USER6> Just that, I have deep reservations about the direction that 3D, physics simulation and AI are going in. We're having to deal with a lot of proprietary and niche methodologies that are going to lead us down a lot of blind allies. OpenCL and CUDA are simply not C and never will be.

It would be so much better if we had generalized multicore computing. Something on the order of 256 or more 1 GHz MIPS, ARM, or even early PowerPC processors. We need to be able to run arbitrary code with flow control and be able to experiment with our own models for data locality, caching, etc.

Something like that running Erlang/Go/Octave/MATLAB or one of the many pure functional languages would open up amazing opportunities if we were no longer compute-bound. I first started caring about this in the late 90s with FPGAs but that possible future was supplanted by the hardware accelerated graphics future we're in now. Yes it's pretty good, but a pale shadow of what's possible.

Edit: here are a few examples of what I'm talking about:

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

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

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

<comment><USER8> If you have "generalized multicore computing", you still need to generate a code schedule for your grid / hypercube / what have you of CPUs or PEs, unless you want to program all that stuff by hand. Compilers 30+ years on still aren't super good at generating good code for parallel machines from abstract expressions of a mathematical problem for CPUs and GPUs, despite all the loop nest transformations with tiling, reordering, vectorization, polyhedral techniques, what have you, outside of some restricted forms of expression (like, say, Halide) or manual annotations you give the compiler as hints along the way. Scheduling code across multiple processors is more or less the same problem, with or without synchronous exchanges of data between the processors.

The modern GPU is a "generalized multicore" machine anyways. Nvidia GPUs have, say, 60 SMs with many warps per SM concurrently resident, giving you hundreds of hardware threads (warps) available, each with 32-wide SIMD units. You have multiple memories you can play with for data locality (the multi-MB sized register file and shared memory space, the smaller caches, global memory). It's a hard enough problem to use all of that well for all but simple problems.

If you want to change deeper behavior, there's always Verilog.

</comment></comment></comment></comment><comment><USER9> Linear Algebra is the mathematics of neural networks, and many matrix operations can be done in parallel. GPU's have more cores, but with limited capacity, but precisely what linear computations need.

</comment><comment><USER10> In a way i find it fascinating how much an entertainment business like Gaming can contribute to overall technology advancements. AI/ML is just one of the latest fields that benefits immensely from game technology.

<comment><USER11> Gaming is the space industry of our time.

</comment></comment><comment><USER12> Either there's a next-page button I'm missing or the title has very little to do with the content.

</comment><comment><USER13> GPUs are very compatible with AI that is numeric and data-parallel such as ML/ANNs, but so as much with symbolic AI -- and I think the demise of the latter is greatly exaggerated.

</comment><comment><USER14> inner product.

</comment><comment><USER15> Very poor article TLDR is GPU has more flops so it's better.

<comment><USER16> More flops that are optimized for the linear algebra that usually powers most machine learning. The matrix transforms and vector multiplication that are so beneficial to rasterizing mesh geometries work really well to compute neural networks.

<comment><USER15> MMA units are new with Volta but even that isn't covered by the article.</comment></comment></comment>


Meetup, you've been bad, bad hosts - <AUTHOR> https://gist.github.com/4568377 <comment><USER2> See also "Meetup.com kills Vim London without warning" <http://news.ycombinator.com/item?id=4698541> particularly <http://news.ycombinator.com/item?id=4698718>

> This was a mistake on our part. We're reaching out and rectifying things > now. Sorry guys.

Fool me once, shame on you. Fool me twice, hello Eventbrite!

<comment><USER3> Not saying that Meetup is great, and Eventbrite might be vastly better. But a simple 2-strike rule is worthless. You need to look at the actual error rate (in this case, essentially a spam false positive) to determine if Meetup is truly a poor service. Otherwise, any smaller service will look better because they will have less complaints in absolute terms.

<comment><USER4> > But a simple 2-strike rule is worthless.

If paid service _unrestorably deletes data_ without first getting in touch with client, it is worthless, as you should have moved away _first_ time it happened.

<comment><USER5> So far both cases were for events promoting a specific product. They were in the grey area for sure (this one less so) but they were both in the same grey area.

So yes, now I will definitely not use them for anything related to me trying to sell something, but I wouldn't have anyway, and continue using them for actual meetups based on common interests.

<comment><USER4> I am not questioning whether OP did something wrong; If he did, as a paying customer (and first offender), I would anticipate some kind of notification email, or something at least.

Sure, for repeat offenders: repeat notifications, then close account, refund adequate part of payment and that's it. You should never irreversibly delete someone's data. Moreover when he's paying you.

</comment></comment></comment></comment></comment><comment><USER6> Meetup is quite a bad service, but I don't know any better alternatives. I was one of the organizers of one of the larger meetups, with over 4K members. Some issues:

* The tools are nowhere near adequate to handle this amount of people, and more geared towards small groups

* However, there is NO way to switch: Your data is locked in with Meetup: There is no export or even access to the data of 'your' members.

* You can't just cancel a group: If you stop paying (which I did with a smaller group), it's offered to all members. All it takes is 1 spammer to pay, to spam all members. Basically, we are forced to keep paying for our group for years.

There is a big opportunity to build a better service here, but switching from meetup will be a pain.

<comment><USER7> It was abundantly clear from the time Heiferman founded meetup 10 years ago they were pursuing a gatekeeper model with a lock in strategy.

When that struggled to take off they had to relax the gatekeeping a bit, but they're never really changed their spots.

Another example of a widely used service where users trade off a list of hidden & future downsides for a little immediate convenience.

<comment><USER8> Lock in strategy? The strategy is to foster local community--nothing else. If it would work to _not_ charge money they would. In fact, pretty much the only reason Meetup charges is to ensure organizers have "skin in the game" and as a result take it more seriously.

Meetup has a very well put together and well documented API. You can pretty much get all you need from that if you'd like to migrate away from Meetup, though, they do in fact make it hard to get email addresses to avoid spam.

But, you could easily write a simple OAuth app which authenticated a user, pulled their details and asked for an email address to migrate away.

<comment><USER9> Becuase the API is really a valid option for the average user...

<comment><USER8> I can name no website that makes migrating away from itself easy. The fact that you can more or less get everything you need to migrate off of Meetup with a couple of scripts is pretty good in comparison.

If it's too much trouble as an "average" user, it's not too hard to find someone who can help.

</comment></comment></comment></comment></comment><comment><USER10> I run three meetups and know a bunch of the folks that work there. They are extremely fair minded people. Fairer than I am myself. Given what I know of the people, the service, and my experience hosting three meetups, this story doesn't feel right.

Meetup has done a lot to bolster the tech community in NYC. I have met almost all of my tech friends in NYC via meetups. Meetup employees even come to some of my meetups. I know for a fact that they care about creating positive environments where attendees are not bombarded by commercial interests. They want you to go kayaking with other kayakers, talk about programming with programmers, or find out how to cook fantastic vegan food with other vegans.

False positives sometimes occur and it's a shame. Perhaps meetup could've been more proactive before shutting the group down. I personally feel confident that meetup looked at the group and made a fair decision that it was indeed violating the terms of service.

As I mentioned above, I host three meetups so perhaps I'm biased. Here are they: <http://www.meetup.com/hack-and-tell/> \- <http://www.meetup.com/DUMBO- Tech-Breakfast/> \- <http://nyc.brubeck.io/>

If folks would prefer to use eventbrite, obviously do so. Eventbrite has no community building tools. It is a website for tickets. Meetup, on the other hand, cares so much about building communities that their whole site is built for this purpose. You will lose that.

<comment><USER11> I just went to the meetup facebook page and the most recent post is:

>Have been double charged for the group and now my group is shut down. I tried to contact the company 3 times and no response. What is going on? Is there customer service?

and not to mention this: <http://news.ycombinator.com/item?id=4698541>

Seems like meetup's customer service is not so hot.

<comment><USER12> As a former employee, I'd actually say that the customer service team is one of the best I've ever worked with and they take everything very seriously.

<comment><USER13> Do you have an explanation for all these examples then (they seem to contradict your statement)? Or have you just worked with really bad customer service teams?

<comment><USER12> Well regarding this incident specifically, it seems pretty clear (at least to me) that a group was created specifically to host a conference, which is not allowed. A Meetup Group is supposed to be a community, not just an event. Things like this are really what services like EventBrite are for.

<comment><USER11> I totally agree with that, however just pulling the plug with no warning is really unprofessional. They could have given them a heads up and some time to figure out a plan. They weren't maliciously using meetup, just using it slightly incorrectly.

<comment><USER14> Fmr employee as well. I'm gonna go out on a limb here and guess you've never been involved in running/managing a huge online community(ies) with in person social interactions as the primary goal. I might be wrong, so apologies ahead of time if so.

Anywho -

It actually isn't unprofessional when the goal is to protect the members from some organizer who might be malicious in nature. There are a lot of rules and guidance around how organizers should do things, and Support's main goal is making sure the general members of Meetup aren't preyed upon. You're idea of giving a heads up, what are the parameters around before action is taken? 24 hours? 48 hours? A week? What if this post went "i was on vacation for a week so didn't read the email, and they deleted my group, how could they!!". It wouldn't matter. TOS are TOS.

If this person was malicious how much negative should the community accept? In that time how much spamming of a product the creator is trying to sell happening? How much misleading around the member base is there? You need to deal with these things as quick as possible, and the TOS exists to give people the framework of usage. A violation of a TOS(on any site) is just that, and it needs to be dealt with equally across violations. Support can and will make mistakes. That's human nature. THis isn't one of those. The poster in this case was even told they could re-create the group because at this point the old one is considered poisoned, and not to be trusted. Given Meetup has been doing this for over 10 years now, I'd like to think they have these policies pretty well grounded in reality and experience.

<comment><USER15> When is the last time that you have read a TOS? You are shifting blame to the user, and it should not rest there. This is bad UI, and laziness. Meetup's TOS reads like a boiler-plate legal document; no one will read it.

<comment><USER14> Given that TOS's are often written by Lawyers it seems that their reading like a legal document has a high probability.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> Not listed: the offending description, on which the whole thing seems to hinge.

Meetup.com seems like an awful choice for conference registration, or any one- off kind of event. I've been running not-for-profit tech conferences for a few years, and the mix of Eventbrite for registration (especially if it's a free- to-attend event, as mine are), and Lanyrd for schedule, speaker, session listings, and social interaction have turned out to be the perfect mix for me.

The only thing I'm missing out of those two is a system for accepting and voting/choosing speakers and sessions, but hey, I'm a developer, there are ways. :)

<comment><USER17> I think Lanyrd can do CfP and selecting these days?

<comment><USER16> You can list the calls for $x, but there's no process for selection behind it.

</comment></comment></comment><comment><USER18> I work at Meetup.

Meetup does review every new group and we discourage using the service for one off events. That said its not our policy to reject them out of hand and there should have been contact from a person on our community team prior to the decision to remove the group. In this case 'remove' most certainly doesn't mean delete. There's plenty of developers at Meetup that understand the value of not deleting data. The Meetup Group has been flipped back to approved and is accesible on site.

We are sorry when this happens, still, review of new groups is important to us -- there's a lot of new Meetups proposed every day that we really don't want to host on our platform. We have technology in place to help us with automatic classification, but while improving, its imperfect and in this case our safeguard of manual review was too quick to reject the group.

</comment><comment><USER14> Fmr Meetup employee, for about 2.5 years, several years ago now. On the tech side, but the company is/was small enough that everyone got some voice about how things worked, which was fantastic.(note i say a voice, but not necessarily a vote)

This post reads a lot like "I violated TOS, and got shutdown for it, and now I'm going to complain because that isn't "fair"." WAAAAA.

The person who wrote this post used Meetup in the way Meetup doesn't want it's service to be used. What this person was looking for, was EventBrite, which is a fantastic site also, but geared to the idea of singular events that happen, and then go away. If the poster was trying to create a group of regularly meeting/communicating folks, to foster a true community, then Meetup would have most likely not shut them down. This is a lot different than the Vim London story, which it seems Meetup rectified after gathering better understanding ( seems like someone from community support responded to internal tooling flagging what looked like a violation and didn't understand what Vim was. Honestly, does your company's support people know what Vim is??). Meetup has a right to defend the use of their platform as they see fit, and when they do things like this its not for the one organizer who did the wrong thing, its for the X number of members who are part of groups who Meetup protects like a guard dog.

Meetup's support org is top notch, and they spend day and night watching an ever growing online community. When I was there we dealt with everything from Kiddie Porn Groups, Hate groups, illegal prescription sellers, pushy marketers, SPAMmers from around the world, and people who just generally wanted to abuse the trust that the platform tried to foster. The poster here hasn't posted the contents of what his Meetup group was defined as, nor has he posted the wording of the event. Note event in the singular sense, as opposed to events, or community, which is Meetup's purpose.

How about if you want to fling shit at a great company that serves a large user base with respect and honesty, you do the same before flinging out a "poor me/evil company" post without any basis for proof of your case. I would imagine a "12 year veteran" would get how this should work.

</comment><comment><USER19> That is a pretty dramatic response to Meetup deleting a group.

I've never created a group, but it seems the event WAS outside of the intended use of Meetup. It looks like poster was trying to use it to host a single event where Meetup wants you to create groups that meet and communicate regularly. To me, it looks like the poster was indeed using Meetup as a listing service.

I think the telling piece of information that was left out is what the questions Meetup suggested asking yourself before creating a group.

But yea, this isn't as near big a deal as the poster is making it out to be.

<comment><USER20> It's still surprising that the data was deleted instead of internally flagged.

<comment><USER21> How do you know that the data have actually been deleted?

The excerpt from the (apparently edited) Meetup response merely says, "Once a Meetup Group has been removed from the site, it's final."

That doesn't say anything at all about the state of the data. It may just be that they don't want to have to deal with appeals when groups are removed, so their policy is to make all removals final, even if the data are left untouched.

<comment><USER22> That makes a lot of sense, I hadn't considered that it might be a decision based on the high support costs of ever entering into negotiations rather than a technical limitation or process issue.

</comment></comment></comment></comment><comment><USER23> I've joined Meetup just recently as I moved to a new area and wanted to peruse the local tech scene. As soon as I joined, I was spammed by an invite to join pitchbox.com,- meetup.com was the only service that knew about my new consultant firm address. First sentence cordially read: "Hey friend, welcome to pitchbox... "

So while I like their service, color me not impressed and please stop spamming us guys.

<comment><USER14> People can't reach out to you unless you are part of a group or via a direct "friend" relationship. Sounds like you joined a group that has someone spamming the rest of the members. Meetup themselves won't spam you like that unless you ask to be told when new groups are formed around certain topics (at least it used to be this way )

</comment></comment><comment><USER24> Not to defend everything Meetup does, but conference registration is not really what the site is intended for.

Your usage pattern unfortunately just happened to look quite a bit like that something that they may think poisons the dynamic (recurring meetups of people with shared interests, not mainly driven by an organizer's self-interest) they are trying to create with the site.

I'm not saying your event was exactly pure self interest or bad in any way, it just isn't something that to them looks healthy for their site. And it doesn't fit the intent of meetup.

The fact that you had a poor description is the final problem here that leaves me feeling little sympathy. Every project, conference, etc. should have a clear description provided by the creator, at least if they want it to be well received. Maybe that's a lesson learned.

</comment><comment><USER25> When you run your business (or in this case event) on someone else's network/app/system you're subject to the whims of the owner. You're sharecropping.

FWIW 44Con[1] used Eventbrite[2] (which I'd say is better for one-off events) for the first two years. Eventbrite check-in is awesome, but it's not perfect. This year we're switching to a system we've developed internally and using Eventbrite only for check-in. It's not that Eventbrite isn't good enough, more to do with integration issues, multiple events with different needs and the fees involved to do it all in eventbrite.

I'd still recommend eventbrite for someone wanting to run a one-off event though.

[1] - <http://44con.com>

[2] - <http://www.eventbrite.com>

</comment><comment><USER26> It seems that Meetup.com has a major UX issue, as it may not be easy for new users to figure that their service is meant to be used by groups that meet recurrently, and not by groups that may meet just once.

Having said that, I've been using Meetup.com for over four years now and I can only say but great things about the service. I used it to create the two largest meetups in Bogota: BogoTech <http://www.meetup.com/bogotech/> and BogoDev <http://www.bogodev.org/>

<comment><USER27> I certainly see nothing on any of their pages to suggest that they ban more formal conferences. All their language is very broad and vague. The fact that "Organizer" is an official class of user who have to pay is a pretty strong indicator that it's not exclusively some loose informal thing.

Even in their terms of service, there's nothing that comes close to banning conferences. The only thing remotely related is that they disallow advertising commercial services.

</comment></comment><comment><USER28> Event seems to be up again: <http://www.meetup.com/reversim-summit/>

</comment><comment><USER29> Not very cool to just delete the data and blow up their event like that, but I think the issues are: it would be confusing if a lot of people started using meetup.com for individual events instead of groups, and probably screw up their scaling as well as their business model.

</comment><comment><USER30> I interviewed with them a few years back, and they asked about deletion strategies. The interviewer, one of their lead developers, agreed with my "set a deletion flag and garbage collect to an archive database" response. Maybe things have changed there since 2008.

</comment><comment><USER31> You can try Google Plus events: <http://www.google.com/+/learnmore/events/>

Far more customizable, better discoverability than EventBrite, but customer service as bad as Meetup's. :)

</comment><comment><USER32> There is an export feature, which I just did as a backup for my groups:

Add: 'members/?op=csv' to your group root, and you should get a CSV dump of your members (most of what's worth backing up):

meetup.com/YourCoolMeetup/members/?op=csv

</comment><comment><USER33> More legible: <http://gist.io/4568377>

</comment><comment><USER34> Why is this hosted on GitHub?

<comment><USER35> Since when is Github a personal blog hosting service?

</comment></comment><comment><USER36> So they've organised a conference using Meetup? It doesn't seem to me like that's what Meetup is intended for

"Meetup's mission is to revitalize local community and help people around the world self-organize." [1]

If meetup.com don't want to be used for promoting conferences then they've got every right to shut this down.

[1] <http://www.meetup.com/about/>

<comment><USER31> What is the difference between the conference that got shut down and this conference: <http://nescala.org/>?

The difference is that the latter is organized by Meetup employees. A different set of rules if you work there I guess.

</comment></comment><comment><USER37> Just like everything in this world someone point out his bad experience and then his opinion become famous and everyone generalizes because it gets a lot of attention. And worst, the comment section attracts all the people that had a similar experience making it even more biased; so it gets a lot of more bad press than it deserves.

So despite there could being just one false-positive-not-fixed-after-human- contact every 1 million deleted meetups, in Internet that false-positive is likely to bring a lot of undeserved negative attention.

<comment><USER22> I definitely agree that one in a million failures do tend to generate an unreasonable amount of negative press, I guess because they're easy to relate to on a personal level.

In this case however I think a valid point is being highlighted. False positives do happen but it's concerning that Meetup doesn't seem to have any way of rectifying them e.g. they deleted an event rather than disabling it.

Personally a big fan of Meetup but if this story is accurate and in the event of a false positive, there really is no way of rectifying it, I'd be concerned about using them to organise an event.

</comment></comment><comment><USER36> The meetup is back up with it's 200 users, so doesn't seem to have been 'deleted permanently'.</comment>