Last Good Quote: Son's are the seasoning on our lives. - Someone on Facebook

Wednesday, April 16

Agile Teams - Mange your Backlog

One of the most critical items to a team's success is managing the backlog.

The backlog is NOT a collection of to-do items that your developer can go an "pickup" when they have spare time.

A backlog HAS to be groomed. IE: Reviewed weekly by someone on the team, or maybe even the whole team.

Items at the top of the backlog list MUST have some form of requirements.

In my opinion the scrum master is responsible for keeping the backlog in order. This does not mean they are responsible for priority, requirements, etc. It means they are the one who says "Hey Team, we have to go through the backlog because we have no idea what the top 3 items actually mean"

The BA/PM/Requirement Pusher, should be intimate with the backlog. I mean REAL intimate. Live and breath it.

A bit of a rant, but it's a recurring theme that drives Agile teams to failure.

Hope it helps.

Saturday, April 12

Where did my Tax Dollars Go

Interesting data visulization:

Find more at

Saturday, April 5

More Templates I like

Admin Templates:

Thursday, April 3


I think I already wrote this post, but just in case. Here is how I implimented Autocomplete with jQuery:

You will need jquery, I had a copy in my templates, you can find a copy at

You will also need autocomplete.js, which I got from here:

I put the following with my css (in the head of the document)

.autocomplete-suggestions {
border: 1px solid #333;
font-size: 12px;
font-family: arial;
padding: 3px;

I then put the following where I wanted the text box to appear in the HTML code:

Stock: <input type="text" name="txtSymbol" id="txtSymbol">

I then put the following in my document (toward the bottom)

    var options, a;
//options = { serviceUrl:'qryStocks.php' };
var a = $('#txtSymbol').autocomplete({
zIndex: 9999,
deferRequestBy: 250, //miliseconds
noCache: false, //default is false, set to true to disable caching
onSelect: function(value, data){ alert('You selected: ' + value.value + ', ' +; }




Now we also need a file that will return the list to display in our ajax:

$time_start = microtime(true); 

$conn=new mysqli("localhost","root","ididgood","stock_tracker");

$searchString = $_GET["query"];

$sql = "select distinct symbol, symbol from stock_history where symbol like '$searchString%' order by symbol limit 10";

$result = $conn->query($sql);

$out = "{\"query\":\"$searchString\",";
$suggestions = "";
$data = "";
while ($row = $result->fetch_object()) 
if($i> 0) $suggestions.= ",";
if($i> 0) $data.= ",";
$suggestions.= "\"$row->symbol\"";
$data.= "\"$row->symbol\"";


print $out;

That's it.

Saturday, March 29

Interesting Javascript Libraries

Stumbling across some interesting stuff...

Heat Maps:

Easy Installation of Auto Complete

Gray Box/Light Box/In page popup

Auto Comment you JS code

Megamenu - Drop Downs with options

Form Menu Hints

Wednesday, March 26

Templates Links


Ones I like:

Css Buttons:

Saturday, March 22

JS Starfield

The following will create a flowing field of stars on a black background. Used the HTML5 Canvas element to create this effect:


var canvas = "";
var context = "";
var stars = new Array();

function loadStarfield()
canvas = document.getElementById("canvas_starfield");
context = canvas.getContext("2d");


//stars[stars.length-1].starSize = 50;
//stars[stars.length-1].drawColor = "#333";
//stars[stars.length-1].position.x = -10;
//stars[stars.length-1].position.y = 150;
//stars[stars.length-1].velocity.x = 1;



function starfieldLoop()
context.fillStyle = "black";
context.fillRect(0, 0, canvas.width, canvas.height);

for(var i=0;i<stars.length;i++)



function drawStar(star)
  var position = star.position;
  context.fillStyle = star.drawColor;
  context.arc(position.x, position.y, star.starSize, 0, Math.PI * 2);

function addNewStars(numStars)
for (var i = 0; i < numStars; i++)
stars.push(new Star());

function Star() {
  this.position = new Vector(randBetween(0,canvas.width),randBetween(0,canvas.height)); // Vector
  this.velocity = new Vector(randBetween(1,5),0);
  var c = randBetween(0,9);
  this.drawColor = "#FFF"; //"#" + c + "" + c + "" + c; // So we can tell them apart from Fields later
  this.starSize = randBetween(1,1);

Star.prototype.animate = function()

if(this.position.x > canvas.width)
this.position.x = 0;

// Utils
function randBetween(min, max)
return Math.floor(Math.random()*(max-min+1)+min);

function Vector(x, y) {
  this.x = x || 0;
  this.y = y || 0;

// Add a vector to another
Vector.prototype.add = function(vector) {
  this.x += vector.x;
  this.y += vector.y;

// Gets the length of the vector
Vector.prototype.getMagnitude = function () {
  return Math.sqrt(this.x * this.x + this.y * this.y);

// Gets the angle accounting for the quadrant we're in
Vector.prototype.getAngle = function () {
  return Math.atan2(this.y,this.x);

// Allows us to get a new vector from angle and magnitude
Vector.fromAngle = function (angle, magnitude) {
  return new Vector(magnitude * Math.cos(angle), magnitude * Math.sin(angle));


<canvas id="canvas_starfield" width="600" height="300"
border:5px solid black;">

Friday, March 21

Interesting Map Building Links

Ray Casting in 2D Top Down Tiles

Auto Tiling/Laying Tiles Programtically/Tile Laying algoithm

Other Links

Wednesday, March 19

Articles on World Building

World Building and World Auto Generation

Simple Rogue Like -

Random 2D Tile Map Generation

Tuesday, March 11

To My Son and My Future Self

I love you son. I want to be your friend. I want to be your confidant. I want to be your rock in stormy times. But I am your father first and foremost. That means I must prepare you for the world as best as I can. That means I must ask you to do better than me. That means I must ask of you the hard things in life. I must force you to confront your issues head on, with your head up and your eyes open. I apologize if in your youth this strains are relationship. But it is how things must be. I am your father.

You brought home poor grades, extremely poor grades. At first I was angry at you. Very Angry. I dreamed of ways to punish you and make you FEEL the retribution. How I would make you quake with the fear of god himself. Make you feel as if the very wrath of the world was upon your head. It felt good to think these things. Yes, I knew the exact methods I would take to ensure you could not contemplate a failure like this again. I had it figured out...down to the last belt stroke.

But I gave myself time. Time to simmer down. Time to realize that my anger was driven by something else. (A lesson you would be wise to learn: Anger is never the REAL reason, it is an excuse to take action). I realized that I was ashamed, embarrassed that a son of my genes, a boy with the creativity, wit and intelligence equal to my own, could not do moderately well in school. I was embarrassed because this was a public reflection of my lack of mentorship to you.  My lack of showing you how to apply discipline and persistence. My lack of teaching you what was important and what was not. It was not you who had failed, but I who had failed you. My lack of showing you how take on a challenge and succeed. This failure was on both of us. This was humbling.

I now contemplate a gentler approach, but one that will test the limits of our relationship. I will teach you how to do this thing. I will teach you how to excel at the game of life. Oh, there will be punishment but it will be with measured and calculated to demonstrate to you that there are immediate consequences for poor decision makings. Especially when one can choose a better road. Rewards will come as well, but not given cause you are "due" them, but given because you earned them by taking the harder, longer, less traveled road.

I do wonder at what point it was that this failure on my part began. I love you. I spend time with you. I take you out. I take you to hang out. I find friends for you. I taught you how to talk, walk, read, ride a bike. Never let it be said that I did not care and spend time with my son.

But I was never hard on you. Never. And shame on me for it. I claimed I wanted you to have a “nice” childhood. Not realizing that in the “roughness” of a no, there is a challenge to the little mind. A challenge to the idea that not all things come by way of words, tears, smiles and hugs. But the idea that some things only come by the hard work of your own hands. In wanting you to have an easier time of childhood, an easier one than mine, I made you unable to handle struggle.

You're 14. Maybe you are too old, I hope not. But change is in the air. I know this will start a war between the two of us. I know at your current age you will not understand. I know we may no longer be friends....for a time. This makes me terribly sad. But I know this is my responsibility. I know this right. I know this is what I need to do .... for you.

We start on this journey tonight, March 10th of 2014. I hope I have the fortitude to stay with this. I do this for myself, I do this for you and I do this for the future generations. I love you son.

Your Father,
Markus Beamer

I write this in the heat of the moment. I write it cause I have to catch this anger and bottle it up and use it to fuel me to do the right thing. I write it so one day in the far future you will know I did these things for the right reason. However it works out.

I make this public because a public declaration of intention is the strongest way to re-enforce me taking personal actions.

I also know that I am not the only one struggling with this issue, it is driven from a true love for my children. Hopefully others can learn from my mistakes.