revjim.net

November, 2003:

Home made porn in a box

You know she’s getting the sweet love…

… Just look at the smile on her face.

I found Jesus!!!

so I did it…

So, I bought a Canon A80. $380 plus tax came to $411. I still need a flash card, but, that’s not too bad.

Sigh.

I hate buying anything that I can’t easily replace and/or swap our for something else. Especially when there is no clear-cut winner.

I really wanted hot shoe/external flash capability. But, the closest thing I could find that offered roughly the same features with a Hot Shoe was the Canon G5 at $270 more than the cost of the A80. I just couldn’t see paying that much.

When I got to the store,  the sales person recommended the Olympus C-5000. I was impressed, actually, and almost changed my mind. It’s a pretty nice camera. Lots of features. 5MP. Hot Shoe. Manual everything. The interface sucked and I was certain it would get on my nerves within a few weeks. The lens wasn’t that great either. It was a 3X zoom, but the max aperature tapered off very quickly. All around, however, functionally, I liked it more than the A80. And, since it had a Hot Shoe and an extra megapixel, it was well worth the $70 difference.

But I got the A80 instead. I was too worried that the image quality would be horrible.

As soon as I got back to work, I looked up reviews of the C-5000. People like it. But, they did mention that noise was on the "above average" side. However, as best as I can tell, it wasn’t any worse than the Minolta dImage 7 I used to own.

I don’t know.

Someone talk some sense into me, please. I’m going crazy here.

fan mail

Dear Clarence Brown:

In response to the following well punctuated and grammatically correct email you sent me:

you should not have used ATT to start with they contribute to abortion on demand. As a reverend you should know better.

I’d like to ask that you consider a few things.

First and foremost, just because I use the word Reverend in my name doesn’t mean that I’m using it in a context consistent with the only use of the word you know. In fact, it says very little about my beliefs, my intelligence, or my morals. Unless you believe it is safe for me to assume that you constantly wear brown clothing simply because your name contains that word.

Secondly, even if I were the type of Reverend that you assume I am, why does that mean that I would have a problem with abortion on demand? Perhaps I am a Reverend that happens to support such activities?

Even if I were to allow you the assumption that I am both the type of Reverend that you believe I am, and that I am a Reverend that holds the beliefs that you believe I hold, why should I know better? Is there some general knowledge about Reverends that states that, not only are they constantly aware of all current political and moral issues, but that they are also aware of all of the viewpoints of every major company in America for each of these issues? Have I been left in the dark here?

I have no idea which charities and organizations any of the major companies in America contribute to. I don’t even know which charities the company I work for contributes to. And to be honest, Reverend or not, I don’t really care. To make matters worse, even if I did care, I don’t have any clue what "Abortion on Demand" is. But, if I had to take a stab in the dark and guess, then I imagine I would fully support that cause.

Furthermore, you shouldn’t work for DART. They kill over 14 children every year due to recklessness. You should know better.

How is it that even when I talk about something as simple and clean-cut as "AT&T is screwing me over" some moron manages to land on this page and actually figure out how to either leave a comment or send an email so he or she can make some clueless statement that is assumptive, uneducated, poorly-written, and critical of my personal beliefs? Why do they even waste the 3 hours it most likely took them to find each of those letters on the keyboard? What do they expect to get out of it?

a ghost town

It’s a ghost town here. With all of the people on Vacation for Thanksgiving, on top of all of the people whose last day of work was last Friday due to the Voluntary Separation Package, there’s hardly anyone here. I have a meeting with my new manager at 1:30 today to talk about all of the organizational changes and to give her a chance to tell us all exactly who she is and how it is that she is going to be our new boss. It’s frustrating, more than anything. Most of me wishes I had taken the package, too. Then, none of this would be an issue and I wouldn’t be scared to death about every new day that my job brings.

I’m now doing the work of about two and a half people. When everyone decided to leave, my (then) boss, assigned lots of new projects and tasks to me assuming that I would be able to handle it all since I pick up new things quickly and am a very hard worker. And he’s right, in most regards. I can certainly handle all of the new work. But something inside me just doesn’t want to do it. Any of it.

I’ve got a nice long list of things that need to be done NOW for my new duties. On top of all of that, I still have a very hectic timeline for the big project I’ve been working on. And the "customer" for that project is very demanding when it comes to dates and times that things will be accomplished. So, needless to say, there’s a lot I could be doing, but I just don’t feel like it. My back hurts, I’m irritable and hungry, and I just wish last weekend could last one more day.

the saga of the “stolen” cell phones

Oct 31st: Jess and I purchase new cell phones and new cell phone service from AT&T Wireless. The sales lady informs us that, if we give her our old cell phone (from Verizon Wireless) we’ll get an extra $50 off each phone. We do so, happily.

Nov 2nd: We realize AT&T wireless’ data rates are too expensive and attempt to return the phones within our "30 day no-risk trial period". The store tells us that their systems are down and cannot process our cancellation.

Nov 11th: I call AT&T Wireless customer care to cancel my service. I am told that their systems are down and that they are unable to cancel my service. I ask for a supervisor and he cancels my service without a hitch.

Nov 11th — later: We return to the AT&T Wireless store to bring back the cell phones we purchased. They refund us the money we paid for the phones. When I ask for my old phones back, they check the back room and then inform me that they have already been shipped off to… where ever they go. They tell me that the only option I have is to contact the store manager.

Nov 12th: I call the store manager. He’s not in the office.

Nov 12th: I call the store manager. He’s at lunch.

Nov 12th: I call the store manager. He’s gone for the day.

Nov 13th: I call the store manager. He’s not in the office.

Nov 13th: I call the store manager. He’s out to lunch.

Nov 13th: I call the store manager. He’s gone for the day. I put up a fight and they then tell me that he’s working at another store for the afternoon and they give me that number.

Nov 13th: I call the other store. They inform me that he isn’t there and that I should try his cell phone. They give me the number.

Nov 13th: I call his cell phone number. He’s rude. He’s uninterested in talking to me. He informs me that there is some literature that goes along with the "$50 for your old phone" deal that states that the phones cannot be returned to the customer. I inform him that, if this literature exists, I was never made aware of it. He tells me that the AT&T Wireless customer care may be able to help me.

Nov 13th — driving home from work: I call AT&T customer care. After 2 transfers I am in the right call center. I very nice, although new at his job, man tries to help me. He puts me on hold after hearing my story so that he can contact his resolutions team. Every 5 minutes or so, he comes back to let me know he’s still working on it. I get into some backroads and my cell phone drops the call after about 50 minutes.

Nov 13th — at the grocery store: I call AT&T customer care back. I wait 15 minutes to speak to someone. He is rude. He doesn’t want to help me. However, he does manage to inform me that there are no notes on my account in regard to the conversation that I had with the previous rep, nor are there any notes on my account from the resolutions team. I get frustrated. I hang up.

Nov 18th: I call AT&T customer care again. I get a nice lady named Alisha. She is very apologetic. She seems very helpful. She takes all my information. She takes information about the store manager. She contacts her resolutions team. She tells me that they are going to work on it and that someone from that team will be calling me by tomorrow. She said that she was leaving a note for herself to check my account tomorrow afternoon and that if noone had contacted me, she would call me back to find out why.

Nov 19th: No one called.

Nov 20th: I call AT&T customer care again. I am placed on the phone with a nice man named Chris from Washington State. He tells me that there are no notes on my account from Alisha or from the resolutions team. He asks me to explain my situation again. I do. He contacts the resolutions team. After about 40 minutes of being on hold, he informs me that there is little they can do for me. He says that, if I’d like, they can refund me the small cost ($20 or so) of the service that I used, but that the replacement or substituion of those phones would have to be taken care of by the store manager. I inform him that the store manager asked me to call them. He says that he’ll note my account saying that there is nothing they can do and that I should call him back and tell him so.

Nov 21st: I call the store manager. He’s not in the office. I ask for his supervisors name and number. They give it to me.

Nov 21st: I call his supervisor. He’s not in the office. I leave a message with my name and number.

Nov 21st: 2 hours later. No call.

Outcome: Jess and I have gotten nothing, have paid $20 for service that would have been less expensive had they accepted my cancelation on the date I tried to cancel, and are also without two Verizon Wireless cell phones that belong to us.

camera fundraiser: thanks

First, I’d like to say thanks to the many, many people who’ve purchased prints from my camera fundraiser. I’m so grateful for your support and I appreciate your consideration.

Secondly, I’d like to say thank you to Emily. She finished the first batch of prints and I must say they look amazing. Additionally, she did it at a total cost of $0. The more I can save on printing and shipping, the more I actually collect… so that’s a very good thing.

Jess and I will be mailing out all of these prints (from the orders taken last week) tomorrow. So, if you ordered something, be sure to check your mailboxes next week. And I’ll give a new order of stuff to print to Emily on Monday. So, for those of you who’ve purchased something this week, your order will be placed on Monday. Additionally, for those of you still thinking about ordering, if you order before Saturday night, you’ll make the Monday order as well.

We’re still trying to decide exactly how to ship them. I originally purchased 8.5×11 bubble envelopes, figuring that should keep them pretty safe. But Emily told me that her photo lab uses something akin to a USPS Priority mail envelope. Joel suggested I use a combination of a paper envelope, corregated cardboard and tissue paper. I don’t know what to do. Does anyone know the best way to mail a photograph?

as the mold grows: episode 2: attack of the spores

Even though I was assured that a sheet-rocking company would be here some time yesterday to replace the sheet-rock in my pantry and laundry room because of the mold, I didn’t trust them. So, yesterday, around 10am, I called for a Status update. The apartment lady, "Julie" a.k.a. "The Whore Bitch", told me that they had called in late and wouldn’t be there until 1pm. Fine I said as she hung up on me mid-sentence.

I got busy at work so I didn’t have a chance to call again until after 5:30pm, when they were closed. So, I just hoped for the best and headed home. Sure enough, the "sheet-rockers" had been there. As evidence I’d like to cite the piss all over the rim of the toilet in my second bathroom. However, upon inspection, no sheet-rock had been replaced. The company merely painted over the mold in the pantry and called it a day. They might have gotten away with it had they actually read the service request — assuming one was even written. You see, it’s possible that I would have assumed that they replaced the sheet-rock and then did an incredible job cleaning up after themselves and putting all of my pantry items back in their exact locations. However, the didn’t even bother to touch the wall in the laundry room. And, since the wall in the laundry room is shared with the wall in the pantry then, obviously, they didn’t replace the sheet-rock.

To make matters worse, they are horrible painters. Sure, the painted the walls just fine. It even matches. But, I guess these painters really were sheet-rockers, because they had no concept of the use of masking tape. All of the baseboards, the parts of the bottom shelf in the pantry, and the lower portions of the door frame were brushed accidentally. And, since they are a different color than the walls, it doesn’t look so good.

So, now I get to fight with the apartment complex for yet another day. I’m so excited.

Inklog: what is it?

After ranting about not knowing exactly what Syntax is, I realized something: I’ve never really stated exactly what Inklog is. So, here goes.

First and foremost, don’t infer any meaning from Inklog’s name. It was named that before it became what it is (will be) today. In fact, it needs a new name. If you’ve got an idea, let me know.

In order to describe what Inklog does, it’s easiest to describe a scenario and how it would work with and without Inklog. So, let’s start with a weblogging application since it was the reason Inklog was started in the first place. At the bare minimum, to write a weblog application you need 3 things: a place to put the data, a way to read the data, and a way to add data to it. Everything else is just "features".

So, without Inklog, our first step would be to decide where to put the data. Let’s say we’ll put it in a database. Great. So we design a table to hold the data and put it on a server. Now we need to be able to add data to it. So, we write a small script that presents a HTML form to the user and, when receiving input, shoves it in the database. We’ll call this script "edit.php". Now, to read data we need a script that will access the data from the database and display it in a pretty fashion. We’ll call this script "read.php". We write it and we’re done. Now we have a simple weblogging application.

At this point, using Inklog isn’t really that advantageous. I mean, these scripts are pretty simple, why bother with learning an entire application framework just for that? But then things change. You’d like your weblogging application to have "permalinks". You know, those nice little pages that show one, and only one, of the pieces of data that you’ve entered and reference it in such a fashion that it’ll be usable over and over again. No problem, that’s just another script. We write it and name it "one.php".

Then we decide we’d like comments on our weblog. Okay, we add another table to the database to hold comments. Then we write a script to add a comment, "commentadd.php", and alter our "one.php" script to show those comments. Easy as pie.

Then we decide that we’d like a photo gallery on our site. We create another table in the database to hold the photographs. We create a script to display the photographs ("photoshow.php"), and another script to allow us to add new ones ("photoadd.php"). Great.

Now we’d like to let other people write blog entries in our blog and add photos to our gallery. But we want to know who’s doing what and we don’t trust people to always specify the correct name. So we write an authentication script, add a table to the database to hold the users and then we edit "edit.php" and "photoadd.php" to use the new interface. We also create a script to let people log in and call it "login.php".

At this point, the application is getting more and more complex. The photographs code is tied in to the blogging code a bit through the authentication code. Still, without Inklog, things are too bad… yet.

Now we’d like to allow comments on our photographs. Hmmm… do we make another table for photograph comments and alter our exiting comments scripts and photographs scripts to use that table, or do we use the same comments table? Let’s use the same one. We alter all the scripts that read or add comments to allow us to denote what kind of comment it is so that we don’t have to change the ID numbering scheme we were using before. Then we add "photocommentadd.php" and "photocommentview.php" to our existing array of scripts.

Cool. Now we’d like to have an RSS feed of our blog. Easy as pie. "rss.php" is created and we’re done.

Now we’d like to integrate updates to our photo gallery in the RSS feed for our website so that RSS readers will know when either updates from the same feed. Huh? That’s hard work. Okay… we write a script to gather data from both sources, then compare the dates from the two and arrange them in order and shoot them out the other end. This isn’t easy but, eventually we do it.

Then we decide we want the comments in the feed too, and we want to be able to alter the look of our site be editing one file, and we want to be able to share the code with someone else, and they don’t want comments on their photographs but they do want them on blog entries, and then we want to add trackback and pingback and ATOM. And a nice Blogger.API to the blog section. And we want our static website to share the same look and feel as our blog and gallery and….

ENOUGH!!

With Inklog… this is all easy. Inklog takes a single principal and blows it out of proportion: in most cases, all people really want to do with any website (blog, gallery, FAQ, discussion forums, static site, etc) is store a arbitrary chunks of data in a hierarchy and retrieve those chunks in arbitrary conditions and they want to do it all in a way that allows their site to have a consistent look and feel.

We all understand the simplicity of hosting an image, or an MP3 file, or even an HTML page. We stick the page on our web-server and people access it. The problem is, there isn’t a "blog" file type, or a "comment" file type, or a "photograph" file type and even if there were, the server doesn’t easily allow random, possibly untrusted people to add content of their own (comments, etc). Even if those file types existed and we found an easy way to add in good authentication and methods to allow random users to upload various chunks of data to various places, we’d still have to get all these users to install software that can read each of these file types. And, to make things worse, we’d still have to write methods of creating those file types.

Inklog allows users to store ANY type of data in it. Each piece of data has an associated type. However, instead of forcing the user to install software that allows them to read these pieces of data and create these pieces of data, we do that on the server to. So, for each type of data that is stored, a module is created that knows how to convert that data type into a format that our users can use: HTML, text, XML-RPC, RSS, whatever. When you ask for a document, you ask for it in a specific format. Inklog then gets it, converts it, and gives it to you. So, if you have an MP3 on your site, and a user asks for it as HTML, then you can show them a nice pretty page describing the MP3, showing a transcription of the MP3 and a link to actually listen to it. If they ask for an MP3 as an MP3, then you just give it to them. And Inklog takes care of all of this.

You want comments? Great, write a module that knows how to read a comment. create a comment and convert a comment into a few popular formats. Now, all you have to do is give users permission to create comment objects inside of blog objects, and all your blog entries are comment-able. Want it for photographs too? Fine, give them permission to create comment objects on photograph objects and you’re done. Want to restrict a certain entry from getting comments, just deny that permission on that blog entry. Done.

Everything locks together. Everything knows at least basic information about everything else. Everything looks the same unless you ask it not to. Everything just makes sense. Now, when you take a new picture, or record a new song, you don’t have to make a HTML page for it that links to it, then write a blog entry that links to the HTML page, then upload the song or picture, then the HTML page, then publish the blog entry. You simply upload the song or picture, and you’re done. If you want to write a description for it, fine. If you want to disable (or enable) comments on it, fine. Whatever you want. It’s all easy.

You want a Moblog script? Great, make an email alias point to a program that dissects an email message. Send the text of the email message to the system as a "blog" object using the Subject of the message as its title. Then send the attachments to the server as objects inside of the "blog" object. That’s it. And all of this is done through an easy as pie API. You don’t have to learn database structure, or manage usernames and passwords for things, or deal with rebuilding your indexes, or any of that mess.

You have a group of visitors that want to be notified via email whenever you update your site? Cool… write an email output module, and add a "new object" hook to the root of your site. Allow users to add emailaddress objects to the container that you’ve set up for notifications. The "new object" hook will get the emailaddress objects from the container, and contact the email output module to send out the notification.

It sounds simple. It is simple.

Certainly, there are some things that Inklog just won’t do well… or, at least not easily. But I can’t think of any.

There are some limitations to Inklog. First of all, if you want to customize the way your site looks, you need to know HTML. You can use Frontpage, or Homesite, or whatever to give you a hand but, in the end, you’ll have to edit some HTML to get it to do exactly what you want. Now, Inklog will support themes. So, if someone’s already built a theme that looks the way you want it to, you can simply install that. Additionally, themes can have configuration values. So, in the end, I guess it’s possible that if someone wrote a flexible enough theme, you could get away with not knowing HTML and still get it to look the way you wanted. But, that would be difficult to do. Secondly, if you want Inklog to handle a new object type, you have to be able to code. Currently, you have to be able to code in PHP. In the future, it’s possible that any programming language that can use XML-RPC (or maybe SOAP, or some other standard remote object calling method) can be used to code modules. But, at this point, it’s PHP only. Finally, if you REALLY want to make your site to do amazing or unusual things, you have to be willing to, not only edit HTML code, but possibly insert some "code-like" constructs into your HTML. They aren’t any more complicated than Movable Type’s template format. but, you will need to have a general understanding of very basic and simple programming concepts (what a variable is, what a function call is, what an if statement does, what a foreach loop does, etc). But really, if you can code HTML and cut and paste JavaScript, you can handle it.

That’s it.

I hope this makes sense and helps some of you understand what it is I’m working towards here.

If you’d like to help and know PHP fairly well, please let me know. I’d love a partner in all of this. Additionally, if you have comments or questions about Inklog, feel free to leave them here.