Google Code-In brings fresh blood to the Perl and Parrot communities

2010-11-15 Thread Jonathan Leto
Howdy,

I'm excited to announce that Parrot Foundation and The Perl Foundation
have been accepted as organizations in Google Code-In 2010!

http://leto.net/perl/2010/11/parrot-foundation-the-perl-foundation-google-code-in.html

If you know of a mailing list that you think would find this relevant
or interesting information, please pass it on!

PS: You can see a list of all 20 accepted organizations here:

http://google-opensource.blogspot.com/2010/11/announcing-accepted-organizations-for.html

Duke

-- 
Jonathan Duke Leto
jonat...@leto.net
http://leto.net


Normal wait time for PAUSE ID's

2010-04-02 Thread Jonathan Leto
Howdy,

One of my ex-coworkers has some very nice code that he wants to put on
CPAN. It has been over a week since he applied for his PAUSE ID
(PVANDE). Is this normal? Does anybody know the appropriate person to
poke?

Duke



-- 
Jonathan Duke Leto
jonat...@leto.net
http://leto.net


Re: Name space discussion Math::BestRotation

2010-02-04 Thread Jonathan Leto
Howdy,

[snip]
 2) Math::GSL: At the beginning I intended to use Math::GSL as a back
 end for the matrix operations. However, I did not get it installed
 on my machine. The issue had already been reported. Now I am using
 Math::MatrixReal as back end which works fine. It is still possible
 to support Math::GSL as an alternative back end in the future.
 However, the algorithm only deals with 3x3 matrices. If performance
 is an issue I/O is likely to be the rate limiting step.

I am the current maintainer of Math::MatrixReal and the author of
Math::GSL, so please let me know if I can help you in regard to making
your code play nice with those. Can I see your code? It would help to
give you more constructive criticism.

I believe that making your module interoperate nicely with prior art
is at least, and probably more, important than changing the name. If
you basically just have one function in your module, you may want to
just integrate into Math::MatrixReal. Does your algorithm generalize
to NxN matrices, or it is specific to 3-vectors?

 Thank you for your comments and best regards,
 Lutz


Duke


-- 
Jonathan Duke Leto
jonat...@leto.net
http://leto.net


Re: flame bait: execution speed Perl vs. C (Date::Calc::PP vs. Date::Calc::XS)

2009-11-22 Thread Jonathan Leto
Howdy,

 I seem to recall that we have a pressing need for another perl5 VM to
 deliver on the promise of being able to run your perl5 code in perl6
 programs.

 --Eric

This is called Blizkost [0], a project stared by Jonathan Worthington
[1], one of the core Rakudo developers. It allows Parrot to run Perl 5
code. Currently we need to get loading of XS from Perl 5 working on
Blizkost, it is described in detail in the TODO [2]. If you get use
Data::Dumper; working in Blizkost, I will buy you a beverage of your
choice.

Fork some repos and write some tests/code and docs, people!

git clone git://github.com/jnthn/blizkost.git

Duke

[0] - http://github.com/jnthn/blizkost
[1] - http://www.jnthn.net
[2] - http://github.com/jnthn/blizkost/blob/master/TODO

-- 
Jonathan Duke Leto
jonat...@leto.net
http://leto.net


Re: module name for test data?

2009-09-29 Thread Jonathan Leto
Howdy,

 - audio::mpd::testdata?
 - audio::mpd::common::test?
 - data::audio::mpd?
 - data::audio::mpd::test?
 - test::audio::mpd?
 - is there a namespace for bulk data? test data?

If your module is useful to others for testing mpd audio in general,
then I would put it in the Test::Audio::MPD namespace. If you just
want to silo your module-specific test data, then it should go in
Audio::MPD::TestData or similar.

Cheers,


-- 

Jonathan Leto
jonat...@leto.net
http://leto.net


Fwd: Failed: PAUSE indexer report LETO/Net-Topsy-0.02.tar.gz

2009-09-21 Thread Jonathan Leto
Howdy,

It looks like the toolchain does not like the fact that I am using
MooseX::Declare in my Net::Topsy module [0]. It also had a hard time
figuring out my version number, until I hard-coded it in Build.PL .
Currently, META.yml does not show any modules that are written in
MooseX::Declare.

Who is to blame/what to do now?

Duke

[0] - http://search.cpan.org/dist/Net-Topsy/


-- Forwarded message --
From: PAUSE upl...@pause.fiz-chemie.de
Date: Fri, Sep 18, 2009 at 10:09 PM
Subject: Failed: PAUSE indexer report LETO/Net-Topsy-0.02.tar.gz
To: jonat...@leto.net, andreas.koenig.gmwojprw+pa...@franz.ak.mind.de


The following report has been written by the PAUSE namespace indexer.
Please contact modu...@perl.org if there are any open questions.
 Id

              User: LETO (Jonathan Leto)
 Distribution file: Net-Topsy-0.02.tar.gz
   Number of files: 20
        *.pm files: 4
            README: Net-Topsy-0.02/README
          META.yml: Net-Topsy-0.02/META.yml
       YAML-Parser: YAML::XS 0.32
 META-driven index: yes
 Timestamp of file: Sat Sep 19 05:08:20 2009 UTC
  Time of this run: Sat Sep 19 05:09:53 2009 UTC

Nothing in this distro has been
                    indexed, because according to META.yml this
                    package does not provide any modules.

__END__



-- 

Jonathan Leto
jonat...@leto.net
http://leto.net


Re: Failed: PAUSE indexer report LETO/Net-Topsy-0.02.tar.gz

2009-09-21 Thread Jonathan Leto
Howdy,

Does anybody know the regex that PAUSE uses to find the package line?
I am sure I can fake it out.

Duke

On Mon, Sep 21, 2009 at 3:34 PM, Fayland Lam fayl...@gmail.com wrote:
 put the
 package Net::Topsy;
 back for now, until PAUSE supports the syntax of MooseX::Declare

 Thanks

 On Tue, Sep 22, 2009 at 3:15 AM, Jonathan Leto jonat...@leto.net wrote:
 Howdy,

 It looks like the toolchain does not like the fact that I am using
 MooseX::Declare in my Net::Topsy module [0]. It also had a hard time
 figuring out my version number, until I hard-coded it in Build.PL .
 Currently, META.yml does not show any modules that are written in
 MooseX::Declare.

 Who is to blame/what to do now?

 Duke

 [0] - http://search.cpan.org/dist/Net-Topsy/


 -- Forwarded message --
 From: PAUSE upl...@pause.fiz-chemie.de
 Date: Fri, Sep 18, 2009 at 10:09 PM
 Subject: Failed: PAUSE indexer report LETO/Net-Topsy-0.02.tar.gz
 To: jonat...@leto.net, andreas.koenig.gmwojprw+pa...@franz.ak.mind.de


 The following report has been written by the PAUSE namespace indexer.
 Please contact modu...@perl.org if there are any open questions.
  Id

               User: LETO (Jonathan Leto)
  Distribution file: Net-Topsy-0.02.tar.gz
    Number of files: 20
         *.pm files: 4
             README: Net-Topsy-0.02/README
           META.yml: Net-Topsy-0.02/META.yml
        YAML-Parser: YAML::XS 0.32
  META-driven index: yes
  Timestamp of file: Sat Sep 19 05:08:20 2009 UTC
   Time of this run: Sat Sep 19 05:09:53 2009 UTC

 Nothing in this distro has been
                     indexed, because according to META.yml this
                     package does not provide any modules.

 __END__



 --

 Jonathan Leto
 jonat...@leto.net
 http://leto.net




 --
 Fayland Lam // http://www.fayland.org/




-- 

Jonathan Leto
jonat...@leto.net
http://leto.net


Re: BigInt / pack problems

2009-09-08 Thread Jonathan Leto
Howdy,

I am currently one of the maintainers of Math::BigInt, would you like
to create a ticket at:

http://rt.cpan.org/Public/Dist/Display.html?Name=Math-BigInt

and attach your perl -V, uname -a and gcc --version to it, as
well as your code sample?

Cheers,

On Sat, Sep 5, 2009 at 11:40 AM, Shmuel Fombergsemu...@012.net.il wrote:
 Hi All.

 Can someone with tell me why this code:
 (you will need Perl 5.10 and 64 bit support and Math::BigIn installed)

 print unpack H*, pack Q, Math::BigInt-new(18446744073709551360);

 prints '' instead of 'ff00' that I expect it to?

 Thanks,
 Shmuel.




-- 

Jonathan Leto
jonat...@leto.net
http://leto.net


Re: Which Parser Generator to Use?

2009-09-08 Thread Jonathan Leto
Howdy,

I haven't used it in production, but you might want to look at
HOP::Parser as well:

http://search.cpan.org/~ovid/HOP-Parser-0.02/

Cheers,


On Sun, Sep 6, 2009 at 7:40 AM, Shlomi Fishshlo...@iglu.org.il wrote:
 Hi all!

 Which parser generator do you recommend to use for a Perl project. What I've
 looked at so far:

 1. Berkeley Yacc for Perl - works pretty well, but is kinda limited.

 2. Parse::RecDescent - very impressive feature set, but a little slow, and has
 been under-maintained (though it seemed to have improved slightly with several
 new releases in 2009). It also tends to be hard to debug its errors.

 3. Parse::Yapp - http://search.cpan.org/dist/Parse-Yapp/ - I tried to use it
 in https://svn.berlios.de/svnroot/repos/web-cpan/Text-Qantor/ but it gives me
 an error for what appears to be a valid syntax, and for the life of me I
 cannot understand why it is.

 4. There's a new version of GNU bison with support for multiple language
 backends. I tried writing a backend for Perl 5, but I gave up on the m4
 hacking (I think that m4 must die!).

 5. There's also ANTLR - http://www.antlr.org/ :

 http://www.antlr.org/wiki/display/ANTLR3/Code+Generation+Targets says:

 Perl - Early prototyping.  Simple lexer is working.

 6. Can I interact with the Parrot Grammar Engine (PGE)? Any input would be
 useful.

 --

 I probably missed many others. Any recommendations would be appreciated.

 Regards,

        Shlomi Fish

 --
 -
 Shlomi Fish       http://www.shlomifish.org/
 The Case for File Swapping - http://shlom.in/file-swap

 Chuck Norris read the entire English Wikipedia in 24 hours. Twice.




-- 

Jonathan Leto
jonat...@leto.net
http://leto.net


Re: I'd like a way to abandon a module

2009-08-12 Thread Jonathan Leto
Howdy,

This does not solve the problem of there not being an abandoned flag
on CPAN, but perhaps listing it on

http://www.unmaintained-free-software.org/wiki/Main_Page

would be a better interim solution that just ignoring it.

Cheers,


On Wed, Aug 12, 2009 at 5:39 AM, Andy Lestera...@petdance.com wrote:
 It would be swell if we could somehow note modules as being abandoned.

 For example, I'm a maintainer of WWW::Yahoo::Groups, because nobody took it
 from Iain Truskett.  It doesn't install correctly because it's out of date
 and it's scraping Yahoo.  Someone needs to update it if it's ever going to
 work again, but that's not going to be me.  I am currently getting RT mail
 when people submit bugs, but I just delete them.  It would be good if I
 didn't get the mail, and if people knew that there was no point in
 submitting bug reports anyway.

 This doesn't just apply to my case of having someone else's module.  It
 makes sense for any module for which the maintainer no longer has any
 interest in keeping it up.

 xoxo,
 Andy


 --
 Andy Lester = a...@petdance.com = www.theworkinggeek.com = AIM:petdance



-- 

Jonathan Leto
jonat...@leto.net
http://leto.net


Re: Perl, BigInts/BigFloats and GMP

2009-05-11 Thread Jonathan Leto
Howdy,

To my extreme enjoyment, I found out that someone has already taken
the burden of creating a full interface to the GMP integer functions
in the form of Math::GMPz [1]. There is also Math::GMPf and
Math::GMPq, in case you were wondering.

Cheers,


[1] http://search.cpan.org/dist/Math-GMPz/


On Fri, May 1, 2009 at 12:31 PM, Jonathan Leto jal...@gmail.com wrote:
 Howdy,

 I want to give Perl full access to the GMP library [1] and I am making
 that happen so that these routines can be used by Crypto::* and
 Math::* modules. The ultimate goal of this is so that the Crypt::*
 namespace will not depend on Math::Pari. The first step on this path
 is Math::Primality [2], which is involved in Google Summer of Code
 2009 [3] and which will provide is_prime() and next_prime() functions
 for BigInts. These functions seem to be the main reason why so many
 crypto modules have no choice but to use Math::Pari. After is_prime()
 and next_prime() are implemented, many modules could in theory be
 ported over to Math::BigInt, but there are many routines which are
 currently not available from Perl in GMP that will speed up things
 considerably. I cannot quantify this right now, but I am willing to
 bet roughly an order of magnitude or two.

 Currently there is:

 Math::GMP - only a small subset of the GMP library to emulate Math::BigInt API
 Math::BigInt::GMP - A faster implementation of the small subset for
 the Math::BigInt API
 Math::GMP::SWIG [4] (unreleased) - A full interface to GMP via SWIG,
 which I was actively working on but then ran into odd memory
 corruption errors and has been on hold lately.

 My main questions to this list are:

 1) Does anybody have suggestions for a name for the CPAN module which
 will provide the full interface to GMP?
 2) What do people hate/love/want to see in the Math::BigInt API ?

 Currently I have been hacking in the functions that I needed into my
 fork of Math::BigInt::GMP on github [5], but some stuff has nothing to
 do with the BigInt API and just doesn't belong there. I talked to Tels
 (who maintains Math::BigInt and Math::BigInt::GMP) and he gave me
 co-maintainer status, as he said that he does not have time to
 maintain these modules.

 If any one has any other comments regarding what they would like to
 see in regard to scientific computing with Perl, I would love to hear
 it.

 Cheers,


 NOTE: Crypto modules only require BigInts, not BigFloats, so the first
 iteration of all this will most probably only implement the integer
 algorithms of GMP.

 [1] http://gmplib.org/
 [2] http://github.com/leto/math--primality/tree/master
 [3] 
 http://leto.net/dukeleto.pl/2009/04/google-announces-nine-students-in-gsoc2009-with-the-perl-fou.html
 [4] http://leto.net/gitweb/?p=Math-GMP-SWIG.git;a=summary
 [5] http://github.com/leto/math--bigint--gmp/tree/master



 --

 Jonathan Leto
 jonat...@leto.net
 http://leto.net




-- 

Jonathan Leto
jonat...@leto.net
http://leto.net


Re: Arguments checker module

2009-05-06 Thread Jonathan Leto
Howdy,

 Thanks guys for sticking up for me.  I am just old-fashioned, I guess; for
 better or for worse, I'm not interested in changing/fixing Perl itself, just
 in finding  writing reusable code that meets my needs without adding stuff
 that doesn't.

Wow, I was taken aback when I read not interested in changing/fixing
Perl itself. Ever heard of technical debt? You can feel it every time
you type my ($self) = @_.  Also, Perl 5 doesn't have OO, it has
blessed scalars. Just sayin' ;).

If you want to maximize your code reuse, I suggest drinking the Moose
Koolaid and learning about roles [1]. Chromatic has a pretty nice
description [2] and hdp gave a nice description of them at a recent
PDX.pm [3].

Cheers,

[1] http://search.cpan.org/dist/Moose/lib/Moose/Role.pm
[2] http://www.modernperlbooks.com/mt/2009/04/the-why-of-perl-roles.html
[3] http://www.weftsoar.net/~hdp/talk/meta-moose/slides/start.html


-- 

Jonathan Leto
jonat...@leto.net
http://leto.net


Re: Arguments checker module

2009-05-06 Thread Jonathan Leto
Howdy,

 There are a couple of big problems with adopting Moose or one of the similar
 redesigns of Perl OO.

You mean implementing OO in Perl, but I get it.


 1. Not every module you're using will be Moose-based, so if you're working
 on one of those, you'll need to remember to switch back and forth.  It's bad
 enough having both (Perl's approximation of) OO and procedural calls.

From what I know (hdp would know much better), Moose can interact just
fine with non-Moose modules. For instance, check out MooseX::NonMoose
[1].
So, this is false.


 2. If we bring someone new onto the team we'd have to train them not just in
 Perl, but in Moose as well.  There are tons of books and online resources
 for Perl, but only Moose's own documentation for that.  All the examples,
 code snippets, books, and howtos that people might want to use would have to
 be adapted to fit into a Moose framework.

Huh? Moose is 50 times simpler to learn that Perl 5's hacktastic OO
implementation. And they would have to write about 50 times less code.
And hopefully you are hiring people that can learn new things. All
you have to say is use Moose's features for creating/maintaining your
objects, everything else is the same.

 3. If I am going to change languages, I'd rather switch to Ruby or Python.

Moose is still Perl 5! And it will help you transition to Perl 6, if
you don't decide to switch to Ruby or Python.

Cheers,



[1] http://search.cpan.org/~doy/MooseX-NonMoose-0.02/lib/MooseX/NonMoose.pm

-- 

Jonathan Leto
jonat...@leto.net
http://leto.net


Re: Puzzling error from cpan testers

2009-05-05 Thread Jonathan Leto
Howdy,

 It may work, or it may not.  If it works - in the sense of making the
 test failure go away - then I would expect it to bite someone later when
 they just happen to hit upon a number where the floating point rounding
 error goes the other way.

 Check that it's in an acceptable range.

I heartily agree with this. Math::GSL has thousands of tests like
this, which is why Math::GSL::Test
has a number of easy-to-use functions to do this.

 Perhaps I should stringify and then re-numberify the value inside round()
 instead?


I very much recommend that you look at is_similar() in
Math::GSL::Test, it has implemented at least a
few wheels that you are destined to want:

   is_similar($x,$y;$eps,$similarity_function)

   is_similar($x,$y);
   is_similar($x, $y, 1e-7);
   is_similar($x,$y, 1e-3, sub { ... } );

   Return true if $x and $y are within $eps of each other, i.e.

   abs($x-$y) = $eps

   If passed a code reference $similarity_function, it will pass $x and $y
   as parameters to it and will check to see if

   $similarity_function-($x,$y_) = $eps

   The default value of $eps is 1e-8. Don't try sending anything to the
   Moon with this value...

You can use the $similarity_function to implement relative error
bounds and there is also a is_similar_relative() wrapper. All of these
functions take array references of floating point values and map over
them. The reason these methods are in Math::GSL::Test is because they
also correctly handle GSL_NAN correctly, so you can ignore those bits.


Cheers,


-- 

Jonathan Leto
jonat...@leto.net
http://leto.net


Re: Puzzling error from cpan testers

2009-05-05 Thread Jonathan Leto
Howdy,

 Yikes.  You must have missed Test::Number::Delta when you were writing
 that.  On CPAN since 2005.  I originally called it Test::Float and got
 argued into a proper hierarchical name, which is probably why no one
 seems to know it exists.   Synopsis:

No, I saw your module, but I needed to correctly deal with 'NaN' in a
portable way via gsl_nan().

I agree with you that you module *should* be used by a lot more people
who just '==' doubles and hope for the best.

Cheers,



-- 

Jonathan Leto
jonat...@leto.net
http://leto.net


Perl, BigInts/BigFloats and GMP

2009-05-01 Thread Jonathan Leto
Howdy,

I want to give Perl full access to the GMP library [1] and I am making
that happen so that these routines can be used by Crypto::* and
Math::* modules. The ultimate goal of this is so that the Crypt::*
namespace will not depend on Math::Pari. The first step on this path
is Math::Primality [2], which is involved in Google Summer of Code
2009 [3] and which will provide is_prime() and next_prime() functions
for BigInts. These functions seem to be the main reason why so many
crypto modules have no choice but to use Math::Pari. After is_prime()
and next_prime() are implemented, many modules could in theory be
ported over to Math::BigInt, but there are many routines which are
currently not available from Perl in GMP that will speed up things
considerably. I cannot quantify this right now, but I am willing to
bet roughly an order of magnitude or two.

Currently there is:

Math::GMP - only a small subset of the GMP library to emulate Math::BigInt API
Math::BigInt::GMP - A faster implementation of the small subset for
the Math::BigInt API
Math::GMP::SWIG [4] (unreleased) - A full interface to GMP via SWIG,
which I was actively working on but then ran into odd memory
corruption errors and has been on hold lately.

My main questions to this list are:

1) Does anybody have suggestions for a name for the CPAN module which
will provide the full interface to GMP?
2) What do people hate/love/want to see in the Math::BigInt API ?

Currently I have been hacking in the functions that I needed into my
fork of Math::BigInt::GMP on github [5], but some stuff has nothing to
do with the BigInt API and just doesn't belong there. I talked to Tels
(who maintains Math::BigInt and Math::BigInt::GMP) and he gave me
co-maintainer status, as he said that he does not have time to
maintain these modules.

If any one has any other comments regarding what they would like to
see in regard to scientific computing with Perl, I would love to hear
it.

Cheers,


NOTE: Crypto modules only require BigInts, not BigFloats, so the first
iteration of all this will most probably only implement the integer
algorithms of GMP.

[1] http://gmplib.org/
[2] http://github.com/leto/math--primality/tree/master
[3] 
http://leto.net/dukeleto.pl/2009/04/google-announces-nine-students-in-gsoc2009-with-the-perl-fou.html
[4] http://leto.net/gitweb/?p=Math-GMP-SWIG.git;a=summary
[5] http://github.com/leto/math--bigint--gmp/tree/master



-- 

Jonathan Leto
jonat...@leto.net
http://leto.net


Google Announces Nine Students in GSoC2009 with The Perl Foundation

2009-04-21 Thread Jonathan Leto
Howdy,

I have the extreme pleasure to announce that the Google Summer of Code
2009 has officially started and The Perl Foundation will be mentoring
9 students this year in a variety of projects. A breakdown of each
student project and mentor with links to the project abstract can be
found at [1]. If you would like to keep up with recent updates, then
subscribe to this RSS feed [2]. If you would like to get a little more
involved, come join us in #soc-help on irc.perl.org or join the
tpf-gsoc-students list [3].

[1] 
http://leto.net/dukeleto.pl/2009/04/google-announces-nine-students-in-gsoc2009-with-the-perl-fou.html
[2] http://leto.net/dukeleto.pl/atom.xml
[3] http://groups.google.com/group/tpf-gsoc-students


Thanks to everyone involved, including students with projects that
were not accepted. We had a limited number of spots and some very good
applications could not be accepted. With a bit more spit and polish
some would be a great fit for a TPF grant. Thank you to *everyone* who
applied, and if you did not get accepted this year, you can still
implement your project and become part of the community, without
getting paid. I promise, we don't bite.

Stay tuned for further updates.

Cheers,

-- 

Jonathan Leto
jonat...@leto.net
http://leto.net


Introducing Math::GSL 0.12 and some questions/rants

2008-09-14 Thread Jonathan Leto
Howdy folks,

I have been lurking here for quite a while and I figured it was time
that I ask some questions that have been bouncing around
my head. This summer I had the pleasure of being part of the Google
Summer of Code, working under the umbrella of The Perl
Foundation on Math::GSL, a Perl interface to the GNU Scientific
Library (which is written in C).

The XS binding are generated via SWIG, and integrating this into the
build process of Module::Build was complicated and error prone. And
I still have all kinds of platform-dependent code to generate the
correct linker flags in my Build.PL .

What are peoples thoughts on making the addition of build elements to
Module::Build (possibly via plugins) as painless as possible?
I have been in communication with Eric Wilhelm and will try to devote
some time in the near future to make SWIGifying a CPAN module
not so damn complicated. I recently gave a talk at the Advanced Topics
Portland LUG about using SWIG in a CPAN module, slides
are available here:

 
http://leto.net/gitweb/?p=presentations.git;a=blob_plain;f=CreatingCPANModulesWithSWIG/pres.pdf;hb=HEAD

As for Math::GSL, it is a smorgasbord of scientific-computing-related
functions, so there should be something for everyone. The newest
version
(0.12) was uploaded to CPAN minutes ago and should be filtering its
way to a mirror near you.  There are over
60 different random number generators, vectors, matrices, BLAS, a 2x
faster sort routine as well as specialty sort routines,
numerical integration and differentiation, histograms, over 500
special functions/statistics distributions, Fast Fourier transform,
the list goes on

For those of you that rely on PDL or Cephes for functionality, this is
a new option. If you use Math::MatrixReal and are needing more speed,
Math::GSL::Matrix may be something to look at. Also, Math::GSL now
compiles on Mac OSX, Linux/BSD and Windows/Cygwin.

If there are any more questions about how you can benefit from
Math::GSL, please do not hesitate to ask. Also, if you try Math::GSL
and
goes boom, please send a bug report to me personally or via RT. Thanks!

Cheers,

PS: Useful links

Math::GSL blog: http://leto.net/code/Math-GSL/
Google group: http://groups.google.com/group/math-gsl-dev
My gitweb: http://leto.net/gitweb/



-- 
[-]
  Jonathan Leto
[EMAIL PROTECTED]