Tuesday, November 22, 2005

Coldplay - Fix You

music :: entertainment



I almost *never* listen to the radio. I don't think I even have an FM
tuner (not counting the car; I almost never drive, either!). However, I
did see the special preview concert (on MTV?) that Coldplay gave for
the release of their new album X&Y. It was a while ago, and I hadn't
heard any radio play since then. When I was visiting Greg and Ladan in
San Francisco, I heard "Fix You" a couple times on the radio. Twice I
think. Since then, it has been in my head constantly.

I actually really like the music, and I love Coldplay's vocal style.
But I've had problems with the lyrics of that particular song since I
saw them perform it on MTV. But the music is so nice... consequently, a
tension was setup in my mind between it and the meaning of the lyrics.

My objection is due to a vehement position I hold that no one can "fix"
anyone else. In my opionon, one has to take responsibility for all
one's actions: past, present, and future. And through the continued and
disciplined application of awareness and compassion for oneself, the
"fixing" can occur. No one is to blame for our own suffering. If we are
suffering, we have the power -- through changing our minds and
perceptions -- to turn that suffering around. Our own minds/hearts are
the core of the issues, not someone else's. No one else can make us
happy; no one else can make us suffer. This is admittedly contrary to
your average opinion on the matter. In my opinion, this is because
people are very, VERY uncomfortable with taking responsibility of their
own actions. And perhaps even more uncomfortable with the frightening
prospect of being the makers of their own universes.

However, I digress. I think I have now found a way to enjoy the lyrics,
and it ties in nicely with an interpretation of the "X&Y" title as
chromosomal :-) If you consider the inheritance we receive from our
parents -- genetic, emotional, behavioral, etc. -- and you agree that
there is plenty of work (and a responsibility!) to improve on this
inheritance, then "fixing you" could be an address to our parents, or
rather, our parents inside us. Something along the lines of "we promise
to take care of you in us, to do the most with what you have given us,
to fix the broken pieces and go further..."

With that perspective, I am now listening to the song without
misgivings, fully enjoying both the lyrics and the music :-)




Now playing:
Sting - Sister Moon (Wednesday,  6:45am MST)

Monday, November 21, 2005

Last.fm and MusicBrainz

internet :: music :: software



While working on a related project, I came across MusicBrainz (with an associated Mac
OS X application with an awesome "i*" name: iEatBrainz) and
AudioScrobbler /
Last.fm. Let me just say that Last.fm
-- for whatever reason it was named that -- is truly and aptly named:
this is the last radio you will ever need. If this technology hasn't
been incorporated into XM radio and it's radio-a-likes, it soon will
be. Otherwise someone else will do it, and they'll be out of business.

Let's say that you don't want to listen to your own music collection;
you want to spice things up and hear something new... but familiar.
Let's say you're in a particular mood and you really want to hear
something like the fantastic folk stylings of Shawn Colvin. Well, open
up the Last.fm player, type "Shawn Colvin" and you are now listening to
personalized radio with a random playlist built by Last.fm to provide
music that is similar or the same as Shawn Colvin.

Already, I have discovered two new female vocalists I'd never heard of
who I now adore, as well as an old-style punk band that I want to hear
more of.

This is the best thing that has ever happened to radio, and quite
frankly, I'm surprised it's taken so long to get this started. It's
going to be a hell of a ride from here on in, with this technology...
this is just the beginning of end-user-tailored broadcast media.

I've been using iEatBrainz and the MusicBrainz db to go through the
hundreds of old MP3s I have that I ripped before rippers connected to
CDDB/FreeDB... so many files with no ID3 tags. This is enabling me to
perform organization tasks in my music library that I have been putting
off for ages. It was just too painful. But now that iEatBrainz, I have
music superpowers.

All this has made the new project I am working on even more exciting :-)


Now playing:
Ben Harper - She's Only Happy in the Sun (Tuesday,  1:41pm MST)


San Francisco

friends :: travel



Two dear friends of mine, Greg and Ladan, whisked me away to San
Francisco to stay with them for almost two weeks, and I've just
returned. I had the most amazing time there -- including (but not
limited to!) meeting new friends, having long and deep conversations
with old friends, eating *amazing* Persian food, and seeing Depeche
Mode in concert. Though it wasn't a vacation -- I coded my ass off all
day while they were at work and school -- it was just what I needed.



You know, good friends are just amazing. The generosity of open hearts
can really be life changing. In "modern" life, so much attention gets
paid to success, acquisition, consumption... that we can get distracted
by either participating in that or fighting it. Stepping outside of
that battlefield, one finds the truly great things in life. The support
that friends provide is one of these things. Thanks Greg and Ladan!


Now playing:
Ben Harper - Waiting on an Angel (Tuesday,  1:09pm)


Saturday, November 12, 2005

New Project

software :: music :: mathematics


So, I can't really say anything about it yet, but I'm really excited it
:-) It's going to be open source, so others will be free to contribute.
I'm pretty sure it hasn't been done yet in the open source world, and
it's only just being done commercially now.

So... stay tuned, and as soon as all the details are worked out, I'll
post about it again here. Okay, I'll give you a hint: Hidden Markov
Models...

;-)


Tuesday, November 08, 2005

z3 Project Starter Script Update

software :: zope3


I just thought I'd give a quick update in regards to this script. I
have tweaked a few things and submitted a new version on zope.org.
There's a news item about it here.

Information and details on the script are here.

Enjoy!


Monday, November 07, 2005

Structure Generation and z3

software :: zope3


Carlos de la Guardia posted a recent
blog entry
that mentions the need for "rails-like" code-stubbing,
or the automatic generation of directories and files in z3. I think
there was one comment that wasn't spam, and then I posted one in
addition to that. So, I thought I'd post a long over-due entry here
myself.

A tool like that exists; I wrote it a while ago, but didn't get a
chance to clean it up (a little) and post it to the zope.org site until about a month ago. Here is the
z3 project starter.

It's alpha, and I need to encode the 1px.gif image so that a proper
binary file can be created. But that's pretty easy, I just haven't
gotten around to it. The basic css tabs are really only usable with
vhost. It has only been tested repeatedly in a narrow set of use, so it
needs more people playing with it. I'd love it if folks wanted to
contribute, helping to get it into shape suitable for entry into the z3
repository. It'd be great to bring it in line with Benji's quickstart
guide
.


/back

general


It's been far, far too long since my last post. I can lay the blame for
this soundly at the feet of economic hardship and business suckage. One
of my oldest business partners was acquired by LEDS last year, and this
guy continues to be the most amazing friend, resource, and bread-winner
for my company. It really blows me away. Lots of other "partner"
companies make promises out the arse, with 80% of them falling through.
Not Allen, though. He just blows my mind... if it weren't for him, I
wouldn't even be able to write this blog entry.

Okay, so that's why I've been missing in action. In my silence, though,
I have done a tremendous amount of coding. I've been working on two
different versions of twisted object brokers for CoyMon; been updating
pymon to run from python eggs; been doing an insane amount of z3
development; teaching z3; been working on some custom astronomy python
utilities; been doing python image processing again; been exploring
darcs, ubuntu, MochiKit, Dojo Toolkit, Axiom; catching up on python
blogs; catching up on DivMon, Quotient, Nevow; just signed up for http://clickchronicle.com; been
catching up on experiments in gravitational physics as well as my
5-year cycle for M-Theory refreshing.

There's also a small group of friends that have started a mail list for
very cool explorations in practical... hmmm, don't even know what to
call it... metaphysics, I guess. Some of the most amazing discussions
and conversations I've had in a while.

I expect that I'll be posting here again, soon. It feels good to be
crawling out from under the rock where I've been hiding :-)


Saturday, August 06, 2005

New Zope3 Skin


Today I developed a skin for Zope3. As is evident from an earlier post, I had been exploring the Django web app dev platform, and after some intensive use and investigation, I returned to zope3. It was like a breath of fresh air. However, I sorely missed the slick interface of Django.

So, I decided to make my own :-)
AdytumAdmin z3 skin

All of my z3 projects will be using this skin (or a derivative) as the default admin skin. This will give clients something they can be happy with/proud of when they visit the ZMI to manage their site, and it will keep me and other developers happy, as we have to look at the ZMI for hours on end each day. If you've worked with z3 at all yet, you know how basic and ugly the default (non) skin is... and thus understand the need for people to start doing this kind of thing.

I would like to note and share my gratitude of the fact that this was based on the ZopeTop skin for Zope3 (I think written by Paul Everitt). Without that work and prior development, this would have been an arduous task. With the work, it was a facile process of tweaking colors and shuffling page/zpt parts around. Simply fantastic.

Once again, z3 shines as a rapid development platform. This was all done in less than a day :-)

Update: This blog post originally pointed to resources that are now no longer available. However, thanks to the Wayback Machine, I've been able to rescue the old instructions from an archived version of the web page.

Setup

There are no docs included with the tarball. You just need to do the following:
  • checkout the adytumadmin directory from svn
  • move the adytumadmin directory into you lib/python directory of your z3 instance
  • create a the file etc/package-includes/adytumadmin-configure.zcml in your z3 instance directory with the following contents:
    <include package="adytumadmin"></include>
  • restart your z3 instance
Access

Access the skin by using ++skin++AdytumAdmin in your URL, e.g.:

http://127.0.0.1:8080/++skin++AdytumAdmin/@@contents.html

If you like this skin enough to make it your default skin and don't want to add it to the URL manually, just add this line to your etc/overrides.zcml file:
<browser:defaultskin name="AdytumAdmin">
Note that it is the skin name and not the skin package that is used.

Screenshots


Friday, August 05, 2005

Django vs. Zope3, or "The Right Web App Dev Platform"

development :: python :: zope 3 :: django



First of all, let me start off by saying that this is not a flame nor a
crusade :-) The title of this post needs to be taken in context: this
is about making the right choices for you, the developer. We are not
machines, we are quirky people, each with our own uniquenesses. The
choice of platform needs to be as much about what technology best fits
the needs of the project as well as that which fits the personality,
the strengths, and the weaknesses of the developer.

I just spent an interesting two days with django. Let me just say,
right off the bat: I like it, it's fun, it's cool. I like their site,
their growing docs (I've contributed a little to the wiki), the homey
feel of the project. I got my first little app up and running in no
time. Piece of cake, just as advertised.

However, for my second project, I wanted to do something a little
strange. Oddly enough, just the kind of irregular thing a client would
ask for. Thus began the headaches. I spent about 30 hours with my head
up against the wall. I will say that my primary problem was not
understanding the not-so-documented subtleties of django. Additionally,
I'm really not that good at database modeling. Object relational
mappers are cool (much better than having to write SQL), but to me, the
logical next step is to give up the ghost and use an object-oriented
database. For situations that require hard-core databases, hire the
dba/db designer, and do what's needed.

It was tough going. I really wanted to do some strange things, and
django didn't seem to be so flexible in different areas. And I think
that's actually something that the django developers have openly
stated. They have written and are targeting their software for a narrow
problem domain, a domain that brings them a lot of business and for
which there is great need.

I want to emphasize that I'm not a python or software noob. I've been
writing code, in one language or another, since 1981. I've been in the
industry since 1994. I've worked with twisted for a couple years, more
so recently. I regularly delve into its internals. I have a love/hate
relationship with Zope: I love z3 and hate Zope2. I spend a fair amount
of time digging through z3 code and find it (almost entirely)
delightful. However, I don't have any of that experience with django.
The source code doesn't make architectural sense to me. I guess I like
and use frameworks, and django's actually really an application and not
a framework. This is reflected in the code, and I have difficulty with
that.

So, as I slugged through the issues of bending django to my will, I
found myself wishing for things: what would it take to add ZPT support
to django's templating? Could a wrapper/adaptor be written for the ORM
so that ZODB could be used? Could the code be refactored to use
interfaces, adaptors and components? Yup. I was unconsciously trying to
rewrite djando into z3. However, this is also flattering to django: I
was trying to hang on as long as I could. Why? Well, it's got some
really cool things:

* a fantastic look and feel
* a slick admin interface generation (z3 has auto-generation of this
too, but it's not as pretty)
* really cool URL dispatcher for custom URLs perl application

Overall, they did some great work. They sell the point that you can
build apps in record time with django. And they're right -- you can.
But you know what else? I was able to build a project from the ground
up with z3 in two days -- and that *included* learning curve. No
kidding. Talk about rapid. I was stunned. In fact, after that
experience, I emailed several close developer friends of mine as well
as a few partner companies we consult for. I did a write-up on the
project and an analysis of the z3 development process and how it
benefits our timelines. The reason things went so smoothly with z3 is
because it's designed the way I think. By using a framework that
matches me so well, I move through code with zero resistance and get a
tremendous about of work done.

I'm not trying to sell z3 here. But, what I did discover with django
was that it's not my platform for web app dev: z3 is. This is because
of the kind of developer I am, the kind of code I like to work with,
and the kind of tools that allow me to be as productive as possible.
This combination of factors is different for different developers. As
many others in the community have pointed out, pick the right tools for
you and the job. There's a lot of hype about Rails, Django, etc., these
days; all the different web platforms available for python. People are
complaining about proliferation, but that's what drives evolution.
Software evolution has provided me with great business tools: twisted
and z3. What's it provided you?


Thursday, July 28, 2005

Phillip Eby has changed my life... again.

python :: programming



First it was PEAK, then it was PyProtocols/generic functions (which has
now been split from PyProtocols in to its own package called
RuleDispatch). Now, it's EasyInstall. Everyone has been raving about
it, but I hadn't tried it out until tonight. Holy crap. This is crack
for python programmers. I built my first python egg when Bob Ippolito
first started writing about the alpha code he and Phillip Eby were
working on. Pretty cool stuff, but it didn't really hit me as to how
great eggs were until I actually saw it in action today with my upgrade
of setuptools, my first use of EasyInstall, and my upgrade of
PyProto/RuleDispatch (each creates an egg and dumps the file in
site-packages).

It blew my mind when I saw these two luminaries getting together. I
knew that it didn't matter what the hell these guys did together, it
would rock the world. Awesome. And thanks :-)