1978 Stihl 041 Farm Boss rebuild

Acquired this one on Craigslist with a Poulan 2150 and Homelite HB-180 leafblower.  

I was able to find the owner’s manual and service manuals for this saw.

So far, here’s what’s been required to get this thing running:

  • New pull cord
  • New air filter
  • New fuel filter

Compression is acceptable on this one (105psi), so as of now, I’m continuing with this rebuild.  Here are some time-of-acquisition pictures. 













SSH tab auto-completion goodie

This aimed at the Unix/Linux terminal folk out there.   I’m a developer and system administrator often seeking to control remote Linux/Unix terminals so SSH is tool I basically wear out.  I use the bash shell exclusively solely because of it’s ubiquity.   My good friend Nick Artman over at Addo Solutions tipped me off to a heckuva time saving shell customization when making use of SSH.  It brings tab completion to the ssh command by sniffing the .ssh/known_hosts file.  We have tab completion all over the place in bash, I contend that this customization makes ssh more intuitive.

“Great, Casey how do I do it?”

On a Mac, stick this in your ~/.bash_profile file.  In Centos or Ubuntu or something, you’d stick this in your ~/.bashrc file.

complete -W "$(echo `cat ~/.ssh/known_hosts | cut -f 1 -d ' ' | sed -e s/,.*//g | uniq | grep -v "\["`;)" ssh

A note about that snippet, on my screen it horizontally scrolls so I don’t see the entire command.

To make that one work, type ssh, hit the space bar then tab key. Nice, eh?

2014 Before & After Yard Pics

We are continuing to grow more and more familiar with 3705 Maplewood. The yard beat us down last year, but this year is a different story, as will be illustrated here in the coming months.  The leaves were rugged intense and as it turns out, push mowing an acre wasn’t exactly the best way to spend 5-7 hours.  Our yardwork tool arsenal from our old house was not even close to sufficient for this place, but slowly we’re shoring up what we’re missing (minus an electric pole saw).  

You are officially on notice, yard.  I’ve got scale-tilting tools that will put a very different spin on this summer, good luck looking shitty!


How to install MySQL + configure PHP & MySQL to talk to one another OSX 10.7

I have this in Evernote and have come back to enough times to justify a blog post.  Much thanks to good friend and former colleague, Miklos Janosi for his help on this.  He did half of this.

This is for us PHP/MySQL web developers out there working on a Mac who want a local development environment.  

I cut my teeth with server installs on Ubuntu Linux, where 1 command (tasksel), a strong and creative new MySQL root password and an “OK” confirmation will get you a fully functional LAMP stack in 2-4 minutes.  I kept thinking that there had to be a simple way to do this in OSX and this about as simple as I can come up with… for me.  As are many obstacles in the IT world, this cat can be skinned in many different ways, I invite comments on how I might simplify this.

I used Homebrew for my MySQL installation.

If you’re resistant to or uncomfortable with the command line terminal, this tutorial may not be for you.  If you’re looking to get more comfortable with it though, fire up your terminal and let’s do this!

  1. Install Homebrew
  2. Install MySQL w/ Homebrew
    brew install mysql
  3.  Copy mysql config file to /etc/  then rename it
    1. Copy
      sudo cp /usr/local/mysql/support-files/my-small.cnf /etc/
    2. Rename
      mv /etc/my-small.cnf /etc/my.cnf
  4. Find the socket that the MySQL daemon is running on
    1. Open up your new /etc/my.cnf configuration file in your editor of choice, mine’s vim.  No need to open it up with root privileges, we’re just reading at this time
      vim /etc/my.cnf
    2. look for [mysqld], underneath you’ll see the word socket with a path after it.  In my Homebrew installation, it’s /var/mysql/mysql.sock.  We’re gonna need that path in a minute, so copy it to your clipboard or paste it somewhere handy.
  5. A hidden fact: OSX 10.7 ships with Apache.  If it’s not activated, activate it.
    1. Point your web browser of choice at http://localhost/.
    2. If you see “It Works!”, you’re golden!
    3. If you don’t:  Apple (top left of your screen) > System Preferences > Internet & Wireless: Sharing > Web Sharing.  Activate that checkbox, that’s it!  This is how you restart your web server too.
  6. We need a PHP configuration file.  If it doesn’t already exist, fire this command on your command line terminal.
    sudo cp /private/etc/php.ini.default /private/etc/php.ini
  7. Point PHP at MySQL
    1. open up /private/etc/php.ini in your favorite text editor, again, I’m a vim guy
      sudo vim /private/etc/php.ini
    2. In my php.ini, I’m finding what I need on line 1219, we want to point PHP at the socket that MySQL is running on.  Execute a find command in your editor on the following
    3. Once you’re at that line, update it too look something like this (if your MySQL daemon socket differs from mine in 4.2) your mysql.default_socket line is gonna look different than this.
      mysql.default_socket = /var/mysql/mysql.sock
  8. Restart your web server, see step 5.3 above.

Please share your questions via comments in case someone shares your question.

Gift Randomizer Using Underscore

This is version 2 of the gift exchange randomizer update for our family’s Christmastime “Grown Up Party” (GUP) 2012. It assignes gifters and giftees to the party attendees.

My earlier version was a bit verbose and lacked the “cannot get for spouse” functionality.  Additionally, I’ve fallen head over heels in love with the underscore.js library and am always looking for an excuse to tinker more with it.


Vim tip – capitalize first letter in a line with a regex switch

I looked all over the place for this one and couldn’t quite find the answer.  I was submitted a ton of field names to build a SQL query.  I needed those field names to be title cased (first letter of a line is capitalized) and ended up mish-mashing the functionality of an online service called Text Fixer + some other vim regex search/replace switches to get to where I needed to be.  It wasn’t elegant or as concise as it could’ve been.  My gut was screaming that there was one-line solution.  Like all of my solutions though, the answer came to me while driving to and from work.  I hope this can  help someone:


Google Maps api V3 various tasks

A work colleague, Brad Rice, and his wife are working on a video and needed to capture a Google Maps animated pin drop.  I’ve done this a couple of times, and dug the code out to share with him.  Since this code does a couple of other things, I thought I’d share.

function initializeMap()
	<?= $jsBuildingArray; ?>
	var i;
	var myOptions =
		center: 	new google.maps.LatLng(41.07663853500103, -81.51131740766186),
		zoom: 		15,
		mapTypeId: 	google.maps.MapTypeId.ROADMAP
	var map = new google.maps.Map(document.getElementById("googleMap"),myOptions);
	var infowindow = new google.maps.InfoWindow();
	var marker, i;
	for (i in arrBuildingBasedTickets)
		marker = new google.maps.Marker(
			position: 	new google.maps.LatLng(arrBuildingBasedTickets[i][1], arrBuildingBasedTickets[i][2]),
			map: 		map,
			animation: 	google.maps.Animation.DROP

		google.maps.event.addListener(marker, 'click', (function(marker, i)
			return function()
				infowindow.setContent(arrBuildingBasedTickets[i][0]+" tickets = "+arrBuildingBasedTickets[i][3]);
				infowindow.open(map, marker);
		})(marker, i));

We’re writing JavaScript with PHP in this one, which is pretty cool. Powerful stuff. On #3 above, see the embedded PHP to write out a 2D JavaScript array?  When the server spits it out, it looks something like this:

arrBuildingBasedTickets = new Array(
	['Buchtel Hall',41.07592200269260,-81.51114106178284,7],
	['College of Arts and Sciences',41.07774578109146,-81.51071727275848,13],
	['Computer Center',41.07543470965410,-81.51544868946070,15],
	['Kolbe Hall',41.07623338307453,-81.51003062725067,9],
	['McDowell Law Center',41.07738992586513,-81.51589930057526,5],
	['Leigh Hall',41.07631426085448,-81.51062071323395,18],
	['Lincoln Building',41.08035397933900,-81.51266992092133,0],
	['Olin Hall',41.07689657793272,-81.50901138782501,19],
	['Ocasek Natatorium',41.07489079739069,-81.50752007961273,18],
	['Polsky Building',41.07857071079749,-81.51936471462250,11],
	['Schrank Hall (North)',41.07508086389763,-81.51375889778137,17],
	['Simmons Hall',41.07828764784946,-81.51157557964325,18],
	['Student Union',41.07546503920178,-81.51273429393768,19],
	['Zook Hall',41.07643153345869,-81.51157021522522,0]
  • On #15 we iterate over the arrBuildingBasedTickets to build up Google Maps infowindow content and place markers. 
  • On #24 we bind a mouse click event listener to each marker to open an infowindow on a mouse click
  • On #28 we populate the info window with dynamic content from the arrBuildingBasedTickets array.

Instead of hitting me up with questions/comments via email, Facebook or Twitter, please leave responses below to help future visitors who may share your perspective.

How to remove an item from a JavaScript object

jQueryUI is an amazing library.  I’m still in learning mode with it.  I’m using the autocomplete component to provide “search as you type” or “type ahead” functionality.  It’s great, but I found it required that I make use of a JS object I’ve not formerly employed.  I’m providing auto complete with data represented by a custom object.  I’ve built data like this in the past with a simple 2D array, but it needed to be this object.  Here’s an example.

var groups = [{
        label: "Group #1",
        value: "86bd676dd675120697785388a6ab4042"
    }, {
        label: "Group #2",
        value: "4sdg432gwre2sdf2f5sadf24vr0trg7k"
    }, {
        label: "Group #3",
        value: "798miyjhsdf90qwefd73eqvcad0qwefa"

The task required that I wipe out an element of the object where value == “this_group_id”. I hammered the #jQuery IRC room and stumbled my way to the solution. I hope this can help someone out.

groups = $.grep(groups,function(v){
        return value;

To assist future users, please refrain from hitting me up on Twitter, Facebook or email. Instead, please post responses in comments.