text:
A self-luminous light source is disclosed having a light-permeable shell, a body disposed within the shell, defining a space between the shell and body, a member connecting the shell and body, radioactive gas disposed in the space, and a phosphor coating on at least one surface of the shell and body. The shell and body may be coaxial glass tubes defining an annular space of restricted width, connected to one another by annular end members.
1. A self-luminous light source comprising:
inner and outer glass tubes of substantially equal length, placed within one another to define an elongated axial space within the inner tube and an elongated annular space between the inner and outer glass tubes;
annular glass end members extending between the inner and outer glass tubes at opposite ends thereof, the end members and coaxial tubes entirely closing the elongated annular space;
a phosphor coating on at least one surface of the inner and outer tubes; and,
a radioactive gas disposed in the elongated annular space.
2. The light source of claim 1, wherein the tubes are of circular cross section.
3. The light source of claim 1, further comprising a seal tube for charging the elongated annular space, the seal tube being a hollow tube communicating with the annular space, the seal tube extending from at least one of the end members and operable to complete sealing of the annular space upon melting of the seal tube.
4. A self-luminous light source comprising:
a light-permeable outer shell enclosing a volume;
an inner body disposed within the shell and surrounded by the shell, the body being complementarily shaped to the shell, and smaller than the shell, a space of substantially constant width being thereby bounded by facing surfaces of the shell and the body;
at least one member connecting the shell and body, and rigidly holding the body at said width within the shell, the shell being an elongated tube and the body being an elongated cylinder, the shell and the body being connected by end members at both ends of the tube and the cylinder, the end members closing the space between the tube and the cylinder;
a radioactive gas disposed only in said space; and a phosphor coating on at least one of the surfaces of the shell and body, the phosphor coating being responsive to emissions of the radioactive gas.
5. The light source of claim 4, wherein the shell and body are both light-permeable glass tubes, the tubes being coaxial and said space being an elongated annular space, a central portion being enclosed by an inner one of said glass tubes said inner tube being open at both ends, said end members being annular members closing the annular space at both ends of the glass tubes.
6. The light source of claim 4, further comprising a light-permeable casing enclosing the shell, body, gas and phosphor coating; and,
at least one mounting pad extending between the shell and the casing.
7. The light source of claim 6, wherein the mounting pad is a resilient body for absorbing mechanical shocks.
8. The light source of claim 6, further comprising a handle member rigidly attached to the casing.
1. Field of the Invention
This invention relates to the field of self luminous light sources employing radioactive gas to activate phosphors deposited on surfaces of the light source, and in particular, to an elongated tubular light source charged with radioactive tritium.
2. Description of the Prior Art
Use of a radioactive gas and a phosphor coating responsive to the emissions of the gas, is known in the art. Such light sources generally take the form of simple glass tubes enclosing the radioactive gas in a cylindrical space. In connection with self-luminous light sources for watch dials and the like, rectangular or other enclosing shapes are employed. In any event, the conventional teachings of the art are to take a simple, sealed glass body having a phosphor coating on the internal surfaces thereof, and to charge the body with the radioactive gas. Particle emissions incident to radioactive decay of the gas within the body activate the phosphors on the inner surface of the external shell, producing light emissions by the phosphors.
Competing concerns such as safety on the one hand, and maximizing brightness and efficiency of the light source on the other hand, require the designer to make a number of choices in the configuration of a light source. A larger enclosed volume results in a larger active surface area, producing increased light. In order to further increase brightness, it has sometimes been found necessary to employ a radioactive gas of a type in which particles released during radioactive decay are emitted at relatively high energy, for example, krypton-85 (36 Kr85). Gas of this variety will cause photon emissions in phosphors at a distance on the range of tens of centimeters from the decaying atoms, however, such relatively-powerful emissions are not healthful for humans.
Safer levels of particle emission energy are obtained with use of tritium (1 H3) as the radioactive gas. Particles emitted by decaying tritium will activate phosphors within a range of millimeters from the decaying atoms. Accordingly, tritium is a preferred source of phosphor-activating emissions in light sources intended for use in proximity with persons. Unfortunately, such low energy particle emissions are also only able to produce a relatively weak level of light emission in the phosphors.
Production of any radioactive gas is a relatively expensive procedure. It is sometimes the case that the expense of mechanical construction, packaging and the like is small relative to the cost of radioactive gas used in self-luminous light sources. Use of a larger volume of gas and the resulting additional phosphor surface area will, up to a point, proportionately increase the total brightness of the light source. There is a limit, however, to gains in brightness per unit of radioactive gas achievable from using increased amounts of radioactive gas.
As the gas space becomes larger, more of the emitted particles are absorbed by neighboring atoms in the gas, and never reach the phosphor coating to produce light. With respect to tritium, for example, a glass tube having a phosphor coating on its inner surfaces and a diameter greater than several millimeters, i.e., the transmission range of tritium, will be of lower total brightness per unit of tritium (i.e., a lower efficiency) than a group of tubes each having a diameter within the transmission range and enclosing the same total amount of gas. In other words, with the single large diameter tube, emitted particles which happen to be directed radially inward are unlikely to ever reach the phosphors on the far side of the tube. These particles will be absorbed in the gas itself, and will not help produce light.
The relatively low energy of tritium emissions frequently makes tritium unattractive as a phosphor-activating element in a large light source. The low power emission capabilities of tritium means that increasing the diameter of the light source tube in order to increase surface area in fact makes an inefficient use of the tritium. In this respect efficiency is the total light emitted per unit of tritium.
U.S. Pat. No. 3,038,271--MacHutchin et al teaches a self-luminous sign in which a plurality of glass tubes of relatively small diameter are used to activate phosphor coatings over the area of the sign. If the diameter of each of the tubes is kept small, namely within the transmission range of tritium, the disclosed sign can be expected to be relatively efficient in production of light, that is, achieving a reasonable total brightness per unit of tritium, and therefore per unit of cost. Use of a plurality of separate closed glass tubes causes other problems, such as difficulty in production, handling, mounting and the like.
U.S. Pat. No. 3,566,125--Linhart, Jr., et al teaches a light source having a particular contour for the gas-holding space. Light emission is said to be improved by a parabolic facing surface on the phosphor-bearing body, which is enclosed within the light source. It is believed that the increase in luminosity of the Linhart device is due to the increase in phosphor-bearing surface area of a curved area over a flatter one. Linhart's respective embodiments include a number of arrangements in which the transmission range of radioactive emission is clearly exceeded, particularly as to emissions directed toward the rear of the parabolic surface of the phosphor-mounting body.
In the embodiment of FIG. 6, Linhart uses a collimating lens having a convex rear surface. The convex lens has a contour at least partly complementing the parabolic, phosphor-coated surface. Such restriction on the depth of the gas-enclosing space should be a relatively efficient use of radioactive gas. The construction has a number of drawbacks. The efficiency is achieved at expense of a need for multiple parts of dissimilar materials, and the need to connect the parts in a seal which will be impermeable to tritium. Tritium is, of course, a form of hydrogen, which is prone to difficulties with leakage and will diffuse directly through many materials.
U.S. Pat. No. 3,005,102--MacHutchin et al teaches simple gas-enclosing phosphor-coated tubes, but also discloses one embodiment in which a flashlight bulb is simulated using a gas-enclosing plenum of relatively-restricted depth. Reference may be made to MacHutchin's FIG. 3, in which the gas-charged plenum is laid over a hollow glass bulb, with expected increase in efficiency. MacHutchin U.S. Pat. No. 3,005,102, like Linhart Jr., appears to teach an arrangement restricting the depth of the gas space to a distance approaching the transmission range of the radioactive gas. Both patents, however, teach a plurality of dissimilar parts in complex constructions. The constructions, using complex geometrical shapes, and requiring gas-tight junctions, will certainly be difficult and expensive to manufacture. Increased manufacturing expenses may increase the product cost to an extent that safety and gas conservation gains are outweighed. Moreover, a number of usual junction-making materials are simply not feasible due to diffusion and loss of radioactive tritium through the seals.
U.S. Pat. No. 3,176,132--Muller teaches a refinement of the usual glass tube. A central tube, holding a souce of radioactive emissions, is mounted within a casing tube, and a plurality of coaxial phosphor-bearing tubes, or a spirally wound sheet of phosphor-bearing material, is disposed between the central axial radioactive tube and the casing. This construction is said to be useful to confine the radioactive emissions. While emissions may be confined, such a construction merely aggravates the difficulty with the low transmission range of tritium. Not only will the transmission range be possibly exceeded between the central source of radioactive emissions and the peripheral phosphors, but intermediate layers of phosphor-bearing material, phosphors and gas will themselves absorb emissions. Moreover, photon emissions from the excited inner phosphors must pass through multiple surrounding layers to reach the casing, in order to be released from the lamp as useful light. Accordingly, although Muller teaches a structure including coaxial tubes, the teachings emphasize safety over efficiency, and are more appropriate for high energy particle emitting gases and the like.
The present invention employs a central body and an external casing, the body and casing together defining a gas-enclosing space of restricted width around the device. The inward-facing walls of the enclosed space are preferably all coated with phosphors. The invention therefore conserves gas by not exceeding the transmission range of the gas, for example tritium. Inasmuch as the device is preferably formed by a pair of coaxial glass tubes, sealed to form an annular glass-bounded area, an integral glass body results in which no possibility of leakage or diffusion loss is presented.
Apart from radioactive self-luminous devices, in connection with electric discharge devices and chemically-operated self-luminous lamps, a number of coaxial tube constructions are known. In electric discharge devices, outer tubes are structured and intended as optical filters or for mechanical protection, and are not arranged to form a confined space for a radioactive gas. On the contrary, the operative gas and the electric discharge elements are almost invariably mounted in the central axial space. There is therefore no particular requirement of a complete enclosure around the inner tube. In addition, there is no difficulty with any safety consequences of radioactive emissions and no need for spacing of elements because the most dangerous emission expected from the light source (and the most often blocked via a shield) is ultraviolet radiation.
U.S. Pat. No. 3,358,167--Shanks teaches a jacketed electric discharge lamp in which an outer casing physically protects the operative electric discharge light source mounted along the axis. A resilient plug having a central circular opening for receiving the light source, and an annular groove for receiving the casing is disclosed.
U.S. Pat. No. 2,080,919--Ihln et al teaches a spring-like form of resilient spacer in an electric discharge device. The space between the light source and the casing is evacuated, to decrease heat loss by conduction/convection.
A third category of interest is light sources powered by chemical reaction. Unlike either electric discharge devices or radioactive light sources, chemically self-luminous devices employ sealed containers of reagents within an external casing. The containers frequently are tubular, and means are provided to break or otherwise open the containers and thereby mix the reagents. These devices seldom have any direct connection between inner and outer tubes.
The present invention involves a coaxial tube arrangement particularly adapted for self-luminous radioactive light sources. An optimum width gas enclosure is produced by a relatively inexpensive and easy to manufacture construction. The light source as so constructed can be further mounted in a casing with resilent shock-absorbing means and/or provided with a mounting as desired for a given use.
It is an object of the invention to optimally increase the active surface area of a radioactive light source in order to achieve a high total brightness per unit of radioactive material.
It is an object of the invention to conserve radioactive gas and thereby minimize the expense of radioactive self-luminous light sources.
It is a further object of the invention to achieve high total brightness without degrading safety of a radioactive light source.
It is another object of the invention to produce a bright, inexpensive and long lasting light source which is easy to manufacture, safe and convenient.
These and other objects are accomplished by a self-luminous light source comprising a light-permeable shell, a body disposed within the shell, a space being bounded by facing surfaces of the shell and the body, at least one member spacing the shell and the body, and holding the shell and body with respect to one another around the space, a radioactive gas disposed in the space, and, a phosphor coating on at least one of the surfaces of the shell and/or body, the phosphor coating emitting light in response to exposure to emissions of the radioactive gas. The light source preferably comprises coaxial gas tubes defining an axial space within the inner glass tube, the axial space being left open, and an annular space between the tubes, sealed at the ends by glass members, for enclosing the radioactive gas.
There are shown in the drawings the embodiments which are presently preferred. It should be understood, however, that the invention is not limited to the precise arrangements and instrumentalities shown in the drawings, wherein:
FIG. 1 is an elevation view of the complete assembly according to the invention;
FIG. 2 is a partially broken away perspective view of the self-luminous light source of the invention;
FIG. 3 is a section view taken along lines 3--3 in FIG. 2;
FIG. 4 is an exploded perspective view of the assembly of FIG. 1;
FIG. 5 is a partial exploded perspective view of an alternative embodiment of the invention; and,
FIG. 6 is a perspective view of an alternative embodiment of the invention.
The light source of the invention may be packaged in various ways. It will be appreciated that a static or permanently-mounted installation will require less in the way of shock absorbing means, while mobile or exposed locations may require additional protection, and the like. The invention will be described with reference to a protected but otherwise unmounted light source, or to a hand-held light source, as shown in FIGS. 1 and 6, respectively. It should be appreciated that the invention is applicable to various mounting arrangements, other constructions and uses.
The basic light source of the invention, as shown in FIGS. 2 and 3, preferably comprises a light-permeable glass outer shell 38, enclosing an inner body of slightly smaller diameter, for example, inner tube 32, coaxial with the outer shell. The inner tube need not be a coaxial glass tube, but may be a solid body spaced from shell 38. The shell and/or body may also be of irregular cross-section, or the like. It is presently preferred that coaxial glass tubes, preferably of borosilicate glass or the like, be integrally joined at their ends using annular glass portions of complementary shape.
A radioactive gas such as tritium (1 H3) is disposed in the annular space 44 between the outer shell 38 and the inner body 32. A phosphor coating 36, responsive to the emissions of the tritium or other radioactive gas, is applied to the external surfaces of inner body 32, and/or to the internal surfaces of outer shell 38. Beta particles emitted by the tritium during radioactive decay excite the phosphor which in turn releases photons.
In order to take maximum advantage of light emitted by the excited phosphors, and for ease of construction, it is preferred that inner body 32 be a tubular glass shell of slightly smaller diameter than the external shell 38. The central axial space 34 encompassed by the inner shell is unused and may be left open to the air. Alternatively, the axial space could be used to attach the device to a mounting, for example using an axial dowel. An elongated annular space bearing tritium and bounded by the phosphor-coated transparent bodies, is the primary source of light. Inasmuch as particles emitted by tritium have relatively low energy levels, the relatively narrow width of gas space has the effect that a larger proportion of the total emissions of radioactive decaying gas will strike the phosphors, rather than be absorbed in the neighboring molecules of gas.
In addition to the beneficial effect of bringing the phosphor-bearing surfaces to within the transmission range of the gas, the geometry of the invention has further beneficial consequences. The use of a narrow gas-enclosing space is also a means of increasing the surface area for bearing phosphors. For a given gas volume, the invention provides more phosphor area per unit of enclosed volume than does a simple cylinder. Besides allowing this additional amount of phosphor surface, the invention brings the outer surface of the inner body and its phosphor coating to close proximity to the exterior shell, whereby photon emission from the inner body phosphors is ultimately less attenuated when emitted from the light source. Of course narrowing the annular gas enclosing space also has the effect of reducing the number of particles of radioactive decay which strike the phosphors.
The particular optimum width of the enclosed space which will produce the most light per unit of gas is subject to a number of variations such as the variation in transmission range depending on the type and pressure of the particular gas used. For example, at higher gas pressure, the transmission range will be reduced due to the increased probability that emitted particles will strike neighboring gas molecules. Similarly, the choice of phosphor and thickness of phosphor coating will impact on the particular optimum by altering the light transmission properties of the outer shell.
The optimum dimensions of the overall unit will be likewise dependent upon the transmission range of the particular choice of radioactive gas. Tritium, an emitter of low energy particles, has a transmission range on the order of millimeters, and a tube 30 designed for use of tritium would therefore have an enclosed annular space 44 of that range of width. On the other hand, krypton-85 (36 Kr85) has a transmission range in the tens of centimeters, and a large light source could thereby be prepared having an annular gap in that range, and a higher luminosity.
Suitable phosphors for radioactive light sources are known in the art. Examples of suitable phosphors are zinc-cadmium-sulfide, zinc sulfide, zinc silicate, cadmium sulfide, and the like. The phosphors may be applied to the inner surfaces in the form of powder, by use of a suitable glue, binder or other vehicle, as also known in the art. The light emission can be directed efficiently outwards by coating the internal surface of the central tube with reflective material such as white paint.
In order to charge the vessel defined by the inner body and outer shell with tritium, capillary seal tubes 40 are provided, for example at either or both ends of the enclosed space. One tube 40 will suffice, depending on the process used. The enclosed space is simply charged with tritium, and a portion of the tube melted, whereupon collapse of the tube or the bead of melted glass thereby formed closes capillary tube 40. This procedure entirely closes the bounded space 44 in glass. Capillary tubes 40 can be melted down as close as convenient to the covered ends 46. Short capillary tubes, of course, are more convenient and less prone to breakage.
The overall assembly may be formed by a number of procedures, as known in the art of glass working. The bodies may be formed by lamp working to join complementary flanged tubes of the needed diameters, with or without use of frit. It may also be desirable to employ tubes having one closed end for either or both tubes 32, 38, the annular space being closed on the other end.
Glass is preferred for use with the invention due to the particular properties of glass, and the radioactive gases employed. Glass is, of course transparent. Glass is also sufficiently dense to confine tritium gas which, as an isotope of hydrogen, would diffuse through many materials. Borosilicate glass is preferably used in a light source with tritium. For krypton-85, it may be necessary to employ a different glass, as known in the art, in order to avoid browning of the glass over time as a result of exposure to radiation.
Unlike electric discharge devices and/or chemically operative self-luminous light sources, radioactive light sources do not generate substantial temperature variation in use. Once the unit is charged, the phosphors are excited and the lamp stays lighted until the phosphors are eventually broken down by the radioactive emissions, or until an unacceptable proportion of the tritium decays into helium 3 (1 He3). The unit should be designed to withstand the usual temperature variations and mechanical shocks expected in the particular environment.
Light source tubes 30 can be used for various applications, including those known in the art. Self-luminous exit signs for buildings and vehicles, highway markers, aircraft markers (both inside and outside) and stationary mobile units may be constructed by employing the tube of the invention in place of conventional light sources or simple hollow cylinders or radioactive, phosphor-coated glass. When used as a mobile or manually-carried light source, additional protective features or means for conveniently manipulating the light source are recommended, for example as shown in FIGS. 1, 4 and 6. FIG. 1 shows a completely-assembled shock-resistant unit. Lamp unit 30 (comprising co-axial tubes) is disposed within yet another outer coaxial member 50. Transparent member 50 is preferably formed of a relatively resilient transparent plastic, or a thick layer of glass, to decrease the possibility of breakage. Plastic may be expected to decrease the incidence of breakage, and also facilitates attachment of additional mounting features. An exploded view of the assembly is shown in FIG. 4.
Transparent external casing 50, for example of plastic, is internally threaded at its ends 52, 52, for receipt of end plugs 54, 54. End plugs 54 are threadably fitted into threaded ends 52 of casing tube 50. One or both of the end caps may be threaded or provided with other attachment means to secure the device to a mount.
Casing 50, and for that matter glass tubes 32, 38, may be transparent, translucent, frosted, colored or otherwise adapted to the needs of a particular situation. The basic color emitted is substantially governed by the choice of phosphor, however, a certain range of modifications are possible. For example, a more attractive light source may be produced by employing a frosted external casing 50, and a brighter or more-focused light may be produced by a completely-transparent casing. A frosted or translucent outer tube and/or external casing will also tend to attractively conceal details of internal construction, for example the existence of shock absorbing discs 64.
The external dimension of tube 30 may be of smaller diameter than the inside of casing 50, or may be nearly the same diameter. In order to minimize the possibility of breakage, a relatively larger space can be allowed between casing 50 and tube 30 and that space filled with a resilient shock-absorbing pad or spacer such as disc 64. With reference to FIGS. 1 and 4, suitable shock-absorbing mounting means 64 may be provided from sponge rubber or the like in the form of a wafer. The spacer is axially cut to fit tightly around tube 30, and externally dimensioned to fit tightly within tube 50. Additional shock-absorbing means (not shown) may be placed between the ends of tube 30 and caps 54. The shock absorbers supply resilience to cushion tube 30 against impact should be unit be dropped or struck against a hard surface.
With reference to FIG. 5, other possible constructions for the tube and spacer are possible. For example, a tube 70 of rectangular cross section can be formed from a pair of elongated square tubes, 82, 84. Like the embodiment of FIGS. 1-4, only the space between tubes 82, 84 is charged with radioactive gas, and the space is entirely sealed in glass by melting capillary tube 90. This completed glass "lightbulb" can be further packaged as needed.
FIG. 5 also shows an alternative embodiment of a spacer 76. Spacer 76, as above, employs a resilient body, for example of sponge rubber, for surrounding and cushioning tube 70. In addition, a central plug 86 is integrally formed with spacer 76, the plug 86 being inserted into the axial space inside inner tube 82, further connecting spacer 76 and tube 70, and also protecting any extending portion of capillary tube 90. It will be appreciated that inasmuch as internal plug 86 is formed integrally with the spacer, this mounting means may be employed only over the ends of the tube. If desired, one or more additional spacers, lacking the central plug 86, or possibly to be used with separate plugs, may be employed for use at intermediate portions along the length of tube 70. Further mechanical support can be provided, or some protective features omitted, as needed in given uses.
Another possible variation on the invention is shown on FIG. 6. In FIG. 6, a handle 74 is mounted along the side of the light source. In addition, a reflective shield 72 is provided along one side, for example under the handle, allowing the user to direct the emission of light. The reflector can be mounted inside the external casing, and held in its position by the inward pressure of caps 54. Handle 74 can be likewise provided with members engaging end caps 54, or may be simply glued to the casing. If desired, a movable cover can be provided to enclose the device when light emission is not desired.
Further variations on the present invention are possible, and will be apparent in light of this disclosure to persons skilled in the art. Reference should be made to the appended claims rather than the foregoing specification as indicating the true scope of the invention.
Patent Citations
Referenced by
Legal Events
Original Image


text:
Results per page:
DMV in Alabama
Join 1,972,984 Americans who searched DMV.org for lower car insurance rates:
Search Results - 448 found
Alabama DMV Locations, AL DMV Hours, Phone Numbers, & DPS Appointments | DMV.org: The DMV Made SimpleAlabama DPS Locations & Hours - Find Alabama DPS Office Phone Numbers, Locations, Hours, & Appointments.
Alabama DMV Appointments for Driver and Vehicle Services | DMV.orgMake an appointment online with your local Alabama DPS. Take care of your driver's licensing, vehicle registration, and more.
Alabama - Register Off-Road Vehicles, Snowmobiles, Motorhomes, RV and More With The AL DMV | DMV.orgFind AL Title & Registration Information for Other Types of Vehicles at DMV.org: The AL DMV Made Simple.
Fight Your AL Traffic Ticket Or Speeding Ticket at DMV.org: DMV Made SimpleLearn More On How To Fight Your Traffic Ticket in Alabama. Get Tips On Hiring A Traffic Ticket Attorney To Help You Contest Your Speeding Ticket Or Traffic Ticket at DMV.
Alabama DPS Driving Record | DMV.orgLearn how to obtain your driving record or the driving records of another driver in Alabama. Online ordering available in some areas.
Alabama - If You Have An Accident - Next Steps With The AL DMVLive in Alabama and had an accident? Find out the next steps to take with the AL DMV at DMV.org: The AL DMV Made Simple.
Alabama Traffic Tickets - AL DPS Traffic Violation Guide | DMV.orgLearn where and how to pay your Alabama ticket, reduce your fine & prevent points from being placed on your AL license.
Alabama Suspended Drivers License Information and Procedures | DMV.orgSuspended Alabama drivers license - find all of the information you need for reinstating your suspended AL drivers license.
Change of Address - AL DPS Forms & Guide: The DMV Made SimpleHow to advise the DPS of an address change in Alabama - Necessary steps for informing the Alabama DPS of an address change.
Alabama DPS Behind the Wheel Guide | DMV.orgBehind-the-wheel and driver's training in Alabama - Supervised driving practice requirements for new drivers applying for a new driver's license.

subset: commoncrawl


text:
Enjoy the invigorating local community during your stay. View our Panama events calendar to see upcoming events in Panama City and the surrounding areas of our luxury hotel.
Events for March 16, 2013
Reinventando a Pinocchio
When: From 03/09/2013 to 04/21/2013
IDB-IIC Annual Meeting 2013
When: From 03/13/2013 to 03/17/2013
IDB IIC Annual Meeting of the Board of Governors
When: From 03/14/2013 to 03/17/2013
- Tumblr
- Facebook
If success hasn't spoiled you, we will when you enroll in the TRUMP CARD: http:/...Read More
- Twitter
Our vacation packages are designed to ensure you get the very most out of your trip to #TrumpPanama. http://t.co/dx8eThGIBmRead More
- Google+
- YouTube
Trump at Home: Wine PairingsRead More
- TripAdvisor


text:
The 4 Rules of East-oriented Code: Rule 3
by Jim
When I set out to create my presentation for RubyConf, I wanted to provide the audience with something they could easily try. By doing that, one could walk away and put themselves in a position to think about their code differently. While, James Ladd, the creator of East-oriented Code made some basic rules, I decide to take them and frame it in the specific context of Ruby:
- Always return self
- Objects may query themselves
- Factories are exempt
- Break the rules sparingly
After writing about Rule 1 and Rule 2 I'm very eager to get to Rule 3. It's an easy way to break the intent of this style without breaking the rules.
Factories are Exempt
They must be. If you returned
self from
Object.new you'd just get
Object back, not an instance of an object. So factories are exempt from returning
The best way to get around any of these rules is to just make something into a factory. But here lies the danger. It's important to first think about what these objects are doing. For what are they responsible?
We could create a class to sweep our messy code under the rug.
user = User.new
signup = UserSignupProcess.new
The code above, we could say, is East-oriented. The factories create instances, and the
signup object is told to
create_with and given the
user object.
Beyond this (inside
create_with), it could easily be an enormous mess. While we can and probably should use different programming techniques for different situations, taking a load of
if statements and sweeping it into a class could still be problematic.
Now, the sample code above is completely made up to show how you can take part of your program and say "this part is East-oriented, but over here I used this other technique. I call it If-oriented."
Examining your domain and creating a program to support it requires that you carefully evaluate what objects should exist, what their responsibilities are, and what you will name them.
East-orientation is all about designating responsibilities.
This leads us to breaking the rules…
We'll be getting to that later. There's likely very good reasons to break any particular programming rule, but it probably depends on the context.
I wrote Clean Ruby and the chapter on East-oriented Code before I set up the 4 rules for my presentation, but the same lessons are there. I'll be adding more to it, particularly as discussion and ideas around DCI evolve, but I'm putting effort toward wrapping up the Ruby DSL Handbook. It will soon be complete and the $12 price will go up to $24, so pick it up now if you're interested.
Ruby DSL Handbook is about how to create a DSL without headaches from metaprogramming and I just released an update with a chapter about creating a DSL without metaprogramming at all. Much like this discussion today, it's all about managing responsibilities.
The 4 Rules of East-oriented Code: Rule 2
by Jim
In a previous article I wrote about the first rule of East-oriented Code.
Here again are the rules I set forth in my presentation at RubyConf:
- Always return self
- Objects may query themselves
- Factories are exempt
- Break the rules sparingly
The second rule, that "Objects may query themselves", allows the design of objects to work with their own attributes.
When we design our systems of interacting objects we can use the Tell, Don't Ask approach to limit the decisions in the code to objects which are responsible for the data used to make them.
The Tell, Don't Ask article begins by quoting Alec Sharp:
Procedural code gets information then makes decisions. Object-oriented code tells objects to do things.
In order for objects to do things, they may need to ask questions about their own data. Though the first rule of East-oriented Code says that you should return
self, internal private methods don't need to follow this rule. We can and might need to create query methods to allow the object to make decisions.
It's easy to begin designing an object by specifying what it's attributes are:
class Person
attr_reader :name, :nickname, :gender
When we do that, we also implicitly allow other objects to use these attributes and make decisions:
if person.nickname =~ /^DJ/
In the sample code above we're using a method
setup_playlist_preferences which accepts a single argument. The decision about what value to set is made outside of the
person object. As additional options are added to the system, this
if may have
elsif clauses added to it or it may turn into a
case statement. With public attributes, those changes can appear in multiple places in your system, which can lead to headaches when the structures of your objects change.
Alternatively, we could command the object to do what we want:
Any decision about what to do to setup preferences can be made inside the
setup_playlist_preferences method.
Here's a summary from the C2 wiki
Very very short summary: It is okay to use accessors to get the state of an object, as long as you don't use the result to make decisions outside the object. Any decisions based entirely upon the state of one object should be made 'inside' the object itself.
One way to prevent decisions about an object from being made outside that object is to limit the public information:
class Person
attr_reader :name, :nickname, :gender
If you like this, check out the new book I'm writing: Ruby DSL Handbook which is currently half-off the final price. It's designed to be a guide to help you make decisions about how to build your own DSL and compressions of concepts.
The 4 Rules of East-oriented Code: Rule 1
by Jim
4 simple rules are pretty easy to remember, but a bit harder to understand and apply.
A key concept of East-oriented Code is to enforce the use of commands by returning the object receiving a message.
Here's a simple example of what that looks like:
def do_something
# logic for doing something omitted...
It's incredibly simple to follow.
Here are the rules I set forth in my presentation at RubyConf:
- Always return self
- Objects may query themselves
- Factories are exempt
- Break the rules sparingly
The first three are hard rules. The fourth, obviously, is more lenient. We'll get to some guidance on breaking the rules in the future but for now let's look at applying this to your code.
Rule 1: Always return self
Although this rule is simple at first, it inevitably leads to the queston of getter methods.
What if your objects had no getters? What if an object's
name attribute simply was inaccessible to an external object?
You can make your data private by either marking your
attr_accessors as private:
attr_accessor :name
private :name
Or you can use the
private method to mark all of the following defined methods to be private:
attr_accessor :name
How you choose to do it will depend upon your code, but this would help you remove any getter methods.
Now this leaves you with a conundrum. How do you use the information?
If you have a need for that
name, what can you do?
The only answer is to create a command which will apply the data to the thing you need.
def apply_name_to(form)
form.name = name
The restricitions we put in our code are often self-imposed.
We can make whatever we want, so what's to stop us from putting Rails model data manipulation in it's view template? Nothing concrete stops us from doing so.
The same goes for getter methods like
name. If it is publicly accessible by external objects, then we can create whatever
if and
case statements we want. We can put logic wherever we want.
If we create our own restrictions, we can guide ourselves and other programmers to the direction we intend for our application's structure.
Creating restrictions
I've written about the Forwardable library in the past not only because of it's usefulness, but because we can copy the same pattern to create our own DSL.
Forwardable provides methods which create getter methods for related objects. But what if we created our own DSL for commands to related objects? What if we could pass the messages on, but allow the related object to handle the values?
Here's what that could look like:
class Person
command :send_email => :emailer
person = Person.find(1) # get some record
person.emailer = Emailer.get # get some object to handle the emailing
That's a lot of pseudo-code but the parts we care about are sending the command to a related object. Commands return the receiving object, queries will return a value.
Here's what that code would look like without our (yet unimplemented)
command DSL.
class Person
def send_email
Any code which uses a
Person will have to rely on the command to do its own thing. This prevents a programmer from leaking logic out of the person.
What should happen when the email is sent? With the structure above, this code, can't make decisions:
if person.send_email
# do one thing
# this will never work now
If you find that you often write code like the
if statement above, you might wonder "where does that logic go now?" Now, you'll be forced to write this code:
And this means that your
send_email now has the job of handling what to do:
class Person
def send_email
# do some other things...
That might provide you with better cohesion; the related behaviors remain together.
Getting back to that
command DSL we used above…
This was the final point of my presentation at RubyConf: you can build guidlines like this for yourself.
I created a gem called
direction to handle enforcing this East-oriented approach. I'll write more about that later, but it shows that I can create signals to other developers on my team. I can take a simple concept like a command and simplify my code to show other developers what's happening:
class Person
command :send_email => :emailer
Building a DSL can aid in communication. The language and terminology we use can compress ideas into easily digestible parts.
If you like this, check out my new book: Ruby DSL Handbook designed to be a guide to help you build your own compressions of concepts.
Ruby Forwardable deep dive
by Jim
The Forwardable library is one of my favorite tools from Ruby's standard library both for simplifying my own code and learning how to make simple libraries.
I find that the best way to understand how code works is to first understand why it exists and how you use it. In a previous article I wrote about the value of using Forwardable. It takes code like this:
def street
def city
def state
And makes it as short as this:
delegate [:street, :city, :state] => :address
Shrinking our code without losing behavior is a great feature which Forwardable provides. So how does it work?
Modules and their context
Forwardable is a module, which can be used to add behavior to an object. Most of the of modules I see tend to be used like this:
class Person
include SuperSpecial
But Forwardable is different and is designed to be used with the
extend method.
require 'forwardable'
class Person
extend Forwardable
extend includes the module into the
singleton_class of the current object. There's a bit more to it than that, but here's a simple model to keep in mind: use
include in your class to add instance methods; use
extend in your class to add class methods.
Now that we have that out of the way, to use Forwardable, use
Defining forwarding rules
My most often used feature of Forwardable is the one you saw above:
delegate. It accepts a hash where the keys can be symbol or string method names, or an array of symbols and strings. The values provided are accessors for the object to which you'll be forwarding the method names.
class Person
extend Forwardable
delegate [:message_to_forward, :another_method_name] => :object_to_receive_message,
:single_method => :other_object
Other shortcuts
Forwardable provides a few methods, and most commonly you'll see their shortened versions:
def_delegator, and
def_delegators. These are actually alias methods of the originals.
alias delegate instance_delegate
alias def_delegators def_instance_delegators
alias def_delegator def_instance_delegator
delegate method we reviewed above is a bit of a shortcut for similar behavior that other methods provide in Forwardable.
def_delegators method accepts multiple arguments but it's sometimes hard for me to remember that one argument in particular is important. The first argument is the reference to the related object, the next arguments are used to create methods to forward.
class SpecialCollection
extend Forwardable
def_delegators :@collection, :clear, :first, :push, :shift, :size
# The above is equivalent to:
delegate [:clear, :first, :push, :shift, :size] => :@collection
As you can see, with
delegate there's a visual separation between the accessor and the list of methods.
There's more of a difference between
delegate and
def_delegators too.
def instance_delegate(hash) # aliased as delegate
hash.each{ |methods, accessor|
methods = [methods] unless methods.respond_to?(:each)
methods.each{ |method|
def_instance_delegator(accessor, method)
Here the code loops through the hash argument changing the keys into arrays of methods if they aren't already arrays, and then calls the
def_instance_delegator method for each item in the array. Here's what
def_instance_delegators looks like. Note that this is the plural version:
def def_instance_delegators(accessor, *methods) # aliased as def_delegators
for method in methods
def_instance_delegator(accessor, method)
This method speficially restricts the use of
__send__ and
__id__ in forwarded messages. These methods are particularly important in communicating with the forwarding object and determining its identity. If you only used
delegate and (for some strange reason) you specify either of
__send__ or
__id__ then those methods will pass right through. That might do exactly what you want or it might introduce some buggy behavior. This is mostly easy to avoid since you'll likely specify all the methods you need.
The different behavior is important to know, however, if you want to do a blanket forward for all methods from another class of objects:
class SpecialCollection
extend Forwardable
def_delegators :@collection, *Array.instance_methods
# The above is equivalent to:
delegate [*Array.instance_methods] => :@collection
If you do that, you'll likely see warnings from Ruby like this:
warning: redefining `__send__' may cause serious problems
Don't say Ruby didn't warn you!
def_delegators is a plural version of
def_delegator which provides more options than the two we've been reviewing.
class SpecialCollection
extend Forwardable
def_delegator :@collection, :clear, :remove
def_delegator :@collection, :first
The method
def_delegator accepts only three arguments. The first is the accessor for the related object (which will receive the forwarded message) and the second is the name of the message to be sent to the related object. The third argument is the name of the method to be created on the current class and is optional; if you don't specify it then the second argument will be used.
Here's what the above
def_delegator configurations would look like if you wrote out the feature yourself:
class SpecialCollection
extend Forwardable
# def_delegator :@collection, :clear, :remove
def remove
# def_delegator :@collection, :first
def first
You can see how the optional third argument is used as the name of the method on your class (e.g.
remove instead of
How the methods are created
We looked at how Forwardable adds class methods to your class. Let's look at the most important one:
def def_instance_delegator(accessor, method, ali = method)
line_no = __LINE__; str = %{
def #{ali}(*args, &block)
#{accessor}.__send__(:#{method}, *args, &block)
rescue Exception
$@.delete_if{|s| Forwardable::FILE_REGEXP =~ s} unless Forwardable::debug
# If it's not a class or module, it's an instance
module_eval(str, __FILE__, line_no)
instance_eval(str, __FILE__, line_no)
It looks like a lot, and it is, but let's strip it down to it's simplest form rather than review everything at once. Here's a simpler version:
def def_instance_delegator(accessor, method, ali = method)
str = %{
def #{ali}(*args, &block)
#{accessor}.__send__(:#{method}, *args, &block)
module_eval(str, __FILE__, __LINE__)
Remembering, of course, that
def_instance_delegator is aliased as
def_delegator we can see that a string is created which represents what the method definition will be and saved to the
str variable. Then then that variable is passed into
It's good to know that
module_eval is the same as
class_eval because I know I often see
class_eval but rarely see the other. Regardless,
class_eval is merely an alias for
The string for the generated method is used by
module_eval to create the actual instance method. It evaluates the string and turns it into Ruby code.
Taking this command
def_delegator :@collection, :clear, :remove here's what string will be generated:
def remove(*args, &block)
@collection.__send__(:clear, *args, &block)
Now it's a bit clearer what's going to be created.
If you're not familiar with
__send__, know that it's also aliased as
send. If you need to use the
send method to match your domain language, you can use it and rely on
__send__ for the original behavior. Here, the Forwardable code is cautiously avoiding any clashes with your domain language just in case you do use "send" as a behavior for some object in your system.
Maybe you're scratching your head about what either of those methods are at all. What the heck is
send anyway!?
The simplest way to describe it is to show it. This
@collection.__send__(:clear, *args, &block) is equivalent to:
@collection.clear(*args, &block)
All Ruby objects accept messages via the
__send__ method. It just so happens that you can use the dot notation to send messages too. For any method in your object, you could pass it's name as a string or symbol to
__send__ and it would work the same.
It's important to note that using
__send__ or
send will run private methods as well. If the
clear method on
@collection is marked as private, the use of
__send__ will circumvent that.
The methods defined by Forwardable will accept any arguments as specified by
*args. And each method may optionally accept a block as referred to in
It's likely that the acceptance of any arguments and block will not affect your use of the forwarding method, but it's good to know. If you send more arguments than the receiving method accepts, your forwarding method will happily pass them along and your receiving method will raise an
Managing errors
Forwardable maintains a regular expression that it uses to strip out references to itself in error messages.
FILE_REGEXP = %r"#{Regexp.quote(__FILE__)}"
This creates a regular expression where the current file path as specified by
__FILE__ is escaped for characters which might interfere with a regular expression.
That seems a bit useless by itself, but remembering the original implementation of
def_instance_delegator we'll see how it's used:
str = %{
def #{ali}(*args, &block)
#{accessor}.__send__(:#{method}, *args, &block)
rescue Exception
$@.delete_if{|s| Forwardable::FILE_REGEXP =~ s} unless Forwardable::debug
This code recues any exceptions from the forwarded message and removes references to the Forwardable file.
$@ or "dollar-at" global variable in Ruby refers to the backtrace for the last exception raised. A backtrace is an array of filenames plus their relevant line numbers and other reference information. Forwardable defines these forwarding methods to remove any lines which mention Forwardable itself. When your receive an error, you'll want the error to point to your code, and not the code from the library which generated it.
Looking at this implementation we can also see a reference to
Forwardable::debug which when set to a truthy value will not remove the Forwardable lines from the backtrace. Just use
Forwardable.debug = true if you run into trouble and want to see the full errors. I've never needed that myself, but at least it's there.
The next thing to do, of course, is to re-raise the cleaned up backtrace. Again Forwardable will be careful to avoid any overrides you may have defined for a method named
raise and explicitly uses
The double colon preceding
Kernel tells the Ruby interpreter to search from the top-level namespace for
Kernel. That means that if, for some crazy reason, you've defined a
Kernel underneath some other module name (such as
MyApp::Kernel) then Forwardable will use the standard behavior for
raise as defined in Ruby's
Kernel and not yours. That makes for predictable behavior.
Applying the generated methods
After creating the strings for the forwarding methods, Forwardable will attempt to use
module_eval to define the methods.
# If it's not a class or module, it's an instance
module_eval(str, __FILE__, line_no)
instance_eval(str, __FILE__, line_no)
If the use of module_eval raises an error, then it will fallback to
I've yet to find a place where I've needed this instance eval feature, but it's good to know about. What this means is that not only can you extend a class or module with Forwardable, but you can extend an individual object with it too.
object = Object.new
object.def_delegator ...
This code works, depending of course on what you put in your
def_delegator call.
Forwarding at the class or module level
All these shortcuts for defining methods are great, but they only work for instances of objects.
forwardable.rb also provides SingleForwardable, specifically designed for use with modules (classes are modules too).
class Person
extend Forwardable
extend SingleForwardable
In the above sample you can see that
Person is extended with both
Forwardable and
SingleForwardable. This means that this class can use shortcuts for forwarding methods for both instances and the class itself.
The reason this library defines those longform methods like
def_instance_delegator instead of just
def_delegator is for a scenario like this. If you wanted to use
def_delegator and those methods were not aliased, you'd need to choose only one part of this library.
class Person
extend Forwardable
extend SingleForwardable
single_delegate [:store_exception] => :ExceptionTracker
instance_delegate [:street, :city, :state] => :address
As you can probably guess from the above code, the names of each library's methods matter.
alias delegate single_delegate
alias def_delegators def_single_delegators
alias def_delegator def_single_delegator
If you use both Forwardable and SingleForwardable, you'll want to avoid the shortened versions like
delegate and be more specific by using
instance_delegate for Forwardable, or
single_delegate for SingleForwardable.
If you liked this article, please join my mailing list at http://clean-ruby.com or pick up the book today!
Avoiding clever mistakes when displaying data with missing values
by Jim
In a previous article I showed a snippet of code I've used for displaying address information. There were some tricks to getting it right that are valuable to know when you have to handle missing data.
Here's the problem, and how to solve it.
Let's setup some simple data to use:
street = "123 Main St."
city = "Arlington"
province = "VA"
postal_code = "222222"
The original implementation of displaying an address looked like this:
"".tap do |string|
string << street unless street.nil?
string << city unless city.nil?
string << province unless province.nil?
string << postal_code unless postal_code.nil?
While that code will skip missing data if there is any, it will just mash all the bits together creating this:
"123 Main St.ArlingtonVA22222"
That's not particularly helpful for displaying a readable address. I'm looking for it to display like this:
"123 Main St.
Arlington, VA 22222"
Here's what I tried next:
[street, [city, [province, postal_code].join(' ')].join(', ')].join("\n")
Thinking I was very clever, I ran the code with complete data and it worked quite well.
When I ran it with incomplete data I found that it didn't work the way I expected. For example, if the city value was nil, I got this:
"123 Main St.
That leading comma is just visual noise, so we need to remove that. Realizing that I had nil values in my arrays, I knew I could reach for the compact method to strip them out. After compacting the array, the join wouldn't have nil values to address; they'd be gone.
[street, [city, [province, postal_code].compact.join(' ')].compact.join(', ')].compact.join("\n")
This worked perfectly, to remove the leading comma:
"123 Main St.
Just to be sure I got it right, I began checking other data. Next, with the city set to "Arlington" and this time with the province and postal_code set to nil I saw this:
"123 Main St.
Arlington, "
Ugh! Now I had a trailing comma. Why wasn't this working!? Using compact should remove the nil values.
The problem was that I had an empty array for the province and postal_code. That meant that with both values removed from the array using compact, this was happening:
[].join(' ') #=> ""
And because that empty array returned a value of an empty string, I was joining the city value with an empty string. In this case, compact was doing nothing for me.
[city, [province, postal_code].compact.join(' ')].compact.join(', ')
# is the same as:
[city, ""].compact.join(', ')]
# which yields:
"Arlington, "
So there it was. Finally I found my problem that what I thought was nil, wasn't.
I decided to change the values to nil if they were empty strings:
province_and_postal_code = [province, postal_code].compact.join(' ')
province_and_postal_code = nil if province_and_postal_code.empty?
city_province_postal_code = [city, province_and_postal_code].compact.join(', ')
city_province_postal_code = nil if city_province_postal_code.empty?
[street, city_province_postal_code].compact.join("\n")
Finally, I got the output I needed:
"123 Main St.
"123 Main St.
"123 Main St.
Arlington, VA 22222"
My clever one-liner gave me unexpected behavior. While it was nice and short, it was also wrong. Eventually I ended up with code which is not just correct, but much more readable too. You might have your own preferences for how to handle these nil values. What would you do differently?
Enforcing encapsulation with East-oriented Code
by Jim
Often our programs become complicated inadventently. We don't intend to put things it the wrong place, it just seems to happen.
Most of the time it happens to me when I allow my objects to leak information and eventually their responsibilities.
In recent articles I showed code that handled displaying address details and how to separate the responsibility for formatting from the responsibility for data. But there's still a problem which would allow me or someone else to unintentionally leak responsibility from these objects.
It's a good idea to be guarded against how much you reveal from an object; you never know how someone might use it in the future.
In our Template code, we provide a number of values about the object: province, postalcode, city, street, apartment, provinceandpostalcode, cityprovincepostalcode, addresslines, and display_address. With each attribute provided, we introduce the ability to other objects to query the information and make decsions based upon the answer.
It's far too easy to write these types of queries:
if template.province == "..."
if template.city == "..." && template.postal_code == "..."
if template.city_province_postal_code.include?("...")
But what would our code look like if we couldn't do this? What if there were no questions to ask?
What if the only accessible information from our template was the
display_address used to show the formatted data?
require 'forwardable'
class Template
extend Forwardable
def display_address
def with_address(address)
@address = address
delegate [:province, :postal_code, :city, :street, :apartment] => :@address
def province_and_postal_code
# ...
def city_province_postal_code
# ...
def address_lines
[street, apartment, city_province_postal_code].compact
By moving most of our methods under the
private keyword, our Template interface has shrunk significantly. Now all we'll have to handle and all other objects will need to know about is the
display_address and
with_address methods.
East vs. West
The changes we made make a significant restriction on the questions that we can ask about an object. This is where the idea of East-orientation comes in.
If we imagine a compass applied to our source code we'd see that any query, any
if, will send the information flowing westward.
# <---- information travels West
if template.city == "..."
if handles the execution of the algorithm. But by removing methods from the public interface which provide attributes like above, we better encapsulate the data in the target object. Our template here could not answer a question about its city attribute.
Instead, the code which uses the template would be forced to command the template to perform a particular action. The body of the
if could instead become a method on the template object.
# ----> information travels East
The template can make it's own decisions about what to do when told to perform some action.
Enforce encapsulation with return values
An easy way to ensure that our code encourages commands, discourages queries, and enforces encapsulation is to control the return values of our methods.
The best thing to return is not necessarily the result of the method, but the object performing the method. It's as simple as adding
self to the end of the method block.
Here's what that might look like:
class Template
def with_address(address)
@address = address
By adding
self there, each time we set the address value object using
with_address we are given the object itself back, instead of the value that we passed to it.
# Without appending "self"
template.with_address(address) #=> address
# After appending "self"
template.with_address(address) #=> template
This becomes a powerful change to the way we interact with the template object. It enforces the encapsulation of data of the template and it forces us to think more about sending messages to our objects and allowing them to implement the solution.
When we return the object itself, we can only continue operation on that object.
The added benefit is that our code will become more concise. We will prevent unintentional dependencies between objects. And we can chain our commands together; it's all the same object:
See the flow at a glance
By using a visual compass to guide us through our code, it's easy to step back and see exactly where we leave our objects leaking information and responsibility.
Each time we query an object, each time we set a variable, we should now see the westward flow of information.
By simply returning
self from our methods, we will force the hand of every developer to think with East-orientation in mind. By only working with the same object we will get back to using objects in the way that tends to be the most useful: for handling messages and implementing the required algorithm.
One last issue is that of the
display_address method. Currently it returns the string representation of the address and not the template itself.
We can change that. What you do depends on how you're using a template. Perhaps our base Template will output details to STDOUT, or perhaps to a text file. Here's how we'd take care of that:
class Template
def display_address
STDOUT.puts address_lines.join("\n")
# or perhaps File.write ...
Try this with your code. Return "self" and see how it changes your thinking. Scan for westward flow of information and see how you can push responsibilities into the appropriate objects by heading East.
From now until the end of the year, you can get Clean Ruby for only $42 (the original pre-release price) by using this link. It'll only be valid this year (2014) and will go up automatically in January 2015. Merry Christmas!


text:
Econo Lodge
410 S.E. 1st Street
Oak Grove, MO 64075
Phone: (816) 690-3681
Fax: (816) 690-6399
Berkley Riverfront Park
Situated along the banks of Missouri River, the Riverfront Park is a green community space unlike any others. Managed by the Port Authority of Kansas City. Cyclists and walkers alike traffic the 'joggers' track', one of the many paths that will eventually be integrated into the Heritage Trail. The large open space also doubles up as a venue for outdoor events, with the required infrastructure to accommodate the crowds.
Riverfront Drive & Lydia Avenue
Kansas City, MO 64105
+1 816 221 0636
Earn valuable points toward free nights.


text:
ROSWELL, N.M. (AP) - A 12-year-old New Mexico boy drew a shotgun from a band-instrument case and shot and wounded two classmates at his middle school Tuesday morning before a teacher talked him into dropping the weapon and he was taken into custody, officials and witnesses said.
DALLAS (AP) - The fate of a brain-dead, pregnant Texas woman and her fetus likely will be decided in a courtroom after the woman's husband sued the hospital keeping her on life support against his wishes.
MOUNTAIN VIEW (AP) - Google will pay $3.2 billion to buy Nest Labs, which develops high-tech versions of devices like thermostats and smoke detectors, in its second-largest acquisition ever.
VERMONT SETTLES WITH MAKER OF MISLABELED VERMINTS: BURLINGTON, Vt. (AP) - Vermont reached a settlement with VerMints, a company that mislabeled its tins of mints as Vermont products.
WESLEY CHAPEL, Fla. (AP) - An argument over texting in a Florida movie theater Monday triggered a retired Tampa police captain to fatally shoot a man sitting in front of him, as about 25 horrified moviegoers looked on, sheriff's officials said.
SALT LAKE CITY (AP) - The University of Utah is investigating a complaint that a convicted felon working at a fertility clinic replaced a customer's sperm with his own, fathering a girl 21 years ago.
LITTLE ROCK, Ark. (AP) - A federal judge said Monday that Arkansas can stop making payments in one of the nation's most historic desegregation efforts but cautioned that work remains to ensure Little Rock-area students receive a proper education.
FRANKLIN, Mass. (AP) - A 7-year-old boy and his 8-year-old sister died after getting trapped in a hope chest in their home, authorities said Monday.
SANTA ANA (AP) - Two California police officers who were videotaped in a violent struggle with a homeless man during an arrest were acquitted Monday of killing him.
BOSTON (AP) - Eleanor McCullen clutches a baby's hat knit in pink and blue as she patrols a yellow semicircle painted on the sidewalk outside a Planned Parenthood health clinic on a frigid December morning with snow in the forecast.
LAS VEGAS (AP) - AT&T says it will start offering customers a subscription to streaming service Beats Music in a package that gives as many as five family members unlimited streaming and song downloading for $15 a month.
DRY BRANCH, W.Va. (AP) - For Bonnie Wireman, the white plastic bag covering her kitchen faucet is a reminder that she can't drink the water.
NEW YORK (AP) - Luxury merchant Neiman Marcus confirmed Saturday that thieves stole some of its customers' payment card information and made unauthorized charges over the holiday season, becoming the second retailer in recent weeks to announce it had fallen victim to a cyber-security attack.
LOS ANGELES (AP) - Fire and weather officials are urging Southern Californians to heed high fire and wind warnings over the next three days after a third year of especially dry conditions.
SEATTLE (AP) - Lt. Col. Edward Saylor, one of four surviving Doolittle Raiders who attacked Japan during a daring 1942 mission credited with lifting American morale during World War II, has died. He was 94.
SEATTLE (AP) - Seattle Police Chief Kathleen O'Toole has reassigned an officer involved in the arrest last summer of a 69-year-old man who refused to drop a golf club he was carrying on a city sidewalk.
CUPERTINO (AP) - The runaway success of Apple's newest iPhone has fueled a dramatic shift in the global market: the California tech giant is now neck-and-neck with South Korea's Samsung for the title of world's leading seller of smartphones.
PHILADELPHIA (AP) - Better messaging, not changes in policy, is the key to winning elections again, House Democrats said Thursday as they huddled in Philadelphia to talk strategy. And the message, they said, must focus relentlessly on middle class paychecks.
NEW YORK (AP) - It was a Prime quarter for Amazon.
MOUNTAIN VIEW (AP) - Google has gotten into the habit of missing analysts' earnings targets, frustrating investors who believe the online search leader would be more profitable it wasn't pouring so much money into far-flung projects such as Internet-connected eyewear and driverless cars.
STATELINE, Nev. (AP) - A shuttered hotel-casino on the south shore of Lake Tahoe has reopened under the Hard Rock banner after a $60 million renovation that local business and tourism officials hope will help jump-start the struggling main casino drag in the shadow of a big ski resort.
TAMPA, Fla. (AP) - Bart the cat was hit by a car, buried and seemingly crawled back from the dead.
BRIDGEVIEW, Ill. (AP) - Two brothers accused of digging up graves, dumping human remains and reselling plots at a suburban Chicago cemetery went on trial Wednesday in Cook County Circuit Court.
MINNEAPOLIS (AP) - "American Sniper" is tops at the box office but don't expect to see former Minnesota Gov. Jesse Ventura lining up at a theater for it.
ALBUQUERQUE, N.M. (AP) - A disgruntled, former Los Alamos National Laboratory scientist promised to build 40 nuclear weapons for Venezuela in 10 years and design a bomb targeted for New York City in exchange for "money and power," according to secret FBI recordings released Wednesday.
CAMDEN, N.J. (AP) - A woman admitted on Wednesday that she helped two of her children conceal evidence of a gang-related double slaying that occurred at her home, where the bodies were buried in a yard.


text:
Shop now and get Free Value Shipping on most orders over $49 to the contiguous 48 states, DC and to all U.S. Military APO/FPO/DPO addresses.
We want to ensure that making a return is as easy and hassle-free as possible! If for any reason you decide that your purchase just isn't for you, simply return the item within 30 days of receipt and we'll cover the cost of return shipping. Learn more about our Return Policy.
The Case Knives Peach Seed Jigged Magenta Bone Medium Folding Stockman Knife 60432 comes with all the blades you'll need to be successful in any cutting task. The Clip, Pen and Spey blades on this Folding Knife from Case are made using a durable stainless steel material that is guaranteed to require less sharpening than knives made using inferior steels. For a great way to make sure you have the best possible knife with you at all times, choose the Case Peach Seed Magenta Medium Stockman Knife.
Connect with OpticsPlanet
Become our fan, follow us, & subscribe for the latest updates and deals
Subscribe to our email list
Sign up and receive $5 Off and get exclusive access to promotions, sales
events, pre-order sales & more!
Contact Information
Toll-Free: 800-504-5897
Intl.: 847-513-6201
Fax: 847-919-3003
Email: email@example.com
Hours of Operation
7AM-8PM CST Mon-Fri9AM-5PM CST Sat-Sun
Our Guarantees


text:
Academic Enrichment
Academic Enrichment Camp
Adaptive Services
Advice & News
Advocacy & Social Services
Alternative Medicine
Apple, Berry & Pumpkin Picking
Art Camp
Art Class
Baby Products
Baseball & Softball
Behavior & Discipline
Behavior Management
Birthday Ideas & Inspiration
Birthday Party Places
Camp Advice & Tips
Camp Advisors & Consultants
Child Care
Classes, Fun & Socialization: Special Needs
Cooking Camp
Cooking Class
Creative Arts Therapies
Dance Camp
Dance Class
Day Camp
Day Care & Child Care
Dentists & Dental Providers
Developmental Disorders
Divorce & Custody Rights
Doctors & Medical Providers
Doctors & Treatment Providers
Doula & Baby Nurse
Early Intervention
Education Stores & Resources
Emotional & Socialization Disorders
Family Law & Legal Services
Finance & Insurance
Food & Nutrition
Food Services & Catering
Foreign Language
Foreign Language Camp
Foreign Language Class
GENERAL - Table of Contents
Gymnastics & Cheerleading
Home Services
Horseback Riding
Hospitals & Medical Centers
Indoor Play Spaces
Kid's Products
Kids' Health
Learning Disabilities & Dyslexia
Legal & Future Planning
Martial Arts
Math & Science Class
Mental Health & Depression
Mental Health: Special Needs
Mommy & Me Class
Museums & Planetariums
Music Camp
Music Class
Nanny, Babysitter & Au Pair Services
Occupational & Physical Therapy
Parent Groups & Playgroups
Parent Support
Party Entertainment
Party Stores & Resources
Physical Disabilities
Play Therapy
Pregnancy & Baby
Private School
Public School
Religious School
Sensory Integration
Skating & Ice Hockey
Special Education
Special Education
Special Needs Camp
Special Needs Schools
Speech Therapy
Sporting Events
Sports & Fitness Classes
Sports Camp
Sports Programs
STEM, Science & Tech Camp
Swimming & Water Sports
Theater & Acting Camp
Theater & Acting Class
Therapy & Counselors
Tutors & Test Prep
Video & Photo
Video of the Week
Vision Therapy
Vocational Training
Women's Health
Zoos & Aquariums
Find fun and free/low-cost things to do with kids in Queens this June, including a bunny bonanza, summer solstice festival, and 'Men in Black 3' exhibit.
Yoo Hoo, It's Blue!
Join Blue and Steve as Plaza Theatrical Productions presents Blue's Clues: The Most Spectacular Place, an interactive musical adventure based on the popular Nickelodeon television series. On stage at the Long Island Children's Museum, the loveable Blue and her human companion lead the audience on a clue-based journey in search of the most spectacular place of all. The quest takes them through Storybook Forest, where Blue and Steve meet the three little pigs, Goldilocks, and other characters from classic fairy tales, all the way to outer space, where the pair discovers planets and other celestial wonders. When they find the final clue, Blue and Steve learn that aside from the surprise-filled world of theater, home is the most spectacular place of all.
Lend a Hand
Roll up your sleeves and join your neighbors at a Community Volunteer Day, when you'll seed, weed, and help keep the Queens Botanical Garden clean and green.
All About Bunnies
Tots can listen to rabbit tales, take a nature walk, and join in some furry fun at Alley Pond Environmental Center's Bunny Bonanza.
All About Dad
Father's Day is June 17. If your dad's like most, he probably doesn't need any more ties, tools, or aftershave. Instead, give him some quality time in honor of his day. Choose from these dad-friendly events happening this month.
Summer's the Time for Fun
Celebrate the new season at Summer Solstice with Birds. Enjoy a day of music, story, nature, and family fun at Queens Botanical Garden. Avian enthusiast Shari Romar will lead a bird and nature walk at 11am, storyteller Bobby Gonzalez will spin some tales at 1pm, and the highly regarded and world-touring Quintet of the Americas will perform at 2:30pm.
The Aliens Have Arrived
The extraterrestrials in the Men in Black series, created by Rick Barker, are among the most memorable visual elements in these comical action-adventure films. The exhibit Aliens, Gadgets and Guns: Designing the World of 'Men in Black 3' features more than 25 objects from the third installment of the film series and includes Baker's alien creatures, memory-erasing neuralyzers, and the iconic black shades worn by Agents J and K. Exclusive behind-the-scenes footage of Baker creating alien creature makeup is also featured in this exhibit.
Search for even more fun family events in Queens and the NYC area in our full calendar of events
Find the top things to do this month with kids in the NYC area in our Calendar of Events
Theater Performances for Kids in Queens this March
Top Activities for Kids Who Love History in Queens in March
Kid-Friendly Concerts and Musical Activities in Queens in March
Dance Performances and Events for Kids in Queens this March
Arts and Crafts Activities for Kids in Queens in March
local zones
Nassau cont.
Suffolk cont.
Westchester cont.
Rockland cont.
Queens cont.
Brooklyn cont.


text:
My Cart
Store Locator
VIP Membership Terms: Normally $24.99 per year, but your Web Exclusive deal means you enjoy 3 months of VIP Family Benefits for $1.99. Check out your savings and benefits below.
Cancellation: Rest assured you can cancel your new membership at any time during the year at a pro-rated rate, simply call your VIP Hotline at 800.543.7309 or click here to submit your cancellation request. Benefits and prices are subject to change.
Want more info? Click here and read 'til your heart's content or call your VIP Hotline at 800.543.7309
Get the Latest, Sign Up Now!
Men's R-Gear
Runner's High Singlet
Runner's High Sleeveless
Runner's High Short Sleeve
Runner's High Long Sleeve
Glow Getter Jacket
Men's Nike
Dri-Fit Knit Long Sleeve
Core Comp Digital Rush 6" Short
Men's Under Armour
Raid Printed Short
Light Weight Full Zip Jacket
Launch 2-in-1 Short
Launch Stretch Woven 9" Short
HeatGear Armourvent Launch Shortsleeve T
Launch 7" Reflect Short
Alter Ego Batman T
Alter Ego Captain America T
Alter Ego Superman T
HeatGear Reflex Short 10"
Alter Ego Spiderman T
7" Phenom 2-in-1 Short
Tech Short Sleeve T
9" Phenom 2-in-1 Short
Men's ASICS
2-n-1 Short, 6"
Back to top
ENJOY YOUR BIGGEST BENEFITS EVERY DAY Get FREE Shipping every day • Your WARP SPEED PROMISE • Ultimate Test Run 90-Day Wear 'em & Love 'em Guarantee • tons more perks! JOIN NOW!! �
Become a Fan & Follow Us.


text:
Tie Dye Bodysuit - Lavender
Out of Stock
If you are looking for a unique way to dress your baby then the Tie Dye Bodysuit - Lavender is the bodysuit for you!
This tie dye bodysuit is super comfortable because of the 100% cotton material. Also the reinforced three snap closure allows for easy multiple changings throughout the day.
The flatlock seams and double needle binding are just some of the other superb features this bodysuit has.
There are many other Tie Dye Bodysuits for your baby to wear all over town! See All Purple Baby Products
Product Specifications
PatternTie Dye
BrandBaby Milano
Product TypeApparel
Recommended Age GroupBaby
Sleeve LengthShort Sleeves
Product StatusDiscontinued,Out of Stock
Apparel TypeOnesies
Write an Online Review Average Customer Rating: Not yet rated


text:
Book your room at Hampton Inn Sidney
Two queen beds nonsmokingMax Occupancy: 5 guests (up to 4 children, 4 infants)
One king bed nonsmokingMax Occupancy: 3 guests (up to 2 children, 2 infants)
One king bed study nonsmokMax Occupancy: 4 guests (up to 3 children, 3 infants)
One King Bed, Non-Smoking, AccessibleMax Occupancy: 3 guests (up to 2 children, 2 infants)
Sidney hotel with an indoor pool
Collect 200 points
Simply enter your Nectar card number when prompted. Your points will be credited 30 days after you return from your trip.*Offers may apply
Situated in a rural location, this hotel is close to Shelby County Fairgrounds. Area attractions also include Shelby Oaks Golf Club.
Hotel Features
Recreational amenities at Hampton Inn Sidney include an indoor pool and a fitness center. Other amenities include a bar/lounge and complimentary wireless Internet access.
Room Amenities
LCD televisions come with premium digital channels. Guestrooms also feature complimentary wireless Internet access, refrigerators, and microwaves.Information missing or incorrect? Tell us!
Hotel Amenities
Hotel Amenities
Hampton Inn Sidney features an indoor pool and a fitness center. A bar/lounge is on site where guests can unwind with a drink. Guests can enjoy a complimentary breakfast. High-speed wired and wireless Internet access is complimentary.
This hotel offers access to a 24-hour business center and meeting rooms. Event facilities measuring 981 square feet (91 square meters) include conference space. This business-friendly hotel also offers a library, coffee/tea in the lobby, and complimentary newspapers in the lobby. Onsite self parking is complimentary.
Hampton Inn Sidney has designated areas for smoking.
- Conference space
- Indoor pool
- Fitness facilities
- Free breakfast
- 24-hour front desk
- Number of floors - 3
- Bar/lounge
- Express check-out
- Free wired high-speed Internet
- Total number of rooms - 94
- Luggage storage
- Safe-deposit box at front desk
- Free self parking
- Conference space size (meters) - 91
- Conference space size (feet) - 981
- Coffee/tea in lobby
- Free newspapers in lobby
- Dry cleaning/laundry service
- Elevator/lift
- Express check-in
- Designated smoking areas (fines apply)
- Designated smoking areas
- Free WiFi
- Laundry facilities
- Library
- Meeting rooms
- Year Built 1999
- 24-hour business center
- Number of meeting rooms - 2
- Number of buildings/towers - 1
- Television in lobby
- Free use of nearby fitness center
Available in all rooms: Free WiFi
Available in some public areas: Free WiFi , Free wired high-speed Internet
Free self parking
Room Amenities
- Pay movies
- Phone
- Premium TV channels
- Microwave
- Coffee/tea maker
- Video-game console
- Hair dryer
- Iron/ironing board
- Rollaway/extra beds available
- Climate control
- Free weekday newspaper
- Air conditioning
- Free local calls
- Refrigerator
- Daily housekeeping
- Private bathroom
- Free toiletries
- Desk
- Cribs/infant beds available
- Digital TV service
- Free WiFi
Where to Eat
Guests are offered a complimentary hot/cold buffet breakfast.
Nearby Things to Do
Recreational amenities at the hotel include an indoor pool and a fitness center.
Children under 13 years old are not allowed in the swimming pool or fitness facility without adult supervision.
The recreational activities listed below are available either on site or nearby; fees may apply.
- Golfing nearby
To make requests for specific accessibility needs, complete the "Special or Accessibility Requests" section of "Trip Preferences" when you book your hotel.
- In-room accessibility
- Accessibility equipment for the deaf
- Accessible bathroom
- Accessible parking
- Roll-in shower
Hotel Policies
Payment types
You need to know
Extra-person charges may apply and vary depending on hotel policy.
Government-issued photo identification and a credit card or cash deposit are required at check-in for incidental charges.
Special requests are subject to availability upon check-in and may incur additional charges. Special requests cannot be guaranteed.
- A 1.5 percent city/local tax will be charged
- Rollaway bed fee: USD 10.00 per stay
We should mention
Children 18 years old and younger stay free when occupying the parent or guardian's room, using existing bedding.


text:
Blended and Step Family Parenting
> Anyone familiar with nuances of CA law?
Here, for simply walking into the City-County Bldg. and forking over less than a dollar, you may have copies of every police incident report ever associated with any address in the city. For slightly more effort, you may have a cassette copy of any 9-1-1 call associated with any address you name. (At least, a few years ago that was true. I suppose things could've changed since then.)
Evidently, to get similar records from CA, you're supposed to know the exact date and approximate time of the incident and be a "concerned party". Do any of you know if they're unbending about that? Specifically:
* Might an out-of-state ex-husband be considered a "concerned party", if his minor child has extended visits with his ex-wife in CA; she's fighting for the child to move back there with her; and she recently had some alarming bruising and is living with a BF with a history of domestic battery accusations from other women? (In other words, if there have been police runs to her place, over DB, he'd like to see copies of the reports and know what his child could potentially be exposed to, during visits...)
* If he WERE considered a "concerned party", would police work with him on determining the dates of police runs (
or reassure him that there haven't been any
... maybe someone just grabbed his ex-wife's arm hard, to keep her from falling in front of a trolley or something...)?
* If CA would definitely NOT consider DH eligible to know about police runs to his ex-wife's address, is that "public information" (i.e., could he insist he's entitled to it)? What IS the dividing line between what is and isn't "public info."?
Powered by vBulletin® Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
vBulletin Optimisation provided by
vB Optimise (Pro)
vBulletin Mods & Addons
Copyright © 2014 DragonByte Technologies Ltd.
User Alert System provided by
Advanced User Tagging (Pro)
vBulletin Mods & Addons
Copyright © 2014 DragonByte Technologies Ltd.


text:
Narrow your search
Oral-B, Smart Kapp, Cobi, and student Kenneth Shinozuka enter the 2015 winners circle for their unique approaches to Bluetooth-compatible products and services.
A sophisticated prediction software ran tens of thousands of scenarios and picked one team to win 60 percent of the time. Is it the team you're rooting for?
We start with one great appliance on the first day and keep adding one more every day for 10 days. That means you have a chance at winning* up to ten smart appliances!
Reports point to a brand new Apple TV in June; we take a look at an Apple Drone concept; and the App of the Week is Memoji Keyboard. Plus, our Mophie giveaway winners!
Chief executive Marcelo Claure defends the company's stance as the only major wireless operator to support the FCC's new Net neutrality regulation.
In addition to its Snapdragon 801 quad-core processor, 1080p display, and 13-megapixel camera, Motorola's second-gen Moto X features custom design options that now include leather backings.
The new wearable and pair of smartphones have given a jolt to the tech industry. CNET looks at the reverberations for Apple's rivals and partners.
The Wellcome Trust has announced the 20 winners of its 2015 Image Awards for medical science images. Here are our favourites.
Contest time! The grand-prize bundle is worth over $1,000, and nine runners-up will score Lemur's cool BlueDriver car scanner.
Forty of the brightest high school students from around the country are competing in the ultimate science fair, with projects that have the potential to save lives. The winner of the Intel Science Talent Search will be announced Tuesday, March 10, with a million dollars in awards up for grabs. Previous winners have gone on to win the Nobel Prize. CNET's Kara Tsuboi talked to two finalists who hope their projects can help people who are sick.


text:
I work in the commie state of Illinois(Indiana resident), plus my job won't allow firearms on their property!!
Sent from somewhere at sometime during that one day.
Man, it just soaked in thru my thick skull how many of us are in the same boat - being denied the RIGHT to carry while at work. The paranoia of employers pertaining to the possibility of being sued if somebody gets hurt. Don't they understand that if a crazy fool is going to go ape-sh!t and shoot up the office or factory, a "rule" against carrying is not going to stop him/her/it?
There is a BIG difference in the law verses company policy! There are many places where the prejudice employer will violate your right of self-defense. If you chose to CCW which is not against the law you are only subject to the prejudicial behavior of the 'boss'. Many do CCW in this environment( I did) and have made a conscious decision to put their safety and safety of others above the possible negative consequences, based on prejudice, they maybe subject to. They are truly the most responsible people among us and they should be supported to the hilt by ALL who TRULY believe in the RTKABA's!
An armed society is not always a polite society, but it is a free and safe society!
Self Defense is an absolute and natural right!
Keep your head down and your powder dry!
I feel the EXACT ^^^^^ same way about College. In Virginia it is perfectly LEGAL to carry on College Campuses. In most cases, the college violates my right to defense. So, I make a decision to arm myself. At the end of the day, I AM GOING HOME. PERIOD!
Sent by my homing pigeon that suffers from severe social anxiety.
At school, I carry an LC9. Nice and small. No need for more than the 8 rounds it carries. I'm not Rambo or Chuck Norris. I'm only trying to save my own skin in a SHTF situation. I'll still barricade the door and hide out. However, IF the shooter gains access to the room I am in, and it is gonna be him that dies, or me that dies, I want it to be him. I NEED to get home to my daughter at any cost.
GOOD MAN! MoHawk!! And the reality is that IS what It comes down to,..Who Lives and who dies,..who goes home and who goes to the Coroners Office....
Sent from my iPad using Firearms Talk


text:
Hispeed Benelux-train crossing Eppegem station to Amsterdam.
This elevador is running between the Douro river and Batalha.
The 'Ötscherbär' is a train with a special car where kids can play. The original brown loco for this train, the 1099013, has even a picture of a play-bear on the front; this is the replacement loc... (more)


text:
Rookie here, first post. Purchased a used speacialized dual suspension. I have a question. What is considered a worn tire? My front tire has a deeper depth tread than my rear one. Please advise. Thx
Results 1 to 7 of 7
Thread: Tires Depth Thread
Similar Threads
Hot Deals See All Hot Deals >>
Latest Mountain Bike Articles
MTBR on Facebook


text:
To prevent and suppress rising resentment is wise and glorious, is manly and divine.
Isaac Watts (1674 - 1748)
Contributed by: Zaady
And while the lamp holds out to burn, The vilest sinner may return.
Source: Hymns and Spiritual Songs. Book i. Hymn 88.
Fly, like a youthful hart or roe, Over the hills where spices grow.
Source: Hymns and Spiritual Songs. Book i. Hymn 79.
Let dogs delight to bark and bite, For God hath made them so; Let bears and lions growl and fight, For 't is their nature too.
Source: Song xvi.
Earth, thou great footstool of our God, who reigns on high; thou fruitful source of all our raiment, life, and food; our house, our parent, and our nurse.
From all who dwell below the skies Let the Creator's praise arise; Let the Redeemer's name be sung Through every land, by every tongue.
Source: Psalm cxvii.
Whene'er I take my walks abroad, How many poor I see! What shall I render to my God For all his gifts to me?
Source: Divine Songs. Song iv.
Strange that a harp of thousand strings Should keep in tune so long!
Source: Hymns and Spiritual Songs. Book ii. Hymn 19.
There is a land of pure delight, Where saints immortal reign; Infinite day excludes the night, And pleasures banish pain.
Source: Hymns and Spiritual Songs. Book ii. Hymn 66.
The tall, the wise, the reverend head Must lie as low as ours.
Source: Hymns and Spiritual Songs. Book ii. Hymn 63.
Copyright © 2015 Gaiam, Inc.