Danny Thompson's Avatar

Danny Thompson

@dthompsondev.bsky.social

Software Developer | Director Of Technology at This Dot Labs | Commit Your Code Conference Organizer | The Programming Podcast & Modern Web Podcast Host https://www.dthompsondev.com Dallas, TX

9,767 Followers  |  768 Following  |  1,624 Posts  |  Joined: 21.04.2023  |  1.7934

Latest posts by dthompsondev.bsky.social on Bluesky

Post image Post image

I said this earlier in the year that The Programming Podcast would be #1 on my Spotify Wrapped. @dthompsondev.bsky.social and @leonnoel.bsky.social delivered!!!

03.12.2025 16:36 — 👍 6    🔁 1    💬 0    📌 0
Post image

Listened to Ep 19 of The Programming Podcast from
@leonnoel.bsky.social & @dthompsondev.bsky.social on the drive back home. It's from March 20th. Detoured & visited with @sirashtondev.bsky.social. walked 4.5 miles through Monrovia to get some steps in together.

#100Devs #webdev

20.11.2025 08:34 — 👍 12    🔁 2    💬 1    📌 0
Post image

Listened to Ep 18 of The Programming Podcast from
@leonnoel.bsky.social & @dthompsondev.bsky.social while driving. It's from March 7th. I last listened on April 17th. So behind...

#100Devs #webdev

19.11.2025 23:48 — 👍 14    🔁 1    💬 1    📌 0
A big group photo at a meetup

A big group photo at a meetup

DALLAS! Our Last meetup of the year is on December 9th and it will be our most requested meetup to end the year right, A Night Of AI. I need some speakers for this one. Anyone interested in speaking in person for this one? Need 4 speakers for 10-15 minute lightning talks.

15.11.2025 16:42 — 👍 6    🔁 0    💬 0    📌 0
Post image

True friendship is joining your friend's livestream to ask questions that spark discussions.

Also, @dthompsondev.bsky.social is live on LinkedIn go check it out great stuff!

www.linkedin.com/events/stopl...

14.11.2025 19:31 — 👍 7    🔁 1    💬 0    📌 0

safeUser is a NEW object with only: id, name, email, createdAt, updatedAt

If you JSON.stringify(safeUser), it will NOT contain passwordHash or isAdmin - they're genuinely not in the object.

return user as PublicUser; NO ERROR, BUT UNSAFE! This would be an issue but the original would not be

13.11.2025 15:26 — 👍 1    🔁 0    💬 0    📌 0

Great question and totally understand where the thought process is here. In this particular example, safeUser IS truly safe at runtime because the destructuring with rest operator creates a new object that physically excludes those properties:

const { passwordHash, isAdmin, ...safeUser } = user;

13.11.2025 15:26 — 👍 1    🔁 0    💬 1    📌 0

After using COUNTLESS AI agents & LLM-powered IDEs, my takeaway is simple:

We're obsessed with benchmarks, but developer adoption will come down to one thing: UI/UX.

The BEST EXPERIENCE will win, NOT just the highest score.

12.11.2025 22:47 — 👍 8    🔁 0    💬 0    📌 0

Yesterday we discussed Pick and it only felt natural for us to discuss Omit today! Share this with a friend and come back tomorrow for another Typescript tip!
bsky.app/profile/did:...

12.11.2025 17:15 — 👍 3    🔁 0    💬 0    📌 0
Image is a code snapshot and this is the code in the image
interface User {
  id: number;
  name: string;
  email: string;
  passwordHash: string; // <-- Sensitive!
  createdAt: Date;
  updatedAt: Date;
  isAdmin: boolean;      // <-- Sensitive!
}

/* 
  We will use Omit to create a "blocklist" and prevent
  accidental exposure of sensitive fields.
  This is the opposite of Pick.
*/

type PublicUser = Omit<User, 'passwordHash' | 'isAdmin'>;

// This function is now SAFE.
function getPublicUser(user: User): PublicUser {

  // TRYING TO RETURN THE FULL OBJECT? No no no.
  
  // return user; 
  // ❌ TypeScript ERROR: Type 'User' is not assignable to 'PublicUser'.
  // Types of property 'passwordHash' are incompatible.
  // This just saved us from accidentally exposing sensitive data!
  
  
  // You MUST explicitly separate the data:
  const { passwordHash, isAdmin, ...safeUser } = user;
  
  return safeUser; // ✅ This is safe and passes the type check!
}

Image is a code snapshot and this is the code in the image interface User { id: number; name: string; email: string; passwordHash: string; // <-- Sensitive! createdAt: Date; updatedAt: Date; isAdmin: boolean; // <-- Sensitive! } /* We will use Omit to create a "blocklist" and prevent accidental exposure of sensitive fields. This is the opposite of Pick. */ type PublicUser = Omit<User, 'passwordHash' | 'isAdmin'>; // This function is now SAFE. function getPublicUser(user: User): PublicUser { // TRYING TO RETURN THE FULL OBJECT? No no no. // return user; // ❌ TypeScript ERROR: Type 'User' is not assignable to 'PublicUser'. // Types of property 'passwordHash' are incompatible. // This just saved us from accidentally exposing sensitive data! // You MUST explicitly separate the data: const { passwordHash, isAdmin, ...safeUser } = user; return safeUser; // ✅ This is safe and passes the type check! }

Still trying to leak sensitive data?!
Instead of a 'safelist' for WHAT TO INCLUDE, you need a 'blocklist' for what to exclude!

Meet Omit. It's the perfect utility type for when you want to return ALMOST everything from an object, but need to guarantee you hide sensitive fields:

12.11.2025 17:15 — 👍 8    🔁 0    💬 2    📌 1

Success is empty if you're the only one who makes it. The real goal isn't to get into the room; it's to hold the door open and pull three more people in with you. That's impact

12.11.2025 14:03 — 👍 24    🔁 1    💬 0    📌 0
image is a screenshot of code and this is the code
interface User {
  id: number;
  name: string;
  email: string;
  passwordHash: string;
  createdAt: Date;
  updatedAt: Date;
  isAdmin: boolean;
}

/* 
  We will use Pick to define our safely exposed user data and prevent
  accidental exposure of sensitive fields.
  No sensitive fields are exposed like passwordHash or isAdmin.
*/

type PublicUser = Pick<User, 'id' | 'name' | 'email'>;
function getPublicUsers(db: { user: User[] }): PublicUser[] {
  return db.users.map(user => ({
    id: user.id,
    name: user.name,
    email: user.email,
    // TRYING TO GET DATA THAT COULD POTENTIALLY BE EXPOSED?
    passwordHash: user.passwordHash,  // ❌ TypeScript ERROR - not in the Pick type!
    isAdmin: user.isAdmin,            // ❌ TypeScript ERROR - not in the Pick type!
  }));
}

image is a screenshot of code and this is the code interface User { id: number; name: string; email: string; passwordHash: string; createdAt: Date; updatedAt: Date; isAdmin: boolean; } /* We will use Pick to define our safely exposed user data and prevent accidental exposure of sensitive fields. No sensitive fields are exposed like passwordHash or isAdmin. */ type PublicUser = Pick<User, 'id' | 'name' | 'email'>; function getPublicUsers(db: { user: User[] }): PublicUser[] { return db.users.map(user => ({ id: user.id, name: user.name, email: user.email, // TRYING TO GET DATA THAT COULD POTENTIALLY BE EXPOSED? passwordHash: user.passwordHash, // ❌ TypeScript ERROR - not in the Pick type! isAdmin: user.isAdmin, // ❌ TypeScript ERROR - not in the Pick type! })); }

The scariest bug in production?
Accidentally exposing sensitive data!

Don't just hope you filtered your objects.
Enforce it at the type level!

Here's how TypeScript's Pick utility type acts as your security guard. It lets you create a "safelist" of properties.

11.11.2025 17:18 — 👍 6    🔁 1    💬 0    📌 1

Working on a new advanced Typescript talk for a tech meetup, showing and explaining Template Literal Types and really highlighting Type-level string manipulation.

Is there anything in this area that you think I should really highlight or emphasize?

11.11.2025 03:32 — 👍 7    🔁 1    💬 1    📌 0
Image shows the signed in user dashboard

Image shows the signed in user dashboard

The Commit Your Talk (CYT) project now has Auth and User Management on the Website using @WorkOS AuthKit!

Curriculum has been added to the site and now the goal is to add in curriculum tracking so people can log into their accounts and keep track of how much they have done!

03.11.2025 17:02 — 👍 4    🔁 0    💬 0    📌 0
Commit Your Talk banner

Commit Your Talk banner

A weekly call that helps software developers of all levels become more confident in discussing technical topics to help their careers.

I am at the very beginning stages but I am creating this open source project with my discord where we will host weekly calls with a curriculum!

02.11.2025 05:16 — 👍 15    🔁 5    💬 1    📌 0

Hahah oh wow. I definitely relate to this and feel this on a very deep level!

01.11.2025 22:52 — 👍 1    🔁 0    💬 0    📌 0
Two tweets from me in September and November 2023 bemoaning the fact that I couldn't get a functional RSS feed from a YouTube playlist so that as each new video was added a new 'atom' would be added to it. I had planned to add the YouTube version of Jason Alexander (Seinfeld) and Peter Tilden's "Really? No, Really?" podcast on the sidebar of my Google Blogger blog which has a feature where RSS feeds can work there. Unfortunately it just displayed the first ones released and never updated. It turns out I may have been able to do something if I had access to the channel's API (no, as I'm not part of the production) and ability to interact with the underlying code of Blogger (technically possible in part, up to a point, but also not because I am not a coder - despite being interested in coding-related things as it's helpful CPD for my job and interests).

Two tweets from me in September and November 2023 bemoaning the fact that I couldn't get a functional RSS feed from a YouTube playlist so that as each new video was added a new 'atom' would be added to it. I had planned to add the YouTube version of Jason Alexander (Seinfeld) and Peter Tilden's "Really? No, Really?" podcast on the sidebar of my Google Blogger blog which has a feature where RSS feeds can work there. Unfortunately it just displayed the first ones released and never updated. It turns out I may have been able to do something if I had access to the channel's API (no, as I'm not part of the production) and ability to interact with the underlying code of Blogger (technically possible in part, up to a point, but also not because I am not a coder - despite being interested in coding-related things as it's helpful CPD for my job and interests).

@dthompsondev.bsky.social @leonnoel.bsky.social Enjoying the latest episode of The Programming Podcast in particular, haha :) Glad it's not just me!

01.11.2025 13:46 — 👍 3    🔁 1    💬 1    📌 0

Yes! Someone in my discord made a comment about kids with too many food allergies feel left out and sometimes go trick or treating with their families since other kids in their family may not be allergic.

I had 4 kids with that issue show up. Then gave out the stickers to other little kids.

01.11.2025 02:02 — 👍 3    🔁 0    💬 1    📌 0

I know it's not my normal content, we will be back to your regularly scheduled software developer related content after the sugar rush goes away 😂

31.10.2025 23:02 — 👍 10    🔁 0    💬 2    📌 0
A table packed with candy

A table packed with candy

A table with a ton of candy and a rocking chair

A table with a ton of candy and a rocking chair

I AM SORRY. I have to clear up the rumors: Yes, we are THAT HOUSE That all the kids at school will be talking about on Monday.😎

We are bringing out the Full-size candy bars, Japanese candy, and a massive selection for the kids to go wild!

Healing my inner child every year 🥹

31.10.2025 23:02 — 👍 53    🔁 4    💬 7    📌 1

Stop selling features or bragging about who you worked with and start solving problems. The invoice will follow.

31.10.2025 16:52 — 👍 6    🔁 0    💬 0    📌 0

What's more powerful than a developer who can delete their own 'clever' code for more readable code for the good of the team?

31.10.2025 13:12 — 👍 12    🔁 0    💬 1    📌 0

YouTube
youtu.be/cYD3ZBFMB_U

Spotify
open.spotify.com/episode/6CaS...

Or anywhere else you listen to podcasts!

30.10.2025 11:14 — 👍 6    🔁 1    💬 0    📌 0
Post image

Want to know how NOT to take a project from ticket to production? 😂

Tomorrow's "The Programming Podcast" episode covers all the lessons learned the hard way. I just rewatched it, and it's a GOOD one!

What's your biggest "project gone wrong" regret?
Let me know below! 👇

30.10.2025 02:44 — 👍 4    🔁 0    💬 0    📌 1

What are you currently learning or trying to learn about software development? Are you learning a new tool, experimenting with a new framework, or implementing something new?

What is on your plate that you are trying to tackle?

28.10.2025 21:31 — 👍 5    🔁 0    💬 2    📌 0

Sometimes you are so go-go-go that you forget to pause for a second and see how far you have come.

Now we have an amazing community of people who consistently tune in every week?! Literally blows my mind.

Thank y'all for hanging out with us every Thursday morning!

Here's to 50 more!

28.10.2025 05:21 — 👍 5    🔁 0    💬 0    📌 0
Image a screenshot showing 2 of the latest The Programming Podcast videos and they are numbered with the latest one being number 50.

Image a screenshot showing 2 of the latest The Programming Podcast videos and they are numbered with the latest one being number 50.

BY THE WAY! The latest episode of The Programming Podcast was officially our 50th published episode!!!! @leonnoel.bsky.social!

Wow. I saw it when I made the YouTube API request while working on the podcast page of my new site.

I remember us getting 10 listens, & we were literally GEEKING out!

28.10.2025 05:21 — 👍 8    🔁 0    💬 2    📌 0

If I ever fail doing something, it will NEVER be due to a lack of effort or trying. It will be for factors outside of my control. If I can control it, I'll always have it to the greatest level of my abilities.

27.10.2025 13:06 — 👍 5    🔁 0    💬 1    📌 0

Some quick metrics:
- We have had 236,000 impressions ON SPOTIFY ALONE in the last 30 days.
- 72.7% of our audience is on Spotify
- 60% in the US
- Core Age Demographic being 23 - 45 Year olds, with 28-34 being the highest percentage.

The podcast is growing!

25.10.2025 15:44 — 👍 3    🔁 0    💬 0    📌 0
Post image

For The Programming Podcast, we are VERY selective on the guest cohosts we bring on. We try to make sure that if they are there, it is for a huge purpose, and y'all seem to love this.

Who should we start aiming to bring on next?
Who do YOU want to hear, and the big one, WHY?
@leonnoel.bsky.social

25.10.2025 15:31 — 👍 11    🔁 2    💬 1    📌 0

@dthompsondev is following 20 prominent accounts