Tue Apr 23 03:32:50 2024
EVENTS
 FREE
SOFTWARE
INSTITUTE

POLITICS
JOBS
MEMBERS'
CORNER

MAILING
LIST

NYLXS Mailing Lists and Archives
NYLXS Members have a lot to say and share but we don't keep many secrets. Join the Hangout Mailing List and say your peice.

DATE 2011-04-01

HANGOUT

2024-04-23 | 2024-03-23 | 2024-02-23 | 2024-01-23 | 2023-12-23 | 2023-11-23 | 2023-10-23 | 2023-09-23 | 2023-08-23 | 2023-07-23 | 2023-06-23 | 2023-05-23 | 2023-04-23 | 2023-03-23 | 2023-02-23 | 2023-01-23 | 2022-12-23 | 2022-11-23 | 2022-10-23 | 2022-09-23 | 2022-08-23 | 2022-07-23 | 2022-06-23 | 2022-05-23 | 2022-04-23 | 2022-03-23 | 2022-02-23 | 2022-01-23 | 2021-12-23 | 2021-11-23 | 2021-10-23 | 2021-09-23 | 2021-08-23 | 2021-07-23 | 2021-06-23 | 2021-05-23 | 2021-04-23 | 2021-03-23 | 2021-02-23 | 2021-01-23 | 2020-12-23 | 2020-11-23 | 2020-10-23 | 2020-09-23 | 2020-08-23 | 2020-07-23 | 2020-06-23 | 2020-05-23 | 2020-04-23 | 2020-03-23 | 2020-02-23 | 2020-01-23 | 2019-12-23 | 2019-11-23 | 2019-10-23 | 2019-09-23 | 2019-08-23 | 2019-07-23 | 2019-06-23 | 2019-05-23 | 2019-04-23 | 2019-03-23 | 2019-02-23 | 2019-01-23 | 2018-12-23 | 2018-11-23 | 2018-10-23 | 2018-09-23 | 2018-08-23 | 2018-07-23 | 2018-06-23 | 2018-05-23 | 2018-04-23 | 2018-03-23 | 2018-02-23 | 2018-01-23 | 2017-12-23 | 2017-11-23 | 2017-10-23 | 2017-09-23 | 2017-08-23 | 2017-07-23 | 2017-06-23 | 2017-05-23 | 2017-04-23 | 2017-03-23 | 2017-02-23 | 2017-01-23 | 2016-12-23 | 2016-11-23 | 2016-10-23 | 2016-09-23 | 2016-08-23 | 2016-07-23 | 2016-06-23 | 2016-05-23 | 2016-04-23 | 2016-03-23 | 2016-02-23 | 2016-01-23 | 2015-12-23 | 2015-11-23 | 2015-10-23 | 2015-09-23 | 2015-08-23 | 2015-07-23 | 2015-06-23 | 2015-05-23 | 2015-04-23 | 2015-03-23 | 2015-02-23 | 2015-01-23 | 2014-12-23 | 2014-11-23 | 2014-10-23 | 2014-09-23 | 2014-08-23 | 2014-07-23 | 2014-06-23 | 2014-05-23 | 2014-04-23 | 2014-03-23 | 2014-02-23 | 2014-01-23 | 2013-12-23 | 2013-11-23 | 2013-10-23 | 2013-09-23 | 2013-08-23 | 2013-07-23 | 2013-06-23 | 2013-05-23 | 2013-04-23 | 2013-03-23 | 2013-02-23 | 2013-01-23 | 2012-12-23 | 2012-11-23 | 2012-10-23 | 2012-09-23 | 2012-08-23 | 2012-07-23 | 2012-06-23 | 2012-05-23 | 2012-04-23 | 2012-03-23 | 2012-02-23 | 2012-01-23 | 2011-12-23 | 2011-11-23 | 2011-10-23 | 2011-09-23 | 2011-08-23 | 2011-07-23 | 2011-06-23 | 2011-05-23 | 2011-04-23 | 2011-03-23 | 2011-02-23 | 2011-01-23 | 2010-12-23 | 2010-11-23 | 2010-10-23 | 2010-09-23 | 2010-08-23 | 2010-07-23 | 2010-06-23 | 2010-05-23 | 2010-04-23 | 2010-03-23 | 2010-02-23 | 2010-01-23 | 2009-12-23 | 2009-11-23 | 2009-10-23 | 2009-09-23 | 2009-08-23 | 2009-07-23 | 2009-06-23 | 2009-05-23 | 2009-04-23 | 2009-03-23 | 2009-02-23 | 2009-01-23 | 2008-12-23 | 2008-11-23 | 2008-10-23 | 2008-09-23 | 2008-08-23 | 2008-07-23 | 2008-06-23 | 2008-05-23 | 2008-04-23 | 2008-03-23 | 2008-02-23 | 2008-01-23 | 2007-12-23 | 2007-11-23 | 2007-10-23 | 2007-09-23 | 2007-08-23 | 2007-07-23 | 2007-06-23 | 2007-05-23 | 2007-04-23 | 2007-03-23 | 2007-02-23 | 2007-01-23 | 2006-12-23 | 2006-11-23 | 2006-10-23 | 2006-09-23 | 2006-08-23 | 2006-07-23 | 2006-06-23 | 2006-05-23 | 2006-04-23 | 2006-03-23 | 2006-02-23 | 2006-01-23 | 2005-12-23 | 2005-11-23 | 2005-10-23 | 2005-09-23 | 2005-08-23 | 2005-07-23 | 2005-06-23 | 2005-05-23 | 2005-04-23 | 2005-03-23 | 2005-02-23 | 2005-01-23 | 2004-12-23 | 2004-11-23 | 2004-10-23 | 2004-09-23 | 2004-08-23 | 2004-07-23 | 2004-06-23 | 2004-05-23 | 2004-04-23 | 2004-03-23 | 2004-02-23 | 2004-01-23 | 2003-12-23 | 2003-11-23 | 2003-10-23 | 2003-09-23 | 2003-08-23 | 2003-07-23 | 2003-06-23 | 2003-05-23 | 2003-04-23 | 2003-03-23 | 2003-02-23 | 2003-01-23 | 2002-12-23 | 2002-11-23 | 2002-10-23 | 2002-09-23 | 2002-08-23 | 2002-07-23 | 2002-06-23 | 2002-05-23 | 2002-04-23 | 2002-03-23 | 2002-02-23 | 2002-01-23 | 2001-12-23 | 2001-11-23 | 2001-10-23 | 2001-09-23 | 2001-08-23 | 2001-07-23 | 2001-06-23 | 2001-05-23 | 2001-04-23 | 2001-03-23 | 2001-02-23 | 2001-01-23 | 2000-12-23 | 2000-11-23 | 2000-10-23 | 2000-09-23 | 2000-08-23 | 2000-07-23 | 2000-06-23 | 2000-05-23 | 2000-04-23 | 2000-03-23 | 2000-02-23 | 2000-01-23 | 1999-12-23

Key: Value:

Key: Value:

MESSAGE
DATE 2011-04-05
FROM Ruben Safir
SUBJECT Subject: [NYLXS - HANGOUT] Re: double deletes C++ Workshop

I essentially debugged this situation and worked around the double
delete.

Once i rolled up my sleeves, then what I understood as the principles
behind the destructors was confirmed to be correct. The issues layed in
my destructor. The destructor was fine at removing all the nodes. What
it failed to do was keep the List object up to date to its state.
Essentially, the biggest bug that I had was that as I was deleting
nodes, I failed to update the List's front_ and end_ data. They bother
had to be returned to NULL at the end so that when the destructor is
called again, if need be from a local copy of the List object, that it's
front() returns a null. Checking to make sure the Node was already
valid, which is what I was trying to do, is useless because when a Node
is deleted, that doesn't mean the pointer to that Node is NULL. It
still points to the Heap location which is being shared, only you have
garbage.

I also failed, FWIW, to do a return when font is NULL, causing the
destructor to continue down and do more intructions, similar to a case
without a break.

The degugger was less useful at helping solve this then I thought it
should be. There were other mimor issues with the find_next_value as
well. It is still very sloppy. It was sloppy in the first example as
well. I just know there has to be an easier way to do what I'm
attempting to do. The language looks like a big patch...


template < class T >
Node& List::find_next_value (const T& value, Node& last_node_searched)
{
cursor(&last_node_searched);
if(cursor() == endd()){
cursor() = 0;
return *cursor();
}
cursor() = cursor()->next();
while(value != *(cursor()->value()) ){
if(cursor() == endd()){
if( *(endd()->value()) == value){
return *(endd());
}else{
cursor() = 0;
return *cursor();//is this a problem. Does setting the Node *
//to zero return a zero address on all platforms?
}
}
cursor() = cursor()->next();
}
return *cursor();
} /* ----- end of method List::find_next_value ----- */



I am trying to avoid shifting the cursor past the end and becoming a
NULL pointer and then testing on that because you were critical of that
technique. The result was that I accidently tested for values that
didn't exist instead. I fixed it by checking if the sent Node is the
end Node right at the start of the function before I shift to the next
node.

I'm probably boring you to death with all this easy crap. Sorry about
it.

I'm going to change the find_next_node to returning pointers to Node
instread of Nodes, just to keep the API consistant, if for no other
reason.

BTW - one interesting thing to not

This Allorithm

srand(12345);
int i,j;
chainlist::List outside = creating_int_list();

chainlist::List a[10];
for( i=0; i < 10; ++i){
std::cout << "CREATING LIST for ARRAY -------------------------------\n";
a[i] = creating_int_list();
}

for( i=0; i < 10; ++i){
std::cout << "NEW SEARCH -------------------------------\n";
for(j=0;j < 10; j++){
find_all_examples(a[i], j);
}
}

for( i=0; i < 10; ++i){
std::cout << "Removing Nodes -------------------------------\n";
a[i].remove_all();
}


chainlist::List &creating_int_list(){
// chainlist::List set = new chainlist::List;
chainlist::List * set = new chainlist::List;
int ran;
for(int i = 0; i < 5; ++i){
ran=rand();
set->insert(ran % 10);
}
set->display();
return *set;
}


It MUST test EVERY possible permutation that a list can through at you.

Ruben

On Sun, Apr 03, 2011 at 03:18:48PM -0400, Billy Donahue wrote:
> Interestingly, I think you might be getting away with it due to RVO
>
> On Sunday, April 3, 2011, Ruben Safir wrote:
> > On Sun, Apr 03, 2011 at 11:13:38AM -0400, Billy Donahue wrote:
> >> Creating_int_list can't return a reference to local variable 'set'.
> >> That will be a dangling reference.
> >>
> >
> > right - local set has to be made to be new and allocated
> >
> >> The only real solution is to implement copy constructor and assignment
> >> operator for List.
> >>
> >> A really interesting challenge would be to also implement a swap() so
> >> that you can avoid copies.
> >>
> >>
> >> List makealist() {
> >> ? List tmp;
> >> ? for (int i = 0; i < 100000; ++i) {
> >> ? ? tmp.push_back(i);
> >> ? }
> >> ? return tmp;
> >> }
> >>
> >> // ......... ?Lame
> >> List b = makealist(); ?// copy the entire temporary, which then dies.
> >>
> >> // ......... ?Better
> >> List b;
> >> using std::swap;
> >> swap(b, makealist()); ?// steal nodes directly from the temporary.
> >> Then empty temporary dies.
> >>
> >> Yes in this case, RVO could have elided the copy in the first example.
> >> In a more complex example that wouldn't be possible. ?Swap is a useful
> >> primary operation for containers. You should try writing it.
> >>
> >>
> >>
> >> On Saturday, April 2, 2011, Ruben Safir wrote:
> >> > On Sat, Apr 02, 2011 at 11:11:33PM -0400, Billy Donahue wrote:
> >> >> This is doomed. ?You are passing lists by value in multiple places.
> >> >> Does list have a valid assignment operator yet?
> >> >>
> >> >
> >> >
> >> > Its supposed to be doomed. ?It is an exact duplication of the error.
> >> > The solution (there is really two of them) is to return references.
> >> > The other will be done tomorrow, to build the copy constructor and the
> >> > assignment operator. ?Meanwhile I'm having fun playing with variations
> >> > of this to see how many ways I can segfault or double delete.
> >> >
> >> > Ruben
> >> >> --
> >> >> Typed on a tiny virtual keyboard
> >> >>
> >> >> On Apr 2, 2011, at 23:06, Ruben Safir wrote:
> >> >>
> >> >> > This coutlines the bug
> >> >> >
> >> >> > /*
> >> >> > * =====================================================================================
> >> >> > *
> >> >> > * ? ? ? Filename: ?test_del.cpp
> >> >> > *
> >> >> > * ? ?Description: ?Testing DOuble Deletes
> >> >> > *
> >> >> > * ? ? ? ?Version: ?1.0
> >> >> > * ? ? ? ?Created: ?04/02/2011 05:12:24 PM
> >> >> > * ? ? ? Revision: ?none
> >> >> > * ? ? ? Compiler: ?gcc
> >> >> > *
> >> >> > * ? ? ? ? Author: ?YOUR NAME Ruben Safir,
> >> >> > * ? ? ? ?Company: ?NYLXS
> >> >> > *
> >> >> > * =====================================================================================
> >> >> > */
> >> >> >
> >> >> >
> >> >> >
> >> >> > #ifndef ?LINKLIST
> >> >> > #define LINKLIST
> >> >> > #include ? ?"linklist.h"
> >> >> > #endif ? ? /* ----- ?not LINKLIST ?----- */
> >> >> >
> >> >> > #include ? ?
> >> >> > #include ? ?
> >> >> > #include ? ?
> >> >> > #include ? ?
> >> >> >
> >> >> > /*
> >> >> > * === ?FUNCTION
> >> >> > * ======================================================================
> >> >> > * ? ? ? ? Name: ?main
> >> >> > * ?Description:
> >> >> > * =====================================================================================
> >> >> > */
> >> >> >
> >> >> >
> >> >> > chainlist::List creating_int_list();
> >> >> > void find_all_examples(chainlist::List, int);
> >> >> >
> >> >> >
> >> >> > int main ( int argc, char *argv[] )
> >> >> > {
> >> >> >
> >> >> > ? chainlist::List outside = creating_int_list();
> >> >> > ? outside.display();
> >> >> > ? find_all_examples(outside, 4);
> >> >> >
> >> >> > ? outside.find_value(4);
> >> >> >
> >> >> >
> >> >> > ? std::cout <<
> >> >> > "****************************************OUTSIDE**************************************************"
> >> >> > << std::endl;
> >> >> > ? chainlist::Node * found = outside.cursor();
> >> >> > ? std::cout << "Found first value ==> '" << *found->value() << "' at
> >> >> > node =='" << outside.cursor() << std::endl;
> >> >> > ? found = &(outside.find_next_value(4, *found));
> >> >> > ? while( found ){
> >> >> > ? ? ?std::cout << "Found next value ==> '" << *(found->value()) << "'
> >> >> > at node =='" << outside.cursor() << std::endl;
> >> >> > ? ? ?found = &(outside.find_next_value(4, *found));
> >> >> > ? }
> >> >> >
> >> >> > ? return EXIT_SUCCESS;
> >> >> > } ? ? ? ? ? ? ? ?/* ---------- ?end of function main
> >> >> > ---------- */
> >> >> >
> >> >> >
> >> >> > chainlist::List creating_int_list(){
> >> >> > ? // chainlist::List ?set = new chainlist::List;
> >> >> > ? chainlist::List ?set;
> >> >> > ? srand(12345);
> >> >> > ? int ran;
> >> >> > ? for(int i = 0; i < 50000; ++i){
> >> >> > ? ? ?ran=rand();
> >> >> > ? ? ?set.insert(ran % 101);
> >> >> > ? }
> >> >> > ? return set;
> >> >> > }
> >> >> >
> >> >> > void find_all_examples ( chainlist::List glob, int search_value )
> >> >> > {
> >> >> > ? glob.find_value(search_value);
> >> >> > ? chainlist::Node * found = glob.cursor();
> >> >> > ? std::cout << "Found first value ==> '" << *found->value() << "' at
> >> >> > node =='" << glob.cursor() << std::endl;
> >> >> > ? found = &(glob.find_next_value(search_value, *found));
> >> >> > ? while( found ){
> >> >> > ? ? ?std::cout << "Found next value ==> '" << *(found->value()) <> >>> ? Copyright for the Digital Millennium
> >> >> >
> >> >> > --
> >> >> > http://www.mrbrklyn.com - Interesting Stuff
> >> >> > http://www.nylxs.com - Leadership Development in Free Software
> >> >> >
> >> >> > So many immigrant groups have swept through our town that Brooklyn, like Atlantis, reaches mythological proportions in the mind of the world ?- RI Safir 1998
> >> >> >
> >> >> > http://fairuse.nylxs.com ?DRM is THEFT - We are the STAKEHOLDERS - RI Safir 2002
> >> >> >
> >> >> > "Yeah - I write Free Software...so SUE ME"
> >> >> >
> >> >> > "The tremendous problem we face is that we are becoming sharecroppers to our own cultural heritage -- we need the ability to participate in our own society."
> >> >> >
> >> >> > "> I'm an engineer. I choose the best tool for the job, politics be damned.<
> >> >> > You must be a stupid engineer then, because politcs and technology have been attached at the hip since the 1st dynasty in Ancient Egypt. ?I guess you missed that one."
> >> >> >
> >> >> > ? Copyright for the Digital Millennium
> >> >
> >> > --
> >> > http://www.mrbrklyn.com - Interesting Stuff
> >> > http://www.nylxs.com - Leadership Development in Free Software
> >> >
> >> > So many immigrant groups have swept through our town that Brooklyn, like Atlantis, reaches mythological proportions in the mind of the world ?- RI Safir 1998
> >> >
> >> > http://fairuse.nylxs.com ?DRM is THEFT - We are the STAKEHOLDERS - RI Safir 2002
> >> >
> >> > "Yeah - I write Free Software...so SUE ME"
> >> >
> >> > "The tremendous problem we face is that we are becoming sharecroppers to our own cultural heritage -- we need the ability to participate in our own society."
> >> >
> >> > "> I'm an engineer. I choose the best tool for the job, politics be damned.<
> >> > You must be a stupid engineer then, because politcs and technology have been attached at the hip since the 1st dynasty in Ancient Egypt. ?I guess you missed that one."
> >> >
> >> > ? Copyright for the Digital Millennium
> >> >
> >>
> >> --
> >> ?n??uop ?ll?q
> >
> > --
> > http://www.mrbrklyn.com - Interesting Stuff
> > http://www.nylxs.com - Leadership Development in Free Software
> >
> > So many immigrant groups have swept through our town that Brooklyn, like Atlantis, reaches mythological proportions in the mind of the world ?- RI Safir 1998
> >
> > http://fairuse.nylxs.com ?DRM is THEFT - We are the STAKEHOLDERS - RI Safir 2002
> >
> > "Yeah - I write Free Software...so SUE ME"
> >
> > "The tremendous problem we face is that we are becoming sharecroppers to our own cultural heritage -- we need the ability to participate in our own society."
> >
> > "> I'm an engineer. I choose the best tool for the job, politics be damned.<
> > You must be a stupid engineer then, because politcs and technology have been attached at the hip since the 1st dynasty in Ancient Egypt. ?I guess you missed that one."
> >
> > ? Copyright for the Digital Millennium
> >
>
> --
> ?n??uop ?ll?q

--
http://www.mrbrklyn.com - Interesting Stuff
http://www.nylxs.com - Leadership Development in Free Software

So many immigrant groups have swept through our town that Brooklyn, like Atlantis, reaches mythological proportions in the mind of the world - RI Safir 1998

http://fairuse.nylxs.com DRM is THEFT - We are the STAKEHOLDERS - RI Safir 2002

"Yeah - I write Free Software...so SUE ME"

"The tremendous problem we face is that we are becoming sharecroppers to our own cultural heritage -- we need the ability to participate in our own society."

"> I'm an engineer. I choose the best tool for the job, politics be damned.<
You must be a stupid engineer then, because politcs and technology have been attached at the hip since the 1st dynasty in Ancient Egypt. I guess you missed that one."

? Copyright for the Digital Millennium

  1. 2011-04-01 Ruben Safir <mrbrklyn-at-panix.com> Subject: [NYLXS - HANGOUT] C++ Workshop
  2. 2011-04-01 swd <sderrick-at-optonline.net> RE: [NYLXS - HANGOUT] C++ Workshop
  3. 2011-04-02 swd <sderrick-at-optonline.net> RE: [NYLXS - HANGOUT] Work
  4. 2011-04-05 Ruben Safir <mrbrklyn-at-panix.com> Re: [NYLXS - HANGOUT] Work
  5. 2011-04-05 Ruben Safir <mrbrklyn-at-panix.com> Re: [NYLXS - HANGOUT] C++ Workshop
  6. 2011-04-05 Ruben Safir <mrbrklyn-at-panix.com> Subject: [NYLXS - HANGOUT] Re: double deletes C++ Workshop
  7. 2011-04-06 Ruben Safir <mrbrklyn-at-panix.com> Subject: [NYLXS - HANGOUT] [pasa-at-lib.hu: Re: [accu-general] Who uses C?]
  8. 2011-04-06 Ruben Safir <mrbrklyn-at-panix.com> Subject: [NYLXS - HANGOUT] C++ Workshop Calendar
  9. 2011-04-06 Ruben Safir <mrbrklyn-at-panix.com> Subject: [NYLXS - HANGOUT] C++ Workshop, Linked List Workshop - usenet article.
  10. 2011-04-07 Ruben Safir <mrbrklyn-at-panix.com> Subject: [NYLXS - HANGOUT] Slackware news
  11. 2011-04-07 einker <eminker-at-gmail.com> Re: [NYLXS - HANGOUT] Slackware news
  12. 2011-04-07 einker <eminker-at-gmail.com> Re: [NYLXS - HANGOUT] Slackware news
  13. 2011-04-08 Ruben Safir <mrbrklyn-at-panix.com> Subject: [NYLXS - HANGOUT] [jan.vipin-at-gmail.com: Re: Query about C++ Workshop]
  14. 2011-04-10 Ruben Safir <mrbrklyn-at-panix.com> Re: [NYLXS - HANGOUT] C++ Workshop Calendar
  15. 2011-04-10 Ruben Safir <mrbrklyn-at-panix.com> Subject: [NYLXS - HANGOUT] Hardware
  16. 2011-04-10 einker <eminker-at-gmail.com> Re: [NYLXS - HANGOUT] Hardware
  17. 2011-04-11 Ruben Safir <mrbrklyn-at-panix.com> Subject: [NYLXS - HANGOUT] C++ Workshop
  18. 2011-04-11 Ruben Safir <mrbrklyn-at-panix.com> Re: [NYLXS - HANGOUT] C++ Workshop
  19. 2011-04-11 Ruben Safir <mrbrklyn-at-panix.com> Subject: [NYLXS - HANGOUT] C++ Workshop templated operator()<<]
  20. 2011-04-12 Ron Guerin <ron-at-vnetworx.net> Subject: [NYLXS - HANGOUT] NYLUG Workshop / Hacking Society (Smalltalk, C++, Python) Tuesday April 12 6:00PM-8:00PM
  21. 2011-04-12 Ruben Safir <mrbrklyn-at-panix.com> Subject: [NYLXS - HANGOUT] [billy.donahue-at-gmail.com: Re: templated operator()<<]
  22. 2011-04-12 Ruben Safir <mrbrklyn-at-panix.com> Subject: [NYLXS - HANGOUT] C++ Workshop Template, claass and function specialization
  23. 2011-04-12 Ruben Safir <mrbrklyn-at-panix.com> Re: [NYLXS - HANGOUT] C++ Workshop const
  24. 2011-04-15 Ron Guerin <ron-at-vnetworx.net> Subject: [NYLXS - HANGOUT] Free Software Round Table TOMORROW, Saturday April 16 10-11 PM (streaming live)
  25. 2011-04-16 Ron Guerin <ron-at-vnetworx.net> Subject: [NYLXS - HANGOUT] Free Software Round Table Canceled
  26. 2011-04-17 Ruben Safir <mrbrklyn-at-panix.com> Subject: [NYLXS - HANGOUT] C++ Workshop reminder
  27. 2011-04-18 Ruben Safir <mrbrklyn-at-panix.com> Subject: [NYLXS - HANGOUT] Happy Peasach
  28. 2011-04-19 Elfen Magix <elfen_magix-at-yahoo.com> Re: [NYLXS - HANGOUT] Happy Peasach
  29. 2011-04-19 Kevin Mark <kevin.mark-at-verizon.net> Re: [NYLXS - HANGOUT] Happy Peasach
  30. 2011-04-24 Ruben Safir <mrbrklyn-at-panix.com> Subject: [NYLXS - HANGOUT] [nbs-at-sonic.net: [vox] Fwd: Programmng the Kernel...]
  31. 2011-04-24 Ruben Safir <mrbrklyn-at-panix.com> Subject: [NYLXS - HANGOUT] No Workshop tonight
  32. 2011-04-26 Ron Guerin <ron-at-vnetworx.net> Subject: [NYLXS - HANGOUT] NYLUG Workshop / Hacking Society (Smalltalk, C++, Python) Tuesday April 26 6:00PM-8:00PM
  33. 2011-04-28 Ron Guerin <ron-at-vnetworx.net> Subject: [NYLXS - HANGOUT] NYLUG Presents: 5/18 -at- 6:30PM Cameron L. Fadjo on Construct, Program, Design: Exploring Scratch From the Perspective of Computational Thinking and Cognition
  34. 2011-04-28 Ruben Safir <mrbrklyn-at-panix.com> Re: [NYLXS - HANGOUT] NYLUG Presents: 5/18 -at- 6:30PM Cameron L. Fadjo
  35. 2011-04-28 Ruben Safir <mrbrklyn-at-panix.com> Re: [NYLXS - HANGOUT] NYLUG Presents: 5/18 -at- 6:30PM Cameron L. Fadjo
  36. 2011-04-29 Ron Guerin <ron-at-vnetworx.net> Subject: [NYLXS - HANGOUT] Free Software Round Table TOMORROW, Saturday April 30 10-11 PM (streaming live)
  37. 2011-04-29 Ron Guerin <ron-at-vnetworx.net> Re: [NYLXS - HANGOUT] NYLUG Presents: 5/18 -at- 6:30PM Cameron L. Fadjo
  38. 2011-04-29 einker <eminker-at-gmail.com> Subject: [NYLXS - HANGOUT] Bellingham's LinuxFest Northwest
  39. 2011-04-29 Ruben Safir <mrbrklyn-at-panix.com> Re: [NYLXS - HANGOUT] Bellingham's LinuxFest Northwest
  40. 2011-04-29 Ruben Safir <mrbrklyn-at-panix.com> Subject: [NYLXS - HANGOUT] C++ Workshop - New Webservices with OKWS - Sunday evening

NYLXS are Do'ers and the first step of Doing is Joining! Join NYLXS and make a difference in your community today!