Simple timber patio design for side of house (pergola)

Having completed a recent pergola at the rear of my home, I thought I would share the timber patio design planning and design drawings which can be referenced when creating your own.

My pergola was attached to one side of my home’s wall on the existing roof’s fascia. Length was 12m and protruded 2.4m from the wall. It was a timber design due to the existing features.

Timber patio design materials, the timber:

  • QTY5, 90mm x 90mm x 2.4m H3 treated pine posts
  • QTY1, 190mm x 45mm x 12m H3 treated pine outer beam
  • QTY1, 120mm x 45mm x 12m H3 treated pine inner beam
  • QTY17, 120mm x 45mm x 2.4m H3 treated pine rafters
  • QTY5, 70mm x 35mm x 12m H3 treated pine batterns

Timber patio design materials, the fixings:

  • QTY5, 90mm galvanised stirrups
  • QTY12, galvanised fascia bracket/straps
  • QTY24, 60mm galvanised bolts and nuts for the fascia brackets/straps
  • QTY10, 120mm galvanised bolts and nuts for stirrups
  • QTY10, 100mm galvanised bolts and nuts for attaching beam to posts
  • QTY100, 75mm galvanises nails
  • QTY60, battern self-tapping screws

Timber patio design downloads:

Updated How to win at Markstrat (Tips and Tricks)

Markstrat is the marketing simulation game played in teams. In 2013 I posted a tips and tricks on how to win at Markstrat, I’ve now been lucky to be involved in some further Markstrat simulations, and thought it was worthwhile sharing the learnings.

The previous posts are still relevant, and go into a lot more detail, this post will simply add on and reiterate key points.

Markstrat starter information

I realised that the tip and tricks I previously posted were for those that were well conversed with the Markstrat world, there were some key points that I assumed were already known, being involved with some teams from the beginning made me realise that was not the case, below are some starting pointers.

  • completely (value of zero) use up all of your budget.
  • stick to one product per market segment, there are no exceptions to this rule, the reason being
    • it is impossible to build a product with ideal values for two segments.
    • it increases the products competition, i.e. you may have x competitors in one segment and y competitors in another segment, targeting two segments means x plus y competitors.
    • it dilutes advertising spend, making it harder to conquer a segment.
    • and similarly, the aim is to dominate a market segment, it is very difficult to do two at same time.
  • early on, when you start with two products, chose the product that is the highest total contribution margin segment (CM x total estimated volume) (cull the other product)
  • when decided on which product to cull early on, look at which product is closest in characteristics to the competitors. You want to differentiate your product early on compared to the competitors.
  • observe the budget of competitors, you start with around $7.1m the minimum budget cap, there is a maximum budget cap of about $x so to prevent teams dominating the game, each period the minimum and maximum increase roughly 2.85% per inflation.

And the main takeaways for Markstrat beginners are;

Do not get emotionally attached to products – it is very easy to want to keep both your products at the start, don’t. You will be competing against others who may have one good product and one bad product, they will be spending money on their single good product.

Do not get emotionally attached to segments –  it is very easy to want to throw some advertising to those segments that are buying small amounts, don’t. Concentrate on one segment only.

Vodite market

As I previously posted, I mentioned to get in Vodites straight away with a budget product, this will still allow you to sell at a ridiculous price since being the only product in the marketplace.

What I have also found is that if you are competing for the highest shareprice, you need to diversify into the Vodite market as it appeases investors. Even if you are doing well in the Sonite market alone, it maybe worth creating a Vodite product to get an additional SPI bump.

Suggested Markstrat gameplay

I have seen a new starting scenario in which every single team gets the same two products, this is obviously a lot fairer, but means a number of new strategies. The main issues is because everyone starts with the same product, it is key to differentiate the products by R&D, rather than advertising spent. The problem if R&D is that the research isn’t available.

My suggested gamplay for the early rounds is significantly change your products prices (more than 30%) possibly go midway between your two products. Price is the only characteristic that doesn’t need to be R&D, use this to your advantage and then spend advertising on price. What this would do is move the market towards your product away from others.

With no research available it seems counter productive to R&D a product this early on, but if you don’t you will be wasting a round. Simple R&D a product mid point in characteristics between your two products, this will mean you are completely differentiated to your competitor products.

Advertising

The general rule is still always that; your portion of advertising spend compared to competitors will be your market share. For new products always use no-objectives to increase brand awareness. Never cull your existing two products as they have really high brand awareness, always reuse them, even if you are targeting a new segment.

Commercial Team

Previously, I posted that commercial team doesn’t really matter and to only meet the commercial team of competitors, I was quite wrong. The commercial team moves your products, a low commercial team will automatically default to your competitor’s commercial teams picking up the slack.

Once suggestion I have, increase your commercial team by a minimum of the increase the market’s segment. For the large segments it is not unusual to have more than 200 people in the later rounds.

 

Moto G powering off (rebooting) to TWRP after Over the Air update

A quick post about updating your Moto G, if you apply the Over the Air updates on a rooted phone like I did, it may boot into the Team Win Recovery Project.

The solution is to clear the Cache. simple

Review of EaseUS Partition Master Professional v10.8

The following is a review of EaseUS Partition Master Professional, I was lucky enough to pick this up for free copy thanks to a posting on OzBargain, keep on the lookout as EaseUS regularly has EaseUS Partition Master Pro free.

I have used Partition Master Pro many times previously, it is an established product, well reputed, I have never had an issue with it.

Fairly straight forward to use, though at times the interface can be a little confusing.

For a quick demo of resizing a partition.

  • Select the hard disk drive (make sure to select the larger volume and not the recover partition)
  • Drag the partition to decrease the size, hit OK, then Apply and it will state it needs to restart.
  • Restart and let the software do its magic
  • Once booted into Windows, you can create a new volume on the free drive partition space

 

Review of EaseUS Partition Master Professional v10.8 Resizing Review of EaseUS Partition Master Professional v10.8 Boot ModeReview of EaseUS Partition Master Professional v10.8 Finished Partition

Review of Plunkett – $4.5k down and 1 year wasted

Following up a comment I posted on productreview, here is the timeline of events when I signed the PPA and paid the $4500 fee;

  • 8th Sep 2012 – Signed PPA, Informed verbally by Sales Rep slab down by Christmas.
  • 18th Sep 2012 – “Travis, we also need the landscaping plan done for submission to council, a new rule change. Do you wish for us to organise and bill you or do you wish to do? Must now be submitted with planning”. I contacted council and they said the council had imposed this requirement for a few months. Why wasn’t I informed about this additional cost prior to PPA?
  • 20th Sep 2012 – Sales Rep agrees to include the landscape amount in the PPA, since I have paid for the contour survey out of my own pocket. Note, I have never received any landscape plan even though it was included in the PPA. At the same time Sales Rep asks for referrals.
  • 3rd Nov 2012 – reached the 8th week of the informed 6 to 8 week time-frame for council submission. Was informed on the phone by Sales Rep another 3 weeks till plans are submitted.
  • 23rd Nov 2012 – Sales Rep 2 makes contact for the first time requesting signing of council submission form.
  • 10th Dec 2012 – council sends me acknowledgement of development application lodged. (over 3 months from signing of the PPA…)
  • 18th Jan 2013 – receive contracts in the mail and welcome pack. I forward to my bank NAB that informs me the progressive payments are not standard and too aggressive.
  • 30th Jan 2013 – Sales Rep 2 provides me an update that it is in planning which was nice.
  • 2nd Feb 2013 – meet with the designer for selections.
  • 15th Feb 2013 – I speak to council myself and find out the design doesn’t comply and Plunkett was notified 8th Feb. I was not informed by Sales Rep 2 or Sales Rep and contacted Sales Rep 2 myself.
  • 22nd Feb 2013 – Follow up with Sales Rep 2, says she has been unwell.
  • 4th April 2013 – Sales Rep calls me to inform that they wish to redesign the units. I confirm ok via email.
  • 15th April 2013 – follow up how it is progressing with Sales Rep ‘Travis, Ill se [sic] where it is. We had the biggest month in Plunkett’s history, so we are running behind’
  • 29th May 2013 – resubmits to council
  • 4th June 2013 – Sales Rep sends me updated PPA with prices ‘Travis, I have your price for the 2 Storey. If I can get you to sign off on it and date it the 31st of May, I will get a bonus, so I can discount it $5K as long as it comes back before 4pm today’. As it is now a double story, the price of the drawings increases, I sign a new PPA to reflect this but he doesn’t push for the additional money which was good.
  • July 2013 – somewhere here the council does not approval the design again.
  • 11th Aug 2013 – reinitiate the conversation with Sales Rep querying the new r-code changes that took affect. Says he will have a look and get back tomorrow.
  • 10th Oct 2013 – receive email from Sales Rep, ‘Travis, sorry for the lateness in reply. I have been seriously unwell for the last couple of months so have been not fully functioning, and have missed some emails’
  • December 2014 – Now over 1 year since signing the PPA, Sales Rep calls me and asks if he can resubmit using new r-codes. By this time I have resubmitted plans myself as I decided that I can’t wait any longer.

Firmware for CMS2000 (Phoenixtec) solar invertor upgrade

With CMS in administration it is extremely difficult to find the latest firmware for CMS2000, I managed to find a copy from a Whirlpool forum member.

You can download it below;

CMS2000 Re Flash.rar

ModelParameter.zip

Below is an excerpt from the included procedure;

CMS 2000 Parameter Change.

  1. Apply DC supply only to the inverter. The unit will sit in ‘Grid Fault’ mode.

  2. Open Sunville Flash Tool ( or similar)

    image

  3. Click Setting & select your com port

    (if you do not know your com port settings. Contact your IT provider)

    image

  4. Click OK

  5. Click ‘load -> Open’ or click the folder icon to select the varied firmware version.

    image

  6. Select the file SV4KA.mot file

    image

  7. Click OK

  8. Click ‘flash’. If the correct coms port is selected the CMS 2000 will display FLASH. This process will take approx 2mins.

  9. Once the firmware is updated, you will get the following message, Click ‘OK’

    image

  10. Close the Flash Tool and open CMS ProControl. Select and enable the corresponding com port. (if you do not know your com port settings. Contact your IT provider)

    image

    image

  11. The serial number on the inverter will display.

    image

  12. Left click once to select the inverter. The bar at the top will go black.

    image

  13. Right click once and select parameter.

    image

  14. Password is: administrator

    The parameters will then be displayed.

    image

  15. Change the Vac-Max (V) to 270 volts, the highest permissible as per AS4777. Click Setting.

  16. Once your settings have changed. You will see the below message. Click OK

    image

  17. Disconnect the DC supply and allow the inverter to power down. Once discharged, turn on the DC and AC supply and connect to the grid. The current settings can be seen by double-clicking on the serial number in CMS ProControl.

    image

  18. Process Complete.

Model Parameters Error

Occasionally we have had the following error. If this occurs, you will not be able to change the parameter settings.

image

If this occurs, you can download the updated file from. http://carbonmanagement.com.au/support/ModelParameter.zip

Once this has been downloaded, you will need to extract the downloaded ModelParameter.txt file

& place it in c:\programfiles(x86)\CMS Pro Control & replace the existing file. Reopen CMS Pro Control & you should not see the error message.

PHP code/script to automatically purchase a Buy it Now (BIN) eBay item

Similar to my previous eBay bidding script, here is PHP code to automatically purchase a BIN item.

Note the script fails if immediate PayPal payment is required. Payment still needs to be performed manually.

Function takes item number only, so be careful with it.

	// MAIN BIDDING FUNCTION MAIN BIDDING FUNCTION
	// this function performs no checking on the input variables
	// $username  -  the eBay user name
	// $password  -  the eBay user password
	// $item      -  the eBay item number to buy
	// $link      -  itemlink with referral, can leave empty i.e. ''
	function place_bin($username, $password, $item, $link) {

		$cookies = dirname(__FILE__).'/cookies.txt';
		
		//set success as default false
		$success = false;
		$bid_success = false;

		$curl = curl_init();
		curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20100101 Firefox/15.0.1');
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
		curl_setopt($curl, CURLOPT_REFERER, $link);
		curl_setopt($curl, CURLOPT_COOKIEFILE, $cookies);
		curl_setopt($curl, CURLOPT_COOKIEJAR, $cookies);
		
		//query the sign-out page
		//curl_setopt($curl, CURLOPT_URL, "http://signin.ebay.com/ws/eBayISAPI.dll?SignIn&lgout=1");
		//$ret = curl_exec ($curl);
		
		//IMPORTANT		
		//query the sign-in page to set the cookies
		curl_setopt($curl, CURLOPT_URL, 'http://signin.ebay.com/aw-cgi/eBayISAPI.dll?SignIn&campid=5337161990&customid=7');
		curl_exec ($curl);
		
		//query the referal link page
		if ($link) {
			curl_setopt($curl, CURLOPT_URL, $link);
			$ret = curl_exec ($curl);
		}
		
		//sign-in
		curl_setopt($curl, CURLOPT_URL, "http://signin.ebay.com/aw-cgi/eBayISAPI.dll?MfcISAPICommand=SignInWelcome&siteid=0&co_partnerId=2&UsingSSL=0&ru=&pp=&pa1=&pa2=&pa3=&i1=-1&pageType=-1&userid={$username}&pass={$password}");
		$ret = curl_exec ($curl);
		if(curl_errno($curl)){
			ebaylog('Curl error: ' . curl_error($curl));
		}
		if (!$ret) {
			$ret = curl_exec ($curl);
			if(curl_errno($curl)){
				ebaylog('Curl error: ' . curl_error($curl));
			}
			if (!$ret) {
				$ret = curl_exec ($curl);
				if(curl_errno($curl)){
					ebaylog('Curl error: ' . curl_error($curl));
				}
			}
		}
		
		if (strpos($ret, '"loggedIn":true') === FALSE) {
			if (preg_match('%<b class="altTitle">(.*)</b>%', $ret, $regs)) {
				$err = $regs[1];
				ebaylog("\"{$err}\"");
				if (strpos($err, 'The alerts below') === 0) {
					ebaylog("{$item}: 'The alerts below' found, successful");
					//set it to succes
				}
			} else {
				ebaylog("{$item}: Failed signing in");
				if (preg_match('%<font face=".*?" size="3"><b>(.*?)</b></font>%', $ret, $regs)) {
					$err = $regs[1];
					ebaylog("\"{$err}\"");
				}
				
				//test_write($ret);
				goto end;
			}
			
			
		} else {
			ebaylog("{$item}: Success signing in");
		}
		
		
		//place the initial bin
		curl_setopt($curl, CURLOPT_URL, "http://offer.ebay.com/ws/eBayISAPI.dll?BinConfirm&item={$item}&quantity=1&campid=5337161990&customid=7");
		$ret = curl_exec ($curl);
		if(curl_errno($curl)){
			ebaylog('Curl error: ' . curl_error($curl));
		}
		if (!$ret) {
			$ret = curl_exec ($curl);
		}

		
		if (preg_match_all('/(?:value="([-0-9a-zA-Z]*)" *)?name="stok"(?: *value="([-0-9a-zA-Z]*)")?/', $ret, $regs)) {
			$stok = $regs[1][0];
		} else {
			//Failed to get 'stok' value
			//try and determine why
			
			//check if immediate paypal checkout required
			if (preg_match('%<p\W*>\W*(.*)</p>%i', $ret, $regs)) {
				$err = $regs[1];
				if (stripos($ret, "You're almost done!") === 0) {
					ebaylog("Requires immediate PayPal payment.");
					//set it to success
					$success = true;
					goto end;
				} else {
					test_write($ret);
				}
			
			} else if (preg_match('%<div class="statusDiv">(.*?)</div>%', $ret, $regs)) {
				$err = $regs[1];
				ebaylog("'{$err}'");
				//if string starts with "Enter US $0.41 or more"
				if (stripos($err, 'Transaction Blocked') === 0) {
					ebaylog("{$item}: 'Transaction Blocked' found, aborting");
					//set it to success
					$success = true;
				} else {
					test_write($ret);
				}
				
			} else if (preg_match('%"\d*" - Invalid Item</div>%', $ret)) {
				ebaylog("{$item}: 'Invalid Item' found, aborting");
				test_write($ret);
				//set it to success
				$success = true;
			} else if (preg_match('%<div class="subTlt"><ul class="errList"><li>(.*?)</li></ul></div>%', $ret)) {
				ebaylog("{$item}: 'no longer available' found, aborting");
				test_write($ret);
				//set it to success
				$success = true;
			} else if (preg_match('%id="w\d-\d-_msg".*?>(.*?)</span>%', $ret, $regs)) {
				ebaylog("'{$regs[1]}'");
			} else if (preg_match('%<div\s+class\s*=\s*"(?:errRed|errBlk|errTitle|statusDiv)"\s*>(.*?)</div>%i', $ret, $regs)) {
				ebaylog("'{$regs[1]}'");
			} else {
				//don't know why so log the page
				ebaylog("{$item}: Failed to get 'stok' value");
				test_write($ret);
			}
			goto end;
		}
		
		if (preg_match_all('/(?:value="([-0-9a-zA-Z]*)" *)?name="uiid"(?: *value="([-0-9a-zA-Z]*)")?/', $ret, $regs)) {
			$uiid = $regs[1][0];
		} else {
			ebaylog("{$item}: Failed to get 'uiid' value");
			goto end;
		}
		

		if ($stok && $uiid) {
			ebaylog("{$item}: Success placing initial bid");
		} else {
			ebaylog("{$item}: Failed placing initial bid");
			goto end;
			
		}
		
		//confirm the bid
		$temp = "http://offer.ebay.com/ws/eBayISAPI.dll?MfcISAPICommand=BinConfirm&quantity=1&mode=1&stok={$stok}&xoredirect=true&uiid={$uiid}&co_partnerid=2&user={$username}&fb=0&item={$item}&campid=5337161990&customid=7";
		curl_setopt($curl, CURLOPT_URL, $temp);
		$ret = curl_exec ($curl);
		if(curl_errno($curl)){
			ebaylog('Curl error: ' . curl_error($curl));
		}
		if (!$ret) {
			$ret = curl_exec ($curl);
		}
		
		if (stripos($ret, 'Commit to buy') !== FALSE) {
			ebaylog('Trying again');
			$ret = curl_exec ($curl);
			if(curl_errno($curl)){
				ebaylog('Curl error: ' . curl_error($curl));
			}
			if (!$ret) {
				$ret = curl_exec ($curl);
			}
		}
		
		//perform a number of tests to determine if the bid was a success
		$bid_success = true;
		if (stripos($ret, 'Please pay now to complete your purchase.') === FALSE) {
			$bid_success  = false;
			ebaylog("{$item}: Failed placing final bid");
			//try and determine why
			if (preg_match('%<div\s+class\s*=\s*"(?:errRed|errBlk|errTitle|statusDiv|title)"\s*>(.*?)</div>%i', $ret, $regs)) {
				$err = $regs[1];
				ebaylog("'{$err}'");
			} else {
				//we don't know why it failed so write the data
				test_write($ret);
				ebaylog($temp);
			}
		}
		
		if ($bid_success) {
			ebaylog("{$item}: Success placing final bid");
			$success = true;
		}
		
		end:
		
		//close the curl session
		curl_close ($curl);
		
		if ($success) {
			ebaylog("{$item}: Success: {$username}");
		} else {
			ebaylog("{$item}: Failure: {$username}");
		}
		
		return $success;
	}

Misc functions below;

	//for testing
	function test_write($out) {
		$fh = fopen(dirname(__FILE__).'/'.date('Y-m-d H-i-s').'.html', 'w');
		fwrite($fh, $out);
		fclose($fh);
	}

	//simple logging function
	function ebaylog($msg) {
		$msg = "{$msg}\r\n";
		echo $msg;
		$fh = fopen(dirname(__FILE__).'/ebay-log.txt', 'a');
		fwrite($fh, date('Y-m-d H-i-s')." {$msg}");
		fclose($fh);
	}

How to calculate comparison interest rate in Excel

Searching for how comparison interest rates are calculated, I found an article on Tomorrow Finance, but unfortunately a lot of the numbers provided no insight into how they were calculated. I hope to break it down further and explain how to calculate comparison interest rates with Excel. The Excel formula can be quite tricky and the parameters vague, so I will go through each of the formula as well.

  • rate – the interest rate of the loan annually equal to 4.63% (the current rate most banks are offering as of today)
  • principle – the loan amount always equal to $150,000 when calculating a comparison rate.
  • period – the period in years always equal to 25 years when calculating a comparison rate.

Payments for a loan

Firstly, calculate the monthly payments for a loan based on constant principle payments and a constant interest rate. The key here is to convert the interest rate to a monthly interest rate and the number of periods also in months.

payment = PMT(rate/12, period*12, principle)

In this case payments equals -$844.86 per month and includes principle and interest. The figure is negative since it is an outgoing.

Total interest payment

total payment = payment * 12 * period

Since the monthly payments are all the same, the total payments is simply the monthly payment multiplied by 12 months by 25 years, this equals -$253,456.66.

total interest = total payment + principle

The total interest is imply the total payment (which is negative) plus the principle, this results in a total interest only of -$103,456.66.

A quicker way to calculate the cumulative interest over the lifetime of a loan is;

total interest = CUMIPMT(rate/12, period*12, principle, 1, period*12, 0)

Additional fees

Next the additional fees over the lifetime of the loan are added, usually these are annual service fees, with nab there is a -$395 annual service fees. The total fee over the life of the loan would be 25 years multiplied by -$395 which equals -$9,875.

total outgoings = total interest + total fees

The total outgoings over the life of the loan would be the total interest and total fees, this would equal -$113,331.66.

outgoings = total outgoings / 25 /12

To get the outgoings per month divide by 300 to get -$877.77 per month.

Comparison rate

Finally, the comparison rate can be calculated;

comparison rate = RATE(period * 12, outgoings, principle)*12

The rate is per month which is multiplied by 12 to get an annual comparison rate, in this case equal to 0.050101482 or 5.01%.

Download the WorkBook how-to-calculate-comparison-interest-rate-in-excel.xlsm.