./1996 First Pybook.png.note==================================================== In the beginning... the first Python book started, during the Python 1.X era (1.2 and 1.3, to be precise). It was signed in 1995, after months of convincing the Perl-focused publisher (then, O'Reilly & Associates) to take a risk on an _upstart_. This was the first of 15 books and 12k pages to come. It begat both _Learning Python_ and _Python Pocket Reference_ (ahead); essentially, two of its appendixes were split off into standalone books. My optimistic sales estimate in 1995 was 5k units, but by 2020, this title and its progeny crossed the 750k mark. Takeaway: I'm lousy at estimates. ./1998 Puerto Rico 1.jpg.note=================================================== From an early training trip to San Juan, _Puerto_ Rico_. This was the first of many classes outside the contiguous US. This was also the second year of training, but there are no photos from earlier classes and few from this timeframe in general; I never expected training to become a thing. Caveat: some of the early pictures here though 2002 are scans of paper photos (see their info popups with a filename tap or down-swipe). Digital cameras weren't common back then, and the training business opened on a shoestring budget. ./1998 PyRef1E Book.jpg.note==================================================== The first _Python Pocket Reference_—a details-only quick reference, which was derived from an appendix in the first Programming Python of _1996_. It covered Python 1.5 and at 80 slim pages wasn't much at this point, but it grew into a more useful 260-page reference by _2014_'s 5th Edition. ./1999 LP1E Book.jpg.note======================================================= The first _Learning Python_, based on Python 1.5. My parts covered the core language, and drew from both an appendix in the first _Programming Python_ of _1996_ and my expanding training experiences. There's really no better way to hone teaching material than to present it live to rooms full of users and critics. My first _editor_ wanted this book for people who would find the technically heavier _Programming_ too much. He was right, of course: over the years, this title has been by far the best selling of my three, and it became a de facto standard introduction to a tool that rose to the top of the programming-languages _heap_. A lot of people contributed to Python over the years, but this title's teaching and publicity roles made it a major factor behind that rise. It's still playing that part some three decades _later_. ./1999 OSCON 1 Tshirt.jpg.note================================================== Swag from the first O'Reilly Open Source _Conference_ in 1999. The snake is still fourth from the left at this point. These events grew until the publisher pulled the plug on its conferences business in _2020_ amidst the pandemic and its own internal morph (though they also grew old for me long before that). ./2000 Alameda.jpg.note========================================================= From an early set of classes for TCSI in _Alameda_, in the Oakland area. TCSI was a telecom company, which also hosted the Newmarket class in the UK up ahead this year. ./2000 NYC.jpg.note============================================================= The first of three New York City classes (see also _2006_). This one was notable for a cold trek through Times Square in search of food, an indecent proposal in the same venue, and a class held in a skyscraper across from the World Trade Center. ./2000 Newmarket 1.jpg.note===================================================== The first overseas class (not counting Puerto Rico), in _Newmarket_, a small town near Cambridge, UK. All told, I wound up teaching multiple classes in Mexico, Canada, and Europe, including 7 training trips to the latter. I also turned down classes in Australia, Japan, India, Norway, and Saudi Arabia; more on the last of these in _2001_. ./2000 Newmarket 3.jpg.note===================================================== One of the horse farms in the area, Newmarket's claim to fame (or so my Kentucky wife tells me). I stayed in a bed-and-breakfast place nearby; Frosties and English breakfast before trotting off to class. ./2000 Newmarket 4.jpg.note===================================================== Exploring near the end of the Newmarket trip. On the way back, there was a massive traffic backup well before the airport, and my driver dropped me off at a rural train station to catch a train the rest of the way, even though I didn't know a thing about the trains at the time. I wound up being told to run through the airport to catch my flight. And so began the travel stress dreams... ./2000 Palm IIIx.png.note======================================================= The first of the gadget pictures on this page, added for variety (and nerdity). As a road warrior, I used a _Palm_ IIIx_ like this one almost constantly in the early 2000s, before switching to _CLIÉs_ Palm PDAs, _Zaurus_ Linux PDAs, _OQO_ Windows handhelds, and eventually _Android_ smartphones—where innovation has largely stalled. Follow the device saga ahead. The Python 2.X scripts coded to convert Palm memos and calendars for use on the Zaurus are still on this site; see _the_ code_. Was 2.X ever really broken? ./2001 Colorado.jpg.note======================================================== I started teaching my own public classes at a hotel in _Colorado_ this year. These classes were for individuals who would fly in to stay for the session_—a common model in the pre-pandemic world. Before this, I taught public Python classes in _Boulder_, Colorado arranged by TCPC, a Perl training company (yes, really). ./2001 Dublin 1.jpg.note======================================================== The first of two classes in _Dublin_, Ireland for a reinsurance company. Fresh Guinness on Grafton _Street_ and a day off to wander about and see the sights. The UK and Europe in general are enormously impressive for a traveler from a land whose history spans just two and a half centuries. _Travel sidebar_: I almost taught a class in Riyadh, Saudi Arabia this year, but there was a bombing in the area I was booked to stay in, shortly before my departure. Python may be cool, but it's not cool enough to get blown up for. ./2001 PP2E Book.jpg.note======================================================= The second _Programming Python_ was a completely different book from the _first_: it was able to narrow its focus to common applications of the language, after the reference and language-tutorial parts were split off to the _Pocket Reference_ and _Learning_, respectively. From this point on, this title would cover topics presented hurriedly on the last afternoon of my three-day classes: the Internet, GUIs, text, and the like. The book was able to do a much more complete job than the classes, though what you "do" with Python is enough to fill careers. ./2001 San Diego.jpg.note======================================================= At _OSCON_ 3, in _San_ Diego_. Somehow, I jumped on a plane to teach the Dublin class just after teaching a tutorial here. ./2002 Barcelona 1.jpg.note===================================================== The next few pictures are from training for HP in _Barcelona_, Spain. I taught 3 classes here over two separate trips and had a weekend off in between two classes to explore. Barcelona is an amazing place; it's something like Southern California, but with history. And yes, I got paid for this stuff. ./2002 Barcelona 2.jpg.note===================================================== A statue of Christopher Columbus near the Mediterranean coast on the _Ramblas_. The first voyage was welcomed back here by Isabella and Ferdinand in the 15th century. On the other side of the pond, I also taught (and played squash badly) in _Mexico_ City_ this year, but have no photos of the trip, regrettably. ./2002 Sony U1.jpg.note========================================================= The Sony PCG _U1_: a more-or-less handheld Windows PC, which was sold only in Japan but distributed in the US by Dynamism in Chicago (which later morphed into a 3D printing company, weirdly). The U1's small form factor jived with my growing travel schedule. It was a bit large for a handheld and a bit small for a laptop, but its wow factor was off the charts at the time. A few years later, Sony would also go small with the P series, pictured _ahead_, and the _UX_, not in this gallery but comparable to the OQO _ahead_. ./2003 Dublin 1.jpg.note======================================================== Back to _Dublin_ for a repeat engagement, this time with an extra day to focus on the wxPython GUI toolkit. I tripped over some stairs on the way to the airport and bruised up my leg badly, but managed to teach the class anyhow; the show must go on, especially when you've crossed an ocean to get there. This photo was shot on a Sony _Handycam_ digital camcorder, but the result doesn't seem any better than paper scans. Digital photography took off anyhow, especially with smartphones a few years down the pike. ./2003 LP2E Book.jpg.note======================================================= The second _Learning Python_ adopted new core-language training material I had honed over numerous classes since 1E. The first edition's coauthor opted to skip this edition and would exit in full on the next, but most of the material (and work) was already mine. ./2003 Sony Clie.jpg.note======================================================= The _CLIÉ_: a Palm-OS based PDA from Sony, which sported a keyboard, Internet connectivity, memory sticks, a high-res color screen, audio players, camera, and more. I started using one after the original _Palm_ PDA started showing its age and before the _Zaurus_ came online. It competed with Windows Mobile at the time and foreshadowed much of what smartphones would become (sans the media prisons and data collection). ./2004 Colorado 1.JPG.note====================================================== More scenes from _Colorado_, home of public classes for individuals; private classes for Seagate, HP, and others; and the instructor (at the time). This picture and the next were taken in Rocky Mountain National _Park_, the setting for a later weeklong public _seminar_. ./2004 Ft Walton.JPG.note======================================================= The next two pictures are from 2004 classes: on the beaches in Florida (while teaching at an Air Force base near _ Fort_ Walton Beach_), and California (while teaching at an HP site in _ San_ Diego_). The latter was the only one of the eight San Diego classes not taught for _Qualcomm_. ./2004 Zaurus.JPG.note========================================================== The Sharp _Zaurus_ PDA, a fully functional Linux-based handheld computer. This was real Linux, long before Android's locked-down flavor rose to dominate the handheld domain. I owned two of the clamshell models and happily tapped out Unix commands on both, before the OQO came along (see _2006_). ./2005 Georgia BNR.JPG.note===================================================== Two photos from 2005 training trips are up next: one of the four sessions at Big Nerd _Ranch_ (focus-enabling seminars held in the Georgia woods), and another Puerto Rico trip (a return engagement for the _1998_ client). ./2005 St Augustine.JPG.note==================================================== Another 2005 training trip: near St Augustine, _Florida_, where a hurricane churning offshore provided both color and street flooding. (For anyone keeping count, I also survived a hurricane in Virginia and a tornado warning in Illinois, and got stranded by an Earthquake in Seattle after a Vancouver class.) All told, there were 32 classes in 2005, the second busiest year, but 2006 would be even more intense; see the main __ Teaching Python__ page for the full list. ./2006 Chicago 1.JPG.note======================================================= The first of a batch of training photos from 2006, a crazy peak-demand year that hosted 43 mostly out-of-town classes (plus a 1600-page book). The first two are from one of the many classes held for trading companies in downtown _Chicago_. ./2006 Doused OQO.JPG.note====================================================== The _OQO_, a remarkable handheld computer that ran full Windows before smartphones were around. I owned two of these: the earlier model shown here (which wound up being drenched by a spilled beer in London), and the last model (which still works to this day; see _2008_). The OQO also ran real Excel with VBA—something that neither Android nor iOS can do at this writing. The OQO generated a lot of buzz at the time (and was demoed by a B. Gates onstage at a Windows conference). Sadly, its moment in the limelight was brief. Whether it was too pricey, too ahead of its time, or too something else, OQO died before the rise of smartphones, which still seem crippled by comparison today. ./2006 Edmonton.JPG.note======================================================== A famously giant shopping _mall_ in _Edmonton_, Canada. This class was for the Canadian weather service. The airline lost my luggage here, and I wound up having to scrounge up some replacements in a hurry (and during snow-storm power outages). Much of the downtown area was indoors, and there were plug-ins for car heaters in the parking lot; cold up there, eh? ./2006 London 1.JPG.note======================================================== A week in London teaching for a major financial company. This is where the first _OQO_ was baptized by a Guinness, at a pub nearby. ./2006 London 2.JPG.note======================================================== St Paul's from the Millennium Bridge (see also _2009_). ./2006 London 3.JPG.note======================================================== The Tower of London. And if that's not historic enough for you, there's part of the Roman wall across the street. ./2006 Monterey.JPG.note======================================================== The California coast at Monterey. I was in the area to teach for Google at the _Googleplex_ in Mountain View. The stock market was already raining money on the place by this time. I remember being taken to one of the company cafeterias, where the free lunch of the day was wild boar. To which one of the people in line lamented: "Aw; wild boar again?"... ./2006 NYC SpamAlot.JPG.note==================================================== The next three shots are from the two training trips to New York City this year. For one, my hotel was near the SPAMALOT venue off Times Square. The classes themselves were both downtown; one was near Wall Street, which was still heavily guarded after 9/11. Somewhere along the way, there was a jazz club, late-night street pizza, and Python training. ./2006 PP3E Book.jpg.note======================================================= The third of four _Programming Python_s, which expanded its applications materials, and covered Python 2.5_—arguably one of the best Pythons, and two years before 3.X cropped up. Parts of this book were written during an all-night hotel vigil in an Embassy Suites in downtown Chicago, before teaching a class the next day. It was probably time to start thinking about scaling back (and/or human cloning). ./2007 LP3E Book.jpg.note======================================================= The third _Learning Python_. This one was exclusively about the core language. The former editions' coauthor dropped out altogether, and his 1st Edition material was trimmed to make room for new content derived from recent live classes. The result was a cross-app book that reflected the real needs of real learners; that probably accounts for most of this title's success from this point. This edition itself had some die-hard fans, and still does, though it was a bit light on details, Python 3 was about to convolute the story badly, and the code pointers added by the publisher were arguably annoying (and were cut in 4E). ./2008 Seagate OQO 02.jpg.note================================================== Teaching a class for Seagate in Colorado, with the _OQO_ model 02 (after the 01 suffered a frothy _fate_). _Seagate_ was my busiest client: I taught 28 classes for the drive maker in multiple locations. This was also a private but local class. Out-of-town training stopped in mid 2007 for personal reasons (synopsis: having a life beat having a business) and wouldn't restart until late _2009_. I did multiple classes with the OQO this way. When paired with a Bluetooth keyboard and mouse and an HDMI or VGA projector, it could easily stand in for a full PC for teaching. It ran Windows, Python, the Internet, and everything needed to present a three-day class. A smartphone with casting might suffice today, but this was 2008, when the iPhone and Android were just getting started. ./2009 Dublin 1.JPG.note======================================================== St. Patrick's Cathedral in _Dublin_. This set of Dublin and London shots are from a late 2009 training trip for a class in London. By this time, I had scaled back teaching in 2007 and passed along much of my business. This was the first out-of-town class since then, and it spawned a brief restart for training the next year that lasted until _2012_. It was too soon to retire, but it was also too soon to know. ./2009 LP4E Book.jpg.note======================================================= The 4th _Learning Python_, for Python 3.X bifurcation. This, and the 4th _Pocket Reference_, were put out to cover the new and backward-incompatible Python 3.X, released the prior year. Much of this edition's _growth_ owes to having to cover two different language lines; the vast majority of readers would still be using 2.X for many years to come. Python 3.X broke most Python programs at the time, and many people saw it as biased and rude, which is one reason its adoption was very slow. 2.X was not retired until 2020, some 12 years later, when it still had a large and loyal userbase. That said, 3.X is fully usable today, its Unicode model is more coherent, and it's still a lot nicer than Java, C++, Perl, and their ilk—especially if you ignore its bleeding-edge new stuff (and perennial douche moves). ./2009 London 1.JPG.note======================================================== Big misogynistically named clock _tower_. ./2009 London 2.JPG.note======================================================== Atop _St_ Paul's_ in London, after climbing the stairs in a jetlag stupor. ./2009 London 3.JPG.note======================================================== At the British _Museum_. We came, we saw, we carted away the ruins of ancient civilizations. ./2009 London 4.JPG.note======================================================== White Tower at the Tower of London, built at the time of the Norman _Conquest_. Definitely creepier at night. ./2009 London 5.JPG.note======================================================== The London _eye_. This seems as out of place as type hints in Python _3.X_... ./2009 Vaio P.jpg.note========================================================== Sony's _Vaio_ P_: an ultraportable Windows PC that was small enough to qualify as a handheld computer but too big to fit in a pocket. I wrote most of the 1600-page _Programming Python, 4th Edition_ on this (and boy are my fingers tired...). ./2010 Los Alamos 1.JPG.note==================================================== Scenes from a class at Los Alamos National _Lab_, New Mexico. Government research centers were big early adopters of Python. All told, I taught 10 classes at LANL here, 8 each at LLNL in California and JPL in Pasadena, 7 at Fermi Lab, and 4 at other NASA sites. Plus 2 at the NSA (but you didn't hear it from me). ./2010 Los Alamos 2.JPG.note==================================================== Closed at the time, but mostly about the bombs, probably. ./2010 Sarasota 1.JPG.note====================================================== On the beach in _Sarasota_, Florida—where I relocated in 2009 and began teaching public classes again. The public classes here didn't last very long, because students' expectations had been raised unrealistically by a flood of deceptive marketing for online training, and I didn't want to be part of the grifting. (Florida didn't last very long either, for reasons beyond the scope of this gallery.) ./2011 Bloomington.JPG.note===================================================== In a hotel during a tornado warning in _Bloomington_, Illinois. Is the sky supposed to be green like that? ./2011 Boxboro.JPG.note========================================================= A snow event in the Boston, Massachusetts area, which was bad enough to require modifying the class's schedule. I was living in Florida at the time; this seemed like the apocalypse. ./2011 Burlington.JPG.note====================================================== The scene of one of two classes held for Oracle in the Boston area. I also taught for Sun in Colorado before Oracle digested it (along with _Java_) ./2011 Chicago 1.JPG.note======================================================= The next four photos are from yet another _Chicago_ class: from the hotel in Streeterville, the classroom downtown, the river by Michigan Avenue, and the Field Museum on the lake. Over the years, I taught 17 classes in Chicago, second only to California's 52 (about 30 of which qualify as the Bay Area). ./2011 Chicago 4.JPG.note======================================================= The last of the Chicago-trip photos: the Field _Museum_—inspiring to a kid from the area decades ago, and an adult from afar decades later. ./2011 Hartsfield 2.JPG.note==================================================== A disturbing scene in Atlanta's Hartsfield _ airport_, site of many a plane change in this timeframe. (The one I deleted before this was even cornier.) ./2011 Los Alamos 1.JPG.note==================================================== Back at one of the classrooms at Los Alamos National _Lab_. A typical venue, though the lab-work machines were more secure than some. ./2011 PP4E Book.jpg.note======================================================= The 4th (and likely last) _Programming Python_: updated to cover Python 3.X only, and revised for new practice in application domains. Most of the 3E programs reappeared, but they were enhanced and ported to run on just 3.X. Given the focus on larger examples, dual 2.X/3.X coverage here would have been impractical. This book wound up very different from its 1996 _origin_, but it still retained the original conclusion that used the _Gilligan's Island_ TV _show_ as a metaphor for the software development field. Hey, it's still funny to me. ./2011 San Francisco.JPG.note=================================================== Two more classes from 2011: in San Francisco for Dolby, and the Washington, DC area for Harris. ./2012 Marysville.jpg.note====================================================== The last pictures from the 2010…2012 training restart_—Marysville in Ohio (for Scotts lawncare), and Volcanos from a plane above the Pacific Northwest (where I had relocated by this time). I stopped training altogether in late 2012 to focus fully on the _Learning Python_ update, and the follow-up _Pocket Reference_ revision. Training will briefly resume two years later in 2015 but end in full in _2016_. ./2012 Volcanos.JPG.note======================================================== Above the _PNW_ en route to one of this year's classes. That's Rainier, Adams, St Helens, and Hood; Baker is on the other side of the _plane_. ./2013 LP5E Book.jpg.note======================================================= The 5th Edition of _Learning Python_, the bestselling of all my books. I stopped training in 2012 to focus on this one exclusively for a year. This was something of a swan song for my Python writing career, incorporating the best of the content honed by the classes I had been teaching since 1997. The net result is a sort of training session in a book, and a still-popular alternative to the myriad of online options that arose in this era. I hope that's been as gratifying to readers as it has been to me. (Spoiler: see also _2024_). ./2013 Tree Justice.JPG.note==================================================== You have to read the __Teaching Python__ page to get this joke... ./2013 Vaio Z.jpg.note========================================================== The Sony _Vaio_ Z__—a Windows "Ultrabook" that was the main writing and coding machine for the _Learning Python, 5th Edition_ project. It ran Windows 7 and dual-boot Linux and was a stellar PC, though it required a repair after the 1600-page _LP5E_ project blew out its keyboard. Sony dropped their PC business shortly after this (in response to the Windows 8 _fiasco_, perhaps?), but the Vaio brand is back in business at this writing; see the web for info. ./2014 Frankenthon!.png.note==================================================== The artwork for a Python-changes page I started after the 5th _Learning Python_ was released. See the current page _here_ and the 2009 LP4E note _here_ for more background. To be clear, I've been one of Python's biggest proponents, still use it constantly, and can't stomach the idea of programming in other languages today. Most others seem based on the cynical assumption that programmers don't know what they're doing—and need to be hobbled with training wheels because of it. By contrast, Python remains more ally than obstacle. At the same time, Python has grown bloated, and its rapid morph is seen as counterproductive by many. The changes page calls this out in hopes of inspiring some discussion. I'm not a "hater" and don't mean to pick on anyone personally, but we stakeholders need to take a stand against the constant ego-driven churn now common in Python and the field at large. Breaking others' programs for the sake of personal whims is just plain rude. ./2014 Frigcal.png.note========================================================= The next two screenshots show two of the Python programs I started working on after the LP5E book project: a personal calendar/journal GUI and a content sync/backup system. This page's image captures __Frigcal__ on Windows. Both use tkinter for their GUIs; were ported to work on macOS, Linux, and Windows (and later, _Android_); and were shipped as source code, macOS app, and Windows and Linux executables. After decades of teaching the tools and techniques behind these, it was nice to be able to apply them to something useful. See this site's programs _page_ for more links and info. ./2014 Mergeall.png.note======================================================== The _Mergeall_ content sync/backup system, available at this _site_. I initially wrote this because I was tired of waiting for exhaustive PC-to-flashdrive copies to finish. It syncs content quickly by doing incremental propagations using timestamps: only changed items are ever updated. It eventually grew to accommodate a host of interoperability issues and multiple use cases, and work on Windows, macOS, Linux, and Android, in both command-line and GUI modes (see _2019_ for the Android GUI). Plus, it's open-source transparent, free to use and mod, and will never root through your stuff without your permission—intangibles that sharply differentiate it from most cloud-storage options. This stuff matters today. _