Entries classified under python


The BuildBot
- Let's build an open / distributed build network.
To links coding python tools web ... on Fri 07/08/05 at 02:21 PM

Announcing lesscode.org

For a really long time now I've wanted to get my development related projects, essays, and other ramblings into a more coherent place on the web. At the same time, I've been thinking a lot about this "movement" (for lack of a better word) that I've grown a small part of that is simplifying, humanizing, and opening up IT.

There's a significant portion of the development community that's just plain pissed off at the status quo and have begun pursuing radically different ways of building and delivering systems from what is now commonly accepted by the established industry. To our delight, we're finding that There's Plenty of Room at the Bottom and that the next big thing in IT should really be making it smaller.

We're also finding that this new-think will not be accepted by the mainstream analyst firms, tech publications, and vendor powerhouses on simple merit. Pimping the latest acronym from the latest vendor with the latest money is a much easier way of bringing in stupid amounts of cash than is trying to move an industry forward in providing real value to actual people. So screw you guys - your goals are in direct competition with those of my customers.

As you can see, I'm a little bitter... But I'm also excited - we're assembling a stack of tools and techniques that are demonstrably superior and yet somehow much simpler than those of the mainstream past. We're starting companies and controlling our future and it just feels right.

So I'm proud to announce that lesscode.org is open for business. It's still a work in progress but here are my goals for the place:

  • Advocate, communicate, and discuss the happenings of the less movement.

  • Provide tools and resources for like minded individuals to collaborate on projects (subversion, mailman, trac, etc).

I'm also prepared to chase funding in the form of hosting, bandwidth, admin time, etc. should their be significant interest in the concept.

This site will stick around but most of my development related posts will move to lesscode.org.

To weblog coding python foss ... on Thu 07/07/05 at 03:19 PM

CLR Dynamic languages under the hood (Part 1 of many)
- Joel Pobar to dive deep into dynamic language support on Microsoft's CLR..
To links coding python clr ... on Sun 07/03/05 at 07:38 PM
A Bright, Shiny Service: Sparklines
- Joe Gregorio throws together a RESTful web service for generating sparklines.
To links web rest coding python ... on Thu 06/23/05 at 07:22 PM
Dealing with marketing types...
- Nice python-list thread with Paul Rubin challenging my ibm-poop-heads article and Andrew Dalke (and quite a few others) champions it. This discussion is worth more than the original article!
IT Conversations: Guido van Rossum (Part 2) - Buiulding and Open Source Project and Community
- Second part of what looks to be a really kick ass interview with the BDFL.
To links coding python audio interview ... on Sun 06/19/05 at 04:37 AM
IT Conversations: Guido van Rossum (part 1) - Building an Open Source Project and Community
- Can't wait to listen to this. Guido talks about how the Python community has grown over the years.
To links coding python audio interview ... on Sun 06/19/05 at 04:37 AM
The 80-20 problem
- This is mostly true in my experience. It's too bad we had to pick on some nice Python projects to make the point but true is true.
To links coding python foss ... on Thu 06/16/05 at 10:32 AM
Writing code for others that use it
- Damn if I haven't started writing this post 10 times and stopped because I couldn't get the point out. Well said, Bill.
To links foss python coding commentary ... on Wed 06/15/05 at 12:03 AM
Anonymous Blocks in Python 2.5?
- We really need this, IMO. I've noticed that a lot of Ruby libraries use anonymous blocks for resource management like this and it's hard to argue that its inferior to the try/except model.
To links coding python ... on Mon 05/30/05 at 06:46 PM
Bill de hÓra: No more nails: making good technology choices
- That's what I'm saying bro..
To links coding python java web ... on Sat 05/28/05 at 05:30 PM

IBM poop heads say LAMP users need to "grow up"

IBM says LAMP users need to grow up.

Woodshed!

Let's do it:

According to Daniel Sabbah, general manager of IBM's Rational division, LAMP -- the popular Web development stack -- works well for basic applications but lacks the ability to scale.

Nope. We call bullshit. After wasting years of our lives trying to implement physical three tier architectures that "scale" and failing miserably time after time, we're going with something that actually works.

If you look at the history of LAMP development, they're really primative tools ... the so-called good enough model. The type of businesses being created around those particular business models are essentially going to have to grow up at some point.

No. The LAMP stack is a properly constructed piece of software. Features are added when an actual person has an actual need that arises in the actual field, not when some group of highly qualified architecture astronauts and marketing splash-seekers get together to compete for who can come up with the most grown-up piece of useless new crap to throw in the product.

The LAMP model works because it was built to work for and by people building real stuff. The big vendor / big tools model failed because it was built to work for Gartner, Forrester, and Upper Management whose idea of "work" turned out to be completely wrong.

Now you're saying that the primitive yet successful LAMP model should adopt the traits of the sophisticated yet failing big vendor model.

I believe that in the same way that some of those simple solutions are good enough to start with, eventually, they are going to have to come up against scalability, Sabbah said during a press conference at the IBM Rational User Conference in Las Vegas.

We can't scale? Really? Are you insane?

Alright, that last jab may have been a bit unfair. I think what Sabbah is really talking about is PHP. I can't be sure but none of Yahoo!, Amazon, Ebay, or Google seem to be using PHP widely on their public sites [1]. But then again, they aren't using Websphere/J2EE, .NET, or other scalable physical three tier architectures either.

While we're talking about architectures, I'd like to jump into a brief commentary on what's really at the root of the debate here.

There arewere two widely accepted but competing general web systems architectures: the Physical Three Tier Architecture and the Logical Three Tier Architecture. IBM (and all the other big tool vendors) have been championing one of them and LAMP is a good framework for the other (although you'll rarely hear anyone admit that LAMP provides an overall architecture).

The Physical Three Tier Architecture

Many large enterprise web applications tried really hard to implement a Physical Three Tier Architecture, or they did in the beginning. The idea is that you have a physical presentation tier (usually JSP, ASP, or some other *SP) that talks to a physical app tier via some form of remote method invocation (usually EJB/RMI, CORBA, DCOM) that talks to a physical database tier (usually Oracle, DB2, MS-SQL Server). The proposed benefits of this approach is that you can scale out (i.e. add more boxes) to any of the physical tiers as needed.

Great, right? Well, no. It turns out this is a horrible, horrible, horrible way of building large applications and no one has ever actually implemented it successful. If anyone has implemented it successfully, they immediately shat their pants when they realized how much surface area and moving parts they would then be keeping an eye on.

The main problem with this architecture is the physical app box in the middle. We call it the remote object circle of hell. This is where the tool vendors solve all kinds of interesting what if type problems using extremely sophisticated techniques, which introduce one thousand actual real world problems, which the tool vendors happily solve, which introduces one thousand more real problems, ad infinitum...

It's hard to develop, deploy, test, maintain, evolve; it eats souls, kills kittens, and hates freedom and democracy.

Over the past two years, every enterprise developer on the planet has been scurrying to move away from this architecture. This can be witnessed most clearly in the Java community by observing the absolute failure of EJB and the rise of lightweight frameworks like Hibernate, Spring, Webwork, Struts, etc. This has been a bottom up movement by pissed off developers in retaliation to the crap that was pushed on them by the sophisticated tool vendors in the early century.

Which brings us nicely to an architecture that actually works some times and loves freedom.

The Logical Three Tier Architecture

More specifically, the Shared Nothing variant of the Logical Three Tier Architecture says that the simplest and best way to build large web based systems that scale (and this includes enterprise systems goddamit) is to first bring the presentation and app code together into a single physical tier. This avoids remote object hell because the presentation code and the business logic / domain code are close to each other.

But the most important aspect of this approach is that you want to push all state down to the database. Each request that comes into the presentation + app tier results in loading state for a set of objects from the database, operating on them, pushing their state back down into the database (if needed), writing the response, and then getting the hell out of there (i.e. releasing all references to objects loaded for this request, leaving them for gc).

That's the rule.

So the physical database tier and the physical presentation + app tier make up our logical three tier architecture but I'd like to talk about one other latch-on piece of this setup because it's interesting to contrast it with how the Physical Three Tier purists deal with the same problem.

Fine Grained Caching

Some mechanism for caching becomes really important when you decide that you are spending too much money on hardware (note that both of these architectures will scale up and out, on each physical tier independantly, for as far and wide as you can pay for hardware). Adding some form of caching reduces the amount of hardware needed dramatically because you've reduced utilization somewhere.

In the physical three tier architecture, there is generally a lot of sophisticated mechanisms for caching and sharing object state at a very granular level in the app tier to reduce utilization on the the database and increase response time. This is cool and all but it increases utilization on the app tier dramatically because so much time is now spent managing this new state.

The introduction of state (even just a little state for caching objects) forces the app tier to take on a lot of the traits of the database. You have to worry about object consistency and be fairly aware of transactions. When that's not fast enough what ends up happening is that more fine grained caching is added at the presentation tier to reduce round trips with the app tier.

Now you have three places that are maintaining pretty much the same state and that means you have three managability problems. But this is, you know, cool because it's really complex and sophisticated and the whiteboard looks interesting and lots of arm waving now.

Screw Fine Grained Caching

Shared Nothing says, screw that - the database is the only thing managing fine grained state because that's it's job, and then throws up caching HTTP proxy server(s) in a seperate (and optional) top physical tier. Cached state is maintained on a much simpler, coarse grained level with relatively simple rules for invalidation and other issues.

When the Shared Nothing cache hits, it provides unmatched performance because the response is ready to go immediately without having to consult the lower tiers at all. When it misses, it misses worse than the fine grained approach because chances are good you'll be going all the way to the database and back. But it turns out that it usually doesn't matter. My experience says that you get as good or better performance with the coarse grained approach as you do with the fine grained approach for much less cost, although it's hard to measure because the savings are distributed in very different ways.

The Shared Nothing + Caching Proxy setup scales like mad and I don't just mean that it scales to really massive user populations. It scales low too. It's easy to work with when you're developing and testing on a single machine. It's easy to have a simple prototype app done in a day. It's easy to teach someone enough that they can go play and figure stuff out as they go. It's easy to write tests because the entire system is bounded by the request and there's no weird magic going on in the background.

The big vendor / big tool architectures sacrificed simplicity and the ability to scale low because they decided that every application was going to have one million users and require five 9's from the first day of development.

As I write this, Bill de hÓra postulates: All successful large systems were successful small systems. I believe him and what that means to us right now in this article is that it is exceedingly hard to build large systems with the big vendor / big tool approach because it is exceedingly hard to build small systems with the same.

Let's get back to the woodshed

While Sabbah was critical of LAMP's capabilities, he said IBM is going to ensure companies which started with that model will be able to "grow and change with the rest of the world".

He believes most businesses want technology that is stable, evolutionary, historical and had support.

L A M P = (S)table (E)volutionary (H)istorical (S)upport

"What we are trying to do is make sure businesses who start there [with LAMP] have a model, to not only start there but evolve into more complex situations in order to actually be able to grow," he said.

This is where I really wanted to jump in because I think this mentality is holding back adoption of very simple yet exremely capable technology based purely on poor reasoning. This view of systems design says that complexity is required if growth is desirable and that complex situations can only be the result of complex systems.

There's a guy who just spent 50 years or something locked in a room writing a 1200 page book proving that this is just wrong. It would appears that there is very little relationship between the complexity of a program and the complexity of the situation it produces.

The complexity for complexity mindset is the bane of a few potentially great technologies right now:

  • Static vs. Dynamic Languages
  • J2EE vs. LAMP
  • WS-* vs HTTP

I like to complain when someone calls Python a scripting language because the connotation is that it is simple. But it is simple, right? So there shouldn't be any complaining. I'm not objecting to someone calling Python simple, I'm objecting to then saying that because it is simple, it must only be capable of simple things.

Ahhh and we've finally reached the end of this one

"You've seen us do a lot with PHP and Zend and you'll see us do more. I can't say more. It [PHP] needs to integrate with enterprise assets but it needs to remember where it came from and where its value was. It can't start getting too complex as it will lose its audience," Sabbah said.

The need for complex systems in the enterprise was and still is greatly overestimated. The trick isn't to make PHP more complex, it's to make the enterprise less complex. You need to equate complex requirements with complex systems less and start asking "do we really need this?" more.

The funny thing about all this is that my opinion on this matter has formed largely based on concepts that you guys told me, so I'm sure you'll pull through on this one.


Python Metadata Importer
- A Spotlight Plugin that imports and indexes Python source code. w00t!
To links coding python osx mac ... on Wed 05/25/05 at 08:24 PM
Drowning in the koolaid
- "Just remember that the next time you use one of the mainstream languages - many of the "features" were designed with the idea in mind that you, the developer, are a moron."
Not Elegant?
- Patrick Logan calls bullshit on a BUILDER.COM article on "scripting languages"... Quick list dynamic language misconceptions: inelegant, fragile, unprofessional, only used by monkeys..
Python Challenge
- Weird game that uses facets of the web as pieces of riddles. Kind of spooky.
To links python game weird coding ... on Tue 05/03/05 at 05:12 PM
Google Search: programming language
- How cool is this?
To links coding python web google ... on Fri 04/29/05 at 03:28 PM

Why I love Sean McGrath

Sean

Mr. McGrath is looking for a few good docheads (oxymoron, <ducks>) for an upcoming project. Experience in working with massive amounts of content a must, yadda yadda yadda.. But here's why I love Sean: he doesn't hire people (yes, docheads are people too) without the following qualification:

If you cannot think of 3 good reasons why dynamically typed programming languages have a role to play in this universe, you don't want the job.


On HTTP Abuse

There's been a lot of good discussion around Udell's End HTTP abuse article. We need to get this figured out because it's almost embarrassing to be an advocate of standard approaches to building web applications when something as fundamental as the correct use of HTTP GET is butchered so often. Unfortunately, misuse of HTTP GET is just the tip of the iceberg. There's a whole slew of HTTP abuse going on out there (often in the form of neglect) that can be laid at the footstep of two parties: frameworks and evangelists. The frameworks suck and the evangelists aren't trying hard enough (I consider myself in both camps, btw).

The small community that is coalescing around REST/HTTP should prioritize the following objectives above anything else at this point:

  1. Raise awareness of what HTTP is capable of.
  2. Fix the tools.

HTTP Kicks Ass

We need to raise awareness of what HTTP is really about. If you're reading and understanding this, then you've likely had the Ah-ha moment based on the realization that HTTP isn't just a beat up old protocol for transferring files from a web server to browsers (if you haven't, read this); but this understanding is not common. The large majority of smart technical people believe that HTTP is legacy technology: an old protocol, maybe a step above gopher, that has somehow hung around through the years. Something to be dealt with, not taken advantage of. We need to show how limiting this mind-set is.

Many of us were first introduced to the true capabilities of HTTP via the REST architectural style. If you were like me, Mark or Paul (or both at the same time) forcefully induced the REST epiphany on you against your will and then you went and re-read RFC 2616 while slapping yourself on the forehead repeatedly. The correlation between the architectural concepts described in Roy's thesis and the implementation semantics described in the RFC were clear as a bell. HTTP was no longer a simple mechanism for exposing a directory of files and executable processes to a browser, it was the essence of web architecture.

Here's the thing though: most people don't read RFC's! They hate RFCs. Reading RFCs ranks close to doing taxes for most people. The only thing worse than reading RFCs is reading PhD thesis'.

The evangelist needs to reach these people somehow and I really don't think it's going to be through describing the architectural concepts of REST so much as it will be through describing the here's-what-you-can-do-right-now-in-the-real-world benefits of HTTP. It's a fine line, I know, but I think it's important.

How do we give people the Ah-ha! without requiring that they read a thesis and an RFC?

A Three Legged Dog

I look at what Zeldman, Meyer, and others are accomplishing with the Designing with Web Standards movement and it seems a good model. They emphasis the correct use of standard CSS, (X)HTML, and DOM scripting (the three legged stool) to achieve enormous benefits over proprietary web design techniques. They have books and a cluster of weblogs that show designers how to reap the rewards of this system. It's been a smashing success and is only gaining traction.

Three Legged Dog

Can we take a page from their book? In my opinion, we're just as entitled to the phrase Designing with Web Standards as they are. We have a three legged stool too: HTTP, URIs, and XML. Except our stool is more like a three legged dog - you can get around but it is not quite optimal. Why is this?

My feeling is that we haven't done a good enough job of showing examples of what the correct use of HTTP, URIs, and XML looks like in the real world. Joe Gregorio's excellent column aside, there just is not a lot of here's-how-you-get-shit-done-with-http type content available on the web, led alone books or magazine articles. We're amazingly talented at pointing out when something is being done wrong (e.g. WS-*, non-safe/idempotent GET, incorrect charset, etc.) but we suck at showing how to do it right in the first place.

(Here's some more pictures of three legged dogs because three legged dogs are the shit.)

To Hell With Bad Web Frameworks

Why are we having such a hard time showing correct use of HTTP and URIs? Because our tools suck. How are we suppose to show how to use HTTP and URIs properly when the tools and frameworks actively discourage practicing standards? Our incessant ranting on correct use of web technology is filed by many into the not living in the real world drawer. We're assholes.

In many ways this is the same battle that the Designing with Web Standards crowd has been fighting with their tools - the browsers. How can you preach standard use of (X)HTML, DOM, and CSS when the browsers have such poor support for them? Those guys drew a line and said To Hell With Bad Browsers and it's paying off. I think we need to take on a similar attitude and start expecting more from our web frameworks.

Every web framework I've ever worked with (Apache, CGI, Java Servlets, Quixote, Webware, Ruby on Rails, PHP, ASP.NET, CherryPy) were extremely limited in their support for the full set of capabilities provided by HTTP.

For instance, which frameworks ...

  • ... help implement content negotiation properly?

  • ... provide facilities for implementing a smart caching strategy for dynamic content? (proper use of If-Modified-Since, Expires, Cache-Control, etc.)

  • ... make dealing with media types easy?

  • ... make dealing with character encodings easy?

  • ... encourage the use of standard HTTP authentication schemes?

  • ... have a sane mechanism for attaching different behavior to different verbs for a single resource?

  • ... help ensure that URIs stay cool?

  • ... make dealing with transfer encodings (gzip, compress, etc.) easy?

  • ... help you use response status codes properly? (e.g. Nearly all dynamic content returns either a 200 or 500).

Sure, some frameworks have tricks for portions of the list but there should be documented, well-thought-out mechanisms for implementing these facets of HTTP. Let's face it, if you want to do something outside of exposing well-known static representation types from disk for GET, or process application/x-www-urlencoded data via POST, you're off the radar for most web frameworks. I'm not saying that other things aren't possible, I'm saying they aren't supported well.

Shutting this one down

I've rambled for to long already. I have more to say on this but I'll try to keep it to short and focused posts over the next week or so.

To sum up, we need a good implementation of HTTP/1.1 that provides a real framework for building standards based web applications. We then need to advocate and illustrate the correct use of HTTP/URIs/XML as a killer technology that has been hiding right under our noses by showing the benefits of using the system correctly. Until we get this stuff straightened out, expecting people to use GET properly is unrealistic.

...

Sidebar: I just noticed that Leigh Dodds beat me to it:

[Udell] then continues by exploring the ease of using GET versus POST on the client-side. I think the fault actually lies on the server-side. Specifically, with existing web applications frameworks.

Word.

To weblog coding http rest python web ... on Fri 04/22/05 at 10:55 PM

Quixote 2.0 Released
- and under a GPL compatible license.
To links coding python quixote ... on Wed 04/13/05 at 09:42 PM
Radical Simplification
- Everything I ever wanted to say about the current state of software development in ~50 slides. Thanks, Sam.
Analyst Report: Scripting languages lag in Web services support
- That's because they don't have shithead analyst speculation driving feature development...
To links coding python ruby ws web soap dumb ... on Wed 04/06/05 at 08:09 PM
IronPython 0.7.1 is released to the world!
- Jim Hugunin announces Microsoft's first official release of IronPython. Let's be absolutely clear: Microsoft just released a respected free software project.
To links coding python microsoft weird ... on Wed 04/06/05 at 05:43 AM
Upcoming changes in Python 1.5
- Best c.l.p thread ever: irritating whitespace-based indentation gone, death of for loop, all strings are regular expressions, and WE FINALLYY GET BRACES! (via Hans Nowak)

Insects and Entropy

Jon was a Computer Science major at Ohio State University taking a course in artificial intelligence. The professor had set up an interesting group project where each student was responsible for writing an insect program that would be matched against all the other student's insect programs in a really cool network based insect war simulation environment thing that rocked.

The insect programs had certain constraints set by the professor. Size, shape, speed, and other traits were selected by each student but there were rules such that you couldn't just turn all the dials to full.

Once the basic properties of the insect were fleshed out, code was written to specify how the insect should act. There was an API for determining where your insect was located on the grid, approximating positions of other insects, moving your insect, attacking, rotating, etc. Pretty standard stuff.

The professor decided to pair students up: one smart kid with one dumb kid; the students who were having a hard time in the class would be able to work closely with a student that was excelling. Each student was responsible for their own insect but they were to debate their designs with each other.

Jon was one of the smart kids and was paired with a kid that wanted to change majors. Jon's dumb kid rarely attended class and seemed to dislike CS in general. He wasn't even in class the day the assignment was handed out and so Jon set out on his own to build the coolest and most advanced insect program ever created.

Over the course of a few weeks he burned through code until his insect was capable of responding intelligently to a myriad of changes in environment. It knew to run when outmatched by judging the relative strengths and weaknesses of an opposing insect. It would attempt to strafe and stay behind other insects. It would stay close to corners to reduce the potential attack positions of other insects. It was The Coolest Insect Ever.

The day before the competition, Jon's dumb kid decided to come to class. Jon asked him if he had finished his insect, to which the dumb kid replied he hadn't even started but would finish it that day, in class. Jon grinned smugly and tried to explain to the poor fool that he himself had spent all week working on his insect and that it still was not yet complete. The dumb kid shrugged and started in coding something that would get him the damn credit for the project.

Right before the class ended the dumb kid asked Jon to take a look at his insect. Jon had to fight the urge to laugh out loud when he saw that the entire insect was a mere 25 lines of code that barely made it through the compiler and with some lines having no chance of even being executed. The dumb kid had not even configured his insect's basic set of traits but had left them at the professor provided defaults.

Looking more closely, Jon found that the insect was programmed to do the same thing every time it had a turn to move:

  1. Rotate 90 degrees.
  2. Attack.

Turn and then attack. That's it? Jon asked, to which the dumb kid replied, Do you think I'll pass?

Jon tried to give the dumb kid some ideas on making his insect more advanced but the dumb kid wasn't interested. Jon decided that the dumb kid would most assuredly not pass.

The next day the competition was on. The professor loaded up the simulation program and everyone hooked their insects into the system. The dumb kid was late and then couldn't figure out how to get his insect loaded up. Jon helped him out while mumbling something about futility...

Finally the simulation began and Jon was excited to see his insect perform well through the first full round. In the second round, Jon's insect would get stuck in one of the corners, enter an infinite loop, and be forcefully removed by the professor. One by one all other insects would be killed by other insects or removed by the professor due to logic problems - that is, all but the dumb kid's insect.

As he sat watching the dumb kid's lonely insect turn-and-attack, turn-and-attack, turn-and-attack, as if to mock the whole class, Jon was forced to re-evaluate his definition of cool in relation to computer programs.

This story was told to me by Jon Miller (UNIX sysadmin) in the first person. It has stuck with me as an excellent illustration of the power of simplicity and the devil that is the human tendency toward complexity.


Index of /~twl/conferences/pycon2005
- Very organized and thorough notes from PyCon.
To links coding python reference ... on Thu 03/31/05 at 04:32 PM

The Battle of the Less Clueless

I'm catching up on the happenings of PyCon and thought this IronPython keynote summary was interesting:

The news from this morning's keynote is: IronPython released (at last). The running joke in Jim Hugunin's talk was pretending that it had only been two months since he joined Microsoft. In fact, it took about eight months to work out how to do an open source release once he got to Microsoft.

That's not funny - it's a miracle.

The new plan is to release every two weeks until there is a 1.0 release. There are one-and-a-half engineers working on IronPython. Jim is spending half his time evangelizing dynamic languages and Python within Microsoft. The hope is that the next version of CLR will have better support for dynamic languages.

I started ranting here about how quality dynamic language support on the VM is coming down to a battle of who will get lucky and be the less clueless between Microsoft and Sun. The more I think about it though, the less I care. Here's why:

  • Small teams are good teams. Nine women can't make a baby in a month and all that... I'd rather have Jim-and-a-half take two years writing a quality Python implementation on the CLR than to have an, uhh, more traditional Microsoft product in six months.

  • Maybe Patrick is right. Actually, I'm sure he's right; I just haven't decided if that means there's no value running dynamic languages on the VM. I think we need something to break through on one of the VMs if we're ever going to move this into the enterprise. There's no way I could bring Python into my place of business on any serious level. This really comes down to it not being blessed as Enterprise Class (blech!) by Sun. It seems we need the VM to get in the door and then maybe we can just move quietly toward CPython with a Java/CLR bridge?

To weblog coding python microsoft java ... on Tue 03/29/05 at 05:03 PM

Report: P-Languages Better For Enterprise
- Here they come...
To links coding python ruby article ... on Mon 03/28/05 at 10:28 PM
Design patterns part II - State
- This one is kind of weird but it shows another kick ass capability dynamic languages have: changing and object instance's class (behavior) at runtime.
To links coding python patterns ... on Fri 03/25/05 at 03:47 PM
Design patterns part I - Chain Of Responsibility
- Pretty reusable implementation of the Chain Of Responsibility pattern in Python. Very clean.
To links coding python patterns ... on Fri 03/25/05 at 03:43 PM