The Artima Developer Community
Sponsored Link

Weblogs Forum
Looking for Memories of Python Old-Timers

54 replies on 4 pages. Most recent reply: Jan 3, 2008 9:50 PM by Sharmila Gopirajan Sivakumar

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 54 replies on 4 pages [ « | 1 2 3 4 | » ]
Carl Cerecke

Posts: 1
Nickname: cdc
Registered: May, 2006

Re: Looking for Memories of Python Old-Timers Posted: May 23, 2006 8:54 PM
Reply to this message Reply
Advertisement
The year was about 1999. I had been working on a C program for my PhD thesis that had some very complicated data structures. Due to the nature of the research, every few weeks I would discover some new special case or limitation requiring a tweak here or there. After 6 months I had a big ball of very complex mud that still didn't work correctly. I couldn't go forward. A rewrite was the only option. I'd heard good things about python, and decided the time hit of learning a new language was worth the risk. 6 weeks later, I had learned python, and finished the program. It would have taken me at least another 6 months in C. Python, on the other hand, was easy to learn, easy to read, and easy to change. I was hooked.

Roberto Lopez-Gulliver

Posts: 1
Nickname: rlgulliver
Registered: May, 2006

Re: Looking for Memories of Python Old-Timers Posted: May 23, 2006 11:56 PM
Reply to this message Reply
Back in 1995, my colleague and friend Perry Stoll (another python-er)
introduced me to Python. My programing background was C/C++. At the
time I liked the language but there were no easy ways to extend
it. Once I discovered SWIG, in 1996-97, I immediately switched to
Python (and regreted not doing before!)

I was(am) working on Computer Graphics and VR and decided to make
python bindings for Sense8's WorldToolkit (www.sense8.com) a C/C++
library for 3D/VR applications. You can still find the bindings here :

http://www.mic.atr.co.jp/~gulliver/PyWTK/www
http://www.swig.org/projects.html

Since then I've been developing with python for almost __all__ my
needs.

Why did I fall in love with Python? Its clean syntax and powerful
data structures (lists, dicts). There is no mental effort translating
my pseudo-code (written on a napkin during dinner) and the actual python
code that simply works!

Almost all the things I do (CG / VR) are a joy once you finished
the project. Before python, programming(in C) was hell but the results were
a joy. After starting using python, programming(in Python) and the
results are __both__ a real joy!

Guido, thanks for all these years of joy!

Paulo Pinto

Posts: 4
Nickname: pjmlp
Registered: May, 2006

Re: Looking for Memories of Python Old-Timers Posted: May 24, 2006 7:48 AM
Reply to this message Reply
I started looking to Python somewhere around 1997 when there were a bunch of articles on DDJ.

Then I printed all the Python manuals and started playing it with outside work. Mainly for my web site administration.

I also started using it for simple scripts at work.

Later on, when I changed job to CERN, begining of 2003, it became one of my daily languages.

Currently I don't use it as much as when I was at CERN but I still use it as my main scripting language. Only changing to other one, when required to do so.

Nicola Larosa

Posts: 9
Nickname: teknico
Registered: Jan, 2006

Re: Looking for Memories of Python Old-Timers Posted: May 24, 2006 9:08 AM
Reply to this message Reply
The story of my path to Python is told here:

http://www.teknico.net/devel/journey/index.en.html

damien morton

Posts: 15
Nickname: dmost
Registered: Jan, 2004

Re: Looking for Memories of Python Old-Timers Posted: May 24, 2006 9:22 AM
Reply to this message Reply
Darius Bacon introduced me to Python, around 1997, when I was developing an interface to a reuters data feed (which used a proprietary modem and a dedicated line).

Bill Scherer

Posts: 1
Nickname: scherbi
Registered: Feb, 2003

Re: Looking for Memories of Python Old-Timers Posted: May 24, 2006 9:30 AM
Reply to this message Reply
I started using Python in 1996. I discovered Python 1.4.2 on a fresh install of RedHat 4.2 on a P-90. I've been using it for just about everything ever since, and have forgotten every other programming language I ever knew. Python has never let me down.

I used to be regularly amazed by the new arenas that Python was being used in. Now it's only surprising to find something Python can't do.

Thanks Guido!

Stewart Midwinter

Posts: 3
Nickname: midtoad
Registered: Apr, 2005

Re: Looking for Memories of Python Old-Timers Posted: May 24, 2006 4:49 PM
Reply to this message Reply
I was playing around with a language called ABC and having some fun with it. Then I heard that its author was working on a newer language called Python. I tried to get my mind around it, but it seemed too weird! That must have been version 0.x. But that was then, this is now. I've been using Python the past 4 years and it's my far-away favourite, after dabbling in Icon, Ruby and others. Thanks to Guido and the whole Python community for this wonderful language!

Jeremy Hylton

Posts: 193
Nickname: jhylton
Registered: Jun, 2003

Re: Looking for Memories of Python Old-Timers Posted: May 24, 2006 4:56 PM
Reply to this message Reply
I started working with Python ten years ago this spring. I've been using it for nearly my entire professional career. I posted a couple of entries about my early experiences with Python on my blog:

http://jeremyhylton.blogspot.com/2006/05/my-first-python-projects.html
http://jeremyhylton.blogspot.com/2006/05/how-i-learned-python.html

Ka-Ping Yee

Posts: 24
Nickname: ping
Registered: Dec, 2004

Re: Looking for Memories of Python Old-Timers Posted: May 24, 2006 7:17 PM
Reply to this message Reply
I encountered Python in 1995, when my friend Chris Hendrie started telling me about it. I was an engineering student at the University of Waterloo then, and Chris was my roommate. One of the first things Chris did was to explain the lambda calculus and show me how to calculate with Church numerals in Python. It blew my mind.

I had just started using Perl as a high-level language for quick hacks, but Python grew on me quickly and i began using it for just about everything. I used Python as the basis for MINSE, a project i was working on then to develop an extensible and easy way to write mathematical expressions in webpages. In 1996, i joined the comp.lang.python newsgroup and began ranting forth about my personal pet features and changes i wanted in Python.

I missed the regular expressions from Perl, so that was one of the first places i started playing with the internals of Python. I tried adding features to the built-in regular expression module and wrote a Python module called rxb that experimented with a friendlier, algebra-like syntax for regular expressions. I messed around with interpolating strings and even wrote a couple of patches to allow inline assignment to variables within expressions, again trying to make Python more like Perl. After a while, this phase passed. :)

I made my first actual contribution to Python in 1997, with some improvements to the tokenize module to make it more faithful to the actual Python tokenizer. I had a summer job at Xerox PARC that year, where we used Python heavily for developing ILU (their "Inter-Language Unification" project) and a web-based document processing service. After tokenize came inspect, another Python-related Python module. Debugging web applications was painful because it was tedious to get detailed information about errors, and so that summer cgitb was born, and both modules eventually made it into Python's standard library.

When Guido invited me to join python-dev, i was really excited. I started getting to know Guido, Tim, Barry, Martin, Andrew, and other regulars on the list. Participating in discussions there taught me about working with a group on a open-source development project -- it made me realize that there were a lot more concerns to be balanced in language design than my own. Finally getting to meet everyone at PyCon was a blast.

In 1998 i graduated and joined ILM, where i got to work with Tommy Burnette, who was busy trying to get Python into just about everything there. While i was there, we managed to replace most of the old pipeline — the stuff for managing and schlepping gazillions of files around to the people and programs that had to work on them — with Python scripts. And more excitingly, we established Python as the main embedded extension language for ILM's in-house graphics applications, so that power users could program their own tools and effects.

I took one of Tommy Burnette's scripts, manpy, which was like man for Python modules instead of Unix commands, and eventually turned it into pydoc. pydoc grew to generate documentation in both text and HTML, and is now part of the Python standard library. I also hacked up something to generate a dependency tree of Python modules using crazy HTML table-fu so you could browse the relationships among them while linking to their pydoc pages, but that never made it out into the wild. The software group at ILM was growing and i felt that we needed a bug-tracking system, so i wrote the first version of Roundup, which continued to be used there for quite a while after i left the company. Roundup lives on today in spirit, now completely rewritten to be much better by Richard Jones and his team, at http://roundup.sf.net/.

In 2000, i left ILM and started graduate school at UC Berkeley. I kept telling everyone i knew about Python. I thought it was too bad that none of the CS classes here taught Python, and in 2003 i got to do something about it by teaching my own Python class. The website for it is still up at http://zesty.ca/bc/. It was a lot of work and a lot of fun and i was very happy that it resulted in some very enthusiastic and capable Python programmers. But i didn't have time to keep teaching the class every semester, so it was only taught once. In 2005, i tutored with the self-paced program and helped to develop a Python course that will live on in the CS self-paced center, so that students who are interested and motivated enough can learn Python without someone like me around to give lectures about it.

Guido van van Rossum

Posts: 359
Nickname: guido
Registered: Apr, 2003

I didn't write ABC Posted: May 24, 2006 7:19 PM
Reply to this message Reply
> I was playing around with a language called ABC and having
> some fun with it. Then I heard that its author was working
> on a newer language called Python.

Um, I wasn't ABC's author. I just helped implement it (the second time around). Credit for ABC's design goes to Lambert Meertens and Leo Geurts. You might want to update your Artima bio.

(More about ABC: http://homepages.cwi.nl/~steven/abc/. The ABC manual, long out of print, is also available again: http://www.idhub.com/abc/ -- and available from Amazon.com too.)

Jurjen Bos

Posts: 2
Nickname: jneb
Registered: May, 2006

Re: Looking for Memories of Python Old-Timers Posted: May 28, 2006 11:35 PM
Reply to this message Reply
Yes, Sjoerd, you beat me by a few days, but you didn't have to walk 25 meters :-)

Mark Hammond

Posts: 1
Nickname: mhammond
Registered: May, 2006

Re: Looking for Memories of Python Old-Timers Posted: May 29, 2006 7:12 PM
Reply to this message Reply
In 1993, Sam Rushing and I were looking for a 'scripting language' to complement C++ for an application we were writing. Sam suggested this new Python language, and after a very short time, we were hooked!

At the time, Windows NT had just been released and although there was a (stale) build process for MS-DOS, Windows hadn't been touched by the Python community. Step 1 was to contribute patches for Python to build as a native 32bit application (state-of-the-art in Windows land at the time).

Sam and I intended writing our application using MFC (an MS C++ GUI framework), so one of the first tasks was to write a Python extension module for MFC - and hence Pythonwin was born! Additional Windows specific modules soon followed, and pywin32 (previously win32all) started filling out. Over the years, people such as Greg Stein (then an employee of MS) jumped onto the bandwagon and pywin32 grew to cover vast tracts of the Win32 API, including COM.

Python and pywin32 have both come along way since then, and looking back I find my professional career has almost exclusively revolved around them - so I have much to thank Python and Guido for!

Jim Roskind

Posts: 1
Nickname: jimroskind
Registered: Jun, 2006

Re: Looking for Memories of Python Old-Timers Posted: Jun 3, 2006 10:56 PM
Reply to this message Reply
Guido asked that I try to contribute something from my memories… so here are some things that come to mind….

It was in early to mid 1994 that Steve Kirsch suggested (he often suggests things in an aggressive manner) that we try using Python at InfoSeek to create a full-text searching system with a pay-by-the-drink model. We had already implemented a version in Perl, and I had spent too many hours debugging the Perl interpreter (and sadly seeing numerous cut/paste copies of the same interpreter bugs).

I was initially a bit put off by the Python indentation approach (I was a grammar guy… and got used to parsing braces and parens, and didn’t like the idea of white space having so much meaning), but I soon came to love it. Eventually I came to apply one of my favorite computer science sayings to Python as an endorsement to their indentation blocking approach: “The fundamental evil in computer science is the replication of code or data.” In almost all languages I had previously worked, the indentation of code had always been a critical PART of program nesting structure (at least for the reader). As I read and wrote more Python, its use of indentation as the ONLY way to specify blocks began to look better and better. All the silly bugs related to indentation errors (misleading the human reader) were gone in Python. The redundant use in other languages of braces AS WELL AS indentation (the former to help the parser, and the latter to help the human reader) was an effective duplication of the author’s intent. That duplication in other languages, a fundamental original sin, was missing in Python. It was cool! ;-)

I recall being blown away by the cleanliness of the Python interpreter source, and the fact that there was (from what I could see) never cut/paste code. It was nice. It was clean. And it worked very well. I certainly didn’t feel like an old timer then. I felt like I had just walked into a highly evolved kingdom. Lurking in the related forums it became clear that this “guy named Guido” was riding a tight shotgun over language evolution, and it was his will that was preventing the language from acquiring warts. I still smile today as I see his vision directing the language, and I know Python would never have gotten anywhere if not for his vision and strength of will.

One giant gain we saw in moving to Python was that it was very easy to rapidly prototype, and it was almost believable that we could write production code in Python. As a small startup, we were constantly redirecting ourselves and modifying specifications for our product. This rapid prototyping nature meant that the programmers could keep pace with the marketing changes and not work to shut down creative suggestions. We were also worried about the cost of computation to provide the services we were planning, and the vague hope that we could use our prototype to make money was always in our minds. I spent time trying to speed up some of our prototype code segments (aiming for production code), and found that the existing profiler was not giving me results which matched my tiny experiments (my tiny experiments were giving me great insight into how to speed up our code). I stepped back, read the old profiler source, and realized it was not deducting the time spent in the profiler from the code being measured. Worse yet, it was writing to disk intermittently during profiling, and even that time was being charged to the profiled code (oops). Realizing the weakness of the old profiler, it was then no surprise that our code seemed (according to the profiler) to be devoid of hot spots. The profiler was adding disk-write delays uniformly across the code, and dominating all actual measurements. This was perchance the first bit of a hint that the language was newer than I would have suspected, but the profiler was not seemingly central to the language, and I assumed it was a tangential contribution. I set off to write a more careful profiler, and that is the one that has survived till today. It is interesting (if the documentation I wrote is to be trusted) that the profiler was written after I had been using Python for only about a month, which shows what the learning curve for Python was like, even in “those days.” It was fun writing the Python profiler because this was the first profiler that I wrote that properly handled recursions vs iteration comparisons. The key to this feature was that the profiler was written in Python. In Python it was a snap to have a dynamic dictionary on hand to list all the function blocks residing on the current call stack. Usually, when I had written a profiler in the past, I didn’t have a lot of tools to work with. With Python, most support is written in Python (debugger, profiler, etc.), and powerful tools abound. It was and is a nice virtuous cycle.

I remember one early result from my profiling experiments. In retrospect, this story also hinted at how new the language was, but at the time I just saw it as something that was too hard to see with the previous profiler. One area of our code was running surprisingly slowly and almost dominating our performance. The hot area was a comparison function which was called by a sort routine. (Recall that with the old profiler, nothing ever stood out as a hot spot). At first I was surprised that there was no way I could speed up this “hot spot,” as it was already a very simple compare. Then I looked at call counts for this routine. We were typically sorting an array of length 1000. If I remember the numbers correctly, the profiler revealed that the hot comparison function was being called over 400,000 times per sort. This was a whole lot closer to what I’d expect from an n-squared sort algorithm than from an n * log(n) quick sort. Remembering that algorithms 101 taught that quick sort *can* be an n-squared sort if the pivots are “chosen poorly,” and this could commonly happen (with a simple quick sort implementation) when the list was already mostly sorted… I took a wild guess that this was the problem. To take a shot at working around this quick sort implementation, I needed to randomize the list prior to the sort. With Python, this was a snap (to try). I just put the list into a hash table, and then pulled it out (in its pseudo random order) before doing the sort. Sure enough, a factor of 20 performance improvement resulted (for our application), and a simple bug report went off to Guido. I always liked this story because it was a case where adding wasteful code was VERY helpful.

I also remember one difficult aspect of our Python development. We needed to perform bookkeeping (remember, we were making a pay-by-the-drink model search system), and we ended up writing a persistent object store to record these events and charges. All the features of Python involving introspection were beyond a pleasure to use to build this system. It was “a little challenging” to handle the automatic storage and resurrection of randomly inter-related objects. The hard part was making sure that a single saved object was resurrected as a single object, no matter how many other objects pointed to it in arbitrary circuitous ways. Here the exception system provided a simple way to effectively backtrack as needed during the saving of objects in unpredictable graphs. I remember thinking that IF I didn’t have all the tools on hand in the language, the coding of this stuff would have been between hard and impossible (at least hard for a human, or certainly nearly if not fully impossible for me). In the end we had a production system running 24/7, where we evolved the types of objects stored in the database dynamically as we improved and enhanced our code. After struggling a lot I asked a very technical academic colleague if there was any clever way that we *should* have been doing all this work. I was happy to hear that it was generally considered a very hard (academic) problem, and I should be happy that we got most any of this working (in a real world problem). I know that a lot of the credit for getting this running went to the language.

As a last memory, I recall attending “The Second Python Workshop” in around May 1995. I think it was held in a small room at NIST in Palo Alto. I had already moved on to this other startup company, Netscape Corp., but I was anxious to see some of the code that I had worked on survive. There seemed like there were about 30 folks there at any time, and the attendance list (found via Google) shows that no more than 60 folks attended in total. The language seemed interesting, but it also seemed like it was more of a hobby than a tidal wave.

Over the years since then, more and more folks have tried to tell me about this new language they had started to play with… called Python…. And that it is pretty cool. I just smile and agree.

Jim

Ka-Ping Yee

Posts: 24
Nickname: ping
Registered: Dec, 2004

Re: Looking for Memories of Python Old-Timers Posted: Jun 5, 2006 3:33 PM
Reply to this message Reply
I'm going to add another favourite Python story that i forgot to include in my first comment.

A couple of years after i first learned Python, i took a software engineering class as part of my engineering degree at the University of Waterloo. The purpose of the class was to teach us how to manage and complete a large software project, so large that it would require multiple people to develop and would require some advance planning and project management to get it done on time. The project we were assigned was to develop a PBX — a telephone exchange with twenty phones that could dial each other, a limited number of touchtone receivers for decoding the dialed touchtone sounds, and a limited number of audio channels to be allocated for connecting phone calls. The job of the PBX was to keep track of the states of the various phones and to connect them to the touchtone receivers and channels, produce busy signals when necessary, and so on.

This project was supposed to be implemented in C++ and to take about four weeks to be developed by a team of three or four programmers. I asked for permission to work on the project in a two-person group, with my friend Tyler Close. I was by this point convinced that it was a good idea to program just about anything in Python, and managed to persuade Tyler that we should prototype the PBX in Python even though he wasn't that familiar with it and even though we would eventually have to do it in C++.

We got together one afternoon to work on the project. We decided what we needed to do, divided the project up into modules, and started coding. Tyler picked up Python fast — very fast. Three hours later, we had a complete working implementation. We translated the Python script into C++ almost trivially, line for line, and we were finished. I had expected working in Python to be fast, but even so i was amazed that we were already done. Just like that, my plans to work on the project for the rest of the four weeks vanished.

I just went through some old files and found the Python program, with its Tkinter GUI for testing and dialing the phones, and it still just works today.

I still recall that project as one of my most productive and pleasant programming experiences ever. Unfortunately, we failed to learn anything about managing a long-term project because the project was already done before we had a chance to do any project management. :)

Thank you, Guido, for this and many, many other productive and pleasant programming experiences!

Kevin Dangoor

Posts: 1101
Nickname: tazzzzz
Registered: Jul, 2003

Re: Looking for Memories of Python Old-Timers Posted: Jun 6, 2006 5:51 PM
Reply to this message Reply
I started with Python sometime in 1995 (my first posting to c.l.py was in January 1996, and Guido responded with a detailed followup. Thanks, Guido!)

I was with ANS at the time (the folks that ran the NSFNet network), and I spent I good chunk of 1995 working in Perl. Compared to the various things I had been working with previously, Perl was nice.

Then a colleague of mine introduced me to Python. I was a big fan of OO and Python felt so natural to work with and write. After a very short time, I hardly felt like I needed the docs. I could just guess how something would naturally work in Python and it did.

I have not been as fortunate as many here to use Python continually over the years. But, whenever I've had a say in the matter, Python has been a great and faithful tool of choice.

Flat View: This topic has 54 replies on 4 pages [ « | 1  2  3  4 | » ]
Topic: Looking for Memories of Python Old-Timers Previous Topic   Next Topic Topic: The Third State of your Binary JUnit Tests

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use