05.03.07
Posted in Life, The Universe, and Everything, Technology at 12:09 am
This is part 1 of 3 of the new computer series, and part 1 of 3 of the new funeral series here on MikeRoberto.com
On December 31, 2006, I was setting up my new bedroom, which also serves as my office, design studio, surfboard storage, hamper, and, of course, seduction palace. I turned on my computer, which was so creatively named “berto”, and noticed the power supply fan struggling to do its job.
Like any other idiot electrical engineer from Ohio State would have done, I decided to test if the fan was spinning by inserting a metal screwdriver into the power supply, thereby electrocuting myself with 120V and creating a small explosion.
And that was it. Berto had died. And this post is dedicated to the death of that 7 year old[1] dear friend of mine.
You are now attending berto’s funeral, and I am begrudgingly giving you his eulogy right now.
Berto was born on December 27, 1999. Hours of preparation went into his creation. This was my first computer being built from scratch, and would be used to forge my new life in college, as well as help me accomplish work for the beloved but now-defunct APK Net (sold to Expedient).
Berto was paid for in half by myself, and half by my parents. He cost $2600 total.
He came with an AMD Athlon 550MHz, 256mb ram, 40GB hard drive, Asus K7M motherboard, Teac 4X CD-R, Tekram 390F SCSI card, Klipsch THX Sound System, SoundBlaster Live! Value Audio Card, Sony CPD-400 Monitor, NVidia 3d video card, and Netgear network interface card. For software, I began with a dual-boot Mandrake Linux (7.1 I believe) and Windows 98 system. It eventually became a dedicated Linux box.
Over the course of time, I upgraded the memory to a whopping 396MB, and got a new hard drive that took me to the maximum supported 80GB, got a new power supply, and melted quite a few video cards due to poor cooling and dusty dorms.
I learned a lot about that purchase over time. Some quick lessons are:
- Find the right price point break when shopping for a processor. I did good with this, the damned thing lasted forever
- Don’t get a $300 video card if you don’t play many games
- Get awesome speakers and monitor, they devalue slowly. I did this and it was great, despite that monitor weighing 500 pounds and costing just as much, it lasted the entire time. I still have Klipsch in my room, and they are just as crystal clear as ever
- Don’t buy cheap cooling or power supplies or expect them to last forever, or they’ll just electrocute you in the end
- Do your research and find good deals with sites such as shopper.com
berto and I had some great memories. They began during construction, and ended with destruction. In between, there were those LAN parties at Larz’s house, CFabe’s house (don’t forget about jello shots with TGould and CFabe!), Arstein’s house, and TGould’s house. Yes, we were dorks, and it was fun.
Bertocam, pictured above, was around for a while, hosted using berto’s Apache server. I have a ton of silly pictures from freshman year, back before digital cameras were hot.
In college, berto became more popular than I did for quite a while. You see, berto somehow managed to collect a massive amount of digital pornographic videos, and his administrator decided to share them on the campus network. Despite being warned by a friend to turn on password protection, my ethernet connection was constantly pegged at 10MBits. Interesting story with that:
I’m home studying on a Thursday night, but the roommates are out partying with some friends of KiRBY’s in the south campus dorms. One such friend, Scott, is there:
Scott: Dude, you guys gotta check out this dude on the network! His name is “Ber-To”.Jon and Jeremy: Oh cool
Scott: yeah dude he’s got all this porn. But one day he turned on his password. So I yelled down the hallway, “Hey, what’s BER-TO’S new password?”
Jon and Jeremy (thinking to themselves): This is starting to sound familiar…
Scott: And my buddy down the hall yells back “the password is JONISGAY in all lower case!!!”
Jeremy: HAHAHHAAHHAA! Dude that’s our fucking roommate! That’s BERTO, not Ber-TOE!
Jon: And I’M Jon! I’m the gay one! (but I’m not gay…)
And hilarity ensues. Scott had been wanking off to a computer that was kept feet within the two guys who he was now drinking delicious Natural Light with.
berto was a trooper. Pegged network connections. Silly websites. Traveled all over northeast Ohio. Put up with numerous drunken kernel panics and botched experiments. He lived in 6 different locations with me, and nearly survived the 7th. That’s impressive.
berto saved the day numerous times with remote desktop capabilities in Linux. His usage as a webserver for the early renditions of bertopics.com and beroline, as well as that of a MySQL and file server were monumental. I even used him to install backorifice on my roommate Jon’s computer and do funky things to his desktop while I was in class.
berto took care of me, and I took care of him. He was constantly playing me music, checking emails, and surfing the web. I was constantly keeping him alive and hooking him up to weird things, such as a remote control for my mp3 player, which I would now be miserable without. He has seen some great changes in technology, and even greater changes in his owner.
And now, he’s gone forever, off to the PC heavens, where he will reign supreme over those who he lasted thrice the length.
I love and miss you, berto, and I will hold you near and dear to my heart forever.
However, it is time to move on. In part two of the new computer series, we will discuss the birth of ‘destroyal’, the latest and greatest in MikeRoberto.com technology.
[1] This is 105+ years old in computer years.
Permalink
04.01.07
Posted in Technology at 10:10 pm
Warning: This post shows how much of a geek I am
Recently, I have begun working with Pligg, which is a Web 2.0 content management system modeled after the popular site Digg.com. I am interested in helping this project as there are a few things I’d like to do with it.
To start learning how Pligg operates, I decided to look at the guts underneath, diagram the Pligg MySQL database, and see what functions are making calls to the Pligg tables. For whatever strange reason, I love MySQL databases, so this was a good place to start.
I then created a Pligg wiki page describing the database tables while linking to the database diagram image and to the original MS Visio file.
I documented the database which is currently in the Subversion trunk — post Beta 9.1 code.
Here are more detailed table descriptions, and have many comments in bold.
- trackbacksMakes sense to me. In libs/trackback.php we can probably change the User Agent on line 88 to pligg instead of meneame (already fixed).What I don’t like is all the indexing going on here. I’m not sure if the indexing is justified. A lot of the indexes do have searches that utilize them, though.Also, phpMyAdmin is telling me that “UNIQUE and INDEX keys should not both be set for column `trackback_link_id`”Suggestion: Fix indexing per phpMyAdmin
- messagesUses kmessaging 3rd party tool. Naming conventions are different, but it’s fine since we’re just using kmessaging’s setup.Pligg was not originally written by English-speaking natives, nor was kmessaging, so watch out for functions spelled “messege” instead of “message”.Note that I’ve linked sender and receiver to the user_id table, but this is not a true link in the database sense. sender and receiver get entered into the messages table in a roundabout way, not through one MySQL call. But the link still exists because the code is checking that the user_id exists in the users table (do a search for the SendMessege function and you’ll see where it gets called… the /modules/messaging/ section).
- configLooks fine, but do we really need an INT type for var_id ? I’m doubting there will ever be 2 billion config options. SMALLINT would be fine (-32768 to 32768, or SMALLINT UNSIGNED 0 to 65535)Suggestion: Change var_id to SMALLINT
- categoriescategory_safe_name takes out spaces and other potentially dangerous stuff.
I was originally confused as to where categories get inserted. I see the insert call in admin_categories.php line 81, but this makes no sense to me:
$sql = “insert into `” . table_categories . “` (`category_name`) VALUES (‘new category’);”;
However, this is seen in dbtree.php
- comments
Pretty straight-forward table. I’m not sure what comment_nick is for. It looks like it’s never used.
Not sure what comment_karma is for either. It’d be nice to understand the karma system better.
Also, I really don’t think comment_votes needs to be an int. I don’t see anyone getting 2 billion votes. Save space because there might be a lot of comments out there, make it a smallint.Suggestions:
a. Remove comment_nick
b. Change comment_votes to smallint - formulasNew in post-Pligg 9.1 svn code. It looks like there’s going to be a new formulas module that you can put your own formulas into.
- friends
Simply keep track of the friend_to and friend_from in the same row. Not sure why this needs to be a display width of 20 though.
- linksEvery link goes in here. Points to the author (the user_id from users), status, number of votes, and a whole ton of indexing which makes sense.
Note that the link_votes will contain number of votes, but more specific vote data will be kept in the votes table.
There is an index on link_url, link_url_title, link_title, link_content, and link_tags. I don’t see the reasoning behind that.Suggestions: Consider removing the index on link_url, link_url_title, link_title, link_content, and link_tags - modulesA stand-alone table to keep track of your modules. See modules/modules_manage.php — it does an INSERT when you install, and an UPDATE when you disable or enable a module.
- pageviewsThis table is going to get a ton of traffic.pv_id is an unsigned int.
pv_type seems to be either story or profile. Maybe some other stuff. Since this is a varchar, this is going to be horribly wasteful. Why not an enum for this column?
pv_page_id is either the user_id of the user if you’re looking at someone’s profile, or it’s the link_id if you’re looking at a story. Used by out.php, story.php, and user.php
pv_user_id is the id of the user who’s looking at this.This is great data, but I’m concerned. Every time someone clicks on anything, a varchar(20) is created.Suggestion: Use enum instead of VARCHAR(20) for pv_type - saved_linksApparently, somewhere you’re able to save links for yourself. Looks like a type of bookmarking thing. Odd thing is, I can’t find where you actually do this in the site. The code is real basic though — if you add one of these “bookmarks”, user_add_remove_links.php will do it for you. Maybe it’s disabled on my site.
- tagseditlink.php calls tags_insert_string, which inserts a tag into this table for each tag you put in. tag_link_id then points to the links table.In editlink.php, tags_insert_string calls and puts the global $dblang into the tag_lang column. So it just takes on whatever language your site is. I don’t know if this is necessary. I also don’t see why we have an index on tag_lang and tag_date.Note that this table is a bit different, in that tag_link_id isn’t really a unique primary key on its own. You can have multiple tags with one link_id. Thus, there can and will be multiple tag_link_id of the same integer.
- totalsThis table simply keeps track of the number of published stories and unpublished stories. See libs/html1.php — line 630 has the function totals_regenerate and totals_adjust_count that should help you see what it’s doing. These functions get called primarily by link.php
- usersThe users and links tables are the heart of it all. Everything references this table, and it’s clear to understand.I have some concerns:
a. It gets called so often, and we’re using int(20). Is anyone expecting 2 billion users? Why a display width of 20? An unsigned mediumint will give you 16 million users and save you a byte every time, which could add up.b. We are using varchar(20) for IP addresses. That is wasteful.c. This table is huge. It gets referenced very often. Personally, I prefer to split it into two tables, users and userprofiles, so that we don’t call this massive thing all the time. However, as long as the SQL calls only call what we need, and we’re indexing the right stuff, we should be fine with this.d. We can probably get rid of user_lang and any code associated to it since we killed the languages table.Suggestions:
a. use MEDIUMINT instead of INT(20)
b. For IP addresses, I recommend using INT UNSIGNED, and then storing it with the INET_ATON() and INET_NTOA functions.
c. Remove user_lang column - votesAnytime a vote is made, data goes in here, linking the date (vote_date), the link (vote_link_id), and the user (vote_user_id). vote_type is either ‘links’ or ‘comments’.Suggestions:
a. Personally, I think that we’re creating extra overhead with vote_type. The index on vote_type, vote_link_id, vote_user_id, and vote_ip is going to get enormous.Why not have a separate table for vote_comments and vote_links?b. Another case of vote_ip = varchar(64). I again recommend INT UNSIGNED like in the users table.
Overall, this isn’t that complicated, and it works well. Let me know what you think of my suggestions, I’ve only designed one large website database on my own.
Next, I will investigate whether using InnoDB with Foreign Key constraints is a good idea rather than MyISAM, which is the current Pligg default.
I am now ready to start hacking away with some modules!
…and this is what I do in my spare time while you are watching too much TV.
Permalink
03.28.07
Posted in Technology, Travels at 7:50 pm
Recently, airfare/hotel search engine Kayak.com has made a change that I’ve wanted for a long time: a weekend fare finder. There is now an option to be notified about the cheapest upcoming weekend flights to and from any destination. To many travelers, it doesn’t matter when the deal is good – It just matters that it’s a weekend trip.
This feature is great because it doesn’t bug you about Tuesday morning flights like other fare alert engines.
I’ve already used this option successfully to find some decent flights from Portland to here. I didn’t care what weekend Minh came and visited, I just cared that he got a good deal.
How Do I Use it?
- First, you need to be a member of Kayak.com. You can register here.
- Log in to your account
- After that, click on the Fare Alerts link on the front page.
- It will then prompt you to create a new alert. Put in your airports/cities, and under the “Leaving” section, choose the “Upcoming Weekends” section.
- Create as many other alerts as you like. Come visit me (LAX)!
- Sit back and wait for the weekly e-mails. Eventually you will start to recognize the good price breaks, and hopefully it’s on a weekend that’s convenient for both parties.
- Don’t forget to use flexible dates and expand the search if you can possibly get a better deal.
So far, I have alerts set up for flights to and from Austin, Chicago, Cleveland, Columbus, Portland, Providence, and Boston. After a couple of weeks, you can start to differentiate the sweet deals.
Be patient, and happy traveling!
Permalink
03.07.07
Posted in Technology at 11:31 pm
I’ll keep this short. My primary e-mail address is a gmail1 account. I get about 10 legit e-mails a day, and 75 spams a day.
I haven’t seen a single spam for well over six months. Not one. Gmail’s spam filtering is that good. I don’t know how, and I don’t care. It works phenomenally.
So spammers, why do you even bother? With the click of one button, all of your garbage is gone. Why waste your time and money? If you have a list of spam to send, you might as well remove anything @gmail.com. You are stupid to be paying someone for my e-mail address.
1Eventually I’ll change to an address @ mikeroberto.com, the only reason I haven’t is out of pure laziness. It’ll still be powered by gmail.
Permalink
02.21.07
Posted in HUMILIATIONS, Technology at 10:54 pm
Warning: This is a HUMILIATION post
I recently reported that I fixed my explorer.exe crashing issue with Windows Updates. I lied.
Uninstalling/reinstalling Windows XP Service Pack 2 worked, but the system returned to fubar mode when it grabbed the Windows updates again.
I embarrassingly cursed upon the realization that I’d have to admit to my readers, who are in legion, that I had made a mistake.
Anyway, one of these Windows Updates was still not installing properly, as mentioned in the previous entry:
I go back into Windows Update and notice that one security update is not installing. This could be part of the problem, but of course MS gives you no useful error message.
— mikeroberto.com technical editor
This ended up being the problem. To fix it:
- Download and install Qfecheck from Microsoft. This utility will check to see that all of your Windows Updates are installed properly. I recommend everyone do this.
- Get to a command prompt by Start >> Run >> cmd or through the task manager’s file menu >> New Task as described earlier.
- Enter cmd to get to the command prompt
- Enter qfecheck and hit enter. Does it recommend any hotfixes to be reinstalled? It recommended about 5 of them for me
- Google each one of those hotfixes (ie. just search for KB900725) and one of the top links will take you to Microsoft’s download page for it.
- Download and install each one, rebooting when it asks, and run qfecheck again.
When all hotfixes are in fact installed properly, your system will run better.
So today we learned three things:
- Qfecheck is a nice utility that I had never used before.
- I sometimes like to fix things with a drill and a sledgehammer rather than finesse. When it comes to my computer, that’s fine, but if I fix someone else’s, I gotta put the sledgehammer down
- I am willing to admit my mistakes and suffer ultimate humiliation for the pleasure and satisfaction of my readers
Permalink
Larz said,
05.03.07 at 3:59 am
Dude you are awesome….that was great…hope you have a blast in costa rica!
Yo Momma said,
05.03.07 at 5:40 am
So happy that my $1300 investment brought u and your buddies so much fun and entertainment – specially the porn!!!! (I’m over it..) And that (Jon, Jer, Scott) story is totally hilarious. I know – I’m a sick mom!!! I know you’ll miss berto – but his replacement will bring you many more happy memories…….
Gingo said,
05.03.07 at 6:17 am
Although I lived with berto for 4 years, he was always a bit of an enigma to me. However, seeing the joy that he brought to you in the form of bertocam, Quake, and, of course, pr0n, warmed my heart. He will be missed.
Minh said,
05.04.07 at 6:19 pm
Although I have never dubbed my old processing beast with a name, it too is on its last legs (AMD 1900+, ATI Wonder 64, Asus 7V333), going on 5 years (which according to your math is 75 years old in computer years) as my one and only computer. I’ve tried my best to push back its inevitable relegation to the dustbin via fancier cooling fans and more hard drives but your post really brings home the fact that I’ll have to say goodbye someday. Good luck with your computer!
jay said,
05.09.07 at 3:58 pm
How about a eulogy for soul? I miss soul…
Allison said,
05.15.07 at 6:42 am
Oh I will miss berto…all those fun times freshman year…but he is in a better place now…
I don’t want to jinx it but my Sony Vaio laptop is turning 105 also – and still going strong :-D. I guess women computers have longer life spans than men also :)