whytheluckystiff and lindsey mentioned recently that they had a feeling that developing in PHP is like "toy coding". PHP has always seemed to me to be the premier rapid prototyping language for the web; there is enough structure there for anyone to quickly deploy a working model or mock-up, but enough flexibility to be able to crank out something without worrying too much about formalities.
That being said, being the premier rapid prototyping language is sort of like being the best silly putty around; it might do a fine job of constructing a miniature, or even a simple working model, but you'd never build the world's largest buildings with it. The right tool for the right job. (Footnote: apparently, tools aren't as important as location when it comes to construction...)More XML-RPC play
Looks like gary has rolled the diary.getDates() patch into the live Advogato, and so my home page (written in PHP, see above about the tool for the job ;-) now has proper datestamps on each entry I'm displaying. Still haven't added caching, but now that timestamps are available, I can do a more intelligent job of it.O'Reilly mania
I'm now the new owner of a ton of new (to me) O'Reilly books on Java and others in a recent blowout of older inventory by MicroCenter; I've seen the same titles selling cheaply at Barnes and Noble and Borders, but MC is selling them for $2.99 and $3.99 each. A quick check of the O'Reilly website tells me that they're coming out with new editions of most of them, which is why people are getting rid of the older editions. Works for me. :-)
I now know far more about LVS than I ever wanted to, after spending the last two days wedging every little bit of information about it, Piranha, and all the accompanying niggling details into my head. Bryce, you and your group has done a very nice job of putting this all together in Pensacola.
As a point of note, if anyone is interested, version 1.0.1 of IPVS drops into the 2.4.18-0.12 Red Hat kernel SRPM (from Skipjack) completely unmolested, and the newer ipvsadm runs fine. Not that I had any (real) problems with the 0.9.7 version as shipped from Red Hat, just some incredibly annoying network issues that looked like an LVS misconfiguration on my part.
The only really disappointing thing about the whole affair was the distinct lack of user-oriented documentation, especially for 2.4 kernels and iptables; a combination of the (sadly out-of-date) Piranha/"Red Hat High Availability Server" documentation, the LVS HOW-TOs, and a recent acquisition managed to help with my questions, thankfully.Perspective
There seems to be an assumption on the part of programmers (I know I've been guilty of this before) that the user is aware of the boundaries between the software that they work on and the software that theirs interacts with. This lack of user perspective seems to give rise to range of results, from the "not my problem, ask them" finger-pointing game, to the more subtle omission of documentation on related issues that are considered "out of scope". So, you can end up with new users asking questions in the wrong forums (and occasionally being accosted for it), and documentation that doesn't go a little bit farther to explain useful product or project combinations that the user might be trying to find answers to.
Before anyone asks, yes, I have a few projects and people in mind as I write this. But bringing them up would be a distraction from the question: what can open source developers, whose perspective is usually focused on the particular itch they're scratching, do to augment their ability to consider the "in-the-field" use cases that seem to invent themselves with any useful project, and communicate assistance on them effectively? As a related question, what can the developer do to encourage better participation in the process by the user (as the user would seem to usually have very little natural inclination to become more than superficially involved in the development process)?Linux Firewalls
As I mentioned above, I just picked this up at the local bookstore. I have to say, Ziegler has done an excellent job of compiling an accessable and wonderfully complete overview of 2.4's iptables configuration, along with summaries of the most common hoops you can make it jump through. There is a good discussion of the differences between 2.2's ipchains and the new 2.4 netfilter-based system, and he gives a quick introduction to a few peripheral items of note as well: basic firewall administration tasks, SSH, Tripwire, and intrusion detection concepts. This makes an excellent reference text to go along with the often obscure documentation available online. Which brings up another question: what happened that caused New Riders to suddenly start putting out such good technical books? They have a few good ones out now, and that red backing is starting to crowd the animals on my bookshelf. ;-)
This diary entry brought to you by way of cmiller's handy little advodiary script. Thanks, you provided the impetus I needed to upgrade to Python 2.2. ;-)Laptop woes
My laptop has been acting flaky lately; when I'd boot up, it almost seemed as though the built-in screen couldn't handle the refresh rate that the video chipset was delivering; it'd display the initial "COMPAQ" logo, then blank like it usually does (making a video adjustment; the affect is far more pronounced on an attached monitor), and that's it: no more video. Usually, I'd get the video feed back, and the "COMPAQ" logo would appear again as usual. Attached monitors were unaffected. However, a gratuitous thwack tonight appears to have jostled it's little brains into working again. I'll probably still take it apart this weekend, just to see if it's a loose connection somewhere.
What was that phrase an old friend of mine used to use? "Beware of programmers who carry screwdrivers", if I'm not mistaken. Ah well, I've been a sysadmin long enough, I've earned my Leatherman(tm). ;-)gary and CSSificationn of Advogato
Bring it on. ;-) It's very cool to see activity on mod_virgule again.PHP and XML-RPC at Advogato
I've got a little more cleaning up to do (most specifically, with caching Advogato data rather than banging on it every time someone loads the diary), and I'm just waiting for gary to commit the rest of his XML-RPC interface enhancements (which I'm hoping contain the ability to extract the date of posting, and possibly a last-changed value for the entire diary itself, for caching purposes? :-), and I'll likely make the PHP code available somewhere.
I've been unimaginably busy lately. Both of the consulting projects I mentioned a few months back panned out...at the same time. The first, a redux of a spam filtering system and webby frontend that I developed for a previous employer, is thankfully something I can do remotely; thankfully, because the load-balancer cluster I'm building for the other client is requiring quite a bit of on-site work.
Met with a couple of people that I'm working with on the second job and a good friend from my last employer to go see Blade II tonight; afterwards, my friend and I did a little catching up, and it sounds like he might be able to refer another job my way, dealing with helping with their spam problem.
I can't believe how this is working out. I've been looking at the bills piling up, and realizing that I'm actually going to be in a position to start paying them properly very soon. Add to that the incredible luck I seem to be having with getting jobs into the pipeline (luck that I don't suspect will hold up much longer, though), and I'm in a fantastic mood right now about the whole idea. I'll get realistic about things again tomorrow, but I get to ride on this a little more tonight. :-)Advogato's XML-RPC interface
Nice work, gary! I've incorporated a simple version of my Advogato diary on my home page, done up using the Useful PHP XML-RPC implementation, owing to the fact that I can't seem to wrap my head around the non-existant documentation of the xmlrpc-epi stuff that appears to have been integrated into PHP proper. If anyone has any decent pointers to trivial example client implementations using the EPI stuff, I'd love to see it.GARNOME
More commendations for excellent work: jdub's GARNOME is an excellent idea that's been needed for some time now. The BSD ports system has always been a favorite of mine, because of how attractive they made building non-trivial combinations of packages into a cohesive system from source. It's nice to be able to honestly say I know how much faster the new Nautilus is compared to the 1.4 version; Xnest is a godsend for trying out things like this.procmail and testing
An interesting development from the work I'm doing for my old employer's spam filter is that I've built a testing harness for validating filter rules. It's fairly crude, but writing testcases for each rule is now easy enough to make me really buy into the XP idea of writing tests first. The whole time I've been working through debugging some of these rules, I've been thinking back to how hard it was when I originally developed this thing to validate whether the rules worked or not (in reality, almost half of my original rules failed on corner cases I added tests for as I was developing the harness).
I'm not usually one to buy into methodologies, but XP really provides a solid set of ideas for programmers to build their practice on, if you have a little self-discipline.
Enough for one night, time for bed. More later.
We are now the proud parents of a new puppy, a lab/shephard mix. Cute little guy, goes by the name of "Forty-Two".
Picked up a copy of Diablo II Battle Chest (includes Diablo, Diablo II, and Diablo II: Lords of Destruction), and have been playing it non-stop; I forgot how addicted I used to get to RPGs.
Bumped into another Linux user at Barnes & Noble the other day; turns out he's part of a local-area LUG, which I'll probably be attending this month. I've never been to a LUG meeting before, should be interesting.
That's all I can think of off the top of my head. More later.
Thanks to a well-placed friend, I've completed a paid analysis phase of a Linux clustering and load-balancing solution for a largish auto auction company, which is aimed pretty squarely at becoming a solid two-week implementation run with an annual support contract. This is going to be fun; the architecture is a simple high-availability config (two boxes in active/backup failover configuration) performing load-balancing for a series of custom web applications, which isn't exactly rocket science, but it's far more interesting than some of the work I've been doing over the last year.Newsletter
Based on some positive feedback from here, I think I'll give it a try for a few months to see how regular writing and I get along. Email me if you want your address added to the list. No ETA on the first issue yet.Linux Laptop
64MB is not enough for a laptop I use for business engagements, so 256MB PC100 SODIMM from Crucial is now on it's way. Whee, 320MB total memory.
I'm successfully using Red Hat 7.2 with the Ximian packaging of GNOME on this little beast (it's a Compaq Armada M700 366MHz; astute Linux users will recognize the distinctive sucking sound made by the built-in Lucent Winmodem and ATI Rage Mobility video that lacks stable/current DRI support). Aside from the inability to run Quake 3 at anything resembling a usable framerate (until I manage to whack DRI support into place; I'll have to live with Heroes of Might and Magic III for now), it makes a very usable business laptop. Abiword, Gnumeric, Dia, and Evolution are proving to be the perfect combination; now I need to start playing with MrProject to see how it stacks up to that other project management tool. I hope I can share data between it and Evolution...
New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!