Python Liberation Front

I have started a new blog at the AwareTek Mash-Up.

I may (or may not) still post here from time to time (I haven't decided yet) but most activity will probably switch over the the new blog. I plan to keep this blog up for archival purposes since I have posted so much here over the years.

My podcasts can still be found at Python411 and at the AwareTek Podcast Series.

AskMerlin


You can find the online cgi AskMerlin program, and also its source code, at Ask Merlin.

Posted by Ron Stephens @ 2006-01-02 15:07:43 [permalink]
Categories: (unclassified)

Spiritual Programming


Spiritual programming

It seems to me that, if anything of a person survives death in any way, it must do so in some way very different than that way in which we exist now.

For now, we live in a temporal world, and once our body and brain ceases to function, then our mind can no longer function in any way in this temporal world, and we cease to exist in this temporal world

So if any part of us is to continue to exist, it must do so in a non-temporal world. In this temporal world, the pattern of our relationships with people, places and things will continue to exist as a hole, and will evolve as a hole that changes shape over time and ultimately becomes unrecognizable. So our effects may be eternal in this world, but our consciousness in this world may not be.

Our current consciousness and awareness is a temporal one. We experience the one way flow of time. We are not actually conscious of any permanent thing, only of the changing world as time flows forwrd.

In this sense, we are like the ghost in the machine of a computer system running a computer program, or programs, written in a procedural language and style. That is, the instructions in our program flow in a linear sequence, with each instruction impacting and giving way to the next instruction. Oh, there are the occasional looping structures, and even the occasional out-of-left-field chaos causing go-to; but we nevertheless experience all these things as linear and procedural.

It seems apparent to me that , if anything of us survives it must do so outside time, and any surviving consciousness could not experience the same sort of temporal, linear, procedural existence of which we are now aware. Oh, I can imagine a timeless essence of our "being" existing timelessly but statically, observing the remnant of our "informational holes" evolving and dissolving away in the temporal universe; but this would be a cold survival after all, hardly worthy of the name.

But perhaps there is a non-temporal world of eternity, that has structures more reminiscent of higher order programming structures. So, for instance, functional programming takes and builds upon its procedural predecessors. So maybe our better, more re-useable parts, that we develop in this temporal existence, are recycled into functional units in a non-temporal world. There would still be a direction of logic flow, but it would still be a higher order reality than a linear, procedural one.

But beyond this perhpas we can imagine an object oriented world, one in which the more functional, re-useable parts of people and things from this lower, temporal world are re-packaged into objects containing both functional methods and also parameters of state. These higher order objects, and the relationships they form amongst themselves, can be imagined to exist in a more timeless state than mere procedural programs, or even functional ones, in that the complex object oriented structures of such a timeless world would hold meaning even when viewed as a whole, and not just when played linearly like a phonograph record.

There must be some higher order cognate of time, in this object oriented world, but we are not able to conceive of it at this time. Our awareness of existence in this higher order world would be very different than our current awareness of linearly flowing time, but must be more in teh way of sensing the movements of meaning and relationships amongst the informational matrices of this higher order, object oriented universe.

One can visualize a universe in which there are are an infinite number of infinite dimensions, but these dimensions also keep expanding at an infinite speed forever. This expansion could be thought of as the cognate of time. Entities in this world could freely move back and forth in any dimension, and could experience the totality of reality all at once, but still experience the novelty of "time".

I do not know how Aspect Oriented Programming fits into this picture, if at all. But one can imagine higher orders of programming logic and structure than OOP, whether AOP qualifies or some other, yet undescribed programing paradigm. And, we do not know how many higher layers of programming structure exist beyond our current technical knowledge.

Perhaps this is one reason why programmers are so passionate, and even religious, about their programming tools; becuase they intuitively sense that we are dealing with ideas that, however crudely, mirror eternal realities of immense significance.

Posted by Ron Stephens @ 2006-01-01 13:11:38 [permalink]
Categories: philosophy

Pragamtic Python


The podcast can be found at:

Python411 Podcast Series

Here are the links for sites mentioned in the podcast:

the Python Challenge

Bruce, the Presentation Tool

Activestate for Komodo IDE

WingIDE

Bruce Eckel's comments

Enjoy!

Posted by Ron Stephens @ 2005-12-18 22:28:22 [permalink]
Categories: python

Python and XML, HTML, AJAX


The podcast can be found at:

Python411 Podcast Series

Here are the links from the show:

Tutorials

XML on Python.org website

and links to help promote Python411:

Vote for Python411 on PodcastAlley

Python411 on Yahoo

Python411 on PodCastPickle

Posted by Ron Stephens @ 2005-12-04 17:12:10 [permalink]
Categories: (unclassified)

PyGoogle


Here are some links to sites metioned in teh latest Python411 podcast:

pyGoogle
Python interface to the Google API

flickr.py
Python interface to the flickr API

Beej's Flickr API
an alternative Python interface to the flickr API

del.icio.us experiments using Python
hackdiary site

PyYahoo
hackdiary site

Googly.py
Googly.py

Google neighborhood

pyigs or Python for Google Suggest
hackdiary site

PyAmazon

A Python wrapper for the Amazon web API. Allows you to do Amazon searches by keyword, ASIN, UPC, author, artist, actor, director, manufacturer, list, similar, or best seller.

PyBlogger

A Python wrapper for the Blogger API

PyGoogle

A Python wrapper for the Google web API. Allows you to do Google searches, retrieve pages from the Google cache, and ask
Google for spelling suggestions.

PyManila

A Python wrapper for the Manila API. Allows you to script your Manila site via XML-RPC. Supports complete Manila remote
scripting specification, including access to over 350 preferences.

PySiteStats

PySiteStats generates reports from Apache-style access logs. It is specifically geared towards weblog-ish sites, but it should
work with access logs from any type of site.

PyTechnorati

A Python wrapper for the Technorati web API. Allows you to search Technorati for incoming links to a tracked site (such as a weblog).

PyTextile

A Python port of Textile, Dean Allen's Human Web Text Generator.

Posted by Ron Stephens @ 2005-11-13 12:37:32 [permalink]
Categories: python

Magic: List Comprehensions, Iterators, Generators, Generator Expressions, Decorators and Sets


Subscribe to the podcasts at Python411 .

Links mentioned in the show:

MIT Lectures on Structure and Interpreatation of Computer Programs

Wax

Posted by Ron Stephens @ 2005-10-30 11:18:19 [permalink]
Categories: python

TurboGears and More Web Programming Tools, the Podcast


Check out the podcast at Python411 or subscribe at RSS Feed. See Links to sites metnioned in the show below:

TurboGears

Beautiful Soup

Firedrop2

PyGoogle

Mygale web spider

NLQ.py"

Enjoy! ;-)))

Posted by Ron Stephens @ 2005-10-23 10:30:32 [permalink]
Categories: (unclassified)

Python Scripts


Checkout our latest Python411 podcast at Python411 and try our updated Ask Merlin online scripts at Decision Vision

Also, Doug Kaye over at IT Conversations is looking for Python coders to help create a new podcast creation and managment software tool, youi can join teh discussion and the mailing list over at Blogarithms

Drop me a line over on the AwareTek discussion forum also..

Posted by Ron Stephens @ 2005-10-16 15:30:54 [permalink]
Categories: python

Web Projects Shownotes


Has anyone tried TurboGears yet? Anyone willing to share any comments on another web framework? Below are truly cool links to the other Pythonic podcasts and audio files I mentioned, as well as TurboGears:



Python Audio on the Web! is a list on the www.python.org main web site with links to Python audio including Python411, GatorJUG and presumable more to come in the future!

Audio "podcast" of PyCon talks!

TurboGears Web MegaFramework!

PyChing, a fun program using the Tkinter gui toolkit!

And, last but not least, the Python411 podcast series!!!

Posted by Ron Stephens @ 2005-10-04 07:40:41 [permalink]
Categories: (unclassified)

Jython


A new Python411 podcast about Jython has been posted at the Python411 Web Page

Enjoy!

Please leave any comments on the Discussion Forum

Posted by Ron Stephens @ 2005-09-25 21:42:22 [permalink]
Categories: (unclassified)

Python's Niche


Python's Niche may well turn out to be as the best general purpose programming language. Hear all about it at Python411 Podcasts Page along with Errata from the Modules, Packages, and Distutils podcast.

Posted by Ron Stephens @ 2005-09-18 17:01:08 [permalink]
Categories: (unclassified)

Top 10 Python Web Sites


Here they are!

1. Python Home Page

2. The Python Newsgroup

3. Planet Python

4. Daily Python-URL

5. Fredrik Lundh's weffbot.org site

6. PyZine

7. The Vaults of Parnassus

8. Dr. David Mertz' Gnosis Software's Articles on Pythonic Programming

9. del.icio.us/tag/python

10. AwareTek's Python Learning Foundation

Posted by Ron Stephens @ 2005-09-04 15:32:12 [permalink]
Categories: python

Choose your Programming Language:

Which Programming Language is right for you?

Java, Visual Basic, C#, JavaScript, PHP, Lisp/Scheme, C/C++, Perl, Python, or Ruby?


By ranking the importance of the criteria below, you can use this program to help you choose between ten of the most popular programming languages today, Java, Visual Basic, C#, JavaScript, PHP, Lisp/Scheme, C/C++, Perl, Python, or Ruby. Input an integer from 1 to 100, as a weight or relative importance factor for each of the criteria below. 1 means that the criterion is not very important to you, 100 means that it is extremely important to you. No one programming language is perfect for all people at all times for all jobs; but if you carefully rank the relative importance to you of all the criteria below, you will find out, scientifically, which programming language is right for you at this time ;-))))

ease of learning the language

ease of using the language....

speed of program execution..

quality of available tools......

popularity of the language....

power and expressiveness......

cross-platform availability....

low cost of language tools.....


ease of client side web scripting.


ease of server side web scripting.



Click to score the languages suitability to you!

Scores: Higher is better. Do not write in here.

Reset to zeroes and try again?

Posted by Ron Stephens @ 2005-09-04 14:38:26 [permalink]
Categories: python

CGI programming with Python: a Podcast Tutorial


Check out my new CGI Programming with Python Podcast which refers to and explains my online Python CGI script Ask Merlin, the source code for which is here.

Also, here are links to 3 good online Tutorials about Python and CGI:

CGI Web Applications with Python, Part One

from PyZine

CGI and Python

an Interactive Tutorial

Writing CGI Programs in Python (FAQ)

Posted by Ron Stephens @ 2005-08-13 23:50:52 [permalink]
Categories: (unclassified)

Updated Mini How-To for Firedrop2

Firedrop Mini How-To Docs for New End Users (updated August 6, 2005)

You may want to listen to this podcast before working with the Mini How-To:

Firedrop2 Podcast

rss to subscibe to this podcast series

Vote for Python411 at PodcastAlley

These links below are indispensable aids:

Download wxPython

Download wax and Firedrop2

Fuzzyman's Plugins Tutorial

Hans Nowak's Firedrop2 Docs

Firedrop is a client side weblog creation and web content management system. It is open source and written in Python by Hans Nowak. It is cross platform and runs on Windows, Linux, Mac OS X and most Unix like systems. Fuzzyman has created a plugin creation tool and some nice plugins.

This Mini How-To is meant to take you step by step through the installation and first use of Firedrop. if you have any questions, please don't hesitate to ask them at the Discussion Forum

Installation and pre-requisistes: You must have installed Python, wxPython, and wax before you install firedrop2. See the links at the bottom of this document for the locations of these files. While firedrop should work with any recent version of Python, be sure you install the latest versions of wxPython and wax. At the time of this writing the latest version of wxPython is wxPythonOSX-2.6.1 nd the latest released wax is wax-0.2.68 and the latest version of firedrop2 is firedrop2-2005.9.

Wax 2.xx does not work with wxPython 2.6xx, you must use wxPython 2.5xx with wax 2.xx. In order to use wxPython 2.6.x you must use wax 3.x, which is under development by Hans Nowak and can be obtained by using CVS on Sourceforge at this time.

The wxPython, wax and firedrop2 folders must be placed in the Python site-packages folder. On Windows, this will probably b in C:\Python 23\Lib\site-packages. In Mac OS X, this will be in something like /Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages. Do not guess at this stage, these folders must be in the site-packages directory in order to work.

Wax is a Hans Nowak open source project that sits atop the cross platform wxPython and is used to write firedrop2's GUI front end. I have installed and used Firedrop2 on both Windows XP and on Mac OS X 10.4, and I see no reason why anyone should have any problems on any Linux or BSD system. On most systems, the wxPython, wax, and firedrop2 download should be in a zip or otherwise archived file that will be unpacked by your system tools more or less automatically, you just need to tell your machine which directory to put them into (site-packages). One other important point: the wax and firedrop 2 folders that you place in your site-packages directory must be named exactly that, wax and firedrop2. if the folders you unpack include version numbers, or anything else, you must rename them to simply wax and firedrop2, because the firedrop programs look for those folder names and will not work otherwise. Note that the firedrop2 folder will not work if it is called firedrop; it must be named firedrop2.

So, to summarize, install in this order, Python, then wxPython, then wax, then firedrop2; and make sure wxPython, wax, and firedrop2 are all in your site-packages directory.

Opening the firedrop GUI from the firedrop2 folder: Inside the firedrop2 folder that is now in your site-packages directory, you will find a few dozen python programs. The only one you must concern yourself with is the wxfiredrop.py program. Run this program, wxfiredrop.py, either from the command line or by double clicking on it in your file browser. This opens up the firedrop GUI that looks like this on MAC OS X:





Note that on Windows, the title bar that sits atop the whole Mac screen is integrated into the main firedrop2 GUI frame; this title bar includes the drop down menus " File, Edit, Format, Window, and Help". Below this you will find a row of buttons labeled "Open, New, Save, Build, Preview, Upload, and One-Click." Also, on Windows, the buttons will be rectangular instead of oval (pill-shaped) on the Mac.

Create a weblog or article collection folder: Now, using your system tools, create a new folder to hold your weblog or article collection. This folder can be anywhere you want it, just remember where you put it ;-))). let's say you create a new, empty folder called weblog in your desktop directory. Then, manually, create a new empty folder inside your weblog folder and name it weblog_html. This folder will be used to hold your actual weblog html files.

Now, on the firedrop2 title bar, click "File" and a drop down menu appears giving you a choice between "new site" and "open site". Click on "new site" and a dialog box opens. You must choose between creating an ArticleCollection or a Weblog. Let's say you chose "Weblog". Then you must choose a directory, and let's say you choose the new folder (directory) called "weblog" that you just created. Click OK and firedrop2 will fill-in your weblog folder with the files build.ini, build.py, page_template.html and entry_template.html.

Build.ini will look something like this:

output_dir="weblog_html"

archive_method = "d:7"

page_template = 'page_template.html'

entry_template = 'entry_template.html'

num_front_page = 20

frontpage_name = 'index.html'

root_url = 'http://www.awaretek.com/weblog/'

categories = ["philosophy", "general", "firedrop", "python", "poetry"]

title="AwareTek weblog"

description = ""

ftp_server = 'awaretek.com'

ftp_login = 'xxxxx%xxxxxxxxx.com'

ftp_port = 21

ftp_password = 'xxxxxx'

ftp_startdir = '/usr/local/apache/htdocs/weblog'

rss_filename = 'index.xml'

macro_filename = 'macros.py'

blogping = 0

You should open the file build.ini and fill in the root url of the website you will use for your Blog, as well as the categories you will use to order your posts (you can leave this blank for now, if you want), and the ftp information for firedrop's automatic uploader.py program to find your web site and login, including your site password. If you build an ArticleCollection, your build.ini will look very similar and you must add the same kind of information.

Now, if you look at the file page_template.html you will see the default setup for how your blog page will look. This can and should be customized by you to be whatever you want.

Your entry_template must be filled out appropriately.

I seem to find it easiest to learn by example ;-)))

here's a link to my my entry_template code

entrytemplate

Open Weblog: Now, using your firedrop GUI, click on the "Open" button. This will open up a file browser and you should navigate to the 'weblog" folder you recently created and that was populated with build.ini etc. by firedrop2. Upon accepting and choosing the "weblog" folder or directory, firedrop will "open" it, but it is still "empty" of any actual blog posts. The blog post titles, as you create them, will appear in the vertical rectangular window on the left; the actual post you are working on will be typed into the larger window on the right.

Create a New Post: Now, click on the "New" button. On the top of the blog post window, above the two -- dash lines, will appear two attributes, insert_date and modified_date. These two attributes are self explanatory. You can add any new attributes you want! This is one of the best features of Firedrop. For instance, most folks will want to create a categories attribute, and in fact you may recall that your build.ini already has a Python list called categories. If you add a string "poems' to your build.ini categories list, then you can add an expression categories="poems' above the two -- dashed lines in your blog post window.

Below the two -- dashed lines, you will see one line saying "New". Erase this line and insert instead your own Title of choice for this blog post. Let's say you choose "Hello World".

Now, for entering the main text of the blog post, you have two choices (actually more are available, but I am only going to cover two). First, you can just hit the return key twice and, starting on the second line below "Hello World" you can just type plain text. In this mode, you can also use HTMl tags, such as paragraph tags to set off separate paragraphs, and Some URL to set up web links.

The second alternative is to use Hans Nowak's sextile format. In order to do this, after typing in your blog post title "Hello World", immediately hit the return button and then type % below the "Hello World" title line, and then hit the return key twice (do not even hit the space bar after typing % before you hit the return key twice). Your blog post window should look like this:

insert_date='2004-01-31 15:38:48'
modified_date='2004-01-31 15:38:48'
--
Hello World
%

Main body of blog post text here...

I recommend using sextile, and I almost always do. The first difference you will notice (and appreciate) when using sextile is that you will not need to use the paragraph tags to offset paragraphs. Instead, you can just hit the return key twice to separate two paragraphs with a line of white space, just like you do in a normal text editor. You can still use regular html tags under sextile. There are many other features for ease of use in sextile and you are encouraged to read Han's docs on sextile on his web site. If sextile causes you any confusion, just go back to using plain text until you have furher studied sextile.

Whether you use sextile or not, you also will have available a powerful feature called "macros" to simplify the creation of blog posts. You are encouraged to read Hans' docs on Macros on his web site. Macros essentially allow you to define your own ease-of-use custom features.

Saving and Building and Uploading: Once your new post is as you want it, you click on the "Save" button and then on the "Build" button. You must click on these two buttons in the proper order, first "Save" and then "Build". "Save" saves a file of the form 00001.fd2 in your weblog folder. if you are saving your 100th post, the file saved will be 00100.fd2. When you click on the "Build" button, the program build.py (in your firedrop2 folder in your site-packages directory) will be run. build.py will use your build.ini file and will use the page_template.html file and the entry_template.html file to use your 00001.fd2 file to create an html file called index.html in your weblog_html folder. Recall that you created an empty folder called weblog_html and placed it in your weblog folder. This index.html file is your weblog. (If we had been creating an ArticleCollection, the process would have been the same but the file created by build.py would be given its own title.html name).

Now, you can click the "preview" button if you like to see what your blog post html (or your new article) will look like. Then you must click the "Upload" button to run the python script uploader.py, which uses the information you supplied to build.ini to log into your web site using ftp and upload the newly revised weblog (or new web article) to your web site.

There is also a button called "One Click" on the firedrop2 GUI, but I do not use it. One click will automatically do the whole sequence in order, save, then build, then upload. i find it safer and more helpful to do them one step at a time.

There is also a "Preview" button, that when clicked automatically opens up the created html file in your browser, in order for you to make sure it is as you want it before you upload it.

Since firedrop is open source and in Python, you can also do most of these things from the command line rather than from the GUI. Doing stuff from the command line is good because it helps you to see more of what goes on behind the scenes, and may give you ideas for future use.

On Windows XP, I have found everything to work perfectly. On Mac OS X 10.3, the only two features I have had trouble with are the "Preview" button, which I don't use any way (one can always click on the index.html file to open manually to preview); and the uploader.py script, which I think is a problem between my Mac and my website. At any rate, I use an ftp program manually from the command line to upload my files to my website.

However you have done it, now you have accomplished something!

Final Comments: There is of course a lot more you can do with Firedrop. Keep in min that tis is written in Python and is pen source, adn you can add features and customize two you hearts content. You can also explore the code and se how everything works. meanwhile, Hans is still coding away and adding features, so thing may change. keep is touch with his web log at http://www.zephyrfalcon.org/weblog/ fro future developments. And, if you have any questions about Firedrop or these docs, please ask them at http://pub38.ezboard.com/bawaretek

Important Links



Hans Nowak's Documentation page for Firedrop, wax, sextile etc.

Hans download page for firedrop, wax etc.

Python 2.3 download page

wxPython download page

downloadable and printable HTML version of this Firedrop2 mini How-To

Posted by Ron Stephens @ 2005-08-06 16:30:34 [permalink]
Categories: firedrop

Python411: Firedrop2 Podcast


Firedrop2 is a weblogging and content management system written in Python by Hans Nowak and supplemented by Fuzzyman with a plugin system. Open source and extensible in Python, Firedrop2 is good tool and a worthwhile learning exercise. This podcast helps you to install Firedrop2 and get started creating your blog.

Firedrop2 Podcast

rss to subscibe to this podcast series

Vote for Python411 at PodcastAlley

These links below are indispensable aids;

Firedrop2 Mini-How To Tutorial by me

Download wxPython

Download wax and Firedrop2

Fuzzyman's Plugins Tutorial

Hans Nowak's Firedrop2 Docs

Posted by Ron Stephens @ 2005-08-05 17:46:40 [permalink]
Categories: python, firedrop

AwareTek Podcast Series and Python411 Podcast Series


Well, here I am, I made it back to this Blog! ;-)))

I am currently running two podcasts series, see below. Please give me some feedback, either by voice mail or on the disccussion forum (also see below).

Call 206-600-5404 to leave a voice message or comment. Be sure to mention whether it is OK for me to use the comment in a future podcast ;-)))

AwareTek Podcast Series

Python411 Podcast Series

Click here to send email to Ron Stephens


Discussion Forum




Posted by Ron Stephens @ 2005-08-01 19:54:50 [permalink]
Categories: (unclassified)

A jpg of an old painting that inspired a poem....


30+ some years ago, I saw a picture of a painting that inspired me to write a poem. The poem has been modified a few times down through the years, but the existential angst that inspired it certainly came from my reaction to that pictue. I could not find the picture in recent years; I didn't recall who painted the painting, nor what book I saw the picture in. Now, thanks to some imaginative googling, I have found it, and here it is...




Please click to play mp3 audio file of me reading the poem

When quakes shall root out foundings to the core,
When bold Abora shakes with cholic roar,
Then let the one in Abyssinia weep
That man so rashly lays him down to sleep.

How small a loss it were to lose a race
Of feeble mind and self-deceiving face,
Who write their songs with fingers in the sand
And like Sir Spens, go walking on the strand.

Yet still a pity should we lose our hope,
Questing, ever questing, time always our foe...

Before the solemn eyes of aged Pope
Man holds the last spectacular at bay,
No more we weep; the moon is full again
Today; Eternity is then tomorrow.

Posted by Ron Stephens @ 2005-06-06 17:43:56 [permalink]
Categories: ArtBlog, poetry

Comments


I will be adding a "comments" capability to this weblog soon.

Posted by Ron Stephens @ 2005-06-01 19:04:10 [permalink]
Categories: (unclassified)

Discussion Forum


I will find a way to do an easier feedback mechanism. I will probably put up a comments capability to this blog, and also perhaps a better dicscussion forum setup. Please stay tuned...

Posted by Ron Stephens @ 2005-05-22 19:54:26 [permalink]
Categories: ipodcasting