Newsletter: August 21, 2003

================================================
O'Reilly News for User Group Members
August 21, 2003
================================================
----------------------------------------------------------------
Book News
----------------------------------------------------------------
-Amazon Hacks
-TiVo Hacks
-CVS Pocket Reference, 2nd Edition
----------------------------------------------------------------
Upcoming Events
----------------------------------------------------------------
-Derrick Story ("Digital Video Pocket Guide" & "iPhoto 2:The Missing
Manual,") North Bay Multimedia Association, Novato, CA--August 28
-Correction***Jesse Liberty ("Programming C#" & "Programming ASP.NET"),
Cape Cod .NET User Group, Hyannis, MA--August 23
----------------------------------------------------------------
Conferences
----------------------------------------------------------------
-Great T-Shirt Exchange
----------------------------------------------------------------
Safari
----------------------------------------------------------------
-"Go On Safari" Tip of the Week Winner--Garrett Goebel, 
Kansas City Perl Mongers
----------------------------------------------------------------
News
----------------------------------------------------------------
-Dispelling the Myth of Wireless Security
-Rob Flickenger on SeattleWireless TV
-Trademarks by Cory Doctorow
-Guido van Rossum Speaks
-PHP Security, Part 1
-FreeBSD Access Control Lists
-Making Media from Scratch, Part 1
-Service-Oriented Architecture Explained
-Low Bandwidth SOAP
-Integrating QuickTime with Cocoa
----------------------------------------------------------------
News From Your Peers
----------------------------------------------------------------
-SUCON '03 - Swiss Unix Conference 2003, Zurich, Switzerland--
September 5

================================================
Book News
================================================
Did you know you can request a free book to review for your group?
Ask your group leader for more information.

For writing book review tips and suggestions, go to:
http://ug.oreilly.com/bookreviews.html

Don't forget, you can receive 20% off any O'Reilly book your purchase
directly from O'Reilly. Just use code DSUG when ordering online or by
phone.  
http://www.oreilly.com/


***Free ground shipping is available for online orders of at least
$29.95 that go to a single U.S. address. This offer applies to U.S.
delivery addresses in the 50 states and Puerto Rico.  
For more details, go to:
http://www.oreilly.com/news/freeshipping_0703.html


***Amazon Hacks
Order Number: 5423
"Amazon Hacks" is a collection of real-world tips, tricks, and
full-scale solutions to practical uses of Amazon.com and the Amazon Web
Services API. The book offers a variety of interesting ways for power
users to get the most out of Amazon and its community, for Associates
to hone their recommendations for better linking and more referral
fees, for researchers to mine the enormous amount of information in
Amazon's data store, and for developers to integrate Amazon Web
Services into their applications and services.
http://www.oreilly.com/catalog/amazonhks/?CMP=NLC-ZL2148071462

A collection of sample hacks is available online:
http://hacks.oreilly.com/pub/ht/24


***TiVo Hacks
Order Number: 5539
"TiVo Hacks" covers tips for changing the order of recorded programs,
activating the 30-second skip to blaze through commercials, and more,
by using magical remote-control codes. Then, once you take the lid off
your TiVo, you will learn how to gain even more fun and functionality.
You can upgrade the hard drive for more hours of recording. Log in to
the serial port for command-line access to programming data, log files,
closed-captioning data, display graphics on the TiVo screen, and even
play MP3s. While TiVo gives viewers personalized control of their TVs,
TiVo Hacks gives users personalized control of TiVo.
http://www.oreilly.com/catalog/tivohks/?CMP=NLC-U9N383213924

A collection of sample hacks is available online::
http://www.oreilly.com/catalog/tivohks/chapter/index.html


****CVS Pocket Reference, 2nd Edition
Order Number: 5679
Much more than a quick list of commands and options, "CVS Pocket
Reference, 2nd Edition," is packed with a surprising amount of
detail--including an overview of background concepts, thorough
descriptions on how to use and administer a CVS repository, and
discussions of CVS-related files and how to manage them--all in a
convenient reference format. It's an absolute must for developers who
need an on-the-job guide for quick answers to CVS dilemmas.
http://www.oreilly.com/catalog/cvspr2/?CMP=NLC-CM0248058677

A Sample Excerpt, "Administrator Commands," is available online:
http://www.oreilly.com/catalog/cvspr2/chapter/index.html

================================================
Upcoming Events
================================================
***For more events, please see:
http://events.oreilly.com/

***Derrick Story ("Digital Video Pocket Guide," "iPhoto 2:The Missing
Manual,") North Bay Multimedia Association, Novato, CA--August 28
Author Derrick Story will be speaking about "The Blurred Line Between
Digital Photography and Video." The cost is free to NBMA members; $10
for non-members, $5 for students with valid ID.
http://www.nbma.com/events/art_8-03.html

Thursday, August 28, 2003
Networking at 6:30 PM; Program from 7-9:00 PM
Marin Community Foundation
Hangar #5
5 Hamilton Landing
Novato, CA
For directions to this meeting go to:
http://www.nbma.com/events/art_8-03.html#directions_mcf


***Correction***Jesse Liberty ("Programming C#" & "Programming ASP.NET"), 
Cape Cod .NET User Group, Cape Cod, MA--August 23
Author Jesse Liberty presents an all-day "crash course" on ASP.NET for
the Cape Cod .NET User Group. If interested, please go to following
website for pre-registration instructions and location information. You
must be registered ahead of time for this event.
http://www.ccdevgroup.net/

================================================
Conference News
================================================
***Great T-Shirt Exchange
Is your closet overflowing with unworn tradeshow schwag? Then scour
your drawers and bring all those tees that haven't seen the light of
day to the Great T-Shirt Exchange at our Mac OS X Conference. We'll
have a special table at the conference where you can put your unused(!)
Mac t-shirt--or any other branded tee--and swap it for any other tee
that catches your eye.
http://conferences.oreillynet.com/pub/w/25/events.html

The Second Annual O'Reilly Mac OS X Conference 
User Group members who register before September 12, 2003 get a double
discount. Use code DSUG when you register, and receive 20% off the
"Early Bird" price.

To register, go to:
http://conferences.oreillynet.com/cs/macosx2003/create/ord_mac03

O'Reilly Mac OS X Conference
October 27-30, 2003
Westin Santa Clara, Santa Clara, CA
http://conferences.oreilly.com/macosxcon/

================================================
Safari News
================================================
***"Go On Safari" Tip of the Week Winner--Garrett Goebel, Kansas City
Perl Mongers 
"The user interface of the service is fairly flexible and intuitive. My
favorite is the 'hide' tab that clears off most of the visible screen
space to let you get down to some serious reading. I also have found to
my surprise, that I may actually read some texts faster on monitor than
in hand. And while I must admit there is still something to pulling a
text down off the shelf and flipping through the pages, it is certainly
nice when I don't have to lug ten pounds of paper back and forth from
the office when I'm reading up on a particular subject or technology."

You can also participate in this introductory program just for user
group members. To "Go on Safari," any UG member who signs up for our
Safari 14-day free trial can send comments on their experiences, or
tips and tricks for how they used Safari  (it only needs to be 2
sentences long, but it may be longer) to safari_talk@oreilly.com.
(Please include your UG name in the email.)

Every week someone will be chosen from the tips or comments submitted
to receive fun stuff from O'Reilly (T-shirts, book bags, or other
surprises). If a member of your user group is selected, your group
receives free gifts, too. Whatever the individual member receives, your
UG will get one, too, to give away at your next meeting, or use however
you see fit. Recipients--and their comments--will be announced in the
User Group Newsletter.

**Please use this special UG URL to sign up for the 14-day trial**
http://www.oreilly.com/safari/ug

For more information on Safari:
http://safari.oreilly.com/
================================================
News From O'Reilly & Beyond
================================================
---------------------
General News
---------------------
***Dispelling the Myth of Wireless Security
Rob Flickenger shows how to find out just how "secure" your standard
wireless network really is in this excerpt from his soon-to-release
"Wireless Hacks."
http://www.oreillynet.com/pub/a/wireless/excerpt/wirlsshacks_chap1/index.html?CMP=NLC-UI6243101723

Wireless Hacks
Order Number: 5598
http://www.oreilly.com/catalog/wirelesshks/


***And Don't Miss Rob Flickenger on SeattleWireless TV
The August installment of Seattle Wireless TV, which features an
interview with Rob Flickenger, as well as a discussion on a cool
remote-controlled helicopter with a wireless video feed, and reviews of
some of the latest wireless gear.  
http://tv.seattlewireless.net/


***Trademarks
Cory Doctorow, who works with the EFF, wrote this article on the heels
of a rash of trademark incidents that he's encountered. His point of
view in this opinion piece is that trademark and copyright are supposed
to promote expression. He doesn't write about any specific details of
particular cases; rather, he restates an overview of these issues that
serves as his guiding light.
http://www.openp2p.com/pub/a/p2p/2003/08/14/trademarks.html?CMP=NLC-201PL0259145

---------------------
Open Source
---------------------
***Guido van Rossum Speaks
Guido van Rossum, creator of the Python programming language, recently
announced that he'll be leaving PythonLabs to work for a California
startup. In this interview, Guido talks about the move, recent
developments, and Python in general.
http://www.onlamp.com/pub/a/python/2003/08/14/gvr_interview.html?CMP=NLC-WR2218661818


***PHP Security, Part 1
If you have users, you'll undoubtedly have bad guys trying to break
things. As a PHP developer, it's your responsibility to make sure your
code is secure. John Coggeshall demonstrates one common PHP error that
can leave you vulnerable, and he explains how to think like a bad guy
to prevent these mistakes in the first place.
http://www.onlamp.com/pub/a/php/2003/07/31/php_foundations.html


***FreeBSD Access Control Lists
The Unix permissions model has worked for decades due to its flexible
simplicity. It's not the only approach, though. FreeBSD 5.0 supports
Access Control Lists, which allow for more flexible permissions. Daniel
Harris explains what ACLs can make easier.
http://www.onlamp.com/pub/a/bsd/2003/08/14/freebsd_acls.html

---------------------
Java
---------------------
*** Making Media from Scratch, Part 1
QuickTime is a media creation API. It supports far more than just
editing and playing movies -- you can create them, one frame at a time.
Chris Adamson demonstrates how to make moves from scratch with
QuickTime for Java.
http://www.onjava.com/pub/a/onjava/2003/08/13/qtj_reintro.html?CMP=NLC-3RH891419319

---------------------
.NET
---------------------
***Service-Oriented Architecture Explained
SOA (service-oriented architecture) has become a buzzword of late.
Although the concepts behind SOA have been around for over a decade
now, SOA has gained extreme popularity of late due to web services.
Before we dive in and talk about what SOA is and what are the
essentials behind SOA, it is a useful first step to look back at the
evolution of SOA. To do that, we have to simply look at the challenges
developers have faced over the past few decades and observe the
solutions that have been proposed to solve their problems.
http://www.ondotnet.com/pub/a/dotnet/2003/08/18/soa_explained.html

---------------------
XML
---------------------
***Low Bandwidth SOAP
Using web services on low resource J2ME devices is possible through
Enhydra.org's KSOAP classes. This article shows you how to create
lightweight web service clients and servers.
http://webservices.xml.com/pub/a/ws/2003/08/19/ksoap.html

---------------------
Mac
---------------------
***Integrating QuickTime with Cocoa
After providing a brief QuickTime overview, Doug Welton shows you how
to integrate digital media with Cocoa, then finishes up with an example
of building a QuickTime Movie Player that you can include in your own
applications.
http://www.macdevcenter.com/pub/a/mac/2003/08/15/quicktime_cocoa.html?CMP=NLC-YU0540798564

================================================
News From Your Peers
================================================'
***SUCON '03 - Swiss Unix Conference 2003, Zurich, Switzerland--September 5
The Swiss Unix Conference is taking place for the first time. It is
about education intended for open-minded individuals interested in the
Unix environment. The conference brings together developers, system
administrators, and others interested in the Unix operating system and
Unix related topics.  
http://www.sucon.ch/

SUCON '03
September 5, 2003
Kongresshaus Zurich, Switzerland
For Program details go to:
http://www.sucon.ch/sucon/03/grid.html


Until next time--

Marsee

July – Classes and Objects Revisited

The July meeting was by far the most fun I have had since we began. We sat down, introduced ourselves (there were plenty of new faces, even if most of the "regulars" didn’t show. 😉 ) and started talking about classes.

There was no formalized presentation, no stuffy classroom…just a pad of paper, lots of discussion and questions and a great time.

A Big Thanks to all of you who showed up. With any luck, we will have an even bigger turnout in August!!!

We did discuss times…and we might be able to try to push it up to 3:30. Would that help any of you make it? Please reply here.

New, experimental meeting time.

Spirits, Coffee and PHP: all at the next PUG.

Please read on for more

UPDATE: Fri Aug 15 15:19:21 CDT 2003 – dholmes

As discussed last month, the meeting time for August 16th has been moved to 2:00. I’ll still be there at 1:30, since I didn’t get this out earlier. Wouldn’t want anyone sitting around by their lonesome. 😉

This month we are going to try something new. At the meeting in June, we discussed the PUG and its future. Many of us feel that the month-after-month classroom setting is “sucking the life force” out of the group…slowly turning it into a mini convention seminar. Presentations are good but it’s not really the social learning-exchange that many of us were hoping for.

Therefore, for the next couple of months, we are going to try something a little different. Our user-group will not be meeting at the college, instead we will be meeting at the Daily Dose Coffee House and Bar at 135th and Quivera.

Not only does this place have a great atmosphere with full-service coffee and “specialty” drinks…it has the much needed feature of free Wi-Fi.

I know that the “groups preference” (according to the poll) is for an evening time. Unfortunately for us, this place is completely jammed in the evenings. However, Saturday afternoons are very quiet.

So, as an experiment we will be meeting up on the third Saturday of July and August (for now) at the Daily Dose starting at 1:30pm.

This month we will be multi-round-table discussing the basics of classes in PHP; a quick intro, then an open discussion on how we use them to separate our logic. (Thanks for the topic suggestion, bodie.) I’ll also bring my Design Patterns book, to add to the discussion; feel free to bring whatever you would like as well.

This will then lead into August’s topic of Separating Logic from Presentation with Smarty: Or How I Learned to Stop Worrying and and Love the Model-View-Controller Pattern. (Thank you skatterbean.)

I look forward to seeing you there!!!

For more information on the Daily Dose such as a map and which credit cards they take, you can check out their entry at opkansas.org.

I’ll also be sending this out in an email to all of you who have “signed up” with the site or the message boards. If you don’t want to be included in future mailing, just send me a message, and I’ll try to figure something out. 😉

SQLite and Choosing a Database Abstraction Layer

So, have you heard of this new SQLite embedded database? I was just reading about it the other day.

SQLite is a C library that implements an embeddable SQL database engine. Programs that link with the SQLite library can have SQL database access without running a separate RDBMS process.

Apparently they are going to implement it in the next version of PHP. This is a good thing. Sure, it will be slow and simplistic, and probably not very scalable for heavy use, but it has one thing going for it: distribution. Every PHP installation will have it. Have you ever been writing a program that will be distribute to multiple clients and worried that they won’t have the right database installed? or any database installed? Soon you won’t have to worry, because as long as they have PHP, they will have SQLite.

So now the possibility of using this in the future on servers that aren’t my own has intrigued me. And I’m already intrigued by some of the other free databases out there. I’ve heard PostgreSQL development is really doing well and more and more people prefer it to MySQL. I’ve also heard a little about some new database called Firebird or something like that. So… why am I still coding all my PHP applications with mysql_query() functions? Why am I not using a database abstraction library so that I can easily use my applications with any database I choose? That’s a very good question. Maybe I’m stupid, or simply too lazy to try something new. I’ve thought about it a lot over the past few weeks. I think my biggest fear with choosing a library to use is standards. I know that the built-in mysql functions are going to be around for a while. I don’t know if I can say the same thing about some of these database abstraction layers. Some might claim that PEAR DB is the standard since it comes packaged with PHP. But there is also another called DBX that comes with PHP. So does that make it the standard too?

I just read an interesting forum thread where John Lim, author of ADODB, claims that PEAR DB is obsolete and the new versions are breaking backward compatibility.


Tomas worked hard on PEAR DB, but it was made obsolete by PEAR MDB. It would not have been too much trouble to make MDB compatible with PEAR DB. ADODB has a PEAR DB layer, but Lukas (MDB lead) decided against it. In fact, they are still releasing PEAR DB as the default abstraction layer, so more people are going to hate the switch when MDB becomes the default standard.

Now Lukas has decided that MDB 2.0 will break MDB 1.0 compatibility.

I think Lukas is a smart guy, but i don’t think it wise to treat API’s as toys to play with, particularly if you want to bet your company’s products on a software library.

http://news.php.net/article.php?group=php.pear.dev&article=17793

So long as PEAR remains a coders playground, depending on PEAR does not mean that anyone is looking after your interest either.


Maybe John Lim is just trying to get people to use his product, ADOdb, instead. But if what he says about PEAR DB is true, then thats a big “STAY CLEAR” sign to me. I’m already going to have to rewrite thousands of lines of code if I decide to switch to an abstraction layer. I don’t want to have to do it again each time they come out with a new version. That’s exactly what I am afraid of.

One thing is clear to me. I need to pick an abstraction layer soon. I’m starting new projects all the time and the longer I wait the more code I will need to rewrite later. So which to choose? Right now I think I’m leaning toward ADOdb. It is very fast, easily portable, supports almost every database out there, and has many features above and beyond what I’m used to. I’ve also been watching it for about a year and new versions are released often, but never break backwards compatibility.

Anyway, what are your guys thoughts on this?

Newsletter: June 6, 2003

O’Reilly User Group Program Newsletter June 6, 2003
Highlights This Week:
----------------------------------------------------------------
Book News
----------------------------------------------------------------
-Jakarta Struts Pocket Reference
-Practical mod_perl
-C++ Pocket Reference
----------------------------------------------------------------
Upcoming Events
----------------------------------------------------------------
-Portland Perl Mongers Meeting Starts at Powell's Tech Books, 
Portland, OR--June 11
-Derrick Story, ("iPhoto 2: The Missing Manual"), Chico Mac User Group,
Chico, CA--June 19
----------------------------------------------------------------
Conferences
----------------------------------------------------------------
-Don't miss Intel's Linux-driven Robot at OSCON
-Put Up an O'Reilly Open Source Convention Banner, 
Get a Free Book
----------------------------------------------------------------
News
----------------------------------------------------------------
-Do We Need A Bill of Rights for Web Services?
-Hacker Takes a Crack at TiVo
-Incredible Movies
-Python Success Stories: Eight True Tales of Flexibility, 
Speed, and Improved Productivity
-Saving Our Bacon: Snort Security Holes and Strategies for Safe Network
Monitoring
-Making Sense of Java's Dates
-Implementing Custom Data Bindable Classes: CollectionBase
-Designing a New Schema with XML Design Patterns
-Power Keys in Jaguar
-Rob Griffiths' Top Mac OS X Hints, Part 2
----------------------------------------------------------------
News From Your Peers
----------------------------------------------------------------
-Ed Brill at the Portland Domino/Notes User Group, Portland, OR
--June 17

================================================
Book News
================================================
Review books are available--email me for a copy.

***Please include the book order number on your requests.

Let me know if you need your books by a certain date.
Allow at least four weeks for shipping. 
Send or email me copies of your newsletters and book reviews.

Don't forget, your members get 20% off any O'Reilly book they purchase
directly from O'Reilly. Just use code DSUG when ordering.
http://www.oreilly.com/

***Group purchases with better discounts are available***
Please let me know if you are interested.

Press releases are available on our press page:
http://press.oreilly.com/


***Jakarta Struts Pocket Reference
Order Number: 5199
An essential companion to O'Reilly's "Programming Jakarta Struts,"
"Jakarta Struts Pocket Reference" provides detailed coverage of every
Struts JSP tag, the Struts configuration files and directives, built-in
actions, and a wealth of other resources.
http://www.oreilly.com/catalog/jakartapr/

A sample excerpt, "Configuring Struts," is available online:
http://www.oreilly.com/catalog/jakartapr/chapter/index.html


***Practical mod_perl
Order Number: 2270
Written for Perl web developers and web administrators, "Practical
mod_perl" is an extensive guide to the nuts and bolts of the powerful
and popular combination of Apache and mod_perl. From writing and
debugging scripts to keeping your server running without failures, the
techniques in this book will help you squeeze every ounce of power out
of your server. True to its title, this is the practical guide to
mod_perl.  
http://www.oreilly.com/catalog/pmodperl/

Chapter 6, "Coding with mod_perl in Mind," is available online:
http://www.oreilly.com/catalog/pmodperl/chapter/index.html


***C++ Pocket Reference
Order Number: 4966
"C++ Pocket Reference" is a compact memory aid for C++ programmers,
enabling them to quickly look up usage and syntax for unfamiliar and
infrequently used aspects of the language. The book will also help
programmers familiar with C or Java quickly get up to speed on how a
particular construct or concept is implemented in C++. Topics covered
include C++ types and type conversions, declarations, storage classes,
arrays, pointers, strings, and expressions.
http://www.oreilly.com/catalog/cpluspluspr/

A beta excerpt, "Statements, " is available online:
http://www.oreilly.com/catalog/cpluspluspr/chapter/index.html

===============================================
Upcoming Events
===============================================
***For more events, please see:
http://events.oreilly.com/

***Portland Perl Mongers Meeting Starts at Powell's Tech Books, 
Portland, OR--June 11
Join the Portland Perl Mongers on Wed, June 11 for an all-O'Reilly
evening, starting with books and ending with modules, with food along
the way.  
http://portland.pm.org/

Here is the agenda for the evening:

*7:00 - 8:30ish--Rael Dornfest and Rob Flickenger talk about their
O'Reilly Hacks series at Powell's Technical Books. Powell's will be
giving away a "Hacks" book with any O'Reilly book (excluding Pocket
References) purchased all day June 11.

Powell's Technical Books
33 NW Park Ave
Portland, OR
http://www.powells.com/technicalbooks

*8:45--Walk to House of Louie, order pu-pu platters and agar pudding.
House of Louie
331 NW Davis St
Portland, OR
Map: http://snurl.com/1ig0

*9:00-10:00--chromatic (technical editor of the O'Reilly Network)
speaks about Mail::SimpleList covering mail filtering, object
orientation, test-driven development, customer testing, deployment,
refactoring, and the normal ups and downs of any type of software
development.


***Derrick Story, ("iPhoto 2: The Missing Manual"), Chico Mac User Group, 
Chico, CA--June 19
Join coauthor Derrick Story for a presentation on iPhoto 2.

June 19, 2003 at 7:30pm
Masonic Family Center
1110 W East Ave
Chico, CA
http://www.macchug.com/events.html

================================================
Conference News
================================================
***Don't miss Intel's Linux-driven Robot at OSCON
Myron Hattig, senior architect at Intel Research, will discuss how
Intel is building Linux-driven robots that communicate over wireless
LANs. His session is on Friday, July 11 and he'll have one of the
robots on hand at the O'Reilly Open Source Convention.
http://conferences.oreillynet.com/cs/os2003/view/e_sess/4506

Read more about the project in an article by Jim Butler.
http://www.linuxdevices.com/articles/AT2705574735.html


**There is still time to register. User Group Members--use code DSUG
when you register and you'll get 20% off the conference pricing.

To register, go to:
http://conferences.oreillynet.com/cs/os2003/create/ord_os03


O'Reilly Open Source Convention
Portland Marriott Downtown,
Portland, OR
July 7-11, 2003
http://conferences.oreilly.com/oscon/


***Put Up an O'Reilly Open Source Convention Banner, Get A Free Book
We are looking for user groups to display our conference banners on
their web sites. If you send me the link to your user group site with
our O'Reilly Open Source Convention banner, I will send you the
O'Reilly book of your choice.

OSCON Conference Banners:
http://ug.oreilly.com/banners/oscon2003/

================================================
News From O'Reilly & Beyond
================================================
---------------------
General News
---------------------
***Do We Need A Bill of Rights for Web Services?
Tim O'Reilly's latest:You can think of open source as a kind of "bill
of rights" outlining key protections for software users and developers.
As we move into the world of web services, in which software is no
longer distributed as either binaries OR source code, but instead
performed on a remote server, what kind of bill of rights is required
to protect users? What kind of agreements will provide web services
users and developers with some of the freedoms that we have come to
expect from open source?  http://www.oreillynet.com/pub/wlg/3266


***Hacker Takes a Crack at TiVo
Breaking into your DVR isn't about stealing service--TiVo has been
really friendly to hackers in the past. Instead, hacking your TiVo is
about scoring more features and getting the services you want. This
Wired article tells you what author Raffi Krikorian has in store for
you in his upcoming book, "TiVo Hacks."
http://www.wired.com/news/technology/0,1282,59028,00.html

TiVo Hacks
Order Number: 5539
http://www.amazon.com/exec/obidos/tg/detail/-/0596005539/103-9536749-1016659
(O'Reilly catalog page should be available soon.)


***Incredible Movies
Almost 2,000 ephemeral films (industrial, educational, and advertising)
from the early 1900s through the 1960s are available for free on the
Net, thanks to film archivist Rick Prelinger.
http://www.oreillynet.com/pub/a/policy/2003/05/23/rickp.html

---------------------
Open Source
---------------------
***Python Success Stories: Eight True Tales of Flexibility, Speed, 
and Improved Productivity
The future looks bright for Python. O'Reilly's collection of stories
about successful Python-powered projects makes it easy to see why
Python isn't just a scripting language; it is being used more and more
in projects of all sizes, in all application areas.
http://www.oreillynet.com/pub/wlg/3198

Download a copy of Python Success Stories.
http://python.oreilly.com/news/python_success_stories.pdf


***Saving Our Bacon: Snort Security Holes and Strategies for Safe 
Network Monitoring
Bob Byrnes reviews past attacks and recently discovered buffer-overflow
vulnerabilities in Snort, a popular security-monitoring tool used for
detecting suspicious network activities. He also discusses strategies
you can use to minimize risks.
http://linux.oreillynet.com/pub/a/linux/2003/06/02/snort.html

Bob is a coauthor of the upcoming "Linux Security Cookbook"
Order Number: 3919
http://www.oreilly.com/catalog/linuxsckbk/index.html

---------------------
Java
---------------------
***Making Sense of Java's Dates
Measuring time is easy. Representing it is hard. Time zones,
internationalization, and localization all make it tricky to give the
correct date. Newer versions of the JDK have improved Java's date and
time APIs, but they're still a little tricky. Philipp Janert explores
date and time handling in Java.
http://www.onjava.com/pub/a/onjava/2003/06/05/java_calendar.html

---------------------
.NET
---------------------
***Implementing Custom Data Bindable Classes: CollectionBase 
By now, everyone is familiar with grabbing a DataSet from the database
and binding it at runtime to an ASP.NET list control. This works just
fine. But DataSets are weakly typed, providing late bound access to
their properties. What if you want to use your own strongly typed
custom object with meaningful properties and methods instead of a
generic DataSet? James Still shows you how to create them for your own
classes.
http://www.ondotnet.com/pub/a/dotnet/2003/06/02/collectionbase.html

---------------------
XML
---------------------
***Designing a New Schema with XML Design Patterns
Following on from our articles on XML schema design patterns, this
article applies these patterns to the design of a new schema,
leveraging existing XML languages such as XHTML and RDF along the way.
http://www.xml.com/pub/a/2003/06/04/patterns.html

---------------------
Mac
---------------------
***Power Keys in Jaguar
David Pogue received a letter from a reader who couldn't put his Mac to
sleep. The keyboard command described in "Mac OS X: The Missing Manual,
2nd Edition" kept giving him a black screen instead. David points the
power user in the right direction in the latest "From David's Desk."
http://missingmanuals.com/david/

***Rob Griffiths' Top Mac OS X Hints, Part 2
Rob Griffiths has selected his favorite or most fun tips from his book,
"Mac OS X Hints, Jaguar Edition." In Part 2 this week, he offers tips
on speeding up iPhoto, burning a multisession CD, and more.
http://www.macdevcenter.com/pub/a/mac/2003/06/03/macosxhints.html

Mac OS X Hints: Jaguar Edition
Order Number: 4516
http://www.oreilly.com/catalog/macxhints/

================================================
News From Your Peers
================================================
***Ed Brill at the Portland Domino/Notes User Group, Portland, OR
--June 17
The Portland Domino/Notes User Group and Boom Vang Consulting present
Ed Brill, Lotus Senior Marketing Manager to discuss "The Future of
Collaborative Technologies: Lotus and the Competitive Landscape."

Tuesday, June 17, 2003
The Oregon Zoo, Skyline Room
4001 SW Canyon Road
Portland, OR 97221

Space is limited, so please RSVP by June 12.
Send a note to usergroup@boomvang.com or call Lauren Williams at
503-276-1590.  
For more info:  www.boomvang.com

Until next time--

Newsletter: May 29, 2003

O’Reilly User Group Program Newsletter May 29, 2003
Highlights This Week:
----------------------------------------------------------------
Book News
----------------------------------------------------------------
-Head First Java
-iPhoto 2: The Missing Manual
-Programming C#, 3rd Edition
-Games, Diversions & Perl Culture
-Cocoa in a Nutshell
-Java Database Best Practices
----------------------------------------------------------------
Upcoming Events
----------------------------------------------------------------
-Perl Whirl Geek Cruise, Hawaii--Jun 1-8, 2003  
-Mac Mania II Geek Cruise, Hawaii--Jun 1-8, 2003  
-Microsoft Tech Ed 2003, Dallas, TX--Jun 1-6, 2003  
-JavaOne, San Francisco, CA--Jun 10-13, 2003
----------------------------------------------------------------
Conferences
----------------------------------------------------------------
-New Talks at OSCON
-Put Up an O'Reilly Open Source Convention Banner, 
Get a Free Book
----------------------------------------------------------------
News
----------------------------------------------------------------
-Are you an Amazon Associate?
-Apple as Innovator
-Why Try to Out-Google Google?
-Buy Where You Shop
-Gear Up for Summer 
-Adventures with Kerberos, CVS, and GSS-API
-Apple and Linux: A Mutual Friendship?
-JBoss Optimizations 101
-Using Calculated DataColumns in ADO.NET
-Automating iPhoto 2 with AppleScript 
-A DNS Primer
----------------------------------------------------------------
News From Your Peers
----------------------------------------------------------------
-MacFeast 2003, Norwalk, CA--June 14, 2003

================================================
Book News
================================================
Review books are available--email me for a copy.

***Please include the book order number on your requests.

Let me know if you need your books by a certain date.
Allow at least four weeks for shipping. 
Send or email me copies of your newsletters and book reviews.

Don't forget, your members get 20% off any O'Reilly book they purchase
directly from O'Reilly. Just use code DSUG when ordering.
http://www.oreilly.com/

***Group purchases with better discounts are available***
Please let me know if you are interested.

Press releases are available on our press page:
http://press.oreilly.com/


***Head First Java
Order Number: 4656
You've never seen an O'Reilly book (or any other book, for that matter)
like "Head First Java." Learning well and at a deep level takes a lot
more than reading text on a page. Actively combining words and pictures
helps in both understanding a subject and remembering it. "Head First
Java" puts these ideas into practice with mind-stretching exercises,
memorable analogies, and stories, humor, and attitude that aren't
pasted-on distractions--they drive home key points and make ideas come
alive. The Head First approach is as effective as it is unique.
http://www.oreilly.com/catalog/hfjava/

Excerpts on "A Trip to Objectville" and "Serious Polymorphism" are
available online:
http://www.oreilly.com/catalog/hfjava/chapter/index.html


***iPhoto 2: The Missing Manual
Order Number: 5067
Presented by best-selling author David Pogue, this updated edition
keeps pace with Apple's recently revised digital shoebox for uploading,
organizing, printing, publishing, and touching up digital photos.
"iPhoto 2: The Missing Manual" charts the latest changes and
illustrates the interactivity among Apple's iLife software products.
With this guide, Macintosh fans can take their digital photos to the
screen, the Web, printouts, hardbound photo books, and even to DVDs,
CDs, and digital movies.  
http://www.oreilly.com/catalog/iphoto2/

Chapter 10, "Publishing a Photo," is available online:
http://www.oreilly.com/catalog/iphoto2/chapter/index.html


***Programming C#, 3rd Edition
Order Number: 4893
"Programming C#, 3rd Edition" focuses on the features and programming
patterns that are new to the C# language and fundamental to programming
web services and web applications on the .NET platform. Newly updated
for version 1.1 of the .NET Framework and Visual Studio .NET 2003, the
book features expanded coverage of events and delegates, answers to
frequently asked questions about C#, and new tips and tricks, including
some for programmers coming from VB and C++ backgrounds.
http://www.oreilly.com/catalog/progcsharp3/

Chapter 12,"Delegates and Events," is available online:
http://www.oreilly.com/catalog/progcsharp3/chapter/index.html


***Games, Diversions & Perl Culture
Order Number: 3129
This third volume of "The Best of the Perl Journal" includes some of
the most popular Perl articles ever written on the subjects of games,
diversions, and the unique culture of this close-knit community. You'll
find all of the playful features TPJ offered over the years, including
the Obfuscated Perl Contests, Perl Quiz Shows, renowned one-line
recipes, and a panoply of quirky Perl applications, such as genetic
algorithms, home automation, music programming, and natural language
processing.  
http://www.oreilly.com/catalog/tpj3/

Read "Searching for Rhymes with Perl" and "The Zeroth Annual Obfuscated
Perl Contest" online:
http://www.oreilly.com/catalog/tpj3/chapter/index.html


***Cocoa in a Nutshell
Order Number: 4621
"Cocoa in a Nutshell" begins with a complete overview of Cocoa's object
classes, and ends with a detailed quick reference. It provides
developers who may be experienced in other application toolkits with
the grounding they'll need to start developing Cocoa applications. A
complement to Apple's documentation, it is the only reference to the
classes, functions, types, constants, protocols, and methods that make
up Cocoa's Foundation and Application Kit frameworks, based on the
Jaguar release (Mac OS X 10.2).
http://www.oreilly.com/catalog/cocoaian/

Chapter 4, "Drawing and Imaging," is available online:
http://www.oreilly.com/catalog/cocoaian/chapter/index.html


***Java Database Best Practices
Order Number: 5229
"Java Database Best Practices" takes you through a variety of ways to
store and access data, enabling you to learn which "persistence model"
is most appropriate for each type of application. This unique and
comprehensive guide introduces each of the dominant APIs (Enterprise
JavaBeans, Java Data Objects, and JDBC), along with lesser-known
options. The book also explores the methodology and design components
that use those APIs, and offers practices most appropriate for
different types and makes of databases and applications.
http://www.oreilly.com/catalog/javadtabp/

Chapter 2, "Relational Data Architecture," is available online:
http://www.oreilly.com/catalog/javadtabp/chapter/index.html

===============================================
Upcoming Events
===============================================
***For more events, please see:
http://events.oreilly.com/

***Perl Whirl Geek Cruise, Hawaii--Jun 1-8, 2003  
Take a Perl Whirl Geek Cruise with authors Tim Bunce ("Programming the
Perl DBI"), Randal Schwartz ("Learning Perl"), Nathan Torkington ("Perl
Cookbook"), and Larry Wall ("Programming Perl, 3rd Ed."). Aloha!
http://www.geekcruises.com/home/pw3_home.html


***Mac Mania II Geek Cruise, Hawaii--Jun 1-8, 2003  
Have fun in the tropical sun on the Mac Mania II Geek Cruise with
authors James Duncan Davidson ("Learning Cocoa with Objective-C") and
David Pogue (Missing Manual Series).
http://www.geekcruises.com/home/mm2_home.html


***Microsoft Tech Ed 2003, Dallas, TX--Jun 1-6, 2003  
Drop by our booth, say howdy, and look over our latest publications.
http://www.microsoft.com/usa/teched/home.asp


***JavaOne, San Francisco, CA--Jun 10-13, 2003
Check out our latest Java offerings. Also, authors David Jordan and
Craig Russell ("Java Data Objects") are making the sole JDO
presentation at JavaOne.  
http://servlet.java.sun.com/javaone/

================================================
Conference News
================================================
***New Talks at OSCON 
Don't miss these newly added talks at July's Open Source Convention:
Clay Shirky and Stewart Brand on archiving digital data for the long
term; everyone's favorite Mozilla wrangler, Mitchell Baker, with a
session on Chandler; and David Fetter on why database projects fail.
http://conferences.oreillynet.com/os2003/


User Group Members--use code DSUG when you register and you'll get 20%
off the conference pricing.

To register, go to:
http://conferences.oreillynet.com/cs/os2003/create/ord_os03


O'Reilly Open Source Convention
Portland Marriott Downtown,
Portland, OR
July 7-11, 2003
http://conferences.oreilly.com/oscon/


***Put Up an O'Reilly Open Source Convention Banner, Get A Free Book
Ready for the next conference banner promotion? Here it is:  We are
looking for user groups to display our conference banners on their web
sites. If you send me the link to your user group site with our
O'Reilly Open Source Convention banner, I will send you the O'Reilly
book of your choice.

OSCON Conference Banners:
http://ug.oreilly.com/banners/oscon2003/

================================================
News From O'Reilly & Beyond
================================================
---------------------
General News
---------------------
***Are you an Amazon Associate? 
Let me know at marsee@oreilly.com. We're interested in hearing about
your experiences with Amazon.


***Apple as Innovator
Tim O'Reilly's latest: Thoughts on Apple as innovator, especially as a
cultural innovator.  
http://www.oreillynet.com/pub/wlg/3246


***Why Try to Out-Google Google?
Tara Calishain writes that Google's success, at least initially, had
nothing to do with actual technology. In this article, she looks at
what has made Google a success and ways the search engine could
out-Google itself. Tara is the coauthor of O'Reilly's best-selling
"Google Hacks."
http://www.oreillynet.com/pub/a/javascript/2003/05/16/googlehacks.html

Google Hacks
Order Number: 4478
http://www.oreilly.com/catalog/googlehks/


***Buy Where You Shop
In O'Reilly's spring catalog, Tim O'Reilly writes, "If you value the
bookstore experience, my advice is this: buy where you shop. I buy lots
of books online....But when I shop for books in bookstores, I buy
them there, and so should you."
http://tim.oreilly.com/values/buy_where_shop.csp


***Gear Up for Summer 
Do some entertaining this summer. We've got a few things that will help
you impress your guests: open source beer coasters, tarsier mugs, and
classy T-shirts. Show them just how cool you really are. Check out all
the O'Reilly gear at ThinkGeek.
http://www.thinkgeek.com/interests/oreilly/

---------------------
Open Source
---------------------
***Adventures with Kerberos, CVS, and GSS-API
One of the difficulties of writing about technology is exploring the
dark corners where no one's ever been before. Jennifer Vesperman
recently tried to make her CVS installation use Kerberos
authentication. In this article she describes how she went about
integrating the two.
http://linux.oreillynet.com/pub/a/linux/2003/05/22/cvs_gssapi.html

Jennifer is the author of the upcoming "Essential CVS."
Order Number: 4591
http://www.oreilly.com/catalog/cvs/


***Apple and Linux: A Mutual Friendship?
Is running a Linux distro on Mac hardware just sick? Why do people do
it? O'Reilly's editors talk about the benefits of, and pitfalls in,
running Linux on Mac OS X, in the latest "From the Editors List."
http://www.oreilly.com/pub/a/oreilly/editors/apple_linux_0503.html

---------------------
Java
---------------------
***JBoss Optimizations 101
"First make it work, then make it fast." Your J2EE application works,
but it's slower than you'd like under peak load. Before you rush out
for new hardware, check out your configuration. Sacha Labourey and Juha
Lindfors demonstrate a few simple techniques to improve JBoss
performance without spending money.
http://www.onjava.com/pub/a/onjava/2003/05/28/jboss_optimization.html

---------------------
.NET
---------------------
***Using Calculated DataColumns in ADO.NET
If you have a background in database work, you have undoubtedly run
into the rules of normalization. But even though ADO.NET's DataSet
class is sometimes described as a "relational database in memory," it's
important to remember that there are differences between databases and
DataSets. In this particular case, the DataSets are designed to manage
calculated columns. In this article Mike Gunderloy will show you the
syntax for building calculated columns in your own DataSets, and
discuss some of the pros and cons of using such columns.
http://www.ondotnet.com/pub/a/dotnet/2003/05/26/datacolumn_expressions.html

---------------------
Mac
---------------------
***Automating iPhoto 2 with AppleScript 
Derrick Story writes "It's easy enough to get your photos in iPhoto 2,
but how do you process them en masse once they're there? The best
combination is AppleScript and Photoshop. Here's a tutorial on how to
automate iPhoto 2, complete with downloadable scripts."
http://www.macdevcenter.com/pub/a/mac/2003/05/28/iphoto2.html

Derrick is coauthor of " iPhoto 2: The Missing Manual"
Order Number: 5067
http://www.oreilly.com/catalog/iphoto2/index.html


***A DNS Primer
Lurking in your Utilities folder is the Network Utility application,
which provides you with a variety of lookup services. Dan Benjamin
introduces you to this utility in his DNS primer.
http://www.macdevcenter.com/pub/a/mac/2003/05/28/dns_primer.html

================================================
News From Your Peers
================================================
***MacFeast 2003, Norwalk, CA--June 14, 2003
Shawn King, host of Your Mac Life, internet radio show and Brendan
Schilling, regional manager from Apple Computer are the special guest
speakers.

This event includes a chuck wagon BBQ dinner, the evening's speakers,
plus the pre-show vendor expo and door prize drawing. Seating is very
limited and must be reserved online in advance. Please use invitation
code OR-1. There will be no onsite admission.  
http://www.macfeast.com/

Cerritos College
Student Activities Center
11110 Alondra Blvd
Norwalk, CA

Until next time--

Creating a PHP Engine of sorts

As a developer for many years, I have struggeled for a Engine that requires no interaction of a client to server. Allowing an auto involk to load certian scripts at certian times. Like a Ticker of sorts.This would reduce a client-side involked load time with includes. In case im still not very clear on what Im looking for. Think of a script on a server that auto updates your MYSQL data and you never have to goto it or load it. For thoses without their own server who use a hosting company. I have wriiten many Scripts that do vast amounts of datacrunching and processing, user inter-action , and you name it. One thing I have never been able to understand is how to make a script load and just run with-out a client action.

If this is small cheese to you then be kind and inform me of such cheese for i have no clue..

May – Using the APD debugger

Far to long I have wanted a simple way to dump a call stack or retrieve
a simple profile. How long does this group of functions run? Which ones are
hit the most frequently? You know how it is…you use print statements
or logging to find your way. No longer…now there is a better way. Now, there
is APD: This month in PUG.

Caveats

I must clear the air first. There are a couple of things to keep in mind before
you try to use this.

Some things to keep in mind

  • Part of PECL (the C library counterpart to PEAR) but does not ship with PHP.
  • Being a compiled zend extension you will need access to your php.ini. This may be a problem if you are using a hosting provider
  • It will work on Windows, but you will most likely need MSVC. I can’t attest to this though…It does work well on RedHat Linux 8. 😉
  • Remember: as with all Zend Extensions, take care if you are running this on your production server. It will be getting intimate with your engine…and it is version 0.6. 😉

So, what does this do?

APD may save your life. It may feed your cat. It might even help you take our your land-lady’s garbage.

At the very least, php-apd WILL produce a trace of your running PHP script. That alone, is a big deal. In addition to a human-readable trace of your program’s execution, php-apd also comes with a “reporting” tool to digest the info for you.

Not quite following? Well, that’s what examples are for!

Here is a typical run for a pice of content where most of the dynamically generated content has already been cached. To get something similar, just put the following at the start of your program:

    apd_trace(99);

Then hit your page as usual. You will get a trace file, ready for analysis. Just point pprofp at it:

    $ pprofp -u pprof.01581
    Trace for /vol1/home/dholmes/site_html/www.remote-clean/admin/common.inc
    Total Elapsed Time =    1.14
    Total System Time  =    0.05
    Total User Time    =    0.79
    
    
             Real         User        System             secs/    cumm
    %Time (excl/cumm)  (excl/cumm)  (excl/cumm) Calls    call    s/call  Memory Usage Name
    --------------------------------------------------------------------------------------
     25.3  0.23  0.23   0.20  0.20   0.01  0.01   879   0.0002    0.0002       199816 mysql_fetch_array
     17.7  0.17  0.17   0.14  0.14   0.00  0.00  2239   0.0001    0.0001         3048 strlen
      7.6  0.07  0.07   0.06  0.06   0.00  0.00     5   0.0120    0.0120       701608 require_once
      5.1  0.02  0.02   0.04  0.04   0.00  0.00   192   0.0002    0.0002        51008 is_object
      5.1  0.04  0.04   0.04  0.04   0.00  0.00   114   0.0004    0.0004           40 is_resource
      3.8  0.08  0.08   0.03  0.03   0.00  0.00    53   0.0006    0.0006          568 mysql_query
      3.8  0.04  0.15   0.03  0.12   0.00  0.01    15   0.0020    0.0080       352048 include_once
      2.5  0.18  0.18   0.02  0.02   0.00  0.00   182   0.0001    0.0001        32616 sizeof
      2.5  0.01  0.01   0.02  0.02   0.00  0.00   183   0.0001    0.0001        -2760 is_array
      2.5  0.00  0.00   0.02  0.02   0.01  0.01    53   0.0004    0.0004          848 mysql_select_db
      2.5  0.04  0.28   0.02  0.23   0.00  0.02   871   0.0000    0.0003         6104 db_mysql->fetchrow
      2.5  0.02  0.02   0.02  0.02   0.01  0.01     2   0.0100    0.0100       278768 define
      2.5  0.01  0.01   0.02  0.02   0.00  0.00    79   0.0003    0.0003      -130896 get_class
      2.5  0.02  0.02   0.02  0.02   0.00  0.00   159   0.0001    0.0001         9776 preg_match
      1.3  0.01  0.01   0.01  0.01   0.00  0.00    53   0.0002    0.0002         2536 mysql_num_rows
      1.3  0.00  0.00   0.01  0.01   0.00  0.00   123   0.0001    0.0001        10128 preg_match_all
      1.3  0.01  0.25   0.01  0.21   0.00  0.02   881   0.0000    0.0002       148016 db_mysql->fetchinto
      1.3  0.01  0.01   0.01  0.01   0.00  0.00    23   0.0004    0.0004         2440 split
      1.3  0.00  0.00   0.01  0.01   0.00  0.00     1   0.0100    0.0100        -3408 resourcerendertoolsbox->getjs
      1.3  0.00  0.00   0.01  0.01   0.00  0.00    17   0.0006    0.0006         3272 method_exists
    

Not to shabby. We made 879 database calls…which seems a little excessive. But, it is MySql: The down and dirty fastest database on the planet (IMHO). Keep in mind, this is a pretty large framework that has never really had any optimizing. So, what do things look like when that same piece of content is not cached?

    $ pprofp -u pprof.01171
    
    Trace for /vol1/home/dholmes/site_html/www.remote-clean/admin/common.inc
    Total Elapsed Time =    5.04
    Total System Time  =    0.12
    Total User Time    =    3.46
    
    
             Real         User        System             secs/    cumm
    %Time (excl/cumm)  (excl/cumm)  (excl/cumm) Calls    call    s/call  Memory Usage Name
    --------------------------------------------------------------------------------------
     54.0  2.04  2.04   1.87  1.87   0.03  0.03  27917   0.0001    0.0001        25728 strlen
      5.8  0.24  0.24   0.20  0.20   0.00  0.00   958   0.0002    0.0002       268008 mysql_fetch_array
      4.6  0.11  0.11   0.16  0.16   0.00  0.00   686   0.0002    0.0002        65320 get_class
      2.9  0.31  0.31   0.10  0.10   0.00  0.00   825   0.0001    0.0001       102424 sizeof
      2.6  0.11  0.11   0.09  0.09   0.00  0.00  1317   0.0001    0.0001        45320 is_array
      1.7  0.06  0.06   0.06  0.06   0.00  0.00   137   0.0004    0.0004        37960 split
      1.7  0.02  0.02   0.06  0.06   0.00  0.00   415   0.0001    0.0001         5560 is_resource
      1.7  0.12  0.12   0.06  0.06   0.01  0.01   578   0.0001    0.0001         8936 file_exists
      1.4  0.04  0.04   0.05  0.05   0.00  0.00   329   0.0002    0.0002        13608 trim
      1.4  0.20  0.27   0.05  0.12   0.02  0.03    22   0.0023    0.0055       885720 include_once
      1.4  0.04  0.04   0.05  0.05   0.01  0.01     4   0.0125    0.0125       586632 require_once
      1.2  0.05  0.05   0.04  0.04   0.00  0.00   571   0.0001    0.0001       -61280 in_array
      0.9  0.80  0.80   0.03  0.03   0.01  0.01   156   0.0002    0.0002          776 mysql_query
      0.9  0.07  0.07   0.03  0.03   0.00  0.00   424   0.0001    0.0001        24600 preg_match
      0.9  0.03  0.03   0.03  0.03   0.00  0.00   156   0.0002    0.0002       -33720 db_mysql->modifyquery
      0.9  0.07  0.07   0.03  0.03   0.01  0.01  1028   0.0000    0.0000        72280 is_object
      0.9  0.04  0.29   0.03  0.26   0.00  0.00   871   0.0000    0.0003         6152 db_mysql->fetchrow
      0.9  0.00  0.28   0.03  0.11   0.00  0.00   327   0.0001    0.0003        -1192 sm_sitetag->getvar
      0.9  0.02  0.28   0.03  0.23   0.00  0.00   984   0.0000    0.0002       159352 db_mysql->fetchinto
      0.6  0.01  0.01   0.02  0.02   0.00  0.00   161   0.0001    0.0001         8632 mysql_escape_string
    

Oh, my! When I saw this the first time, my jaw almost hit the floor! I’m spending almost 2 full seconds calling STRLEN??? There has got to be something going on.

So, I found a problem…what now?

Well, you will need to fire up those deductive reasoning skills they pay you for: Ok, so I know that this is happening when the main pane of content is being generated since it isn’t showing up when that content is cached. I doubt I use strlen THAT many times…maybe if I do a recursive grep on my source tree I can look for something that may suggest something.

Well, it turned up one hit that may be causing it. My gut says that it isn’t related and sure enough it was a dead end. So, time to go the distance. Time to see the log.

If I generate a “calltree” from my log (which takes a very long time on a 2.5M log) I see the problem right away. The log is filled with little gems like this:

    $ pprofp -t pprof.01171 > calltree.txt
    
    --------SNIP---------
    db_mysql->getone
      settype
      sizeof
      db_mysql->prepare
        split
        strlen (371x)
        end
        key
      db->iserror
        is_object
      db_mysql->execute
    --------SNIP---------
    

All of my prepares are hitting strlen anywhere between 100 and 500 times!! Notice that I’m hitting strlen here 371 times, but I’m calling getone…which means I wanted something tiny RIGHT NOW. Tisk, tisk…it’s in PEAR_DB. Well, let’s crack it open and take a peak.

First I look in DB/mysql.php. However, there is not a prepare function defined in there…it must be in DB/common.php.

    // ------------SNIP--------------
    function prepare($query)
    {
        $tokens = split("[&?!]", $query);
        $token = 0;
        $types = array();
    
        for ($i = 0; $i !!!!!!!!!modifyquery
    

Not too bad for 5 minutes of work! (I opened a bug report the next day and it is now fixed, btw.) Of course, the next culprit is now reveled. Again, looking at the tree it is in the same function! This time, it’s the second half.

        $this->prepare_tokens[] = &$tokens;
        end($this->prepare_tokens);
        
        $k = key($this->prepare_tokens);
        $this->prepare_types[$k] = $types;
        $this->prepared_queries[$k] = &$query;
        
        return $k;
    

Which, brings us to the second half of performance tuning: Sometimes, you just can’t do a darn thing. Essentially, their prepare_tokens array only contains a few elements, but by the end of the program they are spaced pretty far apart. This makes end run for a while. It might be helpful to track the index of the last element…but I’ll cop out and just say “this ain’t my library.” 😉

It’s so cool! It must be impossible to install!

Not at all. Just follow the directions in the readme. It’s no more difficult to build and install (in UNIX anyway) than a simple little C program. :-)

First untar it:

    $ tar -xzf apd-xxxx.tgz
    $ cd apd-xxxx
    $ phpize
    $ ./configure
    $ su -c "make install"  (as root)
    

You can use your phpinfo() to find your extension dir. If I recall I had to manually copy my apd.so by hand. So make sure it exists in your extension directory.

Next, open your php.ini. Again, use your phpinfo to make sure you have the right one.

Check the readme for the proper usage, but in my case I added:

    zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20020429/apd.so
    apd.dumpdir = /tmp/dump_dir
    

Again, this is for my case only…your milage WILL vary.

Restart apache and poof! Add a comment if/how you got this running in windows. 😉

What about the callstack?

Perhaps one of it’s coolest functions for you development pleasure is apd_callstack (and the related apd_cluck and apd_croak). If I know it is blowing up somewhere, but I just can’t for the live of me figure out how it got there…you can have it die with a callstack. For instance, If I add the following line in some obscure module:

    apd_croak();

Then, what I get as output is a callstack just before it dies.

    croaked at /vol1/home/dholmes/site_html/www.remote-clean/admin/lib/catalog.inc line 204
    courses->courses() called at /site_html/www/admin/lib/catalog.inc line 142
    acadofferingsrender->_renderclasses() called at /site_html/www/admin/modules/catalog/AcadofferingsRender.mod line 106
    acadofferingsrender->modulethink() called at /site_html/www/admin/modules/catalog/AcadofferingsRender.mod line 258
    acadofferingsrender->run() called at /usr/local/lib/php/siteManager-2.2.0/lib/modules.inc line 93
    resourcerender->modulethink() called at /site_html/www/admin/modules/resource/ResourceRender.mod line 258
    resourcerender->run() called at /usr/local/lib/php/siteManager-2.2.0/lib/modules.inc line 434
    sm_layouttemplate->_runmodules() called at /usr/local/lib/php/siteManager-2.2.0/lib/layoutTemplate.inc line 152
    pagedefault->_runmodules() called at /usr/local/lib/php/siteManager-2.2.0/lib/codePlate.inc line 506
    sm_sitemanagerroot->completepage() called at /usr/local/lib/php/siteManager-2.2.0/lib/smRoot.inc line 69
    ???() called at //site_html/www/htdocs/home/catalog/index.php line 0
    

Oh, of course! It was getting there from the constructor method of the courses object being created by the acadOfferingsRenderer! Now, why didn’t I just see that? 😉 Interestingly enough, you can track the calls through our framework library right to the index.php script that was called in the first place…now that’s handy!!.

We can a few other related methods. All three are summarized below

    apd_croak       - Prints a callstack and dies.
    apd_cluck       - Prints a callstack with a warning.
    apd_callstack   - Returns a callstack as an array (for FANCY user-side formatting)
    

Some other status dumping functions (which work great inside a print_r, by the way) include:

    apd_dump_regular_resources    - Returns an array of resource types (oci8 statement, mysql link) indexed by resource number
    apd_dump_persistent_resources - Just about the same thing.
    dump_function_table           - Should be apd_dump_function table...
    override_function             - You guessed it, great for replacing php functions with "one liner" replacements
    rename_function               - Renames functions in the symbol table.  Oh, yeah.
    

Interactive Debugging

So, if you are not impressed yet…go get yourself a copy of the tcputils. Those of you with Debian or BSD probably already have them. Those of us RH users…have to pull them from here.

Once you have the tool tcplisten in your path, fire up an xterm and type:

    $ tcplisten -r localhost 7112

Or any other available port number that you wish.

Now, add the following somewhere towards the top of your source code:

    apd_set_session_trace_socket("127.0.0.1",APD_AF_INET,7112,99);

You should see it stream a bunch of stuff (if there is a lot more “running” to do” to your terminal. Nice, huh? It get’s better. This time, start up your term with the following:

    $ while tcplisten -r localhost 7112; do echo END OF SESSION...; done

and add a apd_breakpoint(1); to your php script.

You should get a rather dangerous command line into your php session. You can echo back values using apd_echo(), set variables in real time, call functions, output to the browser…all the evil things you may want to do. Just type apd_continue(1); to move your script again.

You can look at an example of using apd_breakpoint();

Just to point out, apd_echo() works in your program as well as a simple way to have your “debugging info” go to another window. This works well, but it may be easier to have a function like debugLog() that only calls apd_echo if the module is loaded. You wouldn’t want your production code blowing up when it gets to your non-apd server!

If the command line isn’t your thing, you can also try the PHP-GTK based php mole.

Cool Commands

Here are a couple of little helpers I recommend using:

    Does a standard profile on the most recent pprof dump (presuming you are in your dump directory)
      $ pprofp -u `ls -t pprof*  
      
    Generates your calltree off of the most recent pprof dump
      $ pprofp -t `ls -t pprof* | head -1 ` > calltree.txt
    
    Repeatedly opens a monitor console for your apd_set_session_trace_socket()
      $ while tcplisten -r localhost 7112; do echo END OF SESSION...; done
    

More Links

More Debuggers

This is just a sampling of the ones I bumped into…feel free to add more in the comments.

Happy Debugging!!!

Newsletter: May 16, 2003

O’Reilly User Group Program
Newsletter
May 16, 2003
 Highlights This Week:
 ----------------------------------------------------------------
 Book News
 ----------------------------------------------------------------
 -C++ in a Nutshell
 -The Complete FreeBSD, 4th Edition
 ----------------------------------------------------------------
 Upcoming Events
 ----------------------------------------------------------------
 -Tim O'Reilly at the FreeNetworks Conference in Las Vegas, NV
 --June 7-8
 -Hacks Author Event at Powell's Bookstore in Portland, OR--June 11
 -David Pogue ("Mac OS X: The Missing Manual"), MetroMac Meeting,
 SoHo Apple Store, NY--June 12
 -David Jordan ("Java Data Objects"), Barnes & Noble in Cary, NC
 --June 16th
 ----------------------------------------------------------------
 Conferences
 ----------------------------------------------------------------
 -O'Reilly Open Source Convention Early Bird Registration Ends May 23
 -Put Up an O'Reilly Open Source Convention Banner, 
 Get a Free Book
  ----------------------------------------------------------------
 News
 ----------------------------------------------------------------
 -What I Hate About Your Programming Language
 -Geeking in the Third World
 -Vote for Your Favorite Linux Book
 -How Servlet Containers Work
 -Instrumenting Your .NET Application
 -New on Safari: Mac OS X: The Missing Manual
 -Goodbye PDA, Hello iPod?
 ----------------------------------------------------------------
 News From Your Peers
 ----------------------------------------------------------------
 -Huntsville Windows NT Users Meeting, AL--May 19
 -Portland Linux User Group Meeting, Portland, OR--June 3
 -Hampton Roads Oracle Users Group,Virginia Beach, VA--June 4
 
 ================================================
 Book News
 ================================================
 Review books are available--email me for a copy.
 
 ***Please include the book order number on your requests.
 
 Let me know if you need your books by a certain date.
 Allow at least four weeks for shipping. 
 Send or email me copies of your newsletters and book reviews.
 
 Don't forget, your members get 20% off any O'Reilly book they purchase
 directly from O'Reilly. Just use code DSUG when ordering.
 http://www.oreilly.com/
 
 ***Group purchases with better discounts are available***
 Please let me know if you are interested.
 
 Press releases are available on our press page:
 http://press.oreilly.com/
 
 
 ***C++ in a Nutshell
 Order Number: 298X
 "C++ in a Nutshell" packs an enormous amount of information on C++ (and
 the many libraries used with it) in a lean quick reference that offers
 practical examples for the most important, most often used aspects of
 C++. Cross-references link related methods, classes, and other key
 features. When you're programming, you need answers quickly to
 questions about language syntax or parameters required by library
 routines. This is an ideal resource for students as well as
 professional programmers.  http://www.oreilly.com/catalog/cplsian/
 
 Chapter 4, "Statements," is available online:
 http://www.oreilly.com/catalog/cplsian/chapter/index.html
 
 ***The Complete FreeBSD, 4th Edition
 Order Number: 5164
 This new edition, covering version 5 of FreeBSD, is now available
 through O'Reilly Community Press. It is an eminently practical
 guidebook that explains not only how to get a computer up and running
 with the FreeBSD operating system, but also how to turn it into a
 highly functional and secure server that can host large numbers of
 users and disks, support remote access, and provide web service, mail
 service, and other key parts of the internet infrastructure.
 http://www.oreilly.com/catalog/cfreebsd/
 
 ===============================================
 Upcoming Events
 ===============================================
 ***Tim O'Reilly at the FreeNetworks Conference in Las Vegas, NV
 --June 7-8
 FreeNetworks.org is presenting the first annual FreeNetworks
 conference, bringing together the experts and implementers in community
 wireless networking groups from across the globe, innovators from the
 wired community and municipal networks, and the technologists designing
 the hardware for future phases of this amazing movement. Keynote
 presentations by Tim O'Reilly and Cory Doctorow. Presenters include
 representatives from BAWUG, Seattle Wireless, NoCat NYCwireless,
 Consume, Wireless Leiden, and various other community wireless
 networking efforts from around the world (including O'Reilly's "Linux
 Server Hacks" author Rob Flickenger and the O'Reilly Network's Schuyler
 Erle).
 
 FreeNetworks Conference 2003
 June 7 and 8, 2003
 Alexis Park Hotel & Resort
 375 E. Harmon Ave
 Las Vegas, NV
 http://con.freenetworks.org/
 
 
 ***Hacks Author Event at Powell's Bookstore in Portland, OR--June 11
 Rael Dornfest and Rob Flickenger, authors of O'Reilly's best-selling
 Hacks series ("Google Hacks," "Linux Server Hacks," and "Mac OS X
 Hacks"), will be at Powell's to talk about their top-rated tomes,
 answer questions, and reveal a few of the private hacks that didn't
 make the series.
 
 Powell's will be giving away a Hacks book with any O'Reilly book
 purchased, excluding Pocket References, all day June 11.
 
 Powell's Technical Bookstore
 June 11, 7pm
 33 NW Park Avenue
 Portland, OR
 http://www.powells.com/technicalbooks
 
 ***David Pogue ("Mac OS X: The Missing Manual"), MetroMac Meeting, 
 SoHo Apple, NY--June 12 
 David will unveil the "Secrets of iPhoto 2" from his upcoming book
 "iPhoto2: The Missing Manual." First come, first serve seating is
 available in the upstairs theater.
 
 June 12. 6-8pm
 Apple Store SoHo
 103 Prince Street
 New York, NY 10012
 (212) 226-3126
 http://www.apple.com/retail/soho/
 
 
 ***David Jordan ("Java Data Objects"), Barnes & Noble in Cary, NC
 --June 16th
 David will be signing copies of his book "Java Data Objects" starting
 at 7:30pm.
 
 Barnes & Noble Booksellers
 Cary II 
 760 SE Maynard 
 Cary, NC 27511 
 919-467-3866
 http://www.barnesandnoble.com
 
 
 For more events, please see:
 http://events.oreilly.com/
 
 ================================================
 Conference News
 ================================================
 ***O'Reilly Open Source Convention Early Bird Discount Ends May 23
 --Sign up now!
 User Group members who register before May 23, 2003 get a double
 discount. Use code DSUG when you register, and you'll get 20% off the
 "Early Bird" price.
 
 To register, go to:
 http://conferences.oreillynet.com/cs/os2003/create/ord_os03
 
 
 O'Reilly Open Source Convention
 Portland Marriott Downtown,
 Portland, OR
 July 7-11, 2003
 http://conferences.oreilly.com/oscon/
 
 
 ***Put Up an O'Reilly Open Source Convention Banner, Get A Free Book
 Ready for the next conference banner promotion? Here it is:
 We are looking for user groups to display our conference banners on
 their web sites. If you send me the link to your user group site with
 our O'Reilly Open Source Convention banner, I will send
 you the O'Reilly book of your choice.
 
 OSCON Conference Banners:
 http://ug.oreilly.com/banners/oscon2003/
 
 ================================================
 News From O'Reilly & Beyond
 ================================================
 ---------------------
 General News
 ---------------------
 ***What I Hate About Your Programming Language
 Choosing a programming language is rarely ever as easy as making a list
 of features and choosing the best ones. Like programming, it can be
 messy and opinionated. Every language has its own philosophy, and
 whether that fits your own mind is often a matter of taste.
 http://www.onlamp.com/pub/a/onlamp/2003/05/12/languagephilosophy.html
 
 ---------------------
 Open Source
 ---------------------
 ****Geeking in the Third World
 Geekcorps volunteers work in third world countries to help companies
 become technically competent IT businesses. Richard Koman interviews
 Geekcorps founder Ethan Zuckerman, who will be participating in
 O'Reilly's Geek Activism Summit at OSCON 2003.
 http://www.oreilly.com/pub/a/oreilly/news/ethan_0503.html
 
 O'Reilly's Open Source Convention:
 http://conferences.oreilly.com/oscon/
 
 
 ***Vote for Your Favorite Linux Book
 Cast your votes for the first Linux Business & Technology Readers'
 Choice Awards. Voting for the "Oscars of the Software Industry"
 continues until August 30. Register your vote now!
 http://www.sys-con.com/linux/readerschoice2003/
 
 ---------------------
 Java
 ---------------------
 ***How Servlet Containers Work
 Having explained how a Java web server works, Budi Kurniawan next turns
 his attention to explaining how servlet containers work. He presents
 two examples that handle simple servlets and static content.
 http://www.onjava.com/pub/a/onjava/2003/05/14/java_webserver.html
 
 ---------------------
 .NET
 ---------------------
 ***Instrumenting Your .NET Application
 As they refine the .NET story, Microsoft seems to be getting more and
 more serious about pushing into the "enterprise" space. One of the
 latest pieces of evidence of this push is the release of the Enterprise
 Instrumentation framework (EIF), a set of classes and utilities that
 work with the .NET languages to provide white-box monitoring for
 distributed applications. Mike Gunderloy shows you how to add
 instrumentation to your own .NET applications.
 http://www.ondotnet.com/pub/a/dotnet/2003/05/12/instrumenting.html
 
 ---------------------
 Mac
 ---------------------
 ***New on Safari: Mac OS X: The Missing Manual
 This best-selling Pogue Press/O'Reilly title is now available online
 through the O'Reilly Network Safari Bookshelf. If you haven't gone on
 Safari yet, try a free trial subscription.
 https://secure.safaribooksonline.com/promo.asp?code=ORA14&portal=oreilly
 &CMP=IL19183
 
 
 ***Goodbye PDA, Hello iPod?
 Many casual PDA users dumped their old handhelds when Apple first
 introduced address and calendar synch to the iPod. But for more serious
 PDA enthusiasts, that just wasn't enough. Now with the new iPods
 running firmware 2.0, notes have been added to the mix (plus a few
 other goodies). Here's a look at how the iPod could become your next
 PDA...with a 10 GB hard drive or bigger!
 http://www.macdevcenter.com/pub/a/mac/2003/05/03/ipod_pda.html
 
 
 ***The Second Coming of the Mac OS X Innovators Contest
 The second Mac OS X Innovators Contest is now open for business. Two
 categories are available this time--U.S. Residents and International.
 http://www.macdevcenter.com/pub/a/mac/developer/2003/05/08/innovators.ht
 ml
 
 Deadline for entry is Monday, June 16, 2003.
 http://www.macdevcenter.com/mac/developer/
 
 ================================================
 News From Your Peers
 ================================================
 ***Huntsville Windows NT Users Meeting, Huntsville, AL--May 19
 Shawn Travers of Microsoft will be discussing Microsoft's Server 2003
 features.  Monday, May 19th, 6 to 8pm at the Intergraph's Building 15
 Auditorium, Huntsville, AL.  http://www.huntug.org/map
 
 
 ***Portland Linux User Group Meeting, Portland, OR--June 3
 Come Join PDXLUG June 3rd, 2003, 7pm at the Fireside Lodge, located at
 1223 SE Powell Blvd, Portland, Oregon.  http://www.pdxlug.org/
 
 
 ***Hampton Roads Oracle Users Group Meeting, Virginia Beach, VA--June 4
 HROUG will be holding an evening meeting at Old Dominion University on
 June 4th at 6:30PM For meeting information contact Hazel Zamperini @
 hzamperini@cox.net.
 
 
 Until next time--
 
 Marsee

Newsletter: May 6, 2003

O’Reilly has sent us our first newsletter, read on for more.
Highlights This Week:
----------------------------------------------------------------
Book News
----------------------------------------------------------------
-Mac OS X Hints
-ADO.NET in a Nutshell
-Mac OS X for Java Geeks
-Java Data Objects
-Building Embedded Linux Systems
-Active Directory, 2nd Edition
----------------------------------------------------------------
Upcoming Events
----------------------------------------------------------------
-Author Juval Lowy ("Programming .NET Components"), PGHDOTNET
Pittsburgh, PA--May 21
----------------------------------------------------------------
Conferences
----------------------------------------------------------------
-Be a part of OSCON's first Hackathon July 6 & 7
-O'Reilly Mac OS X Conference Call for Participation--
Deadline is May 14
-Put Up an O'Reilly Open Source Convention Banner, 
Get a Free Book
---------------------------------------------------------------
Safari 
----------------------------------------------------------------
-"Go On Safari" winner--S. Patrick Eaton, Tokyo PC Users Group
----------------------------------------------------------------
News
----------------------------------------------------------------
-Head First: Just Bring Your Brain 
-Electronic Archaeology
-OSCON Keynotes
-Open Source and Open Standards
-Creating Richer Hyperlinks with JSP Custom Tags
-Feed Your Head at ETech 2003
-The Secrets of Strong Naming
-Apple Brings Good Karma to Online Music
-Freeware Gems for Mac OS X 
----------------------------------------------------------------
News From Your Peers
----------------------------------------------------------------
-Twin Cities PHP Users Group Meeting, St. Paul, MN--May 14
-Syracuse Area Java Users Group Meeting, Dewitt, NY--May 21

================================================
Book News
================================================
Review books are available--email me for a copy.

***Please include the book order number on your requests.

Let me know if you need your books by a certain date.
Allow at least four weeks for shipping. 
Send or email me copies of your newsletters and book reviews.

Don't forget, your members get 20% off any O'Reilly book they purchase
directly from O'Reilly. Just use code DSUG when ordering.
http://www.oreilly.com/

***Group purchases with better discounts are available***
Please let me know if you are interested.

Press releases are available on our press page:
http://press.oreilly.com/

***Mac OS X Hints (Yeah! Finally...)
Order Number: 4516
Mac OS X holds many delicious secrets--you just have to know where to
find them. This handy reference shows intermediate to advanced
aficionados of Mac OS X how to adjust the desktop, tweak applications,
reconfigure the system, and even fine-tune the software in Mac OS X's
Unix-based core. It also shows how to handle numerous, complex system
administration tasks. Presented in an easy-to-follow, cross-referenced
format, "Mac OS X Hints" will help you get the most out of Mac OS X
10.2.  http://www.oreilly.com/catalog/macxhints/


***ADO.NET in a Nutshell
Order Number: 3617
"ADO.NET in a Nutshell" is the most complete and concise source of
ADO.NET information available. Besides being a valuable reference, this
book covers a variety of issues that programmers face when developing
web applications or web services that rely on database access. Using
C#, the book presents real-world, practical examples that will help you
put ADO.NET to work immediately. Included on CD-ROM is a Visual Studio
.NET add-in that integrates the entire reference directly into your
help files.  
http://www.oreilly.com/catalog/adonetian/

Chapter 12,"DataViews and Data Binding," is available online:
http://www.oreilly.com/catalog/adonetian/chapter/index.html


***Mac OS X for Java Geeks
Order Number: 4001
"Mac OS X for Java Geeks," written specifically for Java developers,
gives a complete, detailed look at Mac OS X. Whether you're a Java
newbie, working your way through Java Swing and classpath issues, or a
Java guru, comfortable with digital media, reflection, and J2EE, this
book will teach you how to get around on Mac OS X. You'll also get the
latest information on how to build applications that run seamlessly,
and identically, on Windows, Linux, Unix, and the Mac.
http://www.oreilly.com/catalog/macxjvgks/

Chapter 10, "QuickTime for Java," is available online:
http://www.oreilly.com/catalog/macxjvgks/chapter/index.html


***Java Data Objects
Order Number: 2769
"Java Data Objects" is the definitive work on the JDO API. It gives you
a thorough introduction to JDO and shows you how to: make classes
persistent and how JDO maps persistent classes to the database;
configure JDO at runtime; perform transactions; and make queries. More
advanced chapters cover optional features such as nontransactional
access and optimistic transactions. The book concludes by discussing
the use of JDO in web applications and J2EE environments.
http://www.oreilly.com/catalog/jvadtaobj/

Chapter 1, "An Initial Tour," is available online:
http://www.oreilly.com/catalog/jvadtaobj/chapter/index.html


***Building Embedded Linux Systems
Order Number: 222X
"Building Embedded Linux Systems" shows you how to design and build
your own embedded systems using Linux as the kernel, and freely
available open source tools as the framework. The book gradually
introduces readers to the intricacies of embedded Linux with detailed
information and examples that describe how Linux is actually put on an
embedded device. You'll learn the strengths and weaknesses of Linux as
an embedded OS, as well as what licensing issues are involved.
http://www.oreilly.com/catalog/belinuxsys/

Chapter 5, "Kernel Considerations," is available online:
http://www.oreilly.com/catalog/belinuxsys/chapter/index.html


***Active Directory, 2nd Edition 
Order Number: 4664
"Active Directory, 2nd Edition" gives a clear, detailed look at Active
Directory for both Windows 2000 and Windows Server 2003. You'll become
familiar with the Lightweight Directory Access Protocol (LDAP),
multi-master replication, Domain Name System (DNS), Group Policy, and
the Active Directory Schema, among many other topics. This book will
guide you through the maze of concepts, design issues, and scripting
options, enabling you to get the most out of your deployment.
http://www.oreilly.com/catalog/actdir2/

Chapter 14, "Upgrading to Windows Server 2003," is is available
online:  
http://www.oreilly.com/catalog/actdir2/chapter/index.html

===============================================
Upcoming Events
===============================================
***Author Juval Lowy ("Programming .NET Components"), PGHDOTNET 
Pittsburgh, PA--May 21
Juval will be presenting ".NET Remoting" to the Pittsburgh .NET User
Group.

For more info and to RSVP:
http://www.pghdotnet.org/

May 21st from 6-8pm
Pittsburgh Technology Council
2000 Technology Drive
Pittsburgh, PA 15219
http://www.pghtech.org/contact/directions.html

For more events, please see:
http://events.oreilly.com/

================================================
Conference News
================================================
***Be a part of OSCON's first Hackathon July 6 & 7
Pick an open source project, gather a group of hackers, and descend on
the Hackathon. We'll provide the room, bandwidth, tables, chairs, and
white boards--you provide the code. Space is limited. If you are
interested in participating, send email to oscon03hackathon@oreilly.com
by June 1, 2003.

O'Reilly Open Source Convention
Portland Marriott Downtown,
Portland, OR
July 7-11, 2003
http://conferences.oreilly.com/oscon/


Early Bird Discount--
User Group members who register before May 23, 2003 get a double
discount. Use code DSUG when you register, and you'll get 20% off the
"Early Bird" price.

To register, go to:
http://conferences.oreillynet.com/cs/os2003/create/ord_os03


***O'Reilly Mac OS X Conference Call for Participation--Deadline is May 14
System administrators, developers, strategists, technical staff, and
power users are invited to submit proposals to lead tutorial and
conference sessions at the second annual O'Reilly Mac OS X Conference.
Suggested topics include: Scripting Genius, Amazing Applications,
Ingenious Hacks, and SysAdmin Mac Style, to name a few.
http://conferences.oreilly.com/macosxcon/

The submission deadline for proposals is May 14, 2003:
http://conferences.oreillynet.com/cs/macosx2003/create/e_sess


***Put Up an O'Reilly Open Source Convention Banner, Get A Free Book
Ready for the next conference banner promotion? Here it is:  We are
looking for user groups to display our conference banners on their web
sites. If you send me the link to your user group site with our
O'Reilly Open Source Convention banner, I will send you the O'Reilly
book of your choice.

OSCON Conference Banners:
http://ug.oreilly.com/banners/oscon2003/

================================================
Safari News
================================================
***"Go On Safari" Weekly Winner--S. Patrick Eaton, Tokyo PC Users Group
"Shipping books from overseas has always been time-consuming and
costly. Buying books locally is costly, too, and often means putting up
with limited selections, especially in the area of technical
books--which are the kind I crave most....Fortunately, [this isn't] a
problem any more. I've just signed up for my own Safari Bookshelf."

Your group can also participate in this introductory program just for
user group members. To "Go on Safari," any of your members who sign up
for our Safari 14-day free trial send comments on their experiences, or
tips and tricks for how they used Safari  (it only needs to be 2
sentences long, but it may be longer) to safari_talk@oreilly.com.

Every week someone will be chosen from the tips or comments submitted
to receive fun stuff from O'Reilly (T-shirts, book bags, or other
surprises). If a member of your user group is selected, your group
receives free gifts, too. Whatever the individual member receives, your
UG will get one, too, to give away at your next meeting, or use however
you see fit. Recipients--and their comments--will be announced in the
User Group Newsletter.

**Please use this special UG URL to sign up for the 14-day trial**
http://www.oreilly.com/safari/ug

For more information on Safari:
http://safari.oreilly.com/

================================================
News From O'Reilly & Beyond
================================================
---------------------
General News
---------------------
***Head First: Just Bring Your Brain
Wacky themes, far-out images, and strange examples--O'Reilly's new Head
First book series helps you learn with stories, games, and pictures.
Learning a new technology doesn't have to be boring; see for yourself
with O'Reilly's upcoming "Head First Java."
http://headfirst.oreilly.com/

Head First Java (Out this month)
Order Number: 4656
http://www.oreilly.com/catalog/hfjava/


***Electronic Archaeology
It takes time to make a good mess. Programs start out simple, but then
the code evolves (or devolves) over the years. Different people work on
it, and it appears many of them knew very little about programming. The
result for professional programmers is having to deal with badly
designed, badly implemented, uncommented, incomprehensible blobs. The
art of digging through ancient, muddled code is called "electronic
archaeology," and this article, by Steve Oualline, author of "Practical
C++ Programming, 2nd Edition," discusses some of the tools you can use
to make your code "digs" easier.
http://www.oreillynet.com/pub/a/network/2003/04/29/steveoaulline.html

Practical C++ Programming, 2nd Edition
Order Number: 4192
http://www.oreilly.com/catalog/cplus2/


***Feed Your Head at ETech 2003
A week in Santa Clara for the O'Reilly Emerging Technology Conference
provided attendees with lots to chew on. Daniel Steinberg gives an
inside look at the people and the topics that helped make this such a
satisfying event.
http://www.openp2p.com/pub/a/p2p/2003/05/01/etech.html

---------------------
Open Source
---------------------
***OSCON Keynotes
Nathan Torkington: "I've had people asking me what's up with OSCON this
year--is anything interesting happening or can they skip it and watch
'Alias' reruns instead. I can't make your decision for you (the
relative attractiveness of the Alias lady and Larry Wall is something
I'll leave to you to weigh) but I can definitely talk a little about
what I'm jazzed about." http://www.onlamp.com/pub/wlg/3151

***Open Source and Open Standards
Open source means open code. It usually also means open standards. Are
they really so tightly intertwined? Which is more important to openness
in technology? Peter Saint-Andr explores these thoughts.
http://www.onlamp.com/pub/a/onlamp/2003/04/29/openstandardsopensource.html

---------------------
Java
---------------------
***Creating Richer Hyperlinks with JSP Custom Tags
Gone are the days where one destination per link was enough. With
mirroring, localization, and internationalization, your readers might
want the choice of several different resources for any given link.
Until XLink and XPointer are well-supported in browsers and authoring
tools, most alternatives are clumsy. Amit Goel demonstrates a better
approach by creating a custom JSP tag to control a dynamic menu of
destination links.
http://www.onjava.com/pub/a/onjava/2003/04/30/jsp_hyperlinks.html

---------------------
.NET
---------------------
***The Secrets of Strong Naming
If you've been working with .NET for any length of time, you've
probably run across the concept of a strong name. No, that doesn't mean
that your assemblies should have names like MyCompany.Gorilla.Biceps.
The strength of a strong name lies in the protection that it offers
your assemblies. The .NET Framework uses strong names to identify
assemblies and to protect them from tampering. In this article, Mike
Gunderloy shows you how strong names are constructed and demonstrates
the mechanics of working with strong names in .NET.
http://www.ondotnet.com/pub/a/dotnet/2003/04/28/strongnaming.html

---------------------
Mac
---------------------
***Apple Brings Good Karma to Online Music
At a much anticipated media event in San Francisco, Steve Jobs
announced Apple's new online music service, an updated version of
iTunes and third-generation iPods. Here are the details complete with
audio clips and photos from the presentation.
http://www.oreillynet.com/pub/q/all_mac_articles


***Freeware Gems for Mac OS X
Here's a collection of lesser-known freeware gems available for Mac OS
X. We're talking about neat little apps that you might not have heard
of, but that can do the job just as well as better-known (and much more
expensive) varieties without you having to pay a penny for them.
http://www.macdevcenter.com/pub/a/mac/2003/04/25/freeware.html

================================================
News From Your Peers
================================================
***Twin Cities PHP Users Group Meeting, St. Paul, MN--May 14
This meeting will feature Steve Lime, creator of Mapserver giving an
introduction to using scripting languages like PHP to create dynamic
web based spatial reports (otherwise known as maps)

May 14, 7:00pm
Offices of Minnesota Public Radio
45 East Seventh Street
St. Paul, MN 55101

For more information and directions:
http://tcphp.org


***Syracuse Area Java Users Group Meeting, Dewitt, NY--May 21
This meeting will feature "Ant: Building Mountains or Mole Hills." They
will review the use of Ant and provide examples of enterprise level
builds (JSP, Servlet, EJB, etc) usually not found in the current
literature.

May 21, 6:00pm
Partners In Health Systems
5789 Widewaters Parkway--1st Floor
Dewitt, NY 13214

Contact Bob Krause at bkrause@phs-us.com if you plan on attending or
need more information.


Until next time--

Marsee