Skip navigation

My beloved college car, a 2002 Mazda Protege, just tipped over 120k miles. It has been a good car and hasn’t needed much service other than two sets of shocks, a power steering pump, and routine maintenance (brakes, rotors, tires).

I decided to put on my big boy pants and tackle the timing belt myself. As with any project, I needed to do some research so I went to Advance Auto to find the Haynes manual for my car. Surprise Surprise, the manual didn’t exist. No problem, Mazda was owned by Ford so chances are, the 2.0 L FS-DE engine in my Protege, was probably used in another Ford vehicle. Further research on the FS-DE engine, showed that Ford used the same engine in its 1993 – 1997 Ford Probe of which Haynes did create  a tear down manual. The instructions in the manual were for the most part very straight forward with exception for one critical step, installing the tensioner. When installing the tensioner, the tensioner spring has to be oriented in such a fashion that the bottom of the spring hooks from the backside of the tensioner and up onto the engine pin. The top of the tensioner spring hook, part of the spring that attaches to the engine pin, faces the front of the car. When installing the tensioner, make sure you hook the spring onto the tensioner first before attaching the tensioner to the engine block and torquing it down. Use an allen wrench to clock the tensioner forward enough to hook the top of the tensioner spring onto the engine pin. Torque specs are found in the Haynes manual. What I found helpful was not to completely torque down the tensioner before attaching the tensioner spring. Torque the tensioner down completely after attaching the tensioner spring.

In addition to reading the Haynes manual, I went through various forums including mazda247.com and the complete 6 part removal and installation instructions on youtube. Both of these references are great!

I bought a no name timing belt kit from eBay. The kit included an idler, tensioner, water pump, timing belt, cam seals, crank front seal, and valve cover gaskets. The entire kit was a mere $130. What a deal! … not

I wasted an entire afternoon trying to get the garbage belt on but no matter how I lined up the timing marks or how I adjusted the tensioner, my crankshaft sprocket would always be a half of a tooth off TDC. The belt was simply not right.

My guess is that the belt was too elastic. Regardless, I stepped away from the car for the night and bought a new timing belt, Gates T228 from Amazon. Amazon PRIME is awesome!

The Gates belt took a little bit more time to get on as it was less elastic than the garbage eBay timing belt. After some wrestling, everything lined up perfectly!

Other things to note:

1) The intake and exhaust cams have two timing marks on them, make sure you use the right ones. One way to tell is to line up the I and E on each respective cam

2) Another way to check your crankshaft sprocket for TDC is to partially install the lower timing belt cover and attach the drive pulley. The drive pulley and lower timing belt cover have timing marks which will help you identify how far forward or back you are from TDC.

3) DON’T REUSE the old tensioner spring, that small thing keeps the tension on the timing belt

4) Lisle 36880 DOHC locking tool WILL NOT work on this car, the locking tool is too big.

*** To start out with. I am by no means a race car driver, not a weekend track day enthusiast, nor an auto-x junkie. I am simply a handy Asian with too much time on his hands and wants to make his car work with him. There is a lot of literature on my350z.com and 350z-tech.com. Serious questions should be directed to those forums as they have a tremendous amount of information and resources. Modifying your vehicle may severely change its behavior and possible put you in harms way. Do not treat this as a how to but rather a story, a story of an Asian with too much time on his hands. ***

The Z’s stock setup (for me at least) was too tail happy. I’d whip around turns like nobody else’s business. Part of it may have been that the Z was my first RWD car. I simply had no idea how to drive it properly.  It was also my first car with more than 130hp and over 3000lbs so I had a lot and still have a lot to learn about the car.

The ricer in me wanted to get some fresh kicks so I chose to run 9.5″F  and 10.5″R rims wrapped with 245/35 and 275/35 respectively. 9.5″ up front may have been too wide because the turning radius suffered along with turning response for my taste.

The first thing I noticed about the car on the stock setup was that it would roll too much on corners. Front and rear Hotchkis adjustable sway bars immediately corrected that issue.

Now to fix the dreaded high speed hops on the highway. A better valved damper should fix that. While there may have been dozens of other dampers to choose from, I chose the D specs because it was relatively cheaper than the Koni’s and it was still adjustable. While I am quite happy with the Tokico’s, the springs I chose left me slightly disappointed. I clearly did not do enough homework when I choose the Pro-Kit progressive springs. My gripe isn’t with Eibach but rather with the nature of progressive springs. I should have picked a linear spring such as Whiteline or RSR (slightly progressive rear). The car is very hard to predict on corner entry. As a result, I have a very hard time balancing the car on mid turn and feel like the car is bouncing around too much.

Since the install of the rims, tires, springs, sways, and dampers, I haven’t had the opportunity to fine tune my suspension. Rather than spending 1.8k on a proper set of coils, over the course of the next few weeks, i will start  changing the damper settings to gauge the need for coilovers or need for linear springs. This blog will act as my changelog.

Initial setup

  • Eibach Pro-Kit (296-384)F (316-421)R
  • Tokico D-Spec DSP9 (-3 stiff, -3 stiff) F/R
  • Hotchkis (4/3)F/R way adjustable sway set to (-2 stiff,  -1 stiff )F/R

Thoughts: Car bounces around on corner entry and mid way through. Hint of oversteer with hard turn. Maybe stiffening the front damper will help alleviate turn in bounce?

Change 1)

  • Tokico D-Spec DSP9 full stiff up front
  • Thoughts: What was I thinking? Understeers like crazy on long sweeping turns. Did not even attempt to do a hard turn. Ride comfort suffers (may need to adjust the front sway to a softer setting).

Change 2) (Updated 8/5/09)

  • Tokico D-Spec DSP9(-2 stiff, -3 stiff) F/R
  • Thoughts: Corner entry seems a bit stiffer on mid sweeping turns. Not sure if this is the proper setting or if the car is on the edge of breaking loose into understeer. Need to push the car harder

Change 3) (updated 8/11/09)

  • Tokico D-Spect DSP(-2.5 stiff, -3 stiff) F/R
  • Thoughts: Corner entry seems less stiff but very neutral on mid sweeping turns. Again, not sure if its the proper setting but its on the way of being neutral. Still unbalance on hard tight turns. Ride comfort increased dramatically. May tighten up the front a quarter turn based on next few days of feedback.

Change 4) (updated 9/14/09)

  • Loosen Front Sway Bar to (-3 stiff)
  • Tokico D-Spec DSP (-2 stiff, -3 stiff) F/R
  • Thoughts: No more push to the outside on mid to long sweeps. Endlinks starting to show some wear. Heard a loud pop up front at slow speeds. Might need to order some heavy duty ones soon.

I got bored today so I decided to revisit Kismet to crack WEP/WPA keys. There are a million articles out there on the web as to how to accomplish this ‘awesome’ task. One of which I found more informative than the others (http://docs.lucidinteractive.ca/index.php/Cracking_WEP_and_WPA_Wireless_Networks) .

I hate having to deal with drivers, which is one reason why I upgraded to Ubuntu 7.10. Whatever Ubuntu did, I love them for it because the wireless worked right out of the box, so to speak. Additionally, installing the necessary tools to crack those wireless keys couldn’t be easier with Ubuntu’s package management system. I simply altered the package ‘source.list’ file to include the universe repository and then type ‘sudo apt-get install kismet’ and ‘sudo apt-get install aircrack’.

Continuing with the wireless key cracking, I needed to find the BSSID of my victim’s AP and so I typed ‘sudo kismet’… But wait, kismet didn’t seem to be reading any packets. Whats going on? Apparently, ‘NetworkManager’ was interfering and as such, I had to disable it by typing ‘sudo killall NetworkManager’.

After cracking the keys and feeling like a big man, I wanted to go back to my original setup to read some more car forums. However, my wireless wasn’t working because I killed the network manager. Simply typing ‘sudo NetworkManger’ to start the application and then ‘sudo modprobe ndiswrapper’ jump started my wireless and off to my350.com 🙂

I’ve created a simple mozilla extension search engine. Everytime I submitted a query, it would take forever for my suggestions to pop up. Frustrated at the latency, I looked at my log files to see this:

Processing SearchController#suggest_package (for 10.1.0.132 at 2007-06-27 18:52:32) [GET]
Session ID: 2836272b416b6f5e190f457b4c5644bb
Parameters: {“action”=>”suggest_package”, “package”=>”ray”, “controller”=>”search”}
Package Load (0.163366)   SELECT * FROM packages WHERE (p_name LIKE ‘ray%’) GROUP BY p_name ORDER BY p_name LIMIT 25
Package Columns (0.000900)   SHOW FIELDS FROM packages
Completed in 0.17745 (5 reqs/sec) | Rendering: 0.00013 (0%) | DB: 0.16427 (92%) | 200 OK [http://10.1.0.111/search/suggest_package?package=ray]
Notice anything interesting? How about the 92% DB load?

Disgusted by the results, I quickly realized that I didn’t index my queried field of 90k tuples so I created an index on that field by typing in the following into the mysql console:

create index name using btree on packages(p_name)

btw (btrees are the craziest things in the world, I got dominated in college trying to write one. I couldn’t get delete to save my life)

After creating the index, I submitted a second query and got:

Processing SearchController#suggest_package (for 10.1.0.132 at 2007-06-27 18:53:35) [GET]
Session ID: 2836272b416b6f5e190f457b4c5644bb
Parameters: {“action”=>”suggest_package”, “package”=>”ray”, “controller”=>”search”}
Package Load (0.002940)   SELECT * FROM packages WHERE (p_name LIKE ‘ray%’) GROUP BY p_name ORDER BY p_name LIMIT 25
Package Columns (0.002396)   SHOW FIELDS FROM packages
Completed in 0.01962 (50 reqs/sec) | Rendering: 0.00009 (0%) | DB: 0.00534 (27%) | 200 OK [http://10.1.0.111/search/suggest_package?package=ray]
27% ain’t that bad. I can live with 27% considering the fact that its running on a VM and im on a laptop.

Lesson to be learn. USE INDICIES!

For whatever reasoning, the only way i can get the gzip reader to work is if I use this command:

package_data = “”
Zlib::GzipReader.open(“data/debian_packages_#{right_now}.txt.gz”) { |gzip|
package_data += gzip.read
}

Here is a good reference to how you can use Gzip. Unfortunately I couldn’t get any of the other examples or even my own to work. I kept on getting error: ‘Invalid char `\302′ in expression ruby’ . Whatever that means?

http://www.oreilly.com/catalog/rubyckbk/toc.html

I tried to write my own plugin to do simple searches when I realized that all I needed was a search extension. Since mozilla adopted the opensearch standard, integrating your custom search hasn’t been easier. Sandro Paganotti wrote a pretty straight forward article on how to create your own custom mozilla search extension (http://www.railsonwave.com/railsonwave/2007/2/21/tutorial-opensearch-with-rails-1-2-render-json) Its actually a lot simpler than you might think.

Once implemented, don’t be alarmed if you don’t get an immediate prompt or automatic install of your newly created search extension. Those prompts are made possible through a little bit of javascript. Just look under your search bar and it should say “Add ‘your search extension name'”. Or if you want the browser to prompt you for search extension install, use the “addSearchEngine” function

addSearchEngine(engine URL, icon URL, engine name, category name)

Feeds are just glorified xml… just keep with the syntax and let the browser handle the rest. Whether its RSS2 or atom, google for the xml syntax and there you have it. Handling the different requests on the controller end is another story. But not too bad. With help of rails’s respond_to (http://rails.raaum.org/actionview.html) you can dynamically render different formats without repeating any code and adhearing to the DRY method Rails is built on.

Atom : http://snippets.dzone.com/posts/show/559

RSS2: http://snippets.dzone.com/posts/show/558

I’ve been developing on a remote server for the past year or so and its great when you have internet. But I’ve frequently found myself in situations where I don’t have the internet so I’ve decided to download Aptana + RDT + Subclipse (SVN for eclipse) to develop locally. So, after spending a few hours getting Aptana to work correctly, then RDT, and then subclipse I found myself unable to rebuild the openid server locally. I followed the INSTALL instructions to the dot but kept on getting “rake aborted undefined method ‘exclude’ for nil:NilClass” as an error when I tried to do a migration. As it turns out, there is something funky with rake version 0.7.3 as pointed out by Brian in  http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/248953 . I followed his advise in modifying the rake clean code and BAM, the migration worked. Little things like this is driving me crazy!

Installing java is pretty simple, just update your source list in /etc/apt/sources.list and then launch Synaptic package manager and pick the new version of java… BUT, How you change the system’s path to launch your new version of java?
sudo update-alternatives –config java

Ah!!! I mean, seriously, it should have updated itself somehow knowing that I just installed a new version of java.

When doing validation, try to use getElementById instead of using the DOM hierarchy to access form items. Firefox and IE responded well to input form items but not drop down menu’s. For example: firefox will pick up document.myForm.dropdown.selectedIndex but IE won’t. Solution? Use getElementById(“dropdown”).selectedIndex

<form name=”myForm”>

<select id=”dropdown” name=”dob” type=”list”>

<option>01</option>
<option>02</option>

</select>

</form>