Tue, Feb 26, 2008
Java Rant
Posted at 10:03 am MST to Code
When I started working as a programmer, I used assembly language. (Uphill. In the snow. Both ways.) And much of my work when I was an actual programmer, not a CM/Build geek, was in C. I've debugged C++ builds, and VB and most everything else, but not really programmed in them.
Lately I've been working on Java builds generated through an IDE tool called WSAD, and googling for solutions to some situations I'm encountering, and all I can say is, "Good God. if the future is java and java programmers, nobody needs to worry about the Singularity happening in our lifetime." The level of publicly acceptable practice in Java programming is just appalling.
And it isn't the fault of the IDE: they don't bother to use it to set things up properly even by Java and WSAD standards. They just do whatever half-assed trick will more or less make it work. And you can forget about clean builds...
Took me a couple of hours to refactor a build in a way the developers claimed wasn't possible, and I don't even claim to be a Java programmer.
Mutter. Mutter. Whippersnappers. At least I know what a pointer is. And how to use an include path or classpath.
A related article by Joel Spolsky addresses some related problems with Java. The article is from 2005, but I saw it referenced recently somewhere.
Now I need to write a polite email explaining what I've done to their configuration so far by way of proof of concept.
permanent link || trackback || 0 comments || Add a comment
Fri, Feb 01, 2008
Papersize for OpenOffice on Linux
Posted at 10:58 am MST to Code
If OpenOffice on Linux keeps defaulting to the wrong paper size (A4 vs. letter or vice versa) check the value in /etc/papersize and make sure it is set correctly. Also check the values of any PAPERSIZE or PAPERCONF environment variables.
You need to close all OpenOffice windows after changing /etc/papersize, so that OpenOffice is shut down completely. Then reopen it to see the chnaged default.
Ubuntu seems to default it to A4. Fedora had the file, but with only a comment in it. And Centos 5 did not have the file at all (I may not have openoffice installed on that machine.
Oddly, OpenOffice on Windows XP hung opening a Windows doc file that opened fine on Linux. I should probably check for OpenOffice updates. That file was from Europe, so the A4 paper size in it was not from the default setting.
I need to remember to check the papersize settings on docs from Europe.
permanent link || trackback || 0 comments || Add a comment
Wed, Jan 30, 2008
Vmware on Ubuntu WLAN problems
Posted at 6:08 pm MST to Code
VMWare Workstation on recent Ubuntu has always had problems. It reported that bridging was not available even though it was configured.
Today, while trying to get a network connection working more transparently for work, I found a note on one of the ubuntu forums that recommended loading the latest version of the madwifi driver. I followed the instructions from the thread, and the error went away: vmware loads much more cleanly now.
I will probably need to rebuild the driver whenever the kernel gets updated, until ubuntu catches up to the latest version of the driver.
Mind you, bridging still does not actually work with a wireless connection, but this gets it closer.
I found another thread? -- this time on the vmware forums -- that described how to patch vmware's vmnet module so it will talk to the WLAN. However, the prepatched module on offer is for vmware 6.0.1 and I am at 6.0.2.
I tried making the patch changes manually, but apparently did something wrong. Vmware barfed all over the place with strange errors after I rebuilt it with the patched module.
Next I'll try the packaged patch (which does things a bit differently) and see if that gives better results. According to comments later in the thread it should work with 6.0.2....
And it does. Yay. The Vmware guest is now bridged instead of NATed.
Aaaand the more direct connection doesn't seem to make the Cygwin Xfree server any happier. I've turned off the Windows firewall and made sure the 'hosts' files on both servers know about each other, and Cygwin is still refusing to connect. Time for more googling.
permanent link || trackback || 0 comments || Add a comment
Mon, Jan 21, 2008
Customer Portal
Posted at 9:44 pm MST to Code
I've finally gotten back to work on the customer portal project for the office.
Logins are now doing what they are supposed to, and one field that needs to accept multiple selections from a list seems to be working properly.
I still need to get some fields and records to update each other, so they will be kept in sync when various values are updated. Then I can hand the project over to the people who will be loading the data. I expect that they will ask for some feature tweaks, but what I have is enough to get them going.
I think a couple of the updatable fields will be changing to always and only be updated by the application, not explicitly by users. But I may need a menu item to force a recalculation of some of those fields.
permanent link || trackback || 0 comments || Add a comment
Sun, Dec 16, 2007
Naked Tree
Posted at 9:33 am MST to Code
Yesterday I tok a break in the afternoon and went out to do a little shopping. I ran into Nanette and our friend Susan at a store that sells Christmas Village pieces, which was fun.
I now have my third building: Scrooge and Marleys Counting House (too bd modern accounting companies don't call them selves Counting Houses) and some landscaping pieces. And I totally need to reorganize my village to fit the new pieces in.
Both places I know of in town that seel Department 56 are sold out of Dickensian street lamps. I'll have to shop for them early next year.
I also have a small, naked Christmas tree sitting in my living room. I don't know when it will be decorated: this weekend that I had planned to spend on Christmas stuff is being eaten by software. No baking. Naked tree.
I will go to a concert with Nanette this afternoon, but can't really spend time before and afterward just having fun..
The normal mode of the package I'm trying to recreate is getting close to working right. The CGI package is going to be a problem. There is one key subroutine mentioned in a truncated file that doesn't exist anywhere and probably hasn't for 25 months. Gaaah.
I wish I'd noticed the truncations 2 years ago when all of this was fresh in my mind.
permanent link || trackback || 0 comments || Add a comment
Fri, Dec 14, 2007
Brain on Strike
Posted at 8:53 pm MST to Code
I'm not at the concert tonight. The weather is being messy enough that driving home would have been a a little scary, especially since I was up past midnight coding.
About two years ago, I made some major modifications to a program that the company sold to a couple of our customers. When I shifted over to other projects I zipped up a package of the software and it sat on the metaphorical shelf.
This year, unexpectedly, a customer asked to buy the package (which we were not actively marketing) so we gave them a copy of the package, which turned out to be corrupt. The newest versions of some of the files in the package were truncated.
All of my newest archival copies had the same truncation. The laptop I was using at the time had some memory problems and was sort of limping along: I suspect that was how the code got eaten.
Fortunately, I had a set of working files for a slightly older version of the package that had not been truncated (and were copied onto this laptop when I started using it).
So I've been working on recreating the package we thought we had for sale from the truncated pieces patched with chunks of the older code.
I worked on it this afternoon, too. (My on-site client only wants me in the mornings on Fridays.) I've done some tweaking and tuning while I was at it.
I should be working on it now, but my brain went on strike a couple of hours ago. I can be very productive with a very tight focus for long hours, but eventually I hit a wall and need a change of pace.
I'll get back to actual coding tomorrow, in between buying and setting up a Christmas tree if the weather cooperates. Most of the primary functionality is there: the bits I know I still need to work on are error handling, and a secondary operation mode that uses CGI.
Maybe I'll at least inventory the CGI scripts this evening and review the docs on how they are supposed to work.
One reaction I had to this mess: yesterday I used rsync to back up the home partition of this laptop to my server. It took all day, but future backups will be faster: I don't change that much from day to day, or even week to week. (And some of the changes I make are effectively backed up on my ISP's web server...)
Note: I make my /home partition large and I have data that needs to be backed up stored on the /home tree even if that isn't its normal home. For example: the data for the local web site I use when developing web apps is at /var/www (the normal location), but most of the directories that actually hold data are linked form /home/www.
I also have a /home/images, where my photos, etc., live and a /home/fonts directory for the good Adobe fonts and other commercial fonts I bought years ago. The fonts migrate from PC to PC as the machines die. If I ever needed to reload them from floppy, I would need to buy a floppy drive for one of my current machines, and hope that the floppies are still good.
permanent link || trackback || 0 comments || Add a comment
Mon, Nov 12, 2007
mlocate
Posted at 10:51 pm MST to Code
Notes from setting up the server:
The installation package for ClearCase on RedHat/Centos 5.0 has a glitch: it doesn't configure mlocate properly, so it gets into an infinite loop in the /view directory tree and eats up all the available disk space.
According to an IBM technote the workaround is to edit /etc/updatedb.conf, and add 'mvfs' and 'nfs' to the PRUNEFS variable and '/view' and '/vobs' to the PRUNEPATHS variable.
I also needed to clean out the 32 Gig file that had built up in /var/lib/mlocate, and reboot the image to make it realize it had available disk space again.
permanent link || trackback || 0 comments || Add a comment
Wed, Oct 17, 2007
Kernel Makefiles
Posted at 10:58 pm MDT to Code
I'm looking at the makefiles and tools that are used to build the Linux kernel. Lovely stuff.
There's a small tweak to the format of the generated config files that was mentioned on the kernel mailing list. I'm going to try to implement it.
Even if someone else ends up doing it first, exploring the change gives me a goal in exploring the files. I find that new software is opaque unless I have something in particular that I'm looking for
And if no one else makes the change before I figure things out, maybe I'll be able to make my first contribution to Linux development.
permanent link || trackback || 0 comments || Add a comment
Fri, Sep 28, 2007
Portal
Posted at 5:06 pm MDT to Code
The package from Dallas (processors and video card) arrived on my porch at 10 AM. The packages from Memphis arrived at the Colorado terminal at 10:41, so they should be delivered Monday morning.
The package from California seems to have been strapped to a turtle: it hasn't reached Commerce City yet (5 pm). Maybe they are taking the scenic route.
It is probably just as well that the case, motherboard and power supply (some assembly required) have not arrived yet. This gives me some incentive to make some serious progress on the CustomerPortal program this weekend, so I'll be free to play with my new toys when they arrive next week.
I've been dinking around most of this week trying to get the login process to behave the way I think it should. I think I'm going to drop back to the mechanism I used in the IncentivePoints program, which is less elegant but doesn't chase its tail down a hole if someone clicks in an unexpected direction. Once I get the main functionality working I can play with the login stuff in phase 2.
permanent link || trackback || 0 comments || Add a comment
Thu, Sep 13, 2007
HTML::Template and CSS Files
Posted at 10:07 pm MDT to Code
The IncentivePoints application for the company website is now both functional and a partial visual match for the rest of the website.
It turns out that relative paths to CSS files don't work well with HTML::Template, but absolute paths are fine.
So I had to change
<LINK REL=Stylesheet HREF="./site.css" TYPE=text/css>
to
<LINK REL=Stylesheet HREF="http://releaseteam.com/site.css" TYPE=text/css>
to get the web pages to see the css file.
This is not entirely surprising: HTML::Template is putting the pages together from files in several different directories, so it is questionable what the path is relative to. I was a little surprised that when Apache stopped complaining about not being able to find the CSS file, the generated html files still did not use the CSS.
Very odd.
But at least it is working now, and the displays are adequate.
I did some rather kludgey stuff to make my menus look good while still keeping them consistent with the standard formats in the CSS. I'll eventually fix that and clean up the CSS in the templates. For now, I just need to package everything up and copy it onto the office server, so the admins can start entering data.
permanent link || trackback || 0 comments || Add a comment
Wed, Sep 12, 2007
CSS and CGI::Application
Posted at 11:55 pm MDT to Code
I've got the functionality for IncentivePoints, and a good start at the data structures for CustomerPortal, which is turning out to want a much more complicated design than IncentivePoints, so it's a good thing I'm doing them in this order.
All I really need to do now on Incentive Points is get it to use the css file so it will match the look of the rest of the website. It's not being cooperative.
permanent link || trackback || 0 comments || Add a comment
Fri, Sep 07, 2007
Stuff
Posted at 11:25 pm MDT to Code
Note: author Madeleine L'Engle has died at the age of 88.
I'm making progress on the software I'm working on for the office. I'm hoping to have the IncentivePoints functionality done by the end of this weekend: I'm accessing the 4th table type now, and creating entries in it, and just need to clean up it's display formats and interactions with the other 3 tables.
The second program for the office should go a bit faster, since I'll be building on the development and problem-solving I've done for IncentivePoints. I've made a fair amount of progress on getting the perl modules that access MySQL and the HTML::Template and CGI::Application modules to talk to each other inthe ways that I need.
I need a break after that: working on software day (for my client) and night (for the office) is screwing up my sleep cycles. I'm not decompressing enough, I think.
I want to get back to some fiction writing, too. I just had to look up the last name of the viewpoint character in Techlands (the accounting department head, Demeter) because I couldn't remember it. Very annoying since he's been living in my head for months.
I may not blog much this weekend unless something really interesting comes up. I expect to be buried in code.
permanent link || trackback || 0 comments || Add a comment
Sun, Sep 02, 2007
Company Website
Posted at 9:07 pm MDT to Code
I'm working on two new features for the company website, one for customers and one for employees. Both of them need account logins and profiles, and a number of other similar features, which is why I am working on them in parallel.
Once I get a function working in one place, I can replicate it in the other, and test both while I have the code fresh in mind.
One advantage of having Linux on my laptop is that I can have a full local Apache webserver right on this box. Speeds up the testing and troubleshooting enormously.
I hope to have a lot of it working by the end of this long weekend.
permanent link || trackback || 0 comments || Add a comment
Wed, Aug 15, 2007
Potato Chip Code
Posted at 10:36 am MDT to Code
I'm developing a new section for the company's internal website using the Perl HTML::Template and CGI::Application Packages and various plugins for
CGI::Application. I haven't used any of these powerful and flexible modules before, so I'm learning as I go. The documentation on some of the modules is a little sketchy, but things are beginning to shape up well.
I've got authentication (login/logout) and authorization (different people can do different things) in place, display modules for three of the four main data tables and infrastructure for a lot of the rest. This application is going to have about 25 functions accessible from various menus, but most of them involve doing similar things to various DB tables, so development goes fairly quickly. Once I get something working for one data type, adding the same function for the other three databases goes fairly quickly.
Yesterday I started work at about 9:00 AM and stopped at 2:00am, so I am fairly groggy today. A couple of hours of that was dealing with the phone company when my DSL went down, but a lot of it was googling for information and coding. I find developing code is like eating potato chips: There is always one more tweak to try. And until there is a reason to stop, I don't. It doesn't matter that I'm disrupting my sleep cyclethis week, since I'll be in Boston next week: disrupting my cycle now may actually decrease the effects of jet lag.
This is one reason I prefer being a consultant: the contracts put sane limits on how many hours I end up working in a day or week, so I don't burn myself out when I'm working on an interesting project.
permanent link || trackback || 0 comments || Add a comment
Mon, Aug 13, 2007
Blosxom
Posted at 10:53 pm MDT to Code
The websites for the Blosxom tool (which I use for this blog) have changed. Most of the content from the www.blosxom.com site has moved to blosxom.sourceforge.net. Some resources are also available at The Unofficial Blosxom User Group. I have updated my 'Powered by' widgets.
The old URL seems to be completely dead.
There are discussions of a new version under way on the developers mailing list. At this point they are discussing bugs that need to be fixed and new features that might be added.
I'm fairly happy with the way Blosxom has been working for me, so I don't plan to rock the boat.
permanent link || trackback || 0 comments || Add a comment
Wed, Jun 20, 2007
Directions
Posted at 10:02 pm MDT to Code
I'm putting in a lot of hours this week. This is the second day in a row that urgent stuff has come up in the late afternoon and I wound up working late. We're trying to get a release out on Saturday, so taking our time isn't really an option.
On the other hand, a couple of things have happened that are good for my morale --
First,someone at google.com saw my resume on-line and asked if I would be interested in discussing a job with them. I'm probably not interested, but ... Google! And it's always flattering to have someone come to you instead of you going out looking for them. (I wrote back asking if they had a Colorado office... I've never heard of one, but it seemed worth asking. Google!)
Also, I learned from LWN (Linux Weekly news) that the Linux kernel developers are discussing a need for someone to periodically scan the kernel source code and identify error messages and such for reformatting, to support documentation and translation. It's been about 15 years since I was primarily a C programmer (Wow. Time flies) but I've got the skills (and the obsessive-compulsiveness) to handle a task like this. So I wrote to ask how to volunteer for the project, if and when it gets off the ground. It would be neat to be a Linux kernel hacker, even in a very peripheral capacity.
I'm re-joining the kernel mailing list tonight, just in case. I followed it for a while a few years ago, but the volume and level of technicality were more than I had time to deal with.
permanent link || trackback || 0 comments || Add a comment
Sun, May 13, 2007
RAID drives
Posted at 10:42 am MDT to Code
The mail server that failed last week had two drives that were RAIDed. The machine should have still worked after one drive died. I suspect it may have been running in degraded mode with one dead drive for a while before it finally died completely.
We need to set up a cron job on the new machine that will check the status of the drives periodically, so if one fails we can replace it before things fail completely.
It looks like that should be fairly easy.
With a healthy system the command
# cat /proc/mdstat
should give results like
A degraded system will look more like:
Personalities : [raid0] [raid1] [raid5]
It should be easy to set up a little script that can run nightly or weekly and email Shawn and me if the mdstat changes.
This page has a lot of useful information about setting up and testing RAID.
I will eventually get around to my project of setting up a server at home that I can backup my laptop to across the network, and I'll want to use RAIDed disks to get some more practice with them.
The new home server can't happen -- financially -- until after the septic system gets rebuilt (the permit for that is finally ready, now I need to get the actual work scheduled). And it shouldn't happen -- practically -- until the reorganization of the study is more complete.
permanent link
|| trackback ||
0
comments ||
Add a comment
One of my specialties is tools for source code version management. I'm used to having good version control tools available, partly because I'm usually involved in managing or customizing them.
My current customer uses version control for their real software but decided they didn't want to pay for licenses for the contractors on this tools project. The final versions of code that go to production are being archived, but not intermediate working versions.
I have ways of working around this sort of thing. At my last regular job before I switched back to consulting, they insisted on using a versioning tool from Microsoft which was not trustworthy (it was one of the reasons I left). I acquired a habit of keeping lots of spare copies of older code sets squirreled away, so my employers were able to meet contractual and regulatory requirements for being able to reproduce old builds of their software, despite using a versioning tool built on an unreliable database.
Yesterday one of the programs I am working on started giving me some very screwy results. I wasn't sure whether it was something that I had done to it. The people speccing these programs are partial to the kichen sink school of user interface design, and it was possible I was hitting some weird side effct of one of my feature changes.
So I dropped back to an older version that had been extensively tested so its behavior patterns were well known. The older version of the program also behaved in the new, flakey fashion when interacting with the main software application. It turned out that one of the changes made to the main program on Tuesday had subtly broken the interface used by the external programs. My project interacts with the broken interface most extensively, and is under active development at the moment, so I'm the one that hit the problem first.
My schedule really did not need a day spent fighting a broken interface, but it's a relief to know I wasn't imagining the behavior I was seeing, and I didn't break my program by doing something I didn't realize I was doing.
But I really wish I had a version control system available where I could save script versions as new features are added and tested, so when something goes screwy I could drop back a little way to a recent known working version. Scripts involving thousands of lines of code are really too big to be worked on using such an informal process. But the most of the other external scripts in this project are tiny compared to the two biggest ones I'm working on
permanent link
|| trackback ||
0
comments ||
Add a comment
I've joined Critters, a writers' on-line workshop and critiquing group that has a good reputation. I read a lot of blogs by writers, professional editors and such. I saw Critters mentioned several places before I visited the site.
The deal is that if I critique other people's stories, at least one a week, three weeks out of four on the average, when I have a complete story I can have it put into the queue and lots of other people will critique it.
The kicker is that submissions need to be plain text, and the Techlands stories don't exist in plain text. They are typed and revised directly in xhtml-transitional format, using a text editor that leaves all of the tags visible and can validate the formatting.
I don't mind HTML tags... before I found my niche in Configuration Management I worked on bug fixes, new features and technical support for an SGML editor. HTML tags and entities make sense to me: no worse than extra punctuation (though a little bulkier) at least when dealing with something that doesn't involve complex tables.
The editor was written in C and ran on both Windows and OS/2. That job was where I was introduced to OS/2, which I ran on my home machines for several years, until general software and device drivers were too hard to find, and Linux became available.
Where most people write text and then need to wrap it in HTML tags (often using various tools to do it), I've been writing HTML and needed a tool to clean out the tags. So my latest non-work-related coding has been a Perl tool to strip and translate the tags and put the resulting text into a reasonable plain-text format, with hard linefeeds inside the paragraphs, blank lines between paragraphs, etc.
I threw in a wordcount routine while I was at it. Two of them, actually: one count is actual words -- as in pieces of text with white-space on each side -- and the other is closer to the standard word count that publishers use: character count divided by 6.
I'm not generating manuscript submission format, yet. The Critters style is a bit different and aimed a bit more to on-line rather than hardcopy readers. But if or when I want to generate submission format from HTML, this provides a base to work from.
The truly geeky way to do the reformatting would probably be to generate an alternate printing CSS format for the HTML that would make it print out in the standard format. Maybe I'll eventually use that as a project to seriously learn CSS. I want to pick up the new 3rd edition of CSS: The Definitive Guide from O'Reilly, first, though.
permanent link
|| trackback ||
0
comments ||
Add a comment
My normal working language is perl. I've used it for more than a decade, and I can make it jump through hoops.
Before I switched to perl, I did most of my scripting in korn shell, including some large and complicated scripts. I can still remember when I translated one to perl for the first time and it sped up emormously because I was able to store arrays in memory.
I'm currently working with some large scripts (one is 2500 lines) written in cshell which is not considered optimal for scripting, though it is a good interactive shell. I need to pull the functionality into korn shell scripts on the front end scripts and perl on the server side.
I am putting as much functionality as possible into the backend script because I have been spoiled by the power of perl, and I think that if they want more pulled back into the front end it will be easier for me to translate from perl to korn shell than from cshell directly to korn shell.
One of the things that's driving me nuts trying to write korn shell again it the fact that it is fussy about white space in a way that perl is not. It's coming back fairly quickly, but my fingers need to remember the syntax.
permanent link
|| trackback ||
0
comments ||
Add a comment
This was fun. It turned out that the dates that were going nuts were for the first 9 days of the month: the days with single digits. I must have originally validated the feed format late in the month, when all of the articles on the front page had two digit days.
Once I figured out the pattern of the problem, it was not difficult to fix the date parsing and printing.
The W3C validator for RSS is happy now.
permanent link
|| trackback ||
0
comments ||
Add a comment
It looks like the Atom syndication feed has been broken for a while. I think I have the problem fixed now.
The RSS feed seems to be picking up insane dates, so it is broken, too. This may be a side effect of the reformatting last week, though I don't think I changed anything that should affect RSS. I'll try to fix that this evening.
I had both of these feeds validating at W3C at one point, and plan to get there again.
permanent link
|| trackback ||
0
comments ||
Add a comment
I have started to make some changes to the looks of this blog and the Techlands pages. If anything turns out hideous or unreadable in whatever brower you use, please let me know.
The new background color for the weblog posts is supposed to be a sort of cream color. I hope it doesn't come out mustard yellow on anyone's monitor. If it doesn't work, I'll switch to a lighter green.
permanent link
|| trackback ||
0
comments ||
Add a comment
Comment spam is very stupid. Aside from the fact that very few people read this blog, the spam comments keep showing up on one particular message from the first day of the blog, where people would have to dif for it to see it.
So far I've had spam for sex, meds, gambling, dentistry, real estate and home-based businesses. The filters should keep most of those from re-occurring, but I've added a step to the comment-posting process that should be easy for humans and hard for bots (or at least not included in the standard bot script) so that additional kinds of spam should not get as far as the filters.
The category of a blog post is displayed at the top of the Comments display page. If you want to post a comment, you need to copy the first word of the category into the proper field of the comment form. (Caps or small letters don't matter). This is a compromise variation of the CAPTCHA images that make you try to read squiggly letters: Instead of testing your image processing I am testing reading comprehension.
Please email me if you have any unexpected problems.
I'm also looking into some code to lock out commenting on blog-posts that are more than a certain number of days old, or explicitly lock specific posts. But that will take a while.
In the meantime, if anyone has been exposed to offensive comment spam before I got it cleaned out, I apologize.
permanent link
|| trackback ||
0
comments ||
Add a comment
The main page of the weblog was showing 40 entries, which is a bit long. I have shortened it to 25 and added clicky buttons at the bottom to access previous/next pages of entries.
I want to add "Return to main" clickies to the by-category and by-date and search results pages, but other than that, I think I have implemented most of the standard weblog features now.
If there begin to be conversations (or spam) in the Comments, I'll need to turn on some more features, but I can't judge what's needed in that area yet.
permanent link
|| trackback ||
0
comments ||
Add a comment
Personalities : [raid0] [raid1] [raid5]
md_d0 : active raid1 hda[1] hdb[2]
39082560 blocks [2/1] [UU]
unused devices:
md_d0 : active raid1 hdb[1]
39082560 blocks [2/1] [_U]
unused devices: Thu, May 10, 2007
Project managementPosted at 10:25 pm MDT to Code
Tue, Feb 13, 2007
Plain Text ScriptPosted at 10:32 pm MST to Code
Fri, Feb 09, 2007
Scripting languagesPosted at 9:14 pm MST to Code
Mon, Jan 15, 2007
RSS Feed FixedPosted at 6:33 pm MST to Code
Atom Syndication FeedPosted at 8:17 am MST to Code
Sat, Jan 06, 2007
Site Design ChangesPosted at 10:34 pm MST to Code
Thu, Dec 21, 2006
Dealing with the SpamPosted at 7:38 pm MST to Code
Mon, Nov 20, 2006
Access to More Weblog EntriesPosted at 7:12 pm MST to Code









