revjim.net

December, 2003:

a year gone by, and another year to come

I had originally sat down to write a recap of this past year. I had planned on breaking down life, month by month, summarizing every important event. But, as I started to write, I realized that many of the things that happened were so important that I couldn’t possibly summarize them. And other things, while seemingly important at the time, really didn’t matter at all. So instead I’ll just write what I feel like writing, and you’ll deal with it.

This year started off in what seemed to be the most horrible fashion that any year could ever start off with. In the end, however, it turned out that this event ultimately led to both Jess and I realizing that we wanted nothing more than we wanted to be with each other forever. And, when the end of March came, we decided to do it.

One week of planning, and so much thank due to my family for trying to make our wedding as nice as possible in one week’s time, and we were married. While I can’t say that, considering our entire lives, that particular day was incredibly important, the choices that we announced in front of our friends and family that day certainly were. Almost 9 months have past since that day, and I can say with absolute certainty that it was the smartest choice I’ve ever made. Despite the haste in our decision making, I don’t regret anything about that day or the choices we made.

An amazing girl came to visit us at the end of May. She has an incredible passion for life that is more than contagious. I found myself wishing I had a chance to learn more about her and wondering if there was anything I could do to shorten the distance between us. I’ve yet to find a truly feasible way, but, until I do, I look forward to seeing her again.

In August we moved. That was unimportant. More important was the fact that two of my closest friends and their beautiful daughter moved away to Indiana. It wasn’t until they were gone that I realized how much having them around meant to me. They are still sorely missed and I cherish every minute that we do get to spend with them. And Morgan, just so you know, I’ve got a pocket full of “Queens” with your name on them.

At the end of September, Jess starting working. It took some getting used to after having her at home all day for so long. There were a lot of things that she took care of each day that I just took for granted. I think we’ve adjusted well, however, and, for the most part, things are back to normal again. I’m very proud of the work that she does and the name that she has made for herself there. She is very hardworking and her managers and co-workers recognize her regularly.

October brought a trip to Indiana. Aside spending some much needed time with people that I don’t have to constantly explain myself and who am I to, I learned a lot about life just staring at the fall leaves and sucking in the cold air. Most importantly, I realized how badly I want to get out of Dallas. My attitude towards where I live is most certainly I choice I make. And there is no doubt that I could make a lot more out of Dallas than I do. However, I also know that culture, fellowship, and attitude mean a lot to me. And this place is filled with versions of all three that I simply can’t appreciate. Of course, in the end, I’ll put my own desires aside and do what is best for my life as a whole and the lives of my family. But, if I get things my way, I won’t be here forever.

And that brings us to now, the end of 2003.

More than anything, I am eternally grateful for Jess, the happiness that she brings soul, and the peace she brings to my heart. Regardless of what tomorrow brings, knowing that she will be beside me means I know I can handle it.

There are lots of things I wish for. There are lots of improvements that I need to make in myself and in my life. There are lots of things that need to be changed. And, as with every year before this new one, I’ll do my best to make those changes, fulfil those wishes, and improve myself. But, as with each new year, this year, I do so with a little more experience, and a greater understanding of myself.

I realize, after reading back through the records I’ve kept of this past year, that I need better records. There were so many feelings that I never mentioned. So many important things that were never announced. So many small, but meaningful, moments that have been lost in the expanse of time and memory. Sure, it’s okay if they aren’t recorded. But I can only imagine how much personal insight I could reap from them had they been. So, this next year will see a greater effort from me to document even the most insignificant of thoughts and feelings in my life. I’m not quite sure where those documents will be kept, and how public I’ll make them, but, the important part is that they’ll be there, for me.

I also realize that I need to control my temper. All too often what could be priceless, meaningful moments in time are wasted without reason. I worry too much, stress too much, and let too many tiny things eat at me. In the end, I am worn down and left with the inability to appreciate those things that are right and wonderful in the world. Despite what life deals to me, in the end, I alone choose how I will let it affect me. I need to realize that sometimes it’s better to make a wrong choice then it is to spend so much time thinking that I never have a chance to choose at all.

Finally, I realize that I need more time for me. I don’t mean more time to relax, or more time to watch TV. I mean that I need more time for the things that I love. I need to spend more time playing guitar, more time writing poetry, and more time making photographs. And I need to waste less time watching TV, less time worrying about things that don’t really matter, and less time arguing with myself. There are so many things worth enjoying, and I let too many of them pass me by without notice because I’m too busy doing something that doesn’t really matter in the end.

I wish each of you the best in the new year to come. May you learn more about yourself and what makes life truly wonderful and be more aware of each amazing moment that you share with those who truly love you.

Logitech Cordless Optical Mouse and Keyboard under Xfree86

Thanks to Justin and Bonnie, I got a Logitech Cordless Mouse and Keyboard for Christmas this year. However, I had some real trouble getting the mouse to work via USB under Linux. The keyboard worked fine on the first shot. However, the mouse would only move vertically on the screen and that was moving the mouse horizontally on the mousing surface. After much digging, I found the problem. If the "usbmouse" kernel module is loaded, it doesn’t work. If type "lsmod" as root, and see "usbmouse" listed, try removing it (type "rmmod usbmouse") and then restarting X. It worked like a charm for me with the "IMPS/2" driver.

some prior art — sort of

Here are a couple examples of what I’m looking for in regard to prior art.

Blosxom (Perl): The hierarchy is right. The plugins system is great. Unfortunately, the templating system is no where close to a real templating engine and doesn’t allow complete customization of all output without knowledge of Perl and the internal workings of Blosxom. Additionally, though I haven’t tried, it seems difficult to force the system to allow other content types aside from "blog entry". However, this system does a decent job of allowing multiple output renderings of each piece of content (as long as the very-simple template system is capable of the style of rendering you choose). Other content types have been implemented (such as "comment", "trackback" and "pingback" — all known as writebacks), but they seem… forced, at best. More than anything, it seems as though this system started in the right direction and then suffered from very kludged code.

Bryar (Perl): I haven’t actually used this, so my analysis could be wrong. However, this application seems to get many things right. First of all, it uses a templating system (and the template system used can be altered — bonus points!!). However, like its cousin, Blosxom, it doesn’t allow varying content types handling only two — blog entries and comment. It seems to only support two types of output — HTML and RSS. It seems as though this system was built to be a blogging engine, and nothing more. I hate Perl enough to not look at this too closely because, hardcore Perl hackery is not what I consider fun. With better/more documentation, I might be able to decide if this project is worth looking into but, at first glance, it doesn’t appear to be extensible enough to allow me to easily modify it to handle new types of content and new output renderings.

Drupal (PHP): This application comes the closest to what I’m looking for, I think. The plugin system seems to be capable of handling different content types as is evidenced by the wide array of modules available for it. It’s hierarchy is a bit limited, however, with the Taxonomy module, and new URL aliases, it seems that, despite the fact that objects aren’t stored in a hierarchal fashion, they can be referenced that way. This system’s biggest downfall comes from the lack of a real template system. Everything is built in blocks. Different pieces of content are actually referenced by things such as "left side bar" and "right side bar" (What if I don’t want a side bar at all?!? What if I’m rendering an email with no concept of a side bar?!?). The API for building these blocks seems as though it might be simple enough to kludge into being truly customizable. But, in the end, it would only be a kludge. The templating system must be very simple to use as, people who may have very limited knowledge of programming concepts will most likely desire to edit these templates. A kludged template system will most certainly have some sort of cruft involved in its use, and that isn’t desired. However, it is a possibility.

As I find more, I will update this list. Of course, that means that this item will update, but, since it isn’t new it won’t appear at the top of revjim.net. Which means that you’ll have to bookmark it and come back to it constantly to see if more applications have been added. In order to save you from having to do that, I’ll post a new entry to tell you that I’ve updated this entry. Of course, if Inklog were up and running, I could place each of these items as separate objects with a common parent. I could alter the template of that parent and include the text above and below these items and create a simple object type that would gather each of the items and display them when the parent was requested. Then, when a new items was added, it would be a separate object, and therefore could be displayed as a new item and viewing that item would allow it to be displayed in context so that the text of that item would make sense. (Imagine if I posted a new item, currently, with no qualification regarding what I was posting that read exactly as any of the above paragraphs read. I’m sure many readers, especially if I posted it a few months from now when this text was no longer fresh on their minds, would be very confused about what I was talking about.)

in search of prior art

While coding Inklog, everytime I run into a little problem that I don’t know the best way to solve, I get sidetracked and start looking for other projects that may have used a similar concept to see how they did it. This never really leads to me learning anything because, for the most part, I can’t find examples of the problems I’m trying to solve. However, this is starting to discourage me.

This morning I decided to try something new. I decided to look for similar code in the Python world. This led to my search for something similar to Inklog in Python world. Both searches turned up empty. Again, this is starting to discourage me.

Is the framework that I propose so radically different that no one has ever thought of doing it before? Or is it so incredibly difficult that no one has ever managed to build it? Or, is it just the worst idea ever that, in the end, will fail miserably?

The concept doesn’t seem that difficult to me. So, I’m going to ask you, my dear readers, if you have ever seen an application, in ANY programming language, that exhibits the following properties:

  1. Template based: all output is supremely customizable without knowing even the slightest thing about the programming language the application was written in. It’s okay if the template engine requires basic knowledge of programming control structures and variables. However, it should be designed in such a way that, only very simple programming structure is needed. There are a million template engines available in almost every programming language that’s ever been used in the web world. Almost all of them are well suited.
  2. Modular development: the code should be broken up into small pieces that allow massive amounts of code reuse and the ability to modify core functionality of the system without understanding every line of code int the entire code base.
  3. Displays content: the system should primarily function as a method of displaying content. In other words, the primary goal of the system should be to take data in one or many formats, and give it a common look and feel based upon the templates defined by the user.
  4. Modular content input handlers: the system should be able to easily learn how to display new types of content by authoring only a simple "model" to retrieve and/or convert that type of content into something the system expects. Example: if the system doesn’t understand what a Microsoft Word document is, I should be able to write a simple handler that converts a Word Document into a format it does understand (say, HTML). After inserting this handler into the system, it should then be capable of storing and displaying Word Documents with the same look and feel based on the templates.
  5. Modular content output handlers: the system should be able to easily learn how to output in different fashions by authoring only a simple "model" to render content in that fashion. Example: if the system doesn’t understand what a MIME encapsulated email is, I should be able to write a handler that knows how to create such an item and knows what is required to ship that item across the wire and format it accordingly. Additionally, if the content input handler isn’t capable of rendering the content in a format that is suitable for delivery via the requested output mechanism, it should have a way of alerting the user of this (for instance, if I request a PDF file to be output as a Microsoft Word document and the PDF content handler doesn’t know how to generate a Microsoft Word fragment (or something that can be converted into a Microsoft Word fragment) it should simply inform the requester of this.
  6. Storage: all content should be stored within the system, at least in some fashion. Even if it’s merely an identifier stating how to retrieve the object and where it can be found.
  7. Authentication: all content should be guarded by permissions. Certain users should be allowed to act on certain items in certain ways and all of this should be definable by the owner of each piece of content as well as the owner of the site at large.
  8. Searchable: the system should support an API in the template system that will allow specific items to be located for inclusion in the template files. Example: if the system is currently displaying item "A", the template file should be capable of requesting the most recent item of type "B" in a specific format.
  9. Hierarchical: the content should be stored in a hierarchal fashion, or at least contain some method of referencing the content in that fashion. It should allow a specific item to be the child of another item, the sibling of another item, and the parent of another item all at the same time.

So, I ask you: does this exist?

Inklog makes things easy

Matt always makes me think, and today is no exception. He mentioned that I should add transcription abilities to my phonepost. I responded stating that I really didn’t feel like kludging something new into bBlog when I was so close to having Inklog ready to use and then it wouldn’t require a kludge. That’s when I once again got an appreciation for the power of Inklog.

Think about it for a second. What is audio transcription, in this sense? Really, it’s nothing more than a chunk of text that can be edited by multiple people that is associated with a piece of audio. That chunk of text should have revisions, accountability and it should be able to be locked after the author of the audio determines the transcription is complete. Well, essentially, that’s a Wiki page with a lock feature.

Imagine now that you already have an Inklog site. You have the Wiki module installed, and the audio module installed and, of course the blogging module installed. Then you decide you want to be able to moblog audio. You connect an email address to the blogging module and specify which parts of the email should go where (in this case, the text/plain or text/html part is the blog entry itself, and all the other attachments are children of it). Since you have the audio module, the audio child of the blog entry is immediately recognized and linked in to the entry in a default fashion, which can be overridden by the website owner.

Now, imagine you want to add transcription to audio items. That’s easy, you edit your audio display templates to automatically retrieve the text of a child of that audio item called "transcription" which is a Wiki object. Additionally, you provide a link to edit that Wiki object. That’s it. Not only are all your future moblogged audio items transcribable, but every audio item you’ve ever posted is now also transcribable. Maybe you only want certain items to have that ability, that’s fine too. It’s all in the templates, and metadata.

Rebate madness

PhonePost
455.39K

ogg vorbis or mp3

I believe in open source software and patent free technology. Because of that, I didn’t even really have to make a choice when I implemented my phonepost system: I was going to use Ogg Vorbis, not MP3. However, my love for and belief in open source software and patent free technology doesn’t surpass my desire to create applications and features that are easy to use for as many people as possible. And, unfortunately, Ogg Vorbis just isn’t that easy yet.

For me, under Linux, it’s a piece of cake. Well, mostly. I tried half a dozen different media players, downloading their various plugins and whatnots until I determined which player seemed to handle them the best ("kplayer" won, if you were wondering). However, when Jess got home from work, she decided she wanted to listen to my phoneposts. Unfortunately, her media player (Winamp3) didn’t handle them. I tried to help her download a plugin from the Winamp site, but couldn’t find one. Eventually, I found a site in Google that claimed to offer a plugin. I downloaded it and tried to follow the install instructions, but, failed because her install of Winamp didn’t have the required "plugins" directory. I’m not really sure why. Eventually, I ended up having her download the new Winamp5 and everything just worked after that.

However, that leads me to a tough decision to make. If it’s difficult for me to get a plugin up and running on a fairly up-to-date computer, I can only imagine how difficult this might be for other, less technical users. Perhaps enough to keep them from trying and therefore, enough to keep them from enjoying the content here. And that’s the point of doing it in the first place. But, I do know that if people don’t USE Ogg Vorbis, then it’ll never be accepted enough to be easy enough for everyone to use. So, I’m stuck in a bad spot.

Do I use MP3s to make it easier on everyone and help support a technology and a concept that I don’t believe in? Or, do I use Ogg Vorbis and deal with the fact that many of my readers will never go through the trouble required to enjoy this new content?

I’d like to request an informal poll (since this site has no polling software). Please be honest and let me know (via comment) which of the following situations best describes you:

  1. I didn’t even bother to click on the PhonePosts because I really didn’t care what it said.
  2. I clicked on the PhonePost and it played on the first shot with no trouble.
  3. I clicked on the PhonePost, but it didn’t play. I downloaded the needed software and then I listened to it with no trouble.
  4. I clicked on the PhonePost, but it didn’t play. I downloaded the needed software, but couldn’t get it to work. I eventually gave up and I don’t plan on trying any more.
  5. I clicked on the PhonePost, but it didn’t play. I downloaded the needed software, but couldn’t get it to work. I am still trying to figure it out.
  6. I clicked on the PhonePost, but it didn’t play. I couldn’t figure out how to download the required software so I gave up and don’t plan on trying any more.
  7. I clicked on the PhonePost, but it didn’t play. I couldn’t figure out how to download the required software but am still trying to do so.
  8. I clicked on the PhonePost, but it didn’t play. I decided it wasn’t worth my time to try to figure out why.

Thank you for your response.

good kitty

I bought a new litter box for the cats yesterday, and when I filled it with litter, I was too lazy to put the lid back on.

Today, as Jess walks past the litter container she notices something odd. Apparently, one of the cats had to go, and couldn’t quite make it to the bathroom where their litter box is. So, as an alternative, they jumped into the litter container and went in there.

You can’t really punish them for that.

Super phonepost test

Hopefully, this post will include audio, an image, and this text.

Phonepost test

PhonePost
111.11K