Wednesday, July 29, 2015

Mario Kart Hot Laps

The boys setup a K'NEX Mario Kart track the while I was at work earlier this week. So naturally I did what any cool father would do. "Boys which Kart can finish the track the quickest? We should run some hot laps and time each Kart, keep track of it and then I'll blog abotut it". And here we are.

The Course


The course is a modified oval. Long straight stretch to help build up speed. Turn 1 and 2 are standard turns. The back straight away has a ramp and an S-turn as you move into Turn 3. Another quick S-Turn as you enter Turn 4 and then you hit the finish.


The Karts


We have 3 working Karts, one busted Mario Kart. All Karts have fresh batteries. Using the standard eye test, the Donkey Kong Kart appeared to be the fastest Kart. Mario seemed to be the slowest and Bowser was somewhere in the middle.






Hot Lap Heats


1 - Lap

We started trying to time one lap. All Karts finish a lap pretty quick. So we quickly changed to a 5-Lap run.

5 - Lap

Each Kart finished 3 5-Lap runs.
5-LapsHeat 1Heat 2Heat 3
DK20.8516.8817.30
Mario19.3614.6614.43
Bowser13.0012.9716.57


  • Again DK seemed to be the fastest. However the Kart would build up so much speed on the first straight away that it would wreck out in Turn 1. If it made it past Turn 1 it would get too much air on the ramp out of Turn 2 and would crash out by the tree. 
  • The Mario Kart was slow so it had a clean run around most of the track. However it would not get much air on the ramp so it kept crashing into the wall where it would have to re-accelerate costing time.
  • The Bowser Kart set the fastest lap in Heat 2. It had a clean run and was faster than the Mario Kart.

10 - Lap

Each Kart completed 3 10-Lap Runs:


10-LapsHeat 1Heat 2Heat 3
DK31.9026.2526.68
Mario28.2928.3428.15
Bowser27.9732.1730.90
  • We made a slight adjustment to the track by lining up the ramp a little better to smooth out the landing. DK set the course record in Heat 2 by pulling off a clean run.
  • Mario was the most consistent across all three heats.
  • Bowser crashed out in one heat, and then had wheel trouble in the other two heats. If not for the wheel trouble Bowser would have probably set the course record in Heat 1.

Videos


Donkey Kong



Mario


Bowser

Wrap Up


So there you have it. Bowser set the 5-lap record. DK Sets the 10-lap record. I challenge the boys to come up with some new configs so we'll see what they come up with. I'd like to calculate the scale speed but we already tore the first track down. I will try to remember to measure the next track.



Sunday, July 19, 2015

Linux on USB Stick

Found a laptop laying around at home and wanted to throw linux on it. The laptop does not have an optical drive so I needed a Linux on USB solution. Here is what I did.


  1. Download the Linux distro you want to throw down.
  2. Download Win32 disk imager here: http://sourceforge.net/projects/win32diskimager/?source=typ_redirect
  3. Find a USB drive that has ample space
  4. Launch the Win32 Disk Imager
  5. Browse to the ISO you downloaded in step 1
  6. Choose the USB Device you wish to lay the image down on
  7. Click the Write Button
  8. Wait....it took a long time.
  9. Then slap that USB stick in your laptop and boot that mug up.

Simple as that. I went with CentOS 7 and it worked perfectly.

Wednesday, July 15, 2015

Meeting Tracker First Pass

I dislike meetings. I make that pretty clear to anyone that wants to listen. So anytime an opportunity arises to expose meetings for what they really are (99% waste) I jump at the challenge to qualify/quantify how terrible meetings can be. In my 14 year professional career I have sat in numerous meetings. I can remember 2 meetings total that actually brought value and one of them was a 3 day working meeting to solve a very specific problem. I'd probably call that a focused collaboration session but it was billed as a meeting.

So where do we go from here? Well in the past I have created meeting waste calculators and created a meeting buzzword tracker. Me and a friend were chatting the other day and he knew I had created a calculator and he wanted the link. I sent it over. After some normal I hate meetings banter I mentioned I need to work on my meeting buzzword tracker. Like most of my projects I cobbled something together quickly without thinking about flexibility/scale-ability and such.

The meeting buzzword tracker was written for a single, very specific dataset I wanted to collect. How many times was the word project mentioned in our standard weekly team meeting? So I sent the link to my buddy and then he asks this question which pretty much sparked the remaining of this blog post: "How do I adjust the meeting tracker for the guy who fell asleep?"

Couple things. 1) Notice how he called the website by the wrong name, meeting tracker instead of meeting buzzword tracker....ding ding ding... 2) How do I track various things that happen in a meeting...in this case a count of all the people that fell asleep

My response to this question was "perhaps we have a few counters you can tick".

He responded. "We need a scoring system for meetings, buzzwords, people nodding off, snores, nose picks, etc." BOOM! and now we are off and running.

After some more back and forth I decided to email some folks in the lame meeting world to get some more feedback. Several responses later and we now have the Meeting Tracker 1.0 system in development.

Meeting Info


First we collect some standard meeting info: Meeting Name, Date/Time, Duration in minutes, and the Buzzword. The buzzword is a word you want to track the frequency of during your meeting. As mentioned earlier I used to track the word project. We once had a meeting where project was mentioned 32 times in about a 25 minute span. It was glorious.

Counters


Next we have a standard set of counters. These are the various counters you want to track. Here is our current list.


  • Sleepers - Count of the people falling asleep or nodding off during the meeting
  • Pickers - Count of people picking their nose in the meeting
  • Boomers - Count of people over 50 in the meeting, typically slowing the meeting down
  • Offliners - Count of people asking questions that are off topic and extending the meeting
  • Surfers - Count of people surfing the internet, checking email on their devices instead of listening. These are the people that ask questions about stuff answered 5 minutes ago
  • Outsiders - Count of the number of auditors or consultants that do not work for the company


Conditions


We added a series of conditions to track during the meeting. These are yes/no true/false type conditions about the meeting. Here is our current list.


  • Start Late - Meeting starts after scheduled time
  • Finish Late - Meeting goes longer than scheduled time
  • Just the Two of us - meeting could have been a face to face conversation instead of a 10 person meeting
  • Echo - Meeting was covered in a memo or email before the meeting
  • No Lunch - meeting was scheduled during typical lunch hour but no food is provided
  • Double booked - you or the meeting venue itself are double booked
  • Meetingception - another meeting was scheduled as a result of this meeting or the whole purpose of this meeting was to setup another meeting



Kickers


Then we came up with a set of bonus points. These items remove points from our overall Meeting score. We will talk more about the scoring system below.

  • No talk - You make it the entire meeting without saying a word
  • Food - There is food at the meeting
  • No Action - You have no action items as a result of this meeting
  • Early finish - The meeting finished before scheduled duration
  • Cancelled - the meeting was cancelled. 

Scoring System


Now that we had a series of metrics I started assigning values to the various metrics. For the counter section we assign a value to the counter and then just multiply the count by the value to get the metric for that meeting. For conditions I just assigned a value to each condition based off my own personal biases for how bad the various condition effects the overall meeting score. Finally for kickers I added points back for various items. Therefore kickers are negative numbers.

After the math we are left with a Meeting Score representing how terrible the meeting is. The higher the number the worse the meeting. Since whole numbers are not really cool I decided to create a variable to multiple the final score by. I call this variable the Inherent Terribleness of Meetings in General (ITMG coefficient). Right now the ITMG coefficient is 1.73123.

Below is a snapshot of the current values along with 3 sample meetings.


So for our sample meetings, Meeting 3 is the worst at 328.93. 

We probably need to tweak things a bit, and I need to track some meetings with the web app to see how it works on mobile devices. I am thinking I also need to create a PDF sheet that you can print and take to the meeting. That way you can just track the data in the meeting and then record it in the system at a later date. You don't want to have to add yourself to the Offliners count.

Suggestions/Feedback

So I am all ears on Suggestions and feedback. Can you think of some more counters, conditions, or kickers for the meetings? Have any suggested value tweaks for the metrics above? Have a meeting war story to share? Send them my way.

I think meeting duration should play a role some how. So the longer the meeting the worse the meeting. I may add that into our scoring system somewhere. Do you have any other ideas?



Monday, July 13, 2015

KC Traffic Data: Speed Sensors

Recently I started capturing data from the Speed Sensors of the KC Scout system here in the KC Metro detailed in this post. So I am collecting tons of data from the Speed Sensors daily (archive table has over 9 million rows already)  and I started to wonder what I should do with all that data.

HEAT MAP!


Why not build a heat map for day of week and hour of day? Having no good answer to that question I threw together a quick website that allows you to select a Speed Sensor and then generate a Heat Map for that speed sensor.

Since I was in a hurry I did not get fancy with the selector:

Here you get a big ol list of Speed Sensors with cryptic names and such. One future feature I want to implement is to plot all the sensors on a Google Map and let you select a Sensor from the map to generate the HEAT MAP.

After you Select a sensor and click Generate you land here:


This will give you a map of where the sensor is located and the average speed for each day of the week and each hour of the day in a sweet looking heat map. I am using the sweet D3js.org Library to build the Heat Map.

Like most of my stuff this is pretty bush league. I am actually building a Tab Separated Values file on the fly and using that to source the Heat Map. Therefore its pretty slow and I cannot send out the link to folks cause it will not be able to handle multiple requests very well.

I need to spend some time to figure out how to make the D3js heat map hit the database directly but as typical with my stuff I just crank it out and figure out the details later.

End of Post update 


So while composing this blog I decided to stop being lazy and work on the Maps idea I mentioned above. Here is a screenshot of the map:


Now you can select a sensor from the map and then link to the Heat Map. Pretty Boss. Anyway yeah I think the next step is to figure out how to dynamically build the Heat Map using D3 hitting the database directly. Hopefully I can figure that out eventually.