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.

Categories
Programming What I’m Up To

Why your Selenium / ChromeDriver / Chrome setup stopped working


Update: You’ll also want to see this follow-up article — Fix the ChromeDriver 103 bug with ChromeDriver 104.


If you run applications or scripts that use Selenium to control instances of Chrome via ChromeDriver, you may find that they no longer work, and instead provide you with 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
3   chromedriver                        0x000000010f7833c8 chromedriver + 332744
4   chromedriver                        0x000000010f782ac7 chromedriver + 330439
5   chromedriver                        0x000000010f782047 chromedriver + 327751
6   chromedriver                        0x000000010f780f16 chromedriver + 323350
7   chromedriver                        0x000000010f78144c chromedriver + 324684
8   chromedriver                        0x000000010f78e3bf chromedriver + 377791
9   chromedriver                        0x000000010f78ef22 chromedriver + 380706
10  chromedriver                        0x000000010f79d5b3 chromedriver + 439731
11  chromedriver                        0x000000010f7a147a chromedriver + 455802
12  chromedriver                        0x000000010f78177e chromedriver + 325502
13  chromedriver                        0x000000010f79d1fa chromedriver + 438778
14  chromedriver                        0x000000010f7fc62d chromedriver + 828973
15  chromedriver                        0x000000010f7e9683 chromedriver + 751235
16  chromedriver                        0x000000010f7bfa45 chromedriver + 580165
17  chromedriver                        0x000000010f7c0a95 chromedriver + 584341
18  chromedriver                        0x000000010fb4055d chromedriver + 4253021
19  chromedriver                        0x000000010fb453a1 chromedriver + 4273057
20  chromedriver                        0x000000010fb4a16f chromedriver + 4292975
21  chromedriver                        0x000000010fb45dea chromedriver + 4275690
22  chromedriver                        0x000000010fb1f54f chromedriver + 4117839
23  chromedriver                        0x000000010fb5fed8 chromedriver + 4382424
24  chromedriver                        0x000000010fb6005f chromedriver + 4382815
25  chromedriver                        0x000000010fb768d5 chromedriver + 4475093
26  libsystem_pthread.dylib             0x00007ff81931a4e1 _pthread_start + 125
27  libsystem_pthread.dylib             0x00007ff819315f6b thread_start + 15

It turns out that there’s a bug in version 103 of ChromeDriver, which works specifically with version 103 of Chrome. This bug causes commands to ChromeDriver, such as its get() method, which points the browser to a specific URL, to sometimes fail.

The quick solution

While this bug exists, the best workaround — and one that I’m using at the moment — is to do the following:

  1. Uninstall version 103 of Chrome.
  2. Install version 102 of Chrome.
  3. Install version 102 of ChromeDriver.
  4. Disable Chrome’s auto-update and don’t update Chrome.

How I encountered the bug

This happened to me on Wednesday. Earlier that day, I saw the “Update” button on Chrome change from green to yellow…

…and my conditioned-by-security-training response was to click it, updating Chrome to version 103.

Later that evening, I started assembling the weekly list of tech, entrepreneur, and nerd events for the Tampa Bay area. You know, this one:

When I started putting this list together back in early 2017, I did so manually by doing a lot of copying and pasting from Meetup and EventBrite pages. However, as the tech scene in Tampa grew, what used to be an hour’s work on a Saturday afternoon starting growing to consume more and more of that afternoon. I’d watch entire feature-length films in the background while I put them together. It became clear to me that it was time to add some automation to the process.

These days, I put together the list with the help of “The Transmogrifier,” my name for a collection of Python scripts inside a Jupyter Notebook. Given a set of URLs for Meetup and Eventbrite pages, it scrapes their pages for the following information:

  • The name of the group organizing the event
  • The name of the event
  • The time of the event

In the beginning, scraping Meetup was simply a matter of having Python make a GET request to a Meetup page, and then use BeautifulSoup to scrape its contents. But Meetup is a jealous and angry site, and they really, really, really hate scraping. So they employ all manner of countermeasures, and I have accepted the fact that as long as I put together the Tampa Bay Tech Events list, I will continually be playing a “move / counter-move” game with them.

One of Meetup’s more recent tricks was to serve an intermediate page that would not be complete until some JavaScript within that page executed within the browser upon loading. This means that the web page isn’t complete until you load the page into a browser, and only a browser. GETting the page programmatically won’t execute the page’s JavaScript.

Luckily, I’d heard of this trick before, and decided that I could use Selenium and ChromeDriver so that the Transmogrifier would take control of a Chrome instance, use it to download Meetup pages — which would then execute their JavaScript to create the final page. Once that was done, the Transmogrifier could then read the HTML of that final page via the browser under its control, which it could scrape.

Creating an instance of Chrome that would be under the Transmogrifier’s control is easy:

# Python

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

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))

The single line of code after all the import statements does the following:

  • It launches an instance of Chrome that can be programmatically controlled.
  • It has ChromeDriver check to see if it is compatible with the Chrome instance. If not, it installs the compatible version of ChromeDriver.

This is where my problem began. ChromeDrive saw that I’d updated to Chrome 103, so it updated itself to version 103.

Here’s the code where the bug became apparent:

print(f"Processing Meetup URL: {url}")
driver.get(url)

About one time out of three, this code would do what it was supposed to: print a message to the console, and then make Chrome load the page at the given URL.

But two out of three times, it would end up with this error:

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 the stacktrace goes on from here...)

This happens when executing several driver.get(url) calls in a row, which is what the Transmogrifier does. It’s executing driver.get(url) for many URLs in rapid succession. When this happens, there are many times when Chrome is processing a new ChromeDriver command request after a previous ChromeDriver session (a previous web page fetch) has already concluded and detached. In this case, Chrome responds with a “session not found” error. ChromeDriver gets this error while waiting for another valid command to complete, causing that command to fail. (You can find out more here.)

In the end, my solution was to downgrade to Chrome 102, use ChromeDriver 102, and keep an eye open for Chrome/ChromeDriver updates.

Categories
Business Career Podcasts Programming What I’m Up To

Talking about personal agility and the Great Resignation on the “Arguing Agile” podcast

You should be a regular listener/viewer of the Arguing Agile podcast, a YouTube show hosted by Tampa Bay techies Brian Orlando and Om Patel that features local techies talking about software development, agility, and everything in between, completely unscripted and unrehearsed — just real conversations about real tech work. In the past year, they’ve published 66 episodes, the latest of which features…me!

In this episode, titled Personal Agility and the Great Resignation, we talk about doing work in the brave new world of post-2020 and discuss things such as:

  • 0:00 Intro
  • 0:24 Topic Intro
  • 0:59 Reasons for In-Person Gathering
    • Working remotely still requires some in-person gathering, because as they saying goes, sometimes, “you have to be there.”
  • 4:19 Team Bonding, Positive Vibes
    • The power of team-building ceremonies and exercises, and why they have to be meaningful and not just “doing team stuff for team stuff’s sake.”
    • In the past couple of months, I’ve had my first chances to meet with my team at Auth0 (Developer Marketing) after working with them for a year and a half — first at a small summit in Salt Lake City, and last week in London.
  • 8:40 Work, Life, & Sustainability
    • Earlier in your life, it’s much easier to work ultra-hard in the quest to advance your career, but you can’t do it for an extended period. This is the exact thing that generates mid-life crises, and physical and mental health issues.
    • Brian: “Jack Welch said a lot of stuff.”
  • 15:50 Interviews: Vetting Companies
    • During a job interview, you shouldn’t be the only one being interviewed. You should also be interviewing them!
    • How can you tell if a manager is a “Rick” looking for another “Morty” to add to his “Morty Army?”
    • I talk about a Chris Voss technique where you look at the reactions on the face of the person who isn’t speaking to get the truth.
  • 19:55 Segue on Microsoft
    • We talk about my time at Microsoft where I was a Windows Phone Champion, Albert Shum’s design for its “Metro” UI, and Microsoft’s thinking during the Ballmer era: “The mobile platform is the desktop platform, but lamer.
    • I was at a gathering of P2P people at Microsoft in 2001 that was attended by Tim O’Reilly and Dave Winer, where we were told that “IE6 will be the last browser, because the future is applets.
    • A story from my time at Cory Doctorow’s startup where how I show how hard it is to predict the future.
  • 25:51 Learning
    • A story from how I landed my job at Auth0, where I had to learn about an unfamiliar platform very quickly.
    • The importance of communication when working remotely and keeping Conway’s Law in mind.
    • Strip away the technology, and a teacher from hundreds of years ago would still recognize a present-day classroom and the lecture format.
    • We share stories about learning by doing, with Om talking about his daughter at med school and me talking about a story about the Logo programming language, where children learned beyond what they were being taught.
  • 31:12 Time to Think
  • 37:34 Evolution of Technology & Skills
    • Our first computers: I had an Apple //e and Om had a Spectrum ZX, two serious Generation X machines.
    • I learned how to program at a computer store that tolerated my hanging out: Batteries Included, in Toronto.
    • Learning new languages: Python and Lingo, and picking up new languages to get the job done. This may be the first time on the podcast series where the languages Lisp and Prolog get mentioned.
    • A question that Brian asks during interviews: “Tell me about a time in the last 18 months where you did something to update your skills.”
  • 44:55 Solving Problems
    • Software isn’t a what, it’s a how. If you make software for an industry or field, you’re not in the software industry, but the industry or field that you’re making the software for.
  • 47:51 Personal Agility
    • Between the pandemic and the current economic situation, you need to develop personal agility to survive and thrive in the current job market.
    • A number of people who participated in the Great Resignation left their jobs without having another job to jump to.
    • About not participating in what Scott Galloway calls “the menace economy”: “I want to earn fair profit for my effort, but I don’t want to do it by stepping on somebody’s neck.”
  • 53:24 Monkeys, a Banana, and a Ladder
    • When talking about organizational culture, you’ll eventually come across the “Five Monkeys Experiment,” which we discuss.
    • How office architecture mirrors office organization, culture, and hierarchy — and how remote work systems’ architecture will do the same.
    • The new generation of workers will probably have to be more adaptable than any previous generation.
  • 1:02:18 Returning to the Office
    • The majority of a developer’s day requires focus time, and that isn’t often achievable at the office.
    • The true hurdle may not be technology or office space, but organization discipline.
    • It’s quite possible to kill time unproductively at the office — we’ve all seen this.
    • “If you signed a ten-year [office space] lease in 2018, you’re probably really anxious to get people back in there.”
    • “Butts in office chairs” is the new “lines of code” metric.
  • 1:08:43 The Future
    • There’s so much traditional culture force behind the way work is done. Ebenezer Scrooge’s accounting office in A Christmas Carol isn’t all that different from its modern-day counterpart.
    • Om: “I like to see a sitcom called The Home Office.
  • 1:13:00 Wrap-Up