From: Rob Warnock on
Tim X <timx(a)nospam.dev.null> wrote:
+---------------
| rpw3(a)rpw3.org (Rob Warnock) writes:
| > And for any really heavy lifting a script can always REQUIRE previously-
| > compiled code. [Or even *be* previously-compiled code, see "p.s." below.]
| >
| > As a result, I've been using CMUCL for almost all my miscellaneous
| > "scripting" for a number of years. At any point in time, I generally
| > have ~60 CMUCL "script" in my "$HOME/bin/" directory.
....
| I'd now like to start using CL at work more. I've done so in a limited
| way with a couple of application prototypes that worked quite well.
| However, using it for some scripts may be a harder battle to win, so I
| was really looking for some counter arguments. Not sure if it will do
| any good - its still mainly FUD I run into rather than anything of real
| substance. The difficulty with using it for scripting is that a lot of
| others will see what I'm doing. With theprototypes I've done, CL was OK
| because if it all whent badly, it was just my head that would roll.
| However, letting CL get into core areas is another story.
+---------------

I've been able to get away with it pretty much unopposed in a lot of
marginal areas, places that don't directly challenge the expertise of
others in their preferred languages. For example, at my most recent PPoE
I got CMUCL included in the approved binaries that build tools could
use, since I had a couple of CL scripts that parsed ad-hoc documentation
(produced by others) to generate C headers & data initializers for a
certain Linux kernel device driver. Nobody had a problem with that,
since it was an automatic part of the system build process that they
didn't have to look at (as long as it "just worked", which it did).

Another area (as I've written about here previously) is user-mode
debugging tools for hardware: there just aren't any "standard" tools
for such things, so nobody cares that I write mine in CL.

Yes, some of that *did* end up "leaking" into "core areas", but only
indirectly, e.g., I coded the hardware debugger script so that its
internal pre-compiled functions could be evoked from the shell command
line, and the Manufacturing & Support folks ended up using some of those
functions when testing/diagnosing the product, e.g.,

$ hwtool ecc-scan 0 0x40000
...[Scan a range of NVRAM for ECC errors]...

$ hwtool i2c-reset
...[Do a brute-force sledgehammer reset of the I2C bus.]...

$ hwtool pcix-strength 1 8 32 32
...[Tweak the drive strength of the PCI-X bus interface]...

Note that "hwtool" *needed* the speed of compiled code [since it was
frobbing hardware bits directly!], so it couldn't have been done in,
say, Tcl or other "interpreted" languages. [At least, not without
writing a bunch of special C code to load into the Tcl image.]

+---------------
| My other concern is my CL skill level. While I've been using CL fairly
| regularly for a few years now and have done some successful prototyping,
| I've not yet done anything that needs to be 'production' quality.
+---------------

Again, if you develop your skills doing stuff that, while it needs to
be done to get the main product out the door, is in areas that don't
directly challenge the expertise of others, your skill & confidence
in CL will naturally progress.

In any case, the definition of "production quality" can vary wildly
depending on the situation. My *first ever* major piece of CL code
[a web application server and SQL-based app behind it] ended up going
into production simply because there wasn't any other viable way to
get the job done in time. [It was a volunteer effor for a non-profit,
but still...]

I'm not suggesting you ship stand-alone commercial software products
that you don't feel comfortable with, only that there are aspects of
commercial enterprise where some risk with new tools is acceptable
[e.g., "infrastructure" stuff].


-Rob

-----
Rob Warnock <rpw3(a)rpw3.org>
627 26th Avenue <URL:http://rpw3.org/>
San Mateo, CA 94403 (650)572-2607

From: Tim X on
rpw3(a)rpw3.org (Rob Warnock) writes:

> Tim X <timx(a)nospam.dev.null> wrote:
> +---------------
> | rpw3(a)rpw3.org (Rob Warnock) writes:
> | > And for any really heavy lifting a script can always REQUIRE previously-
> | > compiled code. [Or even *be* previously-compiled code, see "p.s." below.]
> | >
> | > As a result, I've been using CMUCL for almost all my miscellaneous
> | > "scripting" for a number of years. At any point in time, I generally
> | > have ~60 CMUCL "script" in my "$HOME/bin/" directory.
> ...
> | I'd now like to start using CL at work more. I've done so in a limited
> | way with a couple of application prototypes that worked quite well.
> | However, using it for some scripts may be a harder battle to win, so I
> | was really looking for some counter arguments. Not sure if it will do
> | any good - its still mainly FUD I run into rather than anything of real
> | substance. The difficulty with using it for scripting is that a lot of
> | others will see what I'm doing. With theprototypes I've done, CL was OK
> | because if it all whent badly, it was just my head that would roll.
> | However, letting CL get into core areas is another story.
> +---------------
>
> I've been able to get away with it pretty much unopposed in a lot of
> marginal areas, places that don't directly challenge the expertise of
> others in their preferred languages. For example, at my most recent PPoE
> I got CMUCL included in the approved binaries that build tools could
> use, since I had a couple of CL scripts that parsed ad-hoc documentation
> (produced by others) to generate C headers & data initializers for a
> certain Linux kernel device driver. Nobody had a problem with that,
> since it was an automatic part of the system build process that they
> didn't have to look at (as long as it "just worked", which it did).
>
> Another area (as I've written about here previously) is user-mode
> debugging tools for hardware: there just aren't any "standard" tools
> for such things, so nobody cares that I write mine in CL.
>
> Yes, some of that *did* end up "leaking" into "core areas", but only
> indirectly, e.g., I coded the hardware debugger script so that its
> internal pre-compiled functions could be evoked from the shell command
> line, and the Manufacturing & Support folks ended up using some of those
> functions when testing/diagnosing the product, e.g.,
>
> $ hwtool ecc-scan 0 0x40000
> ...[Scan a range of NVRAM for ECC errors]...
>
> $ hwtool i2c-reset
> ...[Do a brute-force sledgehammer reset of the I2C bus.]...
>
> $ hwtool pcix-strength 1 8 32 32
> ...[Tweak the drive strength of the PCI-X bus interface]...
>
> Note that "hwtool" *needed* the speed of compiled code [since it was
> frobbing hardware bits directly!], so it couldn't have been done in,
> say, Tcl or other "interpreted" languages. [At least, not without
> writing a bunch of special C code to load into the Tcl image.]
>
> +---------------
> | My other concern is my CL skill level. While I've been using CL fairly
> | regularly for a few years now and have done some successful prototyping,
> | I've not yet done anything that needs to be 'production' quality.
> +---------------
>
> Again, if you develop your skills doing stuff that, while it needs to
> be done to get the main product out the door, is in areas that don't
> directly challenge the expertise of others, your skill & confidence
> in CL will naturally progress.
>
> In any case, the definition of "production quality" can vary wildly
> depending on the situation. My *first ever* major piece of CL code
> [a web application server and SQL-based app behind it] ended up going
> into production simply because there wasn't any other viable way to
> get the job done in time. [It was a volunteer effor for a non-profit,
> but still...]
>
> I'm not suggesting you ship stand-alone commercial software products
> that you don't feel comfortable with, only that there are aspects of
> commercial enterprise where some risk with new tools is acceptable
> [e.g., "infrastructure" stuff].
>
>

thanks Rob. Your points are all good ones and your approach very much
mirrors how I plan to proceed. If nothing else, it will make the job
more interesting!

Tim
>

--
tcross (at) rapttech dot com dot au