Python Conference Report
Some of the ongoing shifts in the Python community were apparent at the Eighth International Python Conference (IPC8), held in Washington, DC this past January. [Note: the Spanish Inquisition was not in attendence.] For a start, the continued growth of the Python community was obvious. IPC7, the previous conference, attracted roughly a hundred attendees. IPC8 was more than twice as large, with around 250 attendees. Much of this growth came from the increasing popularity of the Zope application server, which had its own conference track for the first time. This track drew some 90 people who attended talks on Zope's architecture and features, designing applications for Zope, and saw demos of new products such as the Portal Toolkit.
One interesting new theme emerged at this conference, the idea of using Python to teach programming.
Randy Pausch of Carnegie-Mellon University gave a keynote talk about the Alice virtual reality system (http://www.alice.org/), a stunning talk that held out some hope that maybe, just maybe, these computer things can be useful to people without requiring them to master Cartesian coordinates or to adjust their thinking to match the machine's. Alice is a 3D VR system used in a course at CMU, whose audience is non-technical users without a background in engineering or computer science. Accordingly, the system has been carefully tested for usability throughout its development. Python had to be modified slightly to improve its suitability for novices, but only two serious changes were made: floating point is automatically used for all numbers in Alice, and the language was made case-insensitive so that names such as “Value” and “value” refer to the same variable. The talk concluded with an impressive video of four different projects done using Alice, ranging from a “Calvin and Hobbes”-inspired sled ride to computer-generated characters who follow a human aerobics instructor.
Unfortunately, Alice is available only for Windows, although a Playstation port is being worked on, and the resulting structural changes should also provide for a MacOS port. In answer to an audience member's question about using Alice on the Macintosh, Pausch replied that you'd have to purchase VirtualPC for the Macintosh; Alice is efficient enough to run acceptably under emulation. Therefore, instead of waiting for a Linux port, you should probably just buy VMware and a copy of Windows. Alice is exciting enough to be worth it!
Guido van Rossum's nascent “Computer Programming for Everybody” project aims to use Python for teaching by creating a sophisticated programming environment that helps out novices, writing a CS curriculum and perhaps modifying the Python language to make it easier to learn. At the moment, Van Rossum is gearing up to start work on CP4E, thinking about incremental parsing and type inferencing—and deciding what to teach in one semester. Van Rossum would like a spell-checker-style mode of operation for the teaching environment, so that as soon as one types a line of code, it would be checked and any possible problems noted.
A birds-of-a-feather session on education had 40 attendees and led to the creation of an Education SIG that will continue to discuss and develop teaching aids for Python.
Over the last five years, an increasing number of people have begun using Python for numeric work. The canonical story told in scientific programming papers at Python conferences usually runs something like this: a group has an existing body of numeric routines, usually written in Fortran or C/C++. To speed up prototyping, the group decides to write a scripting language that gives them an interpreted environment to experiment in. However, along the way, someone discovers Python, and rather than re-invent the wheel and maintain their own interpreter, they realize it's much easier just to write a Python interface to the number-crunching code.
Python's suitability for numeric work stems from three main reasons. First are the excellent Numeric Python extensions that provide powerful, multidimensional matrix types.
The second reason is SWIG, which can parse a C header or Fortran file and automatically generate a Python wrapper for the C or Fortran functions. SWIG also supports Perl and Tcl (XXX and Guile?), but here the third factor comes into play. Python's syntax is simple and relatively familiar, unlike the shell-influenced structures of Tcl and Perl, or the parenthesis-heavy Scheme/Lisp syntax that people either love or loathe.
An excellent example would be the talk “Using Python to Modernize Astronomical Software” by Richard White and Perry Greenfield. The authors work for the Space Telescope Science Institute in Baltimore, which is responsible for processing data from the Hubble Space Telescope. They use an astronomical software environment called IRAF, consisting of around a million lines of code. IRAF provides a portable, though not feature-rich, environment for writing analysis software, but the command language isn't very flexible or easy to use. They started down the path of writing their own new language, then discovered Python and decided to use it as the new IRAF command language. Because IRAF works by running subprocesses for each job, Python needs only to be able to speak IRAF's interprocess protocol in order to fit into the system. The Python interface, called PyRAF, will soon be going into beta testing at a few sites, with final release in a few months. It can also parse and emulate the old command language to provide backward compatibility.
|Designing Electronics with Linux||May 22, 2013|
|Dynamic DNS—an Object Lesson in Problem Solving||May 21, 2013|
|Using Salt Stack and Vagrant for Drupal Development||May 20, 2013|
|Making Linux and Android Get Along (It's Not as Hard as It Sounds)||May 16, 2013|
|Drupal Is a Framework: Why Everyone Needs to Understand This||May 15, 2013|
|Home, My Backup Data Center||May 13, 2013|
- RSS Feeds
- Dynamic DNS—an Object Lesson in Problem Solving
- Making Linux and Android Get Along (It's Not as Hard as It Sounds)
- Using Salt Stack and Vagrant for Drupal Development
- Designing Electronics with Linux
- New Products
- A Topic for Discussion - Open Source Feature-Richness?
- Drupal Is a Framework: Why Everyone Needs to Understand This
- Validate an E-Mail Address with PHP, the Right Way
- What's the tweeting protocol?
- Kernel Problem
3 hours 25 min ago
- BASH script to log IPs on public web server
7 hours 52 min ago
11 hours 28 min ago
- Reply to comment | Linux Journal
12 hours 1 min ago
- All the articles you talked
14 hours 24 min ago
- All the articles you talked
14 hours 27 min ago
- All the articles you talked
14 hours 29 min ago
18 hours 53 min ago
- Keeping track of IP address
20 hours 44 min ago
- Roll your own dynamic dns
1 day 1 hour ago
Enter to Win an Adafruit Pi Cobbler Breakout Kit for Raspberry Pi
It's Raspberry Pi month at Linux Journal. Each week in May, Adafruit will be giving away a Pi-related prize to a lucky, randomly drawn LJ reader. Winners will be announced weekly.
Fill out the fields below to enter to win this week's prize-- a Pi Cobbler Breakout Kit for Raspberry Pi.
Congratulations to our winners so far:
- 5-8-13, Pi Starter Pack: Jack Davis
- 5-15-13, Pi Model B 512MB RAM: Patrick Dunn
- 5-21-13, Prototyping Pi Plate Kit: Philip Kirby
- Next winner announced on 5-27-13!
Free Webinar: Hadoop
How to Build an Optimal Hadoop Cluster to Store and Maintain Unlimited Amounts of Data Using Microservers
Realizing the promise of Apache® Hadoop® requires the effective deployment of compute, memory, storage and networking to achieve optimal results. With its flexibility and multitude of options, it is easy to over or under provision the server infrastructure, resulting in poor performance and high TCO. Join us for an in depth, technical discussion with industry experts from leading Hadoop and server companies who will provide insights into the key considerations for designing and deploying an optimal Hadoop cluster.
Some of key questions to be discussed are:
- What is the “typical” Hadoop cluster and what should be installed on the different machine types?
- Why should you consider the typical workload patterns when making your hardware decisions?
- Are all microservers created equal for Hadoop deployments?
- How do I plan for expansion if I require more compute, memory, storage or networking?