April 1, 2010

Code ☃ Unicode

Let's come to terms: angle brackets and forward slashes are overloaded. Between relational operators, templates, XML tags, (HTML/squiggly brace language) comments, division, regular expressions, and path separators, what don't they do?

I think it's clear to everyone that XML is the best and most human readable markup format ever conceived (data serialization and database backing store applications heartily included), so it's time for all that crufty old junk from yesteryear to learn its place. Widely adopted web standards (such as Binary XML and E4X) and well specified information exchange protocols (such as SOAP) speak for themselves through the synergy they've utilized in enterprise compute environments.

The results of a confidential survey I conducted conclusively demonstrate beyond any possibility of refutation that you type more angle brackets in an average markup document than you will type angle-bracket relational operators for the next ten years.

In conclusion, your life expectancy decreases as you continue to use the less-than operator and forward slash instead of accepting XML into your heart as a first-class syntax. I understand that some may not enjoy life or the pursuit of happiness and that they will continue to use deprecated syntaxes. To each their own.

As a result, I have contributed a JavaScript parser patch to rectify the situation: the ☃ operator is a heart-warming replacement for the (now XML-exclusive) pointy-on-the-left angle bracket and the commonly seen tilde diaeresis ⍨ replaces slash for delimiting regular expressions. I am confident this patch will achieve swift adoption, as it decreases the context sensitivity of the parser, which is a clear and direct benefit for browser end users.

The (intolerably whitespace-sensitive) Python programming language nearly came to a similar conclusion to use unicode more pervasively, while simultaneously making it a real programming language by way of the use of types, but did not have the wherewithal to see it through.

Another interesting benefit: because JavaScript files may be UTF-16 encoded, this increases the utilization of bytes in the source text by filling the upper octets with non-zero values. This, in the aggregate, will increase the meaningful bandwidth utilization of the Internet as a whole.

Of course, I'd also recommend that C++ solve its nested template delimiter issue with ☃ and ☼ to close instead of increasing the context-sensitivity of the parser. [*] It follows the logical flow of start/end delimiting.

As soon as Emoji are accepted as proper unicode code points, I will revise my recommendation to suggest using the standard poo emoticon for a template start delimiter, because increased giggling is demonstrated to reduce the likelihood of head-and-wall involved injuries during C++ compilation, second only to regular use of head protection while programming.

Footnotes

[*]

Which provides a direct detriment to the end user — optimizing compilers spend most of their time in the parser.

On the less infamous perils of biking to work

Anybody can be hit by a motor vehicle when riding a bike, but it takes real talent to be discriminated against by someone whose political philosophy is grounded in the 1940s.

According to recent (and obscure) Gallup polls, most Americans believe that discrimination against bike riders is a thing of the past. I have first-hand evidence that they are tragically mistaken.

As few as two days ago I was a victim of drive-by Neo-McCarythism. While biking across an intersection, dressed all in green, with no emblems of Che Guevara to be found, a man in a blue, 1990 POS yelled out a single word — "Communist!"

His car screeched down the off-ramp, insofar as a crappy little car can do so. Ever the optimist, I first thought that the man might be giving me a friendly warning. I checked behind me to see if there was a communist attempting to common-ownership-ify my wallet, but there was no-one to be found! At that moment, I was struck with the realization...

Maybe it was psychological. Maybe it was the reclaimed waste water. All I know is that, somehow, I felt unclean. I was being called a communist, because I was biking to work. At that moment I could only take solace in the fact that, due to the extreme crapitude of his car, the accuser must be a really bad capitalist.

Although I don't personally associate the act of pedaling one's legs with a desire to overthrow the bourgeoisie, I can take a guess at the twisted reasoning that leads some people to do so. Bikers don't buy leg-gas. In the extreme case, where you bike everywhere, you don't even need a car. You know who else didn't have cars? Communists.

In any case, the modern-age bike-rider should be aware of the political sentiments surrounding biking, lest history repeat itself.

The List

Reclaimed bile juices

Dear property owners of Santa Clara,

As much as I appreciate your movement to nurture the sidewalks during their critical summer-growth phase, I do not appreciate being sprayed with reclaimed wastewater every day on the way home from work. Being a bicyclist, I will choose being hit with poo-water over being hit by cars, but I will not like it. I will also be forced to curse your name and everything you stand for. [For example, in the following story.]

Legend has it that Axmark was taking a walk around Sun's beautiful campus one evening, contemplating acceptance of Sun's fascist policies, as an impact sprinkler's arm fatefully slammed against its nozzle. Axmark was quickly doused in processed toilet liquids, and came to realize that he didn't have to take that kind of shit.

With terrible puns,

Chris' Raging Bile Duct

World-readable plaintext passwords and toddler murder

What do world readable plaintext passwords and toddler murder have in common? They're both easy.

Oh, right... not to mention they're both bad! I, for one, have accepted our not-evil corporate overlords and have been using GMail since my full-time-student unbecoming. As a result, I was looking at the GMail notifiers available in the Ubuntu repository.

One, called cgmail, was written in Python and had a fairly beautiful codebase. cgmail tied nicely into gconf and had everything going for it. I totally would be using it if it didn't crash ten times during five minutes of configuration. [*]

Another, called gmail-notify, worked perfectly. The source looked like it was written by a Java programmer (you know, making a "main" method for classes and such) who didn't believe in refactoring or PEP8, which made me a little sad. What made me really sad was finding that it stored my password in plaintext in a word readable file, and I had never gotten any warning.

This is a bug on the part of two parties: the MOTU who maintains this package (I'll be submitting a bug report) and the creator of the program. The Gentoo wiki has a page on the ability to install via portage, from which I quote:

elog "Warning: if you check the 'save username and password' option"
elog "your password will be stored in plaintext in ~/.notifier.conf"
elog "with world-readable permissions. If this concerns you, do not"
elog "check the 'save username and password' option."

Ideally this would read: "There is no 'save username and password' option." Just to recap some things:

  1. Do design your program to allow for plugins that tie into keyring managers,

  2. Don't knowingly put some of my most sensitive data where any user on the system can read it, and

  3. Don't, for God's sake, let me install a program that does this without telling me!

I don't mind that Pidgin stores my password in plaintext because it's an Instant Messaging client and it's as careful as possible to use file permissions as protection. gmail-notify used my default umask, which is clearly not good enough, to protect perhaps the most personal data that I have.

You know who you should really feel sorry for, though? Linux-using toddlers.

Footnotes

[*]

I'll probably end up contributing to this project.

I look less leet around campus because I dual boot Vista

A few weeks back I got a brand new X60 tablet... to replace my relatively new X41 tablet. What can I say? I'm a sucker for high resolution screens... Lots of code and documentation needs to be viewed in parallel, and the X60 has a beautiful SXGA+ (1400x1050) configuration on its little 12" display (let's just say it's a good thing I'm near-sighted). [*] I'm planning on giving the X41 tablet to my sister for the start of her college career, since it's fully functional, in good condition, and sells for under $800 on ebay.

The Operating Systems Practicum that I'm taking (CS415, my CS project course) forces us to use Microsoft Visual Studio by having a huge, ugly, Windows API-based codebase. I tried to port the first project to make it POSIX compliant, but I couldn't figure out how to manipulate the stack pointer in gcc assembly — this was necessary to port their user-level threading library implementation. The whole mess was terribly x86 dependent to begin with.

As a result, I need to use Microsoft Visual Studio this semester, and so I decided that I would just squeeze the NTFS partition that Lenovo graciously provided to me, as opposed to obliterating it the first chance that I got. [†] I now dual boot, and many people believe that my leetness level has dropped considerably. To compensate, I did a::

% sudo apt-get install compizconfig-settings-manager

and turned my minimize effect to::

Burn @ 200ms @ (type=Normal|Dialog|ModalDialog|Utility|Unknown)

Which made all my windows go up in flames. Of course, this made me totally leet... for about five minutes, at which point I turned compiz off because I didn't want Xorg using up unnecessary resources. [‡]

Footnotes

[*]

My one gripe is that it shipped with a single pixel that's stuck bright green — single pixels aren't covered under Lenovo's pixel replacement policy. Argh!

[†]

Not-so-graciously charging me the Windows Tax for an OS that I can get for free through MSDNAA.

[‡]

More evidence that I'll probably never be a Mac OS user.