Re: Fredrik Hübinette Book
On Wed, 20 Oct 2021 19:20:40 -0400 will...@welliver.org wrote: > On 2021-10-19 23:36, Duke Normandin wrote: > > > But it doesn't have to be a mere summary! It could be the > > whole-meal-deal - one point at a time! And it could be expanded > > for more advanced features! Moving forward, please do not post messages directly to me. Rather, use the mailing list only, so that I wont get double of every post. Thx! -- Duke Normandin
Re: Fredrik Hübinette Book
On 2021-10-19 23:36, Duke Normandin wrote: But it doesn't have to be a mere summary! It could be the whole-meal-deal - one point at a time! And it could be expanded for more advanced features! That doesn't really seem to be the approach taken in any of the documents I've looked at (nor does the website's tagline suggest that's the purpose). It also seemed to me that the format becomes hard to follow for some of the longer documents (such as Java). But that's just one person's opinion. Because it could be a community effort, there would be no need to wait for yet another book(s), or blog(s) to be written as time permitted. The initial time and effort would certainly be non-trivial, but IMO it's absolutely necessary to spread the use and usefulness of Pike. Unless the few core developers would rather the language remain a close-door, private project. In which case the public should not be exposed to the language at all. I don't think that the core developers have an opinion one way or the other about it, and it wouldn't really matter if they did: It's simply a matter of someone dedicating time to the task. > It would not do your book project much good though. IMHO, Pike and its quality capabilities are freely available and so should quality documentation and tutorials for it. To be clear, it's not "my" book, it was produced with a lot of help from the community (as it says on the cover). Some people just prefer that format and those sorts of efforts aren't mutually exclusive. The https://learnxinyminutes.com site seems to be the quickest way to get there. A link to it on Pike's homepage would be all that is required and newcomers to Pike would be spared the hunt-n-peck search for a complete up-to-date set of docs. The existing tutorial and manual are competently written documents. If it were me spending the time to solve the problem of having material for a new user learning the language, I would complete it's conversion to the new website format rather than starting a totally new effort. After that, I'd probably consider what needed to be added from newer releases of Pike. Obviously that's just my opinion, but the delta between it and the new items that ought to be covered in it are fairly small. Anyway, this Pike noob won't probably ever see that happen. I first looked at Pike 10 or so years ago, and like I said previously nothing about the documentation has changed much during that period. There must be a reason for that! Of course, maybe you guys want it that way - a closed shop! Having met pretty much everyone involved, I can say for certain that no one intends the situation to be hostile to new users. It's simply a matter of everyone being busy working on the code. If someone were to come along and start an effort such as you're describing, I have no doubt that folks here would be supportive. It is certainly a problem that the tutorial on the Pike website is incomplete, but you never said what you thought was deficient about the complete document? http://web.archive.org/web/20160305143752/http://pike.lysator.liu.se/docs/tutorial/ and http://pike.lysator.liu.se/docs/man/ Good luck! -- Duke
Re: Fredrik Hübinette Book
On Wed, Oct 20, 2021 at 9:10 PM Robert J. Budzyński wrote: > > > > On Wed, Oct 20, 2021 at 7:44 AM Chris Angelico wrote: >> >> On Wed, Oct 20, 2021 at 2:44 PM James Latham wrote: >> > >> > Dear Pike lovers: >> > Thanks for the very informative Blog that you have created. >> > I would love to join in. >> > Is there any way to create a distributable pike program? >> > Ideally it would be all in one module. >> > Jim Latham >> >> >> Yes, absolutely! I've often made one-file Pike programs. For instance, >> I have a git hook that I use in a number of projects, and it's all >> contained in one file (called, surprisingly enough, "githook.pike"), >> marked executable, and with an appropriate shebang. >> >> ChrisA >> > > Er, that assumes the pike runtime is available. I believe what Jim had in > mind was a situation where you can't assume that on the user's end. Oh. Having had experience with this kind of thing in Python, I am of the opinion that it's a lot more hassle than it's worth. Trying to make a single executable that runs on every target platform is a nightmare, so what usually happens is that someone spins up a thing using the exact version of Python and Windows (it's always Windows) on the dev system, and it won't run properly on other systems. Much much cleaner to distribute a script and then have the interpreter installed elsewhere. What would be nice, though, would be to have a cross-platform way to have a script say "hey, I need this, if you don't have it please install it". ChrisA
Re: Fredrik Hübinette Book
On Wed, Oct 20, 2021 at 7:44 AM Chris Angelico wrote: > On Wed, Oct 20, 2021 at 2:44 PM James Latham wrote: > > > > Dear Pike lovers: > > Thanks for the very informative Blog that you have created. > > I would love to join in. > > Is there any way to create a distributable pike program? > > Ideally it would be all in one module. > > Jim Latham > > > Yes, absolutely! I've often made one-file Pike programs. For instance, > I have a git hook that I use in a number of projects, and it's all > contained in one file (called, surprisingly enough, "githook.pike"), > marked executable, and with an appropriate shebang. > > ChrisA > > Er, that assumes the pike runtime is available. I believe what Jim had in mind was a situation where you can't assume that on the user's end. -- RJ Budzyński Ośrodek Komputerowy Wydziału Fizyki UW Telegram: https://t.me/robjb
Re: Fredrik Hübinette Book
If you had more complex needs, you could also explore the zip file module/program loading feature. I think that’s present in 8.0. I could provide some more details if that’s of interest. Bill Sent from my iPhone > On Oct 20, 2021, at 1:44 AM, Chris Angelico wrote: > > On Wed, Oct 20, 2021 at 2:44 PM James Latham wrote: >> >> Dear Pike lovers: >> Thanks for the very informative Blog that you have created. >> I would love to join in. >> Is there any way to create a distributable pike program? >> Ideally it would be all in one module. >> Jim Latham > > > Yes, absolutely! I've often made one-file Pike programs. For instance, > I have a git hook that I use in a number of projects, and it's all > contained in one file (called, surprisingly enough, "githook.pike"), > marked executable, and with an appropriate shebang. > > ChrisA >
Re: Fredrik Hübinette Book
On Wed, Oct 20, 2021 at 2:44 PM James Latham wrote: > > Dear Pike lovers: > Thanks for the very informative Blog that you have created. > I would love to join in. > Is there any way to create a distributable pike program? > Ideally it would be all in one module. > Jim Latham Yes, absolutely! I've often made one-file Pike programs. For instance, I have a git hook that I use in a number of projects, and it's all contained in one file (called, surprisingly enough, "githook.pike"), marked executable, and with an appropriate shebang. ChrisA
Re: Fredrik Hübinette Book
Dear Pike lovers: Thanks for the very informative Blog that you have created. I would love to join in. Is there any way to create a distributable pike program? Ideally it would be all in one module. Jim Latham P.S. If this message doesn’t go to the entire blog, let me know the address of the blog. ~~~ > On Oct 19, 2021, at 8:36 PM, Duke Normandin wrote: > > On Tue, 19 Oct 2021 22:17:27 -0400 > H William Welliver wrote: > > I think the intent is more of a one page >> summary than a comprehensive set of documentation. Could be the >> perfect opportunity to take on a bite-sized advocacy project! > > But it doesn't have to be a mere summary! It could be the > whole-meal-deal - one point at a time! And it could be expanded for > more advanced features! > > It _would_ be a great advocacy opportunity as well. > > Because it could be a community effort, there would be no need to > wait for yet another book(s), or blog(s) to be written as time > permitted. The initial time and effort would certainly be > non-trivial, but IMO it's absolutely necessary to spread the use > and usefulness of Pike. Unless the few core developers would rather > the language remain a close-door, private project. In which case > the public should not be exposed to the language at all. > > It would not do your book project much good though. IMHO, Pike and > its quality capabilities are freely available and so should > quality documentation and tutorials for it. > > The https://learnxinyminutes.com site seems to be the quickest way > to get there. A link to it on Pike's homepage would be all that is > required and newcomers to Pike would be spared the hunt-n-peck > search for a complete up-to-date set of docs. > > Anyway, this Pike noob won't probably ever see that happen. I first > looked at Pike 10 or so years ago, and like I said previously > nothing about the documentation has changed much during that > period. There must be a reason for that! Of course, maybe you guys > want it that way - a closed shop! > > Good luck! > -- > Duke >
Re: Fredrik Hübinette Book
On Tue, 19 Oct 2021 22:17:27 -0400 H William Welliver wrote: I think the intent is more of a one page > summary than a comprehensive set of documentation. Could be the > perfect opportunity to take on a bite-sized advocacy project! But it doesn't have to be a mere summary! It could be the whole-meal-deal - one point at a time! And it could be expanded for more advanced features! It _would_ be a great advocacy opportunity as well. Because it could be a community effort, there would be no need to wait for yet another book(s), or blog(s) to be written as time permitted. The initial time and effort would certainly be non-trivial, but IMO it's absolutely necessary to spread the use and usefulness of Pike. Unless the few core developers would rather the language remain a close-door, private project. In which case the public should not be exposed to the language at all. It would not do your book project much good though. IMHO, Pike and its quality capabilities are freely available and so should quality documentation and tutorials for it. The https://learnxinyminutes.com site seems to be the quickest way to get there. A link to it on Pike's homepage would be all that is required and newcomers to Pike would be spared the hunt-n-peck search for a complete up-to-date set of docs. Anyway, this Pike noob won't probably ever see that happen. I first looked at Pike 10 or so years ago, and like I said previously nothing about the documentation has changed much during that period. There must be a reason for that! Of course, maybe you guys want it that way - a closed shop! Good luck! -- Duke
Re: Fredrik Hübinette Book
I’ve never seen this site before; I don’t see any reason why there couldn’t be a Pike entry. Though (I’m sure this is obvious by browsing the site) I think the intent is more of a one page summary than a comprehensive set of documentation. Could be the perfect opportunity to take on a bite-sized advocacy project! Perhaps makes sense to get the tutorial sorted out before luring potential users to a dead end of documentation? > On Oct 19, 2021, at 6:39 PM, Duke Normandin wrote: > > On Wed, 20 Oct 2021 09:26:24 +1100 > Chris Angelico wrote: > > [snip] > >> Starting the document in my bot's repository. Can be lifted >> straight into Pike's own docs if/when it's good enough - license >> terms are very free (MIT). >> >> https://rosuav.github.io/StilleBot/Asynchronicity > > I'm sure the Pike community will/does appreciate your effort(s)! > > Have you guys ever considered using the following: > > https://learnxinyminutes.com > > Lot's of examples there! Githup-based! Could easily become a > community effort. Standardised presentation!! > > There could be followups like "Learn More X in Y minutes" > Where X=pike > > for more advanced stuff. > > Just a thought! Using that site would also give Pike extra exposure. > -- > Duke >
Re: Fredrik Hübinette Book
On Wed, 20 Oct 2021 09:26:24 +1100 Chris Angelico wrote: [snip] > Starting the document in my bot's repository. Can be lifted > straight into Pike's own docs if/when it's good enough - license > terms are very free (MIT). > > https://rosuav.github.io/StilleBot/Asynchronicity I'm sure the Pike community will/does appreciate your effort(s)! Have you guys ever considered using the following: https://learnxinyminutes.com Lot's of examples there! Githup-based! Could easily become a community effort. Standardised presentation!! There could be followups like "Learn More X in Y minutes" Where X=pike for more advanced stuff. Just a thought! Using that site would also give Pike extra exposure. -- Duke
Re: Fredrik Hübinette Book
On Wed, Oct 20, 2021 at 8:11 AM Chris Angelico wrote: > > On Wed, Oct 20, 2021 at 8:09 AM wrote: > > > There are some fairly cool features in the latest Pike builds that, to > > > my knowledge, aren't well documented yet. Maybe someone - and I'm > > > fully aware that that probably means "I" - should put together an > > > example of a socket server with on-the-fly updates and asynchronicity > > > provided by continue functions. > > > > > > > I don't think there's much in the way of documentation of the Concurrent > > and async stuff that's landed in 8.1. A tutorial of that (or some > > subset) ala the annotations document I wrote would be really welcome, > > even if it's not "publication ready"! > > I don't want to promise to do it, but I'll see what I can knock together. > Starting the document in my bot's repository. Can be lifted straight into Pike's own docs if/when it's good enough - license terms are very free (MIT). https://rosuav.github.io/StilleBot/Asynchronicity ChrisA
Re: Fredrik Hübinette Book
I really should get back started on gtk3or 4 even... That was a fun project.. Sent from Yahoo Mail on Android On Tue, Oct 19, 2021 at 5:24 PM, will...@welliver.org wrote: On 2021-10-19 15:45, Christian Töpp wrote: > Btw.. writing pike modules in c ist a nice theme i can write about ;) > I think that'd be excellent... I am aware of existing documentation on the subject, but it's spread all over the place (on the pike website, on modules.gotpike.org, my personal site, etc). I'd certainly be willing to help! There are definitely a number of "special situations" that I've worked out solutions to that ought to be described somewhere (like constructing a c-level module from multiple CMOD files, etc). >> Hmm.. OK, lets talk about documentation. I would suggest to create >> first a concept, toc, call it what you want. Just a Basic structure >> of what should i do if...then let the users add comments to specific >> themes. We can create a git repo for this and collect on one side >> informations in whats needed and also on whats requested. I try to >> help but have not much time (you know, job, family, etc) >> May this help? A first question might be, what is the intended scope for a given document? Is it a tutorial, or a comprehensive language reference? Should there be multiple documents? Or is it a set of goal-oriented documents (like, how do I use the Crypto module to generate an xyz hash? Is the goal to discuss every construct and pattern, even the ones that might be best left undiscussed (looking at you, Automap)? Or maybe what's missing from the existing tutorials? Is it just new stuff, or is there a fundamental problem with the way things are presented? Or all of the above? :) I realize that everyone is going to have different views but hearing what they are can be pretty useful. >> >> -Chris
Re: Fredrik Hübinette Book
On 2021-10-19 15:45, Christian Töpp wrote: Btw.. writing pike modules in c ist a nice theme i can write about ;) I think that'd be excellent... I am aware of existing documentation on the subject, but it's spread all over the place (on the pike website, on modules.gotpike.org, my personal site, etc). I'd certainly be willing to help! There are definitely a number of "special situations" that I've worked out solutions to that ought to be described somewhere (like constructing a c-level module from multiple CMOD files, etc). Hmm.. OK, lets talk about documentation. I would suggest to create first a concept, toc, call it what you want. Just a Basic structure of what should i do if...then let the users add comments to specific themes. We can create a git repo for this and collect on one side informations in whats needed and also on whats requested. I try to help but have not much time (you know, job, family, etc) May this help? A first question might be, what is the intended scope for a given document? Is it a tutorial, or a comprehensive language reference? Should there be multiple documents? Or is it a set of goal-oriented documents (like, how do I use the Crypto module to generate an xyz hash? Is the goal to discuss every construct and pattern, even the ones that might be best left undiscussed (looking at you, Automap)? Or maybe what's missing from the existing tutorials? Is it just new stuff, or is there a fundamental problem with the way things are presented? Or all of the above? :) I realize that everyone is going to have different views but hearing what they are can be pretty useful. -Chris
Re: Fredrik Hübinette Book
Just read the dragon book. :) /Hubbe On Tue, Oct 19, 2021 at 2:12 PM Chris Angelico wrote: > On Wed, Oct 20, 2021 at 8:09 AM wrote: > > > There are some fairly cool features in the latest Pike builds that, to > > > my knowledge, aren't well documented yet. Maybe someone - and I'm > > > fully aware that that probably means "I" - should put together an > > > example of a socket server with on-the-fly updates and asynchronicity > > > provided by continue functions. > > > > > > > I don't think there's much in the way of documentation of the Concurrent > > and async stuff that's landed in 8.1. A tutorial of that (or some > > subset) ala the annotations document I wrote would be really welcome, > > even if it's not "publication ready"! > > I don't want to promise to do it, but I'll see what I can knock together. > > Oh, another thing that would be really awesome to have better > documented - and this time, I sincerely hope that I'm not the best one > to do this, since I know very little about it - is the Parser.LR > module. I've used it to very good effect in a number of projects, but > still feel like I'm messing around blindly a bit. > > ChrisA > > >
Re: Fredrik Hübinette Book
On Wed, Oct 20, 2021 at 8:09 AM wrote: > > There are some fairly cool features in the latest Pike builds that, to > > my knowledge, aren't well documented yet. Maybe someone - and I'm > > fully aware that that probably means "I" - should put together an > > example of a socket server with on-the-fly updates and asynchronicity > > provided by continue functions. > > > > I don't think there's much in the way of documentation of the Concurrent > and async stuff that's landed in 8.1. A tutorial of that (or some > subset) ala the annotations document I wrote would be really welcome, > even if it's not "publication ready"! I don't want to promise to do it, but I'll see what I can knock together. Oh, another thing that would be really awesome to have better documented - and this time, I sincerely hope that I'm not the best one to do this, since I know very little about it - is the Parser.LR module. I've used it to very good effect in a number of projects, but still feel like I'm messing around blindly a bit. ChrisA
Re: Fredrik Hübinette Book
On 2021-10-19 15:44, Chris Angelico wrote: ... and needs to be updated to GTK3 if it's to survive. As the Red Queen explained it, it takes all the running you can do just to stay in the same place, and you have to go twice that fast to actually get anywhere. Yes, the constant churn puts smaller "organizations" at a major disadvantage. I think we've reached a point where a lot of people look at "mature" software as automatically being "bad", and I strongly object to that world-view (when it makes sense). The rip everything down and rebuild every few years world we're living in can be pretty exhausting :) IIRC, Lance had done a lot of work to get GTK2 up and running. I don't know if he's got any thoughts on getting back onto a supported version of GTK. Hopefully the fact that a lot of the code is generated will ease /some/ of the effort. I've been going through a similar effort getting the ObjectiveC/Cocoa binding a little closer to current use; thankfully that's been a bit less terrible than I expected it to be. One little note on something that I think is pretty incredible: a few months ago I downloaded an ancient version of pike (0.4 something, maybe) and compiled it on an arm64 system without having to make any changes, and it worked. Thoughts? Comments? Suggestions? There are some fairly cool features in the latest Pike builds that, to my knowledge, aren't well documented yet. Maybe someone - and I'm fully aware that that probably means "I" - should put together an example of a socket server with on-the-fly updates and asynchronicity provided by continue functions. I don't think there's much in the way of documentation of the Concurrent and async stuff that's landed in 8.1. A tutorial of that (or some subset) ala the annotations document I wrote would be really welcome, even if it's not "publication ready"! Bill
Re: Fredrik Hübinette Book
On Wed, Oct 20, 2021 at 6:19 AM H William Welliver wrote: > The only major flaw I am aware of is that the GTK example doesn’t work as > described because GTK1 isn’t supported anymore and it wasn’t updated to GTK2. > ... and needs to be updated to GTK3 if it's to survive. As the Red Queen explained it, it takes all the running you can do just to stay in the same place, and you have to go twice that fast to actually get anywhere. > At the end of the day, the situation Pike finds itself in is the same today > as it was 15 years ago: it is largely a volunteer project. The Pike High > Wizards are busy doing their wizarding, and they have left it up to others to > fill in the gaps. That seems to be an entirely reasonable position for them > to take. I took that as a call to arms and over the years spent many, many > hours trying to fill gaps [1] and have always welcomed assistance, but almost > without exception, it’s been a solo effort. None of it has seemed to move the > needle. So, I find myself resigned to the idea that advocacy by one person > simply comes across as a crazy person yelling into the wilderness. I continue > to use pike because for almost all tasks, it continues to be the most > efficient way for me to solve a given problem. > > I’m always happy to take time when a reasonably well defined problem is > identified, so please feel free to do so and we’ll see if it can be solved. > > Thoughts? Comments? Suggestions? > There are some fairly cool features in the latest Pike builds that, to my knowledge, aren't well documented yet. Maybe someone - and I'm fully aware that that probably means "I" - should put together an example of a socket server with on-the-fly updates and asynchronicity provided by continue functions. ChrisA
Re: Fredrik Hübinette Book
This is a superset of a message I sent directly to Duke. I think it would be useful to have a wider conversation around whether there’s much to be done to improve Pike’s standing in the world. The general assertion that getting started with pike is difficult because there’s no documentation or that it’s crummy. And I think a good portion of that is well-founded, but there’s also often the subtext that what’s really meant is “I want to paste my question into google and have a hundred answers”. Unfortunately, that’s an unrealistic expectation when you’re not dealing with a multi-million user community actively contributing toward solving the problem. When the somewhat limited resources available online aren’t enough, what you have here are mailing lists and (I believe) an IRC channel. Here, you can ask questions and get polite, well reasoned answers from experienced users and possibly even core language developers. I get that might not be everyone’s ideal situation, but it’s what we have to offer at the moment. So, I guess the questions I’d ask (with respect to the community supported language references) are “what do you feel is required to be considered complete?” And “what resources did you examine that you felt were lacking?” It’s been quite a while since I looked at the tutorial on the Pike website, and it indeed appears “incomplete”. I think what has happened is that someone decided to convert the material to a GitHub project and never finished the job. That’s truly unfortunate, and the original content is available from the wayback machine: https://web.archive.org/web/20140102221903/http://pike.lysator.liu.se/docs/tutorial/ It also appears to be available from Roxen.com: https://docs.roxen.com/pike/7.0/tutorial/index.html The only major flaw I am aware of is that the GTK example doesn’t work as described because GTK1 isn’t supported anymore and it wasn’t updated to GTK2. The language constructs that are missing from newer versions are (in my opinion) fairly minor, at least in terms of text required to describe them, and in many cases might not even be appropriate for inclusion in a “basics" manual. Automap comes to mind, as it is more likely than not to cause outright confusion. Pike has a fairly stringent policy of backward compatibility, so it’s not been my experience that being old necessarily equates with being un-useful. Those materials (or the book) would give you 85-90% of the constructs commonly used today. If you’ve got specific examples of problems you’ve run into, reporting those problems is always appreciated. At the end of the day, the situation Pike finds itself in is the same today as it was 15 years ago: it is largely a volunteer project. The Pike High Wizards are busy doing their wizarding, and they have left it up to others to fill in the gaps. That seems to be an entirely reasonable position for them to take. I took that as a call to arms and over the years spent many, many hours trying to fill gaps [1] and have always welcomed assistance, but almost without exception, it’s been a solo effort. None of it has seemed to move the needle. So, I find myself resigned to the idea that advocacy by one person simply comes across as a crazy person yelling into the wilderness. I continue to use pike because for almost all tasks, it continues to be the most efficient way for me to solve a given problem. I’m always happy to take time when a reasonably well defined problem is identified, so please feel free to do so and we’ll see if it can be solved. Thoughts? Comments? Suggestions? Bill [1] major projects like wiki.gotpike.org, modules.gotpike.org, “the book”, eclipse plugin, co-organizing multiple conferences, jupyter support, magazine articles, among others.
Re: Fredrik Hübinette Book
(Apologies, this originally went only to Duke) Hi Duke- That’s a good place to start. I think it may be less up-to-date than the tutorial[1] on the pike website, which is also useful if you’re completely new. I think Hubbe’s material has some interesting low level information, so a combination of the two are a good ground level introduction. If you want a physical object, then you might look at Pike: An Introduction[2], which is a greatly expanded version of the tutorial. It’s also available from Amazon and others, if that’s an easier approach. Note that none of these cover the newest features in Pike 7.8 and 8.0, but I’m slowly working on updates that would coincide with a release of 8.2. If you’ve read at least one of the 3 above, then I’d recommend looking through the release notes[3] for 7.8 and 8.0 to get an idea of the new features. Some other items: - If you’re interested in the Calendar module, there’s a pretty useful FAQ[4] in the source directory. - The “Unofficial Pike FAQ”[5], which shows its age but has a lot of good material. - And there’s also the Pike Wiki[6], which contains a bunch of interesting articles on particular language features such as: Annotations, a new feature in 8.1 Debugger, a soon to land feature in 8.1 (with some details about how to try it out yourself) Writing Testsuites - More generally, some links from the gotpike[7] landing page. I think there’s more information out on the internet to be found, but google makes this more difficult by assuming that “pike” is a synonym for “rob pike”, which skews results in an entirely different direction! And of course, specific comments and suggestions of needs are welcome. We’re also happy to help get you started if you want to tackle something yourself. Bill [1] http://pike.lysator.liu.se/docs/tut/ [2] https://www.lulu.com/content/78730 [3] http://pike.lysator.liu.se/download/notes/ [4] http://pike-librarian.lysator.liu.se/colorize.xml?module=pike.git&file=lib/modules/Calendar.pmod/FAQ&revision=8c6334271463c0b3d8c670804bf998af89733d31 [5] http://bobo.fuw.edu.pl/~rjb/Pike/FAQ.html [6] http://wiki.gotpike.org/ [7] http://www.gotpike.org/ > On Oct 18, 2021, at 6:40 PM, Duke Normandin wrote: > > I'm reading it online. > Is it still recommended, or is there something more current and as > thorough? > -- > Duke >