text:
Starting from this chapter we will explore the ruby
source code, starting by
studying the declaration of objects structures.
What are the required conditions to make sure objects can exist? Many explanations can be given but in reality there are three conditions that must be obeyed:
In this chapter, we are going to confirm these three features one by one.
The most interesting file in this quest will be ruby.h
, but we will also
briefly look at other files such as object.c
, class.c
or variable.c
and objectsIn ruby
, the contents of an object is expressed by a C
structure, always
handled via a pointer. A different kind of structure is used for each class,
but the pointer type will always be VALUE
(figure 1).
Figure 1: VALUE
and structure
Here is the definition of VALUE
71 typedef unsigned long VALUE; (ruby.h)
In practice, a VALUE
must be casted to different types of structure pointer.
Therefore if an unsigned long
and a pointer have a different size, ruby
will not work well. Strictly speaking, it will not work for pointer types
bigger than sizeof(unsigned long)
. Fortunately, no recent machine feature
this capability, even if some time ago there were quite a few of them.
Several structures are available according to object classes:
struct RObject |
all things for which none of the following applies |
struct RClass |
class object |
struct RFloat |
small numbers |
struct RString |
string |
struct RArray |
array |
struct RRegexp |
regular expression |
struct RHash |
hash table |
struct RFile |
IO , File , Socket , etc… |
struct RData |
all the classes defined at C level, except the ones mentioned above |
struct RStruct |
Ruby's Struct class |
struct RBignum |
big integers |
For example, for an string object, struct RString
is used, so we will have
something like the following.
Figure 2: String object
Let's look at the definition of a few object structures.
▼ Examples of object structure/* structure for ordinary objects */ 295 struct RObject { 296 struct RBasic basic; 297 struct st_table *iv_tbl; 298 }; /* structure for strings (instance of String) */ 314 struct RString { 315 struct RBasic basic; 316 long len; 317 char *ptr; 318 union { 319 long capa; 320 VALUE shared; 321 } aux; 322 }; /* structure for arrays (instance of Array) */ 324 struct RArray { 325 struct RBasic basic; 326 long len; 327 union { 328 long capa; 329 VALUE shared; 330 } aux; 331 VALUE *ptr; 332 }; (ruby.h)
Before looking at every one of them in detail, let's begin with something more general.
First, as VALUE
is defined as unsigned long
, it must be casted before
being used. That's why Rxxxx()
macros have been made for each object
structure. For example, for struct RString
there is RSTRING()
, for struct
there is RARRAY()
, etc… These macros are used like this:
VALUE str = ....; VALUE arr = ....; RSTRING(str)->len; /* ((struct RString*)str)->len */ RARRAY(arr)->len; /* ((struct RArray*)arr)->len */
Another important point to mention is that all object structures start with a
member basic
of type struct RBasic
. As a result, whatever the type of
structure pointed by VALUE
, if you cast this VALUE
to struct RBasic*
you will be able to access the content of basic
Figure 3: struct RBasic
You guessed that struct RBasic
has been designed to contain some important
information shared by all object structures. The definition of struct RBasic
is the following:
struct RBasic
290 struct RBasic { 291 unsigned long flags; 292 VALUE klass; 293 }; (ruby.h)
are multipurpose flags, mostly used to register the structure type
(for instance struct RObject
). The type flags are named T_xxxx
, and can be
obtained from a VALUE
using the macro TYPE()
. Here is an example:
VALUE str; str = rb_str_new(); /* creates a Ruby string (its structure is RString) */ TYPE(str); /* the return value is T_STRING */
The names of these T_xxxx
flags are directly linked to the corresponding type
name, like T_STRING
for struct RString
and T_ARRAY
for struct RArray
The other member of struct RBasic
, klass
, contains the class this object
belongs to. As the klass
member is of type VALUE
, what is stored is (a
pointer to) a Ruby object. In short, it is a class object.
Figure 4: object and class
The relation between an object and its class will be detailed in the "Methods" section of this chapter.
By the way, the name of this member is not class
to make sure it does not
raise any conflict when the file is processed by a C++ compiler, as it is a
reserved word.
I said that the type of structure is stored in the flags
member of struct
. But why do we have to store the type of structure? It's to be able to
handle all different types of structure via VALUE
. If you cast a pointer to
a structure to VALUE
, as the type information does not remain, the compiler
won't be able to help. Therefore we have to manage the type ourselves. That's
the consequence of being able to handle all the structure types in a unified
OK, but the used structure is defined by the class so why are the structure type and class are stored separately? Being able to find the structure type from the class should be enough. There are two reasons for not doing this.
The first one is (I'm sorry for contradicting what I said before), in fact
there are structures that do not have a struct RBasic
(i.e. they have no
member). For example struct RNode
that will appear in the second
part of the book. However, flags
is guaranteed to be in the beginning
members even in special structures like this. So if you put the type of
structure in flags
, all the object structures can be differentiated in one
unified way.
The second reason is that there is no one-to-one correspondence between class
and structure. For example, all the instances of classes defined at the Ruby
level use struct RObject
, so finding a structure from a class would require
to keep the correspondence between each class and structure. That's why it's
easier and faster to put the information about the type in the structure.
As limiting myself to saying that basic.flags
is used for different things
including the type of structure makes me feel bad, here's a general
illustration for it (figure 5). There is no need to understand everything
right away, I just wanted to show its uses while it was bothering me.
Figure 5: Use of flags
When looking at the diagram, it looks like that 21 bits are not used on 32 bit
machines. On these additional bits, the flags FL_USER0
to FL_USER8
defined, and are used for a different purpose for each structure. In the
diagram I also put FL_USER0
) as an example.
As I said, VALUE
is an unsigned long
. As VALUE
is a pointer, it may look
like void*
would also be all right, but there is a reason for not doing
this. In fact, VALUE
can also not be a pointer. The 6 cases for which
is not a pointer are the following:
I'll explain them one by one.
As in Ruby all data are objects, integers are also objects. However, as there are lots of different instances of integers, expressing them as structures would risk slowing down execution. For example, when incrementing from 0 to 50000, just for this creating 50000 objects would make us hesitate.
That's why in ruby
, to some extent, small integers are treated specially and
embedded directly into VALUE
. "small" means signed integers that can be held
in sizeof(VALUE)*8-1
bits. In other words, on 32 bits machines, the integers
have 1 bit for the sign, and 30 bits for the integer part. Integers in this
range will belong to the Fixnum
class and the other integers will belong to
the Bignum
Then, let's see in practice the INT2FIX()
macro that converts from a C int
to a Fixnum
, and confirm that Fixnum
are directly embedded in VALUE
123 #define INT2FIX(i) ((VALUE)(((long)(i))<<1 | FIXNUM_FLAG)) 122 #define FIXNUM_FLAG 0x01 (ruby.h)
In brief, shift 1 bit to the right, and bitwise or it with 1.
0110100001000 |
before conversion |
1101000010001 |
after conversion |
That means that Fixnum
as VALUE
will always be an odd number. On the other
hand, as Ruby object structures are allocated with malloc()
, they are
generally arranged on addresses multiple of 4. So they do not overlap with the
values of Fixnum
as VALUE
Also, to convert int
or long
to VALUE
, we can use macros like
or LONG2NUM()
. Any conversion macro XXXX2XXXX
with a name
containing NUM
can manage both Fixnum
and Bignum
. For example if
can't convert an integer into a Fixnum
, it will automatically
convert it to Bignum
will convert both Fixnum
and Bignum
. If the number can't fit in an int
, an exception will be raised, so
there is not need to check the value range.
What are symbols?
As this question is quite troublesome to answer, let's start with the reasons
why symbols were necessary. First, let's start with the ID
type used inside
. It's like this:
72 typedef unsigned long ID; (ruby.h)
This ID
is a number having a one-to-one association with a string. However,
in this world it's not possible to have an association between all strings and
a numerical value. That's why they are limited to the one to one relationships
inside one ruby
process. I'll speak of the method to find an ID
in the
next chapter "Names and name tables".
In language implementations, there are a lot of names to handle. Method names
or variable names, constant names, file names in class names… It's
troublesome to handle all of them as strings (char*
), because of memory
management and memory management and memory management… Also, lots of
comparisons would certainly be necessary, but comparing strings character by
character will slow down the execution. That's why strings are not handled
directly, something will be associated and used instead. And generally
"something" will be integers, as they are the simplest to handle.
These ID
are found as symbols in the Ruby world. Up to ruby 1.4
, the
values of ID
where converted to Fixnum
, but used as symbols. Even today
these values can be obtained using Symbol#to_i
. However, as real use results
came piling up, it was understood that making Fixnum
and Symbol
the same
was not a good idea, so since 1.6 an independent class Symbol
has been
objects are used a lot, especially as keys for hash tables. That's
why Symbol
, like Fixnum
, was made stored in VALUE
. Let's look at the
macro converting ID
to Symbol
158 #define SYMBOL_FLAG 0x0e 160 #define ID2SYM(x) ((VALUE)(((long)(x))<<8|SYMBOL_FLAG)) (ruby.h)
When shifting 8 bits left, x
becomes a multiple of 256, that means a
multiple of 4. Then after with a bitwise or (in this case it's the same as
adding) with 0x0e
(14 in decimal), the VALUE
expressing the symbol is not
a multiple of 4. Or even an odd number. So it does not overlap the range of
any other VALUE
. Quite a clever trick.
Finally, let's see the reverse conversion of ID2SYM()
161 #define SYM2ID(x) RSHIFT((long)x,8) (ruby.h)
is a bit shift to the right. As right shift may keep or not the sign
depending of the platform, it became a macro.
true false nil
These three are Ruby special objects. true
and false
represent the boolean
values. nil
is an object used to denote that there is no object. Their
values at the C level are defined like this:
true false nil
164 #define Qfalse 0 /* Ruby's false */ 165 #define Qtrue 2 /* Ruby's true */ 166 #define Qnil 4 /* Ruby's nil */ (ruby.h)This time it's even numbers, but as 0 or 2 can't be used by pointers, they can't overlap with other
. It's because usually the first bloc of
virtual memory is not allocated, to make the programs dereferencing a NULL
pointer crash.
And as Qfalse
is 0, it can also be used as false at C level. In practice, in
, when a function returns a boolean value, it's often made to return an
or VALUE
, and returns Qtrue
For Qnil
, there is a macro dedicated to check if a VALUE
is Qnil
or not,
170 #define NIL_P(v) ((VALUE)(v) == Qnil) (ruby.h)
The name ending with p
is a notation coming from Lisp denoting that it is a
function returning a boolean value. In other words, NIL_P
means "is the
argument nil
?". It seems the "p
" character comes from "predicate". This
naming rule is used at many different places in ruby
Also, in Ruby, false
and nil
are false and all the other objects are true.
However, in C, nil
) is true. That's why in C a Ruby-style macro,
, has been created.
169 #define RTEST(v) (((VALUE)(v) & ~Qnil) != 0) (ruby.h)
As in Qnil
only the third lower bit is 1, in ~Qnil
only the third lower
bit is 0. Then only Qfalse
and Qnil
become 0 with a bitwise and.
has be added to be certain to only have 0 or 1, to satisfy the
requirements of the glib library that only wants 0 or 1
By the way, what is the 'Q
' of Qnil
? 'R' I would have understood but why
'? When I asked, the answer was "Because it's like that in Emacs". I did
not have the fun answer I was expecting…
167 #define Qundef 6 /* undefined value for placeholder */ (ruby.h)
This value is used to express an undefined value in the interpreter. It can't be found at all at the Ruby level.
I already brought up the three important points of a Ruby object, that is having an identity, being able to call a method, and keeping data for each instance. In this section, I'll explain in a simple way the structure linking objects and methods.
struct RClass
In Ruby, classes exist as objects during the execution. Of course. So there
must be a structure for class objects. That structure is struct RClass
. Its
structure type flag is T_CLASS
As class and modules are very similar, there is no need to differentiate their
content. That's why modules also use the struct RClass
structure, and are
differentiated by the T_MODULE
structure flag.
struct RClass
300 struct RClass { 301 struct RBasic basic; 302 struct st_table *iv_tbl; 303 struct st_table *m_tbl; 304 VALUE super; 305 }; (ruby.h)
First, let's focus on the m_tbl
(Method TaBLe) member. struct st_table
an hashtable used everywhere in ruby
. Its details will be explained in the
next chapter "Names and name tables", but basically, it is a table mapping
names to objects. In the case of m_tbl
, it keeps the
correspondence between the name (ID
) of the methods possessed by this class
and the methods entity itself.
The fourth member super
keeps, like its name suggests, the superclass. As it's a
, it's (a pointer to) the class object of the superclass. In Ruby there
is only one class that has no superclass (the root class): Object
However I already said that all Object
methods are defined in the Kernel
module, Object
just includes it. As modules are functionally similar to
multiple inheritance, it may seem having just super
is problematic, but but
in ruby
some clever changes are made to make it look like single
inheritance. The details of this process will be explained in the fourth
chapter "Classes and modules".
Because of this, super
of the structure of Object
points to struct
of the Kernel
object. Only the super
of Kernel is NULL. So
contrary to what I said, if super
is NULL, this RClass
is the Kernel
object (figure 6).
Figure 6: Class tree at the C level
With classes structured like this, you can easily imagine the method call
process. The m_tbl
of the object's class is searched, and if the method was
not found, the m_tbl
of super
is searched, and so on. If there is no more
, that is to say the method was not found even in Object
, then it
must not be defined.
The sequential search process in m_tbl
is done by search_method()
256 static NODE* 257 search_method(klass, id, origin) 258 VALUE klass, *origin; 259 ID id; 260 { 261 NODE *body; 262 263 if (!klass) return 0; 264 while (!st_lookup(RCLASS(klass)->m_tbl, id, &body)) { 265 klass = RCLASS(klass)->super; 266 if (!klass) return 0; 267 } 268 269 if (origin) *origin = klass; 270 return body; 271 } (eval.c)
This function searches the method named id
in the class object klass
is the macro doing:
((struct RClass*)(value))
is a function that searches in st_table
the value
corresponding to a key. If the value is found, the function returns true and
puts the found value at the address given in third parameter (&body
Nevertheless, doing this search each time whatever the circumstances would be
too slow. That's why in reality, once called, a method is cached. So starting
from the second time it will be found without following super
one by one.
This cache and its search will be seen in the 15th chapter "Methods".
In this section, I will explain the implementation of the third essential condition, instance variables.
Instance variables are what allows each object to store characteristic data.
Having it stored in the object itself (i.e. in the object structure) may seem
all right but how is it in practice? Let's look at the function
that puts an object in an instance variable.
/* write val in the id instance of obj */ 984 VALUE 985 rb_ivar_set(obj, id, val) 986 VALUE obj; 987 ID id; 988 VALUE val; 989 { 990 if (!OBJ_TAINTED(obj) && rb_safe_level() >= 4) 991 rb_raise(rb_eSecurityError, "Insecure: can't modify instance variable"); 992 if (OBJ_FROZEN(obj)) rb_error_frozen("object"); 993 switch (TYPE(obj)) { 994 case T_OBJECT: 995 case T_CLASS: 996 case T_MODULE: 997 if (!ROBJECT(obj)->iv_tbl) ROBJECT(obj)->iv_tbl = st_init_numtable(); 998 st_insert(ROBJECT(obj)->iv_tbl, id, val); 999 break; 1000 default: 1001 generic_ivar_set(obj, id, val); 1002 break; 1003 } 1004 return val; 1005 } (variable.c)
and rb_error_frozen()
are both error checks. Error checks are
necessary, but it's not the main part of the treatment, so you should ignore
them at first read.
After removing error treatment, only the switch
remains, but this
switch (TYPE(obj)) { case T_aaaa: case T_bbbb: ... }
form is characteristic of ruby
is the macro returning the type
flag of the object structure (T_OBJECT
, etc.). In other words as
the type flag is an integer constant, we can branch depending on it with a
. Fixnum
or Symbol
do not have structures, but inside TYPE()
special treatment is done to properly return T_FIXNUM
and T_SYMBOL
, so
there's no need to worry.
Well, let's go back to rb_ivar_set()
. It seems only the treatments of
and T_MODULE
are different. These 3 have been chosen on
the basis that their second member is iv_tbl
. Let's confirm it in practice.
/* TYPE(val) == T_OBJECT */ 295 struct RObject { 296 struct RBasic basic; 297 struct st_table *iv_tbl; 298 }; /* TYPE(val) == T_CLASS or T_MODULE */ 300 struct RClass { 301 struct RBasic basic; 302 struct st_table *iv_tbl; 303 struct st_table *m_tbl; 304 VALUE super; 305 }; (ruby.h)
is the Instance Variable TaBLe. It stores instance variable names and
their corresponding value.
In rb_ivar_set()
, let's look again the code for the structures having
if (!ROBJECT(obj)->iv_tbl) ROBJECT(obj)->iv_tbl = st_init_numtable(); st_insert(ROBJECT(obj)->iv_tbl, id, val); break;
is a macro that casts a VALUE
into a struct
. It's possible that obj
points to a struct RClass, but as
we're only going to access the second member no problem will occur.
is a function creating a new st_table
. st_insert()
a function doing associations in a st_table
In conclusion, this code does the following: if iv_tbl
does not exist, it
creates it, then stores the [variable name → object] association.
Warning: as struct RClass
is a class object, this instance variable table is
for the use of the class object itself. In Ruby programs, it corresponds to
something like the following:
class C @ivar = "content" end
For objects for which the structure used is not T_OBJECT
, or
, what happens when modifying an instance variable?
in the case there is no iv_tbl
1000 default: 1001 generic_ivar_set(obj, id, val); 1002 break; (variable.c)
The control is transferred to generic_ivar_set()
. Before looking at this
function, let's first explain its general idea.
Structures that are not T_OBJECT
or T_CLASS
do not have an
member (the reason why they do not have it will be explained later).
However, a method linking an instance to a struct st_table
would allow
instances to have instance variables. In ruby
, this was solved by using a
global st_table
, generic_iv_table
(figure 7) for these associations.
Figure 7: generic_iv_table
Let's see this in practice.
801 static st_table *generic_iv_tbl; 830 static void 831 generic_ivar_set(obj, id, val) 832 VALUE obj; 833 ID id; 834 VALUE val; 835 { 836 st_table *tbl; 837 /* for the time being you should ignore this */ 838 if (rb_special_const_p(obj)) { 839 special_generic_ivar = 1; 840 } /* initialize generic_iv_tbl if it does not exist */ 841 if (!generic_iv_tbl) { 842 generic_iv_tbl = st_init_numtable(); 843 } 844 /* the treatment itself */ 845 if (!st_lookup(generic_iv_tbl, obj, &tbl)) { 846 FL_SET(obj, FL_EXIVAR); 847 tbl = st_init_numtable(); 848 st_add_direct(generic_iv_tbl, obj, tbl); 849 st_add_direct(tbl, id, val); 850 return; 851 } 852 st_insert(tbl, id, val); 853 } (variable.c)
is true when its parameter is not a pointer. However,
as this if
part requires knowledge of the garbage collector, we'll skip it
for now. I'd like you to check it again after reading the chapter 5 "Garbage
already appeared some time ago. It creates a new hash
searches a value corresponding to a key. In this case it
searches for what's attached to obj
. If an attached value can be found, the
whole function returns true and stores the value at the address (&tbl
) given
as third parameter. In short, !st_lookup(...)
can be read "if a value can't
be found".
was also already explained. It stores a new association in a
is similar to st_insert()
, but the part before adding the
association that checks if the key was already stored or not is different. In
other words, in the case of st_add_direct()
, if a key already registered is
being used, two associations linked to this same key will be stored.
can be used when the check for existence has already been
done, as is the case here, or when a new table has just been created.
FL_SET(obj, FL_EXIVAR)
is the macro that sets the FL_EXIVAR
flag in the
of obj
. The basic.flags
flags are all named FL_xxxx
can be set using FL_SET()
. These flags can be unset with FL_UNSET()
. The
from FL_EXIVAR
seems to be the abbreviation of EXternal Instance
The setting of these flags is done to speed up the reading of instance
variables. If FL_EXIVAR
is not set, even without searching in
, we directly know if the object has instance variables. And
of course a bit check is way faster than searching a struct st_table
Now you should understand how the instance variables are stored, but why are
there structures without iv_tbl
? Why is there no iv_tbl
in struct
or struct RArray
? Couldn't iv_tbl
be part of RBasic
Well, this could have been done, but there are good reasons why it was not. As
a matter of fact, this problem is deeply linked to the way ruby
In ruby
, memory used by for example string data (char[]
) is directly
allocated using malloc()
. However, the object structures are handled in a
particular way. ruby
allocates them by clusters, and then distribute them
from these clusters. As at allocation time the diversity of types (and sizes)
of structures is difficult to handle, a type (union
) that combines all
structures RVALUE
was declared and an array of this type is managed. As this
type's size is the same as the biggest one of its members, if there is only
one big structure, there is a lot of unused space. That's why doing as much as
possible to regroup structures of similar size is desirable. The details about
will be explained in chapter 5 "Garbage collection".
Generally the most used structure is struct RString
. After that, in programs
there are struct RArray
(array), RHash
(hash), RObject
(user defined
object), etc. However, this struct RObject
only uses the space of struct
+ 1 pointer. On the other hand, struct RString
, RArray
and RHash
take the space of struct RBasic
+ 3 pointers. In other words, when putting a
struct RObject
in the shared entity, the space for 2 pointers is useless.
And beyond that, if RString
had 4 pointers, RObject
would use less that
half the size of the shared entity. As you would expect, it's wasteful.
So the received merit for iv_tbl
is more or less saving memory and speeding
up. Furthermore we do not know if it is used often or not. In the facts,
was not introduced before ruby
1.2, so it was not possible
to use instance variables in String
or Array
at this time. Nevertheless it
was not so much of a problem. Making large amounts of memory useless just for
such a functionality looks stupid.
If you take all this into consideration, you can conclude that increasing the size of object structures does not do any good.
We saw the rb_ivar_set()
function that sets variables, so let's see quickly
how to get them.
960 VALUE 961 rb_ivar_get(obj, id) 962 VALUE obj; 963 ID id; 964 { 965 VALUE val; 966 967 switch (TYPE(obj)) { /* (A) */ 968 case T_OBJECT: 969 case T_CLASS: 970 case T_MODULE: 971 if (ROBJECT(obj)->iv_tbl && st_lookup(ROBJECT(obj)->iv_tbl, id, &val)) 972 return val; 973 break; /* (B) */ 974 default: 975 if (FL_TEST(obj, FL_EXIVAR) || rb_special_const_p(obj)) 976 return generic_ivar_get(obj, id); 977 break; 978 } /* (C) */ 979 rb_warning("instance variable %s not initialized", rb_id2name(id)); 980 981 return Qnil; 982 } (variable.c)
The structure is strictly the same.
(A) For struct RObject
or RClass
, we search the variable in iv_tbl
. As
can also be NULL
, we must check it before using it. Then if
finds the relation, it returns true, so the whole if
can be
read as "If the instance variable has been set, return its value".
(C) If no correspondence could be found, in other words if we read an
instance variable that has not been set, we first leave the if
then the
. rb_warning()
will then issue a warning and nil
will be returned.
That's because you can read instance variables that have not been set in Ruby.
(B) On the other hand, if the structure is neither struct RObject
, the instance variable table is searched in generic_iv_tbl
. What
does can be easily guessed, so I won't explain it. I'd
rather want you to focus on the if
I already told you that generic_ivar_set()
sets the FL_EXIVAR
flag to make
the check faster.
And what is rb_special_const_p()
? This function returns true when its
parameter obj
does not point to a structure. As no structure means no
, no flag can be set, and FL_xxxx()
will always returns false.
That's why these objects have to be treated specially.
In this section we'll see simply, among object structures, what the important ones contain and how they are handled.
struct RString
struct RString
is the structure for the instances of the String
class and
its subclasses.
struct RString
314 struct RString { 315 struct RBasic basic; 316 long len; 317 char *ptr; 318 union { 319 long capa; 320 VALUE shared; 321 } aux; 322 }; (ruby.h)
is a pointer to the string, and len
the length of that string. Very
Rather than a string, Ruby's string is more a byte array, and can contain any
byte including NUL
. So when thinking at the Ruby level, ending the string
with NUL
does not mean anything. As C functions require NUL
, for
convenience the ending NUL
is there, however, it is not included in len
When dealing with a string coming from the interpreter or an extension
library, you can write RSTRING(str)->ptr
or RSTRING(str)->len
, and access
and len
. But there are some points to pay attention to.
really points to a struct RString
in something like a local variable and
use it laterWhy is that? First, there is an important software engineering principle:
Don't arbitrarily tamper with someone's data. Interface functions are there
for a reason. However, there are concrete reasons in ruby
's design
why you should not do such things as consulting or storing a pointer, and
that's related to the fourth member aux
. However, to explain properly how to
use aux
, we have to explain first a little more of Ruby's strings'
Ruby's strings can be modified (are mutable). By mutable I mean after the following code:
s = "str" # create a string and assign it to s s.concat("ing") # append "ing" to this string object p(s) # show the string
the content of the object pointed by s
will become "string
". It's
different from Java or Python string objects. Java's StringBuffer
is closer.
And what's the relation? First, mutable means the length (len
) of the string
can change. We have to increase or decrease the allocated memory size each time
the length changes. We can of course use realloc()
for that, but generally
and realloc()
are heavy operations. Having to realloc()
time the string changes is a huge burden.
That's why the memory pointed by ptr
has been allocated with a size a little
bigger than len
. Because of that, if the added part can fit into the
remaining memory, it's taken care of without calling realloc()
, so it's
faster. The structure member aux.capa
contains the length including this
additional memory.
So what is this other aux.shared
? It's to speed up the creation of literal
strings. Have a look at the following Ruby program.
while true do # repeat indefinitely a = "str" # create a string with "str" as content and assign it to a a.concat("ing") # append "ing" to the object pointed by a p(a) # show "string" end
Whatever the number of times you repeat the loop, the fourth line's p
has to
show "string"
. That's why the code "str"
should create, each time, a string
object holding a different char[]
. However, if no change occurs for a lot of
strings, useless copies of char[]
can be created many times. It would be better
to share one common char[]
The trick that allows this to happen is aux.shared
. String objects created
with a literal use one shared char[]
. When a change occurs, the string is
copied in unshared memory, and the change is done on this new copy. This
technique is called "copy-on-write". When using a shared char[]
, the flag
is set in the object structure's basic.flags
, and aux.shared
contains the original object. ELTS
seems to be the abbreviation of
But, well, let's return to our talk about RSTRING(str)->ptr
. Even if
consulting the pointer is OK, you must not modify it, first because the value
of len
or capa
will no longer agree with the content, and also because when
modifying strings created as litterals, aux.shared
has to be separated.
To finish this section about RString
, let's write some examples how to use
it. str
is a VALUE
that points to RString
RSTRING(str)->len; /* length */ RSTRING(str)->ptr[0]; /* first character */ str = rb_str_new("content", 7); /* create a string with "content" as its content the second parameter is the length */ str = rb_str_new2("content"); /* create a string with "content" as its content its length is calculated with strlen() */ rb_str_cat2(str, "end"); /* Concatenate a C string to a Ruby string */
struct RArray
struct RArray
is the structure for the instances of Ruby's array class
struct RArray
324 struct RArray { 325 struct RBasic basic; 326 long len; 327 union { 328 long capa; 329 VALUE shared; 330 } aux; 331 VALUE *ptr; 332 }; (ruby.h)
Except for the type of ptr
, this structure is almost the same as struct
. ptr
points to the content of the array, and len
is its length.
is exactly the same as in struct RString
. aux.capa
is the "real"
length of the memory pointed by ptr
, and if ptr
is shared, aux.shared
stores the shared original array object.
From this structure, it's clear that Ruby's Array
is an array and not a
list. So when the number of elements changes in a big way, a realloc()
be done, and if an element must be inserted at an other place than the end, a
will occur. But even if we do it, it's moving so fast it's really
impressive on current machines.
That's why the way to access it is similar to RString
. You can consult
and RARRAY(arr)->len
members, but can't set them, etc.,
etc. We'll only look at simple examples:
/* manage an array from C */ VALUE ary; ary = rb_ary_new(); /* create an empty array */ rb_ary_push(ary, INT2FIX(9)); /* push a Ruby 9 */ RARRAY(ary)->ptr[0]; /* look what's at index 0 */ rb_p(RARRAY(ary)->ptr[0]); /* do p on ary[0] (the result is 9) */ # manage an array from Ruby ary = [] # create an empty array ary.push(9) # push 9 ary[0] # look what's at index 0 p(ary[0]) # do p on ary[0] (the result is 9)
struct RRegexp
It's the structure for the instances of the regular expression class Regexp
struct RRegexp
334 struct RRegexp { 335 struct RBasic basic; 336 struct re_pattern_buffer *ptr; 337 long len; 338 char *str; 339 }; (ruby.h)
is the regular expression after compilation. str
is the string before
compilation (the source code of the regular expression), and len
is this
string's length.
As the Regexp
object handling code doesn't appear in this book, we won't see
how to use it. Even if you use it in extension libraries, as long as you do
not want to use it a very particular way, the interface functions are enough.
struct RHash
struct RHash
is the structure for Ruby's Hash
struct RHash
341 struct RHash { 342 struct RBasic basic; 343 struct st_table *tbl; 344 int iter_lev; 345 VALUE ifnone; 346 }; (ruby.h)
It's a wrapper for struct st_table
. st_table
will be detailed in the next
chapter "Names and name tables".
is the value when a key does not have an attached value, its default
is nil
. iter_lev
is to make the hashtable reentrant (multithread safe).
struct RFile
struct RFile
is a structure for instances of the built-in IO class and
its subclasses.
struct RFile
348 struct RFile { 349 struct RBasic basic; 350 struct OpenFile *fptr; 351 }; (ruby.h)▼
19 typedef struct OpenFile { 20 FILE *f; /* stdio ptr for read/write */ 21 FILE *f2; /* additional ptr for rw pipes */ 22 int mode; /* mode flags */ 23 int pid; /* child's pid (for pipes) */ 24 int lineno; /* number of lines read */ 25 char *path; /* pathname for file */ 26 void (*finalize) _((struct OpenFile*)); /* finalize proc */ 27 } OpenFile; (rubyio.h)
All members have been transferred in struct OpenFile
. As there aren't many
instances of IO
objects, it's OK to do it like this. The purpose of each member
is written in the comments. Basically, it's a wrapper around C's stdio
struct RData
struct RData
has a different tenor from what we saw before. It is the
structure for implementation of extension libraries.
Of course structures for classes created in extension libraries as necessary,
but as the types of these structures depend of the created class, it's
impossible to know their size or structure in advance. That's why a "structure
for managing a pointer to a user defined structure" has been created on
's side to manage this. This structure is struct RData
struct RData
353 struct RData { 354 struct RBasic basic; 355 void (*dmark) _((void*)); 356 void (*dfree) _((void*)); 357 void *data; 358 }; (ruby.h)
is a pointer to the user defined structure,
is the function used to free this structure, and
is the function for when the "mark" of the mark and sweep occurs.
Because explaining struct RData
is still too complicated, for
the time being let's just look at its representation (figure 8). You'll read
a detailed explanation of its members in chapter 5 "Garbage collection" where
there'll be presented once again.
Figure 8: Representation of struct RData


text:
Would you like to save as your currency permanently or for this visit only?
Prices are in Australian Dollars. close
Located in Milton Keynes, Number 68 - B&B is close to Milton Keynes Museum and Shenley Leisure Center. This bed & breakfast is within the vicinity of Central Milton Keynes Shopping Centre and Milton Keynes Theatre. Make yourself at home in one of the guestrooms featuring CD players. Complimentary high-speed (wired) Internet access is available to keep you connected. Bathrooms with shower/tub combinations are provided. Conveniences include desks and complimentary newspapers, and you can also request irons/ironing boards. Take in the views from a rooftop terrace and a garden and make use of amenities such as complimentary wireless Internet access. Featured amenities include express check-in, dry cleaning/laundry services, and luggage storage. Free parking is available onsite.

subset: commoncrawl


text:
Date: August 13th, 2016
Click here to get your tickets today!
*Tickets are almost sold out, buy your tickets today!*
Now in its 16th year, Picasso Pets is Hand in Paw's signature annual fundraiser and one of Birmingham's liveliest events. Guests can mingle with our star therapy animals, peruse a top-notch silent auction, sip craft beer, wine, and specialty cocktails, and enjoy delicious Southern cuisine. The night's main event is the debut of paintings created by pets belonging to prominent members of our community (with a little help from well-known local artists!). Dogs, cats, goats, horses, pigs and parrots have all made debuts on stage alongside their artwork at Picasso Pets, creating a truly spectacular and memorable evening for all attendees. The live auction also includes an array of trips, dining experiences, jewelry and other unique packages. All funds raised enable Hand in Paw to carry out our mission to improve human health and well-being.
Big thanks to our Sponsorship Chair, Nancy S. Burton.
When: Saturday, August 13th, 2016
Time: 6:00PM
Where: The Harbert Center
2019 4th Avenue North #100
Birmingham, AL 35203


text:
Desktop Functions: Smart Device Functions:
ShowWindow (user32)
Do Not give this function the handle of the desktop! C# Signature:
[DllImport("user32.dll")] VB Signature:
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _ User-Defined Types:Notes:None. Tips & Tricks:You can use ShowWindow to hide a window, even if your app didn't create it! Simply call ShowWindow(hWnd, 0); Sample Code:
/// <summary>Shows a Window</summary> Topmost Window Without FocusUse this code within a class to show a topmost form without giving focus to it.
private const int SW_SHOWNOACTIVATE = 4; Enum ShowWindowStyle (VB.NET)
Public Enum WindowShowStyle As UInteger Alternative Managed API:- It's possible to use, in some cases, the ShowInTaskbar form's property. - Override the ShowWithoutActivation property and make it always return true.
protected override bool ShowWithoutActivation Do you know one? Please contribute it! Here's a thought:You could capture the current focused window or form, store that, then once calling topmost window on targeted form/dialog, recall focus to the stored window. Please edit this page!Do you have...
Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more). |


text:
BMW 6 Series -
Original BMW Accessories wallpaper.
Original BMW Accessories - equipped with best ideas. Select your favourite BMW 6 Series accessories image and save it as wallpaper for your monitor.
The downloads available are in 1,280 x 1,024 format. They can be saved as desktop wallpapers on both Apple and Windows systems.


text:
Cars > Challenges > "Dad's Vette" Vs "bumble bee"
1968 Chevrolet Corvette Stingray
"Dad's Vette"
1968 Chevrolet chevy 2 nova custome deluxe
"bumble bee"
Head to Head
About "Dad's Vette"
This is my dad's pride and joy. He got it a long time ago.
About "bumble bee"
bought in 1985 from original owner and sold in 1997 bought back in 2000 and turned into a outlaw street car for NMCA 9 second class 1/4 mile have not run 1/8 mile yet should be fast
Has 33,000 original mile on it and all original sheet metal
and interior looks and smells new still stored inside almost all its life cig lighter has never been used and wing windows never opened.was butter nut yellow but repainted sun and bright yello mix.dealer installed 427 12 bolt and 400 in june of 1968 and have all paper work on car.full documentation even protecto plate.This is a true outlaw steet car,its a driver not a trailer queen.
500cid 12.50 -1 compression
merlin 2 heads worked over ported and polished
victor jr manifold also ported to match heads
1000 cfm drag race demon carb that has been tewaked just a little.ha ha
aeromotive fuel system,also have 300 shot pro fogger nitros kit not installed yet but dont need it at this point.not a nitros fan just got a good deal at a swap meet on it.
comp cams roller valve train
sorry cant give up exact engine specs.
2 1/4 primary tube headers coated
i do have 4 inch custom exhaust for the street that is also coated.
msd pro billet dist.and msd 7al box with coil w/ timming controlr.
fabricated brackets to fit chevelle radiator between frame rails and cut 4 inch out of rad support.radiator from becool and twin fans. 1 inch tubes
fairbanks turbo 400
custom built 5000 stall
b&m trans cooler
hurst pro pistol grip shifter
trans brake with manual shift reverse valvbody
hurst launch contol (line lock)for staging burnouts only.fun
moeser 12 bolt w/35 spline axles and billit spool
wilewood disc breaks on all 4 corners
5/8 studs
3.5 inch strange driveshaft chromemoly 1350 u joints and billit yokes front and rear
comp engineering sub frame connectors
cal tracs rear springs split mono
cal trac bars
29-10.50 m/t tires also have the street version
jegs pro street fuel cell and polished battery relocation kit in trunk.
front hotchkis springs 2 in drop and energy suspension bushings w stock conrtol arms ,it is a outlaw street car.maybe tubular later.
m/t sporsman 26.7.50- 15 tires up front
no chrome all parts are polished billit aluminum
4 inch steel cowl hood made by dynacorn i waited 4 years for this hood because i refused to go fiberglass and wanted one that fit perfect and it did it was woth the wait and i got thje very first one made for the 68 to 72 nova..i do still have the stock hood put away.
Specs for "Dad's Vette"
427 V8, 4 speed stick shift, it's CRAZY FAST!
Specs for "bumble bee"
500 cid 700 hp no bottle
fairbanks turbo 400 w/trans brake
5000 stall
Factory Options for "Dad's Vette"
No factory options listed.
Factory Options for "bumble bee"
has custom deluxe interior which is actualy the ss interior for 1969 nova ss
Mods for "Dad's Vette"
Spinner caps on the wheels.
Mods for "bumble bee"
stroker kit
merlin 2 heads
1000 cfm drag race demon
sorry no engine specs list of internals due to it being in a NMCA class
moeser 12 bolt 35 spline axles billit spool and 4.56 gears
cal trac bars and spit mono single leaf springs
jegs fuel cell in trunk (sorry its the only thing i cut on the car but kept the piece to weld back in in case i go back to stock)
Vote This challenge has ended!
Points for Dad's Vette | Total Votes | Points for bumble bee |
14 | 4 | 6 |
Cars > Challenges > "Dad's Vette" Vs "bumble bee"


text:
Snooper Tool
Communications Server 2007 R2
Topic Last Modified: 2009-05-22
You can use Snooper.exe tool to view SIP and Conferencing Control Channel Protocol (CCCP) logs that are generated by Office Communications Server. Snooper loads the supplied log file and displays the messages that it contains. You can also use Snooper to view failed voice call reports (database reports).
To use Snooper from within Logging Tool or as a stand-alone tool, you must install the Microsoft Office Communications Server 2007 R2 Resource Kit Tools, available as a free download at the Microsoft Download Center at http://go.microsoft.com/fwlink/?LinkID=145159. The Resource Kit Tools Readme includes documentation for the tool.
Community Additions


text:
The Rajasthan Royals have made the Sawai Mansingh Stadium in Jaipur a fortress that's not easily breached by the opposition. However, their away form has been a cause for concern and that was evident on Wednesday after the Mumbai Indians beat them at the Wankhede Stadium.
RR off-spinner Johan Botha had a day to forget after conceding 22 runs in the solitary over he bowled and scoring just two runs with the bat. His performance left a lot to be desired, but the gritty Protea is keen to make amends and kick his season into high gear as soon as possible.
The 31-year-old spoke exclusively to iplt20.com after his team's 27-run defeat at the hands of the Mumbai Indians.
How is IPL 2012 going for you so far?
Personally [it's] not the start I would have liked. I would say I have started a bit slow. There are 13 more matches to go, and it's a long tournament. Like Warnie [Shane Warne] always used to say, you are only as good as your next match, so shape up in the good for your team.
How much influence does Shane Warne have on this side?
Not too much. He doesn't really stay in contact. But guys do remember what he taught us or told us in four years [that he led the franchise], and we use it.
How will you guys deal with the first loss of the season?
In such along tournament [that] you are going to lose matches. But your luck is as good as your next game. Hopefully, we can bounce back pretty quickly. We have got a tough trip here, Kolkata and then Bangalore; two of the strongest teams in the IPL. If we can win those games, we would have had a great trip. We have upbeat and positive characters [in our team] and that will keep boys going.
What do you make of Kieron Pollard's innings?
He is a very good T20 player. He has got the power. When it's his day, he gets going and it's hard to stop him. It was his day today, and [he] backed it well with four wickets towards the end, which slowed us down and we couldn't quite get there.
MI have a lot of big name players and RR do not. What are your thoughts on that?
One of their big name players [Pollard] today put in a great performance of 50 off 20-odd balls and [took] four wickets. That's massive, and when you have guys like that in the team [it] is great. Indian guys really enjoy international guys in the team and love to learn from us. We have got a great team spirit.
Spinners have dominated in the last four seasons and pacers are dominating this season. What's the reason behind that?
I am not quite sure on that. Seamers have got a lot more variations – like slower ball, bouncers, and good lengths – than spinners. As the tournament goes on, wickets will start spinning a bit more, and spinners might get some overs back.
Were you guys confident about Owais Shah winning it for RR?
Yeah, definitely. Owais played one of the better knocks in T20s you would see. He kept us right in the game in a tough chase. 190 was never going to be easy, and he made it look so easy. It was a massive positive for us in the game. It will be great if we could help him out in a couple of games and win them.
Is skipper Rahul Dravid more focused on boosting team spirit?
I wouldn't say 'more'. I think Warnie was always big on team spirit, so I think we are just going to continue on that. We don't have big name players, so we got to play together. Tonight we were not far off, if we could have finished it better there. In the past we might have fallen way short [of the target]. That shows the character of the team in 2012.


text:
Top tour of Singapore (part 1)
Trip Start
Oct 22, 2009
Trip End
Dec 08, 2009
I have attached some pictures from this tour to peruse.
Following the half day city tour, I met up with Lingfei – Kewill's Asia Pacific Marketing Manager. Lingfei was excellent and showed me much more of the city both from a toursist and Singaporean perspective.
In the afternoon, after grabbing some lunch we headed to the Kewill office in Singapore to meet the rest of the Kewill team.
After the brief stop at the office, Lingfei and I headed out to Sentosa, an island just a few kilometres to the south of Singapore. Sentosa is basically one huge and impressive adventure playground for children and adults. Think of Disneyland and times it by 5! After visiting a number of shops for souvenirs, we had our photo taken with the Merlion – a mythical creature combining the head of a lion and the body of the fish, which is a key symbol of Singapore. We saw an amazing lights and firework show (called the 'Sounds of the Sea') – which is held each evening and cost millions to setup.
Following the show we headed back towards the hotel and stopped off for a 'hot pot' dinner. Traditional Singapore 'hot pot' is a little different to the Lancashire variety. It consists of raw ingredients (meat, fish, rice, noodles, vegetables – all of which you choose from the menu) and a large bowl of boiling water from which you cook the ingredients. Very tasty – although we struggled to eat all that we ordered!
Headed back to the hotel about 10:30 and arranged to meet with Lingfei mid-morning on Tuesday to visit Raffles.


text:
Enjoy fine restaurants, quaint boutiques and galleries, history, fishing, beaches and more from our spacious guest rooms, porches, private gardens, intimate courtyards and delightful fountains that are The Beaufort Inn. Located in the heart of Beaufort's landmark Historic District, The Beaufort Inn's historic architecture, curved balconies, verandas and gardens capture the essence of a gracious southern coastal town. The Beaufort Inn Events Office is happy to coordinate weddings, elopements, receptions, business meetings and other events for up to 300+ guests. Join the extensive list of couples, families, businesses, government officials and luminaries that have made history at The Beaufort Inn since 1897. We invite you to make memories and history by hosting your event at The Beaufort Inn SC.
5 on April 02, 2012
After having a screw-up with our reservations at the Hilton and finding no other rooms available for the night, we contacted the Beaufort Inn to see if they had availability. They had one room left and the night auditor and trainee stayed late so that we could check in and get settled. The whole inn is GORGEOUS and our room was beautiful, cozy and clean. The staff really is the epitome of southern hospitality. We could not have asked for a better stay and in fact, are planning to return on vacation just to stay here. It's very easy to see why this inn has received Four-Diamond status.
5 on March 28, 2009
I have visited The Beaufort Inn over half dozen times during the past eight years, and each visit seems to have been better than the one before. However, under the new and capable management of veteran innkeepers Julie and Mitch Myers (who live on site), this stellar inn has definitely reached a new pinnacle of excellence. Magnificent architecture combines with elegant decor and impressive amenities to provide guests with the ultimate in comfort as well as style. Guests also have the option of choosing the type of accommodations which best suits their personal preference or particular need--a lavish bed chamber in the main house, loft or carriage house accommodations, or a charming restored cottage. A wall fountain adds a sense of tranquility to the inn's lush courtyard garden, and the inn's new Tabby Garden is an ideal setting for weddings and other special events. Unlike many inns located in historic areas, The Beaufort Inn provides complimentary parking spaces for their guests adjacent to the inn. An amazing breakfast is prepared and served each morning, in a lovely dining room, by Southern Graces--a high-end catering service which adds an additional dimension of excellence to The Beaufort Inn. Lunch, also prepared by Southern Graces, is also served at The Beaufort Inn. A major expansion of the inn is currently in the planning stage, and the plans are impressive. I can hardly wait to watch them unfold and then re-visit this top-notch bed and breakfast once they do. --Maxine Pinson Associate Editor, BedandBreakfast.com
Luxury Suites are located the main Inn and in historic cottages with garden courtyards and porches. Some rooms have large living rooms, office desks, separate king-size bedrooms, walk-in marble rainwater showers and separate garden tubs.
Nightly Rate: $249 - $299
Nightly Rate: $249 - $299
Suites include king-size beds and sitting areas. All suites are individually decorated, with many suites including gas fireplaces, wet bars, soaking tubs and/or walk-in showers. Two-bedroom suites are also available offering even more spacious accommodations
Nightly Rate: $219 - $249
Nightly Rate: $219 - $249
Garden Cottages feature king-size beds and sitting chairs at the foot of the bed. All cottages are individually decorated, and include garden tubs and rainwater showers. Two-bedroom suites are also available offering even more spacious accommodations.
Nightly Rate: $259 - $289
Nightly Rate: $259 - $289
The Loft Apartment is a newly renovated 1,500 square foot space with large windows overlooking Beaufort's Bay Street in the heart of the Historic District. Hardwood floors and high ceilings accent the lofts historic details. It boasts a master bedroom with private bath, a guest bedroom with a full bath and a den with a trundle bed. It also comes equipped with a full modern kitchen, living room and dining area
Nightly Rate: $395 - $450
Historic Queen rooms are intimate rooms with queen-size beds, private baths and a reading chair. All rooms include Traditional Southern breakfast with a selection of fruits, cereals and pastries, afternoon refreshments and high-speed Internet are included in your selection.
Nightly Rate: $159 - $189
Nightly Rate: $159 - $189
Hunting Island State Park, Beach, Historic Penn Center, Largest Episcopalian Church in USA, Waterfront Park, Sheldon Ruins, Gullah sites, Downtown, Island, Small town
Charleston, SC (CHS) 40 miles
I-95 Merge onto US-17 N via EXIT 33 toward CHARLESTON/BEAUFORT. 8.7 mi Turn SLIGHT RIGHT onto TRASK PKWY/US-21 S. Continue to follow US-21 S. 14.2 mi Stay STRAIGHT to go onto BOUNDARY ST/US-21 BR. Continue to follow US-21 BR. 1.5 mi Turn RIGHT onto PORT REPUBLIC ST. 0.1 mi 809 PORT REPUBLIC ST is on the RIGHT.
Antique Shopping, Art Galleries, Beach, Concert venue, Gourmet/Fine Dining, Historical interests, Live Music, Movie Theater, Museum, National/State parks, Nature area, Ocean, Penn Center, Hunting Island State Park, Outlet Stores, Performing Theater, Picnic area, Religious Services, River, Ruins, Tours, University, Vineyard, Winery
Other, Cottage, Historic Inn, Spa, Boutique Hotel, Apartment
Bath robes, Bike rental, CD player, Coffee/Tea facilities, Computer, Conference Rooms, Copier, DVD Player, Fax Machine, Fireplace, Library, Parking, Private entrance, Spa, Wedding Facilities, Workout facility , Complimentary Breakfast Options Within Walking Distance
Air conditioning, Alarm clock, Ceiling fans, Hairdryer, Ironing Board, Radio, Satellite/Cable TV, TV, Telephone, Wi-Fi, Wired internet
Bicycle riding trails, Bird watching, Golfing, Horseshoes, Heritage Trail Tours, Carriage Rides, Goust Walks, Historic Lectures, Ghost Walks, Arts Guild, Shopping, Sight-seeing
Stacy Price, Misty Singleton, David Kalik,
Voucher off-site
Low fat , Vegetarian


text:
NBA basketball thread
View Single Post
Join Date: Jan 2004
Location: Cleveland, Ohio
Age: 40
Posts: 17,708
Rep Power:
I don't think he does. Remember Kirk Hinrich tackled him when he drove to the basket? That's not defense. Some of the Bulls players are dirty. For example Joakim Noah didn't have to push Chris Andersen yesterday when Chris blocked Nate Robinson's shot and he fell on Nate. He was about to get up when Joakim pushed him and that wasn't necessary. Nazr Mohammed did grab Lebron hard when Lebron got him off of him and then that's when Nazr pushed him. I'm glad Lebron didn't retaliate because he could've gotten ejected and Miami wouldn't have won without him.
I don't know what's up with Dwayne Wade. Some games he does nothing like last night when he only scored 10 points. He only had 2 shot attempts in the first half and that's unacceptable. He needs to shoot more. I was surprised Chris Bosh had 21 points and 19 rebounds. He usually doesn't get double digit rebounds. He should easily be averaging double digit rebounds because he's 6'10. He plays like a bitch at times. I don't understand how he was so dominant with Toronto.
View Public Profile
Send a private message to CharlesJones
Find More Posts by CharlesJones


text:
On Sunday, Reno Gazette-Journal scribe Chris Murray penned a list of what he called the 10 best cities in Nevada. It was, as one might expect, heavily oriented toward Northern Nevada towns, with Reno coming in at No. 3. But Murray didn't ignore Southern Nevada, however: He very generously listed Las Vegas at No. 5 and "Summerlin South" at No. 6.
Unfortunately, being a Renoite (Renoian? Renoish? Renoesque?), Murray missed a number of Southern Nevada cities that should have been included on his list. Ever helpful, here's a quick rundown:
10. Summerlin North: Unlike Summerlin South, Summerlin North has lots of winding, whimsically named streets with homes that all look pretty much the same, so it's easy to get lost. My advice: Drive around and keep pressing your garage-door opener until one opens. That's probably your house.
9. Scotch 80s: This city is one of the oldest in Nevada, and was named for Jeremiah Scotch, inventor of Scotch tape. He was, like, 80 when he founded the place.
8. Las Vegas County Club: This city was settled in the late 1800s, and some of its original pioneers are still there, thanks to anti-aging metaphasic radiation emanating from the lavishly maintained golf course. Visit the restaurant and try the club sandwich. It's good.
7. Southern Highlands: This is one of the newest cities in Southern Nevada, and also one of the nicest. There are golf courses, nice houses, hideaway restaurants in Strip malls, parks — OK, well, maybe not parks, but all that other stuff I said.
6. Centennial Heights: This city was named in a contest held by former Las Vegas Councilman Michael Mack, and remains the most significant accomplishment of his years in office.
5. Aliante: This city sprang up nearly overnight around a big Station Casino property. There is a park nearby with ducks.
4. Downtown: This city has undergone a serious renaissance in recent years, with new bars, restaurants, bars, tech hubs, bars, a grocery store, bars, high-rise residential properties, bars, shopping hubs, and bars.
3. Sun City: This city is home to lots of old people, who tend to drive big V-8 Cadillacs and electric golf carts at the exact same speed, both with the left blinker on continuously. But the restaurants are clear by 6 p.m.!
2. Anthem: This wealthy city features many big, custom homes, clustered around a nice golf course with sweeping views of the valley. And there's a Vons!
1. Green Valley: This master-planned city combines the small-town feel of a small town with big-city amenities, such as Chili's.


text:
This high-quality corset is handmade by the most skilled tailors in our factory. This underbust has both metal clasps and buckle closures, and would look gorgeous for any occasion.
- Underbust
- 100% Polyester Brocade
- Lining: 100% Cotton Twill
- Features Modesty Panel
- Strong Corset Cord Lacing
- 6 Suspender Loops
- Stainless Steel Busk Closure
- Corset Length: 11 in
- 12 Flat Steel Bones, 2 Spiral Steel Bones
- Potential Waist Reduction 4-5''
Feefo Reviews
Date | Score | Customer Comment | Our Response |
08-Apr-2014 | Product: | All of the corsets that I buy are of great quality and fit perfect. I am glad that there are sales so that I can afford some cute ones. | |
29-Mar-2014 | Product: | Excellent | |
15-Mar-2014 | Product: | Good | |
28-Jan-2013 | Product: | Excellent | |
21-Jun-2012 | Product: | Good | |
Read more reviews on Feefo Feefo reviews : Average (6 reviews) | |||
We ship our products with Royal Mail/Airmail or via tracked mail with UPS. Delivery options are detailed at Checkout.
Corset Story offer a 14 day no quibble money back guarantee
- Feature Group: N/A
- Your Natural Waist Size: N/A
- Colour: N/A
- Achievable waist reduction in inches: 3-4"
- Pattern Features: N/A
- Suitable for under clothes: N/A
- Terms of Sale: Corset Story offer a 14 day no quibble money back guarantee and a 30 day unlimited exchanges provided items are returned to us within the relevant time limit, in the same condition they were dispatched in and complete with all relevant clothing tags. If you have received your item and would like to return it for any reason please see the "Exchanges & refunds"


text:
patient testimonials
"Most all of my life was spent overweight in which I tried every diet that was on the market. It seemed nothing would work for me even though I followed them dilligently and exercized like crazy. Finally I hit my wits end and started looking into a more serious approach with gastric bypass surgery. I knew that it wouldn't be easy but decided it was the right option for me and at 256 pounds on my 5'4" frame went to Tri-State Bariatrics for a consultation. The staff at Tri State were pleasant and helpful and not once did I feel like I was being scrutinized or judged for choosing surgery over dieting. July 29th 2009 is when my life changed with Roux En Y Gastric Bypass Surgery by Dr. Kwon. I have now lost 103 pounds since my surgery a little over a year ago and I have never felt better. My eating habits have changed and I opt for fruits and vegetables as well as healthier entrees instead of sweets and fast food. In fact I don't eat anything with sugar in it and haven't done so since my surgery. I have more energy and I am able to do things that I felt my weight kept me from doing before. I also have a lot more confidence and have made many new friends that I would have been afraid to meet when I was overweight. It's a wonderful feeling to wake up in the morning, look in the mirror and actually like the person that I see looking back at me. Thank you to the staff and Dr. Kwon at Tri-State Bariatrics for helping to make my life healthier."
-Syndi -
Since I was fifteen years old, I have always had a weight problem. I had tried different methods of dieting for many years without results. By the year 2003, I started researching information about gastric bypass surgery. Two years later (2005), I found Dr. Ramon Rivera and he has changed my life.
I contacted Dr. Rivera's office and made an appointment with him for an initial consultation. He thoroughly explained the different types of surgeries and how important it is to be at a healthy weight. I was afraid of such a dramatic surgical procedure but I thought that it was the right decision. My surgery was performed at Good Samaritan Hospital. I was assigned wonderful personal care that helped me through a successful procedure.
After the surgery, I lost 124 pounds in nine months. A few months later, I got pregnant with (Samuel) my first child after 18 years of marriage. Three years after my surgery, I had my second baby (Lucas). After childbirth I continued to maintain my ideal weight. My life has changed in so many different ways thanks to Dr. Rivera. I look and feel much younger and healthier! Everyone can see the changes, but the most important thing is that I can see the difference and I feel great!!
-Karina -
My name is Evonne and I wanted to share my experience about the Lap Band surgery and with Dr. Rivera. I had the Lap Band surgery and it has been a life-changing experience. Since I had this surgery, I have regained control of my life. It has helped me not only lose over 60lbs but also learn the proper way to live a healthy lifestyle. Dr. Rivera has been an amazing doctor. He was very patient and inspirational during my Journey. Because of his thorough investigation into my health, he uncovered my heart condition. His discovery ultimately saved my life. Since then, my health has never been better. I am now able to walk and spend time with my grandchildren without feeling exhausted. I can go shopping for a long period without getting winded. I am able to work out daily without pain because of my obesity. My self-esteem has improved dramatically. I feel better about not only the way I look but the strength and confidence I feel in myself. I would recommend this surgery without hesitation. Dr. Rivera is truly an incredible doctor. One who genuinely cares and respects his patients as individuals. His staff has also been very helpful and informative in my experience. They were always willing to answer my questions and lend support when needed. I thank Dr. Rivera and his staff for all their support and encouragement.
Hi my name is Diane. I have had a weight problem since I was 11 years old. I have tried different diets and diet pills, nothing has worked. At the age of 40, while pregnant with my third child I gained almost 50 lbs. I had tried and tried to lose the baby weight but instead of losing I kept gaining till I reached 238 lbs. I became so depressed until I met Dr. Rivera, he changed my life.
After several visits, he suggested to me to try the Lap Band surgery. I had surgery on August 18, 2008 and a year later I was 48 lbs thinner. Now, in 2011 I have lost a total of 74lbs since my surgery and I went from a size 20 to a size 10! I not only have a new attitude and outlook on life but I feel 10 years younger. Thank you and your staff (Keri and Tara) for being my inspiration and making me feel good about myself once again.
"I started my journey back in December of '09. It's been nine months and I have lost over 85 lbs so far. I had been researching about weight loss surgery for a little while. I asked my Dr. who to contact and he recommended Tri-State Bariatrics and Dr. Kwon. It's been the best thing I have done for myself in a long time. I started talking about it on Facebook, I talk to my family and my friends all of whom were very excited for me. I travel for work teaching safety to truck drivers all over the north east coast. As part of my intro to the class I tell them a little about myself and what I have done and I get a lot of positive feedback.
I had my surgery on July 15. The things I can do are amazing. I walk (no running yet) but the biggest thing is I can cross my legs again. My dream is to run in a marathon one day. I had the Lap-Band surgery. I have been taken off some of my medication such as Metformin and a couple of others. The staff at Tri-State Bariatics is like family, very caring and loving. I hope one day I can be part of the staff. If you follow what the dietitian says and the Dr's you should not have a problem. My biggest fear is getting sick, so that is why I follow what they say to the letter."
Thank you, Frank
"I had been yoyo dieting all my life. I was at the point that due to arthirits in my knees and back I could hardly walk. I was on medication for high blood pressure and for high cholesterol. After much prayerful discernment I decided to investigate Lap-Band surgery. I came to Tri-State Bariatrics on July 3, 2008. At that day-long seminar I was given so much valuable information in a friendly, positive, and supportive manner. I knew that day that it was time for me to make this major move. I quickly made all the necessary appointments for my tests and my surgery was scheduled for October 15, 2008. Since that time I have lost over 120 pounds and my life has improved dramatically. I no longer need my medications. I can run and play with my grandchildren. I went to Disney with them last summer and I walked everywhere they did and went on all the rides as well. My quality of life has improved dramatically. Staying on track can be difficult at times but attending weekly support groups keeps me focused. Dr. Kwon and the staff at Tri-State Bariatrics do everything in their power to be supportive. I have been blessed to have found them!"
"I have been overweight most of my life. I have lost the weight many times, only to regain it all. I came to Tri-State for my seminar in September 2009. I was a very unhealthy weight of nearly 240! My blood pressure had become an issue. My cholesterol was extremely high. I had my surgery January 20, 2010 and to date I have lost 96 pounds. I am very happy with my journey and am looking forward to hitting my goal which is just a few pounds away. I can honestly say that coming to the support group meetings weekly has been a great help to me. Watching others who have had surgery years ago, who still attend is so helpful. The meetings give out very helpful information.
Everyone at the center is very kind and helpful. I am NO longer taking blood pressure medication or cholesterol medication. I am able to work out daily. I can now run, walk, do aerobics. I can now play on our trampoline with our children and grandchild. Life is good. I am so grateful for this opportunity. I cherish each new day and every new experience I am now able to take advantage of and fully experience. Thank you Dr. Kwon for giving me my life back. :)"


text:
Julie Krone, the first female jockey to win a Triple Crown race and the first to win a Breeders' Cup race, is one of nine inductees to the National Women's Hall of Fame. The ceremony will be Saturday at Seneca Falls, N.Y., the birthplace of the American women's rights movement.
Founded in 1969, the National Women's Hall of Fame every other year has a national panel of judges select inductees based on their lasting contributions to society through the arts, athletics, business, education, government, humanities, philanthropy and science.
Krone won 3,704 races and $90,126,584 in purse earnings before retiring for the second time in 2004. She captured the 1993 Belmont Stakes on Colonial Affair and the 2003 Breeders' Cup Juvenile Fillies on Halfbridled. Krone also became the first woman inducted in the National Museum of Racing's Hall of Fame in 2000.
In addition to Krone, the 2013 inductees include the late Betty Ford and House Democratic leader Nancy Pelosi.
"The 2013 Inductees again represent the spirit of Seneca Falls and the groundbreaking events that inspired the nation and the world," Beverly Ryder, co-president of the National Women's Hall of Fame's board of directors, stated in a news release. "Their efforts impact the lives of both women and men, girls and boys, and provide us with outstanding examples of the importance of perseverance, commitment and the desire for change."
The hall of fame has inducted 247 since its inception including women's rights pioneer Elizabeth Cady Stanton, Billie Jean King, Sen. Barbara A. Mikulski, Dr. Sally K. Ride, and Lucille Ball.
More information on the organization can be found atgreatwomen.org.
Rees also writes for The (Louisville) Courier-Journal


text:
Google has made some beneficial recent changes as noted below:
QUOTE: Google has made a number of changes to its Android Play Store ecosystem recently. Part of the reason is that Mountain View has been copping lots of flak for the prevalence of malware in unofficial application markets, often in pirated apps. That's a trifle unfair, since one of the attractions of Android over Apple's iOS is that it's actually possible to shop "off-market" if you wish. Sure, there's a greater risk of shooting yourself in the foot if you do, but you're not forced to live dangerously, and even if you do go outside the Play Store, a little caution goes a long way towards keeping you safe. More realistically, however, Google has been criticized for the appearance of malicious apps in its own Play Store.


text:
View Irwin's profile |
Genre-surfing tokenism. (Visit homepage.)
<-- Previous playlist | Back to Irwin Chusid playlists | Next playlist -->
February 29, 2012: Marathon Week 2: with co-hostess Bethany
Listen to this show:
Add or read comments
Listener comments! | |
Wed. 2/29/12 3:02pm
Bonjour Irwin | |
Wed. 2/29/12 3:05pm
Matt from Springfield:
Week Deux, here we go! Bonjour pierre! Ça va? | |
Wed. 2/29/12 3:07pm
ça va Matt, i've peldge and won @Ken's show, so i feel i'm on a good day ! | |
Wed. 2/29/12 3:07pm
Matt from Springfield:
ELP, Indie Rock style. | |
Wed. 2/29/12 3:08pm
Matt from Springfield:
Wonderful! I've already won two things, on Joe McG's and Julie's show, so I humbly take myself from the running--give others a chance to win something! | |
Wed. 2/29/12 3:09pm
Or Sparks if they grew up on granola instead of snark. | |
Wed. 2/29/12 3:09pm
Without Davy Jones there would be no one named David Bowie. | |
Wed. 2/29/12 3:11pm
Matt from Springfield:
@Cecile: That's another good one! | |
Wed. 2/29/12 3:13pm
Matt from Springfield:
@Woo: Yes, RIP Davy Jones, to those not already aware. Down to three Monkees now... | |
Wed. 2/29/12 3:13pm
trying to follow:
Who...? Donna Redwig? | |
Wed. 2/29/12 3:13pm
Matt from Springfield:
Like Charlie Sheen! Ir-winning!!! | |
Wed. 2/29/12 3:14pm
I knew this was too good to be true...(slinks off dejectedly) | |
Wed. 2/29/12 3:15pm
Speech Impediment:
Bethany--the Betht of Any Co-Hotht! | |
Wed. 2/29/12 3:15pm
@Woo: very true | |
Wed. 2/29/12 3:16pm
Van in DC:
What? No ustream? :) | |
Wed. 2/29/12 3:19pm
Speech Impediment:
Oh yeah, Spill Fector. | |
Wed. 2/29/12 3:19pm
Matt from Springfield:
Oooh, "Words" given the Vancouver student treatment. | |
Wed. 2/29/12 3:20pm
still b/p:
Andrea's wearing her glasses too far down her nose. | |
Wed. 2/29/12 3:28pm
Matt from Springfield:
Cuddly Song! | |
Wed. 2/29/12 3:29pm
Nilsson wrote it. | |
Wed. 2/29/12 3:29pm
Matt from Springfield:
Hey, what happened to ARIES in that list??! Davy stopped just before that! | |
Wed. 2/29/12 3:29pm
thank you Irwin! A little bit of my childhood just died. | |
Wed. 2/29/12 3:29pm
He was the cute one! Like Paul! | |
Wed. 2/29/12 3:30pm
Stipe said REM should go into the Hall of Fame before the Monkees. Still waiting. | |
Wed. 2/29/12 3:30pm
Matt from Springfield:
Wow, Nilsson wrote some cuddly songs. "The Puppy Song" is another of my favs from Harry's bouncy material. Thanks Irwin! | |
Wed. 2/29/12 3:31pm
Sorry, I mean REM should NOT go into the HOF before the Monkees | |
Wed. 2/29/12 3:32pm
hall of fame is stoopid :3 | |
Wed. 2/29/12 3:36pm
New York Post:
Yeah, way to blow our obituary headline, Bethany! | |
Wed. 2/29/12 3:36pm
Hey Bethany, not too soon! Please, MORE jokes about dead celebrities! Thanks in advance. | |
Wed. 2/29/12 3:45pm
Tom Dumb:
Is there anyone like a Pete Rose that's banned from ever entertaining the Rock n Roll Hall of Fame? The whole thing is such a joke. | |
Wed. 2/29/12 3:45pm
Matt from Springfield:
Like a child version of Natalie Cole's vocal--if only she'd picked a less creepy song to sing! | |
Wed. 2/29/12 3:46pm
fall of haim | |
Wed. 2/29/12 3:47pm
Present day Kitty:
And afterwards, after you rolled over and began snoring, leaving me in the wet spot, I vowed never to sing that song again. | |
Wed. 2/29/12 3:48pm
Van in DC:
"from time to time" You mean like from almost song to song? | |
Wed. 2/29/12 3:48pm
Channeling Irwin:
I don't know if you catch more flies with honey than vinegar, but vinegar sure as hell tastes better on FRIES than honey! | |
Wed. 2/29/12 3:49pm
Busta Assonance:
I thought of, for like a second, about getting Irwin's DJ premium, but there's something kind of creepy and pervy sitting around listening to songs of little girls. | |
Wed. 2/29/12 3:50pm
"Sex is more fun than logic. One cannot prove this, but it IS; in the sense that Mount Everest IS, and that Alma Cogan ISN'T." | |
Wed. 2/29/12 3:50pm
Van in DC:
Fun song | |
Wed. 2/29/12 3:51pm
Matt from Springfield:
LOL! Go Alma!! I gotta get that song! | |
Wed. 2/29/12 3:52pm
Clara Fire:
..never do a POLKA with a polar bear... | |
Wed. 2/29/12 3:52pm
Yvonne Slimslax:
Shadow Plaid IS BACK | |
Wed. 2/29/12 3:53pm
Shadow plaid! it's kinda blurry, Bethany! | |
Wed. 2/29/12 3:54pm
@Matt: then get Bethany's premium! | |
Wed. 2/29/12 3:55pm
Matt from Springfield:
Is it on Bethany's premium this year? | |
Wed. 2/29/12 3:55pm
WFMU : where you can listen to music and learn a bit more about shirts ! | |
Wed. 2/29/12 3:56pm
Here's a nice shadow plaid blazer, it would look great on IC: http://www.etsy.com/listing/85914703/50s-sz-40l-shadow-plaid-hollywood-sports?ref=sr_gallery_6&sref=&ga_includes[0]=tags&ga_search_query=shadow+plaid&ga_search_type=all&ga_facet= | |
Wed. 2/29/12 3:56pm
I appreciate Irwin's musical honesty. Or is it integrity? I'm too sleepy to know the differentce. | |
Wed. 2/29/12 3:58pm
Ike: I can't read if you are being sarcastic? Yes? No? | |
Wed. 2/29/12 3:59pm
Drawing soon for The Fall's 3CD Nation's Saving Grace album and Mike Doughty's Yes and Also Yes, for anyone pledging $15 or more to WFMU! | |
Wed. 2/29/12 4:03pm
Z Man:
No, this is MY happening! | |
Wed. 2/29/12 4:04pm
Bethany, no, I'm not. Although saying something that seems like it should be sarcastic and is actually sincere accidentally fits in with Irwin's tone pretty well... heh. Anyway, potentially-offensive humor is the best way to deal with celebrity death in my opinion. | |
Wed. 2/29/12 4:04pm
If everyone who was ever in The Fall pledges we should hit $2 million | |
Wed. 2/29/12 4:04pm
Matt from Springfield:
Whoa--Irwin can provide voices for his own mole cartoon! | |
Wed. 2/29/12 4:05pm
Matt from Springfield:
Cats in heat, and plaid jackets. Don't let this invaluable community resource go away! | |
Wed. 2/29/12 4:06pm
wow trash can cat even! | |
Wed. 2/29/12 4:07pm
Laura L:
People, get your pledges in, Petromalt isn't free, you know!!! | |
Wed. 2/29/12 4:07pm
I created you Z Man and I can destroy you! | |
Wed. 2/29/12 4:11pm
Matt from Springfield:
Amanda and Brandy were good at noise early on, but hadn't quite found their voice yet. Their enrapturing, all-consuming voice!! WAWAAAWAWAAA!!! | |
Wed. 2/29/12 4:15pm
Matt from Springfield:
Thanks for introducing me to The Caravelles, Irwin! A very incredible female voice! Different from Amanda and Brandy of course, but still beautiful! | |
Wed. 2/29/12 4:16pm
Mobb Deep:
Matt, did you pledge? | |
Wed. 2/29/12 4:20pm
Matt from Springfield:
I've pledged across many shows this Marathon--pledged to Irwin last week...and will soon drop another this week! | |
Wed. 2/29/12 4:22pm
Laura L:
And it's bare-hands anatomy... no latex gloves... Someday you'll be dead too, Irwin! But I'm not a necrophile--death is just a fact of, um, life. | |
Wed. 2/29/12 4:22pm
Death wields a scythe! Cuttin down us wheat-people | |
Wed. 2/29/12 4:22pm
When I was about 10, my Dad brought home a stack of failed promotional 45s that a friend at work had given him. It was all looney stuff that my siblings and I enjoyed for years, and it included a cover of "Never Do a Tango with an Eskimo" (not Alma Cogan, though) so that's a song that I've known for decades. | |
Wed. 2/29/12 4:24pm
I stole this record once. My doctor told me I needed to start lifting Waits. | |
Wed. 2/29/12 4:25pm
And he's shad...plaid, Leroy Brown | |
Wed. 2/29/12 4:25pm
Z Man:
Oh mighty Ebert thou art a Frankenstein indeed who wouldst not create for his wonderwoman a willing partner! | |
Wed. 2/29/12 4:27pm
I have a question. Last week I pledged pre-show to Irwin's show and at the time I set up a "prize account" (or something like that) that I was offered. Does that mean that I can make additional faux-pledges now to get in the running for some of these goodies? If so, how do I do that? Or does it mean something else? And if so, what? | |
Wed. 2/29/12 4:28pm
DJ Keili has a superior voice ! | |
Wed. 2/29/12 4:30pm
Matt from Springfield:
@rrg: I think the prize account is equivalent to a Mouse pledge ($365) and doesn't offer any premiums, but gets you in the running for ALL prizes offered during the Marathon. Any other pledges you make (for swag for example) would be in addition to. At least that's what I think... | |
Wed. 2/29/12 4:31pm
A train leaves Jersey City carrying forty bolts of shadow plaid fabric and traveling at 45 miles per hour. What is x, what is y, and who will kiss your belly on Leap Day? | |
Wed. 2/29/12 4:32pm
You mean that I've automatically been in the running for everything flogged on all shows, all the time? That seems unlikely. Surely I have to stake a claim, or something. | |
Wed. 2/29/12 4:32pm
Laura L:
Irwin was bothered by Chang & Eng the most--he values his independence! | |
Wed. 2/29/12 4:33pm
Yes, it's serious, but the Mutter is also a house of horrors, which is why it's so cool. | |
Wed. 2/29/12 4:33pm
Gone Plaid!:
http://www.youtube.com/watch?v=NP6DXoNKITc | |
Wed. 2/29/12 4:33pm
spent like 4 drawing classes there in college, each one 3 hours...back in the days of psychedelic levels never dwindling down very far...needless to say a lasting affect | |
Wed. 2/29/12 4:35pm
that's because your a pill popping republican | |
Wed. 2/29/12 4:36pm
Laura L:
Well, true, it's all that Chang & Eng ever knew and so was normal for them, but they always asked docs if they could be separated.... they wanted to be abnormal to their normal. | |
Wed. 2/29/12 4:36pm
rrg & Matt from Springfield: My understanding is that the prize account doesn't automatically get you in the running for all prizes. The account allows you to make faux pledges in specific shows that total less than your original pledge in order to get in the running for the drawings. Put something like "prize account pledge" in the comments for a web pledge (or tell the phone slave that the pledge is on your prize account) and check the "bill me later" block for your faux pledges. | |
Wed. 2/29/12 4:38pm
David B (the other one):
Reading the letter I got, if you did the pledge before Feb 20th, you can make phone/online pledges during shows to enter contests. | |
Wed. 2/29/12 4:38pm
@RRG & Matt: and you still get all appropriate premiums/swag for the original amount pledged. But not twice over, of course. | |
Wed. 2/29/12 4:38pm
Thanks, Ralphine. I'll try that. Maybe easier if I do it through a phone slave. Or maybe not. | |
Wed. 2/29/12 4:38pm
mike noble in dc:
and a slice of einstein's brain | |
Wed. 2/29/12 4:39pm
mike noble in dc:
and a collection of human skin leather products made by some rather morbid new jersey doctors. | |
Wed. 2/29/12 4:40pm
My good friend Renee French wrote the book "The Soap Lady" based on the Soap Lady in the Mutter Museum. Once in a while I like to drop a name. | |
Wed. 2/29/12 4:40pm
David B (the other one):
The WFMU Marathon Prize Account: "Pledge $365 or more and you'll get everything offered at your pledge level while remaining eligible for on-air prize giveaways (not listed in this brochure) that are offered during the marathon. with this account, any pledge you make by phone or online will be considered part of, not an addition to the pledge made here. make a paid or monthly pledge with this form or online by feb 20th to activate the prize account" | |
Wed. 2/29/12 4:40pm
Laura L:
Their death cast is at the MM and their connected liver too. Also a chair. May you not turn to adipocere and become a Soap Man, Irwin! | |
Wed. 2/29/12 4:42pm
still b/p:
When I was a kid, I read in the Guinness Book that Chang and Eng fathered this # of kids and that # of kids "respectively," and I confused it with "respectfully," assuming it was a reference to dignified and mutual courtesy during procreative acts. | |
Wed. 2/29/12 4:46pm
nice transition, Irwin | |
Wed. 2/29/12 4:46pm
Man takes his 11 year old daughter to the doctor. "Doctor, i'd like you to put her on birth control." "But shes too young to be sexually active." "I wouldn't call her sexually active, she just lies there." | |
Wed. 2/29/12 4:47pm
"How do you get down off an elephant? You don't get down off an elephant, you get down off a duck." I always thought this was funny, but until I was a grownup I thought that it was funny because it was a non-sequitur, not because it was a pun. | |
Wed. 2/29/12 4:52pm
There's a Springfield in NJ too, you know. I'm just sayin'. | |
Wed. 2/29/12 4:54pm
I think down comes from geese, not ducks | |
Wed. 2/29/12 4:54pm
Was that a putdown? | |
Wed. 2/29/12 4:55pm
You can also get down from tree roots, as in "root down" | |
Wed. 2/29/12 4:56pm
Hey, that's not nice. About Ms. Andrews. | |
Wed. 2/29/12 4:56pm
Irwin, do you know of Abigail & Brittany Hensel?? Truly a remarkable rarity (two headed girl). Gonna try to pledge but the cats want sushi today | |
Wed. 2/29/12 4:56pm
Get down: http://www.youtube.com/watch?v=57oBC_WLsYA | |
Wed. 2/29/12 4:57pm
Sam must know the system of a down. | |
Wed. 2/29/12 4:59pm
You can get down from lots of birds. "Eiderdown" is from a particular duck species, for instance. | |
Wed. 2/29/12 5:02pm
fred von helsing:
Quadrotors play the Bond theme https://www.youtube.com/watch?v=_sUeGC-8dyk | |
Wed. 2/29/12 5:03pm
Anniversary of Tullis and Clark. Didn't they start here the week after marathon last year? | |
Wed. 2/29/12 5:03pm
Matt from Springfield:
It's the Tullis & Clark Chopped & Screwed remix! I love this one! | |
Wed. 2/29/12 5:03pm
Matt from Springfield:
Hey FVH! | |
Wed. 2/29/12 5:05pm
Matt from Springfield:
@G: It was the week after last year's Marathon, which was Mar 16 2011. This year the anniversary show would be Mar 14. "What the hell does Dan Tullis and Joe Clark have to do with a Joe Morello tribute? Irwin, get out of that shoebox!! You're already actin' crazy enough today!" as I said at the time! :) | |
Wed. 2/29/12 5:06pm
Matt from Springfield:
Wow, this girl is on the premium! She's a legend from this show! One of, "Irwin's Girls". | |
Wed. 2/29/12 5:07pm
That suppressed album should be a Marathon prize. | |
Wed. 2/29/12 5:08pm
i learn of every celebrity death from the fmu playlist i'm glad davey jones got to cameo in that great brady bunch movie back in the old 90s can't wait for irwin premium! | |
Wed. 2/29/12 5:09pm
Davy. | |
Wed. 2/29/12 5:10pm
Wed. 2/29/12 5:11pm
Matt from Springfield:
Greatly enjoy the Brady Bunch 90s movies! More so than the 70s show, fer sure! | |
Wed. 2/29/12 5:11pm
(was thinking of davey and goliath) | |
Wed. 2/29/12 5:12pm
I remember back in the day everyone thinking it was "oh, my genitals". | |
Wed. 2/29/12 5:12pm
Matt from Springfield:
@hopey: Back in the day, as in, a few weeks ago? :) | |
Wed. 2/29/12 5:13pm
it's both! | |
Wed. 2/29/12 5:14pm
The FM signal carries so far in those northern latitudes :-) | |
Wed. 2/29/12 5:16pm
completist ( = severe OCD) | |
Wed. 2/29/12 5:22pm
Did Bethany just coin the word "Irwinian?" Fantastic! | |
Wed. 2/29/12 5:23pm
Hello all! Keep pledging guys, we are doing it!! | |
Wed. 2/29/12 5:30pm
Irwinian, yes! Tony kindly went down to grab me a plate of food for dinner. "Dietary restrictions?", he asked. "No peppers or Irwins." Not kidding. You say ONIONS, I say IRWINS!" | |
Wed. 2/29/12 5:33pm
fred von helsing:
Hey Matt von Shprinkfielt! Now iz ze time in Finnland venn ve go für biers! | |
Wed. 2/29/12 5:34pm
Matt from Springfield:
@FVH: And in about an hour is the time in Springfield when I go for beer! | |
Wed. 2/29/12 5:38pm
I agree with Irwin on that one. Julie Andrews is excruciating on that album, BUT I bet Zoe will like it. Can't say for sure, but that's my guess. | |
Wed. 2/29/12 5:39pm
i would have liked it too. I'm sure of it. | |
Wed. 2/29/12 5:40pm
Matt from Springfield:
Tom Lehrer: Never Do A Masochism Tango With A Sadist! | |
Wed. 2/29/12 5:41pm
Another Crystals tune was "He Hit Me (And It Felt Like a Kiss)". Probably also Spector-produced. | |
Wed. 2/29/12 5:43pm
"Oooh, now you've got ME sayin' it!" | |
Wed. 2/29/12 5:43pm
Matt from Springfield:
Wow, rrg is not kidding! "He Hit Me, Then He Fired A Gun Above My Head" | |
Wed. 2/29/12 5:49pm
@MfS, so you haven't heard that terrifying, creepy, catchy song? One DJ played it just a few days ago, perhaps to spur pledges for yet another copy of the Phil Spector box set prize, IIRC. | |
Wed. 2/29/12 5:49pm
Not as good as Francois Hardy's version, but decent. http://www.youtube.com/watch?v=unzmw94Ju4o | |
Wed. 2/29/12 5:50pm
Matt from Springfield:
@Bryce: Whatevs. | |
Wed. 2/29/12 5:52pm
William in St. Louis:
Hey, we really aren't Miss-oor-ah...I don't know why some people insist on saying that, it is like one of those "warshing machine" things, I guess. Big ups to WFMU! | |
Wed. 2/29/12 5:52pm
Matt from Springfield:
@Ike: No I didn't! Who played that--that's interesting, but so FMU (probably only FMU..) Apparently Gerry Goffin and Carole King wrote that in response to Little Eva (their babysitter) and her abusive boyfriend. She said she stayed because she felt love when he hit her. | |
Wed. 2/29/12 5:52pm
Brass Knuckles:
Play some more Amanda. That should get even people who aren't normally fans of the show to donate in droves. | |
Wed. 2/29/12 5:53pm
Matt from Springfield:
OH WOW, James Canupp! Evangelizing to dogs with his supersonic tone! | |
Wed. 2/29/12 5:54pm
holy. crap. !! | |
Wed. 2/29/12 5:54pm
other david:
oh my... | |
Wed. 2/29/12 5:54pm
We're still here! | |
Wed. 2/29/12 5:55pm
Matt from Springfield:
Hey Brass Knuckles, heard you're in Brooklyn from a pledge? That makes you "BK from BK"! And, I so agree about Amanda! The uniqueness and power of Amanda is kind of what kept me tuning back into Irwin's show when I first listened to FMU. | |
Wed. 2/29/12 5:55pm
That is what Mansquito would sound like. | |
Wed. 2/29/12 5:56pm
Matt from Springfield:
@rrg: We're still here, *miraculously* :) Greetings hamburger and OD! The other side of the pond is making their way in! | |
Wed. 2/29/12 5:56pm
We did our best. Leave us alone, already. | |
Wed. 2/29/12 5:56pm
@Matt from Springfield: I've heard the song recently played on a satellite radio station that plays a lot of girl groups. | |
Wed. 2/29/12 5:58pm
I'm so on the fence about getting Irwin's premium. For it: some of the tracks, especially little Björk. Against it: the other tracks. Hmm... | |
Wed. 2/29/12 5:58pm
Matt from Springfield:
@hopey: The Shangri-Las, "Past Present and Future". They said it's not about abuse, but about the "angsty" mood of a teenage girl. But the tone of that one is so morbid, and the lyrics kind of disturbing. | |
Wed. 2/29/12 5:58pm
@hopey: what satellite radio station is that? | |
Wed. 2/29/12 5:59pm
G'night, all. | |
Wed. 2/29/12 6:00pm
Matt from Springfield:
Thanks Irwin and Bethany! Only FMU Marathons are so fun! | |
Wed. 2/29/12 6:00pm
Brass Knuckles:
Yo, Matt. There's also a BK near me. BK BK BK | |
RSS feeds for Irwin Chusid: Playlists feed | MP3 archives feed
| E-mail Irwin | Other WFMU Playlists | All artists played by Irwin Chusid |


text:
Tag Archives: Wellness Sanctuary
At the Laluna Table: Sustainable Eating
January 14, 2015At Laluna, we pride ourselves on providing our guests with delicious, quality foods. Keeping with our Italian-Caribbean blend, we do import key ingredients, such as pasta, wine, and Parmesan, from Italy; however, many others are obtained locally and sustainably. How do we do it? Staying in-season In Grenada, there is … Read More
Spring Cleaning for Mind, Body, and Soul in Grenada
April 30, 2014When it comes to spring cleaning, many people think about only about decluttering their home, and forget about the most important thing: themselves. At Laluna, we believe it to be important to take time for yourself and spring clean your mind, body, and soul. There are a number of ways … Read More
Laluna's "TLC Renovations"
August 7, 2013Laluna will soon be closing for just over a month to put the finishing touches on the resort's planned transformation. From September 23rd to October 27th, 2013, the resort will be undergoing a variety of changes to improve the guest experience. To begin with, we are adding a new fitness … Read More


text:
for some reason, I've been dreading the whole "routes" thing after going over the tutorial. Have developed a hand full of web pages with some success, but sticking with the actions that rails provide... Now I need to branch out and invoke new actions. I know I need to spend time reading all about routes, but I did want one new action to work ....
I have a typical user mode/controller/views and all I have in my routes file pertaining to users is
resources :users
Now I want to add a link on one of the users page that allows him to perform a search on records of another model. I tried the following link_to with no avail.
<%= link_to "Show all tasks", :controller => "users", :action => "search_all" %>
My intent is to provide a link button, and when clicked have my search_all action in my user controller to be invoked. I know I need to update my routes.rb....
Can someone provide me with the changes I need to make?


text:
One plus one equals delicious! Chocolate and peanut butter are a perfect match in these classic cookies. MORE + LESS -
For Zebra Cookies on Safari, use striped milk and white chocolate candies. The peanut butter cookie base creates the desert sand.
© 2017 ®/TM General Mills All Rights Reserved