TheJach.com

Jach's personal blog

(Largely containing a mind-dump to myselves: past, present, and future)
Current favorite quote: "Linux supports the notion of a command line or a shell for the same reason
that only children read books with only pictures in them. Language, be it English or something
else, is the only tool flexible enough to accomplish a sufficiently broad range of tasks." --Bill Garrett

Vim's learning curve is wrong

This image has been around for years:
learning curve

(I actually found this blog post while searching for the image, it's worth a quick read but touches on a different point.)

Here's my first complaint. The axes aren't labeled. Well, I guess that's better than being incorrectly labeled, since now you have a chance to interpret it correctly. The horizontal axis being time is usually a good guess, and in this case is correct. (Which is why emacs is funny.) Learning curves are fairly arbitrary anyway. I think that they're supposed to measure the rate at which one acquires knowledge or ability, the rate at which one learns. They're supposed to measure velocity. Typically, however, creators of graphs intend them to measure either difficulty, frustration, or total ability or amount learned, with perhaps specific pieces of knowledge along the way. They represent your position. Position where? On some path to total mastery. In the above graph, we have a lot of interpretations to work with. I'm going to present the Proper Interpretation of each editor, which is the interpretation I chose for this post, and then explain why vim's is wrong no matter how you look at it.

See Full Post and Comments

Apache's Common Log Format Datetime converted to Unix Timestamp with C++

The datetime in Apache's log format looks like this: day/month/year:hour:minute:second zone. It usually has wrapping brackets but I'm assuming those have been taken care of. The datetime format has a standard name but I don't remember it right now. An example would be "04/Apr/2012:10:37:29 -0500".

This is great for displaying to humans but annoying to pass around to computers, so let's convert it to a Unix timestamp that is simply the number of seconds since the Unix epoch, i.e. 1970-01-01 00:00:00 +0000. Notice that since the simple seconds timestamp has no time zone information, that information will be lost.

The code, released in public domain (I don't think one could assert copyright over this anyway):

See Full Post and Comments

Dumb patent of the month: Emotional Context

Okay, I'm not even sure if this is a real patent or not: http://www.patentauction.com/patent.php?nb=7385 It's a "Method of Adding Emotional Context to Electronic Messages". They want $10,000 for a license, but it comes with a free dotcom domain name!

The "patent number" referenced doesn't lead anywhere searching with Google or the US patent search, so who knows if this is real. It wouldn't surprise me. The site itself is probably a scam site, it looks pretty shady to me, but I have no idea. Anyway, let's just look at it and mock it. (I could have picked the Linked List patent or the Cat Chasing Laser patent if I wanted a real patent, but those have been mentioned before. I'll try harder next month if I remember. (Not that it's hard to find a bogus patent in any field that should never have been granted.))

This patent is nothing but an assertion of monopoly rights over how to style text to convey emotion. Luckily my use of italics there doesn't violate it, as we shall see.

See Full Post and Comments

So, PHP...

There was yet another wave of PHP-hate across the interwebs over the last couple weeks. It's truly fascinating that a language as decent as PHP can have hatred that rivals and sometimes exceeds the hatred for BASIC and even for some people COBOL. Since I haven't written anything in a while (lots of drafts), I figured I'd write about some of the things that I like about PHP.

First off however is what I don't like about PHP, since I can't say I'm gushing happiness with the language. I don't like the syntax (with the exception of sigils and double-quote-inlining) and their choice of OOP implementation that's an unholy mix of C++ and Java. After years of Python and a few decently sized projects in Clojure, coming back to PHP feels like just a nicer version of Java. (Of course, after years of programming Java, I don't particularly hate it either...) I don't like the function argument order ambiguity and inconsistency, a problem that is mitigated through memorization and "php.net/func-name" but would be best mitigated with specifying default arguments at call-time in a way similar to what Python allows, which makes remembering the order irrelevant. I also think PHP could be faster, given I think of it as "the C of the web" (which will probably generate some hate). I hate the choice of a backslash for namespaces. I hate the lack of $_PUT and $_PATCH and $_CUSTOM and so on. Sometimes I pine for a REPL. I wish it handled utf-8 better. I wish it supported multiple inheritance.

That about sums up my issues with modern (>= 5.3) PHP. God help you if you're still supporting PHP 4 code.

See Full Post and Comments