1) try not to be such an ass _all_ the time.
2) see number 1.
1) try not to be such an ass _all_ the time.
2) see number 1.
And so "the" holiday has passed, another Christmas done and gone. And yet, the war rages on in our hearts and minds.
I tried to do my part for the war effort.
I held a Micky Santa hostage until he admitted his holiday cheer was chemically enhanced. It is the small efforts that will help us triumph over the fruit cakes and poorly arranged Christmas songs.
As a final blow against the great seasonal tyranny, I mocked the very "spirit" of the holiday. To the dismay and horror of my friends and loved ones, I turned against the spirit of giving and gave my money to charity. No gifts labeled to or from Mark this year. To spite the very meaning of the holiday, I laughed in the face of it all and gave the money away to those selfish bastards who actually need it.
I turned the holiday on its ear and became a humanist, a damned dirty humanist. There is no place in this holiday, or this country for that matter, for humans. Mickey learned that the hard way.
But we are rising up. We are getting stronger. There are plenty of "humans" in this world that will hear our call. You can run. You can try and hide your freshly unwrapped Xbox 360s and your assortments of cheese and sausages, but it is only a matter of time. The humanists will hunt you down, and you will pay.
warning: technical rant follows. NSFPWL (not safe for people with a life).
When I worked at techies.com back in the day, the developers had this habit of describing the code base as "very OO" (oh, oh). Deciphered as very object oriented. The techies code base was bloated and slow and completely unstable. As a system administrator I had written a script to loop and wait until the main java servlet process crashed, and then it would start it again. This happened about every ten minutes or so. If you would ask the developers about the development methodologies of the techies application they would inevitable say, "It is all very OO."
Saying something is very OO when asked about the inner workings of an application is like a mechanic answering "We made it go fast" when asked about the engine of a stock car. This answer is so general and vague it is like saying, "Well, we used a combustion engine in this car, cause, well, combustion engines are the new exciting engines, and they make the car go forward."
This leads me to Movable Type(MT). I have helped implement a few systems with MT, and helped manage and maintain a high volume web site that is published using MT. From a users perspective MT is a clean and nicely designed weblog publishing system. It is fairly easy to install, and has a decent feature set to get a weblog off the ground and running. It also provides a plugin API, and there are a wealth of plugins out there that extend the app in many interesting ways. It is easy to understand why end users like MT.
When I first started hearing about MT people would mention how great the code base was. "It's clean Object Oriented Perl." they would say. When I questioned why MT wasn't open source I was told by one user that the main developer was concerned about accepting any code into his pristine code base (note: I am fairly sure that this was inaccurate, but I mentione it to note people's perception of the MT code). When a company I contract for was discussing moving to Wordpress (another weblog publishing tool) a concern of one of the adminstrators was that it wasn't truly "OO" like MT.
To be clear, I will draw a line in the sand. These are all perceptions of end users and people who have not done much development with object oriented languages, or with MT proper. These are comments from people who have used, and are using, MT.
After working with MT for a while I started to peek in under the covers to see what was what. Most MT installations run as perl CGI, and if you have had any experience running a high traffic site you will understand what that implies. CGI is not very scalable, and perl CGIs add even more overhead to the problem. Add some OO (very OO) perl on top, and you have built yourself a three-toed sloth for a web application. Mind you, MT was built primary for personal publishing (I am assuming here), so for most, this isn't an issue.
This leads me to a "very OO" aspect of MT, MT's CMS class. This class implements a very basic anti-pattern, the god class. It is over five thousand lines of perl code with over 100 methods. CMS handles much of the core content management calls for the web application, at least I assume it does as I didn't read through all of the five thousand lines of code. It is a behemoth of a class, and bloated is a nice way to describe it. It is a grand example of a god class.
[mark@louis App]$ wc -l CMS.pm 5203 CMS.pm
I have written a god class (a few to be honest), every developer does at some point. Being a good developer is about learning from mistakes, and improving on your design the next time. Do I fault the developers at techies for their badly written code? I do not. I eventually became a developer at techies and helped introduce my share of badly designed code. They key is, of course, not repeating the past, learning from your mistakes. This is what, in my mind, makes a good developer.
I don't write this to bash the MT developers. They have done a lot of interesting work, and we all implement bad designs along the way. It is all part of the process of being a developer.
So why the rant about MT? When people tout a bad design as an elegant design it is a misdirection, a lie. People who do not know better will accept it as good, and will propagate it. Movable Type is an acceptable weblog publishing tool for some users, but as an example of good object oriented design and implementation it falls far short.
Brian sent me an email today about a simple HTTP API for making calls with vonage (our voice over IP phone service).
Third party call control allows third party developers to write their own software applications to initiate a call from their Vonage phone to any other phone in the world.
For example, an Outlook plug-in could be created that would initiate a call by clicking on a phone number in the Outlook contact list. Another example would be a browser plug-in that would place a call to a phone number on any web page.
I thought it'd be nice to be able to select a phone number in Apple's Addressbook.app (where I keep my contacts) and have it call that number. After a bit of looking around I found just such a script for skype. I did a couple of small modifications, and now it works for vonage.
Just save the following code as a script in "~/Library/Address Book Plug-Ins/", and modify the variable 'thispage' url to match your vonage username, password and phone number:
'username=vonage_username&password =***&fromnumber=15551212'
applescript:
Once installed just right click on any number displayed for a contact and select 'Dial with Vonage'.
All that picking up the phone and dialing crap, it was making me tired. Yet another great example of how the modern age has turned me into a lazy bastard.