Smoked BBQ Tri Tip

It is time for another BBQ post!

Tri Tip is one of my favorite meats. In California this is pretty much all we eat  for BBQ. It is pretty lean and can be found on sale often. When it goes below $5 a pound I will get a few.

I used the following recipe found at the best bbq site in the world  .

It is one of the easier and quicker meats to smoke.

I use my trusty Webber kettle setup for a two zone fire. Just bank the coals to one side. I usually do not put in a water pan as it is a pretty short cook. I want to get Slow n Sear but do not want to spend the money right now.

Get the chimney out and start some coals. I usually do about half a Webber chimney. Once the coals are ashed over dump them on the unlit coals.

Let the BBQ heat up until the cold side is around 225 or so. Adjust top and bottom vents as need. Try to keep the top vents open as much as you can. This helps stops soot from build up.

Put some wood on top of the coals to get some smoke. Remember always start with a little smoke and add. I usually do about 2 fist size chunks. I like Mesquite for Tri Tip but use whatever you want.

Now season that amazing Tri tip. Pick whatever rub you want and get it all over it. You will not over season the meat.

Place the Tri tip on the cool side. We will leave it here until it reaches 115F or so. You will need a Digital thermometer. If you do not have one. Go buy one.  Really no point in BBQing without one. I bought this one, I like it. Cheap and accurate.

Remember to move your Tri tip atleast once to have heat evenly.

Once you hit your temperate it is time to sear. Place the tri tip on the hot side and leave it on both sides for about 5 mins each. You want a nice even dark bark. Check the temperature and pull it once it reaches 130.

Let it rest for at least 10 mins. When cutting make sure to cut across the grain. If you do not know how to do this just look up a youtube video. Much easier to follow then text.

Once it is cut in enjoy! I like to get soft rolls at Costco and make sliders.


Basics of Churning

There has been a explosion in the past few years of people trying to get the best credit card rewards possible. This has been called Churning.

Some people are really into this and have hundred’s  of credit cards. They will find ways to spend thousands of dollars and get most of this back. This is called manufactured spending. It can get pretty sketchy.

Then you have people like me that try to get the best rewards possible without spending hours and hours of effort. I imagine most people fall into this.

Most blogs online are from people that travel pretty much full time. This does not fit my life. They take about spending 50k on credit card like it is nothing. They get really expensive hotels for “free” but leave out the other cost.

All the blog post you see about the Maldives is a perfect example. Sure you get a “free” plane ticket to the main island and hotel room. But the transfer plane ticket is  $700 and it is $30 for cocktail and your stuck on a island.

I focus on different way . I figure out where I want to go and see what deals I can find for that location.

Right now I am at 3/24 for Chase. Chase only allows you to have a total of 5 cards in span of 2 years.

That means I can get two more Chase cards.

I just got the Chase Sapphire Preferred. Spend 4k in 3 months and get 50k points which is not a bad deal.

Feel free to sign up for the card with my promo link below. I will get 10k bonus points. Or not that is ok too 🙂

Chase Sapphire Preferred sign up link   

I hope to have more post in the future. I am planning my honeymoon and want to get the most bang for my buck.


BBQ Spare Ribs

I decided to tackle an American classic, BBQ ribs.

This all came to be when I was at the store in the meat freezer section. I saw that spare ribs were only $1.50 a pound. This spiked my interest as I could get whole rack for less than ten bucks. I could not help myself and bought two racks.

Now I am stuck with two racks of ribs and no idea how to cook them. I wanted to BBQ them but had no idea how.

The internet came to the rescue and I went to the following site: site is the holy grail for BBQ. I spent hours doing research here.

First I was thinking of buying a smoker. But did not want to spend 200 bucks for a cheap one.

I did have a Webber Kettle. I decided to make a simple two zone fire as show in the below link.

1: Get your charcoal started. I use a chimney starter and one of Webber wax starter cubes.


Fill your chimney to a little more than half full. Wait until the charcoal is slightly grey and the smoke has gone from blue to a clear white smoke. This will take about 10-15 mins. I personally use Royal Oak as it seems to burn longer than Kingsford.


2: Once your coals are hot pour them one side of the BBQ and bank them against the side. The hot coals should be placed directly on top of the unlit ones. Close the lid and adjust the vents. I usually do about ¼ open on the bottom and half open on the top. You will need to play around with this. We are trying to hit around 225F on the cold side.

3: After your Webber has settled to a decent temperature it is time to put on the wood chunks. Yes  chunks not chips. Chips just suck and burn way to fast. Take two fist full size pieces of wood. I use cherry but pick your favorite wood. Simply place the wood chunks directly on to hot charcoal. Wait about ten minutes or so to get that good smoke going.

4: Now it is time to put the ribs on the grill. I dusted mine with Memphis dust recipe link below. Just put it all over the ribs. Do not worry about over seasoning  it. Place both racks on the cool side of the grill. About half way through the cook we will switch the ribs to help them cook evenly.

5: Check on the ribs every 25 mins. Remember you need to switch your ribs at least once.

To figure out when they are ready you will need to do the “bend” test. Basically this means just pick the ribs up with your tongs and see if the top of the ribs start to break away.

6: They are ready to eat. Or if you want BBQ Sauce mop it on the ribs and cook it on the hot side for a few mins to adhere the sauce to the ribs.

DIY Pest Control for less than $50 a year

DIY Pest Control

I live in the Sacramento valley of California. It gets pretty hot here so we get lots of bugs. We have lots of Cockroaches that take over in the summer.

I recently bought a house that was unoccupied for a few months. I really wanted to make sure to get rid of the bugs but did not have a lot of money.

I deiced to get an all purpose bug spray and a sprayer. After doing some research online I found most thing sold in stores are pretty much useless.

I went with the chemical that is part of the Pyrethroid family. It is safer then most chemicals and it will kills insects very fast.

I went and got the off brand Demand CS as it was slightly cheaper and the same active ingredient which is Lambda-Cyhalothrin.

You will need a sprayer to mix the water and cyzmic-cs together. I just bought a cheap one gallon sprayer at Home Depot. Only use the sprayer for this one task. They are less then ten bucks just buy a dedicated one.

Now you need to figure out your mixture rate. Refer to the bottle of what ever you bought. Make sure to follow what it says. For a clean out treatment it recommend .8fl oz to 1 gallon of water.

1st : Fill the sprayer half way with water.
2nd: Pour .8fl oz of cysmic-cs or whatever else into the sprayer and close the lid.
3rd: Put the lid on and shake the crap out of it.
4th: Fill sprayer to 1 gallon mark and shake again.

Now you are ready to starting spraying.

Indoor Application

As the house was currently empty I was going to spray inside as well. Since then I have limited my spraying to outside.

Inside you want to do what is called a “crack and crevice application” this is fancy speak for you can spray in cracks. Do not go around coating the whole floor. Spray underneath baseboards and around cabinets toilets etc.

The Garage is important!!! For me I need to spray heavily in the garage as it was major infection point.

Outside Application

Outdoor application is important.

We want to create a barrier so the pest can not enter the house. The easiest way to do this is to spray a perimeter line around the house.

Take the sprayer and making a sweeping motion 6 inches up the foundation/side of the house then 6 inches down on the ground. You want about a foot of spray that is touching your house and the ground next to it.

The idea is that anything that gets within 6 inches of the house or touches the house will be effected.

The next step is to spray around windows and anything that goes into our out of the house. Cable wires water pipes etc. Remember we want a barrier of spray anywhere it is possible to enter the house.

Below is a link to quick video that walks through the steps.


This stuff can be a little scary. I was not living in the house at the time I did the first spray. When I came back three days later it was like a Genocide occurred. The garage was a kill zone. It took me about thirty minutes to sweep up all the dead cockroaches. I lost count out over 150. It is was incredible and scary to see how well this stuff works.

For the next few days you might see cockroaches during the day. This is because they are dying. You will want to at least repeat the outdoor treatment about every 3 months. Do not spray if it has rained recently or will shortly after.

This is the same stuff Terminix and other companies use for Residential treatments. With the sprayer total cost was less than $40. This is less than one visit form Terminix. I can get about 8 treatments out of one bottle.

If you are willing to spend 30 mins everything 3 months you can get rid of most bugs for the price of dinner.

ServiceNow SaltStack Integration OpenVPN REST Part 2

Part 2 of 2 (

Following up on my previous post I will be covering the SaltStack side of the Integration.

The first thing to do was figure out a way to capture the username from the end user in Snow and send that to SaltStack.

I used a REST API to do this.

I installed Salt-API and put in the following settings into the master config file.

port: pick a port number
host: hostname
ssl_crt: /etc/ssl/private/cert.pem #path to ssl key
ssl_key: /etc/ssl/private/key.pem
webhook_disable_auth: True #set this to false if you want auth enabled
webhook_url: /hook . # allows a webhook

Then the next step is to create a reactor file. This tells salt what to do when something is sent to webhook via a REST api.
Place the following config at this path /etc/salt/master.d/reactor.conf

It will look something like this:


– salt/netapi/hook/open_vpn_reset:
– /srv/reactor/open_vpn_phone_reset.sls

When something is sent to link of ipofsaltserver:portnumber/webhooklink it will render the sls of open_vpn_reset.sls

Now you need to create the open vpn rest sls file. The one I created is below.

{% set postdata = data.get(‘post’,{}) %} # This allows you to receive the data sent to salt api and use it
– tgt: ‘connect’
– args:
– cmd: ./sacli –user {{postdata.username}} –lock 0 GoogleAuthLock
– cwd: /usr/local/openvpn_as/scripts

The trick to this sls is that when the data is sent to the webhook you pass a var called user with username. Salt will take this var and place it in postdata.username and the it will render.

This will allow end users to run this script without contacting operations to run the script for them.

ServiceNow SaltStack Integration with OpenVPN with REST

This part 1 of 2 articles to view the second article click the following link (

We use SaltStack to manage various things on our servers. Also use OpenVpn with Google Authenticator for two factor on login. We use ServiceNow for our ticketing system.

This works pretty well. Until someone gets a new phone and they need a new QR code. We have quick script that resets this.

The old workflow was end user submits a ticket asking for the account to be reset. I run the script and then tell them to re join the phone.

This is fine but do I really need to run the script myself? This gave me the idea of using self service in ServiceNow to automate this task.

The first thing I did was to create a very simple record producer that has the caller’s name and a username variable.  For caller it is a reference variable to sys_user table. If you put the following default value in it will auto sync the caller with the user who is viewing the record.


More info regarding record producers can be found at the link below:

So once I decided that I wanted to do this, I need to figure out how to build it.

Both ServiceNow and SaltStack have REST API’s. This is how I will integrate both services.

ServiceNow Rest API documentation:!/rest_api_doc?v=kingston&id=c_TableAPI

SaltStack REST API documentation:!/rest_api_doc?v=kingston&id=c_TableAPI

After that I needed a way to get ServiceNow which is hosted in AWS to talk with the SaltStack server that is hosted behind firewalls in our VMware stack.

For this ServiceNow provides a MID server to help with this. Refer to my other blog post link below regarding the MID server.

ServiceNow MID Server in Docker

The I had to create a scripted REST API in ServiceNow. I set the URL endpoint to webhook url I created in SaltStack. (I will show the SaltStack side of things in my next post). Then set the HTTP headers and query parameters using the outbound rest message in ServiceNow.

Once this is created I need to add the code to my record producer to send out the username variable to SaltStack via the REST API.

The Record Producer code  is below. Feel free to use or edit to your liking.

var username1 = producer.username + ” “;

try {

var r = new sn_ws.RESTMessageV2(‘Salt Open VPN’, ‘OpenVPn’);
r.setStringParameterNoEscape(‘var’, ”);
var body = {‘username’: username1};
var bodyText = JSON.stringify(body);
//override authentication profile
//authentication type =’basic’/ ‘oauth2’
//r.setAuthentication(authentication type, profile name);

//set a MID server name if one wants to run the message on MID
r.setMIDServer(‘dev mid’);

//if the message is configured to communicate through ECC queue, either
//by setting a MID server or calling executeAsync, one needs to set skip_sensor
//to true. Otherwise, one may get an intermittent error that the response body is null
//r.setEccParameter(‘skip_sensor’, true);

var response = r.execute();
var httpStatus = response.getStatusCode();
catch(ex) {
var message = ex.getMessage();

ServiceNow MID Server in Docker

ServiceNow requires a MID server when you want to interact with resources behind firewalls. I wanted to allow my end users to reset there Open VPN Google Auth code using self service. Due to this I needed to install a MID server to reach our servers. I put this Docker to make things easier.

Below is a link for a quick explanation of SN Mid server:

It is a simple Java application. I did not want to install it on bare metal. We use docker here at work. So a good reason to use docker.

I found the following git repo that had mid server in Docker. Only problem was that it was out of date and using Ubuntu for it is base image.

So I tweaked a few things changed base image to Centos.

The next issue is that the download file for the installation changes for each ServiceNow update.

So I created a dockerhub account and created a build linked to my repo. When I update the Wget url and push the code to master, a job in docker cloud is fired off via webhook. This auto builds the docker image.

This was very helpful but I still had one more issue.  My prod SN instance is usually a version or two behind dev. I would need to use a different docker image for Prod.

My solution was to create another git branch and create a separate docker cloud build. This way I could have prod and dev branch. Depending on which branch I update it will build a different docker image.

My github and docker image links are below. Feel free to use it, fork it whatever:

Hello welcome to my blog.

This is just a place for me to put random things I am working on.

My name is James and I work as a System Administrators.

I like to mess around with ServiceNow and automation at work.

When I get home I like to cook, make beer and do other random things. When I am not having fun I am usually fixing my new to me old house or working on my girlfriends car.