WSGI Is Teh Awesome
@ 2008-10-05 18:52:18
Filed under: Python Tech
Check out how easy it is to make a basic self contained framework that does object publishing based on class name ....
And the views ...
digg it
seed it
del.icio.us
ma.gnolia
Death To Dogmatisim and Pragmatism. Long Live reality. @ 2008-10-04 17:16:03
Filed under: Personal Philosophy Tech
Most everyone knows what both Pragmatism and Dogmatism both mean, but for those who don't, let me start with the definitions from Wikipedia:
By these definitions it would seem that pragmatism means learning from past mistakes and trying to do things the right way, while dogmatism means doing it however has been decreed by the powers that be. The interesting thing about these definitions and what most people see on paper is that they are not very pragmatic: What is being defined is not how they are used, and thus should probably not be used.
In the engineering world we are faced with side a versus side b. A lot of times this is either people who like language a versus people who like language b or, more commonly people who write code versus people who must keep said code running. Using the latter as the example it's easy to see why there is a disagreement. One side is worried about features and time lines while the second group is worried about stability and security. We can argue all day that they should all be worried about all of those items (and yes, I would agree) but in engineering that would be a very dogmatic view.
One of the goals of pragmatism within engineering organizations is to find the best way to do something. The end result is usually a dogmatic decree that x must be done y way. It seems like pragmatism can not live without dogmatism even when it tries ....
By now it should be clicking as to where I'm going with this. It's not nearly as black and white as most people think when they are pitting dogmatism versus pragmatism. If we ignore the side meanings of both views (which are usually used in naming calling 'Stop being dogmatic!') we can see that there are times where both idealogies make perfect sense. What I believe this ends up meaning is that a combination of the two views must be used with dogmatism defining where and when. Let me explain why dogmatism must rule pragmatism ....
Say your trying to figure out if you should do a security audit of your brand new outsourced Java application. In an organization that allows for pragmatism to define when pragmatism or dogmatism is to be used you get to make the choice. You may be thinking that the dates are coming up fast, and, well, it's written in java so what could possibly go wrong. In your view it doesn't need a security audit. In the same scenario if you decided that dogmatism is the best route and that the security team should review it then they would. As you can see, if a pragmatic view of when each philosophy is used you are introducing chaos. Some applications get audited, some don't. The rhyme and reason is in the head of the person making the decision on which philosophy to follow. You also end up in an area that tends to cause problems ... few people, when given the chance to make their own decision, will defer to someone or something else to make the decision for them .... "Power tends to corrupt, and absolute power corrupts absolutely." Unless you are the dictator, the dictator sucks. If we switch over to dogmatism as the defining philosophy as to when you can be pragmatic and when you must be dogmatic it is clear(er). You have the same issue but the organization has stated that all applications must be audited by the security team. Well, that was simple, it applies to everyone and it's obvious what needs to happen. The same organization may say that when deciding to write a new application you can be pragmatic and choose the language that you think makes the most sense for the problem at hand. This is a much clearer, cleaner, safer and reproducible world.
On a side note I find this quite interesting as it is very similar to the arguments over if absolutes exist. Post modernists generally state that no absolutes exist while modernists and post-post-modernists state they do (but in different ways). The idea being that if no absolutes exist then the rule that no absolutes can not exist, as it is an absolute ("The only rule is there are no rules"). Pragmatism is very much in the same vein. It must be dogmatic in it's definition for it to exist, so even on it's own you could argue that pragmatism is a subset of dogmatism. ... but that is not what this posting is about :-).
Another side note I want to point out is that people see each other in relative terms when it comes to these philosophies. I'd like to believe that I'm pretty close to the center when it comes to the pragmatic versus dogmatic philosophies. I've been accused of being extremely reasonable, dogmatic, pragmatic, and closed minded. Someone who is very pragmatic (which I think would be a bad thing) would see me as dogmatic. Someone who is very dogmatic (which I think would be a bad thing) would see me as pragmatic. A person who is very pragmatic would see someone who was less pragmatic as dogmatic.
The reality is that both philosophies must be used in a clear and defined way (IE: ruled by a dogmatic decree as to when each philosophy is accepted). They both must be used as tools and used when the tool honestly fits the job (not just when the tool might be easier to use for personal reasons).
digg it
seed it
del.icio.us
ma.gnolia
Static Items In Functions With Falcon @ 2008-10-02 22:21:25
Filed under: Code Tech
I've seen statics in classes but I've never used them in functions before. They are nifty!
Or a similar type thing with post function workflow ....
digg it
seed it
del.icio.us
ma.gnolia
Django Command Extensions @ 2008-09-30 22:40:29
Filed under: Code Django Python Tech
I'm looking forward to the next release of Django Command Extensions. This post pointed me to it and it looks quite awesome! See this screencast for some cool stuff it does.
digg it
seed it
del.icio.us
ma.gnolia
Upgraded Blog Software @ 2008-09-28 17:24:24
Filed under: Python Scroll Tech
I'm now running the latest development HEAD of scroll. If you see any issues please let me know. You may notice code now goes to a development section with listings of stuff I work on instead of just throwing you into a bunch of code repositories.
digg it
seed it
del.icio.us
ma.gnolia
Moved to nginx @ 2008-09-28 13:09:23
Filed under: Code Personal Tech
It's done. I'm not running on nginx instead of apache. So far things do seem a LOT faster. Do note that the code link will be out of service for a bit while I figure out how I want to structure the projects I work on. I've decided that just posting a link to gitweb is a bit silly as it doesn't actually say anything other than 'here is some code'.
digg it
seed it
del.icio.us
ma.gnolia
KOF 12 ... How Did I Not See This @ 2008-09-27 21:35:36
Filed under: Media
digg it
seed it
del.icio.us
ma.gnolia
Japanese Kids Are Crazy @ 2008-09-20 20:10:15
Filed under: Comedy




digg it
seed it
del.icio.us
ma.gnolia
A Web OS? Are You Dense? A Great Post @ 2008-09-20 11:39:04
Filed under: Code Frustration Tech
Tedd's post on chrome being an OS killer is spot on.
digg it
seed it
del.icio.us
ma.gnolia
python-virtualenv testing build @ 2008-09-13 19:55:41
Filed under: Fedora Python Tech
python-virtualenv was built and requested for testing today. Once it lands in testing give it a shot. You can find more information about virtualenv via pypi
digg it
seed it
del.icio.us
ma.gnolia
Something In Django I Actually Don't Like @ 2008-09-11 23:10:22
Filed under: Code Django Python Tech
A while back I submitted a patch to get the newforms code closer to the offical style guide for python (AKA pep8). For the heck of it I decided to see how the code in django falls in line with the the guide. Being an avid pythonista this made me nearly cry (note that the numbers shown are the minimum issues, so even though the number might be 2 it's possible that there is really more issues that would be found) ...
Here are the results ....
It's not terrible, but it could become bad over time if people end up moving away towards personal coding styles rather than Django's style which is based off of pep8.
digg it
seed it
del.icio.us
ma.gnolia
nginx Here I Come @ 2008-09-11 00:09:28
Filed under: Django Tech
I'm close to replacing Apache httpd with nginx. I'm impressed with the speed of nginx compared with Apache httpd and Lighttpd. I've done some tests with some of my web apps and it's been pretty simple to use nginx with them. Django-fcgi + nginx here I come!
digg it
seed it
del.icio.us
ma.gnolia
Django ModelAdmin + Module Snippet @ 2008-09-10 19:02:37
Filed under: Code Django Python Tech
I just posted a Django snippet to bind a module full of ModelAdmins with a module full of Models. It was helpful for me so I figured others might like it. I've also submitted patches to the cab application which runs Django Snippets.
digg it
seed it
del.icio.us
ma.gnolia
Google Chrome ... Really? Windows Only? @ 2008-09-09 15:22:16
Filed under: Code Frustration Tech
That worries me ... a lot. Without a lot of community involvement I have a bad feeling that Google Chrome won't be anything but Windows only. When I've seen such strong usage of OS specific items it usually means the developers who wrote the code only know how to work with one system (not counting the IDE project files which is a big warning on it's own). It may not be true, but from first look it is something to worry about.
digg it
seed it
del.icio.us
ma.gnolia
In Charlotte, NC Waiting To Go To Tampa @ 2008-09-05 20:05:18
Filed under: Personal Tech
Bit of a bumpy ride from Raleigh, NC to Charlotte, NC but nothing to bad. I met and interesting fellow engineer who works in Raleigh. We talked about software engineering, Linux, Java, Python, ESB, India and a lot of other interesting topics. I also overheard an interesting conversation from a guy who works for Advanced Global Communications talk a bout a mess up with a rental car. Inside the air plane he told the rep on the phone his full name, full credit card number, expiration date and more loud enough for us all to hear. Part of me wanted to jump and and tell him nicely he may not want to finish that information. On the other hand stopping him from saying something in a conversation that I wasn't invited into seemed oddly rude as well. In any case hopefully no one wrote down the information.
At this moment I'm waiting to board the connecting flight to Tampa, FL. While I was checking out to see if there was free wifi in the airport I came across one of my [sarcasm]favorite[/sarcasm] companies:

It took a lot of self control to not start poking around ..... *grumble*accenture*grumble*.
I did start writing some code to make skeleton structure for new python projects. The idea is that you will pass it license, documentation system, path, name and maybe a few other things and it would create the base structure, license files, base documentation files, setup.py script and maybe more. So far I've just done the license part as well as listing known licenses to chose from. I did it quickly to get it working so I'm sure, if I decide to actually finish this, it will not resemble what I've done so far but, hey, you have to start somewhere!
digg it
seed it
del.icio.us
ma.gnolia
Filed under: Python Tech
Check out how easy it is to make a basic self contained framework that does object publishing based on class name ....
# Filename: server.py
import views
def dispatcher(environ, start_response):
obj_name = environ['PATH_INFO'][1:].replace('/', '_')
if obj_name == '' or obj_name == '_':
obj_name = "root"
elif obj_name[-1] == '_':
obj_name = obj_name[:-1]
try:
obj = getattr(views, obj_name)
return obj(environ, start_response)
except AttributeError, ae:
start_response('404 Not Found', [('Content-type', 'text/html')])
return ['404']
if __name__ == '__main__':
from wsgiref import simple_server
httpd = simple_server.WSGIServer(('',8000),
simple_server.WSGIRequestHandler)
httpd.set_app(dispatcher)
try:
httpd.serve_forever()
except KeyboardInterrupt:
pass
And the views ...
# Filename: views.py
def root(environ, start_response):
start_response('200 OK', [('Content-type', 'text/html')])
return ['Welcome']
def show_environ(environ, start_response):
start_response('200 OK', [('Content-type', 'text/html')])
sorted_keys = environ.keys()
sorted_keys.sort()
return [str(environ)]
def some_longer_url(environ, start_response):
start_response('200 OK', [('Content-type', 'text/html')])
return ['hey hey']
digg it
seed it
del.icio.us
ma.gnolia
Death To Dogmatisim and Pragmatism. Long Live reality. @ 2008-10-04 17:16:03
Filed under: Personal Philosophy Tech
Most everyone knows what both Pragmatism and Dogmatism both mean, but for those who don't, let me start with the definitions from Wikipedia:
Pragmatism is a philosophic school generally considered to have originated in the late nineteenth century with Charles Peirce, who first stated the pragmatic maxim. It came to fruition in the early twentieth-century philosophies of William James and John Dewey and, in a more unorthodox manner, in the works of George Santayana. Pragmatists consider practical consequences or real effects to be vital components of both meaning and truth. Other important aspects of pragmatism include anti-Cartesianism, radical empiricism, instrumentalism, anti-realism, verificationism, conceptual relativity, a denial of the fact-value distinction, a high regard for science, and fallibilism. Dogmatism is the established belief or doctrine held by a religion, ideology or any kind of organization, thought to be authoritative and not to be disputed, doubted or diverged from.
By these definitions it would seem that pragmatism means learning from past mistakes and trying to do things the right way, while dogmatism means doing it however has been decreed by the powers that be. The interesting thing about these definitions and what most people see on paper is that they are not very pragmatic: What is being defined is not how they are used, and thus should probably not be used.
In the engineering world we are faced with side a versus side b. A lot of times this is either people who like language a versus people who like language b or, more commonly people who write code versus people who must keep said code running. Using the latter as the example it's easy to see why there is a disagreement. One side is worried about features and time lines while the second group is worried about stability and security. We can argue all day that they should all be worried about all of those items (and yes, I would agree) but in engineering that would be a very dogmatic view.
One of the goals of pragmatism within engineering organizations is to find the best way to do something. The end result is usually a dogmatic decree that x must be done y way. It seems like pragmatism can not live without dogmatism even when it tries ....
By now it should be clicking as to where I'm going with this. It's not nearly as black and white as most people think when they are pitting dogmatism versus pragmatism. If we ignore the side meanings of both views (which are usually used in naming calling 'Stop being dogmatic!') we can see that there are times where both idealogies make perfect sense. What I believe this ends up meaning is that a combination of the two views must be used with dogmatism defining where and when. Let me explain why dogmatism must rule pragmatism ....
Say your trying to figure out if you should do a security audit of your brand new outsourced Java application. In an organization that allows for pragmatism to define when pragmatism or dogmatism is to be used you get to make the choice. You may be thinking that the dates are coming up fast, and, well, it's written in java so what could possibly go wrong. In your view it doesn't need a security audit. In the same scenario if you decided that dogmatism is the best route and that the security team should review it then they would. As you can see, if a pragmatic view of when each philosophy is used you are introducing chaos. Some applications get audited, some don't. The rhyme and reason is in the head of the person making the decision on which philosophy to follow. You also end up in an area that tends to cause problems ... few people, when given the chance to make their own decision, will defer to someone or something else to make the decision for them .... "Power tends to corrupt, and absolute power corrupts absolutely." Unless you are the dictator, the dictator sucks. If we switch over to dogmatism as the defining philosophy as to when you can be pragmatic and when you must be dogmatic it is clear(er). You have the same issue but the organization has stated that all applications must be audited by the security team. Well, that was simple, it applies to everyone and it's obvious what needs to happen. The same organization may say that when deciding to write a new application you can be pragmatic and choose the language that you think makes the most sense for the problem at hand. This is a much clearer, cleaner, safer and reproducible world.
On a side note I find this quite interesting as it is very similar to the arguments over if absolutes exist. Post modernists generally state that no absolutes exist while modernists and post-post-modernists state they do (but in different ways). The idea being that if no absolutes exist then the rule that no absolutes can not exist, as it is an absolute ("The only rule is there are no rules"). Pragmatism is very much in the same vein. It must be dogmatic in it's definition for it to exist, so even on it's own you could argue that pragmatism is a subset of dogmatism. ... but that is not what this posting is about :-).
Another side note I want to point out is that people see each other in relative terms when it comes to these philosophies. I'd like to believe that I'm pretty close to the center when it comes to the pragmatic versus dogmatic philosophies. I've been accused of being extremely reasonable, dogmatic, pragmatic, and closed minded. Someone who is very pragmatic (which I think would be a bad thing) would see me as dogmatic. Someone who is very dogmatic (which I think would be a bad thing) would see me as pragmatic. A person who is very pragmatic would see someone who was less pragmatic as dogmatic.
The reality is that both philosophies must be used in a clear and defined way (IE: ruled by a dogmatic decree as to when each philosophy is accepted). They both must be used as tools and used when the tool honestly fits the job (not just when the tool might be easier to use for personal reasons).
digg it
seed it
del.icio.us
ma.gnolia
Static Items In Functions With Falcon @ 2008-10-02 22:21:25
Filed under: Code Tech
I've seen statics in classes but I've never used them in functions before. They are nifty!
#!/usr/bin/env falcon
// Simple example of static function usage in falcon
directive version=0x000001
function hello_you( )
// static means the function remembers these items call after call
static
old_name = nil
end
// Only say someone was here is old_name isn't nil
if old_name != nil
printl( old_name, " was just here!")
end
// Ask for their name and say hello
print( "What is your name? " )
name = input()
printl( "Hello ", name)
old_name = name
end
printl("(Ctrl+c to end this madness ...)")
while true
hello_you( )
end
Or a similar type thing with post function workflow ....
#!/usr/bin/env falcon
// Simple example of post function calling via registered functions
directive version=0x000001
// mock simple functions
function one( )
printl( "ONE!" )
end
function two( )
printl( "TWO!" )
end
function three( )
printl( "THREE!" )
end
// --------------------
// Map what a user will call to execute a function
register = ["1" => one, "2" => two, "3" => three]
// Caller, executer and holder of other function workflow
function fun( nextfuncno )
static
msg = "Executing 1"
func = one
end
printl( msg )
func()
try
msg = @ "Executing $nextfuncno"
func = register[nextfuncno]
catch
printl( @ "No registered function named $nextfuncno\nExiting..." )
exit(1)
end
end
printl("(Ctrl+c to end this madness ...)")
while true
print( "What function should I call after the existing function? " )
fun( input() )
end
digg it
seed it
del.icio.us
ma.gnolia
Django Command Extensions @ 2008-09-30 22:40:29
Filed under: Code Django Python Tech
I'm looking forward to the next release of Django Command Extensions. This post pointed me to it and it looks quite awesome! See this screencast for some cool stuff it does.
digg it
seed it
del.icio.us
ma.gnolia
Upgraded Blog Software @ 2008-09-28 17:24:24
Filed under: Python Scroll Tech
I'm now running the latest development HEAD of scroll. If you see any issues please let me know. You may notice code now goes to a development section with listings of stuff I work on instead of just throwing you into a bunch of code repositories.
digg it
seed it
del.icio.us
ma.gnolia
Moved to nginx @ 2008-09-28 13:09:23
Filed under: Code Personal Tech
It's done. I'm not running on nginx instead of apache. So far things do seem a LOT faster. Do note that the code link will be out of service for a bit while I figure out how I want to structure the projects I work on. I've decided that just posting a link to gitweb is a bit silly as it doesn't actually say anything other than 'here is some code'.
digg it
seed it
del.icio.us
ma.gnolia
KOF 12 ... How Did I Not See This @ 2008-09-27 21:35:36
Filed under: Media
digg it
seed it
del.icio.us
ma.gnolia
Japanese Kids Are Crazy @ 2008-09-20 20:10:15
Filed under: Comedy




digg it
seed it
del.icio.us
ma.gnolia
A Web OS? Are You Dense? A Great Post @ 2008-09-20 11:39:04
Filed under: Code Frustration Tech
Tedd's post on chrome being an OS killer is spot on.
digg it
seed it
del.icio.us
ma.gnolia
python-virtualenv testing build @ 2008-09-13 19:55:41
Filed under: Fedora Python Tech
python-virtualenv was built and requested for testing today. Once it lands in testing give it a shot. You can find more information about virtualenv via pypi
digg it
seed it
del.icio.us
ma.gnolia
Something In Django I Actually Don't Like @ 2008-09-11 23:10:22
Filed under: Code Django Python Tech
A while back I submitted a patch to get the newforms code closer to the offical style guide for python (AKA pep8). For the heck of it I decided to see how the code in django falls in line with the the guide. Being an avid pythonista this made me nearly cry (note that the numbers shown are the minimum issues, so even though the number might be 2 it's possible that there is really more issues that would be found) ...
[steve@tachikoman django]$ for PY in `find . -name "*py"`; do
echo "$PY:" `pep8.py $PY | wc -l` >> /tmp/django-style.txt;
done
[steve@tachikoman django]$ grep -v ": 0" /tmp/django-style.txt | wc -l
474
[steve@tachikoman django]$
Here are the results ....
./django/views/static.py: 4 ./django/views/debug.py: 6 ./django/views/defaults.py: 2 ./django/views/i18n.py: 4 ./django/views/generic/create_update.py: 4 ./django/views/generic/simple.py: 3 ./django/views/generic/date_based.py: 5 ./django/views/generic/list_detail.py: 4 ./django/views/decorators/cache.py: 2 ./django/views/decorators/http.py: 4 ./django/views/decorators/vary.py: 3 ./django/contrib/comments/views/comments.py: 6 ./django/contrib/comments/views/karma.py: 4 ./django/contrib/comments/views/userflags.py: 4 ./django/contrib/comments/feeds.py: 2 ./django/contrib/comments/templatetags/comments.py: 4 ./django/contrib/comments/models.py: 3 ./django/contrib/comments/tests.py: 2 ./django/contrib/sites/managers.py: 4 ./django/contrib/sites/management.py: 2 ./django/contrib/sites/models.py: 5 ./django/contrib/csrf/middleware.py: 5 ./django/contrib/sessions/backends/cache.py: 1 ./django/contrib/sessions/backends/file.py: 1 ./django/contrib/sessions/backends/base.py: 2 ./django/contrib/sessions/backends/db.py: 2 ./django/contrib/sessions/middleware.py: 1 ./django/contrib/sessions/models.py: 2 ./django/contrib/sessions/tests.py: 2 ./django/contrib/humanize/templatetags/humanize.py: 3 ./django/contrib/syndication/feeds.py: 5 ./django/contrib/syndication/views.py: 3 ./django/contrib/sitemaps/__init__.py: 7 ./django/contrib/sitemaps/views.py: 2 ./django/contrib/flatpages/middleware.py: 3 ./django/contrib/flatpages/models.py: 2 ./django/contrib/flatpages/views.py: 2 ./django/contrib/markup/templatetags/markup.py: 3 ./django/contrib/markup/tests.py: 3 ./django/contrib/auth/management/__init__.py: 3 ./django/contrib/auth/management/commands/createsuperuser.py: 3 ./django/contrib/auth/handlers/modpython.py: 3 ./django/contrib/auth/forms.py: 3 ./django/contrib/auth/middleware.py: 3 ./django/contrib/auth/__init__.py: 3 ./django/contrib/auth/decorators.py: 5 ./django/contrib/auth/models.py: 4 ./django/contrib/auth/backends.py: 7 ./django/contrib/auth/views.py: 2 ./django/contrib/auth/tests.py: 2 ./django/contrib/formtools/wizard.py: 3 ./django/contrib/formtools/preview.py: 2 ./django/contrib/formtools/models.py: 1 ./django/contrib/formtools/tests.py: 2 ./django/contrib/webdesign/templatetags/webdesign.py: 3 ./django/contrib/webdesign/lorem_ipsum.py: 2 ./django/contrib/webdesign/tests.py: 1 ./django/contrib/admin/views/doc.py: 6 ./django/contrib/admin/views/decorators.py: 6 ./django/contrib/admin/views/main.py: 8 ./django/contrib/admin/views/auth.py: 2 ./django/contrib/admin/views/template.py: 3 ./django/contrib/admin/urls.py: 1 ./django/contrib/admin/utils.py: 6 ./django/contrib/admin/templatetags/admin_modify.py: 6 ./django/contrib/admin/templatetags/adminapplist.py: 4 ./django/contrib/admin/templatetags/adminmedia.py: 1 ./django/contrib/admin/templatetags/admin_list.py: 5 ./django/contrib/admin/templatetags/log.py: 3 ./django/contrib/admin/filterspecs.py: 4 ./django/contrib/admin/models.py: 4 ./django/contrib/contenttypes/management.py: 2 ./django/contrib/contenttypes/models.py: 4 ./django/contrib/contenttypes/generic.py: 6 ./django/contrib/contenttypes/tests.py: 3 ./django/contrib/localflavor/uk/uk_regions.py: 2 ./django/contrib/localflavor/uk/forms.py: 3 ./django/contrib/localflavor/pl/forms.py: 5 ./django/contrib/localflavor/pl/pl_voivodeships.py: 1 ./django/contrib/localflavor/pl/pl_administrativeunits.py: 2 ./django/contrib/localflavor/nl/forms.py: 2 ./django/contrib/localflavor/fi/forms.py: 3 ./django/contrib/localflavor/fi/fi_municipalities.py: 1 ./django/contrib/localflavor/ca/forms.py: 4 ./django/contrib/localflavor/ca/ca_provinces.py: 3 ./django/contrib/localflavor/sk/sk_districts.py: 1 ./django/contrib/localflavor/sk/forms.py: 2 ./django/contrib/localflavor/sk/sk_regions.py: 1 ./django/contrib/localflavor/cl/cl_regions.py: 2 ./django/contrib/localflavor/cl/forms.py: 5 ./django/contrib/localflavor/za/forms.py: 2 ./django/contrib/localflavor/es/es_regions.py: 1 ./django/contrib/localflavor/es/forms.py: 5 ./django/contrib/localflavor/es/es_provinces.py: 1 ./django/contrib/localflavor/ch/forms.py: 5 ./django/contrib/localflavor/ch/ch_states.py: 1 ./django/contrib/localflavor/de/forms.py: 3 ./django/contrib/localflavor/it/forms.py: 3 ./django/contrib/localflavor/it/util.py: 3 ./django/contrib/localflavor/jp/jp_prefectures.py: 1 ./django/contrib/localflavor/jp/forms.py: 2 ./django/contrib/localflavor/ar/forms.py: 4 ./django/contrib/localflavor/us/forms.py: 3 ./django/contrib/localflavor/pe/forms.py: 4 ./django/contrib/localflavor/is_/is_postalcodes.py: 1 ./django/contrib/localflavor/is_/forms.py: 5 ./django/contrib/localflavor/no/forms.py: 5 ./django/contrib/localflavor/no/no_municipalities.py: 1 ./django/contrib/localflavor/in_/forms.py: 3 ./django/contrib/localflavor/in_/in_states.py: 1 ./django/contrib/localflavor/generic/forms.py: 3 ./django/contrib/localflavor/mx/forms.py: 3 ./django/contrib/localflavor/mx/mx_states.py: 1 ./django/contrib/localflavor/au/forms.py: 2 ./django/contrib/localflavor/fr/forms.py: 4 ./django/contrib/localflavor/br/forms.py: 3 ./django/contrib/redirects/middleware.py: 3 ./django/contrib/redirects/models.py: 3 ./django/contrib/databrowse/urls.py: 1 ./django/contrib/databrowse/plugins/calendars.py: 4 ./django/contrib/databrowse/plugins/objects.py: 3 ./django/contrib/databrowse/plugins/fieldchoices.py: 4 ./django/contrib/databrowse/__init__.py: 1 ./django/contrib/databrowse/datastructures.py: 3 ./django/contrib/databrowse/sites.py: 3 ./django/contrib/databrowse/views.py: 2 ./django/conf/project_template/manage.py: 1 ./django/conf/project_template/settings.py: 1 ./django/conf/urls/defaults.py: 3 ./django/conf/global_settings.py: 3 ./django/conf/__init__.py: 6 ./django/shortcuts/__init__.py: 2 ./django/__init__.py: 1 ./django/oldforms/__init__.py: 7 ./django/http/utils.py: 2 ./django/http/__init__.py: 6 ./django/templatetags/cache.py: 4 ./django/templatetags/i18n.py: 4 ./django/test/utils.py: 5 ./django/test/testcases.py: 5 ./django/test/_doctest.py: 10 ./django/test/signals.py: 1 ./django/test/simple.py: 3 ./django/test/client.py: 9 ./django/dispatch/dispatcher.py: 10 ./django/dispatch/__init__.py: 1 ./django/dispatch/saferef.py: 9 ./django/dispatch/robust.py: 4 ./django/dispatch/errors.py: 2 ./django/dispatch/robustapply.py: 5 ./django/db/backends/postgresql_psycopg2/introspection.py: 2 ./django/db/backends/postgresql_psycopg2/base.py: 3 ./django/db/backends/sqlite3/introspection.py: 4 ./django/db/backends/sqlite3/creation.py: 2 ./django/db/backends/sqlite3/base.py: 7 ./django/db/backends/sqlite3/client.py: 1 ./django/db/backends/__init__.py: 3 ./django/db/backends/oracle/introspection.py: 2 ./django/db/backends/oracle/creation.py: 7 ./django/db/backends/oracle/base.py: 5 ./django/db/backends/oracle/query.py: 4 ./django/db/backends/oracle/client.py: 1 ./django/db/backends/postgresql/introspection.py: 2 ./django/db/backends/postgresql/operations.py: 4 ./django/db/backends/postgresql/creation.py: 2 ./django/db/backends/postgresql/base.py: 4 ./django/db/backends/postgresql/client.py: 1 ./django/db/backends/util.py: 4 ./django/db/backends/mysql/introspection.py: 2 ./django/db/backends/mysql/creation.py: 2 ./django/db/backends/mysql/base.py: 4 ./django/db/backends/mysql/client.py: 3 ./django/db/backends/mysql_old/introspection.py: 2 ./django/db/backends/mysql_old/creation.py: 2 ./django/db/backends/mysql_old/base.py: 3 ./django/db/backends/mysql_old/client.py: 1 ./django/db/backends/dummy/base.py: 3 ./django/db/__init__.py: 3 ./django/db/models/fields/related.py: 6 ./django/db/models/fields/__init__.py: 6 ./django/db/models/fields/proxy.py: 2 ./django/db/models/fields/subclassing.py: 5 ./django/db/models/related.py: 4 ./django/db/models/__init__.py: 3 ./django/db/models/loading.py: 3 ./django/db/models/options.py: 6 ./django/db/models/base.py: 7 ./django/db/models/query.py: 8 ./django/db/models/manager.py: 4 ./django/db/models/manipulators.py: 4 ./django/db/models/sql/subqueries.py: 4 ./django/db/models/sql/__init__.py: 1 ./django/db/models/sql/query.py: 4 ./django/db/models/sql/datastructures.py: 3 ./django/db/models/sql/where.py: 4 ./django/db/models/sql/constants.py: 1 ./django/db/models/query_utils.py: 3 ./django/db/transaction.py: 4 ./django/newforms/widgets.py: 6 ./django/newforms/forms.py: 3 ./django/newforms/extras/widgets.py: 3 ./django/newforms/fields.py: 4 ./django/newforms/util.py: 4 ./django/newforms/models.py: 6 ./django/utils/timesince.py: 3 ./django/utils/cache.py: 3 ./django/utils/http.py: 3 ./django/utils/tree.py: 2 ./django/utils/_decimal.py: 11 ./django/utils/autoreload.py: 3 ./django/utils/functional.py: 4 ./django/utils/daemonize.py: 2 ./django/utils/termcolors.py: 2 ./django/utils/_threading_local.py: 2 ./django/utils/feedgenerator.py: 4 ./django/utils/decorators.py: 4 ./django/utils/maxlength.py: 3 ./django/utils/text.py: 11 ./django/utils/images.py: 1 ./django/utils/safestring.py: 4 ./django/utils/translation/__init__.py: 1 ./django/utils/translation/trans_null.py: 3 ./django/utils/translation/trans_real.py: 6 ./django/utils/synch.py: 4 ./django/utils/datastructures.py: 5 ./django/utils/tzinfo.py: 4 ./django/utils/html.py: 4 ./django/utils/stopwords.py: 2 ./django/utils/checksums.py: 2 ./django/utils/simplejson/encoder.py: 4 ./django/utils/simplejson/scanner.py: 4 ./django/utils/simplejson/__init__.py: 4 ./django/utils/simplejson/jsonfilter.py: 2 ./django/utils/simplejson/decoder.py: 3 ./django/utils/dates.py: 3 ./django/utils/encoding.py: 5 ./django/utils/_os.py: 1 ./django/utils/xmlutils.py: 3 ./django/utils/version.py: 2 ./django/utils/itercompat.py: 4 ./django/utils/dateformat.py: 4 ./django/template/defaulttags.py: 6 ./django/template/debug.py: 5 ./django/template/__init__.py: 9 ./django/template/defaultfilters.py: 4 ./django/template/loader_tags.py: 5 ./django/template/loaders/filesystem.py: 3 ./django/template/loaders/app_directories.py: 3 ./django/template/loaders/eggs.py: 3 ./django/template/loader.py: 4 ./django/template/context.py: 3 ./django/bin/daily_cleanup.py: 1 ./django/bin/unique-messages.py: 2 ./django/bin/profiling/gather_profile_stats.py: 3 ./django/bin/make-messages.py: 3 ./django/bin/compile-messages.py: 2 ./django/core/management/__init__.py: 4 ./django/core/management/commands/validate.py: 1 ./django/core/management/commands/sqlflush.py: 2 ./django/core/management/commands/runfcgi.py: 2 ./django/core/management/commands/sqlreset.py: 2 ./django/core/management/commands/dbshell.py: 1 ./django/core/management/commands/sqlindexes.py: 2 ./django/core/management/commands/adminindex.py: 2 ./django/core/management/commands/sqlsequencereset.py: 2 ./django/core/management/commands/runserver.py: 2 ./django/core/management/commands/dumpdata.py: 4 ./django/core/management/commands/startapp.py: 2 ./django/core/management/commands/sqlall.py: 2 ./django/core/management/commands/loaddata.py: 3 ./django/core/management/commands/syncdb.py: 2 ./django/core/management/commands/sqlclear.py: 1 ./django/core/management/commands/inspectdb.py: 2 ./django/core/management/commands/reset.py: 2 ./django/core/management/commands/sqlcustom.py: 2 ./django/core/management/commands/flush.py: 2 ./django/core/management/commands/createcachetable.py: 2 ./django/core/management/commands/diffsettings.py: 2 ./django/core/management/commands/sql.py: 1 ./django/core/management/commands/shell.py: 3 ./django/core/management/commands/sqlinitialdata.py: 2 ./django/core/management/commands/test.py: 3 ./django/core/management/commands/startproject.py: 2 ./django/core/management/commands/testserver.py: 3 ./django/core/management/color.py: 4 ./django/core/management/base.py: 2 ./django/core/management/sql.py: 5 ./django/core/management/validation.py: 4 ./django/core/handlers/profiler-hotshot.py: 3 ./django/core/handlers/base.py: 4 ./django/core/handlers/wsgi.py: 4 ./django/core/handlers/modpython.py: 6 ./django/core/paginator.py: 3 ./django/core/xheaders.py: 2 ./django/core/context_processors.py: 3 ./django/core/mail.py: 4 ./django/core/serializers/__init__.py: 4 ./django/core/serializers/xml_serializer.py: 7 ./django/core/serializers/json.py: 4 ./django/core/serializers/base.py: 2 ./django/core/serializers/python.py: 6 ./django/core/serializers/pyyaml.py: 4 ./django/core/cache/backends/base.py: 2 ./django/core/cache/backends/filebased.py: 9 ./django/core/cache/backends/memcached.py: 4 ./django/core/cache/backends/dummy.py: 2 ./django/core/cache/backends/db.py: 4 ./django/core/cache/backends/locmem.py: 3 ./django/core/cache/__init__.py: 4 ./django/core/servers/fastcgi.py: 4 ./django/core/servers/basehttp.py: 8 ./django/core/exceptions.py: 2 ./django/core/validators.py: 11 ./django/core/urlresolvers.py: 6 ./django/middleware/cache.py: 3 ./django/middleware/http.py: 3 ./django/middleware/doc.py: 3 ./django/middleware/locale.py: 2 ./django/middleware/common.py: 4 ./django/middleware/gzip.py: 3 ./django/middleware/transaction.py: 2 ./setup.py: 3 ./tests/urls.py: 1 ./tests/runtests.py: 6 ./tests/modeltests/model_inheritance/models.py: 3 ./tests/modeltests/custom_methods/models.py: 3 ./tests/modeltests/one_to_one/models.py: 3 ./tests/modeltests/many_to_one/models.py: 4 ./tests/modeltests/properties/models.py: 2 ./tests/modeltests/invalid_models/__init__.py: 1 ./tests/modeltests/invalid_models/models.py: 3 ./tests/modeltests/manipulators/models.py: 3 ./tests/modeltests/manipulators/models.py: 3 ./tests/modeltests/get_object_or_404/models.py: 5 ./tests/modeltests/m2o_recursive/models.py: 3 ./tests/modeltests/or_lookups/models.py: 4 ./tests/modeltests/generic_relations/models.py: 3 ./tests/modeltests/choices/models.py: 2 ./tests/modeltests/serializers/models.py: 5 ./tests/modeltests/m2m_and_m2o/models.py: 3 ./tests/modeltests/update/models.py: 3 ./tests/modeltests/m2m_multiple/models.py: 5 ./tests/modeltests/lookup/models.py: 4 ./tests/modeltests/order_with_respect_to/models.py: 3 ./tests/modeltests/custom_pk/models.py: 4 ./tests/modeltests/ordering/models.py: 4 ./tests/modeltests/pagination/models.py: 3 ./tests/modeltests/select_related/models.py: 5 ./tests/modeltests/m2m_intermediary/models.py: 2 ./tests/modeltests/reverse_lookup/models.py: 3 ./tests/modeltests/model_forms/models.py: 2 ./tests/modeltests/custom_columns/models.py: 4 ./tests/modeltests/many_to_one_null/models.py: 2 ./tests/modeltests/signals/models.py: 3 ./tests/modeltests/mutually_referential/models.py: 3 ./tests/modeltests/user_commands/management/commands/dance.py: 2 ./tests/modeltests/user_commands/models.py: 1 ./tests/modeltests/transactions/models.py: 3 ./tests/modeltests/get_or_create/models.py: 3 ./tests/modeltests/validation/models.py: 3 ./tests/modeltests/empty/models.py: 2 ./tests/modeltests/fixtures/__init__.py: 1 ./tests/modeltests/fixtures/models.py: 2 ./tests/modeltests/delete/__init__.py: 1 ./tests/modeltests/delete/models.py: 5 ./tests/modeltests/many_to_many/models.py: 3 ./tests/modeltests/field_subclassing/models.py: 3 ./tests/modeltests/custom_managers/models.py: 4 ./tests/modeltests/m2o_recursive2/models.py: 3 ./tests/modeltests/field_defaults/models.py: 3 ./tests/modeltests/str/models.py: 3 ./tests/modeltests/test_client/urls.py: 2 ./tests/modeltests/test_client/models.py: 5 ./tests/modeltests/test_client/views.py: 7 ./tests/modeltests/test_client/tests.py: 3 ./tests/modeltests/save_delete_hooks/models.py: 2 ./tests/modeltests/basic/models.py: 3 ./tests/modeltests/reserved_names/models.py: 5 ./tests/modeltests/get_latest/models.py: 4 ./tests/modeltests/m2m_recursive/models.py: 3 ./tests/regressiontests/views/urls.py: 5 ./tests/regressiontests/views/models.py: 3 ./tests/regressiontests/views/tests/static.py: 4 ./tests/regressiontests/views/tests/__init__.py: 1 ./tests/regressiontests/views/tests/defaults.py: 3 ./tests/regressiontests/views/tests/i18n.py: 2 ./tests/regressiontests/views/tests/generic/date_based.py: 7 ./tests/regressiontests/views/views.py: 1 ./tests/regressiontests/model_inheritance_select_related/models.py: 4 ./tests/regressiontests/backends/models.py: 2 ./tests/regressiontests/db_typecasts/tests.py: 5 ./tests/regressiontests/bug639/models.py: 6 ./tests/regressiontests/bug639/tests.py: 5 ./tests/regressiontests/datatypes/models.py: 3 ./tests/regressiontests/humanize/tests.py: 4 ./tests/regressiontests/syndication/urls.py: 1 ./tests/regressiontests/syndication/tests.py: 2 ./tests/regressiontests/httpwrappers/tests.py: 2 ./tests/regressiontests/many_to_one_regress/models.py: 3 ./tests/regressiontests/maxlength/tests.py: 1 ./tests/regressiontests/serializers_regress/models.py: 4 ./tests/regressiontests/serializers_regress/tests.py: 5 ./tests/regressiontests/forms/widgets.py: 1 ./tests/regressiontests/forms/regressions.py: 1 ./tests/regressiontests/forms/forms.py: 1 ./tests/regressiontests/forms/fields.py: 1 ./tests/regressiontests/forms/util.py: 1 ./tests/regressiontests/forms/models.py: 2 ./tests/regressiontests/forms/localflavor/de.py: 1 ./tests/regressiontests/forms/localflavor/ca.py: 1 ./tests/regressiontests/forms/localflavor/za.py: 1 ./tests/regressiontests/forms/localflavor/nl.py: 1 ./tests/regressiontests/forms/localflavor/is_.py: 2 ./tests/regressiontests/forms/localflavor/fi.py: 1 ./tests/regressiontests/forms/localflavor/ar.py: 1 ./tests/regressiontests/forms/localflavor/cl.py: 1 ./tests/regressiontests/forms/localflavor/br.py: 1 ./tests/regressiontests/forms/localflavor/us.py: 1 ./tests/regressiontests/forms/localflavor/es.py: 2 ./tests/regressiontests/forms/localflavor/jp.py: 1 ./tests/regressiontests/forms/localflavor/pl.py: 2 ./tests/regressiontests/forms/localflavor/fr.py: 1 ./tests/regressiontests/forms/localflavor/ch.py: 1 ./tests/regressiontests/forms/localflavor/sk.py: 1 ./tests/regressiontests/forms/localflavor/it.py: 1 ./tests/regressiontests/forms/extra.py: 1 ./tests/regressiontests/forms/error_messages.py: 1 ./tests/regressiontests/select_related_regress/models.py: 2 ./tests/regressiontests/fixtures_regress/models.py: 4 ./tests/regressiontests/queries/models.py: 5 ./tests/regressiontests/defaultfilters/tests.py: 2 ./tests/regressiontests/invalid_admin_options/models.py: 6 ./tests/regressiontests/dateformat/tests.py: 1 ./tests/regressiontests/model_inheritance_regress/models.py: 3 ./tests/regressiontests/dispatch/tests/test_dispatcher.py: 6 ./tests/regressiontests/dispatch/tests/test_saferef.py: 6 ./tests/regressiontests/dispatch/tests/test_robustapply.py: 6 ./tests/regressiontests/null_fk/models.py: 3 ./tests/regressiontests/cache/tests.py: 9 ./tests/regressiontests/i18n/misc.py: 1 ./tests/regressiontests/i18n/models.py: 3 ./tests/regressiontests/i18n/tests.py: 1 ./tests/regressiontests/model_regress/models.py: 3 ./tests/regressiontests/utils/decorators.py: 1 ./tests/regressiontests/utils/datastructures.py: 1 ./tests/regressiontests/utils/views.py: 1 ./tests/regressiontests/utils/tests.py: 3 ./tests/regressiontests/templates/filters.py: 6 ./tests/regressiontests/templates/urls.py: 1 ./tests/regressiontests/templates/loaders.py: 5 ./tests/regressiontests/templates/unicode.py: 1 ./tests/regressiontests/templates/context.py: 1 ./tests/regressiontests/templates/views.py: 1 ./tests/regressiontests/templates/tests.py: 11 ./tests/regressiontests/null_queries/models.py: 3 ./tests/regressiontests/one_to_one_regress/models.py: 4 ./tests/regressiontests/max_lengths/__init__.py: 1 ./tests/regressiontests/max_lengths/models.py: 1 ./tests/regressiontests/max_lengths/tests.py: 6 ./tests/regressiontests/test_client_regress/urls.py: 2 ./tests/regressiontests/test_client_regress/models.py: 6 ./tests/regressiontests/test_client_regress/views.py: 4 ./tests/regressiontests/urlpatterns_reverse/tests.py: 4 ./tests/regressiontests/auth_backends/tests.py: 1 ./tests/regressiontests/datastructures/tests.py: 1 ./tests/regressiontests/initial_sql_regress/models.py: 2 ./tests/regressiontests/string_lookup/models.py: 2 ./tests/regressiontests/decorators/models.py: 1 ./tests/regressiontests/decorators/tests.py: 3 ./tests/regressiontests/middleware/tests.py: 2 ./tests/regressiontests/model_fields/models.py: 2 ./examples/manage.py: 1 ./examples/hello/views.py: 2 ./examples/views.py: 2
It's not terrible, but it could become bad over time if people end up moving away towards personal coding styles rather than Django's style which is based off of pep8.
digg it
seed it
del.icio.us
ma.gnolia
nginx Here I Come @ 2008-09-11 00:09:28
Filed under: Django Tech
I'm close to replacing Apache httpd with nginx. I'm impressed with the speed of nginx compared with Apache httpd and Lighttpd. I've done some tests with some of my web apps and it's been pretty simple to use nginx with them. Django-fcgi + nginx here I come!
digg it
seed it
del.icio.us
ma.gnolia
Django ModelAdmin + Module Snippet @ 2008-09-10 19:02:37
Filed under: Code Django Python Tech
I just posted a Django snippet to bind a module full of ModelAdmins with a module full of Models. It was helpful for me so I figured others might like it. I've also submitted patches to the cab application which runs Django Snippets.
digg it
seed it
del.icio.us
ma.gnolia
Google Chrome ... Really? Windows Only? @ 2008-09-09 15:22:16
Filed under: Code Frustration Tech
[steve@tachikoman src]$ pwd
/tmp/chrome/src
[steve@tachikoman src]$ for ITEM in `echo "*.bat" "*.dll" "*.vcproj"`; do
echo -n "$ITEM: ";
find . -name $ITEM | grep -v ".svn" | wc -l;
done
*.bat: 22
*.dll: 114
*.vcproj: 284
[steve@tachikoman src]$
That worries me ... a lot. Without a lot of community involvement I have a bad feeling that Google Chrome won't be anything but Windows only. When I've seen such strong usage of OS specific items it usually means the developers who wrote the code only know how to work with one system (not counting the IDE project files which is a big warning on it's own). It may not be true, but from first look it is something to worry about.
digg it
seed it
del.icio.us
ma.gnolia
In Charlotte, NC Waiting To Go To Tampa @ 2008-09-05 20:05:18
Filed under: Personal Tech
Bit of a bumpy ride from Raleigh, NC to Charlotte, NC but nothing to bad. I met and interesting fellow engineer who works in Raleigh. We talked about software engineering, Linux, Java, Python, ESB, India and a lot of other interesting topics. I also overheard an interesting conversation from a guy who works for Advanced Global Communications talk a bout a mess up with a rental car. Inside the air plane he told the rep on the phone his full name, full credit card number, expiration date and more loud enough for us all to hear. Part of me wanted to jump and and tell him nicely he may not want to finish that information. On the other hand stopping him from saying something in a conversation that I wasn't invited into seemed oddly rude as well. In any case hopefully no one wrote down the information.
At this moment I'm waiting to board the connecting flight to Tampa, FL. While I was checking out to see if there was free wifi in the airport I came across one of my [sarcasm]favorite[/sarcasm] companies:

It took a lot of self control to not start poking around ..... *grumble*accenture*grumble*.
I did start writing some code to make skeleton structure for new python projects. The idea is that you will pass it license, documentation system, path, name and maybe a few other things and it would create the base structure, license files, base documentation files, setup.py script and maybe more. So far I've just done the license part as well as listing known licenses to chose from. I did it quickly to get it working so I'm sure, if I decide to actually finish this, it will not resemble what I've done so far but, hey, you have to start somewhere!
digg it
seed it
del.icio.us
ma.gnolia

