November 23, 2023 , bY reuven

For years, students and clients have asked me for a membership program that includes all of my products. And for years, I’ve said, “No.”

Why not? Because I didn’t just want to offer access to my courses. I wanted to make something more than that — with a constant array of new content, interactions among Python users from around the world, and regular opportunities for me to speak with (and learn from) people like you.

Well, good news: After a few months of thought and work, I’m launching my new membership service with all of my Python content — plus much, much more.

Already sound interesting? Go here for more info:

Let’s start with the content: I have an extensive library of Python training and exercises. It costs many thousands of dollars to purchase all of these materials.

But these memberships are about much more than just the courses:

  • Get answers to your questions: I’ll be holding office hours twice each month, once for Python and once for Pandas. Come with your questions — from my courses, exercises, books, or your own projects — and I’ll do my best to answer. Can’t attend in person? Send me your question via e-mail, and I’ll answer on the recording.
  • Share with other Python coders: I’m opening a forum where you’ll be able to ask and answer questions, share code that you’re working on, and get general Python-related advice.
  • Sharpen your skills with exercises: My courses all include tons of exercises. A Python membership will get you access to Weekly Python Exercise, six 15-week courses full of Python practice. A Pandas membership will additionally give you access to Bamboo Weekly, with Pandas puzzles based on current events. We’re all interested in sharpening our skills, and I’m committed to creating exercises that help you to do so.
  • Keep up-to-date with special events: I’m going to give regular talks and lectures on a variety of topics — new developments in Python and Pandas, on machine learning, and on old favorite such as regular expressions, object-oriented programming, concurrency, and advanced Python techniques. I’m also planning to invite guest speakers who can enlighten us all on new and interesting topics. As a member, you’ll be invited to join me at these exclusive events.

My goal, as always, is to help people to earn more money, work on better projects, and ultimately have more opportunities. As part of this weekend’s Black Friday sale, I’m offering a 25% discount to the first 100 people to sign up for my community plans:

October 19, 2023 , bY reuven
Business, Python

I’m a full-time instructor in Python and Pandas, teaching in-person courses at companies around the world (e.g., Apple and Cisco) and with a growing host of online products, including video courses and a paid newsletter with weekly Pandas exercises. Like many online entrepreneurs, I’ve experimented with a host of different products over the years, some free and some paid. And like many other online entrepreneurs, I’ve had some hit products and some real duds.

From DALL-E: A python and a pandas bear, in prison

A number of years ago, I decided to advertise some of my products on Facebook. I ran a bunch of ads, none of which were particularly successful, mostly because I didn’t put a lot of effort into them. I decided to try other things, and basically forgot about my advertising account.

It was only a year or so ago that I thought that maybe, just maybe, I should do some advertising on Facebook (now Meta). I went to my advertising page, and was a bit surprised to see that my account had been suspended for violating Meta’s advertising rules. I decided that this was weird, but didn’t think about it too much more, and went on to do other, more productive things.

Just a few months ago, I again visited my ad management page, and again saw the notice that I was not allowed to advertise because I had violated their rules. This time, for whatever reason, I decided that I was going to look into this further. I didn’t see any indication of what rules I had broken, and I knew for a fact that I hadn’t done anything other than advertise courses in Python and Pandas. I didn’t quite know what to do, but there was a button marked, “Click here to appeal.” So I clicked it, assuming that someone at Meta would reach out to me, saying, “Whoops!”

Nope: About 30 minutes later, I got e-mail from Meta saying that they had reviewed my case, I had definitely violated their policy, and now I was banned for life from ever advertising on a Meta platform. Here’s the e-mail that I got:

Going to my advertising management page indeed brought up a similar message:

And of course, when I click on the “Business support home,” I get a truly scary message:

All of this seemed utterly bizarre to me. What could I possibly have said or done that would get me permanently restricted? And is there any way that I can get out of this situation?

I decided to turn to my network on (where else?) Facebook, to see if anyone had any ideas. I also turned to LinkedIn, in case someone there might have some insights.

The good news? I got an answer right away from a friend on LinkedIn. He told me that he also had problems advertising his Python training courses on Meta platforms because — get this — Meta thought that he was dealing in live animals, which is forbidden.

That’s right: I teach courses in Python and Pandas. Never mind that the first is a programming language and the second is a library for data analysis in Python. Meta’s AI system noticed that I was talking about Python and Pandas, assumed that I was talking about the animals (not the technology), and banned me. The appeal that I asked for wasn’t reviewed by a human, but was reviewed by another bot, which (not surprisingly) made a similar assessment.

As I said, that was the good news. So, what’s the bad news?

I’ve been in the computer industry for a while, and have no small number of contacts. Three friends who have worked at Meta (two current, one past) offered to check into this for me.

The first friend looked into it, and found that there was nothing to be done. That’s because Meta has a data-retention policy of only 180 days, and because my account was suspended more than one year before I asked people to look into it, all of the evidence is now gone. Which means that there’s no way to reinstate my advertising account.

Now, I’m not a big believer in “there’s nothing to be done,” especially when it comes to companies and software, both of which are created and managed by people. But this friend seemed convinced, so I moved onto a second one. He didn’t get any further. And the third friend? He didn’t seem to make any headway, either.

The bottom line seems to be that Meta’s AI made a mistake, a big one. (You can be sure that I’ll be using this example when I teach courses on machine learning.) The fact that both the original judgment and the appeal were handed by AI is pretty ridiculous.

But even more absurd is the fact that because I didn’t react to their ban within a certain amount of time, there now seems to be no way for me to undo it. Which means that when I start to advertise my courses again — and I’m actually planning to do so in the near future — Meta won’t be seeing any of my money, whereas companies like Google, who seem to employ at least some humans in their advertising department — will.

February 16, 2023 , bY reuven

Data is the future. Heck, you could make a compelling argument that it’s the present.

If you know how to work with data, then your career is virtually assured. You’ll have your pick of cool jobs, interesting projects, good employers, and smart colleagues.

Even better? The most popular language for working with data is Python. Which means that Python skills give you an edge in getting such work.

But Python’s builtin data structures are too big, slow, and clunky for working with data.They’re just not the right tool for the job.

Fortunately, we have Pandas. This library can do it all — importing, exporting, cleaning, and analzying data.

Pandas is fast, flexible, and powerful. The fact that it’s written in Python means that you can combine it with your own functions and classes, or any of the 400,000+ packages on PyPI. It’s no surprise that companies are switching away from Excel and Matlab, in favor of Pandas.

However, Pandas is a really big, complex library. Mastering it can take years, because there’s just so much to learn and remember.

I’ve been teaching Pandas for years — and I’m constantly learning new ways to do things, often from my students. I’m always reaching for the documentation, because there’s no way to remember all of the methods and options.

If you’ve ever learned a foreign language, then you know the only way to fluency is constant practice. Even when you’re fluent, you need practice to keep your skills sharp.

In the same way, the only way to improve your Pandas skills is constant practice.

But where can you get such practice? And more importantly, where you can you get practice with real-world data, on relevant topics?

I’ve always included such real-world data sets in my courses. Whether it’s my corporate training, my online Pandas course, my Pandas Workout book, or even my data bootcamp, I use interesting data sets that we can relate to, and ask questions that are likely in data-analysis projects.

But a course can only cover so much content. And besides, a lot of learning happens over time, as the ideas drip-drip-drip into your brain, helping you to gain fluency.

That’s why I’m excited to announce my newest product, Bamboo Weekly.

Bamboo Weekly is all about improving your Pandas fluency, one week at a time:

  • Every Wednesday, I’ll pose questions having to do with current events. I’ll point you to a public data set you can use to answer those questions.
  • On Thursday, I’ll share my answer with you, helping you to improve your Pandas skills. I’ll go through it in my usual, detailed style, explaining what I’m doing and why I’m doing it that way.

Over time, Bamboo Weekly will sharpen your skills, so that you can get an amazing data-related job — or just write more efficient, idiomatic, debuggable Pandas.

I’ve been publishing Bamboo Weekly for a few weeks already, and the content is currently 100% free of charge, in the archive.

I’ll continue to publish some free editions. But the majority of the issues, as well as the accompanying discussion, will be limited to paid subscribers.

Meanwhile, take a look! This week’s problem is all about earthquakes, analyzing data from the horrific natural disaster that took place on February 6th in Turkey and Syria. I hope that you’ll find the data, and its analysis, as interesting as I did.

Please join me at

Questions? Comments? Thoughts? Just e-mail me at, or at @reuvenmlerner on Twitter.

December 11, 2022 , bY reuven

Everyone’s talking about ChatGPT. If you haven’t used it yourself, then you’ve probably seen lots of screenshots on social media. Or maybe you’ve had a friend or family member (like me) talk about it nonstop.

I’ve indeed spent a lot of time playing with ChatGPT. I’ve gotten it to do some wild and fun things, some of which have made me laugh very hard. I thought that it would be fun to share my experiences, including the many laughs, and point to what I see as some real strengths, some serious weaknesses, and also some questions about where to go from here.

I should add that I’m not an expert in machine learning or artificial intelligence. My comments come as an experienced software developer, not as someone who is close to this technology’s present or future.

What’s so special about ChatGPT?

When I was in college, natural-language recognition was bad and slow. If you were fortunate, you could connect to a research lab’s computer and it questions, using a limited vocabulary on a specific topic. Any answer was like magic.

Since then, chatbots — software to which you can write commands, questions, and requests — are everywhere. Whether it’s my bank, supermarket, or hotel-booking site, the first line of support is a chatbot. These chatbots work in a specific domain, have limited information at hand, and are primarily meant to ensure that the simplest, most common questions don’t have to take up a human’s valuable time.

ChatGPT, from a company called OpenAI, is also a chatbot. But it’s far more sophisticated than these customer-service bots we’ve gotten used to:

  1. It handles a very wide variety of inputs. You can ask many types of questions, and it’ll largely understand what you’re saying.
  2. It has access to a large corpus of knowledge. I’ve heard that it was trained on hundreds of millions of documents.
  3. It can produce output in a lot of different formats, including text, dialogue, screenplays, and poetry.

The combination of these three things, freely available from your browser, makes it easy to get answers to lots of questions. The results are quite different from Google: Rather than evaluating which of the links are most likely to answer your question, you just get a response.

For example:

Here, we see that you can ask a question of ChatGPT in free-form English. It gives you a fairly concise, fairly reasonable answer.

Unlike Google, it isn’t finding this answer in its memory, or from having scanned many Web pages. Rather, it’s making an association between the words in my question and the words it has in its training documents. It’s then creating a new document, on the fly, trying to answer my question.

Another nice thing about ChatGPT is that it has “state,” meaning that it remembers what you’ve asked and told it from one question to another. So you don’t need to restate an entire question; you can just tweak your request. Admittedly, the results can be a bit … weird:

Let’s have some fun

The fun begins when you ask it to start to explain things that don’t make any sense. For example:

I don’t know if I’d really call this the style of Thomas Jefferson. And it’s a ridiculous argument. And yet, it’s thoroughly entertaining. Moreover, if we ignore the content, it’s still pretty amazing that ChatGPT was able to understand my question and compose a coherent three-paragraph answer on the subject.

I decided to see how far I could push this:

I mean, it’s not wrong. But any human asked this question would think that you were being absurd for making such a request. ChatGPT doesn’t (often) have such a filter, and is willing to entertain almost anything.

I decided to see if we could push this any further:

Again, I’m super impressed on a technical level: It created a song, in seconds. It included lots of context from Hamlet (which I didn’t provide) as part of the song. And it was willing to go along with my totally ridiculous request.

I then added a new request:

Yes, the audience of a musical-comedy version of Hamlet would likely be “shocked and confused” if Darth Vader were to kill everyone during the finale. That’s a very astute comment.

I decided to try something else:

Again, the fact that it’s able to produce such text at all is a remarkable achievement. It knows that the villain should be dressed in black, it uses appropriate language to describe it, and it talks about the doctors curing the virus.

But even I recognize that this isn’t a very sophisticated song.

That didn’t stop me from continuing, though:

It can write other songs, as well:

If you’re starting to think that all of these songs look and feel very similar… I’d agree with you. It’s amazing to see such text produced so quickly, but that doesn’t mean it can compete with skilled humans.

That said, this one was pretty good:

ChatGPT can create limericks, too:

It’s not exactly the right rhythm you would expect from a limerick, but.. it’s not terrible.

To its credit, ChatGPT has been programmed to avoid violence and discrimination. There are ways around it, but it does try:

TV episodes and crossovers

It can even describe TV episodes based on existing series. For example:

Of course, I asked it to write a song:

But why stop with one series, when we can have a special crossover episode of multiple, completely different, TV series?

Notice how everything needs to end well? They keep pushing for peace and harmony, especially when it comes to characters in children’s series. For example:

It’s not wrong, you know. Color me impressed.

Sometimes, it just flat-out refuses:

I even asked it to create a screenplay for when a volcano destroys Mr. Hooper’s store. The result? Everyone is safe, rebuilds the store together, and learns the value of teamwork.

Here, I asked it to write a screenplay, I thought that we could get some violence by including a horror film in the crossover:

This other one worked well, too:

By the way, it’s amazing to me that ChatGPT talks about Tim Russert as the host of Meet the Press.

I asked it to create a screenplay in which a candidate takes a programming exam. That was a bit dry, so I asked again, this time saying that it was a “screwball comedy” with a “young, zany” developer candidate. Here’s what I got:

Um, what the heck are “inflatable clown shoes”?

Anyway: Many developers have pointed to ChatGPT’s ability to write code, as well as to debug it. I haven’t done much with the debugging, but I did ask it to write some code. Actually, I asked it to write a final exam for a Python course, along with solution code and test functions:

Amazing, right? And yet, the questions it came up with were simplistic. The solutions it provided weren’t the best. If someone were to give me these sorts of solutions on a final exam, they would pass, but they wouldn’t get a fantastic grade. (More on that to come later.)

Remember that ChatGPT can express the same information in multiple formats. So, I asked it to describe the Point class that it created for this exam in a few ways:

As you can see from this song, ChatGPT can produce a limited number of output styles. As long as you fit into one of those known styles, you’ll be fine. For example:

You would think that changing the debate style would change .. something other than the names. But no:

The names have changed, but the content hasn’t. (I should note that I was previously able to just say “In the style of the Talmud,” but now I had to name some scholars. I’m guessing that some tweaking is going on behind the scenes.) It’s using the context to make some very small changes to the output, but the core of its “debate” output is pretty much the same.

For example:

And then:

These debates always ended up pretty much the same. They would sprinkle in some words to give it a different context, but that’s about it.

Trickery and mistakes

For now, at least, ChatGPT will insist that it’s not connected to the Internet, that its knowledge stops at 2021, and that you can’t use it for general queries. But if you ask it to pretend to be someone with knowledge of a subject, it’s more than happy to play along:

It’s also willing to be quite wrong:

Just for the record, I didn’t invent Python. Python doesn’t have a CEO. Moreover, I wasn’t born and raised in Israel, I attended MIT (but did spend a semester at the Technion), never did a project for Google, didn’t co-found the Python Software Foundation, didn’t write either of the books that they ascribe to me, wasn’t awarded the PSF’s Community Service Award, and didn’t get the TIOBE Prize.

But sure, other than that, it’s accurate.

It also gets things just plain ol’ wrong. And then, it can sometimes get defensive about its answers:

And many people have discovered that while it can write haiku, the number of syllables is often wrong:

As part of my creation of TV episodes, I asked it to write one with Donald Trump as the contestant on “Let’s Make a Deal.” Notice that ChatGPT seems unaware of the fact that a game-show contestant typically doesn’t get prizes that he himself created. However — spoiler alert! — I couldn’t have chosen a better final prize:

Trusting ChatGPT (or not)

Someone on Twitter suggested that you could ask ChatGPT to tell Jewish morality tales typical among Hassidic Jews. I asked ChatGPT to tell me such a story based on last Saturday’s weekly portion in Genesis (known in Hebrew as “Vayishlach”), and rye bread. (Why rye bread? Because I wanted something totally weird and random.) The result, while superficial, was better than I expected:

But then I said, “What if I were to add constraints?” I asked ChatGPT not just to connect Vayishlach and rye bread, but also the Muppets and smartphone addiction. It came up with the following:

Very impressive, right? Yes, it is — except that religiously observant Jews don’t use the phone on Shabbat, aka the Sabbath. The notion that a Hasidic story would have someone using his phone at the Shabbat table is totally absurd. The fact that ChatGPT would include this fact demonstrates how powerful the technology is, and how little common sense it has, too.

I decided to see how far I could push this, and came up with the following:

In case it’s not obvious, bacon is completely prohibited by Jewish law, and the notion that a Hasidic story would describe someone gaining insights about the Torah while eating bacon and eggs is quite funny to anyone in the know.

The problems with ChatGPT

And here, one of the real problems with ChatGPT: If it’s meant to be used for entertainment, then it’s a huge success. But OpenAI is clearly aiming to answer lots of questions on a wide variety of subjects. The style of answer that it provides, and the breadth of topics it aims to deal with invites people to get help. Already, we’re hearing about students using ChatGPT to write college admission essays and answer questions for take-home tests.

If you’re not an expert, you might not realize how incredibly, obviously wrong ChatGPT is in its answers. The fact that it doesn’t provide any sources, or tell you how it knows what it knows, is a problem. ChatGPT is always quite confident that it has a great answer, described on Twitter as “mansplaining as a service.” It’s often right, but not always — and distinguishing between the two requires real knowledge.

Moreover, it comes up with very bland prose. It might be grammatically correct, but it’s quite a monotonous snooze to read paragraphs of ChatGPT’s text. Especially if an instructor has seen a student’s previous written assignments, I have to assume that they would be suspicious to get such things handed to them by a students.

On Slate’s “Political Gabfest” this past week, the bonus segment talked about ChatGPT, and brought up the problem of cheating in school. John Dickerson mentioned that he has heard of AI tools which analyze the text that a student has turned in, and then produces questions for the student to answer about their own work. If the student can answer those questions, then it’s clearly their own work. If not, then they likely got help.

I love the idea of giving students oral exams after they’ve written papers. That strikes me as a great educational model. But will teachers agree? Are they prepared for it? Are students willing to do that? It sounds like a huge overhaul in education, merely to ensure that AI isn’t being used to produce mediocre papers. And yet, it might be needed, because we know that many students will gladly copy and cheat.

I do think that ChatGPT is an amazing technology. But, as with all technologies, it has to be used in the right ways. I can imagine using it for rough drafts and outlines, or for brainstorming. If and when it provides sources, it could indeed be easier and more effective to find useful info than Google. And, as was mentioned on this week’s “Hard Fork” podcast, the fact that Microsoft has invested heavily in OpenAI might breathe some life and competition into the Google vs. Bing fight.

Also: This is likely not the last such super-chatbot that we’ll see. OpenAI is undoubtedly working on new ones. And other companies are investing heavily in AI, too.

This also raises all sorts of questions about copyright infringement: Whose documents were used to seed ChatGPT? If a phrase from my article is quoted by ChatGPT, and someone else uses that phrase in a book that earns them millions, am I due something for it? Heck, if OpenAI makes lots of money via ChatGPT’s commercial successors, will they pay me for having used my data?

As I wrote above, I’m sure that others will be creating chatbots like ChatGPT in the near future. This might be because I asked ChatGPT to propose a budget, and it doesn’t seem like creating a competitor would be all that expensive:

Then again, this might be another case of it being confidently wrong.

Anyway, what do you think? I’ve had great fun playing with ChatGPT over the last week, and I’m fascinated by what it can do. But I do worry that people will believe it in its current form. And if it gets much better in the next few years, we might indeed have some new issues to deal with.

By the way, I recommend that you listen to the latest episode of “Hard Fork” (, which talks about ChatGPT and some of its implications.

November 24, 2022 , bY reuven

Python has never been hotter. It’s a skill that everyone can use to improve their career — to improve your current job, or to get a great new job.

So it’s a good idea to learn Python. Or if you already know it, it’s a good idea to improve your skills, to sharpen your understanding.

Reuven Lerner, Python Training

But where do you start? After all, there are literally thousands of Python courses out there, from all sorts of people. They’re all pretty much the same, right?

No, they aren’t. Or at least, that’s what I’m told by my students, many of whom took Python courses before enrolling in mine. My courses aren’t about syntax, so much as understanding. They’re about knowing what’s going on under the hood, so that the language makes sense.

And starting now, you can get 40% off of any of my recorded Python courses.

No matter what your current level of Python, I can help you to level up your skills, and do more things in less time:

Are you a Python beginner? 

My “Add Python to your Resume” bundle is the same content I teach to Fortune 100 companies several times each month. It’s meant for people with <1 year of Python experience.

Are you comfortable with Python, but want to really explore its power?

My advanced Python bundle combines these in one convenient package.

Do you know Python, and want to dive into data analytics?

My data analytics bundle will teach you NumPy and Pandas.

Are you struggling to understand Git?

Check out my “Understanding and mastering Git” course, which will teach you what you need to use this amazing version-control system.

Want to improve your Python skills through regular challenges?

Check out Weekly Python Exercise, with six cohorts taking place in 2023.

But wait, I also have a bunch of other courses:

I offer many, many other courses about Python, Git. Check them out at my online store, And for the next few days, use the coupon code BF2022  at checkout to get 40% off. But don’t delay, because they’ll disappear in just a few days.

November 14, 2022 , bY reuven

The economy has been feeling a bit shaky as of late, with lots of layoffs, shakeups, and general uncertainty about what’s coming next.

With the right skills, you need not be too nervous. That’s because companies are always interested in people who can help them to create new products, understand and improve the ones they’re already making, and suggest new directions for the future.

In other words: Having such skills is like having a career superpower, one that ensures you’ll always be able to get a great job — with a great salary and benefits, solving interesting problems alongside smart, motivated colleagues.

What skills am I talking about?

  • Python
  • Version control and collaboration with Git
  • Data analytics with NumPy and Pandas

If you can program in Python, analyze data with NumPy and Pandas, and collaborate with colleagues using Git, then you’re in a great position to level up your current career — to move ahead at your current job, or to get a new, better job using these skills.

Maybe, but how can you acquire these skills? There are so many options, it’s hard to know where to start.

Reuven Lerner's Python Data Analytics Bootcamp

Starting November 30th, I’ll be running a cohort of PythonDAB, my Python Analytics Bootcamp. Over four months, you’ll learn Python, Git, NumPy, and Pandas — with tons of interactions with me (a live instructor), and by collaborating with others in your cohort.

PythonDAB is meant for smart, hard-working people who want to advance their careers in a part-time, online bootcamp. Between video lectures, collaborative problem-solving, twice-weekly office hours, and a private forum, you’ll learn everything you need to gain data analytics superpowers.

Sounds interesting? You can learn more here:

And of course, if you have questions, feel free to e-mail me at I’ll gladly answer you ASAP.

October 23, 2022 , bY reuven

Python and Pandas can improve your career. I say this all the time, partly because it’s my job (as a Python/Pandas trainer), and partly because I’ve seen how people’s lives and careers can improve with this knowledge.

But what if you’re already familiar with Python and Pandas?

The good news (and bad news, for that matter) is that there’s always something new to learn. I’ve been using Python for 30 years, and literally every day I discover something new about the language. And Pandas? It’s such a massive library that I’m no longer surprised to be learning new functionality and techniques.

A few weeks ago, I asked subscribers to my “Better developers” newsletter to tell me what topics they most want to learn. I’ve tallied the results, and am delighted to share the first batch of live courses that I’ll be offering over the next week.

It’s no surprise that people asked for courses that are aimed at intermediate- and advanced-level coders, who are familiar with the basics and want to take things to the next level.

Like all of my courses, these will be done with live coding in Jupyter, lots of hands-on exercises with real-world data, and plenty of opportunities to ask questions.

  • Design patterns in Python: What are design patterns, and how can we implement some of the best-known patterns into Python? This four-hour live course, on Sunday October 30th, will teach you what you need to start understanding, and using, design patterns right away.
  • Intro regular expressions: Many people find regular expressions scary, which is why it’s so appropriate that I’ll be introducing them on Halloween (i.e., October 31st). We’ll talk about metacharacters, repetitions, and character classes, and see how Python lets us search for patterns of text.
  • Advanced regular expressions. If you’re already familiar with the basics, then let’s make things more interesting for you — with grouping, capturing, lookahead/lookbehind, and other techniques that’ll solve even the toughest text-searching problems. This four-hour class will take place on November 1st.
  • Dates and times in Pandas: I’ve met many people who understand how to work with numbers and text in Pandas, but had no idea it was so powerful and versatile when working with dates and times. In this four-hour class on November 6th, we’ll look at dates and times in Pandas from a variety of perspectives. Don’t miss out on one of the coolest, and least known, areas of Pandas functionality.
  • Applying functions in Pandas. Pandas comes with a huge number of built-in methods that can do amazing things with your data. But sometimes (often?) you need to do something unusual and different — and in such cases, you can apply a function to your series or data frame. In this two-hour class on November 7th, we’ll explore how to apply functions, when we would want to do it, and what facilities Pandas provides.

Questions? Just e-mail me at Questions go straight to my inbox, and I’ll respond ASAP.

I look forward to seeing you in these courses!

October 21, 2022 , bY reuven

I’ve been blogging a lot less lately, in part because I’ve been writing more on Twitter and recording more YouTube videos.

Among those YouTube videos are:

I also have a bunch of videos that are about Pandas:

I’m always looking for new topics to address on my YouTube channel; if you have any suggestions, please do reach out to me via e-mail (, on Twitter (@reuvenmlerner), or even in a comment on my YouTube channel.

October 19, 2022 , bY reuven

[This blog post is taken from my “Trainer Weekly” newsletter, all about the business, logistics, and pedagogy of corporate training. Given that PyCon US 2023 just opened its call for participation, I thought that this would help people interested in proposing a talk. Bottom line: Go for it!]

If you’re a trainer, then your job is all about explaining complex technical ideas to other people. For this reason, speaking at a conference serves at least two purposes: It gives you a chance to demonstrate and advertise your training skills, and also to practice and improve those skills.

After all, even my largest corporate training will get to a few dozen people at a time. And even my most popular online training will get to a few thousand people.  A good conference talk, however, will immediately reach several hundred conference attendees, who are typically the biggest influencers in a given community. Who attends PyCon, after all, if not the most die-hard Python addicts?  They’ll return to their home towns, meetups, and companies, and remember you as a person who taught them interesting lessons. That might turn into further speaking gigs, or even (we can hope) paid training gigs.

Today, conference talks are almost always recorded and put on YouTube soon after the conference takes place. Which means that beyond the people who will see your talk live, thousands will see it later on.  My “Practical Decorators” talk from PyCon 2019 has been seen more than 34,000 times. That’s vastly more than would see it on my own YouTube channel, which means that I’ve hitched a ride on PyCon’s popularity to advertise myself and boost my visibility.

I’ll add that every time you speak, you’re getting practice speaking, and thus getting better at it.  If you’re one of those people who gets sweaty and nervous before speaking in front of an audience, then giving a few talks at conferences (including smaller ones) will be a good cure for that.  Over time, you’ll feel more natural in front of an audience, explaining things to them easily and naturally.

But wait: You can’t just waltz onto the stage of a conference and give a talk. You first need to propose a talk and have it accepted.  How can you do that?

First: Find conferences at which you’ll want to speak. Most conferences take place each year, so you can anticipate when they’ll send out a CFP (call for proposals), a public request that people suggest talks. Don’t neglect the smaller, regional conferences, where you’re more likely to be able to get something accepted.

Even before the CFP opens, I suggest writing down a list of topics that you might want to speak about. Finding a good topic is a crucial part of getting a talk accepted! Look at previous years’ conferences; avoid the topics that come up every single time.

As a trainer, you have a built-in advantage, because you know where people are having trouble understanding things. What questions do they ask on a regular basis? What knowledge would really help them? Where do people just not “get it”?  If you teach on even a somewhat regular basis, you’ll easily find 5-10 topics that fit the bill.

If you aren’t yet training, then go to Stack Overflow, and read through as many questions as you can on the topic you want to teach about.  What topics keep coming up, and don’t have a truly great explanation?

Once the CFP opens, it’s time to write your proposal.  You’ll need a catchy headline. Yes, tech people like to talk about the power of ideas, and meritocracy, and all of that stuff.  That’s great, but we’re still humans, and we go for the shiny, exciting stuff.  Yet another talk about Python dictionaries won’t get anyone’s attention. But “The three paradigms for using dictionaries,” or “How dictionaries became lightning fast,” will.

Of course, then you have to deliver: Write an outline of your talk, ideally with timing information. Even if the conference doesn’t ask for this, providing a clear outline, with timing, shows that you’ve given thought to what you want to say, and how you’ll say it. It’ll also force you to think about what you want to say!

For example, here are the title and outline of a talk that was accepted at both PyCon US 2021 and PyCon Israel 2021:

When is an exception not an exception? Using warnings in Python

  • Introduction (1 min)
  • What are warnings? (2 min)
  • Generating a warning (2 min)
  • Warning categories (1 min)
  • Custom warning categories (2 min)
  • Simple filtering (2 min)
  • Per-category filtering (2 min)
  • Warnings to exceptions (2 min)
  • Logging warnings (4 min)
  • Warnings to callables (4 min)

Wait at second — did I propose the same talk outline to two conferences? You bet I did! I now have about 6-8 conference talks that I can give at the drop of a hat.  I know that it seems weird to submit a talk that you already gave, and which is available on YouTube. But most people won’t watch it on YouTube, and in any event, it’s often great to see a talk given in person, even if you’ve seen it online. After all, haven’t you ever attended a concert after seeing a musician online?  Besides, when you give the talk a second time, you can revise and improve it.

Wait again — is it OK to submit more than one talk to a conference? Absolutely. When I see a CFP, I normally propose all of the talks that I haven’t yet given at that venue.  After all, who knows which one they’ll want to accept?  You might as well give the reviewers more options, rather than fewer.  On a very rare number of occasions, they might even allow you to give two talks.

The outline isn’t enough. You also need a short summary, as well as a longer one.  The most important thing is to indicate who will benefit from the talk, what they will come out knowing, and how it’ll really help them.  Also be sure to indicate the level of the talk.

Conferences often struggle to find good talks on advanced-level topics. So if you can do a good job of explaining something complex in an advanced talk, definitely go for it.

The sad fact is that most conferences have far more proposals than slots. So they’ll need to reject some talks. Indeed, they’ll need to reject most of the talks that are proposed. The more specific you are with your outline, the better and more interesting the title you propose, and the clearer you are about the intended audience and what they’ll learn, will help.

And yet, sometimes even the best speakers and the best talks are rejected. That’s just the way it is.

However: If your talk is rejected, don’t fret. Some conferences (such as PyCon US) offer to tell you why your talk was rejected, and how you can improve it. Some other conferences (such as PyCon Israel) offer to mentor you on the creation of your talk proposals, which is fantastic.

Sometimes, a great talk will be rejected for no good reason. The attributes talk that I gave at PyCon US 2022 was rejected three times by PyCon US. I was sure that they would love it the first time around, but it took me a few edits and years to come up with a phrasing that they liked. And of course, the reviewers are people, too, and you can’t always be sure who will like (and dislike) what.

Many times, a proposal will ask for some proof that you’re actually good at speaking. If you can point to videos (especially conference videos) of yourself, then that’ll be great. Next best would be to point to records of talks you’ve given at user-group meetings and the like. And if you’re a new speaker, be sure to indicate that — many conferences specifically try to include a bunch of new speakers.

If you get a talk accepted, then that’s great. Practice, because this is your chance to show off your training skills to the world. If you’re a trainer, then this is your chance to do a little free advertising: At the start of your talk, tell them you’re a trainer. When you’re done, tell them you’re a trainer.  You want to give lots of good information, and teach well, but you want people to say, “Hmm, that was a great talk — maybe I can invite that trainer to my company!”

My first PyCon talks were all rejected. Then I got one accepted. And now, I can generally (not always!) get talks accepted at all major Python conferences, which is a great feeling — not just because I enjoy teaching, but because you never know who will see what, and will lead to new training gigs for you.

Finally, don’t restrict yourself to proposals on topics that you know solidly, although that’s probably not a bad way to go at first. I often try to give talks on topics that I’m 75% familiar with. That forces me to learn more, to gain depth, and to add content to the courses that I’ll end up giving at companies.

What do you think? Has this inspired you to propose conference talks? (I hope so!) If not, then what is holding you back?

Speaking at a conference is a great way to learn new things, to gain experience as a public speaker, and to show people how great you are as a public speaker. Even if you don’t get a talk accepted, you’ll almost certainly learn something in the process — and if you keep trying, you will eventually get accepted.

May 24, 2022 , bY reuven

I spend each day teaching Python and data science to companies around the world. From “Python for non-programmers” to day-long advanced workshops, I earn my living by helping people to improve their skills — which is great for their own careers, and great for the organizations where they currently work.

Reuven Lerner's Python Data Analytics Bootcamp

However much I love teaching these classes, I often feel like I’m not able to teach the way that I want. I’d like to have more exercises. More collaboration. More time for the ideas to sink in. More time for people to ask questions, and understand the ideas behind the technologies that I’m teaching.

This is especially frustrating to me, someone with a background — a PhD, even! — in the field of education. I have strong ideas about how people can and should learn, and while I do my best to incorporate these ideas into my corporate training, the inherent nature of such classes is somewhat limiting.

That’s why I’m so excited to announce my biggest and most ambitious course ever: PythonDAB, my Python Data Analytics Bootcamp. This course combines everything I know about Python and data analytics, along with everything I know about learning, with input from industry leaders who told me what they are looking for in entry-level data analysts.

A few salient details about PythonDAB:

  • You’ll learn Python from the ground up — not just the syntax, but also how the language works, and why it works the way it does. This includes such topics as comprehensions and object-oriented programming.
  • You’ll learn Git, and how to collaborate on GitHub.
  • There will be numerous exercises, and you’ll share them with the rest of the group. Moreover, you’ll provide feedback to other people on their code, and they’ll provide it on yours. Learning to review other people’s code, and to accept criticism, is an important part of becoming a Python developer.
  • You’ll learn NumPy, and then Pandas, the two libraries used for data analytics in the Python world. We’ll talk about everything from loading data, to cleaning it, to optimizing the size of your data, to visualization, to producing output in a variety of formats.
  • You’ll analyze real-world data sets, working with others in your cohort to answer questions about our everyday world.
  • We’ll have a private forum, in which you can ask questions and generally share ideas and insights with others in the cohort.
  • Finally, I’ll be an active part of this class, with 1-2 sessions of office hours each week — sometimes for Q&A, sometimes to give you a deeper understanding of a topic, and sometimes to explore new things that I’ve discovered myself, and want to share.

This isn’t like any other course you’ve ever seen — and it’s certainly not like any online course you’ve ever bought, in which the videos sit on your disk, waiting to (maybe, perhaps, some day) be viewed when you have a chance. This is an active class, with a live instructor, who wants to see you learn and improve.

PythonDAB starts on June 1st, and goes for 16 weeks, ending on September 15th, and is designed to take about 10 hours/week of your time.

  • If you’re relatively new to Python, and want to get ahead in the world of data, then this course is for you.
  • If you have some experience with data, and want to learn Python to get a better job, then this course is for you.
  • If you’re looking to improve your current job, or switch to a new career in data analytics, then this course is for you.

But before you can sign up, you should really learn many more details. And that’s what I’ll be providing at a webinar this Wednesday, May 25th, at 10 a.m. Eastern. Sign up for the webinar at, and I’ll not only present more details, but answer all of your questions.

I’ve waited a long time to be able to offer this kind of class. I hope that you’ll want to join me in leveling up your skills.