September 2007 Archives

24 Hours with Moveable Type

Well, I’ve been using Moveable Type for about a day now, and I need to say that over all, I’m a lot happier with it than b2evolution. It’s administrative interface is actually functional, it’s templating system makes more sense to me than b2evos did, and the Widget system seems pretty cool.

Still, I have a few gripes. The templates that ship with MT4 don’t actually use the Widget Sets system that they’ve built for it. I’ve gone ahead and ported this blog to using the Widget Sets, but I need to rework the widgets and the template to have different widget sets for different types of pages, and display them correctly still. Having to re-publish my site when I make template changes is different, but I don’t really mind that much since it’s a background process and keeping my blog in HTML files will just make it load faster later. Plus, this is infinitely more indexable by search engines than b2evo was (not that I care too much about that, but it is a potential plus).

As pleased as I am with MT, I would not have paid for this software. There is no way that would have been worthwhile to me. The only reason I allowed MT to be a serious contender in my search for blog software, was that it was going to have an Open Source version soon. I just hope that they don’t fuck it up with a bizarro license and that I can easily migrate to the OSS version when they finally release it.

Why I Hate Developing for Microsoft Platforms

Since I graduated and actually started working in my field, I've been working almost exclusively on Windows, which is a large part of the reason, I believe, that lately I've been focusing more and more on getting involved in Open Source and GNOME development.  Now, while I do prefer Linux and non-Microsoft software, I've long since gotten over the whole blaming Microsoft for being an Evil Mega-corporation.  Actually, their recent technologies, such as Silverlight and .NET, really interest me.  C# is one of my favorite languages.  Yes I'd probably have never given them another look had Miguel de Icaza not started the Moonlight and Mono projects, respectively.  But since I have an option to play with the technology, I've come to really like it.   I just wish the .NET API was a little more stable.

Still, as much as I like .NET, I don't feel that Windows.Forms did enough to correct what I feel is wrong with Windows GUI development.  First, when they shipped .NET, the environment would create the GUI as code in whatever language you were working in.  This is just stupid.  Having to recompile your application in order to make a small tweak to the UI is just ridiculous.  I know they've since corrected this with an XML-schema, but what I've read about it suggests it still isn't as flexible as what Glade can do for GTK+, not that information about it is easy to find.  Most searches for Windows.Forms and XML just want to tell you about the DataGirdView class. 

Plus, Windows.Forms applications are still hard to design such that the GUI handles resizing and the like cleanly.  While it's an improvement over straight Win32, I found that I had a hell of a time getting an window to properly resize, particularly shrink.  Plus, if I increased the size of the Window, I may not have been able to get it to reduce again.  Sure, this may just be my lack of intimate familiarity with Windows.Forms, something that I am working to rectify, but when I design a GUI in GTK+, it just works.  I pack the widgets into the containers I want them in, set some settings, and it works for me.  It does what I want, and I don't have to write a ton of code to ensure my widgets behave as I expect when I resize the window.  I was also disappointed that while the idea of "container" objects really took hold on this version of the API, I feel Microsoft really messed up in not making everything a container.  That, in my opinion, is what makes GTK+ so easy to use.  All widgets are packed in containers, and while it takes some work to get used to it, I feel that it goes a long way to ensuring that programs written in the toolkit will be more uniform in their behavior.

I already sort of mentioned it, but the documentation on MSDN is really, really hard to use.  For instance, go to the MSDN, and enter the term "ADODB" into the search box, I would expect to get the API documentation for the ADODB COM Object first.  Instead, I get an enormous amount of articles, forum posts, blog entries, and links that aren't even on MSDN.  Even if I filter my search by the MSDN Library, I still don't get the result that I'm looking for.  If the COM object I need to use in order to use the ActiveX Data Object (ADO) is ADODB, why doesn't that search get me to the ADO portion of the Library?  This is really, really bizarre to me, because in general Microsoft's Live Search does a really good job of returning relevant results.  So what's wrong with the MSDN search?

Finally, lately I've been working in VBScript and ASP.  I was never much of a fan of VB or VBScript, I always felt they were a little too verbose.  Having done mosto f my programming in C/C++/Java/C#/Perl and now Python, BASIC is a bit of a culture shock.  However, this would probably be more tolerable if the language would be
more internally consistent.  For instance, why do Do and For Loops have different termination keywords?  Why not just use LOOP for marking the end of both a For/For Each or Do loop?  Even Next would be acceptable, as long as it was consistent. Of course, there really isn't a good reason I can find that End isn't used to mark the End of a For block or Do Block, especially since the Exit keyword is used to denote premature ending of a loop.  The End keyword should be a generic method to End the current code block, kind of like the function that curly brackets serve in C-based syntaxes, or the indention level does in Python.  Maybe it's just culture shock, but the Loop and Next keywords just seem like unnecessary cruft to me.

Error handling could be a lot more robust as well.  I should be able to tell the runtime which errors it's allowed to ignore and continue on. Instead, all I can do is tell the software to Goto a certain line, or just keep executing on an error.  If I'm writing a library call, and an error occurs, I can't just let the runtime propagate that error up the caller for me, which requires I either handle the error (not the best idea for libraries), or issue a specific call to raise the same error again. Plus, errors aren't named, and are harder to identify.  I shouldn't have to guess at the contents of the Error Description to determine what actually went wrong in my program.  Especially when the error messages are usually pretty cryptic.

Of course, keyword cruft and poor error handling is nothing compared to the use of " as both the only way to denote the beginning and end of strings and as an escape character.  If you thought counting parentheses is a LISP-like language was annoying, just wait until you have to count double quotes.  I mean, who thought this:

"""He's dead Jim,"" Bones said with a hushed voice."
Was possibly a good idea?

First GNOME Patch Accepted

Well, I got the e-mail today, that apparently my first Patch has been accepted into the Rhythmbox Project, making me a GNOME Contributor (finally). I’m glad to finally be doing some coding in something other than web programming for projects that I use regularly anyway. Unfortunately, the maintainer that applied my patch had a tweak a few things, but it was just an error message that wasn’t very clear and an small organizational issue, so I’m pretty happy with that.

Still, it was pretty exciting to get that e-mail.

Unfortunately, the changes made by the Maintainer who did the commit have made it more difficult for me to merge my development branch for this patch into the master branch on my local git repo. Fortunately, this means that it’s an ideal opportunity to learn how to handle conflict resolution in git.

Randy Pausch - Last Lecture

A couple of days ago, Randy Pausch, a Carnegie-Mellon University Professor in Computer Science and Virtual Reality, who was recently diagnosed with Terminal Cancer, gave a lecture for the CMU Entertainment Technology Center. It was a part of CMU’s old “Last Lecture” series, where a professor is given an opportunity to give a lecture on ANYTHING they want.

We started doing it at Montana State University through Residence Life, and I thought it was a great, great program. Most professors chose to give their own take on Life’s Lessons, which was always interesting, and Dr. Pausch was no exception in this presentation. He talks about Dreams. What his were, how he accomplished them (or didn’t), and how he went on to help others accomplish theirs. His lecture is funny, entertaining, and heartfelt. He doesn’t talk like a man who’s about to die, he talks like a man who intent on living for as long as he possibly can, knowing that it isn’t very long.

I really, really suggest everyone watch this video. It’s nearly two hours, but it’s worth every minute.

GNOME Development

I decided that I need to be doing more programming, so I’ve begun going through the GNOME Bugzilla, and submitting patches for some Bugs I’m running across. So far, I’ve submitted two patches to Rhythmbox (the GNOME iTunes-like player), and am thinking about a few more.

I’ve also used the opportunity to learn git, by linking the Rhythmbox SVN into a local git repository. Git seems pretty cool, but I haven’t really had an opportunity to look at how it handles collisions, which frankly is going to be the most interesting part of git, in my opinion. Still, it’s branching is quite interesting, and I like that I can maintain version control in my local repo without messing with the GNOME SVN.

Life, lately

Well, it’s been 10 months since my last post, and about a year since my last post with anything about me in it, so, I guess it’s time for another update, while I contemplate becoming more active in my blogging.

My work for Cuda-Buffalo Apparel (now CB Apparel) eventually moved away from being an Accouting Clerk, and I became that companies IT Administrator. I left the Company in August to move to Pullman, WA to follow Catherine, who is now studying Zoology and Molecular Phylogenies at Washington State University.

As for my own work, during the day I work for Washington State University’s Office of the Registrar as a Programmer for their RONet, a collection of Applications to support Registrar Office functions. The platform is ASP and MSSQL, which I was unfamiliar with, the Language was VBScript, which I was not fond of. Actually, I really like my job. It’s a lot of work, but I’m programming and designing all day, and it’s really, really nice.

At night I am finally doing some consulting. I’ve registered as a Business in Washington State, doing business as “Craig Consulting”, I’m looking into a domain name for a company website. Currently my only client is CB Apparel, but I hope to push for expansion of that list.

Due to Catherine’s work in Bioinformatics, I’ve because interested in some of the programming side of it, as the field of Molecular Phyogenetics has an intense dependence on computer systems and software. Currently, I have merely been familiarizing myself with the BioPerl suite, and writing a general purpose format converter to change a datafiles format so that other software can use it.

In web work, I really like the look of Catalsyt for Perl, but I haven’t done much with it. After working with several large website that mix all their processing in with their formatting, I’m a strong believer in MVC for web applications now.