Redmond Area Bike Trails (TrailLink.com)  

Posted by ReelTym

Map Rail-trail Trail Name State Counties Length (miles) Activities
Trail has spatial data
Trail is a rail-trail
Issaquah-Preston Trail (formerly Issaquah Creek Trail) WA King 5.80 Bike, Fishing, Horseback Riding, Mountain Biking, Walking, Cross Country Skiing
Trail has spatial data
Trail is a rail-trail
Preston-Snoqualmie Trail WA King 6.50 Bike, Inline Skating, Fishing, Wheelchair Accessible, Horseback Riding, Walking
Trail has spatial data
Trail is a rail-trail
Sammamish River Trail WA King 11 Bike, Inline Skating, Wheelchair Accessible, Horseback Riding, Walking, Cross Country Skiing
No spatial data available
Trail is a rail-trail
Seattle Waterfront Pathway WA King 2 Bike, Inline Skating, Wheelchair Accessible, Walking
Trail has spatial data
Trail is not a rail-trail
The I-90 Trail WA King 8 Bike, Mountain Biking, Walking
Trail has spatial data
Trail is a rail-trail
Iron Horse State Park WA King, Kittitas 82 Fishing, Horseback Riding, Mountain Biking, Walking, Cross Country Skiing


More info here at TrailLink.com

Northrock XC29 Bicycle from Costco  

Posted by ReelTym


Review by Jordan Peterson

Additional reviews/feedback found HERE

After dabbling around with 3 Northrock bicycles in Costco, we left with both the Northrock XC29 and the Northrock FC7.

The models Costco currently sells are the following:

  • XC29 for $480
  • XC6 for $350
  • SC7 for $300
My girlfriend and I were riding down the aisles, testing for which bicycle had the fit and comfort. She was looking for a 20+ year old Schwinn bicycle replacement; back when Schwinn was quality, and HEAVY too! I was looking to replace a six year old Mongoose full suspense bike that seemed to never fit, and was a bit on the heavy side.

I was liking the XC6 for the price, but it didn't fit my 6'0" height well; seemed crunched up, or maybe the handle bars design is set low. I liked the XC29's stanse; tall. The XC29 seemed to enable better balance, less peddling effort, and qute possibly, the frame fits, but the price didn't! So I dabbled around looking for something more to justify another $130 for "the better bike".

After riding the XC29 down the street and off road, I noticed it liked to skip a gear, and sometimes jump a gear at random. I did, however, find a good tutorial on how to properly adjust limits for the  front and rear derailleurs. After getting a better understanding of how derailleurs work, a little tuning made this gem a pleasure.

The disc brake rotors look undersized for the 29 inch wheels, but brake skidding the rear tire comes effortlessly. Ball berring calipers sound like a good idea. I don't know much about them, but I'm guessing they use bearings on the lever arm shaft instead of a nylon or bronze surface? Not sure.

The seat is terribly uncomfortable. One easy flat trail ride and I was done trying to be tough.

The 29 inch wheels are awesome for smoother ride; more tire on the ground, better tracking, and better balance. However, if you're planning to put this in your vehicle, first consider if it'll fit!! I had forgotten the conviences of smaller mountain bikes.

This frame seems to be built tough; welds are dimed, and the steering neck is at a comfortable level. I like being able to sit up more instead of bent over; this is what sold the bike!

After assembly from the box, you'll have to adjust things to your liking. I adjusted the handlebars, brake levers, and shifters 5 times before I was happy. 

Don't bother looking for the right alan wrench size, as a couple of alan wrenches and a combo open end wrench came with the bike. I'm glad they did, as I was busy at getting everything just right.

Being that Northrock is made in China, I probably wouldn't have botten it at Walmart, but since Costco doesn't "usually" sell junk, and their return policy is fair, I have no stick yet to shake at them. The sister product, a Northrock SC7 is an amazing bike for the price; many are so happy with the bike, while some others complain that the derailleurs should have been adjusted. The bike does clearly have a sticker on it that says "Made in China". What do they expect? Look it over; have a bicycle mechanic look at it before you buy it. Most things in China are slammed out of production with slim quality assurance, but with Northrock, seems they're attempting say quality.

With time I will give a better account of this purchase and how well the bike holds up. So far I've been pleased with the comfort and am looking forward to riding it more daily.

Front Derailleur Adjustments  

Posted by ReelTym


Useful Tools and Supplies

  • Repair Stand, holds bike secure for easy work.
  • Hex wrenches as needed.
  • Screwdriver (#2 Phillips or straight blade)
  • Light liquid lubricant
  • Derailleur cable inner wire and housing as needed
  • Caliper or metric ruler
  • Cable end caps and housing end caps as needed
  • Rags
This article will discuss the basic adjustment of the front derailleur. See also related articles:
This article assumes the derailleur is compatible with the shifting system and is not extremely worn out. Cable and housing length is not covered in the article, see How do I cut cable and housing and how long should housing be?

Service Procedures

The front derailleur simply shoves the chain off one front chain ring and onto another ring. The cage surrounding the chain is pulled in one direction by the inner wire. A spring in the derailleur returns the cage to the other direction when the inner wire is relaxed. A properly adjusted front derailleur should shift the chain between the front chainrings but will not throw the chain off the rings. The basic adjustments for the front derailleur are the height, rotation, limit screws and inner wire tension (index setting).
It is generally a good idea to lubricate the pivot point of the front derailleur with a light lubricant. The cable inner wires should also be lubricated. If you have loosen the inner wire pinch bolt, lubricate those threads as well. When tightening this pinch bolt, secure to approximately 30-40 inch-pounds. This is about 10 pounds of effort hold a wrench 3 inches from the bolt.

Front Derailleur Height

Before checking limit screw adjustments, check the derailleur positioning. If the derailleur cage is too far above the large chainring, it is more likely to shift poorly. If the derailleur is too low, it may scrape against the chainrings or jam the chain when shifting.
Some front derailleur models do not have height or rotation adjustments. These models mount on a plate and both height and rotation settings are pre-set. Additionally, some bikes have a bracket commonly referred to as a "braze-on" for front derailleur mounting. This bracket will allow limited height and rotational settings.
  1. Inspect height alignment of front derailleur. The outer cage plate must be positioned over the largest chainring when viewing height. Simply grab the exposed front derailleur inner wire until outer cage plate is directly over outer chainring teeth. Use care to not shift the derailleur cage past this point. Note height and direction of change needed. It is then necessary to relax the cable to loosen the mounting bolt and raise or lower the height as needed.
  2. The gap between the teeth of the outer chainring and lower edge of the outer cage plate should be 1-2mm, about the thickness of a penny. Using a penny or a dime as a feeler gauge, fit it between the chainring teeth and the cage plate. It should just fit between the teeth and plate. 
  3. To lower cage, release inner wire tension completely by shifting to innermost chainring. Note angle of outer cage plate relative to chainring.
  4. Front derailleur clamps typically leave a mark on the frame, which is useful as a reference when changing height. Loosen derailleur clamp bolt, change derailleur height, and return cage to same rotation relative to chainring. Tighten clamp bolt. Move outer cage plate over outer chainring, and check height again. Repeat this process until cage plate height is 1-2mm above outer chainring.

Front Derailleur Rotational Angle

The front derailleur cage should be approximately parallel to the chain. If the derailleur cage is rotated too far from this position, it will shift poorly. If the derailleur mount is a clamp type, its rotation can be changed. Generally, the outer cage of the front derailleur should be aligned to the chain. The middle image below shows adequate alignment.
  1. Shift chain to outermost chainring and outermost rear sprocket.
  2. Sight chain from directly above chainrings. Consider the chain as representing a straight line. Compare this line to outer derailleur cage plate. Outer cage plate and chain should be parallel. Keeping the cage and chain parallel will minimize the risk of the chain jumping off the outermost ring. If cage is not parallel, there will be a relatively large gap at either the back or the front end of the cage, and the chain may over shift.
  3. If derailleur cage needs to be rotated, note direction of desired rotation.
  4. Release inner wire tension by shifting to the innermost chainring.
  5. Many clamps leave a slight marking on the frame. Use this scarring as a reference when changing height. It is also possible to use a pencil to make two reference marks on the frame, one for height and a second, vertical mark, to reference rotation. Use the marks to avoid inadvertently changing height.
  6. Loosen clamp bolt and slightly rotate in correct direction. Use care not to change height. Tighten derailleur clamp bolt.
  7. Shift to outer chainring and observe rotation alignment. Repeat adjustment if necessary.
NOTE: Some front derailleur models do not have height or rotation adjustments. These models mount on a plate and both height and rotation settings are pre-set. Additionally, some bikes have a bracket commonly referred to as a "braze-on" for front derailleur mounting. This bracket will allow limited height and rotational settings.

Front Derailleur Limit Screw Settings

Limit screws stop the inward and outward travel of the front derailleur cage. Limit screws are marked "L" and "H". The L-screw will stop the motion of the derailleur toward the smallest chainring. The H-screw will stop the motion of the derailleur toward the largest chainring.
If the limit screws lack any marking, you will need to determine which are the "H" and "L" by testing. Begin with the chain on the smallest cog. Relax the cable tension completely using the cable barrel adjuster. Place a hand on the derailleur body to feel for any lateral motion, and select one screw to turn one full turn clockwise and then counter-clockwise. If you felt motion in the derailleur, this is the "L" screw. If there was no motion, do the same test with the other limit screw. You should consider marking the "L" screw permanently. The other screw by default is the "H" screw.
Although the limit screws will stop the derailleur, it is the inner wire and derailleur spring that make the derailleur move. If the inner wire has too much tension, the derailleur will not rest on the L-screw stop. If the inner wire tension were to change, the derailleur inner limit would also change, possibly causing the chain to fall off the rings.

Front Derailleur - Adjusting L-screw

The L-screw controls the inward most travel of the front derailleur. Set adequately, it allows the chain to shift to the smallest ring, but not beyond so it falls off.
  1. Shift chain to innermost rear sprocket and innermost front chainring. Inspect derailleur for marking indicating "L" screw.
  2. Check inner wire tension. It should be fairly loose at this time. If inner wire is taut, turn barrel adjuster clockwise into housing. The barrel adjuster is typically located where the cable housing enters the shift lever. If barrel adjuster is already fully turned into housing, loosen inner wire pinch bolt, slacken inner wire and retighten bolt.
  3. Sight gap between inner chain plate and inner cage plate. Only a small gap should be visible, about 1/16" or 1mm, about the thickness of a dime.
  4. Pedal bike slowly and continue to sight gap. Set clearance at tightest point in chainring rotation. Adjust L-screw so there is a small gap between inner cage and inner chain plate. Pedal bike and check that chain is not rubbing cage as chainrings turn.
     1. If there is no gap and chain is rubbing cage, loosen L-limit screw 1/8 turn (counter-clockwise). Inspect for gap again and repeat until slight gap appears. 2. If the gap appears larger than 1mm at its widest point, tighten the L-screw, in small increments, until the gap closes.
  5. Test the shift by shifting chain to next chainring then shift back to the innermost ring. Do not use the shift lever. Pull on the inner wire to shift the derailleur. Using the lever may confuse limit screw issues with cable tension issues. If chain shifts quickly, limit screw setting is adequate.
  6. If the shifting appears is slow (requires more than one pedal revolution to initiate shift), turn L-limit counter-clockwise 1/8 turn and repeat test. Repeat 1/8-turn increments until shifting is adequate. The gap will open wider than the 1mm target, but will still be as small as possible with adequate shifting.
  7. If chain is shifting beyond the inner ring and falls off the chainring, gap may be too large or cage alignment may be off. Tighten L-screw 1/8 turn and check shift again. If chain ends up rubbing inner cage of derailleur, yet still drops off inner ring when shifting, other problems such as chain line or derailleur rotation exist.

Front Derailleur- Adjusting H-screw

The outward travel of the front derailleur is stopped by the H-screw. When viewing the H-limit adjustment, make sure there is enough tension on the inner wire by either keeping extra pressure on the lever, or by pulling the exposed inner wire taut by hand. Use a rag to protect your hand if pulling the inner wire. After the H-screw is adjusted the inner wire should be re-tensioned to assure proper shifting.
  1. Shift to outermost sprocket in rear and outermost front chainring. Inspect derailleur for mark indicating H-screw.
  2. Pull inner wire with hand to increase tension to insure derailleur is against H-screw.
  3. Maintain full pressure on inner wire and check gap between chain and outer cage plate. Only a small gap should be visible, about 1/16" or 1mm. Pedal bike slowly and continue to sight gap. Set clearance at tightest point in chainring rotation.
     A. If chain is rubbing cage, loosen H-screw 1/8 turn and pull fully on inner wire. Check gap again. B. If chain is not rubbing, tighten H-screw repeatedly until chain is 1mm
  4. Test shift to the large ring. Shift derailleur from next to largest to largest ring using hand pressure on inner wire rather than shift lever. If shifting is slow, loosen H-limit screw slightly and repeat test. If chain shifts off the outside of the large chainring, the outer-limit is set too loose. Tighten H-screw limit and test shift again.

Front Derailleur- Adjusting Indexing (Three Chainring Bikes)

Some front derailleur systems have an index setting. If the shift lever has three distinctive stops or clicks, it is indexing. If the front shift lever is friction, there is no index setting. If the front shift lever has multiple clicks, such as some twist grip style shifters, it is shifted similar to friction levers. Set indexing only after completing all adjustment above.
  1. Shift chain to middle chainring in the front and innermost rear sprocket.
  2. View gap between inner cage plate and chain. Gap should be as small as possible without rubbing chain.
  3. To reduce gap, increase inner wire tension by turning barrel adjuster counter-clockwise. Adjusting barrel may be on frame or on shift lever. Check gap again.
  4. If chain is rubbing cage, turn barrel adjuster clockwise, or inward toward shifter body.
  5. If barrel adjuster is all the way in or out there will be no adjustment possible. In these cases reset the barrel.   Shift to innermost chainring and loosen inner wire pinch bolt. Turn the barrel fully clockwise and back out about 2 full turns. Pull wire gently with fourth-hand tool and tighten pinch bolt. Begin adjustment of inner wire tension as above.
  6. Test shift of front derailleur to all three front chain rings. If the derailleur rubs in the largest front chainring, double check H-limit screw and inner wire tension, which may be too loose. If chain is slow to shift to smallest chainring, double check L-limit screw and inner wire tension, which may be too tight.

Front Derailleur- Adjusting Indexing (Two Chainring Bikes)

Some front derailleur systems have an index setting. If the shift lever has two distinctive stops or clicks, it is indexing. If the front shift lever is friction, there is no index setting. NOTE: Some bike uses an "in-line" barrel adjuster to change housing length and set the indexing.
  1. Shift chain to outer chain ring in the front and outermost rear cog.
  2. View gap between outer cage plate and chain.
  3. If outer cage plate clears chain, index setting is adequate.
  4. If plate is rubbing chain, increase inner wire tension by turning adjusting barrel counter-clockwise and check again.
  5. If barrel adjuster is all the way in or out there will be no adjustment possible. In these cases reset the barrel.   Shift to innermost chainring and loosen inner wire pinch bolt. Turn the barrel fully clockwise and back out about 2 full turns. Pull wire gently with fourth-hand tool and tighten pinch bolt. Begin adjustment of inner wire tension as above.
  6. Test shift of front derailleur to both front chainrings.

Front Derailleur Performance

The front derailleur should shift the chain between chainrings without throwing the chain off the extreme outer and inner rings. It is possible that the front derailleur will rub the chain slightly even on properly adjusted bikes. This is likely on some bikes when riding in the largest sprocket in front and the smallest cog in back. As the bike is pedaled with force the frame flexes and moves the chainrings side to side, which cause an intermittent rubbing noise. Loosening the H-limit would move the front cage out more, and may stop the rubbing, but it may also cause the chain to shift over the largest ring and come off. If all aspects of front derailleur adjustments are correct on this bike, the rider is simply exceeding the engineering and design capabilities of the machine.

Rear Derailler Adjustments (derailleur)  

Posted by ReelTym


Typical Tools and Supplies Needed:
  • Repair Stand, PRS and PCS stands.
  • Screwdriver, Phillips #2 or straight blade
  • Hex Wrenches, if changing inner-wire AWS series.
  • Light lubricant such as CL-1
  • Forth Hand Tool BT-2
  • Cable cutter, if trimming cable CN-10
  • Rags
The article will discuss the adjustment of the rear derailleur. See also related articles:
Derailleur bicycles have several sprockets on the rear hub. By using different combinations, the rider will find low gears for going up hill and high gears for going down hill. The gear system needs maintenance and adjustment to perform well. The cable system may also need replacement as it wears. The derailleur limit screws and index setting will need periodic checking. This article will first discuss limit screw setting, and then index adjustments.

Derailleur Limit Screws (H-Screw and L-Screw)

Rear derailleurs "derail" the chain from one sprocket and move it to another. The upper derailleur pulley (called the "guide pulley" or G-pulley) pushes the chain to the next sprocket. A proper gear adjustment aligns the guide pulley under the intended sprocket.
Changes to the inner wire tension causes movement in the derailleur. The derailleur body is fitted with a spring that is pulled tight, or relaxed, by the inner wire. Pulling the inner wire moves the derailleur cage and guide pulley in one direction and tightens the spring. Relaxing inner wire tension allows the spring to move the body and pulley in the opposite direction.
It is normal for a chain to make some noise during a shift. The shift may appear subjectively "noisy," "loud," or "rough". Factors like the type of chain or sprocket, the wear on each, and the amount and type of lubrication will affect the noise a chain makes during shifting. The limit screws typically can do nothing to affect the noise during a shift between cogs. Noise from the chain as it rides on the sprocket is, however, a useful symptom. There is for any given bike a "base level" of noise from the chain as it passes over the sprocket teeth. When the derailleur jockey wheel is out of alignment, the chain may make excessive noise. To demonstrate the "base level" noise, shift the bike to the second sprocket by pulling the inner wire. Continue to pedal and move the inner wire slightly to hear changes in the level of noise. The quietest level of noise may be considered the base level for that bike.
Derailleur pulleys are limited in both inward and outward motions by using the derailleur limit screws. Properly set, the derailleur will shift to both the extreme outward sprocket (the smallest in size) and the extreme innermost sprocket (the largest in size). The limit screws do not control the derailleur on the sprockets between the two extremes. These are set using the barrel adjuster and tension on the inner wire. The limit screws are usually marked "H" and "L". The "H" controls the outer most limit of the derailleur, and the "L" controls the inner most limit.
Using the shift lever to adjust limit screws can cause confusion and problems because it tends to focus attention on the inner wire tension (indexing) rather than limit screw settings. Instead of using the shift lever, pull the inner wire with one hand to simulate shift lever action. This will help eliminate confusion between indexing problems and limit screw problems. With the bike in a stand, practice shifting with this method before adjusting the limit screws.
Turning the limit screws adjusts the limit of travel of the pulleys. Tightening restricts the travel, while loosening allows more travel. The purpose of the following procedure is to find the tightest H-limit screw setting that will allow a good shift to the outermost cog, and the tightest L-screw setting that will allow a good shift to the innermost cog. The location of limit screws on the derailleur body may vary between manufacturers. Always look for the "H" and "L" marked adjacent to the screws.

H-Limit Screw

  • Shift chain to outermost (largest) chainring. Shift chain to outermost rear sprocket (smallest sprocket).
  • Check tension on rear inner wire. If inner wire appears to have any tension, it may interfere with the H-screw setting. Turn adjusting-barrel clockwise to eliminate inner wire tension. Proper cable tension (indexing) will be adjusted later.
  • Pedal bike at a quick cadence, approximately 60 rpm or more.
  • Pull inner wire to shift derailleur one sprocket inward. Adjust pull on inner wire until chain rides quietly on second sprocket. Release inner wire quickly to shift back to outermost sprocket and note shift. When adjusting the H-screw, be concerned with two situations:
    1. The outward shift from the second sprocket to the outermost sprocket.
    2. How the chain rides on the outermost sprocket.
    3. Do not be concerned with how the chain rides when it is held on the second sprocket.
    4. If the shift outward seems acceptable, tighten H-screw 1/4 turn clockwise and repeat shift. Even if shift appears acceptable, continue tightening H-screw by 1/4 turn increments and checking shift until shifting is slow or hesitant. Another symptom of a too tight H-limit screw is when the chain is on the smallest cog but makes a rattle from rubbing the second sprocket inward. View this last symptom by looking under the rear sprockets where the chain meets the sprockets. The inner plate of the chain will rub against the next sprocket inward making the noise.
    5. When symptoms of a too tight H-screw appear, loosen H-screw 1/4 turn and check shift again. Repeat process of shifting and correcting by 1/4 turn increments. When too tight symptoms disappear, H-screw is at tightest acceptable setting, and limit screw setting is done.
    NOTE: "Rapid Rise" or "Low-Normal" derailleurs use a reverse spring application. When the inner wire tension is completely relaxed, the derailleur sits on the inner most sprocket, which is reversed from other common derailleurs. When adjusting the H-limit screw, it is necessary to pull the inner wire until the chain is in the second to outermost sprocket then pull hard to shift to the outermost sprocket. The same concept is used to adjust the Shimano® "Rapid-Rise" or "Low-Normal" derailleurs. You want the tightest limit screw setting that allows good shifting to the extreme outer and inner cogs.

    L-Limit Screw

    The L-limit stops the derailleur from moving inward (toward the spokes). The limit screw does not make the derailleur move, pulling the inner wire makes the derailleur move. The L-screw allows the pulley wheels to shift the chain to the innermost sprocket and yet not shift off the sprocket into the spokes.
    1. Shift bike to middle chainring (or smaller ring of double chainring bikes) and to second-to-innermost rear sprocket.
    2. Pedal bike at a quick cadence, approximately 60 rpm or more.
    3. Pull inner wire by hand to shift derailleur sprocket inward. When adjusting the L-screw, be concerned with two situations:
      1. The inward shift from the second-to-innermost sprocket to the innermost sprocket.
      2. How the chain rides on the innermost sprocket.
      3. If shifting seems adequate, tighten L-screw 1/4 turn, and repeat shift. Continue to tighten L-screw until symptoms of too tight appear. These symptoms are that the chain will not complete shift even with pressure on inner wire, the chain hesitates before shifting inward even with constant pressure on inner wire, or the chain rattles excessively when riding on innermost sprocket
      4. When symptoms of a too tight L-screw appear, loosen L-screw 1/4 turn and check shift again. Repeat process of shifting and correcting by 1/4 turns. When too tight symptoms disappear, L-screw is at tightest acceptable setting, and limit screw setting is done.

      B-Screw Adjustment

      After setting the L-screw, check the "B-screw" for an adequate setting. The B-screw controls the derailleur body angle, hence the name, B-screw. Shift to the innermost rear cog, which is the largest cog. View the upper pulley relative to the largest cog. If the pulley is rubbing against this cog, tighten the B-screw to increase upper pivot spring tension, which pulls the pulley back and away from the cog. If there is a large gap between the upper pulley and cog, loosen the screw. To find a good setting, loosen the B-screw until the upper pulley begins to rub, then tighten the screw to get clearance.
      Watch pulley against cog
      Adjusting B-screw
      Check for rubbing of largest sprocket and upper pulley
      Higer tension in upper pivot
      Low tension setting in upper pivot
      Change B-screw as necessary

      Campagnolo® Some Campagnolo® model derailleurs have a body tension adjustment at the pulley cage, not at the upper pivot. The screw is basically a "rack and pinonquot; system. The cage spring plate rotates to increase or decrease tension. The upper pivot and lower cage pivot springs oppose one another. In this system, the upper spring is fixed. Increasing cage tension (turning screw clockwise) will bring the upper pulley closer to the cog. Decreasing cage tension (turning screw counter-clockwise) will increase the distane between upper pulley and cog.
      Campagnolo body angle screw

      SRAM® Derailleurs Sram® designates a 6mm between the largest rear cog and the upper pulley. Use a 6mm hex wrench to help estimate this gap.
      NOTE: Shimano "Rapid rise" or "Low-Normal" Shimano® reverse the spring pull from conventional derailleurs. The derailleur moves inward (toward the spokes) when the cable tension in relaxed, or or "normal" position. To adjust L-screw, pull on inner wire and shift outward one sprocket, then release inner wire to shift inward. Tighten L-screw until shifting is slow, then turn counter-clockwise 1/4 turn until good shifting is restored.

      The process above sets the limits to the tightest setting that still shifts well. This allows the derailleur to wear with use and time, and yet still allow a good setting. After limit screws are set, proceed to index adjustments.

      Checking the Rear Indexing Adjustment

      The rear indexing adjustment should only be done after the H-limit and L-limit screws are adjusted. The rear derailleur indexing is adjusted by changing the inner wire tension. For the common rear derailleurs, increasing inner wire tension tends to move the rear derailleur more to the left, or toward the spokes. Less inner wire tension tends to move the derailleur to the right. The inner wire tension will not stop the derailleur at its extreme limits. The H-limit screw stops the derailleur at its right most setting, and the L-limit screw stops the derailleur at its left most setting. (Shimano® "Rapid rise" or "Low-Normal" derailleur are a bit different. These place the chain under the inner most sprocket when there is no cable tension. See procedures at the bottom of article.)
      Modern indexing shift levers use dwell, which is a hesitation between movements in the lever. These hesitations are timed to match the movements of the derailleur and the spacing in the rear sprockets. The design of some derailleur and shift lever brands requires more of a push (or twist) of the lever to complete the shift. The amount of extra push or twist is not consistent between manufacturers and each rider must learn the particular attributes of his or her system.
      Changes to inner wire tension are made at the adjusting barrel. Adjusting barrels may be located either at the rear derailleur or at the shift lever. The goal of adjusting the indexing is to find the tightest inner wire tension setting that will allow good shifting to the gears normally used. This will allow the longest lasting indexing adjustment as the system wears and the cable system stretches with use. To find the tightest inner wire setting, you will purposely make the setting too tight then relax tension slightly. There are two basic symptoms for a "too tight" inner wire. These are a rattling noise from the chain rubbing against the next cog inward, and a slow or hesitant outward shift. These are symptoms for rear derailleurs that sit outward when inner wire tension is released.
      NOTE: If the cable inner wire is not correctly routed into the derailleur pinch bolt, a good indexing setting may not be possible. The wire should leave the barrel adjuster and travel straight to the pinch mechanism. The upper image is correctly routed, while the lower image shows incorrect routing.
      Wire routing at derailleur

      Index Setting

      1. Set limit screws (if not already done).
      2. Shift chain to outermost rear sprocket (smallest). Shift chain to outermost (largest) chainring in front.
      3. Test initial inner wire tension. Pedal a normal cadence and shift rear derailleur with one click on lever. Use care to only move lever one position. If derailleur moves one sprocket, tension is adequate.
      4. If derailleur fails to shift one sprocket, inner wire may be too slack. Turn barrel adjuster fully into derailleur body (or shift lever) then turn counter clockwise two turns to allow for index adjustments. Loosen inner wire pinch bolt and gently pull on inner wire with fourth hand tool or pliers to remove slack. Tighten inner wire pinch bolt.
      5. If derailleur will not shift one sprocket after removing slack in "d", return lever back to outermost sprocket position and increase inner wire tension by turning barrel adjuster counter-clockwise 1/4 turn and attempt shift again.
      6. Shift to second sprocket in rear. Pedal and increase inner wire tension by continuing to turn adjusting barrel counter-clockwise until a definite rattling is heard. Rattle is from chain scrapping against next sprocket.
      7. Once a too-tight rattle is achieved, turn barrel adjuster 1/4 turn clockwise, to release inner wire tension, and pedal again. Listen and look for signs of scraping or rattling. Continue turning barrel adjuster 1/4 turn clockwise at a time until rattle disappears.
      8. Shift derailleur one sprocket inward at a time, listening for signs of rattle, indicating a too tight inner wire. Turn adjusting barrel 1/4 turn clockwise to eliminate rattle. Note: Do not attempt shift to largest rear sprocket while in largest front sprocket. This gear is normally not used and adjusting tension to this shift may compromise other commonly used gears.
      9. Shift to innermost (smallest) chainring and check gears again. If no rattling is present, index adjustment is done.

      Shimano "Rapid Rise" or "Low-Normal" Derailleur Indexing Adjustment

      Shimano "rapid rise" or "Low-Normal" derailleurs use a return spring that puts the derailleur under the innermost rear sprocket when the inner wire tension is released. As with other indexing derailleurs, the inner wire tension should be set as tight as possible with good shifting. However, the symptoms of a too-tight setting are different, which for "Low-Normal" systems are when the derailleur shifts outward slowly, or a there is a rattle from the upper pulley being aligned too far outward. Look underneath the rear sprocket at the alignment of the upper pulley when there is a rattle to see if this is the cause.
      1. Shift chain to middle ring in front and innermost sprocket in back.
      2. Pedal and shift lever one position.
      3. Pedal and turn barrel adjuster counter-clockwise to tighten inner wire tension until chain begins to shift outward.
      4. Turn barrel adjuster clockwise 1/4 turn until chain runs smoothly on second cog.
      5. Shift outward one sprocket at a time trying each gear. Turn barrel adjuster 1/4 turn clockwise if too tight symptoms occur.
      6. Shift to all other normal gear combinations and test adjustment.
      NOTE: The indexing procedure here assumes that there are no unusual problems, such as bent derailleurs, bent derailleur hangers or excess inner wire friction from dirt in the housing. Additionally, manufacturers design shift levers and drive train components to work within their system. Mixing brands within the drive train may lead to poor shifting. This is referred to as an compatibility problem.

Stored Procedure Template for Try/Catch with Transaction Handling  

Posted by ReelTym



set nocount on;
declare @trancount int = @@trancount;
begin try
    if @trancount = 0 begin tran
    else save tran ScriptSavePoint;
   
[code goes here]

    if @trancount = 0 commit;
end try
begin catch
    declare
        @error      int             = ERROR_NUMBER(),
        @message    varchar(4000)   = ERROR_MESSAGE(),
        @xstate     int             = XACT_STATE();
    if ( @xstate = -1 ) or ( @xstate = 1 and @trancount = 0 ) rollback
    if ( @xstate = 1 and @trancount > 0 ) rollback ScriptSavePoint;

    raiserror ('ERROR: %d : %s', 16, 1, @error, @message) ;
end catch  

ParseDateTime.cmd  

Posted by ReelTym

::::::::::::::::::::::::::::::::
:: Parse Date/Time
::
:: Test/Example:
::
::     ParseDateTime.cmd WITHECHO
::     echo date=[%date%] time=[%time%] year=[%year%] month=[%month%] day=[%day%] hour=[%hour%] minute=[%minute%] second=[%second%] hundredth=[%hundredth%]
::
::::::::::::::::::::::::::::::::
@echo off&setlocal
for /f "tokens=1-4 delims=/-. " %%G in ('date /t') do (call :s_fixdate %%G %%H %%I %%J)
goto :s_print_the_date
  
:s_fixdate
if "%1:~0,1%" gtr "9" shift
for /f "skip=1 tokens=2-4 delims=(-)" %%G in ('echo.^|date') do (set %%G=%1&set %%H=%2&set %%I=%3)
goto :eof

:s_print_the_date
endlocal&(
    echo.|date|find "JJ">nul
    if errorlevel 1 (
        :: English locale
        REM echo  year:[%yy%]  month:[%mm%]  day:[%dd%]
        set year=%yy%
        set month=%mm%
        set day=%dd%
    ) else (
        :: German locale
        REM echo  jahr:[%JJ%]  monat:[%MM%]  tag:[%TT%]
        set year=%JJ%
        set month=%MM%
        set day=%TT%
    )
)

for /f "tokens=1-4 delims=.:, " %%i in ("%time%") do (
    set hour=%%i
    set minute=%%j
    set second=%%k
    set hundredth=%%l
)
if %hour% lss 10 set hour=0%hour%

if "%1"=="WITHECHO" echo %year%-%month%-%day% %hour%:%minute%:%second%.%hundredth%

Useful MS DOS Commands  

Posted by ReelTym


Create a 15 second delay (Win98, WinNT, WinXP):
ping -n 15 localhost > NUL
the "localhost" could also be 127.0.0.1, and change the "15" to the number of seconds delay required.

Get the time down to a 100th of a second (WinNT, WinXP):
for /F "tokens=5 delims= " %i in ('echo ^| time ^| find "current" ') do echo %i
if used in a batch file, change the %i to %%i and "echo %i" to something like "set ttn=%%i
or, but only in WinXP:
for /F "tokens=1 delims= " %i in ('echo.%TIME%') do echo %i
or, if you only want to print it directly to the screen and don't need to save it to a variable, use:
echo %TIME%
Could also use:
for /F "tokens=1-3 delims=: " %i in ('time /t') do echo %i%j%k
But have found this last method to be very dependant on the Regional settings of Windows, of which you may or may not have control over and does not have the 100th's.
Got sent the following one from Christoph Sternberg, which works a treat with WinXP, and is a lot easier that the 'for' method:
echo %time:~0,2%%time:~3,2%%time:~6,2%%time:~9,2%
which can also be used in a 'set' command, just as well
set ttrn=%time:~0,2%%time:~3,2%%time:~6,2%%time:~9,2%

Get the date in "yyyymmdd" format (WinNT, WinXP):
for /F "tokens=2-4 delims=/ " %i in ('date /t') do echo %k%i%j
This one does assume the date is displayed as mm/dd/yyyy, with separators of "/" when "date /t" is excuted.
A little playing after checking the output of "date /t" can soon correct any change.
Have found it to be useful when wanting to produce unique daily filenames for log files.
Got sent the following one from Christoph Sternberg, which works a treat with WinXP, and is a lot easier that the 'for' method:
echo %date:~6,4%%date:~3,2%%date:~0,2%
which can also be used in a 'set' command, just as well
set tddt=%date:~6,4%%date:~3,2%%date:~0,2%


Create a new file, or completely blank an existing (Win98, WinNT, WinXP):
type NUL>newfile.txt
This will create a new file named "newfile.txt" with a 0 byte count, it is completely empty.

Change a File's Date and Time Stamp to current (Win98):
copy thefilename.txt /B+ ,,/Y
and if you need to do a bulk change to a whole directory of gif files:
for %i in ('dir *.gif') do copy %i /B+ ,,/Y
which all change the Date/Time stamp of all the files with the extension GIF in the current directory.
Have not tested in WinNT or WinXP yet.

Create a unique filename use date and time (WinNT, WinXP):
The following is a short batch file that uses date and time to create a unique filename.
@echo off
:: file = makenew.bat
::
:: description = this batch file uses current date and time to create a file with a unique filename

::
:: Date         Author    Change/Update
:: 04-Jun-2005  AGButler  Original
::
 
:: set variables
set tdtd=none
set ttrn=none

 
:: get the date and time and then into single variable
for /F "tokens=2-4 delims=/ " %%i in ('date /t') do set tdtd=%%i%%j%%k
for /F "tokens=5-8 delims=:. " %%i in ('echo.^| time ^| find "current" ') do set ttrn=%%i%%j%%k%%l
set tufn=%tdtd%%ttrn%.txt
 
:: now create the file
type NUL>%tufn%
 
:EOF

Will have to play a little with "date" line to get the delims and order of the %%i %%j %%k correct. To check just type date on the command line and use ouput to change. Have not tested in Win98.

Remove or Substitue characters with a variable(winXP):
It is possible to do some neat functions with DOS scripts. One that is often very useful is Removing or Substituting characters with a variable.
So you have a variable that may have some thing like the time, that contain ":" collin characters "20:12:34.54", but you want to remove the collins. This can be done relitively easily with the SET command. The following script will load the time into a variable "ttrn", then remove the collins and then remove the period.
for /F "tokens=5 delims= " %%i in ('echo.^|time^|find "current" ') do set ttrn=%%i 

echo %ttrn%

set ttrn=%ttrn::=%

echo %ttrn%

set ttrn=%ttrn:.=%

echo %ttrn%
You basically have the variable the a : then the character to search for the = then the character to subsitute, if none the a deletion occurs.
variable=%variable:search=replace%
It is also useful, if loading data from a file that may enclosed in quotes, and then just use SET to remove the quotes.

Dealing with large numbers like disk free bytes for Gigabyte capacity drives, 10,000,000,000(winXP):
My problem was that when using the "fsutil" command in WinXP, Win2K and Win2K3 to retrieve the capacity and free bytes of disk drives, that were to large to be able to be used in arithmetic commands. The task was to read the capacity and compare to the free remaining and make a call if the free remaining had dropped below a set level.
The solution was to use a series of SET commands, that could simulate the conversion of Bytes into Gigabytes. OK it is not highly accurate, but it is enough to be able to assess if a drive is 90% free remaining or 2% free remaining or anywhere in between.
What the follow will do is: - put the capacity and free bytes of my C: drive into variables.  - cut off the last 6 digits, simulating conversion from Bytes to Megabytes. - Check to make sure the result has not gone below 1MB, if it has then make it 1MB. - Calculate the capacity used. This will be a number between 1 and the Total Capacity. The smaller the number the more used, or less free. - Then make an action based on the limit set.
:: put the capacity and free bytes of my C: drive into variables from the fsutil command
for /F "tokens=7 delims= " %%i in ('fsutil volume diskfree c:^|find "Total # of free bytes" ') do set ctmp1=%%i
for /F "tokens=6 delims= " %%i in ('fsutil volume diskfree c:^|find "Totel # of bytes" ') do set ctmp2=%%i


:: shorten the strings removing last 6 characters simulating conversion from Bytes to MegaBytes
set ctmp1=%ctmp1:~0,-6%
set ctmp2=%ctmp2:~0,-6%


:: check to ensure that "free bytes" now contains something, if not then make equal to 1
:: the variable will be left as is if it contains anything initially, only changes when nul
if .%ctmp1%==. set ctmp1=1


:: now evaluate using the two variables
:: this will produce a RESULT between 1(plenty of free disk) and the capacity of the drive in MegaBytes(near full)
set /A ctmp3=%ctmp2%/%ctmp1%


:: the following assumes for example a 1GB(1000MB) drive has only 100MB free remaining then = LOW
:: set a dummy result, then make a check
set ctmp4=OK
if %ctmp3% GTR 10 set ctmp4=LOW


:: output the result
echo Your C: Drive remaining capacity = %ctmp4%

It does only produce a simple rough guide, but is effective enough to judge whole percentage changes, which should be able to catch a drive at 10% remaining before it gets to 0%, leaving enough time for some action.
You can also change the 'set dummy and make a check' lines to be a bit more fail safe by:
set ctmp4=LOW
if %ctmp3% LSS 10 set ctmp4=OK
It can take a little bit of playing with, but is an excellent method of keeping an eye on your drive capacities without the need for any fancy software. It is also highly scalable for what ever drive capacity and limits that need to be set or monitored.

Creating and using a variable array in DOS(winXP):
I searched everywhere without success for a method to produce an array in DOS.
This solution has proven to be very successful.
The basics is to use a variable name that has some type of separator, like a period ".", the second half of the variable name can then be substituted with the contents of another variable, following is very a simple example.
:: set the segment variables 
set agbtp.1=A 
set agbtp.2=B 
Notice the period between the 'agbtp' and '1' ?
Next setup or supply a third variable that will be substituted into the array.
:: set the segid
set segid=1
Now put the whole lot in to a FOR-DO to obtain the new variable from the array based on the supplied segid. Note the '^=' in the delims, this allows the search to use the '=' as a separator. The 'find' with the ".variable=" is also necessary to do the correct filtering.
 :: calculate the Segment printed variable
for /F "tokens=2 delims=^=" %%i in ('set agbtp.%segid% ^| find ".%segid%=" ') do set psegid=%%i
This resulted in the variable 'psegid' now containing 'A'.
If the variable 'segid' had been loaded with the value '2', then the 'psegid' would then contain 'B'.
This may all appear very simplistic, but if there was a problem where you wanted to count from 0 to 255, and on each count, produce the output in HEX (00-FF). Setup an array of:
set myhex.0=00
set myhex.1=01
set myhex.2=02
 "    "      " - (repeat from 3 to 252 / 03 to FC)
set myhex.253=FD
set myhex.254=FE
set myhex.255=FF
Set up a counting loop.
set /A cntr=0
set /A scntr=256
:loop
Then substitute in the variable and output the results.
for /F "tokens=2 delims=^=" %%i in ('set myhex.%cntr% ^| find ".%cntr%=" ') do echo %%i
Which can be simplified by removal of the 'find' command to be.
for /F "tokens=2 delims=^=" %%i in ('set myhex.%cntr%') do echo %%i
And loop until finished.
set /A cntr=%cntr%+1
if NOT [%scntr%]==[%cntr%] goto loop
This technique can be used to read data or configuration from a text file, into an array.

Reign Spring Swing 2012 Champions  

Posted by ReelTym


Go Reign!

Loud and proud!

Crush it!

Play hard. Rest harder.

Bringin' the heat!!!

Mixin' it up...

Every play! Everyday!

Game face..."No Fear!"

Battle at Home Plate

Woodinville Reign '97 (14U) Fastpitch  

Posted by ReelTym

SQL_VARIANT Value DataType Definition  

Posted by ReelTym

declare @variants table ( Value sql_variant, ordinal int identity(1,1) primary key clustered )
insert into @variants ( Value ) select convert( bigint, 4 )
insert into @variants ( Value ) select convert( binary(10), '1234567890' )
insert into @variants ( Value ) select convert( char(10), '1234567890' )
insert into @variants ( Value ) select convert( date, '2012-03-21 01:23:45' )
insert into @variants ( Value ) select convert( datetime, '2012-03-21 01:23:45' )
insert into @variants ( Value ) select convert( datetime2(6), '2012-03-21 01:23:45' )
insert into @variants ( Value ) select convert( datetimeoffset, '2012-03-21 01:23:45' )
insert into @variants ( Value ) select convert( decimal(9,3), 3.45 )
insert into @variants ( Value ) select convert( float, 0.12 )
insert into @variants ( Value ) select convert( int, 0 )
insert into @variants ( Value ) select convert( money, 7.89 )
insert into @variants ( Value ) select convert( nchar(10), '1234567890' )
insert into @variants ( Value ) select convert( numeric, 4.56 )
insert into @variants ( Value ) select convert( nvarchar(10), '1234567890' )
insert into @variants ( Value ) select convert( real, 3 )
insert into @variants ( Value ) select convert( smalldatetime, '2012-03-21 01:23:45' )
insert into @variants ( Value ) select convert( smallint, 2 )
insert into @variants ( Value ) select convert( smallmoney, 0.12 )
insert into @variants ( Value ) select convert( time, '01:23:45' )
insert into @variants ( Value ) select convert( tinyint, 1 )
insert into @variants ( Value ) select convert( uniqueidentifier, newid() )
insert into @variants ( Value ) select convert( varbinary(10), '1234567890' )
insert into @variants ( Value ) select convert( varchar(10), 'varchar(10)' )
select
    ordinal
    --,Value
    ,convert( sysname, SQL_VARIANT_PROPERTY( Value, 'BaseType' ) )
    ,convert( int, SQL_VARIANT_PROPERTY( Value, 'Precision' ) )
    ,convert( int, SQL_VARIANT_PROPERTY( Value, 'Scale' ) )
    ,convert( int, SQL_VARIANT_PROPERTY( Value, 'TotalBytes' ) )
    ,convert( sysname, SQL_VARIANT_PROPERTY( Value, 'Collation' ) )
    ,convert( int, SQL_VARIANT_PROPERTY( Value, 'MaxLength' ) )
    ,data_definition =
        case
            when SQL_VARIANT_PROPERTY(Value,'BaseType') in ('bit', 'tinyint', 'smallint', 'int', 'bigint', 'real', 'smallmoney', 'money','text', 'ntext', 'image', 'date', 'time', 'smalldatetime', 'datetime','timestamp', 'sql_variant', 'xml', 'hierarchyid', 'uniqueidentifier')
                then convert( nvarchar, SQL_VARIANT_PROPERTY( Value, 'BaseType' ) )
            when SQL_VARIANT_PROPERTY(Value,'BaseType') in ('numeric', 'decimal')
                then convert( nvarchar, SQL_VARIANT_PROPERTY( Value, 'BaseType' ) )
                    + N'(' + convert(nvarchar,SQL_VARIANT_PROPERTY(Value,'Precision'))
                    + N',' + convert(nvarchar,SQL_VARIANT_PROPERTY(Value,'Scale'))
                    + N')'
            when SQL_VARIANT_PROPERTY(Value,'BaseType') in ('float')
                then convert( nvarchar, SQL_VARIANT_PROPERTY( Value, 'BaseType' ) )
                    + N'(' + convert(nvarchar,SQL_VARIANT_PROPERTY(Value,'Precision'))
                    + N')'
            when SQL_VARIANT_PROPERTY(Value,'BaseType') in ('char', 'varchar', 'binary', 'varbinary')
                then convert( nvarchar, SQL_VARIANT_PROPERTY( Value, 'BaseType' ) )
                    + N'('
                    + case
                        when convert( int, SQL_VARIANT_PROPERTY(Value,'MaxLength') ) = -1
                            then 'max'
                        else convert(nvarchar,SQL_VARIANT_PROPERTY(Value,'MaxLength'))
                        end
                    + N')'
            when SQL_VARIANT_PROPERTY(Value,'BaseType') in ('nchar', 'nvarchar')
                then convert( nvarchar, SQL_VARIANT_PROPERTY( Value, 'BaseType' ) )
                    + N'('
                    + case
                        when convert( int, SQL_VARIANT_PROPERTY(Value,'MaxLength') ) = -1
                            then 'max'
                        else convert(nvarchar,convert(int,SQL_VARIANT_PROPERTY(Value,'MaxLength'))/2)
                        end
                    + N')'
            when SQL_VARIANT_PROPERTY(Value,'BaseType') in ('datetime2', 'datetimeoffset')
                then convert( nvarchar, SQL_VARIANT_PROPERTY( Value, 'BaseType' ) )
                    + case
                        when convert( int, SQL_VARIANT_PROPERTY(Value,'Scale') ) > 0
                            then N'(' + convert(nvarchar,SQL_VARIANT_PROPERTY(Value,'Scale')) + N')'
                        else N'' end
                else 'unknown'
            end
    from @variants
    order by ordinal