Thanks to my attendees!

I had a great time sharing with my community colleagues at Tampa Code Camp 2022. My topic was “Getting Started with ReactJS”, and we had an engaging discussion. I’m grateful that my peeps came with excellent questions and points of view. It was A LOT of fun!

As promised, here is the information I presented.
(Pssst! I was able to get it down to around 3MB!) This is a link to a OneDrive share.

Note that you’ll need to run the command npm install on the /talk/my-app folder before you run npm start.

Please reach out to me if you have questions.

See you next time!

Thanks to my attendees!

8 years and counting, and no one ever reacted to this with a “What the heck?!?”?

I ran into an interesting and silly issue today. First, I invite you to form your own opinion about the following block of code.

source:, line 53
 * Returns a Boolean value that indicates whether a value is the reserved value NaN (not a number).
 * @param number A numeric value.
declare function isNaN(number: number): Boolean;

Go ahead — stare at it for a bit. Think about what this function is supposed to do. Read the commented description again. Then stare at it some more. At this point, I’m scratching my head and second guessing myself, with a “What the heck?” thrown in for good measure.

If you haven’t figured out my point yet, consider this: A rock doesn’t need proof that it’s a rock. It simply is. So… if logic serves… why would I need to test a number to see if it’s a number? Kind of defeats the whole purpose, don’t you think?

For you JavaScript purists out there, I get it: There are a thousand ways to write a number in JS. HOWEVER, with Typescript’s “strong typing”, the function ONLY accepts a number. So then what is the point of this function? Exactly — the purpose has been negated. In its current state, this function can only EVER return true. So, pointless.

I figure when I get some time I’ll create a pull request to fix this interface and function, because this is just silly. Please, feel free to beat me to it. Because this is not a good reason to use @ts-ignore.

8 years and counting, and no one ever reacted to this with a “What the heck?!?”?

UPDATE: “About last night…”

Just heard back from the dealership. Turns out that the tire itself is fine. It deflated, rather, because the tire’s valve stem was damaged.

Now it makes sense why my tire was flat but I didn’t see any holes or things sticking out of it.

At least I’ll have my chariot back today. 😁

UPDATE: “About last night…”

“About last night…“

June 25th is a day that will go down in infamy. Several notable things happened at some point in history on this day:

  • Custer made his last stand in The Battle of Little Bighorn. (1876)
  • Anne Frank: The Diary of a Young Girl was published. (1947)
  • North Korea invaded South Korea, sparking the Korean War. (1950)
  • Prince released Purple Rain. (1984)
  • A good friend was born. ([redacted])

And now I’m adding “The Odyssey of the Flattened Run Flat”.

To understand where I’m coming from, you’ll need a bit of context. Preeminent of which is the fact that I drive Mercedes-Benz. Am I bourgeoisie? One look at my wardrobe and you’ll know that is not the case. Rather, I simply made the mistake of test driving one during an impressionable time in my life… and that experience stuck. I’m talking “instant convert”. And one of the many platitudes I would have expounded to you as to why the cost was worthwhile was the historical fact that “Mercedes-Benz takes care of its own”. As in if something went wrong with the vehicle while you were relatively near a certified service center, they would move Heaven and earth to get you rolling again. At the very worst, they would set you up for the quickest and most convenient service appointment possible. If advisable, setting up transport for your vehicle to the service center was a given.

So, bourgeoisie? No. Spoiled? Maaaaybe. Now that we have gotten that out of the way — what happened?

Simply put, I got a flat tire. But not just any flat tire. I got a flat on a tire that is designed to not go flat. My tire went flat in less than 10 seconds. I literally watched the pressure fall via the sensor warning. I wasn’t really concerned by that because I get it: Things fail all the time. The part that was concerning was the mitigation — or lack thereof — which happened afterwards.

As I alluded to in the “bit of context”, events like this normally wouldn’t be a thing. Tire goes flat. You call Mercedes-Benz customer service. They come out and change the flat for you. You head in to get the normal tire replaced & rebalanced. And just like that, you’re on your way. Normally, we’re talking maybe 1 to 2 hours of minimal inconvenience. However, I don’t have a spare; vehicles with run flats aren’t equipped with them. “No problem,” I thought. The vehicle even helpfully noted that it detected a breakdown and requested that I allow it to call Mercedes-Benz Roadside Assistance. Of course I said, “Yes, please.”

And then the Odyssey began.

Y’all — my flat occurred right around 5pm, and I didn’t get home until around 1:30am. I ended up having to call AT&T Roadside Assistance. And because of the ensuing, horrific, comedy of errors, I had to pay $321 out of pocket for a late night transport. The confirmed wrecker that was originally supposed to transport my vehicle was cancelled… because AT&T’s own Call Protect app has AT&T’s Roadside Assistance number listed as a severe spam threat. That means my phone never rang while their own app dutifully blocked all inbound attempts to reach me. I had even spoken with the transport company twice after they were confirmed because they had to switch out the originally scheduled driver due to medical issues. AT&T Roadside Assistance assumed I was ignoring them and cancelled the ticket. Which they never informed me of. For about 2 hours. I would still be there waiting to hear back from them if I hadn’t followed up for a status update.

This screenshot was taken after I’d manually unblocked the automatically blocked number. And why does an 800 number show up as a mobile number? 🤷🏾‍♂️🤦🏾‍♂️

And don’t get me started on that POS app you get shunted to if AT&T Roadside Assistance can’t immediately process your call. At least half of the issues I ran into with AT&T were due to confusion sewn by that app.

The real kicker in all this sordid mess? Mercedes-Benz Roadside Assistance never once answered any of at least 10 calls. Never once. I listened to that utterly annoying “someone will be with you shortly” message and music hundreds of times while I waited for help for more than two cumulative hours. The “service” — the cost of which is built into the vehicle price — completely failed me when I needed it most.

The Mercedes-Benz emergency service which is synonymous with OnStar? They are excellent; that team is on the ball and always respond instantly. Roadside Assistance? Whomever runs that group needs to be publicly tarred, feathered, and then fired for incompetence. Maybe they’re not the person who is supposed to be answering the phones and getting people the help they need. But they’re the person who has fostered an environment where the very customer they’re supposed to serve isn’t.

The day wasn’t a complete wash though. I got to catch up with some folks. The last of which is a good friend I’m eternally grateful for because he sat there with me for most of the Odyssey, AND he was the person who brought me home after the transporter picked up my vehicle.

LB – you’re appreciated, man.

“About last night…“

Microsoft Teams got you down with Errorcode 80080300 on login?

Yep, me too. I wasn’t able to log into the Teams desktop app for about 2 days because of it. I finally got tired of having to use the browser for this, so I did a bit of sleuthing. I ended up at this tech community post with a successful fix posted by @Arayn_Raje.

The fix for me was to:

  1. Sign out of Teams; if that is not possible then at least fully quit the app using the icon in the System Tray or exit out of it using the Task Manager.
  2. Go to the Teams shortcut on the file system; for me it is at %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs.
  3. Right-click the icon and select Properties.
  4. On the dialog that opens, click the Compatibility tab.
  5. Check the box inside the Compatibility mode section on that tab and make sure the selection is set to Windows 8 (it should be by default).
  6. Click Apply.
  7. Open Teams again — it should work now; sign out and sign back in to make sure the change isn’t a fluke.
  8. In Teams, check for updates; there should be one.
  9. VERY IMPORTANT: Be sure to sign out of any other Teams accounts other than the one that just successfully signed in.
  10. The Compatibility mode setting can be removed now.

So, what is going on here? Well, it seems that Microsoft has removed the capability to be simultaneously logged into both work and personal Teams accounts. I can’t definitively say this, but the following statement — visible when you try to use Team’s personal account switcher to get to your other accounts — seems to corroborate my findings:

Message presented when trying to switch to a personal Teams account from a Work account.

If you attempt the Sign out here without also signing out of Teams via the desktop application, you WILL get the same error that started this whole mess. << sigh >>

Microsoft Teams got you down with Errorcode 80080300 on login?

Atlanta Code Camp 2018

Today, I was back in the ATL — despite Florence trying to make things difficult — talking about one of my favorite subjects and passions: Cortana. I had a small but entirely engaged group in the room — and we had a GREAT TIME — solving a real problem. That wasn’t a simply “Hello World” demo, was it Gerald?  😉

Anyway, here are the slides and take home content from the presentation. I just realized that one (or several) of the slides near the end have changed slightly… but no biggie; the gist of the content is still accurate. I’ll eventually update those screenshots… but not today. 😀

Let me know if you have questions.

Happy Coding!

Atlanta Code Camp 2018

Tech Talks – May 2018


I had the honor of meeting (and in some cases, reconnecting) with a great group of people at Bradenton’s Station 2 Innovation. Spark Growth put on one of their many Tech Talks, inviting subject matter experts to share what new and useful in their fields of passion. Mine, of course, is Cortana.  😉

For the participants of my talk this morning: Thank you for enthusiasm and attendance! Here’s the slide deck that we (kind of) went through. Please feel free to contact me if you have questions regarding today’s content.

Tech Talks – May 2018

Farewell, Dr. Ashley

Dr. Clyde Ashley

I earned my MBA from the illustrious School of Business and Industry at Florida A&M University in May 2000. To a large degree, that would not have been possible without Dr. Clyde Ashley. No, he didn’t do me any “favors” (that I’m aware of)…  but his constant presence, support and guidance were instrumental in my matriculation there. He was so down to earth that he tried to discourage me from calling him “Dr. Ashley” after about 2010; it didn’t work.

How does one describe Dr. Ashley? I can think of quite a few phrases:

  • A consumate gentleman
  • Always demanding excellence
  • Amazingly aggressive
  • Caringly critical
  • Defender of those under his wings
  • Encourager of all
  • Exacting of effort
  • Exhalter of anyone due credit
  • Fiercely loyal
  • Poetic to a fault
  • Progressively protective
  • Stalwart, without peer

… but none of these do the man justice. Words fail to describe the heart that was his and how he looked after anyone he felt worthy of personal patronage — which was doggone near everyone. I can’t tell you how many times he encouraged me. His method wasn’t empty words though; rather, he challenged you, and challenged you, and challenged you… until you had no choice but to respond. Even still, his method is best described by the following:

My way is all love and confidence, and I cannot understand those souls who are afraid of so loving a Friend.” –  St. Thérèse of Lisieux

Doc, thank you for pouring everything that was you into so many of us. You made an impact on my life that can never be forgotten or erased. You will be missed. Rest well.

Farewell, Dr. Ashley

Dept. Of Education Fail: Teachers Lose Grants, Forced To Repay Thousands In Loans : NPR Ed : NPR

The TEACH grant helps future teachers pay for college or a master’s. Many say that when they started teaching, they were forced to pay it back. A study obtained by NPR suggests thousands are affected.
— Read on

This is just crazy. I hate to say it, but I think we’re witnessing the start of Ideaocracy. How? By limiting quality education to the wealthy-ier parts of the population. This is partially achieved by — as the article alludes to — squeezing out quality teachers dedicated to low-income areas. Oh, they’ll still be getting an education… But will it be from people who care about their students and those children’s futures or people who are simply working to collect a check?

Which would you want for your children?

Dept. Of Education Fail: Teachers Lose Grants, Forced To Repay Thousands In Loans : NPR Ed : NPR