Click the photo see it at full size.
Every week, I compile a list of events for developers, technologists, tech entrepreneurs, and nerds in and around the Tampa Bay area. We’ve got a lot of events going on this week, and here they are!
Monday, September 24
- Digital Photo Artists — Monthly DPA Dinner = Popi’s Place in Lakewood Ranch @ 5:00 PM to 7:00 PM
- Learn Cybersecurity Tampa — Hacking 101: Open Sesame! Garage Door Hacks @ SecureSet, 6:00 PM to 8:00 PM
- Cool ‘n Confident Toastmasters @ SPC – St. Petersburg/Gibbs Campus @ 6:30 PM to 8:00 PM
- South Tampa Toastmasters @ Unity of Tampa, 7:00 PM to 8:15 PM
- Geekocracy! — Play ‘Overwatch’ Deathmatch at Geekout Games and Pizza Party! @ Geek Out! Games, 7:00 PM to 10:00 PM
- Nerdbrew Trivia — Pints & Pixels Gaming Night! @ Brew Bus, 7:00 PM to 11:00 PM
- Tampa Bay Bitcoin — Mining Mondays @ BlockSpaces, 7:00 PM to 9:00 PM
Tuesday, September 25
- Westshore Toastmasters @ FIVE Labs @ 12:00 PM to 1:00 PM
- Defcon 813 — Boot-n-root-beer @ The Wild Rover, 6:00 PM to 9:00 PM
- Weekly Open Make Night @ Tampa Hackerspace, 6:00 PM to 10:00 PM
- The return of Tampa iOS Meetup! @ Sourcetoad, 6:30 PM to 8:30 PM
- Tampa JUG — The New Java Release Schedule and What It Means to You @ Valpak Manufacturing Center, 6:30 PM to 8:30 PM
- Tampa Artificial Intelligence Meetup — AI Study Group Meeting @ Town ‘N Country Regional Public Library, 6:30 PM to 8:00 PM
- Tampa Startup Founder 101 — Making the Leap from Employee to Entrepreneur in Tampa @ Tampa Bay Wave, 6:30 PM to 8:30 PM
- Game Club Tampa Meetup — Tuesday Nite Roleplayers (RPGs) @ Grand Arena of Mind Expansion, 6:30 PM to 9:30 PM
- Portkey to Magic — Game of Thrones Trivia @ Jacks London Grill, 7:00 PM to 9:00 PM
- Tampa Bay Laravel — Laravel Nova & What’s New in Laravel 5.7 @ 3rd Floor, 33 6th Street South, St. Petersburg, 7:00 PM to 9:00 PM
- Tampa R Users Group — Deep Learning vs Machine Learning in R @ Southern Brewing & Winemaking, 7:00 PM to 9:00 PM
Wednesday, September 26
- Tampa Bay WaVE — OPEN/Women’s Networking Event – 1 Million Cups @ Entrepreneur Collaborative Center (ECC), 8:00 AM to 9:00 AM
- 1 Million Cups St. Pete — A Gift to Africa / Yummi Foods @ St. Petersburg Greenhouse, 9:00 AM
- 1 Million Cups Tampa — Engineering Marketing Consultants (EMC) / HireMadSkills, Inc. (MadSkills) @ Entrepreneur Collaborative Center, 9:00 AM
- IEEE Professionals of the Florida West Coast — Blockchain: What it is, How it Works, And What it Means @ Tampa Electric – TECO Plaza Atrium, 6:00 PM to 8:00 PM
- Tampa Product Management Meetup — Product Management Meetup Task Force Kickoff – Tampa @ Brickhouse Tavern, 6:00 PM to 7:00 PM
- St. Pete Podcasters — Sept Meeting | Jimmy Murray @ Station House, 6:00 PM to 7:30 PM
- Business Process Improvement Professionals Of Tampa Bay — Defining your Digital Business Model @ PSCU Financial Services, 6:00 PM to 8:00 PM
- IIBA Tampa Happy Hour! @ Coppertail Brewing Co, 6:00 PM to 8:00 PM
- Learn to Code | Thinkful Tampa — Free Crash Course: Basic JavaScript @ Secureset Academy, 6:30 PM to 8:00 PM
- Shopbot Safety and Usage (Members Only) @ Tampa Hackerspace West, 7:00 PM to 9:00 PM
- Women in Linux — Understanding Linux @ 7:00 PM to 9:00 PM
- Code Katas — Let’s Do Some Harder Fun Code Challenges! @ PROforma, 7:00 PM to 9:00 PM
- Nerdbrew Trivia — Games & Grog @ Peabody’s Billiards and Games, 7:00 PM to 11:00 PM
- ST PETE SHOPIFY 101 — Intro meeting and basic overview of Shopify @ 7:00 PM to 9:00 PM
Thursday, September 27
- Geek Breakfast @ Jimbo’s Pit Bar-B-Q, 7:30 AM to 9:30 AM
- LaunchCode’s Disrupting the Digital Norm @ CAVU, 8:15 AM to 11:00 AM
- ENGAGE – A Network for Evolving Entrepreneurs — Mastering Your Inner Game for Entrepreneurs with Dr Linda @ 9:00 AM to 11:00 AM
- Tampa and Orlando Google Cloud Computing Events — Machine Learning Made Easy on Google Cloud Platform & Apigee! @ Tampa Aquarium, 2:00 PM to 4:00 PM
- Startup Space Tampa Bay Entrepreneurs and Small Businesses — How to build a WILDLY profitable business off of INSTAGRAM @ The Entrepreneur Collaborative Center, 2:00 PM to 3:30 PM
- Game Club Tampa Meetup — D&D 5E (Looking for Players) — New Campaign @ Grand Arena of Mind Expansion, 5:30 PM to 10:00 PM
- Tampa Bay AWS User Group — Customer Case Study – Verizon and Amazon GuardDuty @ Verizon, 6:00 PM to 8:00 PM
- Tampa Bay Business Intelligence and Data Analytics — Monthly Meeting: Data Engineering at scale with Azure Databricks @ AgileThought, Inc, 6:00 PM to 8:00 PM
- Tampa SQL User Groups — Hillsborough – Monthly Meeting @ Corporate Center I, 6:00 PM to 9:00 PM
- Tampa SEO & Internet Marketing Meetup with Steve Scott — Best Times to Post on Social Media @ In The Loop, 6:00 PM to 8:00 PM
- GDG SunCoast — Flutter Study Jam – Part 3 @ SecureSet, 6:00 PM to 9:00 PM
- Suncoast Developers Guild — Crash Course: Intro to Node @ Suncoast Developers Guild, 6:30 PM to 8:30 PM
- Kakkoii-Otaku Clan — The Transformers (1986) Movie Event @ 7:00 PM to 9:00 PM
- 3D Printing Guild @ Tampa Hackerspace, 7:00 PM to 10:00 PM
- Shopbot Safety and Usage (Members Only) @ Tampa Hackerspace West, 7:00 PM to 9:00 PM
Friday, September 28
- Lean Coffee for All Things Agile (Westshore) @ Panera Bread, 7:30 AM to 8:30 AM
- Café con Tampa — Funding our public schools w/ Jeff Eakins, Superintendent of Hillsborough Schools @ Oxford Exchange, 8:00 AM to 9:00 AM
- Sept 2018 Homebrew Hillsborough @ Cardinal Solutions, 8:30 AM to 11:30 AM
- The Green Asterisk Coworking @ The Pearl, 9:00 AM to 5:00 PM
- Tampa Bay Bitcoin — RChain: Building “The Coin Faucet” dApp @ BlockSpaces, 6:30 PM to 8:30 PM
Saturday, September 29
- Digital Divas — DIVA BRUNCH @ Cheddars Scratch Kitchen, 11:00 AM to 1:00 PM
- MR103 Aerial Drone Workshop @ Tampa Hackerspace, 1:00 PM to 4:00 PM
- Geekocracy! — Pinchaser’s Cyber Bowling Special! @ Pinchasers / VETERANS location, 8:00 PM to 11:00 PM
Sunday, September 30
- Tampa Drones Meetup — Open Fly Day – Come Fly With Us! @ Sheffield Disc Golf Park, 11:00 AM to 1:00 PM
- Tampa Python Meetup — Free Python Training: New Student Enrollment @ 11:00 AM to 1:00 PM
- Game Club Tampa Meetup — Learn to Play Role Playing Games @ Grand Arena of Mind Expansion, 12:00 PM to 4:00 PM
- Nerd Night Out — Game Night @ Dunkin’ Donuts (5610 E Fowler Ave), 4:00 PM to 7:00 PM
Every week, I compile a list of events for developers, technologists, tech entrepreneurs, and nerds in and around the Tampa Bay area. We’ve got a lot of events going on this week, and here they are!
Monday, September 17
- Learn Cybersecurity Tampa — Cybersecurity Career Convos: Let’s talk about job security! w/ Mike Korman @ SecureSet, 5:30 PM to 8:00 PM
- Cloud Security Alliance Tampa Bay Chapter — 12 Ways to Hack Two Factor Authentication (2FA) – Chapter Meeting [Registration is closed for Sept. 17 event; sign up for podcast] @ 6:00 PM to 8:00 PM
- OK! TRANSMIT, Art + Technology Meetup #3 @ Duncan McClellan Gallery, 6:00 PM to 8:00 PM
- The Tampa Cashflow Club — Cashflow 101 Game – How to play & game play @ Kat’s Office – BH, 6:00 PM to 9:00 PM
- Suncoast Developers Guild Jr: Scratch Class for Kids (ages 8-12) @ Suncoast Developers Guild, 6:30 PM to 8:30 PM
- Tampa Bay DevOps Monthly Meetup: Top Reasons Why DevOps Fails @ Salesforce Tampa, 6:30 PM to 9:00 PM
- Code for Tampa Bay Brigade — A Look at the Open Courts Data Project, with Steve Spiker @ The Attic On Kennedy, 6:30 PM to 8:00 PM
- Cool ‘n Confident Toastmasters @ SPC – St. Petersburg/Gibbs Campus, 6:30 PM to 8:00 PM
- Largo Board Games Meetup — Gloomhaven @ 7:00 PM to 10:00 PM
- 3D Printer Orientation @ Tampa Hackerspace, 7:00 PM to 8:30 PM
- I Love Marketing! – Let’s talk about using marketing to grow your business @ 7:00 PM to 9:00 PM
- South Tampa Toastmasters @ Unity of Tampa, 7:00 PM to 8:15 PM
- Tampa Bay Bitcoin — Mining Mondays @ BlockSpaces, 7:00 PM to 9:00 PM
Tuesday, September 18
- Tampa Small Business Owner Workshops — The Entrepreneurs Growth Seminar @ Suntrust Building, 9:00 AM to 10:30 AM
- Tampa Bay Tech — Nutanix’s X Tour: Imagine What’s Next @ The Florida Aquarium, Tuesday, 11:00 AM to Wednesday, 3:00 PM
- Westshore Toastmasters @ FIVE Labs, 12:00 PM to 1:00 PM
- Tampa SQL User Groups — Powershell for DBA @ St Pete College – EpiCenter, 6:00 PM to 9:00 PM
- Tampa Product Management Meetup — Product Management Meetup Task Force Kickoff – Gateway @ Brewer’s Tasting Room, 6:00 PM to 7:00 PM
- The .NETwork: UX @ Kforce, 6:00 PM to 9:00 PM
- Power BI Tampa – Fantastic Functions and Where to Find Them – September 2018 @ ConnectWise, 6:00 PM to 8:00 PM
- Weekly Open Make Night @ Tampa Hackerspace, 6:00 PM to 10:00 PM
- WordPress St. Petersburg — Ask Us Anything: Project Support & Crowdsourcing Meetup @ Suncoast Developers Guild, 6:30 PM to 8:30 PM
- Tampa Bay Python — Python Round Table @ 6:30 PM to 8:30 PM
- Spirited Toastmasters @ St Stephens Catholic School, 6:30 PM to 8:00 PM
- Game Club Tampa Meetup — Fear Agent: Dark Secret (Full) @ Grand Arena of Mind Expansion, 7:00 PM to 9:00 PM
- Blockchain Enthusiasts — Trading Tuesday! @ BlockSpaces, 7:00 PM to 9:00 PM
- St. Pete Beers ‘n Board Games Meetup for Young Adults @ Flying Boat Brewing Company, 7:00 PM to 10:00 PM
Wednesday, September 19
- Tampa Bay WaVE — OPEN/FREE Coworking for Veteran Entrepreneurs @ FirstWaVE Venture Center, 9:00 AM to 6:00 PM
- 1 Million Cups St. Pete @ St. Petersburg Greenhouse, 9:00 AM
- 1 Million Cups Tampa — ARC Tracker, Inc. and University of Athletes and Athletics @ Entrepreneur Collaborative Center, 9:00 AM
- Tampa Bay Blockchain Developers Meetup — Open code @ Blockspaces, 5:00 PM to 8:00 PM
- Grand Gamers of St. Petersburg Board Game Night @ Critical Hit Games, 5:00 PM to 11:00 PM
- Code for Tampa Bay Brigade — Open Hack Night @ Entrepreneur Collaborative Center (ECC), 5:30 PM to 7:30 PM
- Tampa Bay Agile — QA THE AGILE WAY: TBT @ 6:00 PM to 8:00 PM
- The Suncoast Linux Users Group @ Pinellas Park Public Library, 6:00 PM to 8:00 PM
- The Tampa Bay Gaming Group: D&D, D20, Pathfinder, & More! — Pathfinder Kingmaker Adventure Path – Looking For Players @ 6:00 PM to 10:00 PM
- Tampa Bay UX Group — Understanding & Managing Biases That Can Influence UX @ 352 Inc, 6:30 PM to 8:00 PM
- Resume Writing Workshop with Tech Ladies, GDI, and Suncoast Developers Guild @ Suncoast Developers Guild, 6:30 PM to 8:30 PM
- Learn to Code | Thinkful Tampa — Build a Web App with JavaScript & jQuery @ Secureset Academy, 6:30 PM to 8:00 PM
- Carrollwood Toastmasters @ Jimmie B. Keel Regional Library, 7:00 PM to 8:30 PM
- Women In Linux — Understanding Linux, 7:00 PM to 9:00 PM
- Getting Your Project from VCarve to CNC (Members Only) @ Tampa Hackerspace, 7:00 PM to 9:00 PM
- Tampa Bay Bitcoin — Bitcoin Cash @ BlockSpaces, 7:00 PM to 9:00 PM
- Nerdbrew Trivia — Games & Grog @ Peabody’s Billiards and Games, 7:00 PM to 11:00 PM
Thursday, September 20
- Girlfriends&Coffee Networking Group @ Belleair Coffee Company, 9:30 AM to 11:00 AM
- Digital Marketing Tampa Bay Meetup — Hey Google, what does VEO mean for my brand? @ PowerChord, Inc., 5:30 PM to 6:30 PM
- Game Club Tampa Meetup — D&D 5E (Looking for Players) — New Campaign @ Grand Arena of Mind Expansion, 5:30 PM to 10:00 PM
- Lean Beer for All Things Agile @ Zydeco Brew Werks, 6:00 PM to 7:30 PM
- Tampa Bay Speakers, Presenters, Managers & Leaders — How not to be a boring speaker and engage your audience @ The Alley at South Shore, 6:00 PM to 8:00 PM
- Seffner D&D Meetup — 1st ed AD&D Campaign. Open to new players. @ 6:00 PM to 10:00 PM
- WITI – STEM Opportunities and Challenges Panel Discussion @ SPC EpiCenter Collaborative Labs, 6:00 PM to 8:00 PM
- Crash Course: Intro to Ruby on Rails @ Suncoast Developers Guild, 6:30 PM to 8:00 PM
- Geekocracy! — ‘3rd Thursday’ Food Trucks and Live Music @ The Grand Central at Kennedy, 7:00 PM to 9:00 PM
- Tampa.rb: Mystery Meetup! @ Suncoast Developers Guild, 7:00 PM to 10:00 PM
- Hyperledger Tampa — Enterprise Blockchain: Hyperledger Fabric @ BlockSpaces, 7:00 PM to 9:00 PM
Friday, September 21
- Lean Coffee for All Things Agile (Downtown Tampa & Seminole Heights) @ FOUNDATION coffee co., 7:30 AM to 8:30 AM
- Café con Tampa — Connecting Florida’s Major Cities with High Speed Rail w/ Bob O’Malley @ Oxford Exchange, 8:00 AM to 9:00 AM
- Defcon813 — OWASP Tampa Day 2018 @ 8:00 AM to 3:00 PM
- Tampa Bay Agile — Grow Financial Agile Tour @ Grow Financial, 11:00 AM to 12:00 PM
- Tampa Otaku — MegaCon Tampa @ Tampa Convention Center, Friday, 4:00 PM to Sunday, 5:00 PM
- Tampa Otaku — St Pete Asian Street Fair & Craft Beer Fest – Free Admission @ Albert Whitted Park, 6:00 PM to 11:00 PM
- Geekocracy! — September Board Game Night! @ Friday, 7:00 PM to Saturday, 12:00 AM
- Open Source Hack and Chill @ Tampa Hackerspace, 7:00 PM to 10:00 PM
- Mindful Social Group — Tampa’s “The Power of NOW” by Eckhart Tolle Book Experience @ 7:00 PM to 8:30 PM
- CoderNight — Individual Challenge @ Malwarebytes Clearwater Office, 7:00 PM to 9:00 PM
Saturday, September 22
- Kakkoii-Otaku Clan — MEGACON TAMPA 2018-Sept. 21st-23rd @ Saturday, 10:00 AM to Sunday, 7:00 PM
- Geekocracy! — 2018 Tampa Bay Megacon! @ Tampa Convention Center, 10:00 AM to 8:00 PM
- MR101: Intro to Drones (Multi-Rotors) @ Tampa Hackerspace, 1:00 PM to 3:00 PM
- Bradenton Bitcoin And Cryptocurrency Meetup — We’re combining Sarasota and Bradenton Bitcoin and Blockchain Meetups this month @ Connect Bradenton, 2:30 PM to 4:00 PM
- Nerd Night Out — KARAOKE NIGHT! @ Fat Cat Tavern, Saturday, 8:30 PM to Sunday, 12:30 AM
Sunday, September 23
- Make Tampa Hackerspace Better Workday and cookout @ Tampa Hackerspace, 9:00 AM to 5:00 PM
- Geekocracy! — Paintball! @ Orbital Paintball, 10:00 AM to 1:00 PM
- Game Club Tampa Meetup — D&D 5E campaign (Full), bi-weekly @ Grand Arena of Mind Expansion, 11:00 AM to 5:00 PM
- Women as Leaders Network (WALN) — WALN’s 2nd Anniversary Party at Axe and Ale @ 12:00 PM to 3:00 PM
- Suncoast Audiophile Society — Sept “Mini Meet”- Oppo 205 vs. outboard DAC’s @ 1:00 PM to 3:30 PM
- Sew What? (Textile Arts & Crafts) @ Tampa Hackerspace, 5:30 PM to 8:30 PM
Creative Commons image by Don Miller. Click to see the source.
Every week, I compile a list of events for developers, technologists, tech entrepreneurs, and nerds in and around the Tampa Bay area. We’ve got a lot of events going on this week, and here they are!
Monday, September 10
- SecureSet Info Night Tampa @ SecureSet, 6:00 PM to 7:00 PM
- Welcome to SpeakEasy Toastmasters Club Meetup Group! @ Hibachi Buffet, 6:15 PM to 8:00 PM
- Cool ‘n Confident Toastmasters @ SPC – St. Petersburg/Gibbs Campus, 6:30 PM to 8:00 PM
- Women’s Entrepreneurial Think Tank @ Neptune Grill, 7:00 PM to 8:30 PM
- South Tampa Toastmasters @ Unity of Tampa, 7:00 PM to 8:15 PM
- Pints & Pixels Gaming Night! @ Brew Bus, 7:00 PM to 11:00 PM
- Tampa Bay Thinkers — Do we need to tweak the “freedom of expression” part of the First Amendment? @ Carrollwood Cultural Center, 7:00 PM to 9:00 PM
- Tampa Bay Bitcoin — Mining Mondays @ BlockSpaces, 7:00 PM to 9:00 PM
Tuesday, September 11
- Business Development and Sales — Leads and Coffee @ Belleair Coffee Company, 7:45 AM to 9:00 AM
- Westshore Toastmasters @ FIVE Labs, 12:00 PM to 1:00 PM
- Brandon Boardgamers — Tuesday Night Gaming @ Cool Stuff Games, 5:00 PM to 8:00 PM
- IAMCP (International Association of Microsoft) Tampa Chapter @ Microsoft Offices, 6:00 PM to 8:00 PM
- Monthly (2nd Tuesday) Meeting of the N. Pinellas IBD Meetup Group @ 6:00 PM to 7:30 PM
- St. Pete-Clearwater Investor’s Business Daily Meetup Group Monthly Meetup @ 6:00 PM to 8:00 PM
- The Tampa Investor’s Business Daily Meetup Group — Monthly Meeting October 3rd (schedule change) @ 6:00 PM to 8:00 PM
- Weekly Open Make Night @ Tampa Hackerspace, 6:00 PM to 10:00 PM
- Florida Podcasters Association General Meeting!!! @ IHop (4910 Spruce Street, Tampa), 6:30 PM to 8:30 PM
- Tampa Bay ServiceNow Developer Quarterly Meeting @ Tampa International Airport-Tpa, 6:30 PM to 8:30 PM
- Tampa Artificial Intelligence Meetup — AI Study Group Meeting @ Town ‘N Country Regional Public Library, 6:30 PM to 8:00 PM
- Game Club Tampa Meetup — Tuesday Nite Roleplayers (RPGs) @ Grand Arena of Mind Expansion, 6:30 PM to 9:30 PM
- Ybor Tech — September OpenHack @ Zydeco Brew Werks, 6:30 PM to 10:00 PM
- Code Katas — Let’s Do Some Fun Code Challenges! @ Suncoast Developers Guild, 7:00 PM to 10:00 PM
- Tampa Bay Professionals (IT, Sales, HR & more) — FOR ALL PROS – Speaking More Effectively @ WebEx Live-Online Session, 7:00 PM to 7:30 PM
- Tampa Bay Social Media Meetup — Web Entrepreneurs @ Tampa Bay Technology Center, 7:00 PM to 10:00 PM
- Blockchain Enthusiasts — Trading Tuesday! @ BlockSpaces, 7:00 PM to 9:00 PM
- Brandon Toastmasters Club @ Hillsborough Community College, 7:00 PM to 10:00 PM
- Woodshop Safety (Members Only) @ Tampa Hackerspace, 7:15 PM to 9:15 PM
- Suncoast Skeptics — Brainy Bowling @ AMF Bowling, 8:00 PM to 10:00 PM
Wednesday, September 12
- Tampa Bay WaVE — Open/FREE Coworking for Women Tech Entrepreneurs @ FirstWaVE Venture Center, 9:00 AM to 8:00 PM
- 1 Million Cups St. Pete — RaftUp / Galaxis @ St. Petersburg Greenhouse, 9:00 AM
- 1 Million Cups Tampa — Special presentation by US Small Business Administration / Verimour @ Entrepreneur Collaborative Center, 9:00 AM
- Young Professionals of Tampa Bay Networking Group — Bernini of Ybor Lunch Networking @ Bernini (innovative italian cuisine), 11:30 AM to 1:00 PM
- Learn Cybersecurity Tampa — Hacking 101: I^2L: Interactive Introduction to Linux @ SecureSet, 5:30 PM to 7:30 PM
- Code for Tampa Bay Brigade — Open Hack Night @ Entrepreneur Collaborative Center (ECC), 5:30 PM to 7:30 PM
- Nerd Night Out — Beer and Board Game Night St. Pete @ Avid Brew Co., 6:00 PM to 10:00 PM
- Tampa Bay UAS and Drone University — Saint Petersburg College UAS Meetup- September Meeting @ St. Petersburg College EpiCenter, 6:00 PM to 7:30 PM
- TampaDev — Tampa Community Connect Meetup Night, featuring “Getting Started with IoT and Azure”, and “Data Science, and the Changing Role of Data Professionals” @ Keiser University, 6:00 PM to 8:00 PM
- Suncoast Skeptics — Think + Drink at South Florida Museum @ South Florida Museum, 7:00 PM to 10:00 PM
- Suncoast Developers Guild — Open Code @ Marble Side Building, 7:00 PM to 9:00 PM
- Geekocracy! — Pub Trivia Night at World of Beer! @ World of Beer, 7:00 PM to 10:00 PM
- Introduction to Fusion 360 @ Tampa Hackerspace, 7:00 PM to 10:00 PM
- Blockchain Enthusiasts — Blockchain/Cryptocurrency Meetup: News, Q&A, Networking, Social @ BlockSpaces, 7:00 PM to 10:00 PM
- The Suncoast Linux Users Group — SLUG – Tampa @ New HDR Location, 7:00 PM to 9:00 PM
- Women In Linux — Understanding Linux @ 7:00 PM to 9:00 PM
- Carrollwood Toastmasters @ Jimmie B. Keel Regional Library, 7:00 PM to 8:30 PM
- Nerdbrew Trivia — Games & Grog @ Peabody’s Billiards and Games, 7:00 PM to 11:00 PM
Thursday, September 13
- Tampa Bay Area – Bootstrappers Breakfast @ Starbucks Reserve in Univ Of Tampa’s Lowth Entrepreneurship Center Building, 9:00 AM to 10:30 AM
- Tampa Education Technology Meetup — Keiser University – Career Fair @ Keiser University – Tampa Campus, 12:00 PM to 2:00 PM
- Startup Space Tampa Bay Entrepreneurs and Small Businesses — Digital Marketing 101 for Startups and Entrepreneurs @ St Petersburg College,12:30 PM to 2:30 PM
- Game Club Tampa Meetup — D&D 5E (Looking for Players) — New Campaign @ Grand Arena of Mind Expansion, 5:30 PM to 10:00 PM
- Tampa Bay Agile — Follow the Money: How to Talk to Executives About Agile (Steven Granese) @ Valpak Manufacturing Center, 6:00 PM to 8:00 PM
- Tampa Bay Azure User Group — Application Insights – A Deep Dive @ Bloomin’ Brands, 6:00 PM to 8:00 PM
- Seffner D&D Meetup — 1st ed AD&D Campaign. Open to new players. @ 6:00 PM to 10:00 PM
- Sisters in Technology — Network after work @ Panera Bread (364 Brandon Town Center Mall, Brandon), 6:00 PM to 7:30 PM
- Tampa Software QA and Testing Meetup — First Meetup – Tampa Software QA and Testing @ Sogeti Tampa, 6:00 PM to 8:00 PM
- Front-End Design Meetup — Interactive Web Apps with CSS Variables @ Suncoast Developers Guild, 6:30 PM to 8:30 PM
- Nerdbrew Trivia — Predator Party Double Feature + Gameshow! @ Villagio Cinemas, 7:00 PM to 11:00 PM
Friday, September 14
- Lean Coffee for All Things Agile (Waters Location) @ Panera Bread (6001 W Waters Ave, Tampa), 7:30 AM to 8:30 AM
- Lean Coffee for All Things Agile (St Petersburg / Tyrone) @ Panera (2420 66th St North, St Petersburg), 7:30 AM to 8:30 AM
- Café con Tampa — Greg Lindsay, author of Aerotropolis: The Way We’ll Live Next @ Oxford Exchange, 8:00 AM to 9:00 AM
- Tampa Bay Tech Events — The Green Asterisk Coworking @ The Pearl, 9:00 AM to 5:00 PM
- Geekocracy! — ‘The Predator’ at AMC Veterans 24 – Tampa Joes restaurant after! @ AMC Veterans 24 theater, 6:30 PM to 10:30 PM
- MARS ASTRONOMY CLUB — M.A.R.S Regular Monthly Meeting @ Perkins Restaurant (5002 E Fowler Ave, Tampa), 7:30 PM to 9:00 PM
Saturday, September 15
- Geekocracy! — Hillsborough River clean-up: Ricks on the River! @ Ricks On the River, 8:30 AM to 1:30 PM
- Game Club Tampa Meetup — Learn to Play Dungeons and Dragons @ Grand Arena of Mind Expansion, 12:00 PM to 4:00 PM
- Nerd Night Out — NNO Book Club: Year One @ Three Birds Tavern, 1:00 PM to 3:00 PM
- Microcontroller Monthly Meetup (M3) @ Tampa Hackerspace, 1:00 PM to 4:00 PM
- Cyber-Jedi’s — Vulnerability Discovery using NMap @ Cisco WebEx Webinar, 2:00 PM to 4:00 PM
- Tampa Unity User Group — Game Project Therapy @ Perkins Restaurant & Bakery (2626 Gulf to Bay Boulevard, Clearwater), 3:00 PM to 6:00 PM
- New Port Richey Casual Games and Fun Socializing Group! — Buffet Dinner/sushi and a fun game night to follow. @ Habachi Buffet, 6:00 PM to 9:30 PM
- Tampa Hackerspace Monthly Board Game Night @ Tampa Hackerspace, 7:00 PM to 11:00 PM
Sunday, September 16
Every week, I compile a list of events for developers, technologists, tech entrepreneurs, and nerds in and around the Tampa Bay area. We’ve got a lot of events going on this week, and here they are!
Monday, September 3
Please note: Unless the event has the words “Labor Day” in its title, you should double-check with the organizer to confirm that it’s actually happening.
- Tampa Drones Meetup — Labor Day BBQ @ Hilton RC Airfield, 11:00 AM to 3:00 PM
- Cool ‘n Confident Toastmasters @ SPC – St. Petersburg/Gibbs Campus, 6:30 PM to 8:00 PM
- Nerd Night Out — Retro/Indie Gaming at Brew Bus (Pints & Pixels) @ Brew Bus Brewing, 7:00 PM to 11:00 PM
- Tampa Bay Bitcoin — Mining Mondays @ BlockSpaces, 7:00 PM to 9:00 PM
Tuesday, September 4
- Westshore Toastmasters @ FIVE Labs, 12:00 PM to 1:00 PM
- Brandon Boardgamers — Tuesday Night Gaming @ Cool Stuff Games, 5:00 PM to 8:00 PM
- Entrepreneurs & Startups – Bradenton Networking & Education — Positioned for Growth – Opportunity and Timing with Sara Hand After Hours @ Station 2 Innovation Center, 5:30 PM to 7:30 PM
- THS Member Meeting @ Tampa Hackerspace, 6:00 PM to 7:00 PM
- WordPress St. Petersburg — Introduction to Writing Persuasive Content for the Web @ Suncoast Developers Guild, 6:30 PM to 8:30 PM
- West Pasco Toastmasters #2824 @ West Pasco Board of Realtors, 6:30 PM to 9:30 PM
- **Spirited Toastmasters** @ St Stephens Catholic School, 6:30 PM to 8:15 PM
- CLEARWATER eMarketing Groups — Quick and Easy Ways to Create Content, presented by Michael Crose @ iHop, 30200 US Hwy 19 South of Curlew Rd, Clearwater, 7:00 PM to 9:00 PM
- St Pete .NET Meetup — Introduction to Azure IoT Suite with John Wang @ Bank of the Ozarks Innovation Lab, 7:00 PM to 9:00 PM
- Pathfinder Society of the Tampa Bay Area — PFS @ Serenity Games, 7:00 PM to 11:00 PM
- Anime, Nerds and Geeks — AMC $5 MOVIES – KIN @ 7:00 PM to 9:30 PM
- St. Pete Beers ‘n Board Games Meetup for Young Adults @ Flying Boat Brewing Company, 7:00 PM to 10:00 PM
- Blockchain Enthusiasts — Trading Tuesday! @ BlockSpaces, 7:00 PM to 9:00 PM
Wednesday, September 5
- Tampa Bay WaVE — Open/FREE Coworking for Latino Tech Entrepreneurs @ FirstWaVE Venture Center, 8:00 AM to 11:00 AM
- 1 Million Cups St. Pete — Seed Funders / Givvn @ St. Petersburg Greenhouse, 9:00 AM
- 1 Million Cups Tampa — User Friendly Credit / Body by Chinyere @ Entrepreneur Collaborative Center, 9:00 AM
- Tampa Bay Blockchain Developers Meetup — Open code @ Blockspaces, 5:00 PM to 8:00 PM
- Code for Tampa Bay Brigade — Open Hack Night @ Entrepreneur Collaborative Center (ECC), 5:30 PM to 7:30 PM
- Tampa Bay Scrum Masters Guild @ KForce Tampa, 6:00 PM to 8:00 PM
- The Tampa Bay Gaming Group: D&D, D20, Pathfinder, & More! — Pathfinder Kingmaker Adventure Path – Looking For Players @ Oragnizer’s house, 6:00 PM to 10:00 PM
- USF entrepreneurs and startups networking @ 6:00 PM to 7:00 PM
- Tampa Artificial Intelligence Meetup — ML Product Management: Bias and Risk Management @ Entrepreneur Collaborative Center, 6:30 PM to 8:30 PM
- Sarasota Drone Flying Meetup — Let’s fly The Ringling Museum!!! All experience levels are welcome!!!!!!! @ The Ringling Museum, 6:30 PM to 8:30 PM
- Learn to Code | Thinkful Tampa — Web Development vs Data Science @ CoCreativ, 6:30 PM to 8:00 PM
- Laser Cutter Orientation @ Tampa Hackerspace, 7:00 PM to 9:00 PM
- Women in Linux — Understanding Linux @ 7:00 PM to 9:00 PM
- Carrollwood Toastmasters @ Jimmie B. Keel Regional Library, 7:00 PM to 8:30 PM
- Tampa Bay Bitcoin — Bitcoin Cash @ BlockSpaces, 7:00 PM to 9:00 PM
Thursday, September 6
- FL Biz Incubator Morning Spark Tank @ Dunedin Golf Club, 9:00 AM to 11:00 AM
- Girlfriends&Coffee Networking Group @ Belleair Coffee Company, 9:30 AM to 11:00 AM
- Tampa# – C# and .NET — Coffee & Code @ Pour House at Grand Central, 11:15 AM to 1:15 PM
- Tampa Doctors & Masters — Texas BBQ! @ Smokin’ Pig BBQ, 5:00 PM to 7:00 PM
- Game Club Tampa Meetup — The Chosen, a home brew pathfinder variant (FULL) @ Grand Arena of Mind Expansion, 5:30 PM to 10:30 PM
- Drupal Website Development, Design & Technologies Meetup — Modern Web Design & Development Meetup, focusing on Drupal CMS @ Panera Bread, 2285 Ulmerton Road, Clearwater
- Tampa Product Management Meetup — Product Management Meetup Task Force Kickoff – DTSP @ Green Bench Brewing Company, 6:00 PM to 7:00 PM
- Tampa Bay RPA — NO COST RPA TRAINING @ Entrepreneur Collaborative Center (ECC), 6:00 PM to 8:00 PM
- Suncoast Developers Guild — Crash Course: Vue.js, a new JavaScript Framework @ Suncoast Developers Guild, 6:30 PM to 8:00 PM
- Learn to Code | Thinkful Tampa — Frontend Crash Course: JavaScript Fundamentals @ Station House, 6:30 PM to 8:00 PM
- Suncoast.js — Big O Notation and What is “this” in JavaScript? @ Bank of the Ozarks’ Innovation Lab, 7:00 PM to 9:00 PM
- Agile Social — Reflections and Retrospectives – Mini Workshop ‘N Mingle @ City Blue, 7:00 PM to 9:00 PM
Friday, September 7
- Lean Coffee for All Things Agile (St Petersburg) @ Panera Bread, 7:30 AM to 8:30 AM
- Lean Coffee for All Things Agile (Carrollwood) @ Maple Street Biscuit Company, 7:30 AM to 8:30 AM
- Café con Tampa @ Oxford Exchange, 8:00 AM to 9:00 AM
- Speaking and Presentation Skills Success — List Building For Expanding Success @ Sheryl’s place, 11:30 AM to 1:00 PM
- Learn Cybersecurity Tampa — Beginner’s Intro to Capture The Flag & Raffle @ SecureSet, 5:00 PM to 6:00 PM
- Tampa Cybersecurity Meetup — Capture the Flag: Cybersecurity Hackathon & Raffle! @ SecureSet, 6:00 PM to 8:00 PM
- Machine Shop Mill and Chill (Members Only) @ Tampa Hackerspace, 6:00 PM to 10:00 PM
- Geekocracy! — Tampa Bay Grand Prix – Go-Karts! (Ladies night specials!) @ Tampa Bay Grand Prix Indoor Go Kart Racing, 8:00 PM to 10:00 PM
Saturday, September 8
- Content Creators — Tips & Tricks of Editing – Guest Speaker @ PRIVATE RESIDENCE, 12:00 PM to 1:00 PM
- Board Games and Card Games in Sarasota & Bradenton — Games at Kelly & Scott’s House @ Kelly & Scott’s House, 6:00 PM to 8:00 PM
- St. Pete Makers — Open Make Night / Open House @ St. Pete Makers – new location, 6:00 PM to 8:00 PM
- Tampa Doctors & Masters — Art Walk & Canopy! @ The Canopy, St. Petersburg, 6:00 PM to 11:00 PM
- Tampa CE-5 Ambassador to the Universe Meetup — September Group CE-5 Meet Up @ 7:00 PM to 3:00 PM
Sunday, September 9
Every week, I compile a list of events for developers, technologists, tech entrepreneurs, and nerds in and around the Tampa Bay area. We’ve got a lot of events going on this week, and here they are!
Monday, August 27
- Tampa Bay Agile — QA THE AGILE WAY: A Speaker Session “Can feedback loops help build team speed” @ Keiser University Tampa, 6:00 PM to 8:00 PM
- OK! TRANSMIT, Art + Technology Meetups — Art + Technology Meetup No.2 @ Duncan McClellan Gallery, 6:00 PM to 8:00 PM
- Learn Cybersecurity Tampa — Hacking 101: Making Cyber Threat Intel Actionable with Python @ SecureSet, 6:00 PM to 8:00 PM
- Tampa Bay IIBA — Workshop: Requirements Prioritization Games and Strategies @ KForce Tampa, 6:30 PM to 8:00 PM
- Cool ‘n Confident Toastmasters @ SPC – St. Petersburg/Gibbs Campus, 6:30 PM to 8:00 PM
- Tampa Bay Connections — Business Over Beers – Carrollwood @ Brass Tap – Carrollwood, 6:30 PM to 8:30 PM
- Women’s Entrepreneurial Think Tank @ Neptune Grill, 7:00 PM to 8:30 PM
- Tampa Bay Bitcoin — Mining Mondays @ BlockSpaces, 7:00 PM to 9:00 PM
- South Tampa Toastmasters @ Unity of Tampa, 7:00 PM to 8:15 PM
- Nerdbrew Trivia — Pints & Pixels Gaming Night! @ Brew Bus, 7:00 PM to 11:00 PM
Tuesday, August 28
- Business Development and Sales — Leads and Coffee @ Belleair Coffee Company,
- Success Strategies for Business Owners — Giving Back is GOOD for Business @ Manatee County Central Library, 11:30 AM to 1:00 PM
- Westshore Toastmasters @ FIVE Labs, 12:00 PM to 1:00 PM
- Weekly Open Make Night @ Tampa Hackerspace, 6:00 PM to 10:00 PM
- Game Club Tampa Meetup — Tuesday Nite Roleplayers (RPGs),
- Tampa R Users Group — Tensorflow/Keras! @ Southern Brewing & Winemaking, 7:00 PM to 9:00 PM
- NerdBrew Trivia: Cartoons! @ The Lowry Parcade and Tavern, 8:00 PM to 11:00 PM
Wednesday, August 29
- 1 Million Cups St. Pete — Fearless Mobile Climbing / Kilowatt Quest @ St. Petersburg Greenhouse, 9:00 AM
- 1 Million Cups Tampa — NORACORE / Show Up @ Entrepreneur Collaborative Center, 9:00 AM
- Code for Tampa Bay Brigade — Open Hack Night @ Entrepreneur Collaborative Center (ECC), 5:30 PM to 7:30 PM
- Tampa Bay Tech Career Advice Forum — What you need to know about creating an IT Resume @ Computer Coach Training Center, 6:00 PM to 8:00 PM
- Tampa Bay Business Intelligence and Data Analytics — Monthly Meeting @ AgileThought, Inc, 6:00 PM to 8:00 PM
- St. Pete Podcasters — Kick-Off Meeting @ Station House, 6:00 PM to 7:30 PM
- Sarasota Drone Flying Meetup — Let’s fly The Ringling Museum!!! All experience levels are welcome!!!!!!! @ The Ringling Museum, 6:30 PM to 8:30 PM
- Crash Course: Intro to React Native @ Suncoast Developers Guild, 6:30 PM to 8:00 PM
- Code Katas — Let’s Do Some Harder Fun Code Challenges! @ PROforma, 7:00 PM to 9:00 PM
- Nerdbrew Trivia — Games & Grog @ Peabody’s Billiards and Games, 7:00 PM to 11:00 PM
- Women in Linux — Understanding Linux @ 7:00 PM
- Tampa Entrepreneurs Network — Network After Work with Like Minded Entrepreneurs and Grow Your Business @ Best Buy District Office, 7:00 PM to 9:00 PM
- Blockchain Enthusiasts — Blockchain/Cryptocurrency Meetup: News, Q&A, Networking, Social @ BlockSpaces, 7:00 PM to 10:00 PM
- Geekocracy! — Wing Wednesday! $0.89 Wings and Liter of Beer Specials at Shamrock’s Ale House! @ Shamrocks Ale House,7:30 PM to 10:30 PM
Thursday, August 30
- Geek Breakfast @ Jimbo’s Pit Bar-B-Q, 7:30 AM to 9:30 AM
- GDG SunCoast — Migrating to the Google Cloud Platform – How to Get Started @ Vology, 3:00 PM to 5:00 PM
- Brandon Boardgamers — Let’s Game on Thursdays @ Panera Bread (3490 Lithia Pinecrest Road, Valrico),
- Data Analytics Meetup @ CCG, 5:30 PM to 8:00 PM
- Game Club Tampa Meetup — The Chosen, a home brew pathfinder variant (FULL) @ Grand Arena of Mind Expansion, 5:30 PM to 10:30 PM
- Tampa Bay Azure User Group — Cross Promotion: Azure Data Bricks @ 5:30 PM to 8:00 PM
- Tampa SQL User Groups — Hillsborough – Monthly Meeting @ Corporate Center I, 6:00 PM to 9:00 PM
- Game Drive’s Power Up Meetings @ John F. Germany Public Library, 6:00 PM to 9:00 PM
- Seffner D&D Meetup — 1st ed AD&D Campaign. Open to new players. @ 6:00 PM to 10:00 PM
- St. Pete Makers — Intro to Soldering @ St. Pete Makers – new location, 6:30 PM to 8:30 PM
- Hyperledger Tampa — Introduction to Hyperledger @ BlockSpaces, 7:00 PM to 9:00 PM
Friday, August 31
- Café con Tampa @ Oxford Exchange, 8:00 AM to 9:00 AM
- Homebrew Hillsborough — August 2018 Homebrew Hillsborough @ Diamond View, 8:30 AM to 11:30 AM
- The Green Asterisk Coworking — The Pearl @ 9:00 AM to 5:00 PM
- Game Club Tampa Meetup — Pathfinder RPG game (Full) @ Grand Arena of Mind Expansion, 6:30 PM to 11:00 PM
Saturday, September 1
- Cigar City Multirotors — Meet, Greet and Fly! @ Mango Dog Park, 10:30 AM to 1:30 PM
- Remote Employees of Tampa Bay — Newcomers Welcome Lunch (new & old alike) @ Panera Bread (3181 Curlew Road, Oldsmar), 12:00 PM to 2:00 PM
- Tampa Python Meetup — CRUD Contest @ 12:00 PM
- Nerd Night Out — Board game meetup for Oldsmar, Town N’ Country, Westchase area @ The Wild Rover Pub and Brewery, 4:00 PM to 9:00 PM
Sunday, September 2
- Tampa Drones Meetup — Open Fly Day – Fly what you have! @ Sheffield Disc Golf Park, 11:00 AM to 2:00 PM
- Geekocracy! — Brunch Brainstorm @ World of Beer, 12:00 PM to 2:00 PM
This is the second in a series of articles where I’ll get you started on the basics of data science with Python. In this article, we’ll take our first step in building recommendation systems: determining how similar people are by measuring the Manhattan distance between them.
You’ll want the following before you proceed any further:
- The previous article. It’s a good introduction to the series.
- The book: A Programmer’s Guide to Data Mining: The Ancient Art of the Numerati — it’s free to download, and it’s the book we’ll use for the next little while.
- Python 3: Yes, you may have Python 2 on your system right now, but it’s 2018. Get Python 3 — preferably Python 3.6 or later.
Chapter 2 of A Programmer’s Guide to Data Mining: The Ancient Art of the Numerati is about building recommendation systems. Many recommendation systems are based on a simple idea:
People similar to you often like similar things.
Their trick is to find people who like things that you like, and show you things that you might not have seen yet. For example, here’s a screenshot from my Amazon account, which shows Kindle magazines they’ll think I’ll like, based on my browsing, purchasing, rating history, and who-knows-what-else:
The chapter’s exercises in building a simple recommendation engine make use of the information in the table shown below, which shows 8 people’s ratings of 8 bands that you’d likely hear on an alt-rock station circa 2012:
Click the table to see it at full size.
Each person has rated a number of the 8 bands on a scale of 1 (“hate them”) to 5 (“love them”). No one in the group has rated all 8 bands.
Your first question — and the question we’ll try to answer in this article — should be “How do I tell how similar any two people in this table are?”. I’ll start with some theory, but you’ll see actual code by the end of the article.
Similarity and distance
Before explaining how to figure out how similar any two people in the 8-by-8 table of people and bands are, Zacharski (the author of A Programmer’s Guide to Data Mining: The Ancient Art of the Numerati) starts with a simpler data set: three people, who’ve rated two books on a scale of 0 (worst) to 5 (best): the cyber-thrllers Snow Crash and The Girl with the Dragon Tattoo…
Book | Amy’s rating | Bill’s rating | Jim’s rating |
---|---|---|---|
The Girl with the Dragon Tattoo | 5 | 5 | 4 |
Snow Crash | 5 | 2 | 1 |
If you were to plot each person’s rating for the books as a single point on a two-dimensional graph, with The Girl with the Dragon Tattoo as the x-axis and Snow Crash as the y-axis, you’d get this:
Image from A Programmer’s Guide to Data Mining: The Ancient Art of the Numerati.
The graph makes it easy to see whose tastes are similar. The closer any two people’s points are, the more similar their tastes in cyber-thriller books are. Simply by looking at the graph, you can see that Jim’s taste is more similar to Bill’s than it is to Amy’s, Bill’s is more similar to Amy’s than Jim’s is, and Bill’s is more similar to Jim’s than his is to Amy’s.
While it’s easy for us humans to visually tell whose tastes are similar, it’s much easier to have a program do it mathematically, and there are a number of ways to do it. Let’s look at the simplest way: calculating the Manhattan distance between any two points.
Manhattan distance
There’s a joke about the difference between the directions given to you by Google Maps and Waze: Google Maps will suggest an alternate road to cut down your travel time; Waze will suggest a shortcut through someone’s living room. The Manhattan distance between two points is more like the Google Maps suggestion.
It’s the simplest, computationally least expensive way to compute the distance between two points on a grid. It gets the name “Manhattan” from the way you’d have to travel from one point to another by cab in Manhattan’s grid of streets: only horizontally or vertically, with no diagonals allowed:
The Manhattan distance between a point located at (x1, y1) and another point at (x2, y2) is simply:
x-distance between the points + y-distance between the points
or, more mathematically:
| x1 – x2 | + | y1 – y2 |
Looking at the Dragon Tattoo/Snow Crash graph…
…we can calculate the Manhattan distance between Bill and Jim:
| 5 – 4 | + | 2 – 1 | = 2
and the Manhattan distance between Jim and Amy:
| 4 – 5 | + | 1 – 5 | = 5
Using Manhattan distance with more than two dimensions
In the previous example, we were dealing with a two-dimensional space, where ratings for The Girl with the Dragon Tattoo form one dimension, and ratings for Snow Crash form another.
Let’s go back to the “people and bands” study and look at two of the people, Jordyn and Sam. Here’s a smaller table that shows only their ratings, and the differences between their ratings for each band:
Band | Jordyn’s rating for that band |
Sam rating for that band |
Difference between Jordyn’s rating and Sam’s rating |
---|---|---|---|
Blues Traveler | – | 5 | n/a |
Broken Bells | 4.5 | 2 | 2.5 |
Deadmau5 | 4 | – | n/a |
Norah Jones | 5 | 3 | 2 |
Phoenix | 5 | 5 | 0 |
Slightly Stoopid | 4.5 | 4 | 0.5 |
The Strokes | 4 | 5 | 1 |
Vampire Weekend | 4 | – | n/a |
Note that Jordyn and Sam didn’t rate all the bands. To calculate the Manhattan distance between them, we need to work with only those bands that they both rated. Here’s what the table looks like with only those bands:
Band | Jordyn’s rating for that band |
Sam rating for that band |
Difference between Jordyn’s rating and Sam’s rating |
---|---|---|---|
Broken Bells | 4.5 | 2 | 2.5 |
Norah Jones | 5 | 3 | 2 |
Phoenix | 5 | 5 | 0 |
Slightly Stoopid | 4.5 | 4 | 0.5 |
The Strokes | 4 | 5 | 1 |
Now we can calculate the Manhattan distance between Jordyn’s and Sam’s musical tastes. It’s not all that different from the first Manhattan distance we calculated — it’s simply the sum of all the differences between their ratings for each band, or:
difference between Jordyn’s and Sam’s ratings for Broken Bells +
difference between Jordyn’s and Sam’s ratings for Norah Jones +
difference between Jordyn’s and Sam’s ratings for Phoenix +
difference between Jordyn’s and Sam’s ratings for Slightly Stoopid +
difference between Jordyn’s and Sam’s ratings for The Strokes
which is:
| 4.5 – 2 | + | 5 – 3 | + | 5 – 5 | + | 4.5 – 4 | + | 4 – 5 | = 6.
Given that Jordyn and Sam are rating 5 bands on a scale of 1 to 5 (where 1 is “hate them” and 5 is “love them”), their Manhattan distance can range from…
- 0, which means that they love these 5 bands equally, to
- 20, which means that they have completely opposite opinions of each of the 5 bands.
With a Manhattan distance of 6 (out of maximum of 20) based on 5 bands that are pretty likely to appear on a single Spotify playlist, it would be fair to say that musically speaking, Jordyn and Sam are more alike than dissimilar.
Calculating Manhattan distance, the book’s way
If you remember the previous article in this series or are following along with the book, you know that the “people and bands” data is expressed in code using a Python dictionary, as shown below:
users = { "Angelica": { "Blues Traveler": 3.5, "Broken Bells": 2.0, "Norah Jones": 4.5, "Phoenix": 5.0, "Slightly Stoopid": 1.5, "The Strokes": 2.5, "Vampire Weekend": 2.0 }, "Bill": { "Blues Traveler": 2.0, "Broken Bells": 3.5, "Deadmau5": 4.0, "Phoenix": 2.0, "Slightly Stoopid": 3.5, "Vampire Weekend": 3.0 }, "Chan": { "Blues Traveler": 5.0, "Broken Bells": 1.0, "Deadmau5": 1.0, "Norah Jones": 3.0, "Phoenix": 5, "Slightly Stoopid": 1.0 }, "Dan": { "Blues Traveler": 3.0, "Broken Bells": 4.0, "Deadmau5": 4.5, "Phoenix": 3.0, "Slightly Stoopid": 4.5, "The Strokes": 4.0, "Vampire Weekend": 2.0 }, "Hailey": { "Broken Bells": 4.0, "Deadmau5": 1.0, "Norah Jones": 4.0, "The Strokes": 4.0, "Vampire Weekend": 1.0 }, "Jordyn": { "Broken Bells": 4.5, "Deadmau5": 4.0, "Norah Jones": 5.0, "Phoenix": 5.0, "Slightly Stoopid": 4.5, "The Strokes": 4.0, "Vampire Weekend": 4.0 }, "Sam": { "Blues Traveler": 5.0, "Broken Bells": 2.0, "Norah Jones": 3.0, "Phoenix": 5.0, "Slightly Stoopid": 4.0, "The Strokes": 5.0 }, "Veronica": { "Blues Traveler": 3.0, "Norah Jones": 5.0, "Phoenix": 4.0, "Slightly Stoopid": 2.5, "The Strokes": 3.0 }, "GrungeBob": { "Nirvana": 4.5, "Pearl Jam": 4.0, "Soundgarden": 5.0 }, }
Note that I’ve added a ninth person to the list: GrungeBob, who’s stuck in the Pacific Northwest in 1992, and has no bands in common with the other 8 people in the list. He’ll soon prove to be useful.
Here’s the code that the book provides for calculating the Manhattan distance between any two people in the dictionary above:
def manhattan(rating1, rating2): """Computes the Manhattan distance. Both rating1 and rating2 are dictionaries of the form {'The Strokes': 3.0, 'Slightly Stoopid': 2.5 ...""" distance = 0 for key in rating1: if key in rating2: distance += abs(rating1[key] - rating2[key]) return distance
Let’s try out the manhattan()
function on Jordyn and Sam:
print(f"Manhattan distance between Jordyn and Sam: {manhattan(users['Jordyn'], users['Sam'])}")
When you run it, you should see the following output:
Manhattan distance between Jordyn and Sam: 6.0
Try calling manhattan()
on Chan and Dan:
print(f"Manhattan distance between Chan and Dan: {manhattan(users['Chan'], users['Dan'])}")
Here’s what you should see when you run it:
Manhattan distance between Chan and Dan: 14.0
The closer two people’s musical tastes are, the smaller the Manhattan distance between them is. What happens when you use the manhattan()
function to see distance between a person and themself?
print(f"Manhattan distance between Chan and himself: {manhattan(users['Dan'], users['Dan'])}")
Here’s the result:
Manhattan distance between Dan and himself: 0.0
That makes sense — there should be zero distance between two people with identical tastes.
The problem with the book’s manhattan()
function
Now what happens when you use manhattan()
to get the distance between two people who have no bands in common in their ratings? That’s why I added GrungeBob, who has rated only 3 bands, none of which were rated by anyone else in the group.
Let’s try the manhattan()
function on GrungeBob and Jordyn:
print(f"Manhattan distance between GrungeBob and Jordyn: {manhattan(users['GrungeBob'], users['Jordyn'])}")
Here’s the result:
Manhattan distance between GrungeBob and Jordyn: 0.0
The result is 0.0, which should mean that there is no distance between GrungeBob’s and Jordyn’s tastes. But that can’t be — they have no bands in common.
That’s the big problem with manhattan()
as implemented in the book. When it produces a result of 0, that result is ambiguous, as it could mean either of the following:
- That the two users compared have identical tastes
- That the two users compared have no bands in common (which suggests that they might have completely disparate tastes)
My solution
I’ll let “Thinking Guy” do the talking for me:
One of Python’s built-in constants is None
, the only value in a type called NoneType
, and it’s meant to be used to represent the absence of a value. We can use None
as the result for manhattan
when given two people with no bands in common.
With this in mind, let’s think about the results that manhattan
should return based on the users given to it as arguments:
- The simple case: given two users with tastes {“x”: 0, “y”: 0} and {“x”: 1, “y”: 1},
manhattan
should return 2, because their preferences are each 1 unit apart. - The identical user case: given two users identical tastes — {“x”: 1, “y”: 2, “z”: 3} —
manhattan
should return 0, because each of their preferences has no distance between them. A Manhattan distance of 0 means identical tastes. - The case of slightly different tastes, where both users have rated the same bands, but have given them different ratings: Given two users with the tastes {“x”: 1, “y”: 2, “z”: 3} and {“x”: 4, “y”: 5, “z”: 6},
manhattan
should return 9, which is
| 1 – 4 | + | 2 – 5 | + | 3 – 6 |. - The case of slightly non-overlapping tastes, where both users have rated different bands, some of which overlap: Given two users with the tastes {“a”: 1, “y”: 2, “z”: 3} and {“b”: 4, “y”: 5, “z”: 6}),
manhattan
should return 6, which is
| 2 – 5 | + | 3 – 6 |. - The case of completely non-overlapping tastes, where both users have rated different bands, and have no bands in common: Given two users with the tastes {“x”: 1, “y”: 2, “z”: 3} and {“a”: 4, “b”: 5, “c”: 6}),
manhattan
should returnNone
.
We can express these specs as tests, which is something that the book doesn’t do, but we will. Here are my tests, as written for Python’s unittest:
def test_manhattan_distance(self): local_test_users = { "Local test user 1": {"x": 0, "y": 0}, "Local test user 2": {"x": 1, "y": 1}, } self.assertEqual(manhattan_distance_between_users(local_test_users, "Local test user 1", "Local test user 2"), 2, """ The Manhattan distance between (0, 0) and (1, 1) should be 2. """) def test_manhattan_for_identical_tastes(self): self.assertEqual(manhattan(self.test_users, "Angelica", "Angelica"), 0, """ The Manhattan distance between two identical tastes should be zero. """) def test_manhattan_for_different_tastes(self): local_test_users = { "Local test user 1": {"x": 1, "y": 2, "z": 3}, "Local test user 2": {"x": 4, "y": 5, "z": 6}, } self.assertEqual(manhattan(local_test_users, "Local test user 1", "Local test user 2"), 9, """ The Manhattan distance between {"x": 1, "y": 2, "z": 3} and {"x": 4, "y": 5, "z": 6} should be 9. """) def test_manhattan_for_different_slightly_nonoverlapping_tastes(self): local_test_users = { "Local test user 1": {"a": 1, "y": 2, "z": 3}, "Local test user 2": {"b": 4, "y": 5, "z": 6}, } self.assertEqual(manhattan(local_test_users, "Local test user 1", "Local test user 2"), 6, """ The Manhattan distance between {"a": 1, "y": 2, "z": 3} and {"b: 4, "y": 5, "z": 6} should be 6. """) def test_manhattan_for_completely_nonoverlapping_tastes(self): local_test_users = { "Local test user 1": {"x": 1, "y": 2, "z": 3}, "Local test user 2": {"a": 4, "b": 5, "c": 6}, } self.assertEqual(manhattan(local_test_users, "Local test user 1", "Local test user 2"), None, """ The Manhattan distance between {"x": 1, "y": 2, "z": 3} and {"a": 4, "b": 5, "c": 6} should not be a number, but the value 'None'. """)
You may have noticed that my tests define manhattan
that takes not 2, but 3 arguments:
- A dictionary of user dictionaries — the set of user’s band ratings
- the name of the first user
- the name of the second user
By requiring the caller to provide manhattan
with the complete set of ratings, it removes the method’s dependency on external global variables.
Now that we have tests, let’s write a manhattan
function that passes those tests:
def manhattan(all_users, user1_name, user2_name): distance = 0 common_keys_were_found = False user1_ratings = all_users[user1_name] user2_ratings = all_users[user2_name] for key in user1_ratings: if key in user2_ratings: distance += abs(user1_ratings[key] - user2_ratings[key]) common_keys_were_found = True if common_keys_were_found: return distance else: return None
Try it out on some of the users. Here’s how you get the Manhattan distance between Jordyn and Sam:
print(f"Manhattan distance between Jordyn and Sam: {manhattan(users, 'Jordyn', 'Sam')}")
You should see this result:
Manhattan distance between Jordyn and Sam: 6.0
The result is the same as before, which is what we want. Let’s get the distance between Jordyn and Jordyn:
print(f"Manhattan distance between Jordyn and Jordyn: {manhattan(users, 'Jordyn', 'Jordyn')}")
This should be zero, and that turns out to be the case:
Manhattan distance between Jordyn and Jordyn: 0.0
Finally, let’s check the case that failed with the previous version of the function, the distance between Jordyn and GrungeBob — and remember, GrungeBob has no bands in common with anyone else in the group:
print(f"Manhattan distance between Jordyn and GrungeBob: {manhattan(users['Jordyn'], users['GrungeBob'])}")
Here’s the output for that code:
Manhattan distance between Jordyn and GrungeBob: None
This bit of code will show you the Manhattan distances between Hailey and all the users, including herself:
for user_name in users: distance = manhattan(users, user_name, 'Hailey') if distance is None: print(f"No bands in common between Hailey and {user_name}.") else: print(f"Manhattan distance between Hailey and {user_name}: {distance}.")
You should see these results:
Manhattan distance between Hailey and Angelica: 5.0. Manhattan distance between Hailey and Bill: 5.5. Manhattan distance between Hailey and Chan: 4.0. Manhattan distance between Hailey and Dan: 4.5. Manhattan distance between Hailey and Hailey: 0.0. Manhattan distance between Hailey and Jordyn: 7.5. Manhattan distance between Hailey and Sam: 4.0. Manhattan distance between Hailey and Veronica: 2.0. No bands in common between Hailey and GrungeBob.
Next steps
In the next installment, we’ll look at finding the most similar user to a given person, and actually making recommendations. Watch this space!