Eevee
eev.ee · Personal blog · on HN since 2014
Eevee is a programmer who writes long posts on programming languages, Unicode, CSS, music theory and game development.
What HN saysCommenters repeatedly call "PHP: a fractal of bad design" one of the best blog articles ever written, and recommend the rest of the blog.
310HN people shared it
187linked it in comments
156stories submitted
7.9Kstory points
3 months agolast shared
2014people per year2026
Most-shared posts
- 1PHP: a fractal of bad design (2012)135 people · 78 points · first shared 2014 · 17 comments on HN
- 2Music theory for nerds13 people · 1.1K points · first shared 2016 · 378 comments on HN
- 3Dark corners of Unicode12 people · 333 points · first shared 2015 · 52 comments on HN
- 4Old CSS, New CSS10 people · 1.5K points · first shared 2020 · 244 comments on HN
- 5Maybe we could tone down the JavaScript (2016)10 people · 406 points · first shared 2016 · 219 comments on HN
- 6A Rebuttal for Python 38 people · 155 points · first shared 2016 · 34 comments on HN
- 7Apple did not invent emoji8 people · 23 points · first shared 2016 · 1 comments on HN
- 8Why should I use Python 3?8 people · 19 points · first shared 2016 · discussion on HN
- 9Let’s stop copying C (2016)7 people · 195 points · first shared 2016 · 100 comments on HN
- 10I quit the tech industry6 people · 1.2K points · first shared 2015 · 548 comments on HN
- 11Testing, for people who hate testing6 people · 15 points · first shared 2016 · discussion on HN
- 12The Rise of Whatever5 people · 644 points · first shared 2025 · 508 comments on HN
- 13One year later5 people · 300 points · first shared 2016 · 61 comments on HN
- 14The Hardest Problem in Computer Science5 people · 19 points · first shared 2016 · discussion on HN
- 15The curious case of the switch statement5 people · 13 points · first shared 2016 · 1 comments on HN
What HN people wrote when they linked it
jakelazaroff · 2019-02-08
It's finished, but the prog21 archives have some real gems: https://prog21.dadgum.com
I also recently read through Eevee's blog and greatly enjoyed it: https://eev.ee
majewsky · 2025-10-04
Eevee put it best:
> I absolutely cannot fucking stand creative work being referred to as "content". "Content" is how you refer to the stuff on a website when you're designing the layout and don't know what actually goes on the page yet. "Content" is how you refer to the collection of odds and ends in your car's trunk. "Content" is what marketers call the stuff that goes around the ads.
From https://eev.ee/blog/2025/07/03/the-rise-of-whatever/
omnibrain · 2023-04-12
You are going to love https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
wpietri · 2023-04-08
For sure. I used to be a real tech snob. And I still like experimenting. But I've had to admit that the particular technology used just doesn't make the difference I would like it to. E.g., PHP is a "fractal of bad design" [1], but Facebook seems to be an ok business. Or Javascript was clearly a frightful hack job to start, barely adequate for mouse rollovers and a little form validation, but now you see plenty of companies doing fine using it front end and back. These days I would much rather have a good team and a good culture than my favorite technology.
[1] https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
jupp0r · 2023-02-23
Still one of the best blog articles ever written: "PHP: a fractal of bad design" https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
KronisLV · 2022-07-29
There was an article about PHP that summarized some of its issues back in the day: https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
I think that it was excellently written and actually mentioned concrete issues, rather than vague personal dislikes. That is good, because you can revisit those in 10 years or so and see how many of those have been fixed in the actual language.
Someone actually tried to address a few of those: http://maettig.com/2020-09-16-revisiting-a-fractal-of-bad-design
endemic · 2022-05-01
Eevee wrote about the industry mimicking Apple, and the downsides of that. It’s a great read if you haven’t seen it. https://eev.ee/blog/2016/04/12/apple-did-not-invent-emoji/
defanor · 2022-04-24
As a programmer studying music, I found the "music theory for nerds" article [1] very helpful to get started, and then kept noticing how many general music learning materials for beginners skip the fundamentals/justification, suggesting to just remember many non-arbitrary things that can be deduced, without explaining why they are that way. As the article itself mentions, the hard part is to figure which parts are arbitrary and which ones are not quite so arbitrary, but pretty sure an engineer can get an easy start by studying those bits first.
Playing an instrument is nice and fun too, of course, but I think it's more helpful for intuition rather than actual understanding -- and those are usually best to combine.
[1] https://eev.ee/blog/2016/09/15/music-theory-for-nerds/
lbj · 2022-03-27
Also a good read in the same vein: https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
manigandham · 2022-01-11
The reason for PHP's hate is detailed in this great vintage article: https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
That's from 2012 and many of the issues have been fixed since then, but it was the truth a decade ago and tainted the experience for many devs who have sine moved on to other languages.
emodendroket · 2021-11-26
Out of date but this is the classic anti-PHP polemic. https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
tejinderss · 2021-06-24
Another great article in similar vein
https://eev.ee/blog/2013/03/03/the-controller-pattern-is-awful-and-oth…
Valodim · 2021-04-19
I can relatedly recommend eevee's post "Music theory for nerds". I'm sure it's one of those that experts will huff and puff about, but it made a bunch of concepts between sound perception and music theory "click" for me: https://eev.ee/blog/2016/09/15/music-theory-for-nerds/
evil-olive · 2021-02-11
> I've been seeing a growing anti-python sentiment lately
Despite the name, I don't think this is anti-python, in the same way classics like [0] are anti-PHP. The project README mentions this a bit:
> While some of the examples you see below may not be WTFs in the truest sense, but they'll reveal some of the interesting parts of Python that you might be unaware of. I find it a nice way to learn the internals of a programming language, and I believe that you'll find it interesting too!
0: https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
blablabla123 · 2020-10-31
Someone posted an article above [1], but citing from it, there is a function called mysql_real_escape_string. Although early JS also has quite odd language choices, it follows a consistent philosophy. To me it boils down to LISP in C syntax with weak typing. Past PHP feels more like a collection of stuff. But I assume modern PHP can be a viable choice if used with a modern framework, linter etc.
[1] https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
triceratops · 2020-05-20
https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/ is a classic of this genre.
wk_end · 2020-02-03
You were downvoted because your post lacked any real content or rebuttal (and, probably, for the edit - no one likes it when people complain about downvotes).
FWIW though, you're absolutely right - there was (maybe still is?) an enormous amount wrong with PHP. The only real rebuttal core-questions needs is a link to the classic essay, "PHP: a fractal of bad design" [1], which lists far, far more problems than just issues with function names or parameter order, and does it more comprehensively and with more style than you or I could hope to.
[1] https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
bla3 · 2020-02-02
The grid version, praised as the best version, on https://eev.ee/media/2020-02-css/thumbnail-grids.html#grid renders incorrectly in chrome 79, the current stable release. (It looks fine on Canary and in Safari.) The more things change...
NateEag · 2019-08-08
I have been paid to write PHP for several years of my career. More than any other language, I think, neck and neck with JS.
I have also written heavy amounts of Python and Java at various points in my career. A few other languages too.
PHP has many, many bad spots. It's easily the ugliest, clumsiest language I have been paid to use.
It's slightly dated, but this is still the best summary I know of:
https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
SamWhited · 2018-12-04
Read this; it's a tad old, but still a very good read and while a few specifics have been fixed the overall argument is still perfectly sound: https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
djsumdog · 2018-06-04
It's type system and automatic casting/comparing is a nightmare.
Although there are namespaces now, the idea of everything being in the global scope was insane (and still even with namespaces, much is still in the global scope).
mysql_real_escape_string
There are no type-safe comparisons for greater or less then (You have ===, but no <== or >==).
This article: https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
This subreddit: https://reddit.com/r/lolphp
The number of bugs that are closed as not-a-bug/wontfix.
I'm not sure how much of this has been fixed, but I've moved on to different languages and career choices and don't really want to look back that way.
wlll · 2018-04-11
Because MySQL is the PHP of databases. Much like PHP is designed to just carry on truckin' whatever problem it encounters (https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/), MySQL was too. It's easy to slam some data into it and get it back without having to think too hard about what you're actually storing (https://grimoire.ca/mysql/choose-something-else). It's ease of use made it pervasive, much like PHP.
Following on from that, I suspect a lot of large companies use MySQL because they always have, not because it's actually any good. For example, Basecamp used MySQL while I was there, but I never met a single Sysadmin there who would use it over Postgres if they were to start a new project.
x0x0 · 2018-01-19
You may be interested in eevee's story:
https://eev.ee/blog/2015/06/09/i-quit-the-tech-industry/
My partner left finance to work in medicine. She makes a lot less money and likes it a lot better. I dunno where you live, but becoming a physician assistant can be a pretty good gig: much less school, pretty good salaries, pretty defined hours, very little debt.
Personally, I worked at a series of toxic startups and needed two years away to not loath programming. I regret nothing about leaving tech the first time, and after returning, my biggest regret is waiting so long to start my own company. Closely followed by tolerating so many shitty bosses. It helped me to have friends that did things besides work; workaholics are very common in sfbay. Dunno if that helps, but good luck.
theon144 · 2017-11-15
https://eev.ee/blog/2016/07/31/python-faq-why-should-i-use-python-3/ is a fairly good summary. There are loads and loads of syntax improvements (I personally love the new unpacking), new features, and other enhancements.
Sure, you can continue using Python 2, and it's going to work for you. I guess you can also keep using Windows XP (no reason not to use it beyond the fact that Microsoft has gotten bored of providing security and bugfixes), and code using your PS/2 keyboard...
BoppreH · 2017-11-15
To preempt the inevitable discussion of which version to use, please refer to the amazing FAQ created by Eevee: https://eev.ee/blog/2016/07/31/python-faq-why-should-i-use-python-3/
As a library writer, I cannot wait until we get rid of this self-inflicted handicap of writing in a subset of two incompatible languages. I'm glad the heavyweights are joining the cause.
Avshalom · 2017-06-18
As eevee put it https://eev.ee/blog/2016/02/15/everyones-offended-these-days/ :
>I love Stephen Fry, really I do, but this oft-repeated quote is bullshit and he is perfectly demonstrating why that is. What he’s really saying is this: everyone else’s feelings don’t matter, but his do, because he frames them as universal rules of discourse rather than feelings.
>Look at his post again — that’s exactly how he words his point of view. “Too many people have peed in the pool.” “Now the pool is stagnant, …frothy with scum.” Fry’s feelings aren’t feelings — they are a universal and objective standard of behavior, which everyone else is violating. All those angry people, yelling that Fry has violated a universal and objective standard of behavior? Ah, they’re just perpetually offended, you see. Totally different.
rtpg · 2016-11-14
A while back she wrote about quitting Yelp[0], and 9-5 jobs in general, because it sucked to spend 5 out of 7 days of the week working on things that, in the end, wasn't making them happy.
Ever since, I think she's been living solely off of Patreon, writing blog posts about things that are interesting. A great blog overall, and a nice/funny person
[0]:https://eev.ee/blog/2015/06/09/i-quit-the-tech-industry/
dschiptsov · 2016-09-08
"Reusable integers" is a real fail - it violates the principle of least surprise and introduces a nasty inconsistency - all integers should logically be (refer to) the same integer object, not just the first 100.
Assert is a statement, not an expression, so do not use it as an expression.
One should never compare floats. This is taught in any freshman CS course. The limitation is due to the standard encoding of floats - IEEE 754 - not Python's fault.
Everything else are features of a truly dynamic language, designed for a really quick prototyping. Python3.x got rid of many inconsistencies and caveats of 2.x
Shall we re-read the classic now?
https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
aaronbrethorst · 2016-08-23
Quasi-related, one of my favorite programming language essays of all time: https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
From what I've observed, I feel like Node is where hipsters who decided that PHP was "icky" ended up.
mwcampbell · 2015-12-01
> As a user, my experience with HTML/CSS/JS apps is great. Look at the excellent feedback the Atom Editor is getting.
For some less positive feedback on Atom, which reinforces some of creshal's points, see the Atom section of this text editor rundown:
http://eev.ee/blog/2015/05/31/text-editor-rundown/
I've also frequently seen complaints to the effect that Atom is much too slow, even on machines only a few years old. Even my 486 laptop back in 1997 could run a text editor with syntax highlighting (specifically, JPad for programming in Java). What are editors doing these days that needs so much CPU power?