Categories
Career Programming What I’m Up To

I’m teaching another 5-week / 10-evening Python course starting September 7th!

If you’re getting this feeling…

…and you’d rather have this feeling…

Creative Commons image by Nick Youngson — CC BY-SA 3.0 Pix4free.
Click here to see the source.

…then the course I’m teaching might help:

a close up of text and logo over a white background
Graohic: Computer Coach Training Center logo

I’ve been programming in Python since 1999, and I’ll be teaching Computer Coach’s upcoming 10-week online Learning Python course!

The “TL;DR:”

  • What: An introductory Python course!
  • Where: Online, via Zoom.
  • When: Monday and Wednesday evenings, from 6 p.m. to 10 p.m., starting Wednesday, September 7th.
  • How to enroll or find out more: Contact Computer Coach’s Kasandra Perez at kasandra@computercoach.com or (813)-254-6459 to find out more about the course or register.

What will you get out of this course?

The biggest things that you’ll get out of this course are the tools to succeed in a tech career, namely:

  • An introduction to the most-used and most useful parts of the Python programming language,
  • a solid basis in programming principles,
  • and a bag of tricks that you can use in your tech career.

The course will use one of the best books on Python out there: Automate the Boring Stuff with Python by Al Sweigart (whom I had the pleasure of meeting in person earlier this year at PyCon):

…but we won’t just stick to the book. We’ll look at all sorts of programming examples and tricks, based on your suggestions or needs. These include (and aren’t limited to):

  • CoverTron: My generator for cover letters for job applications. I actually used it in my last job search!
  • Tampa Bay Tech Events Transmogrifier: Every week, I put together a list of tech events for Tampa Bay, culled from Eventbrite and Meetup. It would take me hours to do it by hand, but it’s so much quicker with the automated help of a couple of Python scripts.
  • Find out when and where a digital photo was taken: When you take a picture with your phone or a present-day digital camera, that picture has EXIF data embedded in it, with the date, time, and location where the photo was taken. I’ll show you how to extract that info!
  • Editing photos: If you were assigned the task of shrinking a set of 100 photos by 25% (or any other similar basic photo editing task), you could do it manually, or you could make Python do it.
  • Creating interactive documents with Jupyter Notebook: It’s more than just a Python tool used by data scientists, Nobel Prize winners, and Netflix, but a useful programming environment and operations platform for everyday tasks!
  • Writing web applications with Flask: Just a Python makes programming much easier, the Python-powered Flask framework makes programming web applications much easier.
  • Passing interview coding tests: Learn how to deal with the most dreaded part of the interview for a programming job, and why Python is a key part of my coding interview strategy.
  • Using databases: Using databases is a key part of programming, and luckily, Python comes with a built-in database!
  • Data science: This is a giant topic and could easily take up the time to do this course three times, but I’d be happy to go over the basics.
  • Interactive storytelling and games: Python’s quite good at this, and I can walk you through the PyGame framework and Ren’Py interactive story system.
  • Mobile app development: Yes, there are ways to do mobile app development in Python.

What happens in the course?

Photo: Woman’s hands typing on Mac laptop.

This is not a passive course! This isn’t the kind of course where the instructor lectures over slides while you take notes (or pretend to take notes while surfing the web or checking your social media feeds). In this course, you’ll follow along as I write code on my screen. You’ll actively take part in the learning process, entering code, experimenting, making mistakes, correcting those mistakes, and producing working applications. You will learn by doing. At the end of each session, you’ll have a collection of little Python programs that you wrote, and which you can use as the basis for your own work.

The course will start at the most basic level by walking you through the process of downloading and installing the necessary tools to start Python programming. From there, you’ll learn the building blocks of the Python programming language:

  • Control structures that determine what your programs do,
  • Data structures to store the information that your programs act on,
  • Functions and objects to organize your code, and
  • Using libraries as building blocks for your applications.

Better still, you’ll learn how to think like a programmer. You’ll learn how to look at a goal and learn how you could write a program to meet it, and how that program could be improved or enhanced. You’ll learn skills that will serve you well as you take up other programming languages, and even learn a little bit about the inner workings of computers, operating systems, and the internet.

What will you need for the course?

Nothing fancy:

How do you sign up for the course or find out more?

Once again, you’ll want to contact Computer Coach’s Kasandra Perez at Contact Kasandra Perez at kasandra@computercoach.com or (813)-254-6459 to find out more about the course or register.

Categories
What I’m Up To

What I’m up to…

…well, at least as far as work goes, it’s all captured in this screenshot as I figure out what I have to do this week:

Screenshot from my work computer, showing windows for Xcode, Android Studio, two Jupyter Notebook windows, and a Canva window.
Tap to view at full size.

The top row contains windows for Xcode and Android Studio, on which I’m putting together the demo apps for a couple of mobile app authentication tutorials that I’m writing for the Auth0 Developer Blog.

The bottom row has two windows for the Jupyter Notebooks that I use to generate the weekly Tampa Bay Tech Events list, and one Canva window.

Categories
Current Events Florida Programming Tampa Bay What I’m Up To

StartupBus Florida 2022 was a success!

The riders of StartupBus Florida 2022. From left to right: Cary, Evan, Justin, Josh, VJ, Julie, Marley, Ray, Charlotte, Joey, Mandy, Sasha, and Chevy.
StartupBus Florida 2022!
Tap to view at full size.

This article is a work in progress — I’m making it available to readers as I write it!

On Wednesday July 27, 2022, 13 people boarded a bus at The Sail on the Riverwalk in downtown Tampa bound for Austin, Texas to participate in a contest unlike any other: StartupBus 2022. I was one of those 13 people, and this is what happened on (and off) that bus.

StartupBus is the Mother of All Hackathons. The first part of the event is a three-day bus ride where buspreneurs (contestants), with help from conductors (coaches), conceive a technology startup, its software, and marketing and business plans. There are a number of buses that start in different places — in 2022, the buses left from California, Mexico City, Cincinnati, and Tampa — and they spend three days making their toward Austin, where their buspreneurs present their startups at the qualifying, semi-final, and final rounds of judging. It’s a road trip, entrepreneurship crash course, competition, and adventure all in one.

Day 1: On the bus from Tampa to Gainesville and Tallahassee

Boarding the bus

At 6:00 a.m., I arrived at The Sail, the designated pickup loacation. It’s a pavilion located downtown, on the Tampa Riverwalk, just a stone’s throw away from the Tampa Convention Center. The buspreneurs were told that the bus would depart at 7, so I expected to be the first one there. Instead, Mandy was there, and so were a handful of buspreneurs. This was a good sign.

The bus should’ve been there too, but it wasn’t. None of our bus contacts were responding to messages or Mandy’s phone calls.

“Let’s just chalk this up to Murphy’s Law and declare 6:45 as ‘panic o’clock,’” I suggested.

Fortunately, she made contact with the bus people at around panic o’clock, and they told us that they were on their way. That gave us a little more time to chat and get to know each other a little more:

Wednesday, 7:16 a.m.: VJ, Ray, Marley, Chevy, and Justin. In the background: Cary.
Tap to view at full size.

The slight delay gave us a chance to load up on coffee and a little breakfast food. We started boarding the bus soon afterward:

Wednesday, 7:22 a.m. The buspreneurs get set to board the bus.
Tap to view at full size.

Here’s a shot showing Josh’s photobombing prowess:

Wednesday, 7:22 a.m. Me in the foreground, VJ and Josh in the background.
Tap to view at full size.

…and shortly after 7:30, our bus started making its way toward the highway.

The secret route

While the buspreneurs knew that the bus would start in Tampa on Wednesday morning and arrive in Austin sometime on Friday evening, they didn’t know what route we’d take or what stops we’d make.

The simplest route from Tampa to Austin takes I-75 north to I-10, and then takes I-10 west, a route 1,200 miles (a little over 1900 km) long. If you were to drive that distance at a consistent 70 miles an hour with no stops at all, you could make the trip in a little over 17 hours. Add stops for activities (more about these later), meals, sleep (at hotels or Airbnbs — we weren’t going to sleep on the bus), and bio breaks, and the trip easily expands to fill three days. At least one of the buspreneurs did some map consulting and guessed our route and where we might end up stopping.

Here’s a map of the route we took:

The route we took from Tampa to Austin.
Tap to view at full size.

Opening ceremonies

Shortly after everyone had settled in on the bus, it was time to get started with the opening ceremonies. The buspreneurs were already familiar with us conductors, so we got on with the task of having the mentors say something to inspire them. First Cary…

Wednesday, 7:42 a.m. Cary addresses the troops.
Tap to view at full size.

…then Josh:

Wednesday, 7:43 a.m.
Tap to view at full size.
Wednesday, 7:43 a.m. The troops watch the opening address.
Tap to view at full size.

With the introductory speeches out of the way, the next step was to have the buspreneurs introduce themselves and propose a startup idea.

Wednesday, 7:47 a.m. Chevy proposes “Tinder for puppy playdates.”
Tap to view at full size.
Wednesday, 7:49 a.m. VJ proposes an electronic replacement for a first responder standard operating procedure manual.
Tap to view at full size.

The buspreneurs got to refine their startup pitches in an online meetup with one of Tampa Bay’s Toastmasters groups, who listened and provided valuable feedback.

After the meetup, the buspreneurs started talking amongst themselves to figure out which startups they should create. Remember, they had only three days to create them!

Wednesday, 9:06 a.m.
Tap to view at full size.
Wednesday, 9:47 a.m.
Tap to view at full size.
Wednesday, 9:47 a.m.
Tap to view at full size.

In the meantime, I got into an extensive conversation with Cary about his life and work, and we discovered that we had both lived in Toronto. Small world!

University of Florida Innovation Hub

At about 10:00 a.m., we arrived in Gainesville, where we paid a visit to the University of Florida’s business incubator, UF Innovate | Accelerate @ The Hub.

Wednesday, 10:18 a.m.
Tap to view at full size.

Wednesday, 10:18 a.m.
Tap to view at full size.
Wednesday, 10:21 a.m.
Tap to view at full size.
Wednesday, 10:21 a.m.
Tap to view at full size.
Wednesday, 10:31 a.m.
Tap to view at full size.
Wednesday, 10:31 a.m.
Tap to view at full size.
Wednesday, 10:35 a.m.
Tap to view at full size.
Wednesday, 10:43 a.m.
Tap to view at full size.
Wednesday, 10:43 a.m.
Tap to view at full size.
Wednesday, 11:41 a.m.
Tap to view at full size.
Wednesday, 11:57 a.m.
Tap to view at full size.

Back on the bus

Wednesday, 12:06 p.m.
Wednesday, 12:14 p.m.
Wednesday, 12:23 p.m.
Wednesday, 2:07 p.m.
Wednesday, 3:20 p.m.
Wednesday, 3:46 p.m.
Wednesday, 3:59 p.m.
Wednesday, 4:17 p.m.

Domi Station, Tallahassee

Day 2: New Orleans

The wiper hack

Stayges

Next Responder

Afterparty on the roof

A night out in New Orleans

Day 3: Austin

Making our way to Texas

Buc-ee’s!

Home stretch

Arrival at the “TikTok Mansion”

Day 4: Qualifying round

Breakfast and getting ready

Capital Factory and the qualifying rounds

Brent Britton and CoreX

Day 2: Semifinals and finals

Categories
Career Current Events What I’m Up To

StartupBus looks good on a resume

Here’s an excerpt from the current version of my resume (yes, my resume’s under version control). Note the highlighted entry:

The entry is for Hyve, the startup and application that my StartupBus team built when I rode in 2019. Hyve was a service that let you create “burner” email addresses that relayed email to and from your real email address, allowing you to safely subscribe to services and avoid getting marketing spam or safely communicate with people whom you might not completely trust.

We did all right in the end, landing in the runner-up slot:

Team Hyve. From left to right:
Tracy Ingram, David Castañeda, me, Rina Bane, Justin Linn.

…but the real wins came a little bit afterward when I was interviewing for developer and developer relations jobs a couple of weeks afterward. StartupBus makes for a good story, and in a job interview, it’s the story that “sells” you.

After all, StartupBus is a hackathon where you’re challenged to come up with:

  • A startup business
  • and an application that supports that business
  • on a bus
  • in three days.

This intrigued the people who interviewed me, which led me to talk about the decisions that shaped the business, which in turn shaped the software. I detailed the challenges of writing business plans and software on a bus, a rumbling, rolling office space with spotty internet access, unreliable power, and the occasional engine breakdown. I also talked about dealing with the compressed timeframe and a few of the tricks we used to get around the limited time, which included getting help from our professional network, taking advantage of crowdsourcing services, and using our media contacts. My StartupBus story played a key part in convincing prospective employers that they wanted to hire me.

StartupBus Florida will depart Tampa, Florida on Wednesday, July 27 and make a 3-day trip with interesting stops and challenges along the way. It will arrive in Austin, Texas on the evening of Friday, July 29, where it will meet with teams from 6 other buses:

On Saturday, July 30, all the teams will assemble at a venue in Austin for the semifinals. Every team will pitch in front of a set of semifinals judges. By the end of the day, a handful of finalists will emerge (Hyve was one of six finalists in 2019).

Those finalists will then go on to the finals, which will take place on Sunday, July 31. They’ll pitch again (and if they’re smart, they’ll have spent the night before reworking their pitch and application) in front of the finals judges, who will select the winner and runners-up.

If you participate in StartupBus, you will come out of it a different person. You will pitch your startup at least a dozen times (and yes, everyone pitches — not just the marketing people, but the creatives and developers, too). You will work on product design. You will work on marketing. You will work on code. And you’ll do it all under far-from-ideal circumstances. StartupBus is a crash course in guerrilla entrepreneurship, and it’s an experience that will serve you well — especially during these economically upside-down times.

And you’d better believe that you’ll have stories to tell, and they’ll help you stand apart from the crowd.

Want to ride StartupBus later this month?

You’ll need to apply on the StartupBus site, and you’ll need an invite code. Use mine: JOEY22, which will tell them that I sent you.

Categories
Programming What I’m Up To

Fix the ChromeDriver 103 bug with ChromeDriver 104

The ChromeDriver 103 bug

If you had an application or script that uses Selenium and ChromeDriver to control or automate instances of Chrome or Chromium, it’s probably not working right now. Instead, you’re probably seeing error messages that look like this:

Message: unknown error: cannot determine loading status
from unknown error: unexpected command response
  (Session info: chrome=103.0.5060.53)
Stacktrace:
0   chromedriver                        0x000000010fb6f079 chromedriver + 4444281
1   chromedriver                        0x000000010fafb403 chromedriver + 3970051
2   chromedriver                        0x000000010f796038 chromedriver + 409656

...and on it goes...

The culprit is ChromeDriver 103, and I wrote about it a couple of days ago in a post titled Why your Selenium / ChromeDriver / Chrome setup stopped working.

ChromeDriver 103 — or more accurately, ChromeDriver 103.0.5060.53 — works specifically with Chrome/Chromium 103.0.5060.53. If you regularly update Chrome or Chromium and use ChromeDriverManager to keep ChromeDriver’s version in sync with the browser, you’ve probably updated to ChromeDriver 103.0.5060.53, which has a causes commands to ChromeDriver to sometimes fail.

The fix

Luckily, the bug has been fixed in ChromeDriver 104, which works specifically with Chrome 104. This means that if you update to Chrome and ChromeDriver 104, your Selenium / ChromeDriver / Chrome setup will work again.

The challenge is that Chrome 104 is still in beta. As I’m writing this, the Google Chrome Beta site is hosting an installer for Chrome 104, or more accurately, Chrome 104.0.5112.20. The application has the name Google Chrome Beta and is considered a separate app from Google Chrome. This means that you can have the current release and the beta version installed on your machine at the same time.

Once you’ve installed Chrome Beta, you just need to make your Selenium/ChromeDriver application or script use the appropriate version of ChromeDriver. Here’s how I did it in Transmogrifier, my Python script that helps me assemble the Tampa Bay Tech Events list:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager


// 1
option = Options()
option.binary_location='/Applications/Google Chrome Beta.app/Contents/MacOS/Google Chrome Beta'

// 2
driver = webdriver.Chrome(service=Service(ChromeDriverManager(version='104.0.5112.20').install()), options=option)

Here are some explanation that match the number comments in the code above:

  1. These lines create an instance of the Options class, which we’re using to specify the directory where the Chrome beta app can be found. We’ll use the instance, options, when we create driver, the object that controls the Chrome beta app.
  2. This constructor creates a WebDriver.Chrome object which will control the Chrome beta app. The service parameter specifies that the driver should be an instance of ChromeDriver 104, and that it should be installed if it isn’t already present on the system. The options parameter specifies that ChromeDriver should drive the version of Chrome located at the directory path specified in the option object: the Chrome beta app.

Once that’s done, I can proceed with my script. Here’s a simplified version of the start of my Transmogrifier script:

from bs4 import BeautifulSoup

// Load the web page whose URL is `url` into
// the browser under script control
driver.get(url)

// Execute any scripts on the page so that
// we can scrape the final rendered version
html = driver.execute_script('return document.body.innerHTML')

// And now it’s time to scrape!
soup = BeautifulSoup(html, 'html.parser')
// ...the rest of the code goes here...

Hope this helps!

Categories
Entrepreneur Florida How To Podcasts What I’m Up To

Everything you need to know to win StartupBus is in this podcast, part 5

The title of this post should be a big hint: Everything you need to know in order to win StartupBus North America 2022 is contained within a podcast. This is the third in a series of posts covering the “Startup Bus” series of episodes from Gimlet Media’s Startup podcast, which covered the New York bus’ journey during StartupBus 2017.

Did you miss the first four articles in this series? Here they are:

I’m posting this series as a prelude to StartupBus 2022, which takes place at the end of July. I was a contestant — a buspreneur — on the Florida bus in 2019, which made it all the way to the finals and finished as a runner-up. Now I’m a coach — a conductor — on the 2022 edition.

Here’s episode 5 of the podcast series…

…and here are the lessons I took away from this episode:

  • A lot of what makes success is just showing up. At the start of the episode, podcast host Eric goes for an early morning walk with Colleen Lavin of team Daisy and discovers that she was nce the Illinois Knights of Columbus free throw champion for girls age 14. Here’s how she tells the story:

COLLEEN: I was like getting my school volunteer hours, helping my dad at the free throw contest, and I was in the right age range, so he made me compete. I made two baskets, because I was not a basketball player. But no other girls in my age range showed up, and he made me go to the next competition and no other girls my age range showed up. Finally, I was almost sent to D.C to compete in the nationals after making a total of like four baskets.

ERIC: Because nobody had showed up?

COLLEEN: In my age competition!

  • Be prepared for possible twists in the finals. Elias Bizannes, the creator of StartupBus, loves drama. In the 2017 competition, even though there were five finalists, Elias decided to create a sixth team made up of people from teams who didn’t make it into the finals. The team would create a blockchain-powered voting app. Why did he do it? In his own words…

To mess with people to be honest. Because that’s what we do with StartupBus, we push them and we break them. And what happens is this remarkable thing comes out when people go beyond the limits they think they can, they actually step up. And so by introducing a new team, it was gonna add another level of competitive threat to the finals.

  • The finals will feature far more polished pitches and apps: “From the moment the pitches begin, it’s apparent. This is a very different level of competition than yesterday. The presentations are all well-crafted. Each of the products makes sense. You could imagine people making these pitches to actual investors.”
Categories
Entrepreneur Florida How To Podcasts What I’m Up To

Everything you need to know to win StartupBus is in this podcast, part 4

The title of this post should be a big hint: Everything you need to know in order to win StartupBus North America 2022 is contained within a podcast. This is the third in a series of posts covering the “Startup Bus” series of episodes from Gimlet Media’s Startup podcast, which covered the New York bus’ journey during StartupBus 2017.

(Did you miss the first three articles in this series? Here’s part onehere’s part two, and here’s part three.)

I’m posting this series as a prelude to StartupBus 2022, which takes place at the end of July. I was a contestant — a buspreneur — on the Florida bus in 2019, which made it all the way to the finals and finished as a runner-up. Now I’m a coach — a conductor — on the 2022 edition.

Here’s episode 4 of the podcast series…

…and here are the lessons I took away from this episode:

  • If you can find teammates that are on your wavelength, you can achieve a lot. Although they’re on the Florida StartupBus and not the bus that the podcast is covering, they remain a source of fascination for Eric, the host. Not only do Robert Blacklidge and Trey Steinhoff get along so well, but they also work so well together, and the synergy will take them far together. (Full disclosure: I worked with Trey at Lilypad, and can vouch for the fact that he is a great teammate. I also know Robert and can understand why he and Trey got along so well.)
  • A conflict within the team doesn’t have to destroy the team; in fact, not only can conflicts be resolved, but they can even strengthen a team. Ash from the Denari team had rubbed many of his teammates the wrong way, and there was talk of kicking him off the team. Things have turned around in this episode: everyone’s getting along, and Ash is considerably less acerbic — even optimistic-sounding.
  • The StartupBus format borrows some of its ideas from reality TV game shows, which means that there can be intentional confusion. “The teams have been getting different information about the competition all day. They’re hearing conflicting things about timing, about whether or not pitch decks are allowed. And this confusion, it all feels weirdly intentional.”
  • StartupBus is supposed to be a challenge. It’s not supposed to be easy, and as anyone who’s done it before will tell you, it can be gruelling at times. And that’s a good thing — if StartupBus works as designed, you shouldn’t be exactly the same person at the end of the ride. As one of the Denari people puts it: “This is a Navy SEAL training program for startups. This is like we’re going to push you to that to the limit of your mental strength, like every single person on their team is that like living in a role that’s very different from what they walked on the bus wanting to do.”
  • Speaking about come out of StartupBus a little different, you can see some of the buspreneurs’ change — they’re more certain, more directed, more convinced of their ability to change their personal course through life.
  • You can most definitely incorporate singing and music in your pitch. The pitch for singing telegram startup Yeti featured one of their buspreneurs in a full Marilyn Monroe costume, singing Katy Perry’s Firework, but with StartupBus-specific lyrics. I also did that with the accordion at StartupBus 2019.
  • You can also use audience participation in your pitch. Tampa-based CourseAlign did that by asking the audience for a show of hands, using questions that would get a specific kind of result.
  • Be ready for tough questions. During the Q&A section of their pitch, Denari — the Blockchain-powered GoFundMe-like startup — is asked how they plan to prevent their system from being turned into a money-laundering platform.
  • Don’t be too hard on yourself. After getting that tough money-laundering question, Colleen Wong, who’s been leading Denari, felt bad about her answer and said that she didn’t feel that she was a good leader. Eric the host had to reminder her that she did the near-impossible — “Are you kidding me?! Have you, like, seen yourself this week?! …You, like, pulled together the, like, craziest team on the bus. It was a great thing.”
  • Anything can happen in the judging room. Eric the host was invited into the judging room to record a reenactment of judges’ discussion as they tried to decide who would move the next round. But as they reenacted their discussion, they started changing their minds. The judging process can turn on a dime.
  • There is a downside to making it into the finals: It means that although you’re in a party town, you can’t party. You’re going to be working on your product and your pitch for the finals. Trust me on this one — I was in New Orleans, one of the best party towns in the country, and I spent Saturday night with my team working on our startup.