Andrew Gwozdziewycz on 16 Jul 2007 17:34:38 -0000

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

[philly-lambda] Re: Projects people are working on...

  • From: "Andrew Gwozdziewycz" <>
  • To:
  • Subject: [philly-lambda] Re: Projects people are working on...
  • Date: Mon, 16 Jul 2007 13:34:25 -0400
  • Dkim-signature: a=rsa-sha1; c=relaxed/relaxed;; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=Hh2Sgak6NFtqGuxrVnZtXTvl4kaUd2vAF44zF49QqUq7RhRnhVXydf8eoriZYyQ9DWAvccYGe9HudbsDDJ0V/7yb7X6zorJueBMe9YbgUc5FRXgoNps0LSda4M606cuzC0Ttg2iKZoB+DBa5WGI75G7BxXRK7SkPKzCEPFxMHBQ=
  • Domainkey-status: good (test mode)
  • Mailing-list: list; contact
  • Reply-to:
  • Sender:

> I'd like to share some of my thoughts on the current state of Magic.
> In specific senses, I wholeheartedly agree with you that Magic is
> not generalized enough. It's currently for Scheme48 only, and
> there's nothing motivating me to make it more portable. Second, it
> uses SCGI to speak to web servers, making deployment straightforward
> only on Lighttpd AFAIK.

I don't think there's an issue that it's being targetted at a single
implementation. My take on the Scheme world is that the number of
implementations surviving is due to the nature of the many different
views hundreds of people have on a very small spec. I don't think this
is generally a bad thing, but an inconvenience in many cases. As
someone new to Scheme (loving it), but wishing I could have it all in
one implementation, stumbling upon a piece of software in it's early
stages that looks promising, yet seeing that it doesn't work in such a
way you can go and get your feet wet with it right away, makes me
question those previous statements. Will Scheme ever have a "killer"
app which gets it the praise it deserves? Is the abundance of choice
holding Scheme back from gaining wide popularity? I know none of my
co-workers would ever give it a shot because of the "number of
parenthesis," but a few years ago, they never would have looked at
Ruby either.

Certainly there is a ton of code written in Scheme targeting 1, and in
some cases 2 or 3 implementations, but none of it that I've seen
sticks out as something to make people want to try out Scheme. When I
saw Magic for the first time, I thought damn, this might be able to
shut people up about Rails and maybe even gain some popularity.

> But in other ways, Magic is too generalized. It uses an Emacs hook-
> procedure approach to processing requests, which makes adding
> features such as session support very straightforward. It's about
> equally easy to do just about anything, which leads me to wonder how
> easy it is to do anything.

There's no question that Magic is neat, and has some really good
ideas, I can't dispute that. What is lacking though is documentation,
and _more_ good examples to show off what it can do, how easily said
things can be done and maybe even more importantly illustrate why
you'd want to use Magic over Django, or Rails (implementation language
aside). It's straightforward to those of us who are into Scheme and
things, but like I said, not everyone else is.

But, wide adoption of Magic, may not be your goal, and that's cool
too. I am just more or less explaining my outsiders view of it. Take
whatever I say however you like.

> It should be easy to deploy Magic. Ideally it should speak HTTP
> natively, allowing it to service requests directly or be proxied
> behind another server. The downside of such an approach is my desire
> to avoid writing a fully compliant HTTP/1.1 server. I do not want to
> reinvent the wheel.

I think ideally, you follow Python's lead here and create something
like WSGI for Magic that allows you to create a function that knows
how to accept and return the request to the client. Then it's up to
the programmer how they want to deploy it, assuming they have a layer
to handle FastCGI requests, or mod_lisp, or whatever. The point is,
the main entry point to a Magic application is the same regardless of
how it's deployed. If you then want to write an HTTP/1.1 web server,
create it in such a way that you can attach a Magic application to it.

> Magic, but I'd like to make a clean break with the legacy Magic 2
> code. I am aware of what Joel Spolsky would say about that[1], and I
> may to a more evolutionary approach to evolving Magic i.e. I may
> never do a ground up re-write.

First of all, though I believe that Joel Spolsky sometimes has some
clever things to say, I don't consider him a god, or all knowing. In
this particular case, he has a point, but I fail to see why people put
him on this pedestal. Have you ever used Fogbugz? I wasn't a fan. I
say, do what it takes to make it something you want to use. If that
means iteratively rewriting it until none of Magic 2 exists, than so
be it.

> It should support the development of contemporary web-based
> applications. I'm interested in doing things like creating
> Javascript proxies for server-side Scheme procedures and data
> structures. I'm writing a new version of the Transmogrify Resource
> Repository[2] as an exercise to help me figure out what Magic needs
> to support to make developing ajax web apps a breeze.

But how does it do with regular requests and form handling? You're
definitely right, you need to gracefully handle AJAX, but don't forget
about the other important things.

> It should be i18n-friendly. I am a 7-bit ASCII guy at heart, and I
> have a lot of trouble embracing this Unicode stuff, but it's here to
> stay, so I better deal with it. Sigh.

How is Scheme48's handling of Unicode? I've never much been a fan of
Unicode. I don't read other languages, nor do I write them. But, I of
course do realize that I *should* start thinking about making stuff I
write more friendly to all.

Regarding Scheme48, I had a brief stint where I was using it, but it
was a bit awkward for a newbie such as myself. I should eventually
give it another shot. For now though, I've been using Gauche, and it
handles unicode quite well. Of course it's author is Japanese, so that
more than likely is the major reason for that.

> It should be porting-friendly. Because *I* do not want to port it.

I think any piece of software that has a chance in hell of being
successful in the Scheme world, *must* be porting-friendly. The same
goes for CL code too, as far as I can tell.

Andrew Gwozdziewycz  |

You received this message because you are subscribed to the Google Groups "Philly Lambda" group.
To unsubscribe from this group, send email to
For more options, visit this group at