Back to building… Let’s start a proper jet :-)

It’s time to start from scratch on a new turbo jet. This site will be used to document the build; hopefully updates will not be as infrequent as they’ve been.

Specs for this new jet will be laid out here and this post will be referred to quite often throughout the build.

Engine Hardware Specs

  • Used [type] turbocharger based engine
  • 40+lbs thrust target
  • Propane fueled for testing, Kerosene/other liquid fuel for operation
  • Self-contained starting and charging
  • Weight under max thrust (40lbs?)
  • Combustor from recycled stainless steel exhaust parts
  • Oil and water cooled
  • Fuel heat using oil or combustor radiator

Engine Firmware/Software

  • Raspberry pi/arduino control and sensor package
  • Control channels
    1. Throttle
    2. Starter
    3. Shutdown
    4. Reheat
  • Sensor and data logging channels
    1. Fuel pressur
    2. Oil pressure
    3. Oil Temp
    4. Coolant temp
    5. Coolant pressure
    6. RPM
    7. Main fuel injector PWM %
    8. Reheat fuel injector PWM %
    9. Voltage
    10. Combustor Pressure
    11. Combustor Temp

Immediate Plans And Parts Lists

Currently most hardware is on the shelf:

  • Turbo – needs cleaning, but bearings are in spec
  • Coolant and oil pump – R1 unit
  • Radiators – oil cooler is 2 row aftermarket, and radiator will be aluminum unit from DRZ
  • Combustor tubing – several old stainless steel muffler sleeves and muffler cores

Needed hardware:

  • Ignition system – have a neon transformer (very heavy) or build a sparker system using motorcycle ignition parts
  • Oil sump – could be fabricated from stainless
  • Fuel pump – use an automotive in-tank style pump
  • Fuel tank – probably should be fabricated from stainless, too
  • Fuel injectors – need to make a small fuel rail to use GM style (cheap) injectors
  • Fuel / oil filters – some type of external filter should be installed


From an anonymous Google Doc about SOPA

Found on

Do you really want the lobbyist writing the biggest checks (RIAA & MPAA, we’re all watching you!) to control internet censorship? Please write to your representatives and senators telling them that you’re against these acts! I wrote this to my rep:

I’m assuming you’ve already received several messages like this, but I wanted to add my voice to those opposed to SOPA & PIPA. I believe the type of censorship allowed by these laws would directly contradict one of our most important rights as spelled out in the first amendment. The PEOPLE stand to lose the most if these are passed; the people who elected you to protect their rights and fight for their interests.
Thank You

2-11c41dbe24.jpg 904×1169

Want to hide upper level categories in ZenCart?

A simple categories sidebox mod to hide non-active upper branches in the category tree

On The category tree is used for Make-Model-Year application/fitment browsing. The problem: by the time you’re into the year level of the tree, you may be displaying 100s of mid-level categories that will simply be superfluous to the user. The ideal solution would be to have the current branches of the tree shown, and hide the rest. The thought being: if a customer is shopping for parts for their bike, it’s unlikely they’ll want to jump around to different makes and models.

There is one consideration: this uses the cpath in the URL, so obviously only works if the cpath is displayed. Most re-write mods should give the option to leave it on. If you see something like ‘?cPath=123_456_789’ when browsing by category, you’re set! The implementation is pretty simple using CSS and adding a few classes to the HTML in the PHP script that builds the category display. The CSS is a quite simple couple of lines:

.drewsInactiveClass {
.category-subs-selected {

This simply hides the inactive class, and adds emphasis to the current branch. The second class isn’t really required, but does allow extra emphasis if you leave the specials, featured products, or other categories permanently displayed.

The categories sidebox edits happen in ‘tpl_categories.php’ in your template/sideboxes directory. This mod was done using the ‘better categories’ mod, but the principle remains the same in the standard categories sidebox. For love of your sanity, backup the original file first!

If you want a ‘Home’ level you’ll need to add this line to the beginning of the $content building:

$content .= '<div class="betterCategories"><a class="category-top" href="/"><span class="category-subs-parent">HOME</span></a></div>';

Add it directly after:

$content = "";
$content .= '<div id="' . str_replace('_', '-', $box_id . 'Content') . '" class="sideBoxContent">' . "\n";

Use the following code to determine the category level based on the cpath in the URL (it’s quick dirty code and can probably be greatly improved, but it works). This should all go in the for loop that builds the tree, but before any output to the $content variable:

$tpcpathnum = explode('cPath=',$box_categories_array[$i]['path']);
//explode the cpath string into chunks, the last will be the string num

$cpathnum = $tpcpathnum[1];
//pass the cpath num to it's own var

$cpathnumar = explode('_',$tpcpathnum[1]);
//explode the current cpath into cats/subs

$curcpathar = explode('_',$_GET[cPath]);
//explode the current pages cpath into cats/subs

$thisparentcat = $cpathnumar[0];
$pageparentcat = $curcpathar[0];
$thisSecLevCat = $cpathnumar[1];
$pageSecLevCat = $curcpathar[1];
$thisThdLevCat = $cpathnumar[2];
$pageThdLevCat = $curcpathar[2];
$thisForLevCat = $cpathnumar[3];
$pageForLevCat = $curcpathar[3];
$thisFivLevCat = $cpathnumar[4];
$pageFivLevCat = $curcpathar[4];
$thiscatlevels = count($cpathnumar);
$pagecatlevels = count($curcpathar) + 1;

if ($_GET[cPath] == null) {             
        //set all current if it's not a cat page
        $drewsstylepointer = ' drewsCurrentClass';
        //note that this class isn't styled in the stylesheet, but could be if desired
} else {
        $drewsstylepointer = ' drewsInactiveClass';
        if($thisparentcat == $pageparentcat && ($thiscatlevels == 1 || $thiscatlevels == $pagecatlevels)) {
                //includes the parent categ ONLY!
                $drewsstylepointer = ' drewsCurrentClass';
        if($thisSecLevCat == $pageSecLevCat && ($thiscatlevels == 2 || $thiscatlevels == $pagecatlevels)) {
                $drewsstylepointer = ' drewsCurrentClass';
        if($thisThdLevCat == $pageThdLevCat && ($thiscatlevels == 3 || $thiscatlevels == $pagecatlevels)) {
                $drewsstylepointer = ' drewsCurrentClass';
        if($thisForLevCat == $pageForLevCat && ($thiscatlevels == 4 || $thiscatlevels == $pagecatlevels)) {
                $drewsstylepointer = ' drewsCurrentClass';
        if($thisFivLevCat == $pageFivLevCat && ($thiscatlevels == 5 || $thiscatlevels == $pagecatlevels)) {
                $drewsstylepointer = ' drewsCurrentClass';

Now the $drewsstylepointer var will have the class needed to hide or show the branch as desired. The last thing to change; actually inserting the style. There should be a line that builds the div or anchor used to display the branch very similar to this:

$content .= '<div class="betterCategories"><a class="' . $new_style . '" href="' . zen_href_link ...

Simply concatenate the new style variable into the div (or anchor, whatever your sidebox uses):

$content .= '<div class="betterCategories' . $drewsstylepointer . '"><a class="' . $new_style . '" href="' . zen_href_link ...

That’s all it takes! This should now eliminate the extraneous category branches when browsing via application. For instance, when browsing for parts here: Suzuki -> DRZ400 -> 2003, the category sidebox won’t be filled with all the other makes, models, and years causing the page to stretch down to oblivion. Navigation up and down is easier, and all the categories are still there, only hidden. This also has the benefit not breaking the page for bots, text only, and other non-visual clients.

If anyone would like the modified files, please ask and I’ll post them or email them to you. Also, suggestions on improving this code or methodology are greatly appreciated.

Simple, easy to use javascript to block copy and paste (context menu) from specific parts of a webpage

At my work, I often spend time changing hot-linked images to screw with our lazy competitors (god I wish prostores would give its users access to .htaccess!). I’ve used several methods to make our listings a little bit more of a pain on the ass to copy, but once they’re on ebay, all bets are off. There’s one of our competitors that just uses the good old copy paste method of generating listings. I’ve changed hot-linked images on him, it seems he never notices. Of course if we’re editing and posting stock photos from a manufacturer, we have no copyright claim on the image. I’ve also thought of using one of the many scripts that disable right clicking or selecting anywhere on a page. These would probably add enough work that he would lay off, but ebay thoroughly disapproves of anything that changes the functionality of their site. A great example of one of these can be found at Rainbow Arch:

<SCRIPT TYPE="text/javascript"> 
//Disable right click script 
var message="Sorry, right-click has been disabled"; 
function clickIE() {if (document.all) {(message);return false;}} 
function clickNS(e) {if 
(document.layers||(document.getElementById&amp;&amp;!document.all)) { 
if (e.which==2||e.which==3) {(message);return false;}}} 
if (document.layers) 
document.oncontextmenu=new Function("return false") 
// --> 


<SCRIPT TYPE="text/javascript"> 
//Disable select-text script (IE4+, NS6+)
function disableselect(e){
return false
function reEnable(){
return true
//if IE4+
document.onselectstart=new Function ("return false") 
//if NS6
if (window.sidebar){
// -->

An excellent solution, but it would eventually get us on eBay’s shitlist.

I recently came across a much more elegant solution… I came across the ‘oncontextmenu’ event thanks to an article on This method is so much more efficient, as the context menu really is what you’re trying to block with a ‘no right click’ script. The real beauty of this method, is that it can be used on individual elements instead of the entire page! All of my listing templates use a main wrapper for styling, so all that needs to be done is add the following to the main wrapper tag:

oncontextmenu="return false;"

Easy! This still allows text selection and [ctrl]+c to copy, but is vastly more effective than background image swaps and massive no right click scripts. Drag and drop probably still works the same, but there’s not much to be done about that. It’s one more bit of work that our lazy-ass competitors will have to deal with though!