To discover the limits of the possible…

I am going to repost this letter by Shae Allen via the BizNik forum. It would be even funnier if it wasn’t my life we are talking about. I present, for your reading enjoyment, “If Architects Had To Work Like Web Designers.”

Dear Mr. Architect:

Please design and build me a house. I am not quite sure of what I need, so you should use your discretion. My house should have somewhere between two and forty-five bedrooms. Just make sure the plans are such that the bedrooms can be easily added or deleted. When you bring the blueprints to me, I will make the final decision of what I want. Also, bring me the cost breakdown for each configuration so that I can arbitrarily pick one.

Keep in mind that the house I ultimately choose must cost less than the one I am currently living in. Make sure, however, that you correct all the deficiencies that exist in my current house (the floor of my kitchen vibrates when I walk across it, and the walls don’t have nearly enough insulation in them).

As you design, also keep in mind that I want to keep yearly maintenance costs as low as possible. This should mean the incorporation of extra-cost features like aluminum, vinyl, or composite siding. (If you choose not to specify aluminum, be prepared to explain your decision in detail.)

Please take care that modern design practices and the latest materials are used in construction of the house, as I want it to be a showplace for the most up-to-date ideas and methods. Be alerted, however, that kitchen should be designed to accommodate, among other things, my 1952 Gibson refrigerator.

To insure that you are building the correct house for our entire family, make certain that you contact each of our children, and also our in-laws. My mother-in-law will have very strong feelings about how the house should be designed, since she visits us at least once a year. Make sure that you weigh all of these options carefully and come to the right decision. I, however, retain the right to overrule any choices that you make.

Please don’t bother me with small details right now. Your job is to develop the overall plans for the house: get the big picture. At this time, for example, it is not appropriate to be choosing the color of the carpet.

However, keep in mind that my wife likes blue.

Also, do not worry at this time about acquiring the resources to build the house itself. Your first priority is to develop detailed plans and specifications. Once I approve these plans, however, I would expect the house to be under roof within 48 hours.

While you are designing this house specifically for me, keep in mind that sooner or later I will have to sell it to someone else. It therefore should have appeal to a wide variety of potential buyers. Please make sure before you finalize the plans that there is a consensus of the population in my area that they like the features this house has. I advise you to run up and look at my neighbor’s house he constructed last year. We like it a great deal. It has many features that we would also like in our new home, particularly the 75-foot swimming pool. With careful engineering, I believe that you can design this into our new house without impacting the final cost.

Please prepare a complete set of blueprints. It is not necessary at this time to do the real design, since they will be used only for construction bids. Be advised, however, that you will be held accountable for any increase of construction costs as a result of later design changes.

You must be thrilled to be working on as an interesting project as this! To be able to use the latest techniques and materials and to be given such freedom in your designs is something that can’t happen very often. Contact me as soon as possible with your complete ideas and plans.

PS: My wife has just told me that she disagrees with many of the instructions I’ve given you in this letter. As architect, it is your responsibility to resolve these differences. I have tried in the past and have been unable to accomplish this. If you can’t handle this responsibility, I will have to find another architect.

PPS: Perhaps what I need is not a house at all, but a travel trailer. Please advise me as soon as possible if this is the case..

Development Life-cycle Integration

Now that I can focus on more application development issues at work, it is time to start bringing up some of the open source life-cycle tools I need.  Integrating the individual tools (MediaWiki, Bugzilla, Subversion, Mailman, WordPress, etc..) requires some work.  This has proven to be a little different than my previous experience because we are an Active Directory shop.  MS Active Directory actually uses a form of LDAP for authentication but it is different enough that each of the tools I use requires a little… playing… to get it working.  Here are the important links:

The reality is that if you company is not doing re-time build tests, nightly builds, automated testing, bug tracking with integration into you source control management system, and automated reporting; then your company is waisting developers time and resources.  Open Source has only been as successful as it has because of the plethora of automated tools available to them.  Your competition is using them… you better be.  There are hundreds of freely available software engineering tools in the Open Source world.  Check out Tigris.org for a fairly complete list.

Mail Server on OpenSuse

Quick link to a mail server install that I have been working on for a client. These are simply some notes on getting SMMP, cyrus-sasl, Postfix, and POP3 working with SSL. The information also includes creating public key certificates and signing them. The intended platform is OpenSuse 10.2

The notes are based on a HowToForge.net article titled The Perfect Setup: OpenSuSE 10.2.

Public and Private… Parts.

I constantly forget how to setup a shared key environment for OpenSSH. It is pretty easy to find a tutorial on The Linux Documentation Project or How-To Forge but why do that when I can just have one here for me to find. This is a quick-and-dirty example of generating public and private keys, using shared-key authentication, and configuring an SSH agent. Eventually I will write a kde-agent so you don’t have to use the gnome one… but that is for another post.

Two for Tuesday

Got a couple links I will need to use for a client tomarrow:

  • X cygwin — Cygwin is a tool that provides some Unix functionality on windows. XCygwin adds an X server to the cygwin package, allowing for remote connections to Unix machines GUI enviroments.
  • FTP Install of Suse — Installing Suse via FTP is very useful but takes a little configuration know-how. I threw together a quick how-to on setting up an FTP install server for Suse, complete with firewall configuration. It also includes some information on using the install server as a general purpose FTP server as well.

Smart SUSE

Any of you who have started using OpenSuse regularly, are probably familiar with the SMART package manager. SMART is very similar to apt and yum (thankfully it closer to apt in both speed and intelligence.) The SMART link above points to a susewiki article telling you how to install and configure SMART. Suse uses yast (great for system configuration but god awful for package management) and as such it takes some work to get SMART running. The article is fairly straightforward; so I decided to make it easier to do by creating a shell script to do the work for you.

smart_install.sh simply needs to be downloaded, made executable (chmod 755 install_script.sh), and run from the command line as root (su -c ./smart_install.sh). Answer yes to any questions and your done. Here is what you will get: a working SMART setup, the default package repositories, a KDE service menu for any RPM packages, a system tray applet to monitor for package updates, and a working SMART GUI for installing new applications.

Currently the script works for Suse 10.2 on 64bit and 32bit systems. I will add more Suse versions if there seems to be interest.

Getting In Deep with RPM

RPM is easily the most comprehensive packaging system for Linux.  The breadth of functionality and features in RPM continues to amaze me at times. Lately I have been working on getting some packages ported from our existing Redhat ES 3 infrastructure to Suse.  As a quick side note; we are not happy with Suse lately but at least they do not intentionally break KDE and ignore their volunteer community.  While RPM could, in theory, be used as a general package infrastructure for all RPM based system; the reality is something else entirely.  Packages from Redhat have required significant changes for me to get them working on Suse (the opposite is entirely true as well.)

A couple tools that have made porting easier have been perl.req and perl.prov.  Located in the /usr/lib/rpm on Suse 9, these two scripts take a list of files and return (through stdout) all required/provided perl packages for those files. Packages are only listed once and are presented in alphabetical order.

The GROUPS file for handling software categories in RPM is located in the /usr/share/doc/packages/rpm/ directory; while the RPM macros file (which is surprisingly similar to Redhat’s) is located in the normal installation directory of /usr/lib/rpm/macros. Here is a link to the January, 2005 edition of Suse Package Conventions.  I have downloaded a version in pdf form that can probably be found in my documents web page (see the VAULT side panel.)

A couple of Perl specific macros that only exist in Suse (and make building RPM packages much easier) are %perl_process_packlist, which does a bunch of cleanup work to the perl modules being built, and %perl_make_install, which handles different prefix installs depending on which version of Suse is being used. %perl_make_install is especially nice if you are trying to build a RPM for older and newer versions of suse in the same build environment.

RPM also provides similar macros (and requires/provides scripts) for Python. See the macros files for more details. Finally, the bible for all things rpm is Maximum RPM from rpm.org. The default macros like setup, prep, and patch are all defined there and are identical between distributions.

The Last Piece

The only thing keeping me from redirecting all the rockerssoft.com blog traffic to rockerssoft.org is a feature I have come to like; but never had for wordpress. That feature is my reading list plugin. Well, that is about to change. Now Reading is exactly what I have been looking for. As soon as I get a free chance to implement it; we will finally be moved in. Much like when we unpacked that last box at our new house…

…a year after we moved in.

Filesystem Synchronization

I have been looking at tools to synchronize my work machine, laptop, and home computer.  There are literally dozens of options for this on Linux but it looks like the best two are rsync and Unison.  Both are command line applications with GUI frontends available to them.  Specifically I have been looking at QSync which implements the rsync protocol internally and uses Qt.