revjim.net

April, 2003:

Xaraya released 0.900 beta

For over a year, many have sat in anticipation of the free PHP based CMS that the people at Xaraya have been promising. The wait is over: download, release notes. [via freshmeat]

Xaraya announced version 0.900 of their software on Sunday. While they claim that this version is beta, they are also stating that it is most likely safe enough to use in production. Additionally, they are providing a PostNuke upgrade script (where Xaraya gets its roots) which is “not for the weak at heart”.

Inklog: it’s getting there

Inklog is still chugging along. It currently does everything it needs to do except the fundamental requirement for a blog: listing the items in reverse chronological order. Of course, at this point it’s just a framework, so, even after that functionality is built, it needs a little more before it will stand on its own.

It currently has lots of neat features. It allows the user to leverage his/her existing knowledge of the file-system in order to setup, catalog and configure an entire site. The framework can handle documents of any type (provided a small plug-in is written to handle it). It can then convert that input type to whatever output type is requested by the visitor (provided a template exists for that output type). It knows when the user is requesting a list of items (like the front page’s list of recent items) or a single item. In all cases it follows the leaf all the way down to the roots of the directory tree to determine configuration values and template structure.

The file type of the documents in the file system are determined by their extensions. Additionally, the extension of the file requested by the visitor determines the output type. This means that if a file named “test.txt” exists, and a user requests “test.rss”, test.txt (with an input type of txt) is converted to an output type of rss, and sent to the browser. Along the same lines, if a file named “junk.rss” exists, and a user requests “junk.html”, junk.rss (with an input type of rss) is converted to an output type of html and sent to the browser.

Categories are the same as directories. So, by placing a file in a directory named “Computers” you have added a document (blog entry, whatever) to the “Computers” category. Multiple categories are implemented by using symbolic links, or, in the case that the OS doesn’t support them, a special symlink input type.

Every aspect of the framework allows plug-ins. This means that, if you are a PHP programmer, extending the system is VERY easy. Additionally, there is no complicated API to learn. Instead there are few simple rules to follow. Breaking the rules won’t break the system, it just may not function as you intended.

Every aspect of the output is also configurable simply by editing various template files. One can easily change the layout for an entire branch of the document tree by editing one small file. Knowledge of the output format desired (HTML, RSS, etc) is required, however, defaults will be provided. This means that, if you don’t know what a proper RSS document looks like, then you can just use the templates provided. However, if, for some reason, you want to edit them, you can do so.

Output types also allow varieties. This means that the document “junk.rss” can be accessed as “junk.html” or, with one of the html output types varieties, such as “junk.comments.html”.

Plug-ins have full access to the template system as well as to the configuration system. This means that, plug-ins do NOT have to be configured by editing source code. A simple configuration file (in windows INI format) can be edited to provide any configuration that is needed. And, again, since everything is determined by following the leaf all the way to the roots, one configuration file in the root of the document structure will configure ALL of the branches.

There are three types of plug-ins allowed. The first type is a template plug-in. These are to be used in the output template files to provide shortcuts and advanced functionality. Powered by Smarty, any valid Smarty plug-in can be used. The second type is a module. Modules provided extended functionality such as a photo gallery, comments, trackbacks, and the like. The are implemented by authoring a PHP class, however, no API needs to be utilized. Finally, there are conversion plug-ins. These are called upon when one document format needs to be converted to another. In order to make things simple, all documents, before being displayed, will be converted into a struct containing the metadata for that item. Then, a output template is called to determine how the metadata should be displayed. It is based on the output type selected by the user.

Explaining the system makes it seem fairly complicated. However, in practice, it isn’t. Once your templates are in place, and your configuration parameters are set properly, using the system is as easy as creating a file in a directory.

A web-based administration interface is in the planning phases for those who don’t like using the file system. It, of course, will be fully templatable and will use the existing plug-in system for all of its interactions. It will allow remote installation of plug-ins from a repository, the editing of templates and configuration files, as well as the uploading of documents to be served.

All of the URIs in the system are configurable by the user. Installing a plug-in is as simple as adding a file to a directory. Using the plug-in is as simple as editing your template files.

All this being said, it isn’t quite usable yet. Because of the nature of the system, documentation will be required. Additionally, a good set of defaults needs to be in place to make it easy for users to get up and running.

peaceful

The sky is so peaceful, the sun is just right, and the wind is
blowing every so slightly. Today is not the kind of day where I want to
be caged inside a building, sitting in front of a computer, listening to
my stomach attempt to digest the acidity of black coffee. It makes me
think about everything that I have and then consider taking a job
cleaning pools.

forgotten

Throughout each day I can feel my wedding band on my left ring
finger. It has become a habit to play with it with my thumb and to hear
it clunk against the surfaces I place my hands on. It’s a constant
reminder of the commitment I’ve made and the life that Jess and I share
together.

Every morning I take off my wedding band before putting gel in my
hair. The first time, I left the ring on, but it made a sticky mess that
involved me having to take off the ring anyway in order to clean it
up. This morning I forgot to put it back on. It only took my about 10
minutes to notice. But by then, I was half way to work.

Every now and then, I’ll go to feel for it, and realize, once again,
that it is missing. It is an odd feeling.

shoot me

Two Sundays ago, Jess and I got up early and headed into Dallas for a photo-shoot that had been arranged a few weeks prior. Little did I know, this would be one of the longest and most ridiculous days in time. I’m thankful Jess was there, or I would have gone crazy.

The whole thing was arranged a few weeks prior. I was contacted by a model who wanted to do some TFP. For those of you not familiar with photo lingo, TFP stands for “Time for Prints”. It’s an arrangement between and model and a photographer in which, usually, the photographer provides equipment, film, developing and prints, and the model provides themselves, clothing and makeup. It’s generally used by models who are building portfolios (and therefore are willing to work without pay) and photographers who are either doing the same or have new equipment and/or techniques to test. In my case, I just love the art of it so much that I’m willing to do it, regardless of the fact that I have no intent (at least currently) of building an actual portfolio and soliciting paid work.

As usual, I asked the model for a few shots from her current portfolio so I could see what she looked like and if it would even be worth my while. While the images themselves weren’t all that great, the model had a good look and I decided that it would be worth my time and agreed.

Shortly thereafter I discovered that the model in the photographs wasn’t the person who was seeking my assistance. This person was a “fashion designer”, and would be contacting a model to wear her clothing and for me to shoot. This designer was looking to build a portfolio from scratch because, in a few months, she would be moving to LA to “make it big”.

Let me clarify another point before I get too far. A fashion designer is, generally, someone who designs clothing. They, too, need prints of their work in order to show off what they have created. While most fashion designers who are building a portfolio do their own photography work (because the quality of the images isn’t nearly as important as the look of the clothing, in this case) I thought it would be fun to try this from a different angle.

I let her know that I had never worked with a fashion designer before, and that this would be something new for me. She said that was okay and also informed me that she would be getting a hair stylist and a make-up artist for the shoot.

A little while later she informed me that there would be 5 models, 2 hair stylists, a make-up artist and herself. I let her know right away that I couldn’t possibly provide prints to all of these people as I would be looking at costs in excess of $300. She told me that, since I would be shooting digital, they would accept a CD of work in place of actual prints. I informed her that I was a little bit reluctant to work with so many people at once, but she said that it wouldn’t be difficult, that she had done this many times before, and that she would make sure everything went smoothly. So… it was on.

About 2 weeks before the shoot, the designer, Jess, and I went out on a location scout. Again, so that you understand, a location scout is when a photographer and various others drive/walk around looking for areas that would make good background for a shoot. We spent a few hours driving and walking around.

The designer informed me that she used to be a photography major. This made me feel even better because I knew that she would understand more about lighting and what was possible and what wasn’t when working without a studio.

She brought along some magazine clippings to show me what kind of images she was interested in creating, which I appreciated. However, most of the images were impossible in our situation because they were either obviously studio shots, involved too much prop work for us to attain, or, for whatever reason couldn’t be done. I told her this, and she was okay with that.

A few days later we had a dinner meeting with most of the models. This is where things started to go wrong. I expected that the designer would ask the models to bring a few pieces of essential clothing — underwear, tank tops, etc — as well as some of their own make-up. However, I didn’t except that she would ask them to bring large portions of their wardrobes. I thought she was a designer? I thought she was designing the clothing? However, since she was far more experienced than me in this regard, I didn’t say anything.

So that leaves us at two Sundays ago.

The morning of the shoot, we arrived just after 9am as we were told to do. The designer said that it would take her about 1 hour to get everyone ready and, since they were getting there at 8am, I didn’t need to show up until 9. Apparently, she had gotten there late.

She had brought with her a entire rack of clothing. One of the male models was also the make-up artist. Neither of her hair stylists showed up. The other male model was sitting on the couch because he had nothing better to do. The other three girls were putting on clothing from the rack. After they dressed, they would show us and we would informally say whether we liked the outfit or not. Meanwhile, the make-up artist (who was VERY good, by the way) was applying make-up to one of the girls. Jess agreed to help by doing hair.

She wasn’t ready until after 11am. Since I had lots of time on my hands, I went for a walk and realized there was no real need to go to our intended location as, the place we were at offered lots of different backgrounds and good location. However, the designer insisted that we go to our intended location, so we headed out.

The longest day ever was well underway. I’ll spare you all the details and just give the highlights.

The designer, who, on the day of the shoot, did little of anything but get in the way and make outrageous demands of people, spent the entire day breathing down my neck. Every time the shutter would open she was right there behind me wanting to see the image on the camera’s LCD. Despite my warnings, she insisted on shooting in locations with bad light (too harsh, too high, too direct). She corrected my every move and suggested a “better angle” for every shot I took. At one point, I got so frustrated that I just handed her the camera. She asked if the exposure was right and I said I didn’t know. Then she said that she didn’t know how to work a digital camera and gave it back to me. I told her I had a film camera in my bag that I would be happy to let her use, but she said that she couldn’t do exposure. Then, later in the day, frustrated again, I handed her my camera and told her the exposure was fine and to go ahead and shoot. She snapped a few and I asked her if she liked them any better to which she responded, “I don’t know” and then continued to take the same shot over and over again.

There was one model who spent 8 hours doing nothing, because the designer was too busy watching someone else get dressed to allow her to get into make-up.

At another point in the shoot, one of the male models pointed out that the model I was shooting had a small piece of her shirt sticking out under her belt. The designer snapped back, “I know. I’m the designer. I see everything.” Suuuuuuuuure.

She insisted on vertical shots for everything. Yet, when I forced the images to be vertical, she complained about the empty space at the top and the bottom of the images. At one point, she had a model on a park bench on her hands and knees. She wanted the entire park bench and the model in the shot, so, of course, I turned the camera horizontal. She asked if I could do it vertically. What? How?

She insisted on shooting at a playground at White Rock lake at 5pm on a Sunday. The place was packed with children. She had thought that, somehow, she could clear the playground and yet get a few kids (and their parents) to agree to being in the shots with one of the models. Needless to say, this didn’t work out.

The day went on and on. Towards the end, I didn’t even care about what the image looked like, because I knew she’d say it wasn’t right no matter what I did. So, I just pushed the shutter release every now and then and hoped for a tornado or an earthquake or a very well aimed boulder to fall from the sky.

The models were all great. One was a little too uninvolved for my taste, but, at least she knew her role and stuck to it. She didn’t breathe down my neck, she didn’t make outlandish requests, she didn’t tell me how to do my job. One of the male models was kind and funny, and helped make the situation much better than it was. The other two female models were very friendly and very easy to work with when I managed to have them to myself without the designer standing right behind me.

When the shoot was over, I told the designer I would get the images to her as soon as I could. Within the course of a week she contacted me several times to ask me where they were. Did she not understand that I had almost 200 images to adjust, correct, and prepare? I eventually got so fed up with her asking that I wrote a small script to batch correct all of them in the same manner, and then manually corrected those that were just obviously bad.

Two nights ago I uploaded the images to a web-server and emailed her the URL. Thanks to my server logs I saw that, within minutes, she was browsing the images. I signed on to MSN messenger to talk to her, and, a few minutes after I did, she signed off without saying a word, yet continued to browse the images. I never heard from her. Not even an simple email saying “I hate all of these”.

I’m afraid because, according to her, she’s got two other photographers lined up. I wish there was some way I could find them and contact them and tell them to run for their lives. The only reason I didn’t walk away after the first 30 minutes was because I knew there were 5 other people there ready and willing to work, and I didn’t want everyone to go home with nothing.

I can’t say the day was a total loss. I did get some really good images. But, if she asked me to do it again, I’d decline without a second thought.

There’s a moral to this story. First of all, watch the size of your head: the bigger it gets, the more people you’ll piss off, especially when it has no reason to be that large at all. Secondly, if you claim to be a fashion designer, design something, even if it’s utter shit. You’ll get a lot more respect from people that way. And finally, if you ask someone to do a job, let them do it. If you don’t think they are doing a good job, tell them so. If they don’t get any better, tell them you’ll find someone else. But don’t stand over them constantly and tell them how to do something that you can’t do yourself.

who wears the pants?

Just in case any of you were uncertain in regard to who wears the pants in the cr4sh family, I’d like to submit the following: Exhibit A, taken on a recon mission in Las Colinas yesterday. I’ll let the image speak for itself. The adult is Mrs. Morgan cr4sh, and the child is her daughter Zoe.

the healing warmth of sun

We went to the park yesterday: Jess, myself, a handful of good friends, two frisbees, a kite and a cooler with soda and water. The Texas heat is so over powering that I rarely consider venturing out into it, let alone conducting any form of physical activity while under the direct light of its rays. But yesterday was beautiful.

We laughed and joked. We flew the kite, and crashed the kite and flew the kite again. We tossed the frisbees back and forth and, ocassionally, into the small pond as well. I’ve got a touch of sunburn, but it doesn’t hurt. Just a warm reminder of the good times that were had, and the good times that should be had more often.

I make my life too complicated. At any given moment, I can run down a list, from memory, of things that I need to get done before the sun goes down. And, even if I manage to finish the list, I’ll convince myself that I’m too tired to do anything that doesn’t need to be done.

We all die, eventually. And, regardless of how hard we work at getting everything done, when we go there will still be items on that list of things to do. So, we can either stop once in a while and enjoy the fruits of our labor, or never allow ourselves to enjoy the peace, comfort, and happiness we try to bring ourselves.

I’m making the choice to enjoy life.

when everything was against us

Journalling is difficult, at times. When life is hectic and all the important things are going on, I find I don’t have the time to recount them here. And when things are slow and boring, I find I have nothing interesting to report. This is an account of what occured three weeks ago today — the day Jess and I got our marriage license.


I came home for lunch and took the rest of the day off to get our marriage license. After lunch, I looked up the location of the nearest Justice of the Peace and we headed out to the Old Red Courthouse in downtown Dallas. Since we had to pay the $36 fee in cash, I meant to stop at an ATM on the way there, but forgot until we were finally downtown. I drove up and down Main, Commerce and Elm streets looking for an ATM and a parking space, or which ever came first.

As I was heading East on Commerce, a cop got behind me and turned on his lights. I pulled over and he told me that I had run a red light. “Where?” I asked.

“Murphy Crosswalk,” he responded in between responses to the person on the other end of his cell phone.

$195 fine for running a red light that I’m pretty sure I didn’t run. And, even if I did, it’s not even a street. It used to be a street about 40 years ago. Now it’s just a crosswalk that goes from the federal building on Commerce to One Main Place. Ugh. I took my ticket, smiled and said, “Thank You” between tightly closed teeth and headed on my way.

I turned around, headed West on Main, still couldn’t find a parking space, and gave up. I remembered that the North Dallas Government Building was on the list, and since I knew where that was, I just decided to head out there. We stopped at a gas station to get cash on the way.

We got there, went inside, and followed the signs that said “Marriage Licenses” only to find that that particular office was closed on Mondays. Ugh. Back home we went to consult the list.

I found another place in Richardson, but this time I wasn’t taking any chances. I called and a man answered. “Do you issue marriage licenses?” I asked.

“Yes,” he said.

“Right now?” I asked.

“We take out last customer at 4:10 and close at 4:30,” he said.

“Thanks,” I responded, and we headed on our way.

There were a few people in line in front of us so we waited about 10 minutes before getting to the counter. When I got there I told the lady what we needed and she pointed to a sign that, while contradicting the notice on the outside of the building, stated that marriage licenses were only issued until 11:00am. I told her that I was told they would issue one now. She asked what seemed to be the only other person there, a man, if he had spoke to me on the phone. Of course, he said, “no”.

So, off we went to Carrollton, but only after calling them to ensure that they would indeed issue us a marriage license. They said they would.

We got there and, within 15 minutes, we had a marriage license in our hands. It seems like a miracle. It only took us 3 hours.


So now, today is the 21st day since I got my ticket. And, if I don’t pay it today, a bench warrant will be issued and the fine will increase by $60. So, I’m off to pay my fine.

God, if you’re listening, please let me be supreme ruler of the world for one day. I promise I won’t do anything TOO bad.

Smarty 2.5.0

Smarty 2.5.0 has been released: changelog, release notes, download.

The war with Mozilla (or: bug hunting 101)

So now I’m fed up. Really fed up. So I pull out wget tell it to grab her page and save it to disk and then I tell Phoenix to load the page from that file. It loads!

But, since she has relative URLs in her design, the style sheet isn’t there and neither are the images. So I edit the file to point to the aboslute locations of those files. Now Phoenix crashes. Okay, okay. We’re getting somewhere.

Being the smart cookie that I am, I leave the absolute reference to the image at the top of the page , and change the style sheet link back to be a relative reference that points to a non-existant file. It works. But, without any CSS, of course. I think you see where this is going next.

I change the external image reference back to a relative reference that points to a non-existant file, and I then point the style sheet link back to her style sheet on her server. It crashes!

I copy her stylesheet from her server to a local file on my system. Then I change the external reference to the style sheet to be a relative reference which, since I’ve copied her style sheet on to my system, now exists and is the same as the one her server servers. It crashes!

Okay. Now I know. It’s the style sheet that’s doing it. Not the network. Not the server. Not the graphics. Not the XHTML. Just the style sheet.

I look for errors in the style-sheet: there aren’t any.

I make the style sheet nothing but an empty file: It works.

I add back in the body section: It hangs.

I leave only the body section, but remove the “letter-spacing” setting: It works.

I replace her entire style sheet and remove only the “letter-spacing” setting from body: It works!!!

I put “letter-spacing” back, just to make sure I’m not crazy: IT CRASHES!!!

Now I want to be REALLY sure, so I load another page that uses CSS and “letter-spacing”. I choose Eric Meyer‘s CSS2 test page for letter-spacing: it CRASHES!

This is good… and bad. It’s good because I figured out what is causing the problem. It’s bad because, the exact reason is unknown.

It’s not JUST Mozilla, or everyone would be having a problem. And it isn’t JUST Linux, or else Opera would be having trouble. Obviously Mozilla is part of the problem. However, it may be Mozilla coupled with my TrueType libraries. It might be Mozilla and my use of XFT. It might be Debian’s version of Mozilla.

Based on the fact that it is happening with two DIFFERENT default fonts, and from two different pages with different fonts being requested by them, I can rule out font choice for now. Also, we can rule out Mozilla alone as the problem. So, it’s either my XFT support that’s doing it, or it’s Debian’s Mozilla.

I’ll test that idea later. It’s time to go home.