File: trnpix/_viewable/_batchnotes.txt

./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 
_<A HREF="https://learning-python.com/python-activities-history.html#1996">upstart_</A>.

This was the first of 15 books and 12k pages to come.
It begat both _<I>Learning Python_</I> and _<I>Python Pocket Reference_</I> 
(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, 
_<A HREF="https://wikipedia.org/wiki/Puerto_Rico">Puerto_&nbsp;Rico_</A>.

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 _<I>Python Pocket Reference_</I>—a 
details-only quick reference, which was derived from an appendix 
in the first Programming Python of _<A HREF="1996 First Pybook.png.html">1996_</A>.  
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 
_<A HREF="2014 PyRef5E book.jpg.html">2014_</A>'s 5th Edition.

./1999 LP1E Book.jpg.note=======================================================

The first _<I>Learning Python_</I>, based on Python 1.5.  

My parts covered the core language, and drew from both an 
appendix in the first _<I>Programming Python_</I> of 
_<A HREF="1996 First Pybook.png.html">1996_</A> 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 
_<A HREF="https://learning-python.com/redirect-frank_0701.html">editor_</A> 
wanted this book for people who would find the technically heavier 
_<I>Programming_</I> 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 
_<A HREF="https://learning-python.com/about-python.html#resources">heap_</A>.

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 
_<A HREF="…2025 LP6E Book.jpg.html">later_</A>.

./1999 OSCON 1 Tshirt.jpg.note==================================================

Swag from the first O'Reilly Open Source 
_<A HREF="https://www.oreilly.com/conferences/archive.html">Conference_</A> 
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 
_<A HREF="https://www.oreilly.com/conferences/from-laura-baldwin.html">2020_</A> 
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 
_<A HREF="https://wikipedia.org/wiki/Alameda,_California">Alameda_</A>, 
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 
_<A HREF="2006 NYC SpamAlot.JPG.html">2006_</A>).

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 
_<A HREF="https://wikipedia.org/wiki/Newmarket,_Suffolk">Newmarket_</A>, 
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 
_<A HREF="2001 Dublin 1.jpg.html">2001_</A>.

./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 
_<A HREF="https://wikipedia.org/wiki/Palm_IIIx">Palm_&nbsp;IIIx_</A>
like this one almost constantly in the early 2000s, 
before switching to
_<A HREF="2003%20Sony%20Clie.jpg.html">CLIÉs_</A> Palm PDAs, 
_<A HREF="2004%20Zaurus.JPG.html">Zaurus_</A> Linux PDAs, 
_<A HREF="2006%20Doused%20OQO.JPG.html">OQO_</A> Windows handhelds, 
and eventually
_<A HREF="2018%20Galaxy%20S8%2B.jpg.html">Android_</A> 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 
_<A HREF="https://learning-python.com/pp2e-updates.html#Ss">the_&nbsp;code_</A>.
Was 2.X ever really broken?

./2001 Colorado.jpg.note========================================================

I started teaching my own public classes at a hotel in 
_<A HREF="https://www.google.com/search?q=visit+colorado">Colorado_</A> 
this year.  These classes were for individuals who would fly in
to stay for the session_&mdash;a common model in the pre-pandemic world. 

Before this, I taught public Python classes in 
_<A HREF="https://wikipedia.org/wiki/Boulder,_Colorado">Boulder_</A>, Colorado 
arranged by TCPC, a Perl training company (yes, really).

./2001 Dublin 1.jpg.note========================================================

The first of two classes in 
_<A HREF="https://wikipedia.org/wiki/Dublin">Dublin_</A>, Ireland for a 
reinsurance company.  Fresh Guinness on Grafton 
_<A HREF="https://wikipedia.org/wiki/Grafton_Street">Street_</A>
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.

_<I>Travel sidebar_</I>: 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 _<I>Programming Python_</I> was a completely different
book from the _<A HREF="1996 First Pybook.png.html">first_</A>: 
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 _<I>Pocket Reference_</I> and 
_<I>Learning_</I>, 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 _<A HREF="https://www.oreilly.com/conferences/archive.html">OSCON_</A> 3, 
in _<A HREF="https://www.google.com/search?q=visit+san+diego">San_&nbsp;Diego_</A>. 
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 
_<A HREF="https://wikipedia.org/wiki/Barcelona">Barcelona_</A>, 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 _<A HREF="https://wikipedia.org/wiki/La_Rambla,_Barcelona">Ramblas_</A>.
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 
_<A HREF="https://wikipedia.org/wiki/Mexico_City">Mexico_&nbsp;City_</A> 
this year, but have no photos of the trip, regrettably.

./2002 Sony U1.jpg.note=========================================================

The Sony PCG _<A HREF="https://vaiolibrary.com/PCG-U">U1_</A>: 
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 _<A HREF="2009%20Vaio%20P.jpg.html">ahead_</A>, and the 
_<A HREF="https://wikipedia.org/wiki/Sony_Vaio_UX_Micro_PC">UX_</A>,
not in this gallery but comparable to the OQO 
_<A HREF="2006 Doused OQO.JPG.html">ahead_</A>.

./2003 Dublin 1.jpg.note========================================================

Back to _<A HREF="2001%20Dublin%201.jpg.html">Dublin_</A> 
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 
_<A HREF="https://wikipedia.org/wiki/Handycam">Handycam_</A> 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 _<I>Learning Python_</I> 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 _<A HREF="https://wikipedia.org/wiki/CLI%C3%89">CLIÉ_</A>: 
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 
_<A HREF="2000%20Palm%20IIIx.png.html">Palm_</A> 
PDA started showing its age and before the 
_<A HREF="2004%20Zaurus.JPG.html">Zaurus_</A> 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 
_<A HREF="https://wikipedia.org/wiki/Colorado">Colorado_</A>, 
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 
_<A HREF="https://www.nps.gov/romo/index.htm">Park_</A>, 
the setting for a later weeklong public 
_<A HREF="https://www.thecodingforums.com/threads/colorado-python-seminar-in-november.370487/">seminar_</A>.

./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  
_<A HREF="https://www.visitflorida.com/places-to-go/northwest/fort-walton-beach/">
Fort_&nbsp;Walton Beach_</A>), 
and California (while teaching at an HP site in 
_<A HREF="https://wikipedia.org/wiki/San_Diego">
San_&nbsp;Diego_</A>). 
The latter was the only one of the eight San Diego classes not taught for 
_<A HREF="https://wikipedia.org/wiki/Qualcomm">Qualcomm_</A>.

./2004 Zaurus.JPG.note==========================================================

The Sharp _<A HREF="https://wikipedia.org/wiki/Sharp_Zaurus">Zaurus_</A>
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 
_<A HREF="2006%20Doused%20OQO.JPG.html">2006_</A>).

./2005 Georgia BNR.JPG.note=====================================================

Two photos from 2005 training trips are up next: one of the 
four sessions at Big Nerd 
_<A HREF="https://www.linkedin.com/company/bignerdranch">Ranch_</A> 
(focus-enabling seminars held in the 
Georgia woods), and another Puerto Rico trip (a return engagement 
for the _<A HREF="1998 Puerto Rico 1.jpg.html">1998_</A> client).

./2005 St Augustine.JPG.note====================================================

Another 2005 training trip: near St Augustine, 
_<A HREF="https://wikipedia.org/wiki/St._Augustine,_Florida">Florida_</A>, 
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 
_<A HREF="https://learning-python.com/python-activities-history.html#2005">_<I>
Teaching Python_</I>_</A> 
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 
_<A HREF="https://visitchicago.com/">Chicago_</A>.

./2006 Doused OQO.JPG.note======================================================

The _<A HREF="https://wikipedia.org/wiki/OQO">OQO_</A>, 
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 
_<A HREF="2008%20Seagate%20OQO%2002.jpg.html">2008_</A>).  
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 
_<A HREF="https://www.wem.ca/">mall_</A> in 
_<A HREF="https://wikipedia.org/wiki/Edmonton">Edmonton_</A>, 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 _<A HREF="2006 Doused OQO.JPG.html">OQO_</A> 
was baptized by a Guinness, at a pub nearby.

./2006 London 2.JPG.note========================================================

St Paul's from the Millennium Bridge (see also 
_<A HREF="2009%20London%202.JPG.html">2009_</A>).

./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 
_<A HREF="https://wikipedia.org/wiki/Googleplex">Googleplex_</A> 
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 _<I>Programming Python_</I>s, which expanded 
its applications materials, and covered Python 2.5_&mdash;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 _<I>Learning Python_</I>.  

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 
_<A HREF="https://wikipedia.org/wiki/OQO">OQO_</A> model 02 
(after the 01 suffered a frothy 
_<A HREF="2006%20Doused%20OQO.JPG.html">fate_</A>).

_<A HREF="https://wikipedia.org/wiki/Seagate_Technology">Seagate_</A> 
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 _<A HREF="2009%20Dublin%201.JPG.html">2009_</A>.

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 
_<A HREF="https://wikipedia.org/wiki/St_Patrick's_Cathedral,_Dublin">Dublin_</A>.
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 
_<A HREF="2012%20Marysville.jpg.html">2012_</A>.   
It was too soon to retire, but it was also too soon to know.

./2009 LP4E Book.jpg.note=======================================================

The 4th _<I>Learning Python_</I>, for Python 3.X bifurcation.

This, and the 4th _<I>Pocket Reference_</I>, 
were put out to cover the new and backward-incompatible Python 3.X,
released the prior year.  Much of this edition's 
_<A HREF="https://learning-python.com/about-lp.html">growth_</A>
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 
_<A HREF="https://wikipedia.org/wiki/Big_Ben">tower_</A>.

./2009 London 2.JPG.note========================================================

Atop _<A HREF="https://wikipedia.org/wiki/St_Paul's_Cathedral">St_&nbsp;Paul's_</A>
in London, after climbing the stairs in a jetlag stupor.

./2009 London 3.JPG.note========================================================

At the British _<A HREF="https://www.britishmuseum.org/">Museum_</A>.  
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 _<A HREF="https://wikipedia.org/wiki/Norman_Conquest">Conquest_</A>.
Definitely creepier at night.

./2009 London 5.JPG.note========================================================

The London _<A HREF="https://wikipedia.org/wiki/London_Eye">eye_</A>.
This seems as out of place as type hints in Python 
_<A HREF="https://learning-python.com/python-changes-2014-plus.html#types35">3.X_</A>...

./2009 Vaio P.jpg.note==========================================================

Sony's _<A HREF="https://wikipedia.org/wiki/Sony_Vaio_P_series">Vaio_&nbsp;P_</A>: 
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 _<I>Programming Python, 4th Edition_</I> on this 
(and boy are my fingers tired...).

./2010 Los Alamos 1.JPG.note====================================================

Scenes from a class at Los Alamos National 
_<A HREF="https://wikipedia.org/wiki/Los_Alamos_National_Laboratory">Lab_</A>, 
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 
_<A HREF="https://wikipedia.org/wiki/Sarasota,_Florida">Sarasota_</A>, 
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 
_<A HREF="https://wikipedia.org/wiki/Bloomington,_Illinois">Bloomington_</A>, 
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 _<A HREF="https://wikipedia.org/wiki/Sun_Microsystems">Java_</A>)

./2011 Chicago 1.JPG.note=======================================================

The next four photos are from yet another 
_<A HREF="https://wikipedia.org/wiki/Chicago">Chicago_</A> 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 _<A HREF="https://www.fieldmuseum.org/">Museum_</A>—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 
_<A HREF="https://wikipedia.org/wiki/Hartsfield%E2%80%93Jackson_Atlanta_International_Airport">
airport_</A>,
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 
_<A HREF="https://www.lanl.gov/">Lab_</A>.
A typical venue, though the lab-work machines were
more secure than some.

./2011 PP4E Book.jpg.note=======================================================

The 4th (and likely last) _<I>Programming Python_</I>: 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 
_<A HREF="1996 First Pybook.png.html">origin_</A>, 
but it still retained the original conclusion that used 
the _<I>Gilligan's Island_</I> TV 
_<A HREF="https://wikipedia.org/wiki/Gilligan%27s_Island">show_</A>
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_&mdash;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 
_<I>Learning Python_</I> update, and the follow-up _<I>Pocket Reference_</I>
revision.  Training will briefly resume two years later in 2015 but end 
in full in _<A HREF="2015%20Seattle.JPG.html">2016_</A>.

./2012 Volcanos.JPG.note========================================================

Above the _<A href="https://wikipedia.org/wiki/Pacific_Northwest">PNW_</A>
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 
_<A href="https://wikipedia.org/wiki/Cascade_Volcanoes">plane_</A>.

./2013 LP5E Book.jpg.note=======================================================

The 5th Edition of _<I>Learning Python_</I>, 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 _<A HREF="…2025 LP6E Book.jpg.html">2024_</A>).

./2013 Tree Justice.JPG.note====================================================

You have to read the 
_<A HREF="https://learning-python.com/python-activities-history.html#2015">_<I>Teaching Python_</I>_</A> 
page to get this joke...

./2013 Vaio Z.jpg.note==========================================================

The Sony 
_<A HREF="https://wikipedia.org/wiki/Sony_Vaio_Z_series">Vaio_&nbsp;Z_</A>_&mdash;a
Windows "Ultrabook" that was the main writing and coding machine for 
the _<I>Learning Python, 5th Edition_</I> project.  It ran Windows 7 and 
dual-boot Linux and was a stellar PC, though it required a repair after 
the 1600-page _<A HREF="2013 LP5E Book.jpg.html">LP5E_</A> project blew out 
its keyboard. 

Sony dropped their PC business shortly after this (in response to the 
Windows 8 
_<A HREF="https://google.com/search?q=windows+8+fiasco">fiasco_</A>, 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 
_<I>Learning Python_</I> was released.  See the current page
_<A HREF="https://learning-python.com/python-changes-2014-plus.html">here_</A> 
and the 2009 LP4E note 
_<A HREF="2009 LP4E Book.jpg.html">here_</A> 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 
_<A HREF="https://learning-python.com/frigcal.html">_<I>Frigcal_</I>_</A>
on Windows.

Both use tkinter for their GUIs; were ported to work on macOS, 
Linux, and Windows (and later, 
_<A HREF="2019%20PyAndroid%201.jpg.html">Android_</A>); 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 
_<A HREF="https://learning-python.com/programs.html">page_</A> 
for more links and info.

./2014 Mergeall.png.note========================================================

The _<I>Mergeall_</I> content sync/backup system, available at this
_<A HREF="https://learning-python.com/mergeall.html">site_</A>.

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 _<A HREF="2019%20PyAndroid%202.jpg.html">2019_</A> 
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.

_<HR>
_<I>2023 update_</I>: also watch for the Android+PCs standalone app 
_<A HREF="2023%20Sync%20App.jpg.html">ahead_</A>; it's Mergeall 
with a Kivy GUI face-lift to work around USB and shared-storage
constraints in later Androids.

./2014 PyRef5E book.jpg.note====================================================

The 5th Edition of _<I>Python Pocket Reference_</I>.  At 260 pages, it's
much more useful than its 80-page _<A HREF="1998 PyRef1E Book.jpg.html">genesis_</A>,
and the "Pocket" still applies in the era of Pro, Max, and Ultra phones.

People with lots of language experience may be able to pick up Python 
with this book alone, though that's not the audience that arose 
with the explosion of tech.  Both this and LP5E also cover the majority
of Python in common use today, but not the esoteric tweaks added since 
2014, like type hints and coroutines; most code doesn't need to care.

./2015 Florida.JPG.note=========================================================

Now we're in 2015 after the 5th Edition books were wrapped
up, and a second training restart is afoot.  This and the next 
are from a class held at NASA's Kennedy Space 
_<A HREF="https://www.nasa.gov/kennedy/">Center_</A> in Florida, 
for structural engineers.

./2015 Seattle.JPG.note=========================================================

The second of three classes in 2015, for a group of network admins
on the University of Washington campus in 
_<A HREF="https://wikipedia.org/wiki/Seattle">Seattle_</A>.  There were just
three classes this year; the last, sans photos, was in 
_<A HREF="https://wikipedia.org/wiki/Vancouver">Vancouver_</A>, Canada.

And that brings us to the end of the training thread of this gallery.
The world had changed while I wasn't watching, and I wound up 
ending my training business next year in 2016—twenty years after 
its unplanned and unsolicited start.  For more on the move, 
see the _<I>The Plumage Don't Enter into It_</I> in 
_<A HREF="https://learning-python.com/python-activities-history.html#2016">
_<I>Teaching_&nbsp;Python_</I>_</A>.

./2016 MacBook Pro.jpg.note=====================================================

_<style>.literal {font-family: courier; color: #eee;}_</style>
The _<A HREF="https://wikipedia.org/wiki/MacBook_Pro">MacBook_&nbsp;Pro_</A>:
a workstation-level PC that I switched to 
after decades on _<A HREF="2013 Vaio Z.jpg.html">Windows_</A> 
for the software development that I was starting to do on a
pro-bono/hobby basis.

Windows was going down some dark paths at this point (including
mandatory updates, antivirus, and marketing), and the Macintosh 
had all the tools that an old Unix developer craves.  Well, that,  
and draconian app-store 
_<A HREF="https://learning-python.com/macos-app-installs-2025/_thumbspage/1-frigcal-open.png.html">
biases_</A>,
rude _<span class=literal>._*_</span> 
AppleDouble files on exFAT drives
and _<span class=literal>.DS_Store_</span> files
_<A HREF="https://learning-python.com/mergeall-products/unzipped/UserGuide.html#cruft">
everywhere_</A>, 
and enough proprietary nonsense and frequent change to keep it interesting.

Still, Unix coherence, a real Bash command line, and Office made macOS
a net win.  Windows storage was too slow and its UI was nowhere near as 
nice_&mdash;though it's adopted many of macOS's UI ideas since then; and 
Linux didn't run Office and was too personality based_&mdash;one really
shouldn't have to rely on online gossip to use a computer.

_<HR>
_<I>2024 Update_</I>: Linux can also be used within Windows today thanks 
to WSL2, and this nearly negates its lack of Office.  At latest look,
though, WSL2's cross-platform storage access was still quite slow, and
its GUI support was still haphazard.  See the vetting doc 
_<A HREF="https://quixotely.com/PC-Phone%20USB%20Sync/Tech-Notes.html#n9">here_</A>.

./2017 PyEdit.png.note==========================================================

The next three screenshots are from updates to some
Python/tkinter programs that originally appeared in 
_<A HREF="https://learning-python.com/about-pp4e.html">_<I>Programming_&nbsp;Python_</I>_</A>. 

Now that training and writing had wound down, I was 
finally able to put some time into these and make them
more useful.  In the process, they were also ported 
to macOS (and Android later) and frozen into standalone
apps/executables.  I use 
_<A HREF="https://learning-python.com/pyedit.html">_<I>PyEdit_</I>_</A> and
_<A HREF="https://learning-python.com/pymailgui.html">_<I>PyMailGUI_</I>_</A>
as my go-to text editor and email client, respectively; 
_<A HREF="https://learning-python.com/pygadgets.html">_<I>PyGadgets_</I>_</A> 
is mostly just for fun, though its calculator sees regular 
action too.  You can find more free Python programs  
_<A HREF="https://learning-python.com/programs.html">here_</A>.

./2018 Books Amazon.png.note====================================================

The books on Amazon, in 2018.  

Caveat: Amazon sales don't mean as much today as they once did, 
given the rise of ebooks, online media, and a multitude of Python 
resources, along with Amazon's mercurial policies. 
It was once a bigger deal. 

Around this time, these books'
_<A HREF="https://oreilly.com">publisher_</A> 
was also morphing into an online-training company, 
and its web presence grew more focused on subscriptions 
than books.  It still kept making books, though, and my 
sales continued to be as strong as ever (thank you, 
discriminating customers).  

The publisher also sadly turned to sales of personal 
information and customer access—one of the reasons that my 
titles' current editions may be their last (but stay tuned 
for 2025's surprise; readers matter too).

./2018 But More Hats.jpg.note===================================================

A scene from the tech-book publishing experience.

Also in this timeframe, my books' 
_<A HREF="https://www.oreilly.com/">publisher_</A> started dropping the 
ball on sales support.  This included promotion of infringing titles 
and competing products, runs on free and DRM-free ebooks, 
months-long inventory outages, uncollected translation revenues, 
and more.  The publisher-follies page in _<I>Teaching Python_</I>'s 2015 
_<A HREF="https://learning-python.com/python-activities-history.html#2015">coverage_</A>
dishes all the sordid details.

Many of these issues were corrected over time, but some fell on deaf ears, 
and at least one was addressed by sending me more author hats in lieu of 
resolution or compensation.  Moreover, the company's focus shift from books
to online-media subscriptions, corporate training budgets, 
and customer-info/access sales may be permanent.  Content creators 
and consumers should both care.

_<HR>
_<I>2024 update_</I>: the publisher-follies page was eventually dropped because
it grew dated and moot.  This publisher is a different company today
and hardly accountable for the now-distant past.  Although it's now almost
impossible to find anything about books at its customer-facing website, 
it still quietly produces them in ebook, online, and print forms, 
the latter of which is sold on 
_<A HREF="https://www.amazon.com/Learning-Python-Powerful-Object-Oriented-Programming-dp-1098171306/dp/1098171306">Amazon_</A>.

Per the updated sidebar in _<I>Teaching Python_</I>'s 
_<A HREF="https://learning-python.com/python-activities-history.html#2015">2015_</A>, 
AI is a new concern for authors, though this publisher's AI products may be 
fairer to content producers than some, and the world will likely grow tired 
of the domain's exaggerated claims soon.

./2018 Galaxy S8+.jpg.note======================================================

Thus began my foray into the Android world: the Galaxy 
_<A HREF="https://wikipedia.org/wiki/Samsung_Galaxy_S8">S8+_</A>, 
which I picked up to test the mobile-friendly conversion of this page's 
website (see the next three images).

I also experimented with Python programming on this device using
the apps available, but it was fairly horrifying for an open-source
Unix developer: proprietary tools and device lockdowns were
the norm (and still are, regrettably).

The S8+ also ran Android Nougat, which botched file modification times
so badly that sync tools like Mergeall were 
_<A HREF="https://learning-python.com/mergeall-android-scripts/_README.html#toc21">unusable_</A>.
How in the world did it get away with that?  I got an iPod for mobile testing 
too, but nothing more in Apple's iWhatever realm; iOS is so closed that it's a 
full non-starter for POSIX programs.  More at 2019's 
_<A HREF="2019 Galaxy Note9.jpg.html">Note_&nbsp;9_</A> and 2021's
_<A HREF="2021 Note20 Fold3.jpg.html">Fold_</A>.

./2018 Web Gadgets.jpg.note=====================================================

Counterclockwise from the top: a MacBook, S8+, J7, and iPod_&mdash;now 
museum-worthy all.

The portability of the web is stunning... as long as you're 
willing to spend sizeable chunks of your life wrestling 
with incompatible browser implementations of a fluid 
standard, just to get pages to work similarly everywhere
until a browser update breaks them.  Sans the installs, 
this doesn't seem a whole lot better than traditional
GUI toolkits, does it?

./2018 Web Stew.png.note========================================================

A page from the _<I>thumbspage_</I> image-gallery builder 
used to create the gallery you're viewing.  

I coded this Python (plus HTML, CSS, and JavaScript) program
originally in 2016 because I needed it for my website; browser 
image views were too primitive and variable.  Since then, it's 
grown more sophisticated, with image scaling, slideshows, 
touch swipes, keypresses, and notes like this, but it has 
retained its basic static model for simplicity.  

See thumbspage's
_<A HREF="https://learning-python.com/thumbspage.html">web_&nbsp;page_</A>
and 2019's 
_<A HREF="2020 More Stew 1.jpg.html">update_</A>
for more info.  This also was an excuse to play with JavaScript, 
which is so much like Python that parts of it seem copied 
(because they probably were).

./2019 Chinese LP5E.jpg.note====================================================

A Chinese translation of LP5E, some 7 years after 
it was _<A HREF="2013 LP5E Book.jpg.html">written_</A>.

./2019 Galaxy Note9.jpg.note====================================================

The Galaxy _<A HREF="https://wikipedia.org/wiki/Samsung_Galaxy_Note">Note_&nbsp;9_</A>. 
I moved to this after the 
_<A HREF="2018 Galaxy S8+.jpg.html">S8+_</A> proved too limiting, and before a 
Note 10+ (not pictured here) and other Android gadgets 
(_<A HREF="2021 Note20 Fold3.jpg.html">ahead_</A>).  

The Note 9 ran Android Oreo (a.k.a. 8), 
which finally fixed its modification timestamps, making 
_<A HREF="https://learning-python.com/mergeall.html">_<I>Mergeall_</I>_</A>
usable for on-phone content syncs.  Mergeall first was ported for command-line
use in the Termux app, and its GUI later came online thanks to the
glitchy but impressive tkinter support in the Pydroid 3 app
(which later succumbed to Android morph: see the next note).

Both the script and GUI worked 
_<A HREF="https://learning-python.com/mergeall-android-scripts/_README.html">well_</A> 
on Android for content syncs by USB, on Oreo, Pie, and 10.  
Regrettably, Android 11 would later lock POSIX programs out 
of USB access and slow shared storage to a crawl, and Android 12 
would sprout a draconian process killer which can break Python 
programs in general (watch for the notes in 2021
_<A HREF="2021 Android 11.png.html">here_</A> and
_<A HREF="2021 Android 12.png.html">here_</A>).  
Android may be based on Linux, but
it's been gutted of most of the developer freedom.

To be fair, Android is still more open than iOS today—you 
can sideload apps outside the store, and there is a real 
filesystem—but it's gaining parity with each release.  
Security kills fun (and enables evil).

./2019 PyAndroid 1.jpg.note=====================================================

The next three shots are assorted Python tkinter GUIs running 
on Android, in the _<I>Pydroid 3_</I> app: 
_<A HREF="https://learning-python.com/frigcal.html">_<I>Frigcal_</I>_</A>, 
_<A HREF="https://learning-python.com/mergeall.html">_<I>Mergeall_</I>_</A>, 
and a _<I>Programming Python_</I> book 
_<A HREF="https://learning-python.com/about-pp.html">example_</A>.

It's amazing to see desktop GUIs spring to life on a phone like 
this, though they generally require a few code tweaks to get there, 
don't support multiple windows very well, and must be run on a
freemium app that flashes obnoxious fullscreen ads unless you pay a 
_<A HREF="https://learning-python.com/mergeall-android-scripts/_README.html#toc86">fee_</A>.
It's worth the modest fee, but the policy comes off as quite rude,
especially given that the app is largely a package of open-source code.

See this site's Tkinter-on-Android
_<A HREF="https://learning-python.com/using-tkinter-programs-on-android.html">guide_</A>
for more info.
In principle, tkinter could also be bundled into standalone apps, 
but it's a very deep slog, and requires substantial Java—a punt for now.

_<HR>
_<I>2023 updates_</I>: 
In 2023, Pydroid 3 temporarily lost utility when it adopted 
Android 11+ scoped 
_<A HREF="https://www.google.com/search?q=android+scoped+storage">storage_</A>. 
Its tkinter still worked, but the code it ran could access only 
Pydroid 3-specific folders, which made content sharing tedious.  
This was eventually repaired but is something of a lesson about 
pandering to vendor whims.  Read more at this site's 
_<A HREF="https://learning-python.com/pydroid3-loses-storage-access.html">coverage_</A>; 
an Android casualty to be sure, but Play-store revenue seems a likely cohort.

Also in 2023, _<I>PC-Phone USB Sync_</I> made the above concerns moot 
by using Python, Kivy, and Buildozer to build a standalone app that avoids
Pydroid 3 dependence in full and runs on both Android and PCs from a common 
code base.  Stay tuned for the Android-thread wrap-up in 
_<A HREF="2023 Sync App.jpg.html">2023_</A>.

./2020 More Stew 1.jpg.note=====================================================

_<I>_<A HREF="http://learning-python.com/thumbspage.html">thumbspage_</A>_</I>
grew info popups, slideshows, and one-page fullscreen 
this year, and touch swipes and notes in 2021 and 2022.  But 
you already know how the notes look, eh?  

Its 3.0 release to come in 2025 will add keyboard shortcuts, embedded HTML tags in 
notes, explicit ordering and captions, automatic handling of gallery wraparounds,
raw-view messages, swipe gestures on touchpads and mice too, and a provisional dark 
mode.  See its web page for later details; this gallery is thumbspage's initial and
primary use case and demos most of its tools.

./2020 More Stew 2.jpg.note=====================================================

One-page JavaScript fullscreen via the Full button, on Android Chrome.
This works as a sort of zoom, but desktop browsers, Opera on Android, 
and even Safari on iOS have better fullscreen options that span multiple 
pages.  Hey Chrome: if you're going to dominate Android market share, 
could we at least get something similar soon?

./2020 Ziptools.png.note========================================================

2020's standalone _<I>ziptools_</I> is an enhanced-utility wrapper 
around Python's standard zipfile module, which adds UTC timestamps, 
symlink support, modtime propagation, and more; see its main 
_<A HREF="http:/learning-python.com/ziptools.html">web_&nbsp;page_</A>.
This also was born of necessity: content management 
requires cross-platform zipfile tools that do the 
right thing everywhere (even on Android).

./2021 Android 11.png.note======================================================

Tests showing the speed downgrade of shared storage in Android 11.
It's much worse than shown here for some operations: 100x slower
is not uncommon, and deletions are so slow that a phone reset
may be more practical for large folders.  

This and the removal of USB access for POSIX programs (like Python) 
make Android difficult to use for content sync tools (like Mergeall).
Along with Samsung's dropping of microSD cards for removable storage,
Android phones are becoming content islands on a par with iOS.  
While vendor goals are unknown, cloud providers and content snoopers
seem the likely winners here (and users seem the likely losers). 

This thread continues in Android 12 on the next image in this 
gallery.  See also this site's Mergeall-focused Android 11 updates  
_<A HREF="http://learning-python.com/mergeall-android11-updates.html#asb5">page_</A>
for the full story on these Android regressions.

_<HR>
_<I>2021 update_</I>: to work around 11's hurdles, a system of scripts was developed 
later this year to apply content syncs indirectly using batched and zipped changes; 
see 
_<I>_<A HREF="https://learning-python.com/android-deltas-sync/_README.html">Android Deltas Sync_</A>_</I>.
This works well, though it's not GUI based, and it may require
additional steps on Android 12 (see the next shot).

_<I>2023 update_</I>: the prior update's scripts were eventually superseded by a 
full standalone Android app that uses extra permissions to regain storage access 
on Android—and also happens to work the same on PCs using the same Python code.  See 
_<I>_<A HREF="https://quixotely.com/PC-Phone%20USB%20Sync/">PC-Phone USB Sync_</A>_</I>
and the next image's note for the sequel.

./2021 Android 12.png.note======================================================

More Android fun, one year on.

As captured here on a Pixel 4a, Android 12 has the same speed 
and access issues as Android 11.  That's not exactly surprising,
but 12 also adds a "phantom" process killer which culls child processes
at arbitrary points after a cross-phone limit of 32 has been reached. 
While the risk varies per usage (and my phones have never had a kill), 
this can break apps like Termux and the Python scripts they run, 
and it may impact millions of users.  More info
_<A HREF="https://learning-python.com/android-deltas-sync/_README.html#12phantomprocesskiller">here_</A>.

Luckily, adb commands in 12 and 12L along with a new Developer setting 
to appear in 13 can work around this.  But the process killer was 
rudely added in 12 with no notice whatsoever, and a work-around is 
not the same as a reversal.  It almost seems like Android no longer
cares about "power" users, but only for naive and sadly gullible 
content consumers who are perfectly happy to carry around toyish 
phones that double as data vacuums and billboards.  Go figure...

See the 
_<A HREF="https://www.google.com/search?q=android+12+process+killer">web_</A>
for more background.  This hopefully isn't the death knell for Python on Android, 
though it is a precarious platform.  iOS is closed too, but at least it's 
honest about it.

_<HR>
_<I>2024 updates_</I>: as later demoed by 
_<A HREF="https://quixotely.com/PC-Phone%20USB%20Sync/">this_</A> Python-coded
app, shared storage and USB drives _<I>can_</I> still be accessed with POSIX 
file tools on Android by obtaining its All Files Access 
_<A HREF="https://learning-python.com/mergeall-android11-updates.html#allfilesaccess">permission_</A>.
This requires extra proprietary code and may keep some apps off the Play 
store, but it's a one-time step.  Full apps can also sidestep process kills 
with Android API calls that manage services.

As of Android 15, however, storage accessed this way remains as slow as 
noted here.  This reflects Android 11's 
_<A HREF="https://www.google.com/search?q=android+11+fuse+is+slow">FUSE_</A>
choices as well as the extra code layers it uses to limit access (e.g., the 
_<A HREF="https://www.google.com/search?q=storage+access+framework+is+slow">SAF_</A>).  
Four years on, the
sloth of these remains unchecked, and Android's performance profile 
favors a closed sandbox model that severs the cross-app dataflow at 
the heart of content 
_<A HREF="https://learning-python.com/android-deltas-sync/_README.html#Closing%20Thoughts">creation_</A>.

On the upside, some phones finally have a 
switch in Developer options to disable the child-process limit.  While 
welcome, this toggle's obscurity also reflects the low esteem in which Android 
holds its users.  Sacrificing functionality and performance in the name of 
an arguably dubious "safety" leaves us with phones that are useless for
all but the trivial and mundane.  Some of us still care.

./2021 Note20 Fold3.jpg.note====================================================

More gadget fun: the Galaxy Z 
_<A HREF="https://wikipedia.org/wiki/Samsung_Galaxy_Z_series">Fold3_</A> 
(right) next to a Galaxy 
_<A HREF="https://wikipedia.org/wiki/Samsung_Galaxy_Note_20">Note20_</A> Ultra.

The 6.9" Note20 was rolled back to Android 10 after 11 took away USB 
_<A HREF="https://learning-python.com/mergeall-android11-updates.html#android11bydesign">access_</A>, 
and so it shall remain until its battery gives up the ghost.
The 7.6" Fold3 shipped with Android 11 initially but auto-updated
to 12 a few months later, so it's been a test machine for both.
From a hardware perspective, the Fold is enough to excite even the most 
jaded of gadget geeks: it unfolds from phone to mini tablet, and the
seam at the fold is hardly noticeable with actual use.

When unfolded, the Fold3 is _<I>almost_</I> a PC stand-in, especially 
with Bluetooth keyboard and mouse, and screen casting or Dex; and 
_<I>nearly_</I> replaces what was lost when the OQO died (see 
_<A HREF="2006 Doused OQO.JPG.html">2006_</A> and 
_<A HREF="2008 Seagate OQO 02.jpg.html">2008_</A>).
Now if it would only get a real Excel with VBA, and an Android that stops 
locking down devices for whatever point-of-control agendas Google may want to 
_<A HREF="https://learning-python.com/android-deltas-sync/_README.html#Closing%20Thoughts">push_</A>.

Cynical, perhaps, but it's tough to watch yet 
another system being pushed into the might-have-been column by
corporate greed and/or dysfunction.  Of course, there's always
the Fold4...

(See also the Fold5 photo 
_<A HREF="2023 Sync App.jpg.html">ahead_</A>; the gadget show goes on.)

./2022 Bookstore.jpg.note=======================================================

Seen at a Barnes & Noble bookstore in summer 2022.
Still warping the shelves after 26 years.

./2023 Sync App.jpg.note========================================================

2023's _<I>PC-Phone_&nbsp;USB_&nbsp;Sync_</I> app, running on an Android-13 
_<A HREF="https://wikipedia.org/wiki/Samsung_Galaxy_Z_Fold_5">Fold5_</A>.

This portable content backup/sync program runs on Android phones and 
_<A HREF="https://quixotely.com/PC-Phone%20USB%20Sync/+screenshots/Android/Tablet-Android13/_thumbspage/tx-landscape-main.jpg.html">tablets_</A>, 
as well as Windows, macOS, and Linux 
_<A HREF="https://quixotely.com/PC-Phone%20USB%20Sync/+screenshots/macOS/_thumbspage/20-main-picks.png.html">PCs_</A>.  
It can be used to both backup folders and sync them 
between a mix of devices.  By using USB drives for 
propagating changes, it avoids the slowness and privacy 
issues inherent in clouds.

This app is the culmination of a five-year content-processing 
odyssey on Android and a decade-long sync saga in general.
It's largely the open-source 
_<A HREF="https://learning-python.com/mergeall.html">_<I>Mergeall_</I>_</A> 
system under the hood, with a new portable UI coded in 
_<A HREF="https://kivy.org/">Kivy_</A>
to support the Android app.  Products are built using 
_<A HREF="https://buildozer.readthedocs.io/en/latest/">Buildozer_</A>
for Android and 
_<A HREF="https://pyinstaller.org/en/stable/">PyInstaller_</A> 
for PCs.

On Android, it uses permissions available to standalone 
apps to regain access to USB drives and shared storage lost 
in Android 11.  On all platforms, it's coded entirely in
portable 
_<A HREF="https://learning-python.com/about-python.html">Python_</A>, 
and uses traditional POSIX file-path tools to process 
content—despite Android's self-defeating efforts to deprecate 
all such interoperable 
_<A HREF="https://learning-python.com/mergeall-android11-updates.html#asb4">things_</A>.

The Android app was initially paid, partly to fund visibility 
on the payola that is Play, and partly because free generally 
implies ad farms or junk on that platform.  The PC apps/executables 
are free, and there's a free trial Android app for test-drives.

Visit the app's 
_<A HREF="https://quixotely.com/PC-Phone USB Sync">website_</A>
for screenshots, videos, free downloads, and the full story, 
and keep your digital property safe from the many dark agendas out there.  

_<HR>
_<I>2024 update_</I>: this app was eventually made free on Android, too, 
per the "Why Free?" button in the news post on 
_<A HREF="https://quixotely.com/PC-Phone%20USB%20Sync/News.html#1.3.0">quixotely.com_</A>.
Please enjoy the app on all your devices, and help spread the 
word that storing personal digital property on clouds 
is inherently perilous and needlessly slow.

./You are here.png.note=========================================================

So there you have it: some images and anecdotes
from my tenure as a Python trainer, writer, and developer.  
I'm writing most of these image notes in 2022, partly as a demo 
for a new gallery-builder feature (see 
_<A HREF="https://learning-python.com/thumbspage.html">_<I>thumbspage_</I>_</A>)
but also to provide more of the backstory.  Mine was just one 
computer-science career, of course, but it played
out, as the saying goes, in interesting times.

In the end, Python was a crusade for me, and I had an exciting 
quarter-century ride for which I'll always be grateful.  
But I'm largely retired today, and the Python advocacy and education
banners must be picked up by others.  If that includes you, I wish 
you all the best, and hope that some of the perspectives I've shared 
from my journey may prove useful to you on yours.

See _<A HREF="https://learning-python.com/python-activities-history.html">
_<I>Teaching Python_</I>_</A> for more tales from the Python road.
And as always, code well.

./…2025 LP6E Book.jpg.note======================================================

But wait, there's an encore...  

In 2024, I came out of "retirement" (which never really took with me) 
to update my most successful book, _<I>Learning Python_</I>, for the 
last decade of changes in the Python programming language.  This 6th Edition 
will be out in early 2025, but you can read about it now  
_<A HREF="https://learning-python.com/about-lp6e.html">here_</A>.  

TL;DR_&mdash;it's slimmer, more gender neutral, and Python-3.X only, and 
two advanced chapters have moved online for print because this internet 
thing might just take off after all. It's also not silent about questionable
changes made to Python over the last decade; this stuff still 
_<A HREF="2014 Frankenthon!.png.html">matters_</A>.

Despite its three-decade 
_<A HREF="https://learning-python.com/about-pp1e.html">lineage_</A>, 
this book is being released to a virtually new publisher, audience, and world, 
and I'm excited to be able to help the next wave of Python learners.  
I'd call this a surprise ending, but endings seem about as elusive as 
retirements to those easily bored.



[Home page] Books Code Blog Python Author Train Find ©M.Lutz