Category Archives: Uncategorized

Just how fast was Secretariat?

I’m a fan of Secretariat. I’m not sure why, but a lot of people are fascinated by this horse. I think that when you see greatness – something that is just clearly apart from all others, it just brings emotions out. Even Jack Nicklaus cried watching Secretariat win the Belmont in 1973, that should tell you something.

You can google quite a lot about how fast Secretariat was (37.7 mph / 2:24 flat for the Belmont), or even how big his heart was (22 pounds, when the average horse heart is about 9 pounds, and the next biggest horse heart on record is ~15 pounds), but those numbers, especially the speed numbers, are clinical. They don’t give the context to let you appreciate. Enter statistics:

It is a very easy statistical problem to look at all the Belmont winner times since 1925 (ever since the track was at its current 1.5 mile length). Secretariat is the record holder at 2 minutes and 24 seconds flat. The next closest horse is 2 minutes and 26 seconds flat. There are about 90 horses between 2:26 to 2:33. Here is the list:

 YEAR	HORSE	         time (seconds)	Z score	percentage
1973	Secretariat *	        144.00	-3.01	99.870%
1992	A.P. Indy	        146.00	-1.83	96.674%
1989	Easy Goer	        146.00	-1.83	96.674%
2001	Point Given	        146.40	-1.60	94.515%
1988	Risen Star	        146.40	-1.60	94.515%
1957	Gallant Man	        146.60	-1.48	93.080%
2015	American Pharoah *	146.70	-1.42	92.263%
1994	Tabasco Cat	        146.80	-1.36	91.373%
1978	Affirmed *	        146.80	-1.36	91.373%
1985	Creme Fraiche	        147.00	-1.25	89.370%
2021	Essential Quality	147.10	-1.19	88.250%
1990	Go And Go	        147.20	-1.13	87.049%
1984	Swale	                147.20	-1.13	87.049%
1968	Stage Door Johnny	147.20	-1.13	87.049%
2004	Birdstone	        147.40	-1.01	84.400%
2009	Summer Bird	        147.50	-0.95	82.950%
1999	Lemon Drop Kid	        147.80	-0.78	78.102%
1983	Caveat	               147.80	-0.78	78.102%
2006	Jazil	        	147.90	-0.72	76.325%
1991	Hansel	        	148.00	-0.66	74.472%
1972	Riva Ridge	       	148.00	-0.66	74.472%
2018	Justify *		148.20	-0.54	70.549%
2003	Empire Maker		148.20	-0.54	70.549%
1987	Bet Twice		148.20	-0.54	70.549%
1982	Conquistador Cielo	148.20	-0.54	70.549%
1948	Citation *		148.20	-0.54	70.549%
1943	Count Fleet *		148.20	-0.54	70.549%
1975	Avatar			148.20	-0.54	70.549%
2019	Sir Winston		148.30	-0.48	68.489%
1965	Hail To All		148.40	-0.42	66.370%
1964	Quadrangle		148.40	-0.42	66.370%
1959	Sword Dancer		148.40	-0.42	66.370%
2016	Creator	        	148.50	-0.36	64.197%
2014	Tonalist		148.50	-0.36	64.197%
2005	Afleet Alex		148.60	-0.30	61.977%
1979	Coastal	        	148.60	-0.30	61.977%
1953	Native Dancer		148.60	-0.30	61.977%
1950	Middleground		148.60	-0.30	61.977%
1937	War Admiral *		148.60	-0.30	61.977%
2007	Rags to Riches (f)	148.70	-0.25	59.717%
1997	Touch Gold		148.80	-0.19	57.424%
1996	Editor's Note		148.80	-0.19	57.424%
1969	Arts And Letters	148.80	-0.19	57.424%
1967	Damascus		148.80	-0.19	57.424%
1962	Jaipur	        	148.80	-0.19	57.424%
1998	Victory Gallop		149.00	-0.07	52.770%
1981	Summing	        	149.00	-0.07	52.770%
1976	Bold Forbes		149.00	-0.07	52.770%
1955	Nashua	        	149.00	-0.07	52.770%
1951	Counterpoint		149.00	-0.07	52.770%
1974	Little Current		149.20	0.05	48.078%
1961	Sherluck		149.20	0.05	48.078%
1942	Shut Out		149.20	0.05	48.078%
1934	Peace Chance		149.20	0.05	48.078%
1947	Phalanx	        	149.40	0.17	43.412%
1938	Pasteurized		149.40	0.17	43.412%
2002	Sarava	        	149.60	0.28	38.836%
1977	Seattle Slew *		149.60	0.28	38.836%
1966	Amberoid		149.60	0.28	38.836%
1960	Celtic Ash		149.60	0.28	38.836%
1940	Bimelech		149.60	0.28	38.836%
1939	Johnstown		149.60	0.28	38.836%
1931	Twenty Grand		149.60	0.28	38.836%
2008	Da' Tara		149.70	0.34	36.601%
1993	Colonial Affair		149.80	0.40	34.411%
1986	Danzig Connection	149.80	0.40	34.411%
1980	Temperence Hill		149.80	0.40	34.411%
1956	Needles	        	149.80	0.40	34.411%
2017	Tapwrit	        	150.00	0.52	30.189%
1936	Granville		150.00	0.52	30.189%
1963	Chateaugay		150.20	0.64	26.217%
1958	Cavan	        	150.20	0.64	26.217%
1952	One Count		150.20	0.64	26.217%
1949	Capot	        	150.20	0.64	26.217%
1945	Pavot	        	150.20	0.64	26.217%
2012	Union Rags		150.40	0.75	22.532%
1971	Pass Catcher		150.40	0.75	22.532%
1935	Omaha *	        	150.60	0.87	19.159%
2013	Palace Malice		150.70	0.93	17.595%
1954	High Gun		150.80	0.99	16.115%
1946	Assault *		150.80	0.99	16.115%
2011	Ruler On Ice		150.90	1.05	14.718%
2000	Commendable		151.00	1.11	13.405%
1941	Whirlaway *		151.00	1.11	13.405%
2010	Drosselmeyer		151.60	1.46	7.207%
1930	Gallant Fox *		151.60	1.46	7.207%
1995	Thunder Gulch		152.00	1.70	4.495%
1944	Bounding Home		152.20	1.81	3.487%
1926	Crusader		152.20	1.81	3.487%
1927	Chance Shot		152.40	1.93	2.672%
1933	Hurryoff		152.60	2.05	2.023%
1932	Faireno	        	152.80	2.17	1.513%
1929	Blue Larkspur		152.80	2.17	1.513%
1928	Vito	        	153.20	2.40	0.815%
1970	High Echelon		154.00		(mud)

Its trivial in Excel to compute a mean of this data set (149.12 seconds) and a standard deviation (sample) of 1.699 seconds. From there you can see a Z score of each winner. I left out 1970 as the track was filled with mud (you can see that race here) . Leaving 1970 out moves Secretariat from a -2.93 to a -3.01, a true -3 Z score event. How rare is that? basic statistics says 99.7% of all data is between -3<Z<+3. So there is .3%, spread .15% in each tail — or that Secretariat happens less than .15% of the time. 99.87% of all Belmont winners will be slower. Put that in perspective with days: 1/0.13% is 770 — or it will take, on average, 770 years for a horse to eclipse Secretariat

Now this data is not perfect, normally you need 200 data points to have a good sample (What Carter Worth taught me). However, it is quite good. I’m sure we can bring in the 2nd and 3rd place finishers to get ~300 data points and still have about the same mean and standard deviation, but I’ll leave that exercise for someone else. Note this data is normally distributed, period. The central limit theorem states that no matter how horserace speeds are distributed, when I pull samples those are normally distributed.

For comparison here is how the top 45 finishers fare – note the 2:26 horses are a 1 in 30 year event. We will see 3 of those in our lifetime. But unless you are sticking around for the year 2750, you are not going to see Secretariat’s record taken down.

Losing my pinball machine

My parents moved us in 1981 from Pittsburgh, PA to Birmingham, AL. I was not pleased at the time to move again and lose my friends, so my parents bought me this pinball machine, that I played with for 40 years.

space odyssey pinball

It was finally time to let it go, I sold it in an estate sale for my parents last month. The player 1 did not keep accurate score as the 1,000 wheel was broken, but the player 2 side did keep accurate score. Here is my last time flipping those flippers — 129,070. A very good score! At 150,000 it lit the special for the free extra play. In general any time I played and got over 100,000 I was happy

I loved this pinball machine, but time to let go. Paid $400 for it, sold for $1,250 (I netted 70% of that via the estate sale)

2021 holiday letter

Dear Friends & Family, Christmas 2021

2021 has been a year I’ll remember for the Aga family. Life is good, and we continue to watch with wonder as our kids grow into the young people God has in store for each one of them. But 2021 was also a year of a missed opportunity for me.

Austin (23) is turning into a world explorer. He spent May in Italy with the OU in Arezzo program, and subsequently graduated from OU in June with his degree in advertising. He took advantage of the work-from-home trend and decided to start his career by moving to Seattle, Washington where he teleworks for Global Gear, an OKC based apparel company. On weekends he is exploring Seattle and the Pacific Northwest and hopes to continue his career with a northwest agency in 2022.

Evan (20) is in his second year at OU, which feels like a first year since last year as a university freshman all his classes were virtual with closed buildings. This year the OU campus feels open again, and Evan is living in an apartment east of campus, with a pair of roommates he has known since kindergarten. He bikes to his classes for engineering a couple times each day, which is giving him great exercise. He has grown well over 6 feet tall, and is easily the tallest Aga. He likes to take quick sprints (he does a half-mile in under 3 minutes ), and he spends weekends with the OU academic bowl team, including tournaments in Oklahoma and Texas.

Addison (14) is in her 10th year of dance at Massay’s, and her 2nd year of cheer at Whittier Middle School.

Emerson (14) is playing point guard for the WMS 8th grade varsity basketball team. She has a great team and group of friends, and she practices and gets better each day.

Addison and Emerson came with Shelli and I to Portugal this summer, where we got to explore Lisbon and Porto. We rented a car for a week and made it to the mountains that separate Portugal from Spain.

Neville’s parents Hoshi and Nergish decided to move from Birmingham to Norman to be closer to their grandkids. They have settled into a senior living center in Norman and Neville gets to drop by throughout the week. It is a very different dynamic than having them 700 miles away. They have gotten to see one of Emerson’s basketball games and weekly lunches with their kids and grandkids.

Shelli’s parents have had a challenging 2021 with Donnie getting a cancer diagnosis, but the great news is that reasonably early detection has given him a good prognosis, and he is feeling better now than he has felt at any time this year.

Shelli is active daily in her local yoga studio, fit and strong as ever. She is practicing headstands and keeping our family on track with all the events, activities, and homework of the girls.

As for me, after running what is likely my final half-marathon in October, I found out I have a broken heart (literally, not figuratively) and will need surgery in 2022 . I will finish up my night MBA program from OU this summer. Work at Cisco is humming along fine, I am in my 13th year of architecting networks at OU/OSU and school districts around the state. I did have an opportunity to move to the beach in Daphne, AL. Really a dream job for me at this career stage — Cisco security in commercial covering Alabama, Mississippi, and Louisiana. Looking back now I am very upset with myself for turning it down. I think about that bungled opportunity daily. I thought I was putting my girls needs ahead of my needs, but in reality I did not show the leadership and vision that the head of a family should show. At least now I know what was the biggest mistake of my life. One day soon I do want to get back to Alabama and the beach.

We hope this letter finds you well and thriving. Best wishes for a joyous holiday season and an exciting 2022.

Neville, Shelli, Addison, Emerson, Austin and Evan

Cisco Catalyst 9300 RFID identification

New Cisco switches come with a RFID tag. Need to do inventory? No need to move the switch all around looking for serial numbers, just use a scanner and read them in as you enter the room!

I bought a sub $100 scanner on Amazon (Thincol RFID reader) . It works as a keyboard — when it comes into contact with a RFID tag it energizes the tag and types out the info on the tag. This particular scanner works only with windows (or in my case a windows VM via virtualbox).

I was trying to RFID a switch with this serial:

The serial number from show ver

And when I used the RFID scanner, it outputted this info:

what the RFID scanner outputs when applied to the switch

So, how in the world do you get to the serial from that hex gobbledygook? Read on!

There is this article on on RFID tag identification. It seems to be the only article out there. It has some good info in it, mostly behind the theory, but lite on practicality. What is output from the scanner is only the Electronic Physical Code (EPC) at 208 bits. The tag ID and user memory portion are not read/output (at least I could not get anything there). Of those 208 bits:

  • Bits 1-8 are for the EPC header and say ’36’ in hex (0x36)
  • Bits 9-11 are for the filter and read ‘0’ in hex (0x0)
  • Bits 12-14 are for the partition and read ‘5’ in hex (0x5)
  • Bits 15-34 are for the GS1 company prefix (whatever that is) and read on my switch ‘0B635’ in hex (0x0B635). Note this is different than the example given on which is 7 characters: 0746320
  • Bits 35-58 are for some item reference (again, whatever that is) and read ‘0002C7’ in hex (0x0002C7)
  • Finally bits 59-135 are where the serial number is

This is very non-intuitive (hey, it’s Cisco, not Meraki). Speficially if you look at the first 2 bytes that come back on the scanner (3614) – the 36 maps exactly to 36 for the EPC header, but the next byte (14) the “1” maps to all bits 9-11 for the filter (all zeros) and 1/3 of the bits 12-14 for the partition (specifically the first 1 in 101). The first half of the “4” maps to the rest of the filter 01 and the last half of the “4” maps to the first part of the GS1 company prefix (00). Confused? Yes you are.

Now the simple thing to do is put the string you get back from the RFID scanner in a HEX to binary converter like this one. Then on the resulting string back will be 206 bits long, like this


Why 206 bits and not 208? There are 0 leading zeros you have to put in for the ’36’ on the EPC header. So add in 2 leading zeros and you get:


Now that you have 208 bits, you want to grab bits 59-135 (because you want 77 bits starting at position 59). Getting that out gives you:

1000110 1000011 1010111 0110010 0110001 0110100 0110001 1001100 0110000 0110000 0110010

(spaces added every 7 bits for readability)

Then you take those bits (with the spaces every 7 characters) and put them into a binary to ASCII converter: and you get: FCW2141L002.

Voila! FCW2141L002 from 36142D8D4000B1E343AEC98B4633183064000000000000000000

This blog is now hosted in AWS

I decided to move my blog from my hosting in my Cisco C220 upstairs in my attic to a lightsail product on AWS (Is it AWS or aws?). Why did I decide to do this after refusing to for ~10 years? Well, mostly I know a guy who started at AWS and I figure if AWS is ever a company I want to work for I need to have production systems on it, not just science projects in the cloud.

I was going to do an EC2 image, but one of the first things you discover in the updated console is a compute service named Lightsail. Lightsail has the storage and network packaged in, and then also common applications, and wordpress is about the most common of them all.

The process was simple, standing up the lightsail image was ~5 minutes. I exported everything from my on-prem blog, and imported it into the new AWS image. The first import did not really go well — my on-prem blog has a user named ‘neville’ and the created AWS lightsail image has a root user called ‘user’. Importing my content to ‘user’ instead of ‘neville’ was a problem for me. The solution is not to fix and rename the user account, the correct fix was to create another lightsail image and create the new user ‘neville’ there before importing. Treat these cloud compute instances like cattle, not pets. If there is an issue kill it and get another one off the feed lot.

One thing that did happen, that I’m not too happy about though, I decided to create my 2nd lightsail image bigger (2x the RAM and storage — from the $3.5/month to the $5/month). When I got the new one up I quickly deleted the old (you are charged by the hour). Right after I deleted I thought I’d like to do some performance comparisons between the 2 instances— but there is no undo button. You delete it and it is gone 🙁

Overall, meh – fine. I’m sad to see things go from my attic, but as Andy Jassy says “you can’t fight gravity”. In this case, I can’t fight the cloud.

Neville’s vote – 2020

Every four years I make a blog post about who I am going to vote in for president. I do this mostly for myself and my kids- I want them to understand who gets my vote and why. I want them to understand my morals, my beliefs, and believe that our votes matters, not because my one vote will tip any scales, but it will define what I believe in and who I want to lead me to get there.

2020 is a re-election year. In re-election years the decision becomes more of a referendum on the incumbent. From that lens Trump has accomplished some amazing things:

-On the economy this is the best financial backdrop to do business for corporate America ever, and I mean ever. The cost to borrow and build a business has never been lower. Each week I get unsolicited mailings offering $200,000 or more of business working capital.  10-year rates are at 0.6%. The stock market has about doubled in just four years (the S&P 500 on the night Trump was elected traded at 2,000.  Today it trades at 3,300.  The advancement in the NASDAQ-100 is much more profound, QQQ traded at 110 in November 2016, it was been as high as 303 just this month (September 2020).   Trump has fought hard for small manufacturing business and US materials companies with great success. He has had a strategy from day 1 – that was to put America first, and a good leader sets a vision that everyone can get behind and drives the execution of that vision. On that scale Trump scores well.   I very much applaud him for easing the corporate foreign tax repatriation and brining money back into the US.

However if you look more closely, the advances in the stock market have all been in MAGA – Microsoft, Amazon, Google, Apple – not make America great again. In fact, the sectors and industries Trump champions are down in the dumps.  Ford trades at $7 (vs $12 when Trump was elected), GE trades at $7 (vs $30 when Trump was elected). The pattern holds for 3M, GM, Goodyear, on and on.   No matter how much he wants to champion the industrial Midwest, I am afraid that part of American history is simply dead, and no one has the ability to create demand there, no matter how much they try.

-On foreign affairs Trump has accomplished amazing things in that arena as well.  The UAE and Bahrain have both signed peace agreements with Israel. Saudi Arabia may be next.  A Saudi-Israel peace deal will drive peace and stability for the world. The critics said “Don’t antagonize the middle east by moving the US embassy from Tel Aviv to Jerusalem.” Trump did not listen, he trusted his head and his gut, and the region is more stable than it was before.  Trump drone-strike-killed (call it what it is-extrajudicial political assassination) Qasem Soleimani, a person akin to the vice-president of Iran.  I never heard of the man and I thought his drone strike assassination would lead to full blown war between the US and Iran. That did not happen. The Palestinians, who have all along been the rogue actors in the region, have been marginalized and accepted universally for the bad actors they are.  That is a significant development that will lead to peace.  Relations with North Korea, something way beyond belief, have happened. There is no way any of this would have happened under a Hillary Clinton administration, and no way this will happen under a Joe Biden administration. Heck Joe Biden voted to not go after Osama Bin Laden! Biden was afraid of military operations on Afghanistan soil. It is hard for me to cast Biden as anything other than a weakling who does not want to upset anyone. Thank goodness Obama did not listen to him there.  Biden to me seems like he is the poster child fanboy for today’s millennial generation who are scared stiff to be called or thought of as racist, sexist, or any other -ist. An apologist, someone who is meek, someone who does not make you believe America is the greatest country on Earth, rather some bad plague that needs to be conformed into submission of “everyone is good, even the lost souls burning Portland and Seattle are somehow always worthy of respect and having their viewpoint heard.”

-On China and trade I disagree with Trump’s protectionism, but I give him credit for creating a tough issue and tackling it head on.  No one was talking about US-China forced tech transfer before 2016.

-On other issues, like climate change and COIVD- I happen to agree with Trump. I’m glad we withdrew from the Paris climate accords, and I support cutting off funding to WHO. We can’t blindly go with the crowds here because it is the easiest political thing to do while making us feel like good citizens – we have to ask if we are getting value for our investment and in places we are not holding people accountable and demanding change. Trump does that. I find it ridiculous that the governor of Washington State is blaming his state’s forest fires on climate change. This is 2020 where literally we shut down the entire globe over the Spring and Summer. I know we did not do that for climate change, but if that is not good enough to appease the green people what possibly will? They will never be happy, they will never lead. They will always just complain. To me they sound like a noisy going that should have no credibility and no standing.

So overall, I give Trump all the credit in the world for all his actions. His policy and actions have been far, far better than I could have ever imagined.


But is that what I want in a president? A man of results, who views the world in terms of winners and losers?

Trumps silence on black lives matter is troubling to me.  In my own neighborhood there are moms teaching their adolescent black sons to be home at dark, how to deal with police, teachers, society in general.  That is not OK.  A generation is teaching their (black) kids, how to live and grow up in fear. That fear is very, very real. That is abhorrent.

I don’t believe Trump is a racist – he has given many prominent jobs to black people, including winners on the apprentice. However, his silence is problematic.  I never saw Trump call the George Floyd killing murder. He took one year to acknowledge Charlottesville white supremacist as a murder.  This is just too slow, unacceptable.  To be fair, I am leery of black lives matter, because it is divisive – but there are some simple steps he can take to make the mom of a black kid feel more at ease, and his inability to do that is a voting problem for me.

The police in this country are underpaid and teachers are badly underpaid.  Trump and Betsy DeVos are so right on school choice and democrats are so badly wrong. As much as I would like to vote issue by issue, I can’t.

Trump’s need for his own ego, his boundless narcissism, is ridiculous.  I contrast that and think about Ronald Reagan’s self-deprecation.  Humor is one of 5 essential characteristics of leadership.   Trump has none of that. It is a killing character flaw.

To my vote, it is not about what is best for our economy, my job, or my pocketbook this time. It is about the soul of this nation. I don’t want a Faustian bargain. Trump claims to have done more for black people than anyone since Lincoln.  Just because black unemployment is lower in 2019 than it was in 2015 does not mean Trump deserves praise.  It’s like a person that abuses you and then throws a $100 bill in your face and expects you to take it and be grateful. That crap just does not fly with me.


Yes, I readily acknowledge things may get worse under Biden. With tax rates ready to soar and big government (the current thinking is there will be a $3 trillion democratic coronavirus bailout), it is totally possible that inflation could come back, the stock market could tank, jobs could be lost, etc.


In 2020 I’m not voting for my pocketbook or my standard of living – I’m voting for my soul, that’s why I’m voting Joe Biden.

My final course evaluation. It was not kind.

Below is the text of the course eval I wrote for my MBA capstone course taken this summer.


Virtual sucks. It sucks so, so bad. Even though the text is thoroughly up to date, the lack of getting us together in class kills any class value we might have had. I realize COVID is a deadly, serious challenge, but as it stands now the value of who I meet, grow my network, and what I learn in this new OU are worth about as much as a Khan Academy course — which is priced at exactly $0. What we have collectively believed about the University and higher education system in America will come crashing down. This education is worth $0. Even if I paid $0, I would still be very dissatisfied. What I value at OU are the people around me and the experiences we do together. I will very much miss not having a final drink with my cohorts on graduation. I understand COIVD is a very tough problem, but I expect OU, with literally billions of dollars of resources, to be up to the task and make in person learning possible and encouraged. Otherwise OU is just as useless to me as Khan Academy, or alternatively Princeton University. I can get learning from either of those institutions for free. The goal has to be learning, not a piece of paper (diploma). I can assure you that right now all of my cohort is interested in the piece of paper and nothing else, and that is just sad and frankly the education institution’s fault. Go ahead and appoint your “respected” Chief COVID officer. They are doing the same leadership that any idiot can do – operating out of an abundance of caution. Well, I have fully decided school simply can’t operate that way.

Again, unless you figure out this problem, I will not be a student. I still have some classes to go, but I have decided to withdraw from the University for the Fall. When I started this program we met from 6pm till full on 9:30pm. This class the average meeting was about 30 minutes. It pisses me off I am paying multiple thousands of dollars for this garbage experience. I don’t need the piece of paper. I’m in it for the connections — going to China, being one on one with Randall Stephenson <- this is the value of an MBA. This garbage over Zoom is just garbage. Figure it out or you lose me.

Todo list for my fifties

I am a person of lists. Each Monday morning I write a todo list for the week which is broken into sections for work, personal, and hobby goals for that week. Well, last week was my birthday, and not just any birthday, last week I turned 50 and what follows is my todo list to accomplish by June 3, 2029:

1. End the decade happily married to Shelli with 4 healthy kids (or more)?!

2. Buy a vacation property I can rent out when not in use. Somewhere Shelli and I love. Something around $1m. Big enough for several kids to stay with us there. Hawaii? Pensacola? Grand Lake?

3. Get a new job (preferably within Cisco). Especially a travel job after the girls graduate NN. Travel with Shelli. Don’t be scared!

4. Mentor someone (not a family member)

5. Start/join a men’s coffee group.

6. Own a performance Tesla (0-60 <= 2.4)

7. End the decade with 3x my net worth of June 2020 in total net worth.

8. Help Austin find a career opportunity

9. Help Evan find a career opportunity

10. Learn the song meaning behind the lyrics of as many songs as I can.

Prime Infrastructure Proximity Tracing Tool

I have created a proximity tracing tool using data exported from Prime Infrastructure.   The tool is currently located at   Please check it out and give me feedback.

To use the tool, the user inputs a “client sessions” report from prime infrastructure. The report has to have the fields of AP name, Session Duration, and RSSI added in, using the exact order shown below.

You can generate for any length of time, I’m currently using either 1 or 7 days when I generate reports. Sorting the output data does not matter.  When finished, export to .csv and use that file for the input of the tool.

To use the tool input your file and a MAC address of interest (this would be the person with COIVD19 that you want to track who they came next to).  The other 3 fields (max RSSI diff, time resolution, and time offset are optional, defaults are given)


Push the Trace contact button, and the script fires away. It comes back with something like the following:

Simple and effective.

For the week of May 16 MAC 84:85:06:BC:F6:C8 was in contact (<3dBm) with 84:85:06:bf:fc:46 for 1 hour 40 minutes at the AP named MEMO-MAIN-129, and so on.

If you want to play with the tool you can use the PI logfile named “agahome_may28.csv”.  and search for the spreader MAC of e4:b2:fb:87:8f:62. That’s my iPhone. Try using different RSSI resolutions and time values.


The tool is located at