Software Carpentry

Helping scientists make better software since 1997

Archive for August 2006

Oh My God It’s Django!

Guido just pronounced: Django is the web framework

  • Won’t be part of the core, but will be as “standard” as PIL or NumPy
  • This was not what I expected the outcome of my talk would be, but hey, I’ll take it 😉
  • He hopes that Django and TurboGears will converge

Eric Jones: Enthought Tool Suite

  • Enthought does open source software and consulting for scientific computing with Python
    • One of the sponsors of this conference
    • Providing hosting for Software Carpentry
    • Walked through traits and other offerings

    Chris Mueller: Synthetic Programming with Python

    • A Python library for generating assembly code for the Power PC
      • Get rid of the many layers between Python and the hardware
    • Great performance for great effort (up-front about that)
    • Q: How do you debug? A: insert an illegal instruction, back up a few bytes, single-step in GDB
      • Interested in multi-language debugger, but interested in a lot of other things as well

    Prabhu Ramachandran: 3D Visualization

    • Author of MayaVi, a better (more Pythonic) wrapper for VTK
    • Impressive — hides as much of the guff in complex 3D scientific visualization as it can

    Andrew Straw: Realtime Computing with Python

    • The Grand Unified Fly: a computational simulation of a fruit fly
    • Use Python for high-level stuff, and real-time for sub-millisecond control of motors, etc.
    • Program $20 microcontrollers with Python
      • E.g., Flydra is a multi-headed camera+FireWire system to track fly motion

    Lightning Talks

    • Mike Ressler: Prototyping Mid-Infrared Detector Data Processing Algorithms
      • Classic data crunching with NumPy
    • Brian Granger: The State of IPython
      • Sales pitch
    • Travis Oliphant: Array Interface BOF
      • Please for people to help put together PEP for arrays in Python
    • Travis Vaught: Enstaller
      • Enhancements to Python Egg system (with GUI)
      • Worth tracking
    • Michel Sanner: The Current State of Vision
      • Update on a visual builder for image processing pipelines
      • Very cool — but lots of overlap (it seems) with MayaVi
    • Peter Wang: Quick Overview of Chaco
      • 2D plotting library
      • Repeat of slides from yesterday’s tutorial

    William Stein: Software for Algebra and Geometry Experimentation

    • SAGE bundles together lots of other packages used for algebra and exact computation
    • Very particular about getting his whole half hour, despite the late hour 😉

    Alex Clemesha: Mathematica-like Plotting for SAGE

    • Slow cruise through SAGE’s graphics
    • As with web frameworks, Python has too many plotting packages for its own good

    Diane Trout: BioHub

    • There’s a lot of sequence data out there
      • And collection is accelerating rapidly
    • BioHub is a Python interface for large-scale genomic analysis
      • A database to link diverse annotation sources
    • I didn’t know that genes have version numbers… 😉

    Greg Wilson: Software Carpentry

    • Last talk of the day — some locals had already headed home, but there were about 70 people present
    • Went well, but no one’s offering to teach the course at their institution this fall
    • Slides available online

Written by Greg Wilson

2006/08/17 at 21:56

Posted in Community

SciPy’06: First Morning

Guido van Rossum’s Keynote

  • Python 2.5 coming Real Soon (Sept 12)
  • Python 3000 is a brand-new revision of the language
    • Name chosen as a dig at Windows 2000, and so that it couldn’t possibly be late
  • Fix design bugs dating from 1990-91 + get rid of deprecated features
  • First time Guido has allowed himself to be backward incompatible
  • Need process, but don’t want to become C++ or the next Perl 6
  • Alpha early 2007, final a year later (early 2008)
  • Cares a lot about bringing users with him
    • Will go as far as 2.9 (run out of digits)
  • Changes:
    • New keywords allowed
    • dict.keys(), range(), zip() won’t return lists
    • All strings Unicode; mutable ‘bytes’ data type
    • Binary file I/O redesign
    • Drop as an alias for !=
    • Etc.
  • See PEP 3099 for things that won’t happen (e.g., programmable syntax)
  • Can’t do perfect mechanical translation (dynamic languages)
    • Use pychecker-like tool to handle 80% of cases
    • Create instrumented Python 2.x that warns about “doomed” constructs
  • See PEP 3100 for the laundry list
  • Small points
    • Kill classic classes
    • Exceptions must derive from BaseException
    • int/int will return a float
    • Remove last differences between int and long
    • Absolute import by default
    • Kill sys.exc_type and friends
    • Kill dict.has_key, file.xreadlines()
    • Kill apply(), input(), buffer(), coerce()
    • Kill ancient library modules; more stdlib cleanup
    • exec becomes a funciton again
    • Kill `x` in favor of repr(x)
    • Change except clause syntax to exception E1, E2, E3 as err
      • Means “as” becomes a keyword
    • [f(x) for x in S] becoms sugar for list(f(x) for x in S)
      • General trend in Python away from lists toward more abstract structures
    • Kill raise E, arg in favor of raise E(arg)
    • zip becomes izip
  • lambda lives!
  • String types reform (bytes and str instead of str and unicode)
    • All data s either ibnary or text (conversions happen at I/O time)
    • Different APIs for binary and text streams
  • New standard I/O stack
    • C stdio has too many problems
    • Borrow from Java streams API (bleah)
  • Print becomes a function (boo)
    • See mailing list thread for justification
    • But I think that putting the output file at the end in print(x, y, file=z) is going to trip people up
  • Dict views instead of lists
    • dict.keys() and dict.items() return a set view
    • dict.views() will return a bag (multiset) view
    • Can delete from (but not add to) a view
      • Modifies the dict accordingly
  • Drop default implementations of comparison operators
    • <, <=, etc., currently compare by address — will raise TypeError
    • == and != should remain (useful)
  • Generic and overloaded functions (see his blog — running out of time)
  • Python sprints coming up (Aug 21-24)
  • Q&A
    • Py3K team is smaller than Perl6 — GvR optimistic that people will get the work done
    • Taking advantage of multicore?
      • GvR not a big fan of threads
      • Prefers loose coupling (one process per core)
      • Last attempt to get rid of the GIL slowed Python down by 2X
      • But neither Jython nor IronPython have a GIL
    • Will C-Python API change much?
      • Yup — just like the language
    • PyPy/type inference?
      • Python 4.0 or a sibling language

Travis Oliphant on the State of NumPy

  • Chair thanked him for everything he’s done to fix numerical Python — standing ovation (well deserved)
  • NumPy 1.0 rc1 will be out in a few weeks
  • Walked through design — tradeoffs between flexibility, portability, and performance very well thought through
  • One part I enjoyed was the way he flipped back and forth between PowerPoint and the interpreter
    • Clear that for him, Python is a tool for thinking with
  • Showed off weave, an Enthought tool for embedding C in Python for array programming
  • Also shows off Pyrex (another tool for the same purpose)

Fernando Perez: Python for Modern Scientific Algorithm Development

  • “Why is Python more than ‘free MATLAB’?”
    • Power of built-in datatypes, higher-level programming, etc.

Michael Aivazis: “Building a Distributed Component Framework”

  • Described a medium-sized framework called pyre
    • 1200 classes, 75K lines of Python, 30K lines of C++
    • Has been running in various incarnations for almost ten years
  • Good discussion of architectural issues — perfect example of the kind of researcher I’d like Software Carpentry to produce

Written by Greg Wilson

2006/08/17 at 18:09

Posted in Community

SciPy and Software Carpentry

I’m flying down to CalTech this evening to give a talk on Software Carpentry at SciPy’06. There’s been a fair bit of traffic on the web site in the last couple of weeks, and I’m looking forward to hearing how else we can help scientists and engineers become more productive programmers.
Software Carpentry Usage

Total visits: 4354 in 15 days, from 731 distinct domains (excluding obvious robots).

Written by Greg Wilson

2006/08/16 at 09:07

Posted in Community

HPCWire Interview on Software Carpentry

HPCWire recently interviewed me about the Software Carpentry course. Coincidentally, I’ve started getting patches from new contributors (especially Ralph Corderoy, who did a very thorough review of the shell programming lectures). More would be welcome…

Written by Greg Wilson

2006/08/04 at 10:57

Posted in Community