Category: Old Blog

Old Poetry

I was browsing through a backup CD of mine and came across a bunch of my old poems. I might as well throw them up here.

Here’s one called “conceited monkeys”.

the yellow bellied
underbottom that
moves me
to consume.
fabrics of threads
stranded…
and stranded.
together as many
broken, untwirling
decrepidations
is the
sum of
addictive additives
floating in that
food that we eat;
we consume like
locusts in packs
of packed pack rats
like so many,
so many,
oh so many concieted monkeys.
Damn this human race!

21:43:4:13:99

Oooh, I can be so moody. 

ATI Stock

What the hell is up with ATI Technologies (ATYT) stock?

The stuff has been on a steep decline since the beginning of April. It’s gone down about 10% in the last two weeks. What gives?

I bought the stock back in the fall and enjoyed a nice little boost as the price rose from $16.40 to around $20. Since that early peak, I’ve watched the stock price slowly fall in spite of good news item after good news item.

There was one black sheep in the great white flock of ATI news. A slew of former ATI executives are now settling huge insider trader lawsuits. Now we’re not talking Enron or WorldCom huge, but millions of dollars.

So I’ve finally pulled out with the price at $14.80. Still I have my doubts as ATI minus the crooked executives of yesterday is a strong company with great placement to move their product into larger markets. The large majority of their profit comes from the sale of graphics cards for PCs and Laptops. But with Videogame Consoles, TVs, and any number of futuristic graphical devices entering the world of 3d, ATI as a market leader is looking to make a ton of dough. Heck, they’re making a ton of dough right now, undervalued, and outperforming their street numbers.

ATI is a company with good numbers and a great outlook for the future. The one thing they have against them is this insider trading issue. Don’t get me wrong. I’m not saying that insider trader isn’t a big issue or a great reason to distrust a company and dump their stock. However, ATI is now going to be under a lot of scrutiny and I imagine the new breed of execs running things there are going to take corporate ethics really seriously.

I spent a bit of time at a pharmaceutical plant for work. One of the anecdotes told at the plant is about the guy who’s job it is to pour a liquid form of the medicine they are making from 5 liter bottles into 1 liter bottles. The medicine is highly concentrated at this point and each 1 liter bottle has a value of about 50 million dollars. The people pouring out these flasks joke that a drop of the stuff is roughly equal to their annual salary. Anyway, the story is that one time one of these guys dropped an entire bottle of the stuff on the floor. 50 million literally down the drain. When told the story, I joked, “How long did it take to fire that guy?” The response was, “We didn’t fire him. If we fired him we’d just have to hire another guy who might do the same thing. Do you think that guy who dropped the flask once is going to take his job for granted and drop the flask again?”

ATI is like that guy who dropped the flask. We hope that they’ve learned their lesson and can keep their hands clean while taking advantage of all that know how and market position they have. My plan is to wait for the stock to bottom out on this bad news and pick it up when it’s cheaper. Now that I’ve sold my stake, I’m hoping it hasn’t bottomed out just yet.

Update

I wonder if I’ll ever get around to finishing the Making the Blog(MtB) feature. It would be a useful piece of literature, but I’ve been struggling to find the time to work on it. I don’t have any illusions that people are excitedly awaiting the next installment. Once it’s finished though, I assume I may grab some hits off of Google from people running into the same problems that I did. It’s all about helping people, man.

Lately, I’ve been spending my time on some freelance web development work, “real job” work, commuting to my real job (1-1.5 hours both ways, yuck), looking for a dark blue or yellow Mazda Protege5 with a moonroof selling for under $13k, and celebrating my girlfriend’s and my 6th anniversary.

Sometimes I ask myself what more I’d like to be doing with my life. Well, besides finishing up MtB, I’d like to start playing poker again, setup a poker affiliate site, finish decorating the apartment, write some more fiction, and buy myself a widescreen TV. Those last two at least seem mutually exclusive.

Wish me luck. Though I’m glad the biggest problem in my life is finding time to do all this stuff. Maybe I’m not paranoid enough.

Apartment Update

It’s been over a month since I moved into my new place, about time for an update. So far 3 of 5 walls are painted and 5 of 7 rugs are in place.

Operation scrub it down is complete. Sofa is go. Crummy TV and cable go. Living room curtins go. Old desktop computer go.

Still needed: 2 of 5 walls, 2 of 7 rugs, cumfy living room chair, living room lighting, a sweet ass TV, new bedding, and a new dining room set. I need to reformat that old desktop of mine, and I really need to get the artwork and pictures up on the walls.

Overall I’m really excited about having my own place to come home to again. I even scored myself a local project at work. I’m still up in the air about which is tougher a 1 hour commute twice a day or a 6 hour commute twice a week. One thing I am certain of is that it’s a lot nicer coming home to my Haverford apartment rather than the St. Louis Residence Inn.

Making the Blog Part 2

The first MtB post was merely an introduction of the idea for this series. In this, the second installment, I will describe the MySQL schema used to store post information. Future MtB posts will go into the coding behind the various public and tools-oriented pages used to display and update the posts. So let’s get started.

My blog is written in PHP and uses a MySQL database to store and retrieve the posts and other information needed to make the site function. If you haven’t used PHP or MySQL before, you might want to checkout www.PHP.net and www.w3schools.com/SQL to learn more about these great technologies.

If you are already familiar with PHP and MySQL or just want to jump into things “balls-out”, then let me start by describing the schema or structure of my MySQL tables.

Currently, the jason@strangerstudios.com DB has just one table, call it post. The post table has the following fields:

Field Type Description
id int(11) The Primary Key for each post.
poster varcar(32) Who is posting the post. This is usually me, but could theoretically be the Pope or something. This field is also marked as an index.
title varchar(128) This is the title of the post, displayed in the colored header.
type char(1) This type is a letter referring to which category the post should be entered into. This allows posts to be filtered by type. Currently there are 5 types: News, Games, Writing, Art, and Other.
text longtext This is the body of the post.
date datetime The date of posting.
keywords varchar(128) This is an extra indexed field where I enter various keywords for each post. For instance a keyword for this post could be PHP or MySQL or Fuddy Duddy. These keywords aren’t currently displayed on the post, but I plan on later adding a page to search posts by keyword.

Now how do we setup this table? Well, I used PHP MyAdmin. It should be pretty self explanatary how to create the above table with this tool. If you haven’t already tried, browse around PHP MyAdmin, find the new table button, and take a stab.

If you’d like to (or need to) use SQL to create the table, here is an SQL dump of the table:

CREATE TABLE `jasonposts` (
  `id` int(11) NOT NULL auto_increment,
  `poster` varchar(32) NOT NULL default ‘jason’,
  `title` varchar(128) NOT NULL default ”,
  `type` char(1) NOT NULL default ”,
  `text` longtext NOT NULL,
  `date` datetime NOT NULL default ‘0000-00-00 00:00:00’,
  `keywords` varchar(128) NOT NULL default ”,
  PRIMARY KEY  (`id`),
  KEY `poster` (`poster`,`title`,`type`,`keywords`),
  KEY `keywords` (`keywords`)
) TYPE=MyISAM AUTO_INCREMENT=72 ;

I’ll let you all ruminate on this information. The next installment in this series will cover the front page and how posts are displayed and filtered using PHP and SQL queries of this database.

Look forward.

My New Apartment

I’m currently sitting on my plastic covered couch waiting for the cable guy to get here. Besides the couch, there’s also a microwave, two folding chairs, and a TV set in here. It’s beautiful. I’m also “borrowing” my neighbor’s wireless network to make this post.

I thought that I might have “Making the Blog Part 2” up by now, but moving in is more time consuming than I thought. We (Kim and I) still need to finish cleaning the kitchen, painting the living room walls (shhh), and putting away various crap that we brought with us. We can also look forward to the fun of running the cable from the living room into the second bedroom where the office will be. I plan on getting some advice for this operation from the cable guy when he gets here.

Here’s something I made at the airport the other day:

Mean Guy Wallpaper

Self Portrait

This was made using the “Old Guy-Mean Guy” technique and another photo of me from the Dominican Republic (it’s the only photos I have on this computer).

Self Portrait

The piece is significant because it represents my first portrait with a non-round head shape. I also realized that saving these things in gif format saves a bit of space.

If you are feeling brave, take a look at the original photo. It’s such a terrible photo. I had to put it in monochrome so I’d look at least somewhat presentable. Although the header pic doesn’t really do me justice either.

Self Portrait Comparison

Here’s another Mean Guy, which I am fond of.

Mean Guy #4

In other news, I don’t know when “Making the Blog Part 2” will be written and posted. I’m moving into my new place this weekend. My guess is the sequel will show up sometime on Monday.

Old Guy Pic

While messing around with some logo ideas for a possible client, I came up with this pic:

Old Guy Cartoon

This was done in Photoshop. I basically drew a bunch of circles on different layers, outlined them with the “stroke” layer effect and did some choice “spherizing” to make things look less flat. It’s a nice effect I think, and I plan on making some more characters like this. Below is a link to this same picture and another one made with my “new technique”.

Mean Guy 3

p.s. Look forward to an ART category in the menu.

CSS vs. Tables

At the Barnes&Noble the other day, I came across this Eric Meyer book on CSS and skimmed through it a bit. ‘turns out, there’s this great big controversy over laying out websites using CSS instead of tables.

I’ve been away from the “web development scene” a bit since I started my new job last May. I knew that CSS was da bomb y’all and it could do a lot of powerful things that nobody was using it for, but I just didn’t realize how much of a movement this has become.

I feel like a dinosaur. I’m an old school html hacker, using tables to do a stylesheet’s job. I’m inefficient, redundant, and out dated. Soon I’ll need to include special loser-denoting tabs in my html to tell the browser how lame and antiquated my web development skillz are (a la Doctype tags).

I’m not so convinced that I’m going about things incorrectly though. I basically agree with what this guy has to say.

This whole CSS vs Tables issue became even more relevant for me when I downloaded FireFox 1.0 and took a look at my site in that browser. The table cell on the right-hand side of the page was all scrunched-up-like. Even though I had code that looked like this…

<tr>
<td width=575></td>
<td width=175></td>
</tr>

…the right sidebar was only as wide as the longest word in the cell. I even did the trick where you put a 175 pixel-wide spacer image in the cell. This would make sure that the cell was “at least” 175 pixels wide, but it was often much wider. Actually, the biggest problem wasn’t that I couldn’t get the cell to be exactly 175 pixels wide. It was that the size of the cell seemed random. On some pages it was too narrow, on some it was too wide. I want one size, folks… 175 pixels like the code says. How comes IE can get this concept, bug FireFox can�t?

So I googled the problem. And I wasn’t too excited when the first couple of sites that came up gave the answer of “just switch to an all CSS layout and this problem will go away.” Nah, I didn’t buy it. I want a table cell 175 pixels wide. There’s got to be a way for me to tell the browser that. I put “width: 175px” all over the place in my stylesheet, but no change.

I searched some more. After about 30 minutes, I found a real explanation of what was going on. You can read into it more at this w3 site. In general, the problem is in the table rendering method. IE calculates every cells size before rendering a table. FireFox, on the other hand, looks at the just the first row and estimates the rest. The result is that FireFox renders tables much faster since they don’t need to wait for the entire table to load before writing data to the screen. However, FireFox also drops the ball by not noticing things like “width=175” in a cell on the third row.

There is a “fix” though… at least for my site. CSS has a “table-layout” attribute. To the main table class, I added the following CSS code “table-layout: fixed”. This didn’t turn FireFox into IE or anything, but it at least let me know that both IE and FireFox would render the table in the same way. Specifically, according to these rules (from the earlier w3 link):

    1. A column element with a value other than ‘auto’ for the ‘width’ property sets the width for that column.
    2. Otherwise, a cell in the first row with a value other than ‘auto’ for the ‘width’ property sets the width for that column. If the cell spans more than one column, the width is divided over the columns.
    3. Any remaining columns equally divide the remaining horizontal table space (minus borders or cell spacing).

Now in both IE and FireFox, my website looked the same though still “wrong”. The left section of my third row now took up 50% of the table and the right side took up the remaining 50%. The size of the page “columns” is based on just the first row. Since my first row contains just one cell, my table looked like a one-column table. When the third row was rendered, it was just split in half. The width of the third row had been “divided over the columns”. To fix this, I setup a dummy first row with my wanted division. I added to the top of my table the following row:

<tr height='1'> <td width='575' height='1'></td> <td width='175' height='1'></td> </tr>

Now I have a two-column table. When the render-er gets to my fourth row now it splits it up like it did the first row (575 … 175). And the result is what you now see on my site: the requested table division with an added 3 pixels of gray at the top. It’s possible that adding this row would fix the problem without altering the table-layout attribute in CSS. But like I said before, it’s good to know which algorithm your browser is using to render tables rather then leaving it up to whim.

I hope this can help anyone else out there with a similar problem. Now back to the original topic… I like CSS and all, but I hope people don’t go too overboard with this thing. If it ain’t (that) broke, don’t use some other broke-ass piece of technology to get it done.

Making the Blog Part 1

I created this website to give myself an outlet for my creative urges. I imagined myself writing fictional masterpieces weekly and creating scores of compiled computer games, all of which I would upload to this site. Well, that’s only partially happening. I’m actually encouraged with my progress. However, as is common with a lot of blogs (I assume since I’m not really that big of a blog-o-file), I find myself mostly writing about my writing implement.

The situation may be special for me since I’ve written this blog “software” myself. I’m so proud of this accomplishment and each new feature that I add, that it is sometimes difficult to set those feelings aside and think of other “content” to put here.

I also started thinking about the random lack of focus this site empowers and how that it would be very difficult for me to create something here that will be consistently interesting to people other than myself. This is why I created different “topics”. I imagined people visiting my site because they were interested in me (my family) or interested in my poetry (sick minds) or interested in my games (the extremely bored). Overall though, I always really understood that this blog/site is more than anything self-fulfilling. I’m most interested in venting this stuff for my own good. As of now, whether or not anyone else takes notice is secondary.

Despite all that, and in an effort to produce some genuinely useful content, I’m going to start a series of posts entitled “Making the Blog”. The idea is to talk in detail about the various aspects of building this beast from the ground up. Even though there are numerous commercial products like those from six apart, books on blogging, and even open source options, I feel that if you are capable, building your own blog from scratch can be very satisfying. I feel much more ownership over this production and the words scrawled here than I would have otherwise. You can too.

So, if you’ve written some code before, dabbled in PHP and mySQL, or know a little html, you might be interested in this feature. I hope to provide anyone interested with the code and understanding necessary to make your own blog like mine (in PHP).

Undoubtedly, as I add new features to my site, I will expand on the “Making the Blog” series by bragging about and explaining the newest goodies. Excuse and ignore me if you must since blog software is already available. Excuse me if someone else has already created a feature like the one I describe here. You can, as always, consider this exercise another one of my masturbatory self-indulging mind dumps. But I truely hope I can produce something useful with this.

Thanks.

Making the Blog Part 2