Thursday, January 24, 2008

Chicago

CODE Hacker for the World,
Programming Tool Maker, Stacker of w00t,
Player with Rails and the Nation's Error Handler,
SourceForge, Cheese Shop, CPAN,
City of the Big Dynamic Language Conferences:...

I just found out that Chicago, after hosting PyCon in March, will host YAPC::NA in June, and hosted RailsConf in 2006. Crazy!

Dave Barry's Only Travel Guide You'll Ever Need makes a joke that every single state claims to be "dynamic". Looks like they all lose to Chicago, though, because that's where the real dynamic types come to play.

Sunday, January 13, 2008

brilliant PyCon publicity ideas

I was alarmed to find that many of the attendees at CodeMash didn't know that PyCon 2008 will be in Chicago - right here in our beloved Midwest.

So, as volunteer publicity coordinator, I thought I should brainstorm on more ways to get the word out. Here's what I've come up with so far.
  • National "got whitespace?" skywriting campaign
  • Spread urban legend about programmer whose kidneys are stolen by organ smugglers when he fails to attend PyCon
  • Invite presidential candidates to debate their choice of Python web framework at PyCon
  • Post hilarious "DO NOT WANT STATIC MANIFEST TYPING!!1!" pic at icanhascheezburger
  • Vote Guido into final round of American Idol
  • Bribe fortune cookie factory employee to replace fortunes with "PYCON 2008 CHICAGO IN BED"
  • Use laser to engrave giant announcement in the moon's surface
  • JEN IN TEARS AFTER ANGELINA'S LIGHTNING TALK
Please supply more ideas in the comments... (serious ideas doubly welcome!)

CodeMash slides

Thanks, everybody, for another great CodeMash - even better than last year! More babbling about it will follow when I have time,

As promised, the material from my presentation. It's almost identical to my LinuxFest presentation of last September.

Saturday, January 05, 2008

Introducing cmd2

cmd is a Python Standard Library module for constructing command-prompt applications. It's very easy to use - just subclass its Cmd type, create an instance, and call that instance's .cmdloop(). To support a command, just write a do_yourcommandname(self, arg) method within your Cmd instance.

cmd is also very bare-bones. It forms the backbone of sqlpython, and while improving that package, I've created cmd2. cmd2 is an extension for cmd that adds helpful functionality without requiring any changes to cmd-based applications.
  • Searchable command history
  • Load commands from file, save to file, edit commands in file
  • Multi-line commands
  • Case-insensitive commands
  • Special-character shortcut commands (beyond cmd's "@" and "!")
  • Settable environment parameters
  • Parsing commands with flags

I've found several alternatives to cmd in the Cheese Shop - CmdLoop, cly, CMdO, and pycopia. cly looks wonderful, but I haven't been able to get it working under Windows, and that's a show-stopper for many potential sqlpython users. In any case, none of the alternatives are based on cmd - they're written from scratch, which means that a cmd-based app would need complete rewriting to use them. I like sticking close to the Standard Library whenever possible. cmd2 lets you do that.

Switching a cmd application to cmd2 is as simple as changing from from cmd import Cmd to from cmd2 import Cmd, and the new functionality is ready to go. See a usage example of cmd2.

It's in the Cheese Shop, so you can easy_install cmd2. (Cheese Shop page for cmd2)

Thursday, January 03, 2008

Geek Event Aggregator code

I've told several people that I would post the code for the Geek Event Aggregator "as soon as I get it cleaned up".

Today, I swallowed my pride and admitted that I've really got to post something - that the much-needed code cleanup isn't going to happen for months. So, I created a page for it at Google Code: http://code.google.com/p/whatwhenwhere/

Not that you want to do that. It's ugly. Really. It will be cleaned up someday, but if you really want to make use of it now, there it is.

I decided to name the project "whatwhenwhere" because the code might well be used to aggregate events that are not at all geeky, and to host it at Google Code because, well, I'd never tried it.

Most of the stuff you might be conceivably interested in is in scan.py, ship.py, and events/model.py.

Monday, December 17, 2007

CodeMash

Oops, I've been forgetting my blog badge.


CodeMash – I'll be there!


Bruce Eckel will be in charge of Open Space this time, which means it should be something else. Come with ideas for what you want to do with Open Space.

Wednesday, December 05, 2007

I promise not to make a habit of posting about xkcd


OK, I lied. But how could I have known this was coming?

Thursday, November 29, 2007

TurboGears and Oracle on OTN

Once, using TurboGears with Oracle was the kind of kooky idea you could only read about in the blog posts of obscure crackpots.

No more! The current top story at Oracle Technology Network is Daniel Rubio's article on using TurboGears with Oracle. Read, use, and enjoy! It's also got a permanent home at the OTN Scripting Language Technology Center.

Thanks to Oracle for all the great press lately, and to Daniel and Przemek for writing it!

Friday, November 23, 2007

PyCon: 141 submissions!

We weren't very good about getting word out for the PyCon call for proposals, and as the deadline approached, there weren't a lot of submissions in the queue. We worried about whether we'd messed up.

Oh, we of little faith! The last couple days before the deadline, the floodgates opened. We got 141 talks submitted! (And about 40 tutorials!)

And they're great submissions! If I had my way, I'd attend about 3/4 of them personally. Unfortunately, for a 3-day conference, we'll be lucky if we can fit half of them into the schedule. Well, I did suggest running PyCon on a 24-hour basis, but for some reason that wasn't accepted.

So now we've got to somehow narrow down the field to what we can fit in the con, and that's a painful process. Quite a few excellent talks won't go on the schedule simply because there's no room.

The good news is that we've got lots of space set aside for multiple tracks of Open Space sessions, which don't require any approval. So, in essence, we may get two PyCons running side-by-side - a traditional one with scheduled talks, and an unconference-like bunch of Open Space activity.

Too much good stuff... I'm definitely going to have to spawn some processes to see all I want to see.

Tuesday, November 20, 2007

New Python articles at OTN

There's a new series of articles on Oracle & Python over at the OTN Scripting Language Technology Center. Przemyslaw Piotrowski presents a detailed investigation of cx_Oracle, covering very nicely some aspects I'd glossed over in all my introductory articles. Great job, Przemek!

Microformat slides

Anybody who saw my Microformats talk, whether at the Dayton Web Standards Meetup or the DMA Linux SIG, can see my slides here or get a tarball here.

If you weren't at my talk, and are looking for a microformats presentation that will stand on its own, you're better off looking through the talk archives at the Microformats wiki. My talk isn't very self-explanatory without me standing there to talk about it.

Friday, November 02, 2007

CodeMash 2008

CodeMash is a great, multi-language agile programming conference here in Ohio. I had a great time last year, and next year looks even better.

Jan. 9 - 11, 2008
Kalahari Waterpark Resort
7000 Kalahari Drive
Sandusky, OH 44870USA
877-525-2427

The speaker committee has announced two sets of accepted abstracts for CodeMash 2008, with more still to come. Already, there's a lot for a Python fan to be excited about!
=============
Bruce Eckel: "Why I Love Python"
=============
Bruce Eckel has given hundreds of presentations throughout the world, published over 150 articles in numerous magazines, was a founding member of the ANSI/ISO C++ committee and speaks regularly at conferences. He provides public and private seminars & design consulting in OO Design, Python, Java and C++.

============
Leah Culver: "Getting Started with Django"
============
Leah Culver founded Pownce with her friends Kevin Rose and Daniel Burka as a way of sending messages, links, files and events to each other. Leah is the lead developer for the site, which has become one of the largest sites using the Django framework. Leah loves the challenge of developing a web application from scratch and writes about her experiences as a software developer at leahculver.com.

============
Kevin Dangoor: "Overview of the Dojo JavaScript Toolkit"
============
Kevin is the product manager at SitePen and the founder of the TurboGears open source web application framework. He has held positions in software development, management and sales engineering. He has previously spoken at CodeMash, PyCon, EuroPython and GLSEC and is the co-author of the book "Rapid Web Applications with TurboGears".

Kevin's talk isn't directly about Python, but I expect he'll cover how to tie Dojo into Turbogears. And if he doesn't offer it freely, I'm going to grill him on it!

Finally, my talk was accepted, too! It's basically a repeat of my Ohio LinuxFest "Introduction to Python" talk that used vPython to simulate a solar system, but since the audience this time will be a group of high-powered programmers, I should be able to amp it up and cover more ground. I'll try to dovetail with the more advanced talks at CodeMash so that (for instance) you'll be able to understand Leah's Django talk even if you arrived at CodeMash without knowing any Python.

There are also talks on Domain-Specific Languages, Silverlight (which, via IronPython, looks like a great way to Python-power webpages on the browser side)... and the speaker committee isn't even finished selecting talks yet.

Can. Not. Wait! Between this and PyCon in Chicago, it's truly an Ohio Pythonista's dream come true.

Python at MIT

There was a bit of buzz about a year ago when MIT announced plans to experiment with an alternative version of their electrical engineering/computer science (Course 6) curriculum - one that would start students with a Python-based course instead of the famous Scheme-based 6.001. It was exciting news, but I hadn't heard anything about it since then.

Today, a look through the department's webpage shows that the experiment has come quickly to fruition, and the new curriculum is the standard for this year's freshmen.

6.01, Introduction to EECS I
, with Python (and robots! Sounds FUN!)

I'm dying to know more about this! I'm going to hit up school friends for info, but maybe somebody here has more details to supply?

I still meet plenty of neckties who have never heard of any language besides C/Java/.NET (hey, it's the Midwest, and it's the Air Force), don't know why Python matters, and aren't interested in understanding its merits directly - only want to know "who's using it?". "MIT teaches it to all their EE/CS students" is a pretty good one-liner response. I'm not above leveraging MIT's name recognition. I did the time, after all (as a chemical engineer, not EE/CS, but still). Granted, it never won world domination for Scheme, but I bet it is the source of a very large fraction of the fame that Scheme does have.

Sunday, October 28, 2007

SQL*Plus alternatives (at InOUG)

I spoke last Thursday at the Indiana Oracle Users Group on "The Command Line Lives: SQL*Plus and Alternatives".

I still need to get the full, S5 format presentation posted somewhere; for now, you can see the raw text of the presentation here.

It's an interesting topic, and one I'd like to get drawn more deeply into. Some nice things have been done in producing open-source command-line alternatives to SQL*Plus, includingUnfortunately, the only one whose development currently seems to be active is sqlpython, and there's just me and Luca Canali working on that. I've just added functionality to sqlpython to let it fail over to sessions of the other tools (when "set failover true" is issued; doesn't work on Windows). That way, the exciting features of Senora and YASQL can be used from within sqlpython, instead of trying to remember which tool has which feature. It's quirky, though, since a full-fledged independent session of each tool is actually maintained "under the covers".

I'm dreaming of expanding sqlpython to the point where it incorporates all Senora and YASQL's features natively. Tragically, my dreams cannot yet be downloaded from the Cheese Shop.

Wednesday, October 10, 2007

xkcd

I promise not to make a habit of posting about xkcd.

But only because I'm counting on you to read it daily yourself.



I printed this today and then wandered the office, looking for someone to show it to, gradually coming to the horrifying realization that I don't work with anyone who would get it.

Tuesday, October 09, 2007

cx_Oracle and Oracle XE on Ubuntu

When I first posted about using Oracle XE on Ubuntu, I thought that getting cx_Oracle working with XE was pretty easy. I was wrong! Last night, I installed on a "clean" machine, and it was a lot harder; perhaps last time, I benefited from packages I'd already installed, meeting secret prereqs without knowing it.

[EDIT: As of June 2008, a streamlined set of instructions is here.]

Fortunately, I did work out the necessary steps.
  1. sudo apt-get install libc6-dev

    If you don't, you'll get
    In file included from /usr/lib/gcc/i486-linux-gnu/4.1.2/include/syslimits.h:7,
    from /usr/lib/gcc/i486-linux-gnu/4.1.2/include/limits.h:11,
    from /usr/include/python2.5/Python.h:18,
    from cx_Oracle.c:6:
    /usr/lib/gcc/i486-linux-gnu/4.1.2/include/limits.h:122:61: error: limits.h: No such file or directory
    In file included from cx_Oracle.c:6:
    /usr/include/python2.5/Python.h:32:19: error: stdio.h: No such file or directory
    ... when you try to install cx_Oracle.

  2. export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib
    export PATH=$ORACLE_HOME/bin:$PATH


    If you don't, you'll get
    error: cannot locate an Oracle software installation
    or

    ImportError:libclntsh.so.10.1:cannot open shared object file: No such file or directory
  3. Download the source code tarball, unzip and unpack, cd into it, and
    sudo python setup.py install
    You will get
    error in cx_Oracle setup command: Oracle home does not refer to an 8i, 9i, 10g or 11g installation
    because setup.py doesn't account for XE. You need to hack it.

    Download the patch useXE.diff and run
    patch setup.py useXE.diff

    Now run
    sudo python setup.py install
    again.

    I'm going to submit a patch to the cx_Oracle folks, so hopefully it will be fixed for the next release.

    [EDIT: Anthony Tuininga, cx_Oracle's developer, has taken my patch, improved it, and incorporated it into the cx_Oracle trunk; as of the next cx_Oracle release beyond 4.3.3, this is fixed. This sort of thing is what makes open source fun!

    To grab the patched version from the cx_Oracle development trunk right now, install Subversion on your machine, then
    svn co https://cx-oracle.svn.sourceforge.net/svnroot/cx-oracle/trunk cx-oracle
    ]

  4. If you're accessing Oracle XE on your own machine, start your listener. On my machine, at least, the XE installation didn't do that.
    sudo su - oracle
    export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib
    export PATH=$ORACLE_HOME/bin:$PATH
    lsnrctl startexit


    You may want to edit your .bashrc to do this; otherwise, you'll need to for every session in which you access Oracle.

    If you're using Oracle XE as a client to access Oracle (XE or otherwise) on another machine, skip this step, but you'll need to make sure the SID you're looking for is in $ORACLE_HOME/network/admin/tnsnames.ora.

  5. At last, you can start using cx_Oracle! See the DB-API2 Cheat Sheet for some quick syntax reminders.

EDIT: comment from teambob

I mistakenly deleted the following comment:

I installed via easy_install, but there was a bit of a trick.

After setting the environment variables I installed using the following command: sudo -E easy_install cx_oracle

The "-E" option to sudo causes all your environment variables to be passed to easy_install

Saturday, September 29, 2007

Ohio LinuxFest slides & code

Thanks to everyone for your attendance and feedback at my OLF talk! I had a great time!

A tarball with everything you need to duplicate my presentation is here.

It's pretty complex, so it includes a README file. (I used s5 slides generated by rst2s5, a Socrates file from Bruce, and eight directories of code files. Don't worry, though, it's very lean - just 60K.)

Monday, September 10, 2007

I'm speaking on Python at OLF

What's this? You haven't registered for LinuxFest yet?

But I'm (absurdly honored to be) one of the speakers!

Introduction to Python and/or Solar System Demolition
An introduction to Python programming. Demonstrates the language by developing a graphical solar system gravitation simulation in real-time.
September 29th, 2007, 3:50 - 4:40 PM
Greater Columbus Convention Center
400 North High Street
Columbus, OH 43215 USA

And I'm bringing my own projector this time, just in case... (plus I've got nVidia drivers installed, which should help...)

Ohio LinuxFest: register now!

Drop everything and register for

Ohio LinuxFest


It's free - but the registration deadline is Sep. 14 - this Friday! Move, move, move!

Ohio LinuxFest
September 29th, 2007
Greater Columbus Convention Center
400 North High Street
Columbus, OH 43215 USA

Thursday, August 30, 2007

Microformats talk

Have I mentioned that the Dayton Web Standards Meetup is a great group? It's brimming over with good ideas for every sort of web writer. Very highly recommended!

This coming Thursday, I'll be speaking on Microformats! Microformats are a wonderful way to make your information available to automated tools, while mandating nothing about what else you do on your page. They're great fun, they're catching on, and I'm looking forward to it!

5:30, Sep. 6: Microformats talk at Dayton Web Standards Meetup
at Panera Bread on 1203 Brown Street.
See you there!

Okay, I admit, I wrote this post partially to practice writing a microformat. Install Operator into your Firefox. Now, with one click (each), you can grab a vCard for Panera, get a map there, or pop the event inot your calendar program. Oooooh!