Software/Device Development and Design

Debian's Package System is Shit

It's two-thousand-goddamn-thirteen: Why the crap are we manually screwing around with arcane instructions, some arbitrary config file, obtuse meaningless substitute names for the real fucking version number, and the whole disabled-by-default "backports" bullshit, all just to install a vaguely recent version of some program or lib, that's already been backported (really? Shit needs to be ported from Debian to Debian?!?) to whatever version of Debian we're using? What the fuck is this, 90's Slackware?

This is how sane shit works:

% sudo apt-get install libevent2 Ok boss, done.

Or even this:

% sudo apt-get install libevent2 ERROR: That's only available in the 'backports' repo which is disabled by default. You must use the flag '--backports' to install software from the 'backports' repo. % sudo apt-get install libevent2 --backports Ok boss, done.

(I've been writing software nearly all my life and I can tell you right now there is no technical reason why that can't work.)

On the other hand, this is how obtuse moronic bullshit works:

% sudo apt-get install libevent2 'libevent2'? Never heard of it. % sudo apt-get install libevent Installing some useless ancient version...done % Gee, thanks error: Piss off % websearch "how to install libevent2 on debian" Results: Whole bunch of useless crap and some vague buried mention of needing some "backports". % websearch "how to use backports on debian" Results: Bunch of crap and some mention of adding "deb squeeze-backports(-sloppy) main" to some 'sources.list' file. If you're lucky it tells you where fuck 'sources.list' actually is. % gksudo kate /etc/apt/sources.list > /dev/null 2> /dev/null & (Isn't launching a GUI program from the Unix cmdline fun? Almost makes Windows look good. Sort of...) % sudo apt-get update Barf. You were clever enough to guess what YOURMIRROR was supposed to be changed to by blindly copy-pasting from some other random line in the same file, but I'm still gonna crap out for you with unhelpful errors anyway. % remove the "(-sloppy)" bullshit from the new line, because by dumb luck I just happen to know that doesn't belong there. Ok. % sudo apt-get update Could not resolve '' (Fucking SERIOUSLY?!?! Yes, I really got that.) % sudo apt-get update (Partially works this time.) % sudo apt-get install libevent2 Never heard of it. % sudo apt-get install libevent2-dev Never heard of it. % sudo aptitude update Sure dude, whatever I guess... % sudo aptitude install libevent2 Never heard of it. % sudo aptitude install libevent2-dev Never heard of it. % websearch "It didn't fucking work, asshole!" Ehh, ok, well what version of Debian you using? % debian 6 Never heard of Debian 6 % What the fuck, you stupid...&*(@#$&^*(?!? Never heard of Debian 6. Please enter the name of some random-fuck Toy Story character instead. % ugh...fine...ummm, a=1, b=2...e=5... And no cheating by using any sane ordering, we've made sure that won't work, either. % FUCK YOU error: command is unrelated to Toy Story. Go screw off and come back when you care more about Pixar. % post-rant "Debian's Package System is Shit..."

Guess which of the above most closely resembles Debian.

It's no &*$^@# wonder that MS-slave corporate suits are such douchebag snobs towards Unix.

If there is already active work in progress at fixing this mess, then sincerely: KUDOS!

Read more

Facebook is not written in PHP

Yea, I know you're thinking "This guy's nuts! Everyone knows Facebook is PHP!" Sit down, shaddup, and I'll explain...

But let me address this first: The claim that "Facebook is written in PHP" is frequently used to rationalize using the world's worst language. This is, of course, idiotic because appeal to authority is a logical fallacy. To put it in simpler terms: Just because Ozzy Osbourne abused the hell out of drugs and alcohol and wound up rich, famous and alive, obviously doesn't mean it's a good approach to imitate. Get the picture? So quit saying stupid shit like "PHP is fine because XXXX uses it". It makes it obvious you're an idiot.

Ok, back to Facebook's usage, or not, of PHP:

Like any remotely sane company, Facebook doesn't use PHP for its core systems. The actual "core stuff" language used varies by company, but at Facebook, they "use C++ heavily on [their] back-end systems"[1]. In fact, they "use C++ at Facebook all over the place".

While Facebook has things that are ostensibly PHP, it's not the real PHP. The real PHP is such a piece of shit, Facebook had to write their own alternate version of it (HipHop's HPHPc, which converted the "PHP" to C++). Then they had to make another, the HPHPi. And then yet another, the HipHop VM. Facebook does not use real PHP, and that's because true PHP is just simply crap unsuitable for them.

Not only that, but the psuedo-PHP that Facebook does use is being quickly overtaken by Facebook's increasing usage of C++: "...two years ago, maybe 90% of [Facebook] programmers wrote PHP and 10% C++. Now there are roughly as many C++ programmers as PHP programmers." Additionally, Facebook has had growing internal interest in D (note that link is over a year old already), and Facebook's HipHop team is one of the sponsors at this year's D conference.

So ultimately, no; contrary to conventional "wisdom", Facebook is not written in PHP.

[1]: See question #4 here.

Read more

The PHP CMS Screwed Up The Previous Article - And This One

Wow, leave it to a PHP-based content management system to help me prove a point about useless bug-riddled crapware.

No later than when I wrote and tried to post the following message, that's when this PHP-based article system inexplicably corrupted the post and turned it into a black hole. If I'm lucky, the same wont happen again right now...

Original *attempted* posting:

Anti-Perfectionism Doesn't Mean "Release Crapware"

"Don't let perfection become the enemy of the good"?

That's all fine and good to an extent, but many people take it too far and wind up with products that are only minimally useful. Or useless bug-riddled crap.

Don't let rapid development become the enemy of a worthwhile product.

UPDATE 2013-03-20: I've fixed the problem. For some idiotic reason, the id (primary key) column of the database's "article parts" table (actually "tcm_mod_article_parts") was set to signed TINYINT. Seriously. That meant only 127 articles parts (I have one or two articles here that are two-parters) and then KABOOM, error upon INSERTs, which is exactly what happened. I have no idea whether the TangoCMS installation script set it up that way or if MySQL's migration tool fucked it up when I changed servers, and I'm not going to investigate either. Either way: fuck!

Oh yea, and wasn't it nice of my PHP-based CMS to not bother to give me any indication whatsoever the DB had returned an error, or that there has been any error at all? Wasn't even in the damn logfile for shit's sake. But then that's the whole philosophy of these damn dynamic languages, isn't it: Never flag an error when you can silently do the wrong thing.

I am still working on my own custom D/Vibe.d-based replacement, and it's been coming along, but slowly since I haven't had much time lately to dedicate to my various pet projects. It's not too far from a releasable state, but still needs some work on a few things.

Read more

Anti-Perfectionism Doesn't Mean "Release Crapware"

"Don't let perfection become the enemy of the good"?

That's all fine and good to an extent, but many people take it too far and wind up with products that are only minimally useful. Or useless bug-riddled crap.

Don't let rapid development become the enemy of a worthwhile product.

Read more

Know Your Computer Terminology: Worse is Better

"Worse is Better":

The software development philosophy that flexible software is too useful to too many people and should therefore be replaced with a proliferation of inferior alternatives, all of which have significant problems or limitations which result in them all being of minimal overall usefulness.

Such non-useful software can be made cheaply and easily by lazy and poorly trained people who don't particularly feel like or know how to write reasonably good code. The result is that software becomes worse, however it is exactly this inferiority which is highly valued by savvy modern developers.


"Worse is Better" is a hip, common and convenient way to rationalize the practice of habitually phoning-in half-assed work.

Read more

It's an absolute travesty of basic sense...

...that the buzzword "touch" is bandied about by the creators of buttonless touchscreen-only devices which inherently have no tactile sensation at all.

(Yes, I just used the phrase "bandied about". So I've been watching Frasier, ok? ;) )

Read more