General HTML, CSS and Javascript

I made a Spot-it Clone

tl;dr: I made a Spot it game clone. Go give it a try

Spot-It-Game-by-Blue-OrangeOur family purchased the original Spot it game a while back and after playing it for a while I started trying to figure out how it worked.  I was fascinated by how there could only be one match no matter what two cards you looked at.

From their website: “There is always one, and only one, matching symbol between any two cards!” Wait, out of 55 cards if you grab any two cards there is only one match between them? How is that possible?

Matching example

Finding out how it works

I went to the internet to find out how it worked. I found several discussions about it that were all above my mental capacities for math. Then I bumped into an article called Spot-it – How’d They Do That by RadiganEngineering that had examples of what the cards would be for different item counts. Well, if I didn’t have to figure things out, I could do something with that.

Making my own version

I thought it would be really cool to make my own Spot It game with my own pictures. So I started digging into making a web version that could accept input and generate the game for me to be printed out. After way too many hours of playing with the code and neglecting my family, I was able to create a Spot it game clone. It allows you to provide your own images or words and cards will be “randomly” generated. I used the structure from RadiganEngineering but randomize the card order and randomize the order of the items within each card.

The first print on 3×5 cards

Naturally I had to keep adding functionality, demo content, saving the data locally, pass content in via the URL, load demos via URL, drag and drop images, etc. The basic card generation and game I had done in a day, all the other stuff took too many weekends.

I hope this is of benefit to others. I found this blog post about creating a Spot It game with family pictures. It looks like it took a LOT of work to make that happen. Hopefully my site allows similar creations in a fraction of the time.

Second print on 3x5 cards, with 6 items per card
Second print on 3×5 cards, with 6 items per card. I have since fixed the cropped text at the bottom.

Technical details

I don’t pretend to think this is perfect. It was hacked together pretty quickly despite it taking so long. I debated between using newer technologies (SASS, ES6, etc) to help myself improve in those areas, but for now I decided to leave it as basic JavaScript so that it is easier for others to understand. Some day I may make it fancier. So for all my techy friends, don’t mock my lack of using the latest and greatest, it was for the greater good 🙂 Some day it will bother me enough to update everything, but for now it is what it is.

It is entirely done client-side via JavaScript. Nothing is sent to the server.  Most of it is custom written, but I did find an amazing drag and drop library called Dropzone that helped out a lot with some cross browser issues.

If you have any feedback, questions, etc you can find me on twitter, post a comment below, or give feedback on the GitHub project.

General Technology

Don’t use Neighborhood ISP – A review

I have been with Neighborhood ISP, based out of Orem, Utah, for almost a year.  It has been hands down the worst experience I have ever had with a paid service of any kind. If you are looking at what they offer and think “wow high speed for such a low price?? it’s just too good to be true!” IT IS. It is absolutely too good to be true.

Never a great experience

Our connection was never stellar. I sent regular emails to them about connection speeds, both up and down.  Sure, I’d have a week here or there where things were great. Nothing to complain about. But most the time it was far, far below their advertised speeds.

But the price was great, so I stuck with it.  Whoops.

From bad to worse

Then the last few months (Aug-Oct 2013) it became abysmal.  Regularly less than 1mb download speeds.  I sent repeated emails with screenshots of our connection speeds (through their suggested site of, see below). All I got in return was regular excuses.

Excuses, excuses

“We are currently working on the issue effecting your speed and hope to resolve it soon” – Aug 25
“More work is being performed tomorrow on the wireless facility tomorrow.” – Sep 4
“We believe there are a handful of speed issues related to our switch to a new fiber line which has not occurred on your wireless facility yet. You should soon receive an e-mail from our infrastructure team about this upgrade process over the next few days.” – Sep 20
“we are trying everything we can to resolve the issues. Our field technicians are working solely on this issue as there are still a few customers remaining that this is happening to. … We take speed issues very seriously and I have escalated this e-mail chain to our Director of Broadband Services.” – Sep 24 (never heard from the Director)

[[While writing this post I couldn’t save a draft because of no connection. Lets see how often that happens]]

I made a call and they said that the “new tower would be done Oct 21” and there wasn’t much they could do until then. So basically being told “don’t call us until then”.  Weeks of additional sucky internet ensued.

I called again around Oct 21 when I was trying to work from home (trying being the key word here) and couldn’t get web pages to load. I worked with the tech to determine it was not my router, but a UDP vs TCP issue on their end.  An issue that “only 2-3 people on this tower are experiencing”.

Come to my house… please!!

I couldn’t even get them to come out to my house and check things.  They did come out once to replace something on my roof, but they were doing that for everyone in the area already due to the upgrades that were supposed to make everything better. Oh, I made the appointment, waited around for all afternoon on Saturday, and they never showed up. I wrote to complain and they said we weren’t on the list, even though the email chain I responded to had their confirmation of the appointment. They came a few days later.

In my last email to them I pleaded “Come check my POE [their equipment], check the wiring, switch my equipment out, find out what makes me special to have such terrible connection issues. Point me to a different tower, it can’t get any worse”. Nope, no offer to come out to the house, other then to remove my equipment if I wanted to cancel my service.

[[no connection, no save again]]

Why am I still here?

I have no idea why I subjected myself to such pain and stayed with them for so long.  My wife texted me several times to curse their name, even my children noticed enough to regularly complain.

One of the reasons I wanted to go with Neighborhood ISP (other than the too good to be price for the speed) was to support the local guy. I have given them chance after chance after chance to make things right.  Only responding to emails with excuses is not a way to make things right.

Credit where credit is due

Now to give credit where credit is due, I was always treated very well.  Their techs on both the email communication and phone calls were always very courteous. They gave me credit for the last month or two since my service was not what they promised.  They have also promised to refund my installation cost because of their not being able to provide good service.  Props for that.

Slow, slower, slowest

Here are some of the screenshots I sent to plead my case. All I got in response was excuses.

Sep 9

Sep 19

Oct 24

The above 3 images took about 5 minutes to upload (Oct 24 10pm). So I thought I’d check my speed again. At the moment I can’t even upload the screenshots of my current speeds.

Finally got them up (10:30pm)

First try, the upload speed didn’t even register
Screenshot 2013-10-27 21.36.22

Second round, it wouldn’t even connect. Left it trying for more than 5 minutes
Screenshot 2013-10-27 21.48.57

Just switched to connect through my phone because I couldn’t even get the page to save and I didn’t want to loose my work. (11pm)

Final Warning

This is a final warning. If you came to this page looking for a review of NeighborhoodISP take my advice and stay clear. Some day they may get their act together, but if there are problems the above should make it abundantly clear that you will not get anything but excuses from them.

Even if they get their act together with their speeds, their customer service is abysmal. Saying that you take speed very seriously in general, but taking no action for the individual customer suffering with minutes of load time per page is the big problem. I as an individual did not matter to them.

Again, this is hands down the worst customer service experience I have had with any company. As full disclosure, I did tell them that if they couldn’t get things taken care of I would make sure to post about my experience and ensure that any place that had reviews for them got a negative review.  They didn’t seem to care.  Responding with yet another set of excuses, no offer to come to my house to look into things, and the offer of a refund.

Do yourself a favor and look elsewhere. You have been warned.


Defending the Family

XD40SubcompactFor the past year or so I have kept it kind of hidden that I now own a handgun and occasionally carry it out in public. For some reason the other day I thought that I should share my thoughts on why I do this, so here it goes.

Why own a gun in the first place?

Yet again this is Randy‘s fault as he got into it first and got me thinking about it. About a year ago there was rumor of a few robberies in my neighboorhood.  Randy had recently purchased a handgun and as a good friend was trying to suck me into it as well.  One night Kaylene and I were talking about the neighborhood break-ins and I wondered what I would really do if it happened in our home.  If some crazed individual (or individuals) were to break into our home what would I do?  How would I get to my sons’ rooms across the hall crossing in front of whatever danger was on it’s way up the steps? How would I defend them?  Go ahead and think through this scenario right now.  Imagine you are in bed and you hear a window break.  What is your plan of action?  How do you get your family safe and what will you use to defend them?

I did this very thing.  I looked around the bedroom to see what I could use as some form of a weapon if it happened right then.  The most threatening thing I could find was the $10 table lamp from Wal-mart… literally.  There was no bat or pole or metal bar to use as clubs. Nothing heavy to throw.  I had a lamp to defend my family with.  My inner cave man was screaming that this was not acceptable.  I had no way to defend my family other then my fists and a lamp.  This wasn’t going to dissuade someone who had already crossed the line of coming into my home.

This started a several month process of research, pondering and convincing on my part to get Kaylene to let me get the gun.  One day she finally said yes, and I bought the gun the next day before she could change her mind.  The gun I purchased is a Springfield Armory XD Sub-Compact 40S&W. I also immediately signed up for a class to allow me to get my Concealed Firearm Permit to allow me to carry my gun in a concealed manner. More on this further down.

Think of the Children

How to keep the kids safe around a firearm was my top priority.  The day I purchased the gun I also purchased a safe for it on the way home.  The safe I purchased is a GunVault Mini. This is a small safe but it is large enough to hold the gun and an extra magazine of rounds.  What good would the gun be if it took a while to get to in an emergency (in the closet under some clothes or wherever). I wanted it within reach when I was asleep and the small size allowed it to fit under my bedside table.

It has a keypad that your fingers can easily find for entering the combination in the dark. After 3 incorrect attempts is locks for a few minutes.  This means that when the boys inevitably were playing with the buttons they had 3 chances at that 1 in 12 million chance of guessing my combo before it locked up.

On the microscopic chance they got into the safe, or if by my stupidity the safe was left open or the gun laying around (at point I would get rid of the gun myself due to negligence) then the gun I chose has a number of safety’s built into it.

  1. At this point in time I do not leave the gun in a state where you can just pull the trigger to fire it.  You would first need to pull back the slide to rack the first round (you know, like you see in the movies).  This takes a decent amount of force and is a hair difficult for me, a bit difficult for Kaylene and near impossible for a 4 year old.  Keeping it in this state makes it slower for me to be ready to engage a threat, but for now it gives me peace of mind with the kids.
  2. If another evil miracle occurs and a 4 year old is able to rack the slide there are two safetys built into the gun for firing.  There is a trigger safety as well as a grip safety.  You have to pull the trigger as well as be pushing in fairly hard on the back of the grip for the gun to fire.  Fairly hard means there have been a few times where I have gone to shoot when practicing and it wouldn’t fire because my grip was incorrect or I wasn’t squeezing hard enough.  These safety’s make it so it won’t go off if it’s dropped.  You can’t just pull the trigger by itself and have it go off. In the world of handguns… this is a fairly safe gun.

With these precautions in place (which were all part of my discussions with Kaylene before hand) I feel very safe with a gun in the house with children.  Kaylene is still a bit wary, but that is a good thing and keeps me in check.

Randy also gave me a link to a cheesy little video that he has shown to his kids about gun safety. I have watched this many times with Dallin and will review the principles from it with him from time to time.

Carrying Outside the Home

As of this writing, I don’t carry outside of the home every time I leave. Nor do I carry most the time when I am at home.  I will carry when I am going to the store, out to run errands, or going on a family drive.  Unfortunately my place of employment does not allow carrying on the premises, nor leaving the gun in a vehicle (I have another safe for in the car). So this makes it difficult to carry on a daily basis. But when I am not going to work, or to church (they don’t allow it either) I try to carry as often as I can remember to.

For carrying at home I have the dilemma of how to interact with my rambunctious 4 year old.  It’s hard to spontaneously wrestle with him or have him grab me with a painful hunk of metal on my hip, which happens to be his head height.  I have to constantly be aware of what side to keep him on in the wrestling so he doesn’t get hurt by it, and I don’t like having to do that.  So for now, playing with the kid trumps the extra safety at home.  Yeah that doesn’t match with my logic for having the gun in the first place, but that’s just how it goes.

fire-extinguishers-2-02But Aaron, we live in Happy Valley… nothing is going to happen where you will need a gun.  Tell that to the people who were at Trolley square or this story of a guy simply driving down a dirt road. I honestly hope that I never have to use my gun in self defense.  But I also wear a seatbelt hoping to never get in an accident. I don’t wear it because it’s the law, I wear it because in the rare chance I get in an accident, I want to come home to my family. I don’t have a fire extinguisher in the closet hoping to put out a fire (ok, secretly that would be awesome… just not INSIDE my house please), but just in case there is one.  There are many precautions we take every day on the off chance of bad things happening.  For me, this is just another one of those precautions.  Something that will allow me to get home to my family in the rare chance that it is needed.  Or if inside my home, keep the bad thing away from them so they are safe.

Guns Aren’t for Everyone

I respect the fact that not everyone wants guns in their home.  In addition to the places I listed above, I have a friend or two that I have brought it up with and they said their wife isn’t comfortable with guns in their home. I either don’t wear my gun when going there, or I leave it in the gun safe in my car when I get there.  If I haven’t brought it up with someone yet, I err to the side of caution and leave the gun in the car.  This can be a very touchy subject (although I personally don’t think it needs to be), and so I feel it’s best to avoid the issue of them finding out I brought a gun into their home without their knowledge.

Hopefully this article gives me a chance to open a dialogue with more friends and family about why I choose to carry and what it’s all about.

I try to go out to practice every now and then and would love the opportunity to take any of my friends or family who are interested in learning more about guns or just want to try to shoot one to see what it’s like. I try to be very safety conscious and will make it a good experience.  I take gun ownership very seriously and would expect anyone who wants to handle one to do so as well.


So that’s it. That’s my announcement to the world that I have a gun, I occasionally carry it around, and why I have it in the first place.  Hopefully it has been enlightening to some.  If you made it this far, congrats.

I now have the ability to defend my family.  If I hear the window break, I can reach down to the side of my bed and have a significant weapon in my hand within a few seconds.  When I need to go into the hallway to get to my kids rooms the odds are that I will be more prepared then the threat that could be coming up the stairs.  I will feel more comfortable taking that step out into the hallway knowing that just the sight of a gun will deter a threat, let alone the force of actually using the gun.  Again, I hope to never have to use it for defense, just like I hope to never really NEED my seat belt.  But it is a comfort to me to know that it is there if the need arises.


I’ve taken up smoking

p-1600-1200-f03b8d18-e07b-42db-81ca-11a2508a8841.jpegNo, not that kind of smoking.  Meat smoking.

My friend Randy recently found the instructions for a UDS, or Ugly Drum Smoker.  It’s a meat smoker that it made out of a 55 gallon drum that when working correctly can go for up to 15 hours without intervention.  It is able to stay at the requisite temperatures for longer then smokers you purchase at the local Home Depot or wherever, hold more meat, and are cheaper to make then buy.  All great qualities 😉

Thus far I have had issues with mine keeping a consistent temperature, but I am pretty sure that is due to a faulty lid, which I have now got a replacement for.

So far I have cooked two Pork Butts (shoulder actually) and some chicken.  Not sure what I’ll try this weekend.  They have all tasted great, even though I have had temperature or timing problems on each one.  They will taste all the better when I get the temperature, timing and process all nailed down.

Quality pictures thanks to my iPhone.  Yeah not my normal quality, but it was the camera that was handy.



New Carpet, and how to prepare for it

So as part of our preparing to move we wanted to get new carpet.  The stuff the came with the house was nasty and dirty, and Dallin had grabbed a hold of a few strings of it and pulled, leaving nice long lines of no carpet.

After a bit of a search we went with Home Depot who had a good deal on Stainmaster carpet, plus $150 or so installation for the whole house.  Long story short… it took them 3 weeks to get it installed.  This was the final thing we had to get done before putting the house on the market, and so it delayed our plans by 3 weeks.  But we had a LOT of junk to declutter from our house, so it was probably a good thing in the end.

So the night before they come to install we start ripping out the carpet.  I Google on how to remove carpet staples and get lots of talk about needle-nose pliers being the best.  So that’s what Kaylene and I do… for 6 hours.  12 man/woman hours of staple pulling.  Blisters, sore knees, all the fun that comes with it.

We leave one patch of carpet under the TV stand so Dallin could watch TV while we waited for them to come (sometimes between 12:01 AM and midnight).  When they get here we move the stand, pull up the carpet and I kneel down with my pliers to start pulling the 5 or so staples out.

Then the carpet installer guy says “I can get those”, and busts out a scraper and takes care of all 5 staples in about 2 seconds.  He then goes around the whole room in about 2 minutes.  The room we had spend 2 man/woman hours the night before meticulously pulling out staples.  I was dumbfounded.

I don’t know why Google failed me, but here it is for Google to index.

When removing flooring staples DO NOT USE pliers.  Go get you a floor scraper and be done in a fraction of the time, and with less body aches and blisters.  Let me say this again in a few different ways to make sure Google gets it.

To remove floor staples don’t use needle nose pliers.  Go rent a scraper from Home Depot.

Get a scraper to remove carpet pad staples.

When removing staples from carpet or padding, use a scraper to save yourself some pain and heartache.

Hopefully someone will find this post and save themselves some effort.


Let’s try this again… shall we?

It’s been tried, and tried again.  I’ve tried to bring my other blog to life several times, but I had set it up to be a techy place and that isn’t what I always wanted to talk about.  So I never talked.

So this time we’ll try a “anything Aaron likes” topic for this blog, and see if it gets me to blog more often.