Entries for January, 2004

3 days worth of work on the brand-spanking-new display engine for Tabulas just went live right now.

::crossing fingers hoping everything works as planned::

For those not-so-technically savvy, this basically means I completely rewrote the most important aspect of Tabulas; the way the entries are displayed. It may look the same, but the coding is 10x better. A bit more CPU intensive though... hrm.
Posted by roy on January 2, 2004 at 09:29 PM in Web Development | 4 Comments
Whoever left the anonymous comment yesterday, SHOW YOURSELF! Actually, they made a good point.

"How can the scripting be better if it's CPU intensive?"

Good question. Here's the answer.

In general, Tabulas was a hodgepodge of different scripting styles with various "global" variables being used. This meant that things were not consistent when you looked at code; your userid variable should be stored as one variable throughout the site; it was stored as two previously.

Now, specifically regarding the entry display engine, I had to rewrite it because it was a mess. There was one massive function that specifically handled displaying entries. It was over 600 lines long. This made troubleshooting that function almost impossible.

Now, I split up the function (as described) into two logical functions: the first one determined which entryids to pull based on your privacy settings, while the second one took an array of entryids and displayed them.

Now, although this is a cleaner and more logical method of doing things, there is an extra layer of abstraction; before the entryids and display were on one layer. However, now the database is (essentially) hit twice; once to determine the IDs and once to grab those entry based on their entryid.

However, both of these queries are extremely fast; I've tried to minimize the amount of work the database has to do.

You see, when you develop database-driven sites, there are two primary methods of handling the workload:

1.) Make the PHP do most of the work while mySQL just serves up data
2.) Make the mySQL database do most of the work while the PHP does simple outputting

The problem with the old method is that it placed a lot of work on my database; and I'm trying to move away from that.

PHP is much easier to do load-balancing than mySQL servers; you just buy more servers, send up a round-robin DNS system, and let things loose. mySQL servers are harder to set up across multiple servers; so you want to minimize the amount of work mySQL has to do while mazimixing the amount PHP does.

So the more CPU intensive basically means PHP is doing more work to output the same data, but there's less work being done on the mySQL end of things.
Posted by roy on January 3, 2004 at 11:40 AM in Web Development | 5 Comments
Something I had been working with intermittent frequency over the past few days (while rewriting the core display engine) was help.tabulas.com. It's far from done; it's really simple right now, only displaying documentations and such, but I have such big plans for it.

With the advent of blogging (ugh, I still hate calling it that), there's a lot of sites that offer the same tools. So how do you succeed? There are two steps to creating a site of success:

1.) Build a community and create brand loyalty
2.) Document, document and document.

People want to know how to use these tools, but too many sites don't bother to explain. Either that or the documentation is too wordy or obfuscated to yield any real progress.

I eventually want everyone and their mom to know how to use Tabulas, and help.tabulas.com will be the way to do that. EVERYONE WILL USE TABULAS AND I WILL BECOME A RICH MAN AND MARRY KEIRA KNIGHTLY.

. . .

As a personal note, some things to do:
- Implement a 'glossary' feature that serves like autolinks on the help site; it links up various keywords to a page that displays all relevant documents
- Add a "one page" feed of Tabulas/Suggestions/Feature
- Expand the request for feature requests as well as a "to-do" list
- Add commenting to each document within the site with self-moderation (+/- system to push comments in/out)
- Eventually build the support ticket center into help.tabulas.com (which means I'll have to start using the tabulas authentication system within help.tabulas.com? I'd like to avoid it ... )

. . .

Gah. So much to do. I've also been simultaneously been working on rewriting the communities feature ... and not to mention that I've started to plan the complete rehaul of all templates to semantic compliancy; it's going to be a bitch to go through all 3000 CSS files and do a search/replace while upgrading the outputting code (no more bad HTML on the entry page and such!).

I've also begun planning how Tokki and Tabulas will interact; I've given some thought on hacking Tokki to be simpler; it's a bit too complex in its stage right now. I think with Tokki I'm going to take it through two phases:

Step 1: Make it a simple picture-sharing site. Don't worry about photographers and such. Make a site that's scaleable, make people pay, and earn some money.

Step 2: Launch a separate site, using the same coding for Tokki but expanded ... for photographers. Hopefully Tokki will be making some nice money so I can really afford to give photographers lots of space/hardware/features.

This is good because it means that Tokki can "officially" launch soon. A feature freeze soon, and a quick rehacking of some features (and taking away some).

Tokki and Tabulas interacting should be very interesting; I think it's going to be a one-way thing; I want Tabulas users to be able to export their gallery to Tokki, with the option of deleting their Tabulas gallery in the process. The idea came to me especially with allen's gallery ... he has to constantly delete his old pictures to add more "recent" ones since he's too cheap to buy a f'ing paid account. The idea here is that he can "export" from Tabulas to Tokki his old album, then upload a new album to Tabulas. Thus his viewers can keep up with recent pictures in his Tabulas while viewing his older "archive" in Tokki.

It's a shame it took most of break to finally get my work ethic back. Time to go to sleep, wake up early tomorrow, and script all day :)
Posted by roy on January 4, 2004 at 01:35 AM in Ramblings | 2 Comments
We can live beside the ocean
Leave the fire behind
Swim out past the breakers
And watch the world die
- everclear
Posted by roy on January 4, 2004 at 02:48 PM in Ramblings | Add a comment
Britney Spears got married one day, then annulled the marriage the next day.

So I'll ask the questions that everyone will ask: Does the dude get a lot of money? I doubt they signed a prenup ... so the guy would be entitled to a buttload of money, wouldn't he?

Hrm.

Edit: Before more people comment, I AM NOT BEING SERIOUS WITH THE QUESTION. I AM NOT THAT DUM.
Posted by roy on January 4, 2004 at 11:36 PM in Ramblings | 4 Comments
heh. I think it's even worse for webservices because at least with piracy on software, there's no recurring fee to people using your pirated software. For sites like Tabulas, you got constant bandwidth and server fees to pay for.
Posted by roy on January 5, 2004 at 01:16 AM in Ramblings | Add a comment
This is exactly the reason I hate Democrats (edit: you can view it off my servers if the other ones are slow) so much. You don't see Republicans stooping so low as to make Hitler == Bush comparisons.

For those of you too lazy to click the link, MoveOn.org, a site heavily associated with the Democratic party, is sponsoring a contest for TV ads; they seem to be favoring the "Bash Bush" ads the most. This specific commerical compares Bush to Hitler ... go view it.

Democrats need to grow the f' up. Of course, I guess it serves them well if the purpose of this ad is to alienate swing voters. Like hell I'll be associated with a political party that makes childish analogies. Oh well. You shoot yourself in your foot.

This is also a vast injustice to those who suffered under the Holocaust. I doubt that the history of the genocide of the Jews is hardly something that should be used as a political tool.

I wrote a nice long tirade, but someone else is much better at saying what I want to say.

Jack Rosen, president of the American Jewish Congress, writes in Monday's WALL STREET JOURNAL: "MoveOn.org informed potential ad makers that 'we're not going to post anything that would be inappropriate for television.' Two of the ads posted on the group's Web site compared Adolf Hitler to George W. Bush. One ad morphed an image of Hitler into President Bush and says that, '1945's war crimes' are '2003's foreign policy.'"

Rosen says MoveOn.org is "using the memory of that genocide as a political prop. Their comparison diminishes the reality of what happened, and their actions cheapen the memory of a horrific crime. It also does a terrible disservice to this country at a perilous time, when we need to examine the dangers we face with clarity and purpose."

Leadership is "about confronting threats to freedom everywhere. President Bush has shown that leadership in Iraq, and our troops have liberated a people who were oppressed by another murderous dictator. MoveOn.org compares this liberation to the Holocaust. It deploys a picture of Hitler to vilify President Bush. Comparing the commander-in-chief of a democratic nation to the murderous tyrant Hitler is not only historically specious, it is morally outrageous. Comparing an American president, any American president, to Hitler is an outrage.

The MoveOn.org ad was inexcusable. Political figures such as Al Gore, who have associated themselves with MoveOn.org, have a special responsibility to condemn these ads; donors to the group such as George Soros have the same responsibility. They owe it not just to the memory of the millions who died in the Holocaust. They owe it also as a simple matter of decency."
Posted by roy on January 5, 2004 at 10:43 AM in Ramblings | 1 Comments
I'm in a rotisserie Fantasy League. I am in first place. This makes me feel very happy. This makes me want to write about fantasy NBA.

This is a post I wrote in our fantasy league message board:
The key to winning to rotisserie is to dominate two positions: center and point guards. I'm sorry for all you cellar dwellers that didn't get the memo. Look at the top teams. They're either stacked with points (mine) or with centers (andrew). don and soob have got a nice mix of the two.

Now, looking at point guards, we have to ask, "what characteristics make the best point guards in fantasy?"

I think the most important statistic in fantasy is the assist/turnover ratio. Ratios are more important because it implies dominance in two categories.

Following this reasoning, guess who the best point guard in the league is?

Eric Snow. Haha. Yes! 7.1 assists for 1.9 turnovers. That's an astounding 3.73 assists per turnover.

GP follows behind Eric Snow's fine ass with 3.6 assists/turnover.

Sam "The Alien" Cassell. He follows right behind with 3.125 assists/turnover.

Starbury/JKidd/Nash: 2.96 assists/turnover

BD has a 2.6 assist/turnover ratio, which matches that of Tony Parker.

Now we know who has all the best point guards ;D

I have Jason Kidd, Starbury, and Eric Snow on my team. :D

But seriously, in rotisserie, good point guards are crucial. The backcourt can come help you dominate steals, assists, and will primarily determine your turnover rate (high assist/turnover ratio is a key statistic that is often overlooked). So following this reasoning, Eric Snow is a great late-round pickup. He cannot score worth a crap, but that's why you pick up someone like Ray Allen or Allan Houston (yes, laugh you jerkfaces, I made a good pick up with him) to help offset the lack of scoring.

Now, when you pick up Starbury (arguably the second-best point guard behind Jason Kidd), you're also picking up a point guard who can score with reasonable accuracy. This is a definite plus.

Jason Kidd not only gets mad assists, but he also gets mad rebounds (not sure how this works). So between Eric Snow, Jason Kidd, and Starbury, I've got great assist/turnover ratio with reasonable scoring and rebounding between the three.

Now I just need to shore up my centers. I have Camby and Chandler on my team; Chandler was a golden pick-up (averaging somthing like 13 pnts/10 boards) until he got that stupid back injury.

Everyone in my league laughs at Camby, but he's such a solid player whe he's healthy. In a league that is completely devoid of centers, you need solid centers to play. Not everyone get Shaquille, Duncan or Jermaine so you gotta pick up a decent mid-round pickup like Marcus Camby, Tyson Chandler, Kurt Thomas or Brad Miller. Camby is often overlooked because of his injuries ... but in rotisserie, he is a beast. He has a relatively high free throw percentage for centers and he manages 2+ blocks a game. He also averages upwards of 10 boards a game, which is wonderful. I picked him up pretty late in the draft and was ecstatic to have him.

I'm not too big on picking up shooting guards of forwards early; they're a dime a dozen and you can find them pretty easily; so many of the teams in my league picked up too many guard-forwards (sung) and it bit them in the ass later.
Posted by roy on January 6, 2004 at 12:10 AM in Sports | Add a comment
Check out Vienna Teng. She's got some nice music (free mp3 downloads available on her site).

Kind of a softer Sarah McLachlan type music. Good stuff.
Posted by roy on January 6, 2004 at 01:58 PM in Music | Add a comment
The joys of maintenance. So much fun (not). Late last night as I was pondering what my life would be like if I were married to Keira Knightly, I also started thinking about how to scale Tabulas to more servers.

I was thinking about my previous idea of having one superserver database ... but then I thought ... hrm that won't work for the entry data. Entry data is currently being fulltext indexed which allows it to be searchable. This isn't really effective since there are only about a 100 people who can actually search their entries. Eventually the entry table will become too big for one server to handle.

So I began thinking about clustering the users, much like LiveJournal does. I have no idea how this would work, so I guess I'll write out ideas and implement them as I need to in the future.

I'm guessing the superdataserver can store all relevant metadata (user data, sessions data, profile data, etc. etc.). However, each cluster would contain the entry for users. I can limit each cluster to 20000 users each (so each server would only be responsible for storing entry data for 20000 users).

The problem here is with features like the "friends" view, the server might have to instantiate tons of new mysql connections simply to grab the friends entry data. Right now it's all on one server so it's not a problem to run complex queries ... but if the server had to connect to multiple servers and then organize them, that would even more CPU intensive ...

Hrm. Not sure how that would work.

Right now I'm spending time optimizing the Tabulas server (which is shared with 150 other sites). I'm turning off a bunch of services and vacuuming out a lot of nasty postgresql tables which were killing performance every night from 11pm - 2am. Hopefully tonight the only thing running between those hours will be the standard updatedb.

We'll see.
Posted by roy on January 6, 2004 at 02:51 PM in | 8 Comments
I have found the perfect game.
Feel The Fear! Fear isn't the only thing you'll feel when you play this exciting game of chance. It's truly electrifying! Select the number of players, put your finger in one of the four slots, and let it "spin." Lights and sounds start out fast and gradually slow down (just like a roulette wheel) to prolong the tension. When the sound stops, someone gets the shock of their life -- and everyone else gets a big laugh! Victims are selected at random electronically, so you never know who's next. Sure to be a scream at your next party. 3 "AA" demo batteries included. Not recommended for small children, cowards, the extremely unlucky, Russians or persons with a medical condition.
Posted by roy on January 6, 2004 at 09:19 PM in Foolishness | Add a comment
One of the coolest skills anyone could acquire is the art of asking a loaded question. Let me demonstrate.

We were doing our normal bantering in 305 Lewis when we got to the topic of Chris (one of our roomates) sexcapades. I was commenting that Yush and Nelson (his brother), once they had worked out, would become formidable opponents to Chris on the singles scene.

Chris replied, "Nah man."

I retorted, "So you gave up on your sexcapades?"

Now, think about the answer. (Note: Chris does not really *have* sexcapades, but this is why this is funny). If he answers "no," then he is admitting to being a selfish sexaholic. If he answers "yes," then he is admitting to the whole sexcapade scenario.

A loaded question!

I'm going to master this art. It really does put people on the spot and makes you seem superwitty.
Posted by roy on January 6, 2004 at 10:32 PM in Foolishness | 5 Comments
Random songs I'm digging right now:

Liz Phair - Extraordinary
Fuel - Falls on Me
Everclear - Santa Monica
Dee-Lite - Groove is in the Heart
Rockell - In a Dream

I can't stop singing the chorus to Extraordinary ...

"I am extraordinary ... if you'd ever get to know me ..."

Girls that can rock = plus. I have the biggest crush on Liz now ;D
Posted by roy on January 8, 2004 at 01:10 AM in Music | 1 Comments
It is snowing here and I just cannot resist sticking my tongue out when I'm walking ...
Posted by roy on January 9, 2004 at 09:15 AM in Ramblings | 2 Comments
What a great Friday. I went to all my classes and had a decent time in most of them (well, they're chemistry, so as much fun as you can have in chemistry anyways).

I found out my Friday lab (Polymer Chem Lab) is actually going to be really cool; the professor and TA are both really chill and a quick glace at the lab manual seems to show some interesting experiments. Of course, the fact that a lot of these experiments (and I quote my professor) "are dangerous" and can lead to "explosions" makes it really cool.

I spent most of yesterday chilling out and staring out the window at our beautiful snow. I'm from the north, so I've always loved snow ... it's something I missed when I moved down South.

I think when it snows in the South, it's the perfect amount. Not enough to cause problems with traffic and stuff, but enough to go out and have a snowball fight and to look pretty. Snow brings out the best in everyone ... I was walking to class and everyone was just having a blast, building a snowman and having snowball fights ... bringing out the inner child in everybody.

I spent most of last night working on some Tabulas-related stuff; I'm beginning to write in some account management features. There's some cool stuff that'll happen over the next few days ... there's a few of you who on my friends list who I want to thank for supporting Tabulas, so I'll be sending some cool things your way :)

Well it's 830 am. I've been programming most of tonight ... but I gotta wake up and be awake most of today because *I GOT A LARGE NUMBER OF TABULAS PAID ACCOUNTS!*

I'm not sure if I already discussed this, but I'll discuss it AGAIN! Because it's MY journal, dang it ...

A teacher who uses Tabulas is teaching a class about blogging and how it can benefit the classroom ... and she's using Tabulas paid accoutns for her class. W00t. So hopefully this'll be a quick money infusion, because I am desperately running low on money. I didn't quite get the amount of paid accounts I expected over the Christmas break.
Posted by roy on January 10, 2004 at 06:30 AM in Ramblings | 4 Comments
3rd and 14 on our own 30. It's double overtime. Kasay has missed his last two field goals. Wilkins missed his one chance from 52 yards out to end the game in the first OT.

A ~20 yard pass from Delhomme to Steve Smith turns into a 69 yard touchdown.

Thus ends the 5th longest football game ever ... amazing. This was the BEST football game I have EVER seen. Amazing.

I'm so worn out. This is definitely one for the history books.
Posted by roy on January 10, 2004 at 06:33 PM in Sports | 2 Comments
Oh god. I cannot believe the Packers lost. I fee horrible for Brett Favre. There were a series of questionable calls by Mike Sherman ... what was he thinking? Fourth and goal ... should of gone for the field goal.

Fourth and goal at the 50 ... he tries to psych out the defense? Sherman should of either gone for both or gone for neither of them.

Then on the 4th and 26, they have the worst possible coverage against the Eagles?

Come on ... what idiotic calls. Sigh.
Posted by roy on January 11, 2004 at 06:18 PM in Sports | 2 Comments
Ugh. Still working on Tabulas. Wanted to hack together something for AudioMatch, but that'll have to wait while I finish some urgent stuff up.

In any case, I'm starting to think about long-term XML syndication formats for Tabulas. I mentioned Tabulets a long time ago, and all Tabulas entries are being stored in a temporary XML format right now (it's being stored on a separate server so if (god forbid) anything happens to the Tabulas database server, I'll still have all the Tabulas entries in XML format.

However, the solution was never conceived to be a long-term solution; it's really a short-term solution.

So I'm thinking that every month Tabulas will go through and syndicate all content in the new Atom format. Atom (I believe) was always intended to be more of a content delivery system than RSS ... so it would be ideal. Every month would have a separate Atom feed. Since Borst might have some time this semester, he might be able to use prebuilt Atom parser feeds for C# to build a stand-alone program to handle Tabulas entries (that would be uberhot).

This may test the limits of the server (I wrote a lot of entries per month, and to edit one XML feed for that one month ... maybe a bit severe). I may try weekly feeds instead of monthly feeds to help alleviate the stress load.

Not sure, but it's gonna involve cron (gah). Right now I'm writing the XML format to store hit logging report data. Once I get the XML format done, I'll get the writing script done and then I'll have to write the retrieval/outputting on the Tabulas server.

Lots of fun stuff coming up. Also been hacking together a XML format to store tokki files.
Posted by roy on January 11, 2004 at 09:27 PM in Web Development | Add a comment
I remember back in the day (middle school and high school) I would always run that feature in Microsoft Word that would return the "grade level" your document was at ... and I would always be ecstatic when it was higher than my grade level.

I also remember how I used to make an effort to not write passive sentences.

What the hell are passive sentences anyway? Gah. Stupid grammar punks.
Posted by roy on January 11, 2004 at 11:26 PM in Ramblings | Add a comment
Get your free Tokki accounts while they last; I'll probably be closing off free registrations for some time while I refocus the purpose of the site. BUT BECAUSE I LOVE ALL OF YOU SO DEARLY, I'LL LET YOU GUYS GET YO FREE GROOVE ON.

TokkiProject.com: A free place to share images.

Tell all your friends, whatever. You don't have to use it, but just register an account before I close off registrations ;D

Oh yeah, I may ask for some feedback if you get an account down the line as I add/remove features.
Posted by roy on January 11, 2004 at 11:36 PM in Web Development | 6 Comments
Most of you probably ignored my post regarding FOAF. But boy am I glad I did it ... there's a new site called PLink.org which is still in its beginning stages but looks promising. It basically crawls through FOAF files and just outputs it into something pretty. Check out my Plink.

One feature that I thought would be so cool is to have a site like plink (that already crawls sites and stores metadata) to grab the RSS feed off of the foaf:weblog resource off all the sites that know me and that I know based on FOAF files and then generate an OPML. The OPML file could then be dropped into a site like BlogLines so I can instanteously see all the posts of all people who I know and who know me.

Non-nerd explanation:
You know your friends page? How nice would it be if you could generate a "friends" page for sites not within Tabulas? What if, from one page, I could see all recent posts from all my friends at LiveJournal ... and my friends who have their own websites?

It's possible with RSS. The problem is that I still have to manually define WHERE the RSS files of all my friend's journals are ... but FOAF helps with that. FOAF defines where my friend's journals are ... and if a website can search through my FOAF file and generate a RSS file (the file generated is called an OPML file) ... then you just view all your friend's posts from one page!! So fast!

I currently read about 30 webpages from one website ... kind like my Tabulas friends page, but these websites are completely separate from one another.
Posted by roy on January 12, 2004 at 12:13 AM in Web Development | 3 Comments
So apparently I had left my AM plug-in off since forever and just forgot to enable it. No wonder none of my posts tell you what crappy music I'm listening to. WELL IT'S BACK. AND DO I HAVE A THRILLER SONG FOR YOU!!!!!!!

I'm rewriting code (such is the story of my life) for the calendared hit log. Now the funny thing is I had to look over the code for the calendar generating feature, and I had absolutely no clue what I was doing. I'm not even really sure how the calendar generation works. I'm such an idiot. I wrote the friggin' script and I dunno how it works.

Alas, the crappiness.

I think I've decided to take a stab at OPML; I'm going to try to generate an OPML file for each Tabulas user based on their links/friends page ... this should be rather interesting. That OPML file can easily be dropped into Bloglines and be used to cache a large number of RSS feeds.

Maybe if I'm even feeling bold I'll try to set up a site based on FOAF dump files (thanks Jim for the dump files) that will crawl through the foaf:weblog attributes of a user and his/her friends and generate an OPML file for that user.
Currently listening to: Melanie C's I turn to you
Posted by roy on January 12, 2004 at 11:31 PM in Web Development | 2 Comments
Currently feeling: depressed
Posted by roy on January 13, 2004 at 01:33 AM in Personal | 2 Comments
Over the past few days, with the assistance of the infamous Tony Lee, I installed a trojan virus on my roommate's computer that let me remotely control it.

You can read all about the antics at on his Tabulas.

YOU MESS WITH THE BEST, DIE LIKE THE REST.

tony lee's response:
HeY iTs ToNy LeE: Lesson #1 of being a ninja:
HeY iTs ToNy LeE: STEALTH AND BLAME OTHERS
HeY iTs ToNy LeE: you have done well my son
HeY iTs ToNy LeE: go in peace kimosabe
Currently listening to: 2PAC's My Closest Roaddogz
Posted by roy on January 13, 2004 at 09:12 PM in Ramblings | 1 Comments
If you use AOL Instant Messenger and your friend is afflicted with that stupid BuddyPicture.net link virus crap, here is how you get rid of it:

1.) Start the Windows Task Manager:
- For Windows 95/98/ME, hit ctrl+alt+delete
- For Windows NT/2K/XP, hit ctrl+alt+delete and then click the PROCESSES tab
2.) In the list of programmings running, select and end: a.exe, av.exe, b.exe (not all of them may be running)
3.) Quit this and then go to Start > Run
4.) Type in 'regedit' (this opens your Windows Registry Editor)
5.) On the left pane you'll see a lot of folders. Hit the plus sign next to HKEY_LOCAL_MACHINE.
6.) This should expand the folders .. you should see the "SOFTWARE" folder. Hit the plus sign next to it.
7.) Then navigate to "Microsoft" folder, then to "Windows", then to "CurrentVersion", then to "Run."
8.) In the right pane, see if there's a file that calls itself "antivirus." Delete this file (select the file and hit delete)
9.) Close out of this window and restart your computer.
10.) Go "My Computer," then to "C:" ... you should see in that folder a.exe, av.exe, or b.exe (or all three). Delete these files.
11.) Then navigate to C:Windows (for Windows 95/98/ME) OR C:WINNT (for Windows NT/2K/XP)
12.) Find a.exe, av.exe, and/or b.exe. Delete these files.
13.) Start Microsoft Internet Explorer, then go to Tools > Internet Options > Programs
14.) Hit the "Reset Web Settings" option.

Now, for future prevention, do NOT download files when prompted by Microsoft Internet Explorer. EVER!!!!!!
Currently listening to: No Use For A Name's Let Me Down
Posted by roy on January 13, 2004 at 10:54 PM in Ramblings | 4 Comments
Because I care, I'm going to make this community moderated for users; I want only photography-geared posts in this community. If you'd like to join, please feel free to contact me in my main journal; joi and I'll verify you in.

Thanks :)
Currently listening to: AFI's Girl's Not Grey
Posted by roy on January 15, 2004 at 12:01 AM in Ramblings | Add a comment
Wow things in Tabulas are starting to stabilize a bit; the bugs are getting spottier and spottier ... I feel that the development is starting to plateau a bit ... and with all the recoding I did with some of the older stuff, Tabulas is looking like a very solid product.

Of course, one thing really troubles me; there was a few users who would report that they could 'access' other people's accounts randomly. I'm not sure how this would work since each user is generated a unique md5 hash that is stored in a cookie and that links to their userid; the only way they could access other accounts would be if the site generated two similiar session hashes (but there is code preventing that). No one's reported it for a while ... but I hacked up a bunch of extra "tracking" features that I've been using to see how that's happening.

I spent a lot of time reworking the communities features. It's starting to come together; a lot of the functionality is there, but the UI is really messy and it's throw together haphazardly. Hopefully as soon as I'm done with all the community features (soon) I'll be able to fix up the UI of the control panel.

I added RSS feeds to all communities ... I'm really hoping I can introduce Tabulas members to the beauty of RSS. I really think RSS is lovely and so convenient. Hopefully my love for RSS will be pushed onto others ;D.

The next "big" problem (besides the styling issues that plague Tabulas) is tackling the RSS parser. In my haste to get features done, I didn't write a proper PHP RSS parser. Each time I generate a RSS feed for a user, I hit the database 10 times. For each community, 5 times. Since a lot of entries are posted to multiple communities, you can see why this is a problem (each entry posted to 5 communities means that the RSS generator hits the database 35 times).

Ideally the RSS generator would throw the whole RSS feed into memory, pop up the oldest entry, and hit the database once and add that lovely entry in and pop the RSS file back out to the hard drive.

Well, right now I'm just trying to get it work. As long as I'm aware of the problems and I know how to fix them, I should be ok. Since I had implemented a bunch of features that reduce the work on the database from the display end of Tabulas (e.g. each user's Tabulas), the database can handle all those queries fine ...

There is also now a separate page for each user that lists all entries posted to communities they are a member of, kind of like your friends page (you can access yours off of /~username/mycommunity.html). Originally I was thinking of having all communities come out on your friends page (ala Livejournal), but ultimately decided that was a bad idea. To me, communities represent interests ... while your friends page should be restricted to keeping up with your personal friends. Since many Tabulas members seem to be in a lot of communities, an information overload was probably going to happen for a lot of journals.
Currently listening to: Rancid's Fall Back Down
Posted by roy on January 15, 2004 at 01:13 AM in Ramblings | 10 Comments
There's a really good article by Paul Davies about his idea on cutting down costs to sending a manned mission on Mars: Make it a one-way trip.

The concept is you send an initial core team to colonize Mars; you send them resources and food every two years and get them to be self-sufficient. Once they are self-sufficient, you can expand on the colony and bring in more people.

I know that there are people out there that would die for this type of opportunity; to have the chance to go to Mars and become a trailblazer ... your name would be written in the annals of history ...

Of course, there is a high probability that you would die, but going into space itself is a huge risk that all astronauts are aware of and accept ...

But imagine if this *did* happen. Imagine how exciting it would be for everyone; for those political scientists who can try to set-up a new governmental system (democracy is probably *not* going to be effective in a place like that) ... and for those scientists who can do real-live experiments and can go explore Mars.

I'm just hoping that this plan will come to fruition and will happen within my lifetime. Those guys at NASA are so smart; they deserve more money to make things better for the human race ... not to be tied down by politics and economic incentives. It would truly be a great human accomplishment to pull off something like this ...

Humans are naturally curious, and understanding our role in the universe can help us become a better society. Wishful thinking, I suppose.
Posted by roy on January 16, 2004 at 03:42 PM in Ramblings | 3 Comments
I don't ask for comments in my entries cause they're usually crap, but I do need some guidance on this matter.

Tabulas has gotten to a point where there are some "philosophical" questions need to be answered in regards to censorship.

This problem was brought up through a friend who's 14 year old brother found a Tabulas journal which was offensive. In the context of this post, I'm going to reveal the URLs.

*WARNING* THE FOLLOWING IMAGES CONTAINS PARTS OF THE FEMALE ANATOMY WHICH WILL BE OFFENSIVE (Image 1 Image 2) *WARNING*

ARGUMENT #1: TABULAS MUST PROTECT THE MINORS WHO USE THE SITE BY CENSORING SUCH IMAGES.

There is no argument that the first image is outright offensive. No one disputes this. However, do I have the right to go into that person's journal and delete that image?

If the only problem was minors being exposed to pornographic images, the answer is simple: Simply state a rule saying, "No pornographic images on Tabulas." Problem solved.

However ...

PROBLEM #1: ENFORCING CENSORSHIP RULES REQUIRES THE CREATION OF A TABULAS "POLICING" FORCE

In order to enforce the rules of Tabulas, you would have to set-up a policing force. Obviously it would be impossible to do pre-emptive screening of images to Tabulas, so each issue would have to be dealt with on a case-by-case basis based on complaints. However, what judgements do you use to determine whether an image is offensive? Some would find the second image linked above as enough to get it banned, but others might find it ok.

In any case, you would have to use the judgements of the policing force. But what restrictions do the policing force have? They will potentially have the option to edit/delete images from your Tabulas at will. Do you really feel comfortable doing this? Who polices the policing force?

Furthermore, where do you draw the line? What if an image posted is made friends-only? And what if no one in the friends list is a minor ... but one still finds an image offensive? Do you remove that image?

PROBLEM #2: WHERE DO YOU DRAW THE LINE ON WHAT TO CENSOR? (ALSO KNOWN AS THE "SLIPPERY SLOPE" ARGUMENT)

So today we decide that pornographic images will be reviewed by the Abuse Team. What if tomorrow someone finds a post that is anti-Semitic in nature? Is that protected under free speech, or do we make our TOS inclusive to protect against racial slurs?

Then what if tomorrow someone finds posts that are not offensive to groups of people, but to an individual? Say ex-boyfriend John starts posting sex stories about his ex-girlfriend Jane. Do we empower the Abuse Team to handle (petty) disputes between members?

Simply put, where do you draw the line between what you censor and what you don't? And once you start indicating you're willing to censor material, how do you tell people that you're not willing to settle disputes between members? Personal attacks can fall under the umbrella of "hateful speech."

What criteria do you use to censor the material? Obviously pornographic images are harmful to minors, but what if someone's Tabulas is geared towards older audiences and includes pornography? Do we have a right to censor stuff like that?

My take on the whole issue is akin to Pandora's Box: Don't go there. Once I indicate I want to start censorship of material, I open myself up to all sorts of censorship requests from all sorts of members. And that is something I don't want to do.

Tabulas is *not* a site that controls the flow of information; the very creation of features like RSS and (soon-to-be) Tabulets is meant to publish the information as many formats as possible so that it will never be lost (unless you choose it so).

PROBLEM #3: DO WEBSITES HAVE THE RIGHT TO CENSOR MATERIAL?

From a legal standpoint, the answer is an absolute yes. You do not have free-speech rights on private websites. Most websites are geared towards specific purposes (whether it be game reviews or a fansite for some hot celebrity.); these do not benefit from no-censorship mentalities.

However, journaling sites are quite different. There's an assumed inherent social contract. I *could* start reading everyone's private journals using some sort of superadmin backdoor. I *could* publish everyone's e-mail on the web and let spamming bots grab them. However, as long as that bond of trust isn't violated, you continue to write private entries.

But the point is, I don't. And that gives you guys a peace of mind that whatever is posted on Tabulas is respected. If you choose a friends-only mode, it comes out like that. I don't go around adding myself as your friend just to read your posts.

The "bigger picture" includes your belief that what you write will be respected, regardless of its hateful nature or whatnot. What if you knew every post you wrote or every image you posted could be reviewed by someone and put offline without your consent? It would be damaging to the way you journal.

Certainly a lot of you don't journal that seriously so these aren't issues, but there are plenty of people who write journals on sensitive topics that would worry plenty about any type of censorship.

At this point, I am too reluctant to start a policing force. However, my mind is open to change if I can hear something that might change my mind.

Please give me your comments on this topic ...
Posted by roy on January 16, 2004 at 06:27 PM in Personal | 21 Comments
What a kickass weekend for Carolina sports. UNC beat UConn 86-83 in a last-minute game ... quite wonderful. Now Duke is #1, but I really don't mind. Duke has a sick team and they deserve the #1 rating even though I hate most of the Duke team and detest Coach K. UConn is a great team, but they rely too much on Okafur ...

And then the Panters just KILLED the Eagles 14-3 in a game where the Panthers never trailed ... it was one of those beautiful game where the Panthers KILLED the Eagles.

Of course, this victory would not be as sweet if my hated enemy roommate Sungjin was not a Philly fan. The crap he talked during the season after Philly squeezed out a victory against the Panthers during the regular season ... guess who got the LAST LAUGH, SUNG?!

Since he was gone, I took the honor of changing his computer desktop to one I thought was more fitting. I've attached a smaller copy below ...

Beautiful.

Currently listening to: maroon 5's this love
Posted by roy on January 18, 2004 at 08:53 PM in Sports | 5 Comments
Thanks to everyone who responded to my censorship post. Although I barely replied to any of the topics, I did take a long time reading everything and weighing all the arguments.

I think the best thing to do is basically just "cover my ass" by stating that there will be offensive material on Tabulas. I have added a short TOS to the registration page; I'll make it more "legally binding" or whatever in the future if I can ever afford a lawyer to do that type of stuff.

However, I haven't decided how to handle offensive images short of simply deleting them. I'm thinking of setting up an abuse team that'll handle complaints; the process will probably be slow, but it'll be better than nothing. I'll probably set-up the abuse team sometime within in the next week.

. . .

It's nice to be appreciated for some of the stuff I do ... :)

Posted by roy on January 19, 2004 at 04:03 PM in Ramblings | 5 Comments
Had a late last night, putting the finishing touches on the usericon offloading; the usericons are now served from a separate server so that the Tabulas server won't be so heavily loaded; I was quite surprised how smooth the transition was.

In any case, I got to work a bit on Audiomatch; Neeraj has been hard at work on similar artist and matching different artists (you know, since IDv3 tags on MP3s are imperfect) ... and finally you see the fruition of it all. Check out my Audiomatch page. Here, check out one of the songs I've listened to. Nothing remarkable ... but here is the cool part. If you click "Five for Fighting," it'll take you to a page with similar artists like Jason Mraz. Following the logic of the site, Five for Fighting is similar to Jason Mraz, which is similiar to John Mayer, which is similar to Jack Johnson, which goes to Coldplay/Dave Matthews Band... pretty darn accurate!

Of course, the tolerance of the matches can always be tweaked; the raw scores for the matches are kept in the database, right now I'm just creating a threshold to cut the scores off at; it's a pretty low tolerance, which is why some matches seem weird, but as the database grows larger those anomalies should dissappear.

But this marks a great day! I'm actually done with the things I wanted to work on Tabulas; things are *finally* starting to stabilize in terms of features and functionalities. I know the styling of Tabulas (the way styles are output) are atrocious ... but I've finished most of the "small" things that have been bugging me.

And with this some AM work done, I can get to work on my neglected TokkiProject :D
Posted by roy on January 20, 2004 at 01:30 PM in Web Development | 1 Comments
You know, the State of the Union address would be so much better if people would stop applauding after every sentence. We get it. You love to kiss your own ass. WE GET IT.

In my attempt to avoid watching the State of the Union (summary: "we kick ass. vote for me!"), I was flipping through the channels ... and I managed to catch a few minutes of South Park. Eric was giving a speech to Congress about how stem cell research could help his "best" friend Kenny. Cartman was getting all into it and crying ... and then he ends it by saying, "You know, I'm not a great speaker. Maybe I can better summarize my feelings through a timeless song."

He starts singing Asia's "Heat of the Moment." And then Congress starts singing along.

I don't know why, but I just started laughing like an idiot.
Currently listening to: Asia's Heat Of The Moment
Posted by roy on January 20, 2004 at 08:03 PM in Foolishness | 5 Comments
Neeraj and I were discussing the possibility of making Audiomatch a pay service. The problem with Audiomatch is that although it's a great free service, it's a very costly service to run. The service runs off of our central server, and all users send data to the server at a constant rate (people who use Winamp *really* use it a lot).

We managed to survive off of donations for a while, but there just reached a saturation limit with the users where donations simply couldn't cover the costs.

So why would anyone pay for Audiomatch? I'm expecting no one would pay for it right now. But if we can get a revenue stream up, we can buy more hardware, and then the real cool features can be released. Right now the Audiomatch DB server is actually a shared server (the tabulas DB is on there as well) so I can't really push the features; I have to limit myself by remembering that using too much CPU on the audiomatch server will force Tabulas to suffer, and vice versa. And since many assholes refuse to pay for their awesome TABULAS, I'm not really making enough money on Tabulas to help support other projects.

But in general, I want to build in more features to Audiomatch to make it *better*. Some things I want to do:
- better image generation control (want to plaster your songs behind an image? sure!)
- xml generated reports (for parsing)
- offsite "posting" (so you can install your own site script to handle output)
- full "reports" (right now the databases are dumped out every few weeks because they are getting too big; it'd be nice if we could generate a full report of what each user listened to before the databases were dumped).

I'm thinking right now $5 for a year of AM service would be a very reasonable price for the new features we'll be building in. That would help us buy more servers and make Audiomatch less of a drain on my personal finances ...

But yeah. We're shooting to execute everything in about 5 weeks. New features, new look, new billing ... etc. etc.
Posted by roy on January 20, 2004 at 11:01 PM in Ramblings | 6 Comments
TokkiProject is going to be known as Lightbox7. Originally I wanted Lightbox, but the owners wouldn't sell, and you can see it's being well-used.

In any case, I tried to do too much with TokkiProject. It tried to be a hybrid between a photographer's site and the casual digital camera's owner.

I've decided to try to scale things back with Lightbox; it will be geared towards the digital camera owner who wants to share his or her pictures online. The photographer's site can come later once I have the resources and the "brand name recognition."

The big key for Lightbox is for ease of use; the control panel UI has to be incredibly easy to use. The features have to be "dumbed down" ... but the big critical thing is that it *must* be interoperable (at least in a one-way relationship) with Tabulas.

It must also be able to syndicate data via XML (maybe Atom?) ... it would be nice to build a frontend PHP app that would interact with Lightbox and serve images off our server but be parsed on someone's personal domain.

So the goals of Lightbox (in order of importance):

1.) Be an easy place for the casual digital camera user to be able to upload images.
2.) Interoperate with Tabulas for photo "archiving"
3.) Full syndication of data that can be parsed with a home-written app

Hopefully Borst will sign on to build a C# app that can work as a drag-and-drop interface for the site.
Currently listening to: Fuel's Falls On Me - Album Version
Posted by roy on January 20, 2004 at 11:20 PM in | Add a comment
HRRRRMMMMMMM.

. . .

I managed to find the soundclip of Cartman singing "Heat of the Moment" with Congress ... (previous entry).

Go to my content page and download it ;). It really is funny.
Currently listening to: maroon 5's Sweetest Goodbye
Posted by roy on January 21, 2004 at 12:54 PM in Ramblings | Add a comment
if there's one thing time has taught me, it's that my milkshake brings all the boys to the yard.
Currently listening to: Daft Punk's Da Funk
Posted by roy on January 21, 2004 at 05:16 PM in Foolishness | 2 Comments
Man, sometimes I just feel so lonesome. I guess it's a part of growing older ... the feeling of being "alone" in the world. I fear that I won't find that one person I'll be able to click with and be able to spend the rest of my life with ... to find that person to who can share my burdens and my joys during the highs and lows of my life.

Sometimes I'm very cynical when it comes to girls. I think they're pretty much the same. But who am I kidding? I'm not that different from most of the guys I know. I'm not unique, yet I long for a unique girl who will make my life special.

Maybe it's just a futile search.

All I know is I've just pent up a lot of feelings lately. I don't really have a release ... no one cares or understands half of what I ramble about (technical computer stuff) ... and the other times I feel my problems aren't enough to burden my friends with.

I definitely feel my journal has grown cold and non-personal; half the time, it reads like a .plan and the other times it's just random foolishness I spout to fill the void of the journal ... like a clean blackboard that needs to be written on, I feel the need to write in the journal.

So I'm going to try to commit myself to write more about my personal stuff on here ... to those casual readers, don't worry, I won't force you to get Tabulas and get me to add you as a friend; my entries are almost all public (regardless of their sensitivity).

It's a lonely world.
Currently listening to: maroon 5's She Will Be Loved
Posted by roy on January 22, 2004 at 01:48 AM in Personal | 7 Comments
I've always been quite amazed with icons. They're so simple and graphical, yet they hold so much punch.

A good icon is understandable beyond cultures so the language barrier becomes irrelevant. They also save a lot of real estate on a website by not wasting vertical and horizontal space with unnecessary words ... plus a lot of words on a webpage just turns people off (who wants to spend their whole time reading a website just to navigate it?)

I've always experimented with icons throughout my various projects but I always end up scrapping them simply because they suck. They require too much of a commitment ... plus you also got the headaches of making unique icons that can still be learned by your users.

The reason I talk about this is because I spent about 2 hours making 5 or so icons for a new site. I'm quite proud of them (they're adapted from existing icons, so I'm not horribly original) ... but we'll see how well they hold up when I open the site up for testing and people go, "what the hell does this icon do?"

Ah, the joys of having a legend ;)
Currently listening to: Maroon 5's This Love
Posted by roy on January 22, 2004 at 11:19 PM in Web Development | 1 Comments
I'm in over my head. related news, kinda. tokkiproject closes doors.
Posted by roy on January 23, 2004 at 12:27 AM in Ramblings | 7 Comments
In philosophical, the person who takes the 'obvious' side is always the loser. It's almost like really smart people wait for people to take the 'obvious' answer so that they can spring on them new way of looking at the same problem.

So never take the obvious side in a philosophical argument. You will lose.
Currently listening to: Group X's Pay For Your Gas or Loose Your
Posted by roy on January 23, 2004 at 06:05 PM in Ramblings | 1 Comments
Woo, a break from the exciting world of the Democratic nominee (slogan: "We will lose to Bush and bitch about it in 2004").

(A small aside to clear up any political issues: I hate Dean, I hate Edwards, Clark is such a opportunist. I hate Kerry the least (he hasn't really done anything that I hate, and he does seem more geniune than the others). I like Sharpton (he's so colorful)).

Ok now ... my roommate, Matt Compton (SBP website here) from sophomore and junior year is running for student body president at Carolina.

Now, there are very very very few people in this world I would personally vouch for, but Matt Compton is one of those few people. He is geniunely a man interested in the welfare of the University and its students. He is also a workaholic (who does know how to kick it back to some Gumby's and DVDs ;)) who *will* work to get what you want done.

He's well-schooled in the "poliitical" process at Carolina; he's been in countless student organizations ... so he is quite experienced. What he says he can get done he knows from experience ... count on him. He's also not one of those nerdy anti-social booktypes (like me)... he's quite sociable and is a great "people person." So trust me. He's awesome.

I can guarantee you that there is not a guy or girl running for SBP who deserves it more than Matt.

Just go check out his website ... and vote for him. I will be IMing all you dirty bastards on February 11th to see if you voted for him. EVERY VOTE COUNTS.

You'll get a few more reminder posts once the election date draws near.
Currently listening to: Dispatch's The General
Posted by roy on January 24, 2004 at 03:24 AM in Ramblings | Add a comment
While reading over the last post, I entirely forgot the purpose of the post was to let you guys know that I had made that website design ... it's actually a thing of real beauty (not just aesthetics-wise).

When I was first asked by Matt to do his website, I originally had planned to run the site off of my servers (so I would have access to PHP and mySQL). However, the school wouldn't let us host it on my servers, so I had to host it on UNC's awesome servers ... which originally I thought had no scripting capabilities.

So when making the site, I decided to finally adhere to standards and make a completely XHTML 1.0 Transitionally-valid site that was based solely on CSS for styles. After getting some help on #css on freenode, I finally got the CSS design done; I was pretty surprised how easy it was!

In any case, I decided to also use some of the stuff I learned from SimpleBits and make the HTML as semantically correct as possible.

And the end result? That wonderful website! I'm really proud on how clean the site's design is ... as well as its code. The coding really is *REALLY* need. The site complies with all accessibility guidelines, XHTML 1.0 standards, and CSS 2.0 standards. My first completely standard-oriented website!

But it was real fun to get back to just doing static HTML webpages. I've spent so much time fixing up database bottlenecks, rewriting PHP scripting, and planning website architectures (scaleability and such) that it was such a nice trip down memory lane.
Currently listening to: No Use for a Name's Life Size Mirror
Posted by roy on January 24, 2004 at 10:30 PM in Web Development | 6 Comments
Microsoft reported revenues of $11 billion dollars for this quarter.

Wow.

. . .

I recently panned over $14 to buy Maroon 5's latest CD, "Songs About Jane."

I am loving this CD ... I highly recommend it to anybody who likes the Ben Fold flavor with some funk... try downloading "This Love" and "Sweetest Goodbye" to get a taste of their music. Lovely stuff.
Currently listening to: Fountains of Wayne's stacy's mom
Posted by roy on January 25, 2004 at 07:54 PM in Ramblings | 2 Comments
I need to learn how to dance from this dude.

Break it DOWN, FUNKY WHITE BOY!
Posted by roy on January 26, 2004 at 07:28 PM in Foolishness | 1 Comments
There's some amazing photography by Chema Madoz that I've forgotten to write about at least 10 times.

I love his style ... simple yet requiring exploration. Check it out.
Posted by roy on January 27, 2004 at 01:09 AM in Photography | Add a comment
10 Mistakes Writers Don't See (But Can Easily Fix When They Do).

Man, I do so many of these things; as a person who keeps a public journal, I should always be striving to improve my writing style. I've let my skills go down the drain (assuming my ego inflated self-views of past writings are true...), but I'm going to work on them.

One of the clear benefits of keeping a journal that I maintain on a semi-regular basis is that my writing improves. It also helps my communication skills ... I think. And my (lack of) humor. HAR AHRAHR AHR AHRAHRAHRAHR.

By the way, I removed my tagboard because I got tired of it; I much rather have people post comments so I can get an e-mail :).
Posted by roy on January 27, 2004 at 09:58 PM in Ramblings | 4 Comments
The color photograph below was taken in 1911.


Now remember that color photography didn't hit the market until the mid 1930s with Kodachrome ... although color films did exist before then, they weren't wonderful.

When I saw these pictures, I nearly shat my pants. I've always adored black and white photography, but there is something captured by color (I think for historical pictures, color is a lot better, but for artistic purposes b&w is a better medium) ... so to see these wonderfully VIVID pictures from the turn of the century ... to see what life REALLY was like back then ... is awesome.

I showed this to Chris and he got excited to. To really glimpse into the turn of the century ...

So how was it done? The photographer responsible for these prints is Sergei Mikhailovich Prokudin-Gorskii, who gained permission from Tsar Nicholas' II of Russia to take a survey across Russia ...

Basically he used b&w film, but would take the same picture three times (using a red, green, or blue filter each time). Sometime after WWII, the Library of Congress bought all his prints ... and then recently using some newfangled technology (digichromatography), they were able to add color to his pictures which only contained b&w films.

Amazing for the photographer to have the foresight and patience to take each picture with three different filters ... and amazing for the man who invented digichromatography. I'm interested in going out with Tri-X and seeing if I can do some digichromatography at home ...

Check out the pictures at the official website. It's really amazing ... the story and the images.

GOGGOOGOGOGOGOGOGOGOG. I know you want to waste time!
Posted by roy on January 28, 2004 at 12:38 AM in Photography | 11 Comments
Some random lessons I've learned when scripting in PHP.

Constants are the bomb. I've been using the define() function in PHP to define session variables across the board; no more need to define "global" variables or use some ugly hack with (real) global variables.

Originally I thought the limitation of the constants were that they couldn't store anything other than strings and variables; they couldn't store hashes.

But I found out that if you use the serialize() function in PHP, you can convert a hash to a string (of sorts). So then simply store this as a constant, then unserialize() it when you need to grab the data.

A real application of this has been for the generation of lists. For example, let's use the TokkiProject website (the hyori gallery is a good example).

Right now, on each page's generation, the script hits the database many times to grab the imageids for a given albumid. Let me give you a graphical view of the database in question:

---------------------------------------
| IMAGEID | ALBUMID |
----------------------------------------
| 2 | 1 |
| 4 | 1 |
| 234 | 1 |
----------------------------------------

So for each page generation in Tokki currently, the database gets hit three times so I can generate the "next image," "previous image", and the page navigation on the bottom.

This is bad practice. The albums aren't updated that often; ideally the "total" imageid listing should be stored somewhere more static. With a large gallery like hyori, I would imagine the database gets hit about 1500 times PER page generation.

So if we were to create a hash of the imageids (call it TOTIMAGEID) and store it someplace (memory? flat file? db? it's irrelevant) with a timestamp ... upon every page view, we could bring up the timestamps of the last updated time for the album and the timestamp for the TOTIMAGEID) and do a quick comparison. If the album has been updated, *then* hit the database and update the imageids. Otherwise, just use the exiting TOTIMAGEID.

With serialize(), it's really easy to just take that hash and store is a string somewhere. Wooooooooooo.
Currently listening to: Ben Folds's Hiro's Song
Posted by roy on January 28, 2004 at 02:34 PM in Ramblings | Add a comment
Why does a young girl get X-ray vision while I only get the power of dorkitude :(
Currently listening to: Ben Folds's The Luckiest
Posted by roy on January 28, 2004 at 02:41 PM in Ramblings | 2 Comments
Very interesting statistics from Tokki. Even when keeping the original files, a resize image, and a thumbnail image, we get an average filesize of 160K per image (I'm going to boost this number to 185K because there are some extra files stored for each image).

I originally thought it would be more along the lines of 300K conservatively ... this has a deep impact on what I consider the commercial viability of an online gallery site.

Let's assume for a minute that you launch a online gallery site. You offer 1200 images for a paid account. For the moment, let's simply assume that we are worried about the costs of such a service. Let us also assume that bandwidth is not an issue, but hard drive space is the main constraint of such a site.

With 1200 images, the total hard drive space is roughly 222 megs. Conservatively, we can assume a typical image gallery storage site will be working roughly 80 gigs of HD space (the real space would be 160GB, but we're RAIDing the two hard drives for backups sake). That means we can run roughly 350 paid people per server. Therefore each user must pay roughly $0.40 to pay for a server. With taxes and unexpected charges ("the costs of running a business"), we can expect a charge of roughly $0.75 per user to pay for a server.

Of course, such a site would have tons of free users, so that cost goes up a lot.

But this is very interesting. I thought the economics on such a site were a lot worse.
Currently listening to: ben folds's Annie Waits
Posted by roy on January 29, 2004 at 03:17 PM in Web Development | 2 Comments
About to go out and get some coffee to clear out my mind, but before I leave, lyrics from my new favorite song...

good morning, son.
i am a bird
wearing a brown polyester shirt
you want a coke?
maybe some fries?
the roast beef combo's only $9.95
it's okay, you don't have to pay
I've got all the change

everybody knows
it hurts to grow up
and everybody does
it's so weird to be back here
let me tell you what
the years go on and
we're still fighting it, we're still fighting it
and you're so much like me
i'm sorry

good morning, son
in twenty years from now
maybe we'll both sit down and have a few beers
and I can tell you 'bout today
and how I picked you up and everything changed
it was pain
sunny days and rain
i knew you'd feel the same things

everybody knows
it sucks to grow up
and everybody does
it's so weird to be back here.
let me tell you what
the years go on and
we're still fighting it, we're still fighting it

you'll try and try and one day
you'll fly away from me

good morning, son
i am a bird
it was pain
sunny days and rain
i knew you'd feel the same things
everybody knows
it hurts to grow up
and everybody does
it's so weird to be back here.
let me tell you what
the years go on and
we're still fighting it, we're still fighting it
oh, we're still fighting it, we're still fighting it
And you're so much like me
I'm sorry
Currently listening to: ben folds's Still Fighting It
Posted by roy on January 29, 2004 at 09:28 PM in Music | 1 Comments
Godwin and I were playing a "consolation" poker match heads up. We've been playing for $1 after the normal game ... last time I won and wrote "Godwin's Pride" all over the dollar bill. Haha.

After about 20 minutes of battling, we were both dead even in chips (down to the penny!) ... I caught pocket 66 and he caught AQo.

I went all-in ... and he followed. There was no going back; someone was going to win the game once and for all here.

Pocket pairs against overcards are pretty much even (slight advantage to the pocket pairs), so we were both pretty relieved to see each other flip over our cards.

The flop comes:

9 Q 6 (in that order). Godwin was ecstatic to see the Q ... and then I saw the 6. At this point, I am *far* ahead in the hand and there is almost no way for Godwin to win. The only way he's going to win is if he catches two 9s on the river or if he catches two Aces. This means that he has only 4 cards in the deck (and he needs to catch two of them consecutively).

If you calculate the odds, Godwin has a 0.8% chance of winning ... he'll only win this hand once every 125 times he plays it.

And guess what?

The turn and river come 9 and 9. He catches a boat (9s over Queens) while I catch 9s over 6s.

That was an amazing hand ... right down to the wire.

Good hand Godwin. You finally won your pride back.
Currently listening to: Ben Folds's Fred Jones Pt 2
Posted by roy on January 29, 2004 at 11:38 PM in Poker | 1 Comments
Why do I not like Howard Dean?

He's such an opportunist, and someone has done the dirty work to prove it.

(It's a blog entry from an Iraqi).
Currently listening to: Hans Zimmer's The Jablonsky Variations on ..
Posted by roy on January 30, 2004 at 02:18 AM in Ramblings | Add a comment
There's something very odd about the child photographs done by Loretta Lux, but they are still very well-done.

I know this may sound horrible, but I would like to have my kids get a few pictures taken like this. It seems so ... surreal.
Currently listening to: Ben Folds's Still Fighting It
Posted by roy on January 30, 2004 at 04:03 AM in Photography | 4 Comments
I just got out of chem lab and I think the methacrylic acid is making me dizzy still.

2. Effects on Humans: Methacrylic acid can affect the eyes, skin, and immune system in humans [ACGIH 1991]. Exposure to methacrylic acid vapor may produce skin and eye irritation [Patnaik 1992]. In a case study involving 37 acrylic acid resin workers, methacrylic acid caused sensitization in a few of the workers and thus appears to be a sensitizing agent [ACGIH 1991]. Skin toxicity and a severe corneal burn were observed in a population of workers exposed to up to 113 ppm methacrylic acid [ACGIH 1991].


Yum. I better not become impotent.
Currently listening to: Backstreet boys's Everybody
Posted by roy on January 30, 2004 at 02:50 PM in Ramblings | 3 Comments
I want to love Kerry. I really do. He does look presidential, and he doesn't stutter and look funny everytime he talks (I just laugh thinking about Bush talking, sorry).

After watching a little bit of the SC forum for the Democratic candidates, I was pretty impressed with the way Kerry handles things. He comes off as a cool, collected, intelligent man.

So I gandered over to his website to read up on his policies, hoping to find some common thread ... and I found nothing. So I will continue to support Bush and probably vote for him in 2004.

I'm well aware of Bush's shortcomings domestically. His "core values" (his ideas about family and morals) are off-base and I strongly disagree with most domestic policies, but the way he's handled international politics and helped guided the economy (as much as a President *can* help guide an economy) is going to win my vote.

The way I see it, the American society is constantly becoming more liberal and progressive. A lot of these domestic issues that come up today (gay marriages for one) which are frowned down upon by the Bush Administration *will* be overturned over the next decade.

However, I find that we're at a critical point in international relations. We have an emerging power in China while Europe attempts to consolidate under the EU. We finally were the target of an terrorist attack ... and we realized that there are a lot of assholes in the world who hate us.

What we do *this* decade will reverberate over the coming half-century. If we do not make the proper decisions now, they will bite us in the ass ... we need to help eliminate the threats while we can still manage them.

The United States will not always be the sole global superpower of the world; there will soon be a time where we will need to take into more serious consideration the EU bloc and the China bloc.

By taking a stand in Iraq, we are sending a message to the world that we are commited to the causes we believe in; we're not a country of soft action-less citizens. As torn as our country was about going to war with Iraq, when we *did* go to war, we made it a short affair with relatively low losses on both sides.

Although we never found those WMDs, more evidence comes out that Saddam was simply letting terrorists freely roam his country and train there. Whether or not either of these were true, the message we sent to many of the world leaders is: "You're not safe."

It wasn't mere coincidence that Kaddafi decided to change tunes a few weeks ago in regards to being more "cooperative." You never hear about the quiet changes in policy that a lot of countries are taking; you can be sure that now the world *does* listen to what the United States has to say and *does* know that although we do respect multi-national organizations like the UN, we do not feel binded by them.

Now, with that being said, what's my point?

The election of 2004 will effectively determine Iraq's future. And Iraq is far from "safe" now that Saddam is capture. We must continue forging through our plan to rebuild Iraq as a country that is governed fairly (and represented equally by all the ethic groups living there) ... and unfortunately I just don't see that happening with any of the Democratic candidates. If we fail to help Iraq rebuild properly, they will continue floundering as a corrupted nation-state ... but if we support them 100% in their rebuilding, we can accomplish what we did in West Germany and Japan after WWII ... we can make them a global power (they have the potential). We do not want to do a half-assed job and have the Iraqis fall to some fundamentalist group like the Taliban.

Most of what I read from the Democratic candidates' websites basically say they want to hand over Iraq to a broader coalition. Sorry, wrong answer.

France and Germany have a horrendous track record of doing anythign at all. I mean, when's the last time they even intervened positively in another country? The US and its allies must continue with their plan in rebuilding Iraq regardless of the cost. Only then can we be assued that Gulf War II was not in vain.

Domestic issues will be overturned in the long run, but what we do in world politics reverberates for much longer. The tradeoff we're making in the short term (degradation of domestic policies) is definitely worth the benefits we're making in the long run (stabilization in the Middle East).
Currently listening to: Everclear's Santa Monica
Posted by roy on January 31, 2004 at 12:13 AM in Ramblings | 6 Comments
Man, I loved the Peanuts TV specials when I was younger. Anyways, I'm loving this "new" Outkast music video. The syncing is almost perfect.
Currently listening to: Outkast's Hey ya
Posted by roy on January 31, 2004 at 02:37 PM in Foolishness | 1 Comments
« 2003/12 · 2004/02 »