text:
Within weeks of the December 1941 attack on Pearl Harbor and America's official entry into the Second World War, Allied forces in Europe activated the now-legendary VIII Bomber Command (often referred to as the Eighth Air Force) to serve as the principal American force to attack Germany from the air. Often in tandem with planes from the Royal Air Force, American B-24s and B-17s — or Flying Fortresses — from the "The Mighty 8th" would spend the next several years bombing strategic towns and cities in Nazi-held Europe.
As a jumping off point for countless bombing runs, including many in broad daylight, the United States Army Air Forces (the predecessor of the U.S. Air Force) set up bases in England during the war.


text:
_Stub file in the client's
thought it could be downloaded.
java.lang.ClassMismatchError while running my
ArrayStoreException. What's going
ClassNotFoundException for my stub class when I try to
register a remote object in the registry. What's
Naming.bind and
Naming.lookup take an extraordinarily long time on
java.net.SocketException: Address already in use"
when I try to run the registry?
System.exit for graceful client termination?
method doesn't get called until ten minutes after I have stopped
using the remote object! How can I shorten this delay?
command in a DOS batch file?
select() call. Is the registry implemented by
Serializable in order to be written to an
ObjectInputStream from an
ObjectOutputStream without a file in between?
writeObject method and receive it
using the
readObject method. If I then change the
value of a field in the object and send it as before, the object
that the
readObject method returns appears to be the
same as the first object and does not reflect the new value of the
field. Should I be experiencing this behavior?
Serializable but a subclass B implements
Serializable, will the fields of class A be serialized
when B is serialized?
Even if the server is mistaken about its hostname or IP address (or has a hostname that simply isn't resolvable by clients), it will still export all of its objects using that mistaken hostname, but you will see an exception every time you try to receive one of those objects.
The hostname which you specified in
to locate the registry has no effect on the hostname which is
already embedded in the remote reference to the server.
Usually, the mysterious hostname is the unqualified hostname of the server, or a private name unknown to the client's nameservice, or (in the case of Windows platforms) the server's Network->Identification->Machine Name.
The appropriate workaround is to set the system property
java.rmi.server.hostname when starting the server. The
value of the property should be the externally reachable hostname
(or IP address) of the server -- whatever works when specified as
the host-part in
Naming.lookup is good enough.
For more detail, see the questions on callbacks and fully qualified domain names.
_Stub file in the client's
thought it could be downloaded.
java.rmi.server.codebase property, which indicates the
location from where the stub class can be loaded. You should set
java.rmi.server.codebase property on the server
exporting a remote object. While remote clients could set this
property, they would then be limited to only getting remote objects
from the specified codebase. You should not assume that any client
VM will have specified a codebase that resolves to the location of
your object.
When a remote object is marshalled by Java RMI (whether as an
argument to a remote call or as a return value), the codebase for
the stub class is retrieved by Java RMI and used to annotate the
serialized stub. When the stub is unmarshalled, the codebase is
used to load the stub classfile using the
RMIClassLoader, unless the class can already
be found in the
CLASSPATH or by the context
classloader for the receiving object, such as an applet
If the
_Stub class was loaded by an
RMIClassLoader, then Java RMI already knows which
codebase to use for its annotation. If the
_Stub class
was loaded from the
CLASSPATH, then there is no
obvious codebase, and Java RMI consults the
java.rmi.server.codebase system property to find the
codebase. If the system property is not set, then the stub is
marshalled with a null codebase, which means that it cannot be used
unless the client has a matching copy of the
classfile in the client's
It is easy to forget to specify the codebase property. One way
to detect this error is to start the
separately and without access to the application classes. This will
Naming.rebind to fail if the codebase is
For more information on the
java.rmi.server.codebase property, please take a look
at our tutorial, Dynamic code
downloading using Java RMI (Using the
java.rmi.server.codebase Property).
No. You can set your
java.rmi.server.codebase property
to use any valid URL protocol, such as
file or
ftp. Using an HTTP server just makes your life simpler
by providing an automated mechanism for class file downloading.
java.rmi.server.codebase property has
not been set (or has not been set correctly) on a VM that is
exporting your remote object(s). Please take a look at our
tutorial, Dynamic code downloading using
Java RMI (Using the
equals methods appropriately. If the client socket
factory does not implement these methods correctly, another
ramification is that stubs (using the client socket factory) that
refer to the same remote object will not be equal.
The Java RMI implementation attempts to reuse server-side ports
as well. It will only do so if there is an existing server socket
for the port created by an equivalent socket factory. Make sure the
server socket factory class implements the
equals methods too.
If your socket factory has no instance state, a trivial
implementation of the
hashCode and
methods are the following:
public int hashCode() { return 57; } public boolean equals(Object o) { return this.getClass() == o.getClass() }
javaw command throws away output to
stdout and
stderr, so for debugging
purposes it is better to run the
java command in a
separate window so that you can see reported errors. To do this,
execute a command like the following:
start java EchoImpl
It is advised not to use the
javaw command during
development. To watch the server activity, start the server with
java.lang.ClassMismatchError while running my
java.rmi.registry.RegistryImpl). This should clear
things up.
ArrayStoreException. What's
going on?
FooRemote[] f = new FooRemote[10]; for (int i = 0; i < f.length; i++) { f[i] = new FooRemoteImpl(); }
Now Java RMI can put the stub into each cell of the array without an exception on the remote call.
Distributed objects behave differently than local objects. If you simply reuse a local implementation without handling locking and failure, you will probably get unpredictable results.
ClassNotFoundException for my stub class when I try to
register a remote object in the registry. What's
When you make a call to the registry to bind an object, the
registry actually binds a reference to the stub for the remote
object. In order to instantiate a stub object, the registry VM
needs to be able to load its class definition. The VM (in this case
the server VM) that sends the serialized forms of a stub in a
remote method call to the registry is responsible for annotating
the stub with the location from which its classes can be
downloaded. If stubs are not annotated properly, Java RMI will
throw a
ClassNotFoundException when it tries to
instantiate the stub.
To annotate classes properly, the server needs to set the value
of the
java.rmi.server.codebase property value to the
location(s) of the stub classes. Java RMI will automatically
annotate the serialized form of outgoing object instances with the
value of the
java.rmi.server.codebase property.
NOTE: It is possible (and in a small number of environments appropriate) to enable the rmiregistry to unmarshal stub objects by placing all relevant stub class files in the CLASSPATH of the rmiregistry. However, the rmiregistry does not have to download stub classes. If stub classes are available locally, it will use those classes. Using the rmiregistry's CLASSPATH for stub deployment requires that all VMs that reference a stub instance obtained from that registry have the stub's class file installed locally (in the VM's CLASSPATH).
For example, if the registry loads stub classes from its
CLASSPATH, when the registry sends serialized stub objects to other
VMs, those serialized objects will be annotated with the value of
the registry's
java.rmi.server.codebase property
(which will almost always be null). If the VMs receiving serialized
stub objects from the registry do not have the class files for
those stubs installed locally then those VMs are likely to throw a
Instead, if classes are downloaded dynamically from a server
java.rmi.server.codebase annotation, only the
server VM needs to have the stub classes in its CLASSPATH.
With this approach, application deployment is simpler and it is
possible to introduce new stub versions into a running distributed
For more information on dynamic code downloading in Java RMI,
please see the tutorial, Dynamic code
downloading using Java RMI (Using the
java -Djava.rmi.server.logCalls=true YourServerImplwhere
YourServerImpl is the name of your server. If
your server has hung, you can get a monitor dump and thread dump by
doing a ctrl-\ on the Solaris Operating System
(Solaris OS) and a ctrl-break on Windows platforms.
java.rmi." are elements of the public
specification and are documented in the Java RMI
Properties that begin with
sun.rmi." are only supported by certain
versions of the JDK. While these "
properties can be quite useful for debugging and tuning at runtime,
please note that they are not considered part of the public API,
and their use is subject to change (or may be removed completely)
in future versions of the implementation.
For an Java RMI client to contact a remote Java RMI server, the
client must first hold a reference to the server. The
Naming.lookup method call is the most common mechanism
by which clients initially obtain references to remote servers.
Remote references may be obtained by other means, for example: all
remote method calls can return remote references. This is what
Naming.lookup does; it uses a well-known stub to make
a remote method call to the
rmiregistry, which sends
back the remote reference to the object requested by the
lookup method.
Every remote reference contains a server hostname and port number that allow clients to locate the VM that is serving a particular remote object. Once a Java RMI client has a remote reference, the client will use the hostname and port provided in the reference to open a socket connection to the remote server.
Please note that with Java RMI the terms client and server can refer to the same program. A Java program that acts as a Java RMI server contains an exported remote object. A Java RMI client is a program that invokes one or more methods on a remote object in another virtual machine. If a VM performs both of these functions, it may be referred to as an RMI client and a Java RMI server.
Java RMI may default to using an unresolvable server hostname (for
example: unqualified names, Windows Internet Naming Service (WINS)
names, or unqualified DHCP names). When a Java RMI client invokes a
remote method using a reference that contains an unresolvable
server hostname, the client will throw an
In order to generate functional remote references, Java RMI
servers must be able to supply a fully qualified hostname or IP
address that is resolvable from all Java RMI clients (an example of
a fully qualified hostname is foo.bar.com). If a Java
RMI program provides a remote callback operation, then that program
serves a Java RMI object and consequently, must be able to
determine a resolvable hostname to use as its server hostname in
the remote references it passes to Java RMI clients. VMs that make
calls to applets that serve remote objects may throw
UnknownHostExceptions because the applet has failed to
provide a usable server hostname.
If your Java RMI application throws an
UnknownHostException, you can look at the resulting
stack trace to see if the hostname that the client is using to
contact its remote server is incorrect or not fully qualified. If
necessary, you can set the
property on the server to the correct IP address or hostname of the
server machine and Java RMI will use this property's value to
generate remote references to the server.
java.rmi.server.hostname property to the
correct IP address of the Java RMI server machine. You can also
specify that your server use a fully qualified hostname obtained
from a name service by setting the property:
Java RMI will use an IP address or a fully qualified domain name to identify a machine that serves a remote object. Server hostnames are initialized to the value obtained by performing the following actions:
java.rmi.server.hostname is set,
Java RMI will use its value as the server hostname, and will not
attempt to find a fully qualified domain name through any other
method. This property takes precedence over all other means of
finding a Java RMI server name.
is set to
true (by default, the value of this property
false), Java RMI applies the following routine to
obtain a hostname for the Java RMI server:
InetAddress.getLocalHost().getHostName() method
contains a "." character, then Java RMI will assume that this value
is the server's fully qualified domain name and will use it as the
server hostname.
java -Dsun.rmi.transport.tcp.localHostnameTimeOut=2000 MyServerApp
java.rmi.server.useLocalHostname property to
true. In general, hostnames are more stable than IP
addresses. Activatable remote objects tend to last longer than
transient remote objects (for example, surviving a reboot). A
Java RMI client will be more likely to locate a remote object over
a long period of time if it uses a qualified hostname rather than
an explicit IP address.
Naming.lookup take an extraordinarily long time on
Windows platforms?
java.net.InetAddress, which will cause TCP/IP host
name lookups - both host to address mapping and address to hostname
mapping (the
InetAddress class does this for security
reasons). On Windows platforms, the lookup functions are performed
by the native socket library, so the delays are happening not in
Java RMI, but in the libraries. If your host is set up to use DNS,
then it is usually a problem with the DNS server not knowing about
the hosts involved in communication, and what you are experiencing
are DNS lookup timeouts. Try specifying all the involved
hostnames/addresses in the local file
\winnt\system32\drivers\etc\hosts or
\windows\hosts. The format of a typical host file is:
IPAddress Machine Namee.g.:
192.0.2.61 homerThis should dramatically cut down the time it takes to make the first lookup.
192.168.1.1). You should then find that from a
DOS Shell, you can ping yourself (for example, ping
mymachine). You should now be able to use Java RMI on
the machine.
java.net.SocketException: Address already in
use" when I try to run the registry?
RegistryImpl uses (by default 1099) is already in use.
You may have another registry running on your machine and will need
to stop it.
If Java RMI fails to make a normal (or SOCKS) connection to the intended server, and it notices that a HTTP proxy server is configured, it will attempt to tunnel Java RMI requests through that proxy server, one at a time.
There are two forms of HTTP tunnelling, tried in order. The first is http-to-port; the second is http-to-cgi.
In http-to-port tunneling, Java RMI attempts a HTTP POST request
to a
http: URL directed at the exact hostname and port
number of the target server. The HTTP request contains a single
Java RMI request. If the HTTP proxy accepts this URL, it will
forward the POST request to the listening Java RMI server, which
will recognize the request and unwrap it. The result of the call is
wrapped in a HTTP reply, which is returned through the same
Often, HTTP proxies will refuse to proxy requests to unusual
port numbers. In this case, Java RMI will fall back to http-to-cgi
tunneling. The Java RMI request is encapsulated in a HTTP POST
request as before, but the request URL is of the form
(where hostname and n are the hostname and port
number of the intended server). There must be a HTTP server
listening on port 80 on the server host, which will run the
java-rmi.cgi script (supplied with the JDK), which
will in turn forward the request to a Java RMI server listening on
port n. Java RMI can unwrap a HTTP-tunneled request
without help from a http server, CGI script, or any other external
entity. So, if the client's HTTP proxy can connect directly to the
server's port, then you don't need a
script at all.
To trigger the use of HTTP tunneling, the standard system
http.proxyHost must be set to the hostname of
the local HTTP proxy. (There are reports that some Navigator
versions do not set this property.)
The major disadvantage of HTTP tunneling is that it does not permit inward calls or multiplexed connections. A secondary disadvantage is that the http-to-cgi method opens a dramatic security hole on the server side, since without modification it will redirect any incoming request to any port.
socksProxyHost must have been set to the hostname of
the SOCKS server; if the port number of the SOCKS server is not
1080, it must be specified in the
This approach would appear to be the most generally useful
solution. As yet,
ServerSockets do not use SOCKS, so
incoming calls must use another mechanism.
The disadvantage of this approach is that the traversal of the firewall must be done by code provided by the Java RMI server side, which does not necessarily know how that traversal must be done, nor does it automatically have sufficient privilege to traverse the firewall.
If the exported objects are all exported on a known port on a known
host, then that host and port can be explicitly permitted at the
firewall. Normally, Java RMI asks for port 0 (which is code for
"any port"). In the JDK, there is an extra argument to the
exportObject method to specify the exact port number.
This approach has the disadvantage that it requires the assistance of the network administrator responsible for the local firewall. If the exported object is being run in a different location (because code was downloaded to that site), then the local firewall may be run by network administrators who don't know who you are.
The idea here is to export objects in such a way that anyone outside the firewall who wants to call remote methods on that object instead contacts a different port (perhaps on a different machine). That different port has a running program which makes a second connection to the real server and then pumps bytes each way.
The tricky part is convincing the client to connect to the
bridge. A downloadable socket factory can do
this efficiently; otherwise, it is possible to set the
java.rmi.server.hostname property to name the bridge
host and arrange for port numbers to be the same.
When an outsider makes a call on the proxy, the proxy immediately forwards the call to its original object on the internal server. The use of the proxy is transparent to the outsider (but not to the internal server, who has to decide whether to pass the original reference or the proxy reference when talking to anyone).
Needless to say, this requires considerable setup and the cooperation of the local network administrators.
In the most pessimistic case, the client-side firewall allows
no direct TCP connections and has only a HTTP proxy server
so that firewalled clients can "surf the web". In this case, your
server host will receive connections at port 80 containing Java RMI
requests embedded in HTTP requests. You can use a HTTP server with
java-rmi.cgi program, or you can run the Java RMI
server directly on port 80. Either way, the server cannot use
callback objects exported by the clients..
A more optimistic case is that the client can make direct connections to the server but cannot receive incoming connections from the server. In this case, callback objects are not normally possible either.
The most conservative approach, assuming no help from the client firewall administrators, is:
java-rmi.cgi script; or
DeleGate) on port
80, which will accept connections and immediately connect to the
real server port to pass bytes back and forth. This will cause
getClientHost() to return misleading information, so
don't make the Registry available through this method unless it's
on a different host.
java-rmi.cgi script that comes with the JDK
distribution with a servlet?
java-rmi.cgi script using a
servlet. The example also explains how to run a remote object
inside a servlet VM.
Note: If you do not understand the role that
java-rmi.cgi plays in tunnelling remote method calls
over HTTP, please see the FAQ question regarding HTTP tunnelling in Java RMI.
interface (in addition to any other necessary interfaces). Java RMI
will provide the notification by calling the
unreferenced method when all clients disconnect. Your
implementation of the
unreferenced method will
determine what action your remote object should take upon receiving
such a notification. However, if there is a reference in the
registry, then the
Unreferenced.unreferenced method
will never be called.
Although the Java API does not specify the timeliness of collection anyway, there is a particular reason for the what can seem like indefinitely delayed collection of remote objects. Under the covers, the Java RMI runtime holds a weak reference to exported remote objects in a table (to keep track of local as well as remote references to the object). The only weak reference mechanism available in the JDK VM uses a non-aggressive, caching collection policy (well-suited for a browser), so objects that are only "weakly reachable" will not get collected until the local GC decides that it really needs that memory to satisfy another allocation. For an idle server, this could never happen. But if memory is needed, an unreferenced server object will be collected.
The Java SE platform includes a new infrastructure that Java RMI will use to reduce significantly the number of conditions under which this problem occurs.
System.exit for graceful client
System.exit() is considered abnormal termination,
because it does not allow the RMI runtime to send the appropriate
"unreferenced" messages to the server. Executing
System.runFinalizersOnExit in the client before
termination is not sufficient, because not all of the necessary
processing is handled in a finalizer; i.e. the "unreferenced"
message will not get sent to the server. (Using
"runFinalizersOnExit" is generally ill-advised and deadlock-prone
If you need to use
System.exit() to terminate a
client VM, to ensure that remote references held in that VM are
cleaned up in a more timely fashion, you should make sure that
there are no remote references still reachable. Explicitly null any
local references to make them unreachable from running threads. It
also may help to run a full garbage collection and to run
finalizers before exiting:
System.gc(); System.runFinalization();
unreferenced() method will then be called by the Java
RMI implementation (remember that the registry is also a client for
this purpose, since it holds references for all its bindings).
If a client is holding a remote reference, it also holds a lease
for that reference, which must be renewed (by contacting the server
and making a
dirty() call). When the final lease for
an exported object has expired or closed, the object is considered
unreferenced, and (if it implements
java.rmi.Unreferenced) its
method will be invoked.
If two or more clients have references to the same remote
object, the
unreferenced() method will not be called
until all of them have expired their leases on it. Consequently, if
you are using this technique to track individual clients, each
client must have a reference to its own
unreferenced() method doesn't get called until ten
minutes after I have stopped using the remote object! How can I
shorten this delay?
java.rmi.dgc.leaseValue, whose value is in
milliseconds. To set this to a shorter time (for example: 30
seconds), start the server like this:
java -Djava.rmi.dgc.leaseValue=30000 ServerMain
The default value is 600000 milliseconds (or 10 minutes).
The client will renew each lease when it is halfway expired. If the lease interval is too short, the client will waste a lot of network bandwidth needlessly renewing its lease. If the lease interval is much too short, the client will be unable to renew the lease in time, and the exported object may be deleted as a result.
Future releases of Java RMI may invalidate remote references if they fail to renew their leases (in order to preserve referential integrity); you should not rely on being able to use stale references to remote objects.
Note that you'll only have to wait for the timeout if the client
machine crashes. If the client has some control when the disconnect
occurs, it can send out the DGC clean call quickly, making the use
Unreferenced quite timely. You can help this
process along by nulling out any references the client may have to
the remote object and then calling
If or when the crashed client later restarts and contacts the server, the server can infer that the client has lost its state. If a TCP connection is held open between the client and the server throughout their interaction, then the server can detect the client reboot when a later attempt to write to the connection fails (including the hourly TCP keepalive packet, if enabled). However, Java RMI is designed not to require such permanent connections, as it impairs scalability and doesn't help very much.
Given that it is absolutely impossible to instantly determine when a network peer crashes or becomes otherwise unavailable, you must decide how your application should behave when a peer stops responding.
The major tools you have for this task are timeouts and resets. After a timeout, you may conclude that a peer is unreachable, but the peer must be aware of the timeout so that it gives up trying to reach you. The leasing mechanism is designed to do this semi-automatically.
A reset is a purge of existing state held for a peer. For example, a client may cause a reset when it first registers with its server, causing the server to discard any previous state held for that client (having deduced that the client has restarted without memory of the previous, dead, session).
Frequently, the aim is to have and maintain a definitive list of clients at the server, and to keep it up-to-date without error or failure. Since failure and delay can happen at any time in a networked system, some degree of error in the list must be anticipated. If a lease or other mechanism is used to enforce a timeout, then the problem of resource leakage is solved. If the problem of stale data is more serious -- that is, if it would interfere with correct operation -- then it must be explicitly purged in cases where it would otherwise have an effect.
For example, if a business object is locked for editing by a human, and the session dies, then the lock must be broken somehow. In this case, the lock would need a timeout, but if the same human logs in immediately and expects not to have to wait for the timeout to expire, the new session must either take over the lock or assert that the user holds no locks (allowing the server to safely kill the lock).
rmic command in a DOS batch file?
call before the executable in order for control to
return to the batch file. For example:
call rmic ClientHandler call rmic Server call rmic ServerHandler call rmic Client
java.rmi.server.RemoteServer.getClientHost method
returns the client host for the current invocation on the current
So, you cannot pass a remote object reference from a server to a client, and then send it back to the server and be able to cast it back to the original implementation class. You can, though, use the remote object reference on the server to make a remote call to the object.
If you need to find the implementation class again, you'll need to keep a table that maps the remote reference to the implementation class.
java.util.Observable and
java.util.Observer with new interfaces (you could call
RemoteObservable and
RemoteObserver). In these new interfaces, make each of
the methods throw
java.rmi.RemoteException. Then, your
remote objects can implement these interfaces.
Note that since the "wrapped" non-remote object does not extend
java.rmi.server.UnicastRemoteObject, you will need to
explicitly export the object using the
method of
UnicastRemoteObject. In doing this though,
you lose the
implementations of the
toString methods.
rmiregistry on the specified host. In general, a
new connection may or may not be created for a remote call.
Connections are cached by the Java RMI transport for future use, so
if a connection is free to the right destination for a remote call,
then it is used. A client cannot explicitly close a connection to a
server, since connections are managed at the Java RMI transport
level. Connections will time out if they are unused for a period of
select() call. Is the registry
implemented by polling?
LocateRegistry.getRegistry(String host)
does not contact the registry on the host, but rather just looks up
the host to make sure it exists. So, even though this method
succeeded, this does not necessarily mean that a registry is
running on the specified host. It just returns a stub that can then
access the registry.
Serializable in order to be written to an
java.io.Serializable interface was not made lightly.
The design called for a balance between the needs of developers and
the needs of the system to be able to provide a predictable and
safe mechanism. The most difficult design constraint to satisfy was
the safety and security of classes for the Java programming
If classes were to be marked as being serializable the design
team worried that a developer, either out of forgetfulness,
laziness, or ignorance might not declare a class as being
Serializable and then make that class useless for RMI
or for purposes of persistence. We worried that the requirement
would place on a developer the burden of knowing how a class was to
be used by others in the future, an essentially unknowable
condition. Indeed, our preliminary design, as reflected in the
alpha API, concluded that the default case for a class ought to be
that the objects in the class be serializable. We changed our
design only after considerations of security and correctness
convinced us that the default had to be that an object not be
No such restriction can be made on an object once it has been serialized; the stream of bytes that is the result of object serialization can be read and altered by any object that has access to that stream. This allows any object access to the state of a serialized object, which can violate the privacy guarantees users of the language expect. Further, the bytes in the stream can be altered in arbitrary ways, allowing the reconstruction of an object that was never created within the protections of a Java platform. There are cases in which the re-creation of such an object could compromise not only the privacy guarantees expected by users of the Java platform, but the integrity of the platform itself.
These violations cannot be guarded against, since the whole idea of serialization is to allow an object to be converted into a form that can be moved outside of the Java platform (and therefore outside of the privacy and integrity guarantees of that environment) and then be brought back into the environment. Requiring objects to be declared serializable does mean that the class designer must make an active decision to allow the possibility of such a breach in privacy or integrity. A developer who does not know about serialization should not be open to compromise because of this lack of knowledge. In addition, we would hope that the developer who declares a class to be serializable does so after some thought about the possible consequences of that declaration.
Note that this sort of security problem is not one that can be dealt with by the mechanism of a security manager. Since serialization is intended to allow the transport of an object from one virtual machine to some other (either over space, as it is used in RMI, or over time, as when the stream is saved to a file), the mechanisms used for security need to be independent of the runtime environment of any particular virtual machine. We wanted to avoid as much as possible the problem of being able to serialize an object in one virtual machine and not being able to deserialize that object in some other virtual machine. Since the security manager is part of the runtime environment, using the security manager for serialization would have violated this requirement.
Examples are easy to cite. Many classes deal with information
that only makes sense in the context of the runtime in which the
particular object exists; examples of such information include file
handles, open socket connections, security information, etc. Such
data can be dealt with easily by simply declaring the fields as
transient, but such a declaration is only necessary if
the object is going to be serialized. A novice (or forgetful, or
hurried) programmer might neglect to mark fields as
transient in much the same way he or she might neglect
to mark the class as implementing the
interface. Such a case should not lead to incorrect behavior; the
way to avoid this is to not serialize objects not marked as
Another example of this sort is the "simple" object that is the root of a graph that spans a large number of objects. Serializing such an object could result in serializing lots of others, since serialization works over an entire graph. Doing something like this should be a conscious decision, not one that happens by default.
The need for this sort of thought was brought home to us in the
group when we were going through the base Java API class libraries,
marking the system classes as serializable (where appropriate). We
had originally thought that this would be a fairly simple process,
and that most of the system classes could just be marked as
Serializable and then use the default
implementation with no other changes. What we found was that this
was far less often the case than we had suspected. In a large
number of the classes, careful thought had to be given to whether
or not a field should be marked as
transient or
whether it made sense to serialize the class at all.
Of course, there is no way to guarantee that a programmer or
class designer is actually going to think about these issues when
marking a class as serializable. However, by requiring the class to
declare itself as implementing the
interface we do require that some thought be given by the
programmer. Having serialization be the default state of an object
would mean that lack of thought could cause bad effects in a
program, something that the overall design of the Java platform has
attempted to avoid.
javadoc tool.
As a work around, you should first remove the top-level widget
from its container (so the widgets are no longer "live"). The peers
are discarded at this point and you will save only the AWT widget
state. When you later deserialize and read the widgets back in, add
the top level widget to the frame to make the AWT widgets appear.
You may need to add a
show call.
AWT widgets are serializable. The
java.awt.Component class implements
RMI's use of serialization leaves encryption and decryption to the lower network transport. We expect that when a secure channel is needed the network connections will be made using SSL or the like (see Using RMI with SSL).
You can use
ByteArrayInputStream and
ByteArrayOutputStream objects as intermediate places
to write and read bytes to and from the random access file and
ObjectInputStreams and
ObjectOutputStreams from the byte streams to transport
the objects. You just have to make sure that you have the entire
object in the byte stream or reading/writing the object will
For example,
java.io.ByteArrayOutputStream can be
used to receive the bytes of
ObjectOutputStream. From
it you can get a result in the form of a byte array. That in turn
can be used with
ByteArrayInputStream as input to an
ObjectInput stream.
ObjectOutputStream, but the object's class may
need to be loaded by the receiver if the class is not already
available locally. The class files themselves are not serialized,
just the names of the classes. All classes must be able to be
loaded during deserialization using the normal class loading
mechanisms. For applets, this means they are loaded by the
There are no coherency guarantees for local objects passed to a remote VM since such objects are passed by copying their contents (a true pass-by-value).
ObjectInputStream from an
ObjectOutputStream without a file in between?
ObjectOutputStream and
work to/from any stream object. You could use a
ByteArrayOutputStream and then get the array and
insert it into a
ByteArrayInputStream. You could also
use the piped stream classes as well. Any
class that extends the
OutputStream and
InputStream classes can be used.
method and receive it using the
readObject method. If
I then change the value of a field in the object and send it as
before, the object that the
readObject method returns
appears to be the same as the first object and does not reflect the
new value of the field. Should I be experiencing this
ObjectOutputStream class keeps track of each
object it serializes and sends only the handle if that object is
seen again. This is the way it deals with graphs of objects. The
ObjectInputStream keeps track of all of
the objects it has created and their handles so when the handle is
seen again it can return the same object. Both output and input
streams keep this state until they are freed.
Alternatively, the
ObjectOutputStream class
implements a
reset method that discards the memory of
having sent an object, so sending an object again will make a
The difficulty with threads is that they have so much state which is intricately tied into the virtual machine that it is difficult or impossible to re-establish the context somewhere else. For example, saving the VM call stack is insufficient because if there were native methods that had called C procedures that in turn called code for the Java platform, there would be an incredible mix of Java programming language constructs and C pointers to deal with. Also, serializing the stack would imply serializing any object reachable from any stack variable.
If a thread were resumed in the same VM, it would be sharing a lot of state with the original thread, and would therefore fail in unpredictable ways if both threads were running at once, just like two C threads trying to share a stack. When deserialized in a separate VM, it's hard to tell what might happen.
ObjectOutputStream to serialize each object.
ObjectOutputStream produces an
OutputStream; if your zip object extends the
OutputStream class there is no problem compressing it.
Here's a brief example that shows how to serialize a tree of objects.
import java.io.*; class tree implements java.io.Serializable { public tree left; public tree right; public int id; public int level; private static int count = 0; public tree(int depth) { id = count++; level = depth; if (depth > 0) { left = new tree(depth-1); right = new tree(depth-1); } } public void print(int levels) { for (int i = 0; i < level; i++) System.out.print(" "); System.out.println("node " + id); if (level <= levels && left != null) left.print(levels); if (level <= levels && right != null) right.print(levels); } public static void main (String argv[]) { try { /* Create a file to write the serialized tree to. */ FileOutputStream ostream = new FileOutputStream("tree.tmp"); /* Create the output stream */ ObjectOutputStream p = new ObjectOutputStream(ostream); /* Create a tree with three levels. */ tree base = new tree(3); p.writeObject(base); // Write the tree to the stream. p.flush(); ostream.close(); // close the file. /* Open the file and set to read objects from it. */ FileInputStream istream = new FileInputStream("tree.tmp"); ObjectInputStream q = new ObjectInputStream(istream); /* Read a tree object, and all the subtrees */ tree new_tree = (tree)q.readObject(); new_tree.print(3); // Print out the top 3 levels of the tree } catch (Exception ex) { ex.printStackTrace(); } } }
Serializable but a subclass B
Serializable, will the fields of class A be
serialized when B is serialized?
Serializable objects are written
out and restored. The object may be restored only if class A has a
no-arg constructor that will initialize the fields of
non-serializable supertypes. If the subclass has access to the
state of the superclass it can implement
readObject to save and restore that state.

subset: commoncrawl


text:
A good local gem with the Melbourne hipster twist of lattes in green, gold and red (matcha, turmeric and beet red velvet). One to visit and adopt into the regular rotation of breakfast and coffee eateries.
Uncle and Jak
Quick stop here on my way home from an appointment in Carlton. The coffee is good, the matcha latte is good, the service is warm, personal and friendly and the food arrived quickly. Ticks all the boxes. The Uncle Benne I had which was poached eggs atop pulled pork with a harissa hollandaise was small but had punch and zip.
A good local gem with the Melbourne hipster twist of lattes in green, gold and red (matcha, turmeric and beet red velvet). One to visit and adopt into the regular rotation of breakfast and coffee eateries.
About a year ago, Steve and I enjoyed Simon Tarlington's cooking at a private dinner where we were served some wonderful meat...lots of meat. Since then we have always talked about trying Highline but it's taken us a year to get there. It is South of the river after all - ha!
So on Saturday evening we made that journey. We were a little early but were prepared to have a drink at the bar but our table was actually ready. The Railway Hotel and Chapel Street was pumping as expected for a Saturday night and the Highline offered a dark enclave to shelter from the beat of the hipster drum.
We strapped ourselves in for the 8 course farm adventure and wine match and made ourselves comfortable which was easy in the dining space of muted colours and natural soft furnishings; think Australian natives for flowers and rings of wood on the tables.
Service is personable and slick as the courses come out and and delivered to the table. We're never waiting for the wine to catch up with the food or the food to catch up with the wine. It all works seamlessly and enjoyably.
Pea and Ham is served first and the consomme is poured at the table. Clear and dark amber in colour it's salty and delicious and the fresh sweet pea cuts through that umami. Steve and I choose different wine pairings and we try one standard and one premium. Turns out I'm a cheap date as I seem to prefer the standard offerings! In this case it's a really crisp and fresh Willie Smiths Organic Cider from the Huon Valley served delightfully cold. Great start!
Next course was the:
From the clean white dish of panna cotta we moved to the darker dimensions of chocolate:
Good value, plenty of deliciousness and creativity - this is Melbourne at one of its finest and most fun!
Manchester Press
Two tasty breakfasts. I think the chorizo could have been thicker slices or chunks. Service became less attentive as the place filled up but we managed to get a second round of coffee.
Decent laneway breakfast or coffee place. Meals are focused around bagels so if you don't like bagels, there's not much left to choose.
We decided to go main course and dessert given it was later in the evening and a school night! Steve had the duck and I went with the fish. We didn't have to wait too long for a food considering it was busy but I think we arrived at the tail end of evening service. It wasn't the quickest but for freshly cooked food it was probably about right.
The fish dish was one piece of fried and one piece grilled on top of some garlicky rice. Clean flavours, simple ingredients - a good bistro dish on a plate.
Steve's duck was amazingly tasty. The Puy lentils and accompaniments were as expected but the duck itself was just so delicious. This was the standout.
We planned dessert so we were going to have our cake and eat it!
Syracuse is a decent bistro type restaurant that is pretty good value and a nice place for a date or a girly catch up. It may not have the glitz or the glam of some of the other CBD establishments but it has bags of charm joie de vivre!
French cuisine seems to be experiencing a bit of a renaissance here in Melbourne and I love a good French classic. I dined at Philippe on a Monday evening in the company of two fine ladies for a catch up over some good food.
Service is pretty exemplary and a little on the formal side but as refined ladies(!) we don't mind a bit of polite formality. Philippe feels classy and sophisticated and certainly has that je ne sais quoi that makes it tres chic.
I have the steak and it's well cooked and delicious. I feel that the two polenta chips are bland and unnecessary and they look like play food. The real French fries we ordered and share are the real deal.
Shern has the braised beef cheek and declared it good. That's all we need to know!
My choice was the rum baba and it came with pineapple and mango shards. I enjoyed it but the baba itself was a little bit soggy and perhaps over soaked in the rum syrup but it didn't stop me from eating the whole thing!
The oeuf a la neige was apparently a light souffle like way to end things and delicious.
Philippe is all the good things about French cuisine under one classy roof. It's a great classic and you can't go far wrong if it's some ooh la la you're after.
We start of with a smoked mozzarella crochette each. The night before we had a smoked mozzarella spring roll at Ricky and Pinky which went down a treat and had set a high bar. This was different though with a crispy crumb outer and the filling was a soft cheesy paste. Lighter and fresher than the spring roll it was still a treat. I think maybe a fruity chutney might have added another welcome flavour contrast.
We shared a couple of entrees:
And we were able to fit in dessert...or so we thought!
We really enjoyed the warm hospitality and tasty food. Pinotta is a true neighbourhood gem and one that we would love to befriend and become closer to.
The Cut
A girls night out doesn't happen all that often for me. It's always hard to find the time etc. so when a date is in the diary, it has to be a good one! I even dusted off the heels for the occasion so it's a big deal!
It'd been a long time since I caught up with former colleagues and friends, Kim and Penny and we needed a good place to chinwag and let our hair down. Plus Penny is on a post baby diet of clean eating and other requirements which meant a steakhouse was the best option so this was an ideal opportunity to try upmarket The Cut.
We're shown to our table by an immaculately presented hostess. We're impressed by the decor - elegant gentlemen's club type place that you'd find in a London or a New York. It is very manly in style and also in clientele but we soon settle in and make it comfortable for us!
The grilled calamari is less successful as there's not enough grill action so it it's a bit slimy not helped by the mussels. The nduja is pretty fiery and the chilli heat is overpowering. It's a shame as in my mind the nduja would be a great seasoning against the seafood but it's just not quite well balanced enough.
After much distress on our part, our champagne arrives accompanied by a warm apology and a goodwill gesture of taking it off the bill. We feel a little more appeased by this and we drink enthusiastically!
The steak is delicious and cooked the way I like it. The lamb is attractively presented and very rich in pure meat flavour. I find the crust more powder and bit sawdust like and dry in the mouth but the quality of the lamb speaks volumes. I don't think it's big enough for two but it's definitely more than for one. It's cooked on the bone and I was surprised how much bone there was in the pan.
We enjoy our main courses and the night gets better. We skip dessert but carry on drinking with multiple rounds of post dinner drinks. It's a girls night after all! As the restaurant empties, the staff are far more attentive and finally we feel well looked after. We're the last ones standing and we're not made to feel that we have outstayed our welcome. In fact we are encouraged to continue to enjoy our time and we take the advice of the wait staff on our final round of drinks and try some new stuff...confession...can't really remember what the recommendation was but it went down well enough!
We stumble out close to 1am feeling happy, merry and bright. So a slow and less than auspicious start ended on a good note. When I look back on our time at The Cut, I can say it's a decent steakhouse. Some things seem expensive for what it is such as the buttermilk ricotta but other things like the steak and lamb is better value. It's also nice to visit a place that is a little more formal, that warrants the wearing of heels! It seems so obvious to compare The Cut with other premium steakhouse Rockpool. I have to say the food quality, Rockpool remains unsurpassed but in terms of destination and decor, The Cut has made a deep impression.
Ricky and Pinky
I arrived a little bit earlier but the table was ready. It was around 7pm on a Friday and the pub was already busy and tables filled with happy revellers seeing in the weekend.
The rest of the group soon arrived and drinks were ordered and as we perused the menu we ordered some nibbles to aid the decision making.
We were tempted by the banquet menu but ended up ordering a la carte. Plenty of delights to choose from meaning a repeat visit is definitely required to sample more - XO pippies, five spice chicken, drunken chicken. noodle salad, mapo tofu....yum!
We start with two interesting entree dishes:
The spring roll looks pretty standard but the filling is pretty much salty, stretchy smoked mozzarella and it's delicious. It's not exactly Asian but who cares when it tastes good?
I had high hopes for the rice cake as we used to love the version at Golden Fields when it existed. It looked great and the Chinese sausage was cooked perfectly so it was slightly crispy but still chewy. Flavours were good but texture was a bit soggy and it kind of disintegrated. A little more hold and a crispy bottom would make this dish amazing.
The prawns themselves were a touch mushy and overcooked so didn't really showcase them as an ingredient which was a let down.
Ginger sponge was probably the one dessert that didn't exceed expectations. A little denser than it could have been.
We wanted to end the evening on a fortuitous note and no better way than with a fortune cookie and Ricky and Pinky make a XL version. Made fresh to order they're crunchy and crumbly and so not fancy that they're amazingly delicious.
So Ricky and Pinky, you're too cute not to like. Sure, some things aren't perfect and you're pretty rambunctious and noisy but there's also a lot to like and a lot left to try and I like you enough to try again!
Northern Git
Sunday lunch and where better than to have it at home? Or at least somewhere as close to home as possible given we're on the other side of the World! Northern Git transports us back to Northern England and randomly the map on the back of Steve's menu is the exact snippet that has both our Northern home towns depicted on it. What a reminder.
The other reminder is the beer list and the presence of a hand pull which is so rare in Australia and the beer is served in a glass tankard. "A proper pint," as Steve says.
The menu has some classic English dishes but the Australian is ever present too. We starte with:
The black pudding is very flavoursome and as Steve keeps telling me, not packed with oats as a filler. It's a little soft in texture and I like a bit of crispy edge but the crispy shreds of onion help with that.
Chargrilled quail and Pecorino cheese isn't something you'd see in Northern England but it is very tasty. The little bird is well cooked remaining juicy with some tasty char grill, barbecue flavours. The accompanying lentils, greens and Pecorino is a little intense and salty for me but not terribly so.
It's served on a bed of what we think is cauliflower puree and I think he'd prefer potato mash but there aren't many complaints as he chows down. Although the pie is deeply rooted in British culinary heritage, it's a steak, bacon and cheese version which isn't very English and probably more Australian but we are in Australia so we are embracing and I'm just pleased they haven't served me a salad on my plate of Sunday roast. Don't scoff, it happens!
In all, we enjoyed the Northern hospitality. It warmed the cockles of our hearts and provided us with an endearing reminder of home.
Ides opened up officially earlier in the year in the old Lee Ho Fook space after various pop ups. There was a bit of hype surrounding Peter Gunn and his ex Attica pedigree and fuel was added to the fire when Dan Stock wrote a scathing review in The Age, when Ides was three weeks old.
Steve and I had followed the tale of Ides from its beginnings and finally got round to writing our own tale of experience following our own visit.
We were a little early for our table but it was available and we soon settled into the calming slate grey tones of restaurant minimalism. It feels neutral and discreet but with a definite male influence - no soft tones or bright splashes of colour, it's all very muted and understated.
There's also a sense of serious industriousness as some of the dishes are plated up at the bar by Peter and one of his sous chefs. No kitchen histrionics though - it's all very zen and precise.
Some of the earlier concepts of not receiving a menu until after the event and receiving emails with video attachments pre and post meal seem to have fallen by the wayside. I agree with taking the direction away from that sort of novelty gesture and letting it be about the food.
So we are shown drinks menus and a food menu and my aversion to blue cheese which I provided with the booking is raised and acknowledged by the FOH Manager who is clearly a professional and an old hand at this hospitality game.
Sesame Roll with Peanut Butter comes first and that salty butter flavoured with peanut butter is deliciously moreish and goes so well with the warm seeded roll. We are offered bread throughout the meal which can be a sign that quantities of food will be small as was the case with our recent Automata experience in Sydney but not here. It is genuine generosity and I'm glad we declined because it meant we had more room for what was to come.
In spite of the grown up decor of the restaurant there are hidden jokes / plays on the mind that are evident and that is an unexpected delight. I love the flashback to the 70s and Christmas and the soup that is a broth and the ice cream switch. It's classic cooking, classic flavours but creativity abounds.
We ask about how often the menu changes and apparently dishes do rotate off every two weeks or so and records are kept of diners so repeat visits are not repeated adventures. There's a lot of care and consideration taken at Ides and I respect that.
We can't help but compare Ides to a recent dining experience at Automata in Sydney which has two hats to Ides one. It's a similar concept in that it's a fixed 5 - 6 course menu and Ides is more expensive by about $25 but it's so much more satisfying both emotionally and in generosity.
Fine Print
For those that know us, this section will probably come with no surprise! Steve and I love eating out so this is our record of our time in Australia.
August 2017


text:
Andrew T. ROCK
Evolution of the Spine Industry, Past Present and Future: "A behind the Scenes Perspective"
- Mid 80s to early 90s
Lift off and Stage 1 of growth
IPOs and Mergers that almost happened &
Mergers that created Depuy Motech
- Late 90s
The Cage Rage and Rage against the cage
Balloons and Biomaterials delivery
MIS focused companies emerge
- 2000s
Mega Mergers mega growth
Back to the future
- 2010 US Market disruption and adaptation to AHC
- Future of a Mature Spine Market
Steps to successful commercialization in changing global regulatory and financial environment.
Andy Rock serves as a Director on the VHP Board. He is also a member of the Linsly School Board of Trustees and a Chairman of the Development Committee; Mr. Rock earned a reputation as a successful serial entrepreneur in the global medical technology industry. He is co-founder of K2M Group, a medical device developer based in Leesburg, Va., which became listed as a publicly traded company on NASDAQ on May 5, 2014. While at K2M, Mr. Rock developed over 17 utility and method patents for the treatment of complex spine pathologies including scoliosis, tumor and trauma, as well as for minimally invasive implants.
Before his involvement in K2M, Mr. Rock was a member of the executive management team at American Osteomedix, where he co-developed a minimally invasive approach to access and treat osteoporotic compression fractures and tumors in the thoracic spine. From 1993 to 2003, he was Chairman and CEO of Rock Surgical Associates, Inc., a distributor of Orthopedic and Neurosurgical Products in the Mid-Atlantic region. Currently, Mr. Rock is the founder and managing partner of Neuro Spine Ventures LLC, an 82-member global angel investor group.
Mr. Rock is also Co-Founder and Executive Director of DP Enterprises Group Inc., which provides product development and global marketing services for med-tech companies. Mr. Rock also serves on the Board of Directors for several corporations, including Quadrant Biosciences, Inc. which focuses on brain health and epigenetics diagnostics; Minneapolis-based St Teresa Medical Inc., a developer of nanotechnology-based hemostatic and dural sealants; Connecticut based Woven Orthopedics, LLC which specializes in fixation and osteoporotic and osteopenic.
He is on the board of advisors for Indianapolis-based Recovery Force, LLC, and a pioneer in wearable technology for the medical, sports and defense industry sectors Mr. Rock graduated from Linsly and West Virginia University. Following his graduation from Linsly and West Virginia University and prior to launching his medical technology career, Mr. Rock worked in the automotive sector of the Fortune 500 conglomerate Allied Signal.
A resident of Indian Rocks Beach, Florida and New York City, Rock is a wine and classic automobile collector and a motorsports enthusiast who serves as associate sponsor of the Kalitta Motorsports team.


text: Bursting the Bubble Tulips were the first, but they won't be the last. What forms a "bubble" and what causes them to burst? Share | Have A Question About This Topic? Name Email Address Message Thank you! Oops! Related Content Are Alternative Investments Right for You? With alternative investments, it's critical to sort through the complexity. Diversification, Patience, and Consistency Three important factors when it comes to your financial life. 5 Smart Investing Principles Principles that can help create a portfolio designed to pursue investment goals.


text:
Episode 7: Adventures, Arcades, Female Avatars, The Gamer Revolution, and more: http://www.armchairarcade.com/neo/node/3851
From the blog post:
It's the month of love. Nope, we're not sending you valentines and a heart-shaped box of assorted fine chocolates, but you do get a podcast sealed with a kiss! We have a humongous show clocking in at nearly three hours, with special guests Jay Barnson of Rampant Coyote, John Pio of MAMECADE, and Alex Layne of Not Your Mama's Gamer. We're also joined by almost all of the regular AA team, including Bill Loguidice, Christina Loguidice, Mark Vergeer, Rob Daviau, Chris Kennedy, and yours truly, Matt Barton.
Click here to download the show.
Segments and approximate times below:
- Jay Barnson (aka Rampant Coyote) and the fierce green dragon (4:44)
- John Pio (aka MAMECADE) on classic arcade machines (16:00)
- Bill Loguidice's third and final segment on motion gaming (45:15)
- Christina Loguidice on Plants vs. Zombies (1:00:06)
- Alex Layne on Samus Aran (1:08:51)
- Chris Kennedy and the results of AA Favorite Arcade Machine Poll (1:18:26)
- Rob Daviau on the Dreamcast (1:34:12)
- Mark Vergeer on the Commodore 64 (2:10:06)
- Matt Barton on Gerald Celente's Predictions of a Global (Gamer) Revolution


text:
Honourable Wally Oppal Q.C a Canadian lawyer, former judge and provincial politician and Senior Counsel with Boughton Law has been appointed to the Order of British Columbia
1) You were recently appointed to the Order of British Columbia. What does this honour mean to you?
I have been deeply honoured to have been appointed to the Order of British Columbia. I am in the company of some great British Columbians who have been given the honour in the past and the present. As well, I think it's important that persons from the South Asian Community be recognized. There are many people in our community who have done so much more than me, so I feel honoured and privileged to be in their company.
2) How would you describe your journey at Boughton Law?
When my time in the BC Legislature came to an end, I was looking for a way to keep pursuing my passion for law, and pass on my wisdom in the field to the next generation of BC Lawyers. Boughton Law Corp. provided me with that opportunity in spades. Boughton is a firm that does things differently; they have a uniquely West Coast approach. The team works smarter, makes the complex simple, and is driven by its entrepreneurial spirit. Bound by innovation and not tradition, the lawyers at Boughton continue to redefine the way law is practiced in BC.
3) What has been the proudest moment for you in your career?
I don't know if there is one proud moment that I have in my career, but being appointed to the Supreme Court at a young age, and being appointed as the Attorney General were definitely highlights, but perhaps the proudest moment, because of its impact, was when we finished doing the Missing Women Commission on missing and murdered women. It was a very difficult task; it was highly emotional. We dealt with women who had been victims of violence. It had a profound effect on me emotionally and left a permanent impact on me because of the level of violence that was inflicted upon defenseless woman. What made the work we did so valuable was that we were able to start giving marginalized women the right to be heard and the right to air their grievances about how they were treated by the system.
4) As an advocate on violence against women, how has your support provided better legal facilities to abused women?
One of the reasons I left the bench to go into government is so that I could do more work to combat violence against women. When I was in government we put in a lot of resources into assisting women who were victims of violence from their partners. We held forums where we encouraged women to speak out. We did our best to empower more women to speak out against violence.
I have been particularly concerned about the level of violence against women in our own community. We need more support groups, we need more legal assistance, we need more social assistance to women who have been victims of violence. It was a focus on victim of violence that compelled me to get involved in the Bountiful case where men were marrying girls as young as 14. Exploitation of young girls would force us to act and to lay charges of polygamy against some men who live in the community.
5) Despite various measures taken by the city and law enforcement authorities, gang wars and crimes involving youth still take place. As a lawyer and former judge, what is your take on this issue?
The best solution for this is to prevent people from joining gangs in the first place, and for parents to get involved in their children's activities and most of all know what their children are doing. I know that it's not always possible for parents to know what they children are doing. I know that is a real challenge. The real answer to criminal activity is prevention.
6) Marijuana is said to become legalized soon. What impact will this regulation have on the existing drug overdose crisis and drug-related crimes?
Marijuana for recreational use will become legal in Canada in July of this year. Clearly the law was in disrepute because so many people use marijuana while it is illegal and there is considerable evidence to indicate that, in fact, marijuana is less lethal and less harmful than alcohol. In fact, marijuana was legal in Canada until 1923. It was obviously a time to legalize the use of recreational marijuana. I support that decision of the federal government.
7) As the former Minister Responsible for Multiculturalism, how can the province inculcate the practise of multiculturalism among the citizens?
Multiculturalism is a benefit to all Canadians. We have an aging population, a declining birth rate and a need for skilled and even unskilled workers in Canada. We need more immigration, and that often comes from cultures from multicultural nations. Regrettably, as our society becomes more diverse the incidents of racism have increased. There needs to be better enforcement of incidents involving racism.
Multiculturism benefits all of us, because it enriches our country by the diverse cultures that come to Canada. However, it's important to know people from diverse backgrounds do their best to assimilate once they get here. Multiculturalism has been a huge boon to the Canadian mosaic. We are a more enriched country by virtue of multiculturalism.
8) What do you have to say of the achievements of the South Asian community in BC?
The achievements of South Asians in British Columbia have been enormous. All one has to do is attend the Darpan Achievement Awards every fall and one will quickly recognize what we as a culture have done, we as a community have done in this province and in this country. South Asians have excelled in business, in academia, in their professions in the media, in the arts and in so many other endeavours. We have enriched this province and this country.
9) Do have any plans to return to politics?
I have no plans to return to politics. I am proud of the four years I have spent in the BC Legislature. It is a very difficult job and I commend those people particularly those from our community and all the others who have taken it upon themselves to serve the public.
10) What advice would you give budding lawyers or those who wish to follow your path?
The best advice that I would give to new lawyers is to work hard and get involved in the community. Find a firm that focuses on valuable work and that truly gives back to its community. One of the reasons I chose Boughton Law for the next stop on my legal journey is because of the work we do to better the community. The two best pieces of advice that I could give a young lawyer is 1.) Find a firm that reaffirms your own personal values and 2.) Work as hard as you can.


text:
The three words that describe us most. And we love music. We've been around since 2003, and on 99.8FM since 2009. From grime to rock and house, you'll find it on KCC Live. What better to go with music, than attitude. Comedy, debate, interviews, there's a show for that.
Not to brag, but we've won awards too. And we make a boss cup of tea.
We DON'T play advert breaks. Which means we play MORE music than any other station. We play what WE like. We don't like putting music into boxes, but to make our play list easier to understand we update our favourite categories for you to copy 😉 Think we should be playing your music? Send it to us [email protected]
Podcasts are the best bits of a show. All talk and no music. We interview a lot of good eggs in the community worthy of celebrating, as well as some of the best artists around. We also like to make mini documentary style shows on the issues that matter most to us. Some weeks it gets deep. We discuss anything and everything from coming out stories to social media DMs. Some weeks it ain't that deep. We discuss tea. 🙂


text:
Meet Our Practitioners
All professionals at Central Florida Pediatrics maintain the highest levels of accreditation and pursue ongoing education to stay abreast of the latest trends in the medical field. Read on to learn more about our staff's experience and training.
Brenda B. Lewis, M.D., FAAP
Dr. Lewis graduated from Temple University School of Medicine and completed her residency at St. Christopher's Hospital for Children before joining Central Florida Pediatrics in 1993. She is a past president of the Central Florida Pediatrics Society and has served as the Regional Representative to the Florida Pediatric Society.
Kacie N. Lutz, M.D., FAAP
Dr. Lutz graduated from the University of Arkansas for Medical Sciences and completed her residency in pediatrics at the University of Tennessee. She worked as an assistant for medical research in Little Rock, Arkansas prior to joining Central Florida Pediatrics in 2005.
Michelle Williams, M.D., FAAP
Dr. Williams graduated from Loyola University's Stritch School of Medicine. She completed her residency at All Children's Hospital in St. Petersburg and worked at Bayside Pediatrics in Tampa prior to joining our practice in 2011. She has taken medical mission trips to Haiti and the Dominican Republic as well as served as a Kids Against Hunger Volunteer.
Jiby O. George, M.D., FAAP
Dr. George graduated from the University of Szeged in Hungary and completed her residency at Winthrop University Hospital's Stony Brook School of Medicine in New York prior to joining Central Florida Pediatrics in 2013. She worked previously at Mendoza Pediatric Clinic in Louisiana and Trumbull Pediatrics in Connecticut.
Dawn Diomede, A.P.R.N.
Dawn received her degree as a Pediatric Nurse Practitioner from the University of Florida and joined Central Florida Pediatrics in 2000. She is a member of the Central Florida Advanced Nurse Practitioner Society and the Central Florida Pediatrics Society.
Practice Administrator
Michelle Patrick


text:
"Exciting to see
but soon after comes sadness
the cormorant boats." Basho
2016 is over by a whole month. I didn't make resolutions. I'm making a New Year's Clarification.
I was walking through a park, early one morning about a month ago. It was fogbound; the grass was frosted and despite being well inland, the white ground was peppered with the whiter white of seagulls – a small flock, hunting worms. The scene was a second prod in a week to finish this blog post.
I started writing this about two months ago, in fact. It was, then, a response to a topic posted in one of the groups of which I'm a member on LinkedIn. It was posted directly on the back of and responding to the massacre of 50+ folks in the Pulse gay club in Orlando, Florida (6 December 2016). The Christian author of the topic used the massacre as a vehicle to mount an argument against homosexuality and backed himself up in the usual shallow way with the usual biblical quotes. I was incensed at this Christian's insensitivity. Another Christian did similar more recently following the assassination of the Russian ambassador in Turkey. (P.S. I have no affection for or affiliation with the Russian political regime). I was again incensed. I surprised myself by telling him to eff off, I was so incensed at the insensitivity.
What's all this to do with God and seagulls? And God changing his mind? (Please exchange God for whatever you call the source of all things (and I'm assuming that the reader who has persevered thus far will believe in a source for the universe)).
Me, I'm going to get really biblical here.
Part of the answer lies in Leviticus. Leviticus is the third book of the Bible, attributed to Moses but research suggests it was a later addition. It is about the Levite tribe (one of the 12 tribes of Israel). The Levites were the tribe of priests. And Leviticus summarises rules and ceremonies pertaining to the ministry of the priests and the social and health-maintaining conduct of the Israeli people (that Moses brought out of Egyptian slavery and led to the Promised Land).
Bear with me, this is exciting. Please read on:
Leviticus, 11-15 are instructions to the Israeli folk on purity stroke cleanliness. "Eating certain animals produces uncleanliness, … ". At Leviticus 13: These are the birds you are to regard as unclean and not eat because they are unclean (there's a long list, but specified are "… the gull, [and] … the cormorant, …"
But God changes his mind about the above.
Yes, he does.
It comes after the death and resurrection of Jesus, when the Apostles have gone out into the world to disseminate the message of the life, death, resurrection of Jesus. The story of the triumph of Love.
Their adventures and achievements are reported in The Acts of the Apostles. And Acts 10 records a vision that Peter had (Simon Peter whom Jesus referred to as his rock (of whom it is also recorded, denied knowing Jesus, after Jesus' arrest in Jerusalem, betrayed by Judas Iscariot, three times before the cock crowed (dawn) the following morning. Forgive me if you already know this).
Acts 10: (9-16): About noon the following day as they were on their journey and approaching the city, Peter went up on the roof to pray. He became hungry and wanted something to eat, and while the meal was being prepared, he fell into a trance. He saw heaven opened and something like a large sheet being let down to earth by its four corners. It contained all kinds of four-footed animals, as well as reptiles and birds.
Then a voice told him, "Get up, Peter. Kill and eat."
"Surely not, Lord!" Peter replied. "I have never eaten anything impure or unclean."
The voice spoke to him a second time, "Do not call anything impure that God has made clean." This happened three times, and immediately the sheet was taken back to heaven.
So in Leviticus, in the Old Testament, you don't get to eat seagulls and cormorants are mentioned specifically. In the New Testament, you do. Here's the point, which isn't about seagulls. It's about God changing his mind to better suit purpose. Acts 10 was at the time, hugely pivotal, because it opened up the Apostles' ministry to include non-Jews, aka Gentiles. And thus enabled the Christian message to be spread beyond the Jewish world.
And so, when Christians choose to condemn, say, homosexuality, with seemingly incontrovertible quotes from The Bible, (homosexuality being a blanket term covering a huge spectrum of states of being) Acts 10 isn't about something dirty being made clean, it's about that you can't today judge, condemn and cast-off folk by selecting verses from the Bible to suit your particular (fractal) world view, because tomorrow, God might change his mind about your chosen verses.
Where will you find yourself, condemners of … whatever? Not on a rock, not on Peter, but on very precarious foundations indeed. (Read Luke 6:48).
Oh, and the Basho quote at the top of this post? Why the sadness about cormorants? First, it turns out that cormorants are rather special.
From Cliff's Notes: Many cultures consider cormorants a symbol of nobility and indulgence. In more recent history, the cormorant is considered a good luck charm for fishermen, or a talisman that will bring a fisherman a bountiful catch.
In China and Japan, humans once exploited the fishing skills of the cormorant by tying a snare to the bird's throat and sending it to sea. The snare prevented the bird from swallowing fish, and when the bird returned to the fisherman's boat, the fisherman removed the fish and kept it.
Some specific stories of cormorants in literature include:
In the Greek tale of Ulysses, after a storm broke the mast of Ulysses' raft, a sea nymph disguised herself as a cormorant and handed Ulysses a girdle to keep him afloat while he swam to shore.
In Norwegian myths and folklore, three cormorants flying together are said to be carrying messages and warnings from the dead. In northern Norway, cormorants are considered to be good luck when they gather in a village. Norwegian myth also states that people who die at sea can visit their former homes in the form of a cormorant.
In Polynesian mythology, Maru-tuahu used feathers to make himself "as handsome as the crested cormorant" when both young daughters of Te Whatu declared their desires to marry him.
In Ireland and some other places, seeing a cormorant perched atop a church steeple is a warning of bad luck to come.
In England, the mythical "Liver Bird," the symbol of the city of Liverpool, is thought to be a cross between a cormorant and an eagle.
The cormorant is also a symbol of greed and deception in John Milton's epic poem, Paradise Lost, as the form Satan took to disguise himself to enter Eden before tempting Eve.
The cormorant makes his appearance in Shakespeare: Coriolanus, Love's Labour's Lost, Troilus and Cressida.
Here is the origin of Basho's sadness, regarding the rather special cormorant, which is about fishing with cormorants. The You Tube video below may upset sensitive folks, which shows how cormorants are used (tortured) to catch fish. A snare tied round their necks prevents them from swallowing a fish they might catch, which is then taken by the fisherman from its gorge.
The method is not as common today, since more efficient methods of catching fish have been developed, but is still practiced as a cultural tradition.
I'm going to repeat my paragraph 17 here:
And so, when Christians choose to condemn, say, homosexuality, with seemingly incontrovertible quotes from The Bible, (homosexuality being a blanket term covering a huge spectrum of states of being) Acts 10 isn't about something dirty being made clean, it's about that you can't today judge, condemn and cast-off folk by selecting verses from the Bible to suit your particular (fractal) world view, because tomorrow, God might change his mind about your chosen verses.
If my Clarification offends your idea of cultural tradition, your spiritual sensibilities, then unfriend and unfollow me. In other words, eff off. I'm trying (er, in this, read failing miserably) to lead a loving life, which is the message of the life of Jesus of Nazareth. And that means keeping my door open to all, of whatever race, creed, sexual predilection, or physical attributes.
Stuff cruel cultural tradition. I would love it if my kitchen resembled the Cantina (the bar in Star Wars).
Happy 2017
P S The Fisher King


text:
Dutch food is not that well-known in other countries because it is generally much simpler than other European cuisines like Italian and French. However, if you do some research, you will find that traditional Dutch food is, in fact, very interesting and delicious. And there is no better place to sample some of these culinary treats than in the capital city.
Amsterdam is very easy to get to from most countries as it has a large international airport. You can find a range of central hotels with Venere, for example, and there are so many things to do and sights to see in this city. As well as sightseeing, when you are in Amsterdam, you must try the following foods.
Amsterdam is known for having an excellent variety of street food within Europe. Perhaps one of the most popular street snacks, and my personal favourite, are the patat. Basically, these are french fries served in a cone and are traditionally enjoyed with plenty of mayonnaise. This snack is ever so simple and yet very delicious. Patat are such an iconic Dutch food. If you are entering the capital city via Amsterdam Central Station, one of the first things you will see are street vendors selling patat. And I'm sure you will be very glad to try some after your long journey.
A traditional dish, it consists of potato mashed with vegetables (spinach, turnip and carrot, for example). This is served with smoked sausage or stewed meat and lashings of gravy. This meal can't exactly be described as gourmet, but it is comforting and nutritional. This hearty dish is usually served during the winter months. If you know a local who can make stamppot for you then, this will be the most authentic way to eat this meal. Otherwise, there are several restaurants within the city where you can try it.
Hollandse Nieuwe Haring
This is raw herring fish that has been soaked in a marinade of vinegar, cider, sugar, herbs, spices and chopped onions. This is traditionally served as a snack with a bread roll or just as it comes. It may not sound very appetising, but it is worth trying at least once. This is a very popular snack with locals and tourists. You can pick up some Hollandse nieuwe haring from a number of street stands and shops around the city. If you want to do as the Dutch do, tip your head back and dip the herring by the tail into your mouth.
These are two thin round waffles sandwiched together with a caramel syrup. They are widely available in Amsterdam, from grocery shops, street vendors, and bakeries. These sweet treats are best enjoyed with a hot mug of tea or coffee. Place your stroopwafel on top of your hot drink and the steam will melt the syrup inside and soften the waffles. Yummy!
Here we have listed a few Dutch must-eat treats. However, there are so many more traditional foods that can be enjoyed while you are in Amsterdam. If this selection has tantalised your taste buds, do some research, and you will find even more treats you must try. Eet smakelijk!
Photo Credit: Charleston's TheDigitel, Martijn van Exel, Saaleha Bamjee


text:
The other day my daughter mentioned the great Italian composer Giuseppe Verdi, and I was reminded of a fantastic portrait of him painted by Giovanni Boldini. When I was at art school I had a poster of this image on my wall, so the splendid gentleman with his top hat and jaunty scarf would greet me often in the course of my day. The poster is long gone, but just a mention of the name Verdi instantly brings this handsome portrait back to me.
Did you know that in the World Beard and Moustache Championships there is a category of beard called the "Verdi"? Of course there is. There are quite a few people around the world who take facial hair very seriously!
These guys have all been competitors in the World Beard and Moustache Championships over the years. A good number of them come from Germany and Switzerland, where beard cultivation is a well developed art form.
Over the centuries, beards and moustaches have gone in and out of fashion. Depending on the look you choose, the effect can vary enormously. A big white beard for example, as worn by Socrates and Santa Claus, is reassuring and conveys wisdom and kindness.
A carefully manicured goatee, worn by Charles Dickens, gave him an air of distinction and individuality. Apparently he was also fond of fancy waistcoats and gold jewellery. Very dapper!
Shakespeare is thought to have been bearded too. There is some doubt as to what he really looked like, but this painting makes him look very cultured and intelligent:
His neatly trimmed beard comes to a point, and brings to mind another Elizabethan gentleman, Sir Walter Raleigh. In those days a beard was a sign of manliness, but in the next century (the 17th) it became fashionable for men to be clean-shaven with long, curly hair (often wigs).
Fashions come and go (thank goodness) and not everyone follows the herd. In the 1960s it was in protest against social constraints and repressive government policies that young people grew their hair and beards long and called themselves "Hippies." In the '70s and '80s beards became unfashionable again, as money and success were seen as what society should be striving for once more. For some men it came down to a choice between their beard and their job, as certain occupations (police, health care professionals, Margaret Thatcher's cabinet) forbade facial hair.
Thankfully, today there is much more freedom in that department, and the beard is currently enjoying a resurgence of popularity.
There are clubs and associations around the world celebrating a rich variety of facial decoration. Celebrities from George Clooney to Graham Norton are sporting beards these days, and for those who have been standing out in the crowd for the last few decades it comes as a bit of a shock.
Children's author Philip Ardagh stands two metres tall and has always worn a prodigious beard to match his size 16 feet. Now that beards are all the rage, he may have to up his game! Maybe a little moustache wax will do the trick…


text:
- Mattress Feel: Medium
Experience comfort at a new angle. Whether its reading a book before the lights go out or for medical reasons, our adjustable beds usher in a new era of adaptable sleeping.
Our latest innovation features the revolutionary Titanium AlignSupport system. These intuitive coils sense your weight and respond to maintain your bodys natural alignment. Youll rest easy knowing each coil is working effortlessly throughout the night to keep you relaxed, allowing you to enjoy deeper more restorative sleep.
Intelligent SmarTex fabrics draw away moisture to cool and regulate your sleep climate, while an enhanced Gel-Memory ComfortCore layer adapts and conforms to relieve pressure on your lower back. Reinforced with patented FlexiCased adjustable edge support, provides added stability to maximise the usable sleep surface.
The Pembroke FLEX Medium combines wool fibre for soft breathable comfort, deep cushioning quilt foam, with super soft, premium and Sealy comfort layers for a long-lasting soft luxurious feel.
Posturepedic Technology gives you the edge, leaving you feeling alert, energised and ready to take on the day. Your body and mind elevated, thanks to the natural rejuvenation of unbroken, quality sleep. Thats what makes it Clearly a Sealy.


text:
By IvyLee Rosario
Ridge, Transwestern's industrial development arm, broke ground on its newest facility at Brewster Creek Business Park, a 468-acre, master-planned industrial development in Bartlett, Ill.
Dubbed Ridge Brewster Creek II, the 186,000-square-foot building is slotted for completion by December 2017. Located at 1331-1337 Schiferl Road, the project will include 32-foot clear ceiling heights, an ESFR sprinkler system, two drive-in doors, 50-by-50-foot column spacing, 35 dock doors and 224 parking spaces. The park is located at the intersection of Stearns and Munger Road, within close proximity of Route 59, Interstate 90 and O'Hare International Airport via the planned I-390 expressway.
Strong Demand for Industrial Space
The company also developed Ridge Brewster Creek I, a 271,000-square-foot building. The asset is currently 50 percent leased to Winhere Brake Parts.
"With the recent completion of Ridge Brewster Creek I, the timing was right to pursue another compelling opportunity at Brewster Creek Business Park," said Darcie Fankhauser, senior vice president at Ridge, in prepared remarks. "Demand for large blocks of high-quality industrial space in DuPage County remains strong, and Ridge Brewster Creek II will be an ideal facility for light manufacturing and food industry users."
Newmark Knight Frank will handle leasing for the development, Triumph Construction Services Corp. will handle construction, Harris Architects Inc. is designing the project and Eriksson Engineering Associates Ltd. is serving as civil engineer.
In July, Ridge broke ground on Charleston Logistics Center, a 686,300-square-foot industrial project in Jedburg, a submarket of Charleston, S.C. The facility is slated for completion in the first quarter of 2018.
Image courtesy of Transwestern


text:
Enjoy the photos from Villejuif Boxing Show 2 that featured three WKN championship bouts at Espace congres les Esselieres in Villejuif, France on March 7, 2020.
1 of 25
Yannick Reine took WKN World lightweight title by TKO in the third round against Woo Seung Kim. Bertrand Lambert earned WKN European lightweight title by unanimous decision against Jacko Nicola. Amine Kebir claimed WKN European super heavyweight belt by TKO in the third round against David Mihajlov.
Special thank you and congratulations to the promoters and Academie des Boxes de Villejuif from WKN World President Stephane Cabrera and WKN Director Osman Yigin for an excellent organization of the event, top level of the bouts and very warm welcome.


text:
Over the last few decades or so, there has been a seemingly never ending demand for more sophisticated technology. Whether it be smaller phones, stronger batteries, more fuel efficient cars, it appears that our desire to reach higher states of technological innovation is never ending. Many venture capital firms, seeing as how technology investment has consistently showed promise, have funded billions in various education technology programs. In 2015, numerous well-paying jobs within the technology sector were left vacant, in which many of those careers are computer science oriented. These types of science fields are essential for economic and societal prosperity, and they benefit far more than just the technology sector. They are necessary for advancement of industries including education, transportation, and health.
With all this said, how can we ultimately reach this goal constant technological innovation? One way technology is developed is through investment in human capital. Therefore, the more our labor force is engaged in research and development, the more technology can be efficient and cost effective. The effect of technological progress on human capital investments has increasingly become an important topic. Here are two possible ways to increase our technological capabilities in the long run:
- Efficient funding to Public Education Programs
If anything, students are gaining more exposure to technology from being in school. IPads, laptops, and Smartboards are becoming more and more common as the affordability of these devices increases. But even so there seems to be a problem with the amount spent on technology education programs vs. how much students are learning from said programs. In 2014, venture capital firms funded technology oriented programs about $1.8 billion dollars, and that number is expected to increase. The real shock, is that number in 2009 was roughly $385 million dollars. Just from that, we can get a picture as to how much the demand for these programs in increasing yearly. However, the problem isn't that sufficient funds aren't being reached, it's that the method of learning for students has begun to stagnate. Perhaps it is due in part that so much money is spent on the physical devices and not so much on complex software designed to help students learn. The amount spent on physical technology in public education reached $13 billion in 2013, according to a report from the Journal. Moreover, the United States spent more than $4 billion that year on mobile devices. Forecasts predict that education technology spending will amount to $19 billion around 2019. With almost all students in possession of tablets or computers of some sorts in schools, the main focus for technology funding needs to shift away from physical tech, and more towards software and interactive applications. These applications should, in theory, take complex material (computer programming, for example) and make it easier for students to understand. This is one step as to how technology funding could be allocated more efficiently, with the goal to be focused on how programs can enhance students' ability to learn and comprehend. If students are able to easier learn more complicated technological information from, say, middle school onward, then the chances of that generation of students being able to enhance the world through tech will be much greater. Another reason to consider when discussing funding for these tech education programs is the disparity between funding received from rich and poor schools. One of the major incentives behind a massive budget for technology funding is to make it accessible for all students, although it does not always happen. Because numerous school districts within the U.S. are experiencing budget cuts, the money for tech resources isn't easily attainable. So, in addition to making easy-to-understand software for those schools with sufficient capital, we must also be mindful of how to make physical tech available for those schools which require it. The more widespread the accessibility of technology is through the education system, the higher the probability our younger generations will be able to reach new levels of higher tech.
- Research and Development
A major factor in the driving of technological advancement is money invested in its research, and in order to push past our current level, more money is needed. This includes the money invested in academia (as mentioned previously within public education) as well as proper capital needed to support workers. In terms of innovating at our current state, we must also consider what our current workforce can do. Individuals working in high level technology sectors will have the greatest effect on how we will continue to expand our horizons. As stated previously, those working in developing higher technologies should invest in ways to help the younger generations learn and understand concepts of computer sciences early on. It is this need for passing useful information on to younger people which will benefit the world as a whole in the future. Furthermore, the supply PhD candidates that perform the research needed to advance these technologies is also a factor to consider when discussing ways to innovate. Essentially, once enough money is raised/invested to fund the programs for research, scholars will cooperate with tech experts to develop the technology. Once it is developed and accessible in the workforce, productivity will see further increase, holding other factor inputs constant. In turn higher level of productivity will increase economic output. Further in the long run, the new technologies can be deployed in public schools once it becomes affordable enough on a wide scale.
The relationship between education and technology appears to be linear. The more time invested in education, the higher the likelihood of developing better technologies is possible. For this reason, it is essential that funding be efficiently allocated to public education in order to enhance students' understanding of computer sciences. Through our current education system, we have been able to effectively develop and train our work force to produce new technologies, so long as appropriate investments were made to continue funding to tech programs. That said, it may be wise to allocate some of the funding to other purposes, such as interactive software and aiding the school districts whom cannot provide adequate tech due to budget cuts. Once these changes take effect, productivity in the workforce has the potential to increase, which will increase economic output as a result. In order to maintain this process of technological innovation however, we must be mindful to continue to increase education standards and funding for programs through the years. Human capital and R&D in technology are the critical steps for economic growth, which lead to a more productive workforce. Based on the analysis, we can see the relationship between technology, education, and economic growth appears to be positive.


text:
W.S.I.B. is always a dry subject, but Roy Campisi did a great job of adding humour and getting the information to the audience in an entertaining fashion. Our next meeting will be held on Thursday June 28, 2012 at the C.L.A.C. building in Grimsby where we normally meet.We are hoping to add a golf component to the meeting afterwards. We won't have a speaker for this session as this is our annual election.
We look forward to seeing you all there,