
Source of the famous “Now you have two problems” quote (2006) - tambourine_man
http://regex.info/blog/2006-09-15/247
======
nicklaf
It really bothers me that Google has allowed groups to deteriorate so much. At
one time, it was actually a decent archive of Usenet history, but since then,
search has deteriorated, and apparently, posts are sometimes missing.

Perhaps the people who are now famous that posted on Usenet back then didn't
want posts from their college days in the spotlight, and their friends at
Google implicitly let the site go to hell. </conspiracy-theory>

Edit: Hmm, I may be wrong. A while back, many of the links in this list of
"memorable Usenet moments" [1] were broken, but they seem to work now.

Edit #2: Okay, I was not wrong. For example, take a look at the link on that
page to "December 1982: First thread about AIDS" [2]. The link takes you to a
Usenet post that doesn't even mention AIDS, in the newsgroup fa.telecom.

[1]
[https://support.google.com/groups/answer/6003482?hl=en](https://support.google.com/groups/answer/6003482?hl=en)

[2] [https://groups.google.com/forum/#!msg/fa.telecom/EmQ-
s_EGgSA...](https://groups.google.com/forum/#!msg/fa.telecom/EmQ-
s_EGgSA/Jq6xiaLM8ncJ)

~~~
tzs
Some Google usenet fun. Go to the main Google Groups page [1].

Use the search functionality to search for "tim smith csh callan". You get one
result, which is a 2007 post from comp.os.linux.advocacy where someone is
quoting a 1984 post of mine that was in net.unix-wizards. Note that my 1984
post is not found.

Now go to the Google Groups version of net.unix-wizards [2].

Search there for "tim smith csh callan". Now the above mentioned 1984 post
_is_ found, along with another 1984 post.

Lest you think that there is some problem when searching from the main page,
click on the "Search all groups" link on the net.unix-wizards search results
page, and it only finds the 2007 COLA post that quoted my 1984 post.

A search from the main Google search page, as opposed to the search within
groups, finds the first 1984 post as the first result.

I've seen vast numbers of posts become unfindable by search, and then weeks or
months later become findable again. For instance, there was a long time when
if you searched for "Bill Gates" in Google's usenet archive, it would only
return something like a dozen posts.

To put it bluntly, Google's handling of the usenet archives has been negligent
and/or incompetent.

[1]
[https://groups.google.com/forum/#!overview](https://groups.google.com/forum/#!overview)

[2] [https://groups.google.com/forum/#!forum/net.unix-
wizards](https://groups.google.com/forum/#!forum/net.unix-wizards)

~~~
userbinator
_I 've seen vast numbers of posts become unfindable by search, and then weeks
or months later become findable again._

I think this is an effect of the way Google searches/indices things; I am
equally frustrated by pages that disappear from Google's web search which may
or may not come back eventually (although I've seen more disappear than come
back...) Remember that they're running a huge distributed system, and so
consistency/completeness is probably relaxed in order to optimise other things
they believe are more important. It's the same reason why even if Google says
there are X results in a search, you often cannot view them all.

(Not that I'm actually agreeing with this behaviour, however. It's less
noticed on the web where there tends to be a lot of redundant/similar
information, but still not desirable at all.)

------
paulsutter
I was confronted with a problem, so I thought I would use Java. Now I have a
problem factory.

~~~
yoz-y
Of course the currently trending answer would be to use monads. Preferably
implemented in Go.

~~~
arethuza
I remember a colleague who wrote Common Lisp in the style of Occam - with
concurrent process and communication channels. His code actually looked a lot
like some Go code I've seen - hardly surprising I guess given the common
ancestry to CSP.

~~~
lispm
Btw., CSP in Hoare's Book is a Lisp...

[http://www.usingcsp.com/cspbook.pdf](http://www.usingcsp.com/cspbook.pdf)

Page vi:

> The proposed implementations are unusual in that they use a very simple
> purely functional subset of the well-known programming language LISP. This
> will afford additional excitement to those who have access to a LISP
> implementation on which to exercise and demonstrate their designs.

------
raldi
TLDR: Everyone always attributes it to JWZ, but it was actually coined by
David Tilbrook.

It's not mentioned in the blog post, but David told me in 2007 that he said it
at a EurOpen conference in Dublin circa 1985.

David also told me this is only his _second_ favorite quote; the one he was
most proud of, from 1981, was: "Software is the only business in which adding
extra lanes to the Golden Gate bridge would be called maintenance."

------
sparky_z
Some people, when confronted with a problem, think “I know, I'll use the
Banach–Tarski Theorem.”

~~~
shoo
Now they have their original problem (assumed to contain a sphere), an
additional sphere, and a dependency upon the axiom of choice.

~~~
jordigh
True story, did you know you can have paradoxical sets without choice? You
just need infinity.

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

[http://www.math.hmc.edu/~su/papers.dir/banachtarski.pdf](http://www.math.hmc.edu/~su/papers.dir/banachtarski.pdf)

~~~
JadeNB
While I don't dispute your claim, neither of the links substantiates it. The
Wikipedia article _says_ that you only need the axiom of infinity, but
mentions only Banach–Tarski (which does require choice); and the minor thesis
says on p. 2 that "the philosophy adopted in ths paper will be the
unquestioned acceptance of Choice as a useful foundation in our work".

Do you have any other references for this? (I'm interested, not snarking.)

~~~
jordigh
The paper is kind of long. Look at Theorem 4 in it.

[https://www.math.hmc.edu/funfacts/ffiles/30001.1-2-8.shtml](https://www.math.hmc.edu/funfacts/ffiles/30001.1-2-8.shtml)

------
nailer
Keep in mind at the time people were using regexs for tree structures like the
DOM, and calculating time.

Manipulating the DOM with regexs generally known to be impossible these days,
and using regexs for time only happens on the Unix command line where there
aren't better alternatives.

~~~
eli
I assure you that people are still manipulating DOM with regexes.

~~~
icelancer
Time for the classic bobince Stack Overflow post:

[http://stackoverflow.com/questions/1732348/regex-match-
open-...](http://stackoverflow.com/questions/1732348/regex-match-open-tags-
except-xhtml-self-contained-tags)

~~~
dansingerman
I know this is a famous meme, but why, in response, does no one mention that
sizzle, the selector engine in jQuery is based on regexes?
([https://github.com/jquery/sizzle/blob/master/src/sizzle.js](https://github.com/jquery/sizzle/blob/master/src/sizzle.js))
It suggests to me a very large proportion of DOM parsing code in existence
uses regexes.

------
Tloewald
It's as versatile a joke as the old Slashdot Meme (apparently originally from
South Park, which I did not know):

1\. Do some stupid thing

2\. ????

3\. PROFIT!

In fact:

1\. Use regexp

2\. ????

3\. PROFIT!

[http://knowyourmeme.com/memes/profit](http://knowyourmeme.com/memes/profit)

(While we're at it:

I had a problem and decided to use regexp. Now I have two first world
problems.)

~~~
jackgavigan
The South Park underwear gnomes joke was a parody of dot-com startups (i.e.
around 1999/2000) who didn't have a clear business model.

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

~~~
Tloewald
According to the linked article the episode was from 1998, which actually
makes it fairly early in the game even for poking fun at stupid dotcom sites.

~~~
dfrey
The modern version:

    
    
       1) Acquire millions of users
       2) Get acquired for billions of dollars
       3) Not my problem

------
cannam
I enjoyed some of the remarks about Postscript in the comments, particularly
this one
[http://regex.info/blog/2006-09-15/247#comment-18269](http://regex.info/blog/2006-09-15/247#comment-18269)
with its link to "a C-like syntax to PS compiler... called PdB"
([http://compilers.iecc.com/comparch/article/93-01-152](http://compilers.iecc.com/comparch/article/93-01-152)).

Some of the binaries for PdB appear to be still available, but it looks as if
the source was never published? I like the idea of an alternate world in which
Postscript, rather than Javascript, became the new universal "assembly
language" for compilers to target. I imagine that may have been what Sun were
aiming for with their Network Extensible Window System
([https://en.wikipedia.org/wiki/NeWS](https://en.wikipedia.org/wiki/NeWS)). My
only encounter with that was via Xnews, about which I remember little except
that it was very slow.

~~~
arethuza
PdB = "Pure dead Brilliant" = "awesome"

Quite a remarkable bit of code that - I _loved_ HyperNeWS.

------
vldr
My favorite variation:

Some people, when confronted with a problem, think "I know, I'll use
multithreading". Nothhw tpe yawrve o oblems.

------
protomyth
So, I guess I'm a monster raving loon[1]. Oh, well, I like Forth too, but
always found Postscript to be easier to read and program.

1)
[http://regex.info/blog/2006-09-15/247#comment-3085](http://regex.info/blog/2006-09-15/247#comment-3085)

------
moron4hire
I really don't get the hate for regexps. They aren't very hard to learn and
they are hugely productive. I use regexp in my text editor search
_constantly_. It bothers me that I don't have regexp enabled search on
everything. Web browser, I'm looking at you!

And regexp-based search-and-replace! Swoon! Regexp has made me significantly
more productive and less error prone. I haven't made copy-pasta data errors in
quite a long time because of it.

Yes, particularly hairy regexp looks like line noise. What poorly written code
doesn't? I think people get caught up in the idea that they have to try to
write one regexp to rule them all and perpetuate until the end of time. Sure,
yeah, if you don't understand how to write regexp and have to look up a
cheatsheet all the time, I can see how you would want to avoid touching it
ever again. But that applies to SQL or CSS or whatever braindead config file
format we're using on our project today, or any other language that isn't your
wheelhouse.

Seriously, learn regexp already.

~~~
aidenn0
The hate is when they are used for code where a parser would be better. (e.g.
parse an e-mail address).

I don't think anybody has an issue with regex search in an editor, but we are
more talking about regex as a core language feature.

Even in an IDE there are times that regex is the wrong solution. e.g. regex
based refactoring can introduce bugs in most languages where a parser based
refactoring wouldn't.

~~~
moron4hire
Sounds like throwing the baby out with the bathwater.

~~~
aidenn0
Can you please let me know what the "baby" is in this case? Nobody is
seriously against regexes for all cases (all developer editors have a regex
search, for example).

However, they aren't even always the clearest way to parse regular languages
(depending on the language, automata can be more clear than regexes or vice
versa).

Perl regexes can parse many context free languages, but again it's not always
the clearest way to represent it.

Despite the original quote, I use awk as a standard part of my toolbox. I'm
not going to write a web-browser in it though. Nearly every time someone says
"now you have 2 problems" or "considered harmful" it's a reaction to overuse
or misuse, not a literal call to abandon it altogether.

~~~
moron4hire
> not a literal call to abandon it altogether.

No, that's literally every case I've seen for the use of the "now you have two
problems" phrase. It's like someone has a bot on the lookout, alerting them to
mentions of regexp so they can run in and say "now you have two problems!"

I think it's another symptom of the common trend of modern programmers not
wanting to do any programming anymore. Breath mention that you might want to
implement your own text editor control because you haven't been able to find
one that suits your needs and immediately get jumped no with "don't reinvent
the wheel!" Spend a small amount of your spare time toying around with _toy_
programming languages and it's, "you have too much time on your hands!"\--as
if being massively overworked on business interests is some kind of virtue.
Make a puzzle game without using Unity or some other overblown framework on
your small project and it's "you're nuts!"

No, literally, I got called insane once for not using _Angular_ on my
_personal website_ that mostly just amounts to a list of links to my social
media profiles.

------
batoure
My first experience with this joke was:

[https://xkcd.com/1171/](https://xkcd.com/1171/)

>If you're having perl problems I feel bad for you son, I had 99 problems then
I used regular expressions and now I have 100

------
WaltPurvis
It's included here (along with some other gems): [http://install.lon-
capa.org/bugzilla/quips.cgi?action=show](http://install.lon-
capa.org/bugzilla/quips.cgi?action=show)

