text:
JavaFX 2 Game Tutorial Part 2
Join the DZone community and get the full member experience.Join For Free
t his is the second installment of a series of blog entries relating to a javafx 2 game tutorial. if you have not read part 1 please see the introduction section of the javafx 2 game tutorial. to recap in part 1, i mention some aspects of game play and a simple demo of a prototype spaceship (comprised of simple shapes) that is capable of navigating via the mouse. disclaimer : this is a long tutorial so if you just want to run the demo just click here . the demo is called atom smasher where you generate atoms (spheres) that collide. you may freeze the game to add more atoms. the objective is to have more than one atom alive and bouncing around. a text displays the current number of atoms floating around. before beginning our discussion on a game loop i wanted to give you some background history about games and animation.
back in the day (during the 80s-90s) many game programmers attempted to animate images has encountered the infamous screen flicker problem. this is where your sprites (graphic images) will often flash and make the game look quite awful. all monitors have a refresh rate where certain intervals the pixels will be redrawn (called vertical retrace crts ). for example, if the refresh rate is 80 hz it is approximately 80 times a second the screen is redrawn. if you are modifying things on the screen you can often be out of synch because of being in the middle of a refresh interval. what should you do about this? well, actually there are two things that will help remedy this problem (double buffering & knowing when the cycle is occurring). some clever developers created a technique called double buffering. double buffering is a technique which consists of two surfaces where each takes turns on becoming the displayable surface and the other is an offscreen area (buffer surface). this technique is really a digital sleight of hand trick where the developer can pre calculate the sprites and their positions to be drawn on the offscreen surface. once you are finished drawing on the offscreen buffer the code will switch it as the displayable surface. an important thing to point out is that we still have an issue due to the fact that we need to be notified when the refresh interval is about to begin the redraw process. in java this ability is built in via the bufferstrategy api. so, where am i going with this? sometimes explaining the past strategies will help us appreciate what we have today. do we need to do this in javafx? nope. have no fear javafx is here! all the issues that i've mentioned are all taken care of for us by using javafx's scene graph api. however, most games still use the old fashion way of animating graphics and updating the game world called the game loop.
the game loop
simply put the game loop is responsible for updating sprites (graphics), checking collision, and cleanup. older game loops will check for key and mouse events as part of the loop. since javafx abstracts events to allow the scene or individual nodes to handle events the ability to listen to low level events aren't necessary in our game loop. shown below is a source code snippet of a typical game loop which will update sprites, check collisions, and cleanup sprites at each cycle. you will notice the duration object from javafx 2.x which represents 60 divided by 1000 milliseconds or 60 frames per second(fps). each frame will call the handle() method of the javafx's eventhandler interface in order to update the game world. hypothetically, i've create three methods updatesprites() , checkcollisions() , and cleanupsprites() that will be invoked to handle sprites in the game.
final duration oneframeamt = duration.millis(1000/60); final keyframe oneframe = new keyframe(oneframeamt, new eventhandler() { @override public void handle(javafx.event.actionevent event) { // update actors updatesprites(); // check for collision checkcollisions(); // removed dead things cleanupsprites(); } }); // oneframe // sets the game world's game loop (timeline) timelinebuilder.create() .cyclecount(animation.indefinite) .keyframes(oneframe) .build() .play();
the above code snippet is really all you need to create a simple game or animation. however, you may want to take things to the next level. you may want to create a game engine that can manage sprites and the state of the game world.
game engine
a game engine is a fancy name for a utility or library responsible for encapsulating the game world, running the game loop, managing sprites, physics, etc. this is essentially a small game framework that allows you to extend or reuse so you don't have to reinvent the wheel when creating a 2d game from scratch. to fast forward i created a uml class diagram of a design of a game engine.
shown below is figure 1 a javafx game engine class diagram.
in figure 1 a javafx 2 game engine design you will notice three classes a gameworld , spritemanager , and sprite . the gameworld class is responsible for initializing the game state, executing the game loop, updating sprites, handling sprite collisions, and cleaning up. next is the spritemanager class which in charge of managing sprites by adding, removing, and other house keeping for collisions. lastly, is the sprite class which is responsible for maintaining the state of an image (actor). in a 2d world a sprite can contain the object's velocity, rotation, scene node or image that eventually gets rendered at each cycle (key frame/frames per second).
just a quick reminder on uml notation: the plus symbol '+' denotes that a class member is public, minus symbol '-' is private, and hash symbol '#' means protected.
below is the source code implementation of the gameworld class. click to expand. later you will see a class diagram depicting a simple demo game that will extend the gameworld class.
package carlfx.gameengine; import javafx.animation.animation; import javafx.animation.keyframe; import javafx.animation.timeline; import javafx.animation.timelinebuilder; import javafx.event.actionevent; import javafx.event.eventhandler; import javafx.scene.group; import javafx.scene.scene; import javafx.stage.stage; import javafx.util.duration; /** * this application demonstrates a javafx 2.x game loop. * shown below are the methods which comprise of the fundamentals to a * simple game loop in javafx: * * initialize() - initialize the game world. * begingameloop() - creates a javafx timeline object containing the game life cycle. * updatesprites() - updates the sprite objects each period (per frame) * checkcollisions() - method will determine objects that collide with each other. * cleanupsprites() - any sprite objects needing to be removed from play. * * @author cdea */ public abstract class gameworld { /** the javafx scene as the game surface */ private scene gamesurface; /** all nodes to be displayed in the game window. */ private group scenenodes; /** the game loop using javafx's timeline api.*/ private static timeline gameloop; /** number of frames per second. */ private final int framespersecond; /** title in the application window.*/ private final string windowtitle; /** * the sprite manager. */ private final spritemanager spritemanager = new spritemanager(); /** * constructor that is called by the derived class. this will * set the frames per second, title, and setup the game loop. * @param fps - frames per second. * @param title - title of the application window. */ public gameworld(final int fps, final string title) { framespersecond = fps; windowtitle = title; // create and set timeline for the game loop buildandsetgameloop(); } /** * builds and sets the game loop ready to be started. */ protected final void buildandsetgameloop() { final duration oneframeamt = duration.millis(1000/getframespersecond()); final keyframe oneframe = new keyframe(oneframeamt, new eventhandler() { @override public void handle(javafx.event.actionevent event) { // update actors updatesprites(); // check for collision checkcollisions(); // removed dead things cleanupsprites(); } }); // oneframe // sets the game world's game loop (timeline) setgameloop(timelinebuilder.create() .cyclecount(animation.indefinite) .keyframes(oneframe) .build()); } /** * initialize the game world by update the javafx stage. * @param primarystage */ public abstract void initialize(final stage primarystage); /**kicks off (plays) the timeline objects containing one key frame * that simply runs indefinitely with each frame invoking a method * to update sprite objects, check for collisions, and cleanup sprite * objects. * */ public void begingameloop() { getgameloop().play(); } /** * updates each game sprite in the game world. this method will * loop through each sprite and passing it to the handleupdate() * method. the derived class should override handleupdate() method. * */ protected void updatesprites() { for (sprite sprite:spritemanager.getallsprites()){ handleupdate(sprite); } } /** updates the sprite object's information to position on the game surface. * @param sprite - the sprite to update. */ protected void handleupdate(sprite sprite) { } /** * checks each game sprite in the game world to determine a collision * occurred. the method will loop through each sprite and * passing it to the handlecollision() * method. the derived class should override handlecollision() method. * */ protected void checkcollisions() { // check other sprite's collisions spritemanager.resetcollisionstocheck(); // check each sprite against other sprite objects. for (sprite spritea:spritemanager.getcollisionstocheck()){ for (sprite spriteb:spritemanager.getallsprites()){ if (handlecollision(spritea, spriteb)) { // the break helps optimize the collisions // the break statement means one object only hits another // object as opposed to one hitting many objects. // to be more accurate comment out the break statement. break; } } } } /** * when two objects collide this method can handle the passed in sprite * objects. by default it returns false, meaning the objects do not * collide. * @param spritea - called from checkcollision() method to be compared. * @param spriteb - called from checkcollision() method to be compared. * @return boolean true if the objects collided, otherwise false. */ protected boolean handlecollision(sprite spritea, sprite spriteb) { return false; } /** * sprites to be cleaned up. */ protected void cleanupsprites() { spritemanager.cleanupsprites(); } /** * returns the frames per second. * @return int the frames per second. */ protected int getframespersecond() { return framespersecond; } /** * returns the game's window title. * @return string the game's window title. */ public string getwindowtitle() { return windowtitle; } /** * the game loop (timeline) which is used to update, check collisions, and * cleanup sprite objects at every interval (fps). * @return timeline an animation running indefinitely representing the game * loop. */ protected static timeline getgameloop() { return gameloop; } /** * the sets the current game loop for this game world. * @param gameloop timeline object of an animation running indefinitely * representing the game loop. */ protected static void setgameloop(timeline gameloop) { gameworld.gameloop = gameloop; } /** * returns the sprite manager containing the sprite objects to * manipulate in the game. * @return spritemanager the sprite manager. */ protected spritemanager getspritemanager() { return spritemanager; } /** * returns the javafx scene. this is called the game surface to * allow the developer to add javafx node objects onto the scene. * @return */ public scene getgamesurface() { return gamesurface; } /** * sets the javafx scene. this is called the game surface to * allow the developer to add javafx node objects onto the scene. * @param gamesurface the main game surface (javafx scene). */ protected void setgamesurface(scene gamesurface) { this.gamesurface = gamesurface; } /** * all javafx nodes which are rendered onto the game surface(scene) is * a javafx group object. * @return group the root containing many child nodes to be displayed into * the scene area. */ public group getscenenodes() { return scenenodes; } /** * sets the javafx group that will hold all javafx nodes which are rendered * onto the game surface(scene) is a javafx group object. * @param scenenodes the root container having many children nodes * to be displayed into the scene area. */ protected void setscenenodes(group scenenodes) { this.scenenodes = scenenodes; } }
a sprite manager class is is a helper class to assist the game loop keep track of sprites. normally a sprite manager will contain all sprites and each sprite contains a javafx node that is displayed on to the scene graph.
package carlfx.gameengine; import java.util.*; /** * sprite manager is responsible for holding all sprite objects, and cleaning up * sprite objects to be removed. all collections are used by the javafx * application thread. during each cycle (animation frame) sprite management * occurs. this assists the user of the api to not have to create lists to * later be garbage collected. should provide some performance gain. * @author cdea */ public class spritemanager { /** all the sprite objects currently in play */ private final static list game_actors = new arraylist<>(); /** a global single threaded list used to check collision against other * sprite objects. */ private final static list check_collision_list = new arraylist<>(); /** a global single threaded set used to cleanup or remove sprite objects * in play. */ private final static set clean_up_sprites = new hashset<>(); /** */ public list getallsprites() { return game_actors; } /** * varargs of sprite objects to be added to the game. * @param sprites */ public void addsprites(sprite... sprites) { game_actors.addall(arrays.aslist(sprites)); } /** * varargs of sprite objects to be removed from the game. * @param sprites */ public void removesprites(sprite... sprites) { game_actors.removeall(arrays.aslist(sprites)); } /** returns a set of sprite objects to be removed from the game_actors. * @return clean_up_sprites */ public set getspritestoberemoved() { return clean_up_sprites; } /** * adds sprite objects to be removed * @param sprites varargs of sprite objects. */ public void addspritestoberemoved(sprite... sprites) { if (sprites.length > 1) { clean_up_sprites.addall(arrays.aslist((sprite[]) sprites)); } else { clean_up_sprites.add(sprites[0]); } } /** * returns a list of sprite objects to assist in collision checks. * this is a temporary and is a copy of all current sprite objects * (copy of game_actors). * @return check_collision_list */ public list getcollisionstocheck() { return check_collision_list; } /** * clears the list of sprite objects in the collision check collection * (check_collision_list). */ public void resetcollisionstocheck() { check_collision_list.clear(); check_collision_list.addall(game_actors); } /** * removes sprite objects and nodes from all * temporary collections such as: * clean_up_sprites. * the sprite to be removed will also be removed from the * list of all sprite objects called (game_actors). */ public void cleanupsprites() { // remove from actors list game_actors.removeall(clean_up_sprites); // reset the clean up sprites clean_up_sprites.clear(); } }
the sprite class represents am image or node to be displayed onto the javafx scene graph. in a 2d game a sprite will contain additional information such as its velocity for the object as it moves across the scene area. the game loop will call the update() and collide() method at every interval of a key frame.
package carlfx.gameengine; import java.util.arraylist; import java.util.list; import javafx.animation.animation; import javafx.scene.node; /** * the sprite class represents a image or node to be displayed. * in a 2d game a sprite will contain a velocity for the image to * move across the scene area. the game loop will call the update() * and collide() method at every interval of a key frame. a list of * animations can be used during different situations in the game * such as rocket thrusters, walking, jumping, etc. * @author cdea */ public abstract class sprite { /** animation for the node */ public list animations = new arraylist<>(); /** current display node */ public node node; /** velocity vector x direction */ public double vx = 0; /** velocity vector y direction */ public double vy = 0; /** dead? */ public boolean isdead = false; /** * updates this sprite object's velocity, or animations. */ public abstract void update(); /** * did this sprite collide into the other sprite? * * @param other - the other sprite. * @return */ public boolean collide(sprite other) { return false; } }
javafx 2 game loop demo – atom smasher
whew! if you've got this far you are one brave soul. let's take a
small break and try out the demo i created using the game engine above.
shown below is a java webstart button to launch the game demo. later, you will see the design and source code detailing how it was created.
- java 7 or later
- javafx 2.0.2 or later
- windows xp or later (should be available soon for linux/macos)
gamelooppart2 design
below is a class diagram of the game demo called atom smasher which uses the game engine framework mentioned earlier.
shown below is figure 2 atom smasher class diagram.
the gamelooppart2 is the driver or main javafx application that runs the game. this creates a gameworld object to be initialized and starts the game loop.
package carlfx; import carlfx.gameengine.gameworld; import javafx.application.application; import javafx.stage.stage; /** * the main driver of the game. * @author cdea */ public class gamelooppart2 extends application { gameworld gameworld = new atomsmasher(60, "javafx 2 gametutorial part 2 - game loop"); /** * @param args the command line arguments */ public static void main(string[] args) { launch(args); } @override public void start(stage primarystage) { // setup title, scene, stats, controls, and actors. gameworld.initialize(primarystage); // kick off the game loop gameworld.begingameloop(); // display window primarystage.show(); } }
atomsmasher is a derived class of the gameworld class. it creates many spheres that animate with random velocities. button controls lets the user generate more 'atoms' (javafx circle nodes). as each atom collides with one another they will invoke the implode() method that produces a fade transition animation. you will notice how easy it is to implement this game by simply implementing initialize(), handleupdate(), handlecollision(), and cleanupsprites() methods. once implemented the game engine does the rest. the initialize() method creates the button controls for the user. to update the sprites positions or change the game state you will implement the handleupdate() method. to compare all sprites if they have collided with one another you will implement the handlecollision() . the last part of the game loop life cycle is cleaning up sprites. cleaning up means updating the sprite manger and updating the javafx scene (removing nodes).
package carlfx; import carlfx.gameengine.gameworld; import carlfx.gameengine.sprite; import java.util.random; import javafx.animation.timeline; import javafx.event.eventhandler; import javafx.scene.group; import javafx.scene.scene; import javafx.scene.control.buttonbuilder; import javafx.scene.control.label; import javafx.scene.input.mouseevent; import javafx.scene.layout.hboxbuilder; import javafx.scene.layout.vbox; import javafx.scene.layout.vboxbuilder; import javafx.scene.paint.color; import javafx.scene.shape.circle; import javafx.stage.stage; import static javafx.animation.animation.status.running; import static javafx.animation.animation.status.stopped; /** * this is a simple game world simulating a bunch of spheres looking * like atomic particles colliding with each other. when the game loop begins * the user will notice random spheres (atomic particles) floating and * colliding. the user is able to press a button to generate more * atomic particles. also, the user can freeze the game. * * @author cdea */ public class atomsmasher extends gameworld { /** read only field to show the number of sprite objects are on the field*/ private final static label num_sprites_field = new label(); public atomsmasher(int fps, string title){ super(fps, title); } /** * initialize the game world by adding sprite objects. * @param primarystage */ @override public void initialize(final stage primarystage) { // sets the window title primarystage.settitle(getwindowtitle()); // create the scene setscenenodes(new group()); setgamesurface(new scene(getscenenodes(), 640, 580)); primarystage.setscene(getgamesurface()); // create many spheres generatemanyspheres(150); // display the number of spheres visible. // create a button to add more spheres. // create a button to freeze the game loop. final timeline gameloop = getgameloop(); vbox stats = vboxbuilder.create() .spacing(5) .translatex(10) .translatey(10) .children(hboxbuilder.create() .spacing(5) .children(new label("number of particles: "), // show no. particles num_sprites_field).build(), // button to build more spheres buttonbuilder.create() .text("regenerate") .onmousepressed(new eventhandler() { @override public void handle(mouseevent arg0) { generatemanyspheres(150); }}).build(), // button to freeze game loop buttonbuilder.create() .text("freeze/resume") .onmousepressed(new eventhandler() { @override public void handle(mouseevent arg0) { switch (gameloop.getstatus()) { case running: gameloop.stop(); break; case stopped: gameloop.play(); break; } }}).build() ).build(); // (vbox) stats on children // lay down the controls getscenenodes().getchildren().add(stats); } /** * make some more space spheres (atomic particles) */ private void generatemanyspheres(int numspheres) { random rnd = new random(); scene gamesurface = getgamesurface(); for (int i=0; i (gamesurface.getwidth() - (circle.getradius() * 2))) { newx = gamesurface.getwidth() - (circle.getradius() * 2); } // check for the bottom of screen the height newy is greater than height // minus radius times 2(height of sprite) double newy = rnd.nextint((int) gamesurface.getheight()); if (newy > (gamesurface.getheight() - (circle.getradius() * 2))) { newy = gamesurface.getheight() - (circle.getradius() * 2); } circle.settranslatex(newx); circle.settranslatey(newy); circle.setvisible(true); circle.setid(b.tostring()); // add to actors in play (sprite objects) getspritemanager().addsprites(b); // add sprite's getscenenodes().getchildren().add(0, b.node); } } /** * each sprite will update it's velocity and bounce off wall borders. * @param sprite - an atomic particle (a sphere). */ @override protected void handleupdate(sprite sprite) { if (sprite instanceof atom) { atom sphere = (atom) sprite; // advance the spheres velocity sphere.update(); // bounce off the walls when outside of boundaries if (sphere.node.gettranslatex() > (getgamesurface().getwidth() - sphere.node.getboundsinparent().getwidth()) || sphere.node.gettranslatex() < 0 ) { sphere.vx = sphere.vx * -1; } if (sphere.node.gettranslatey() > getgamesurface().getheight()- sphere.node.getboundsinparent().getheight() || sphere.node.gettranslatey() < 0) { sphere.vy = sphere.vy * -1; } } } /** * how to handle the collision of two sprite objects. stops the particle * by zeroing out the velocity if a collision occurred. * @param spritea * @param spriteb * @return */ @override protected boolean handlecollision(sprite spritea, sprite spriteb) { if (spritea.collide(spriteb)) { ((atom)spritea).implode(this); ((atom)spriteb).implode(this); getspritemanager().addspritestoberemoved(spritea, spriteb); return true; } return false; } /** * remove dead things. */ @override protected void cleanupsprites() { // removes from the scene and backend store super.cleanupsprites(); // let user know how many sprites are showing. num_sprites_field.settext(string.valueof(getspritemanager().getallsprites().size())); } }
the atom class extends from the sprite class. an atom is a sprite that appears like a spherical object that moves across the scene. an atom will have a random radius, color, and velocity. as each atom sprite collides with another atom they will animate a fade transition (the implode() method).
package carlfx; import carlfx.gameengine.gameworld; import carlfx.gameengine.sprite; import javafx.animation.fadetransitionbuilder; import javafx.event.actionevent; import javafx.event.eventhandler; import javafx.scene.paint.color; import javafx.scene.paint.radialgradient; import javafx.scene.paint.radialgradientbuilder; import javafx.scene.paint.stop; import javafx.scene.shape.circle; import javafx.scene.shape.circlebuilder; import javafx.util.duration; /** * a spherical looking object (atom) with a random radius, color, and velocity. * when two atoms collide each will fade and become removed from the scene. the * method called implode() implements a fade transition effect. * * @author cdea */ public class atom extends sprite { public atom(double radius, color fill) { circle sphere = circlebuilder.create() .centerx(radius) .centery(radius) .radius(radius) .cache(true) .build(); radialgradient rgrad = radialgradientbuilder.create() .centerx(sphere.getcenterx() - sphere.getradius() / 3) .centery(sphere.getcentery() - sphere.getradius() / 3) .radius(sphere.getradius()) .proportional(false) .stops(new stop(0.0, fill), new stop(1.0, color.black)) .build(); sphere.setfill(rgrad); // set javafx node to a circle node = sphere; } /** * change the velocity of the atom particle. */ @override public void update() { node.settranslatex(node.gettranslatex() + vx); node.settranslatey(node.gettranslatey() + vy); } @override public boolean collide(sprite other) { if (other instanceof atom) { return collide((atom)other); } return false; } /** * when encountering another atom to determine if they collided. * @param other another atom * @return boolean true if this atom and other atom has collided, * otherwise false. */ private boolean collide(atom other) { // if an object is hidden they didn't collide. if (!node.isvisible() || !other.node.isvisible() || this == other) { return false; } // determine it's size circle othersphere = other.getascircle(); circle thissphere = getascircle(); double dx = othersphere.gettranslatex() - thissphere.gettranslatex(); double dy = othersphere.gettranslatey() - thissphere.gettranslatey(); double distance = math.sqrt( dx * dx + dy * dy ); double mindist = othersphere.getradius() + thissphere.getradius() + 3; return (distance < mindist); } /** * returns a node casted as a javafx circle shape. * @return circle shape representing javafx node for convenience. */ public circle getascircle() { return (circle) node; } /** * animate an implosion. once done remove from the game world * @param gameworld - game world */ public void implode(final gameworld gameworld) { vx = vy = 0; fadetransitionbuilder.create() .node(node) .duration(duration.millis(300)) .fromvalue(node.getopacity()) .tovalue(0) .onfinished(new eventhandler() { @override public void handle(actionevent arg0) { isdead = true; gameworld.getscenenodes().getchildren().remove(node); } }) .build() .play(); } }
hopefully you've got a chance to understand the fundamentals of a gaming loop and later apply the knowledge by implementing a robust game engine. although, i briefly mention collision i am saving that for part 4 of these tutorials. please stay tuned for part 3 where we will get into input using the keyboard or mouse. feel free to experiment. let me know what you come up with.
crts – http://en.wikipedia.org/wiki/refresh_rate
double buffering – http://en.wikipedia.org/wiki/double_buffering#double_buffering
developing games in java
by david brackeen with bret barker and laurence vanhelsuwe. page 56 "getting rid of flicker and tearing"
bufferstrategy api – http://docs.oracle.com/javase/7/docs/api/java/awt/image/bufferstrategy.html
Published at DZone with permission of Carl Dea, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.


text:
The Marist Brothers
Caring for our Brothers Today and Tomorrow
About Us
Welcome from Br. Dan
Our History
What Your Gifts Have Accomplished!
Connect with Our Marist World
Contact Us
Brother Profile
Marvelous Companions
Pray With Us
Pray With Us
Intention of the Day
Prayer Cards
Support Our Mission
Planned Giving
Planned Giving
Charitable Gift Annuities
Legal Information
Welcome to Marist Brothers!
Contact Us
P.O. Box 250
Worth, IL 60482-0250
Phone: (773) 881-5343
Fax: (773) 881-3367
[email protected]
Sign-up for Updates
First Name
Last Name
Proud Member of

subset: commoncrawl


text:
Legal Disclosures
EligibilityIn order to be eligible for the CNN Heroes Awards Program (the "Awards Program"), nominees must be at least thirteen (13) years of age or older as of September 1, 2011 and some portion of nominee's activities must have taken place on September 1, 2011 or be ongoing, and nominees can not have previously been selected as a CNN Hero Finalist or Winner ("Eligible Nominees"). Nominations submitted in prior years of the Awards Program which meet all requirements of these legal disclosures will also be considered Eligible Nominees. People submitting nominations ("Nominator(s)") must be at least thirteen (13) years of age as of September 1, 2011. The Awards Program is open to Eligible Nominees worldwide who are citizens of countries other than Voided Countries (defined below). Citizens of voided countries are ineligible to enter or win. In addition to those countries set forth on the list below, the Awards Program is also void in those countries where the Awards Program, its mechanisms, its Terms and Conditions and/or its awards or any part(s) of them are prohibited by any applicable law, regulation, guideline or ordinance ("Voided Country"). CNN may determine in its sole discretion at any time during the Awards Program that a country is a Voided Country. At any time, at CNN's discretion, a Nominee may be deemed ineligible for nomination or participation in the Program, be deemed ineligible to receive a monetary prize under the Program or have the monetary prize otherwise due such person as part of the Program (if any) donated to a charitable organization selected by CNN in its sole discretion. Employees and immediate family members of Time Warner, Inc. and its subsidiaries and sponsors of the Awards Program as well as advertising and promotional agencies directly involved in the Awards Program (the "Awards Program Entities") are not eligible to participate in the Awards Program or submit nominations. Cable News Network, Inc. ("CNN") and the sponsors of the Awards Program shall herein be collectively referred to as the "Sponsors".
NominationsTo submit your nomination for the Awards Program log on to www.cnnheroes.com and fill out the submission form providing all required contact information for you and your nominee. Nomination MUST be submitted online. Mail-in nominations will not be accepted. Nominations must be submitted on behalf of another person. Self-nominations will not be accepted. Nominations must be received no later than 11:59 PM Pacific Standard Time August 31, 2012. Nominations must be submitted in either English or Spanish only. Nominations may only be submitted in the name of a single person; group nominations are not acceptable. False or deceptive nominations or acts may render a nominee ineligible. All nominations become the property of CNN and will not be returned. CNN reserves the right to edit the nomination as it sees fit for use in publication or promotion. By submitting a nomination you agree to grant Sponsors the right without obligation, unless prohibited by law, to use the contents of your nomination, your name, voice, picture and likeness, without compensation, for the purpose of advertising and publicizing all matters related to the Awards Program and/or the Sponsors in any medium, throughout the world in perpetuity.
PrivacyNominees may be contacted to provide additional information and have their information verified. CNN reserves the right to request and require additional information from nominees in order to have their nomination considered.
For our international users, please be aware that the information you submit when registering for our services is collected in the United States of America. In addition to being subject to our privacy policy located at www.cnn.com/privacy, the collection, storage, and use of your data will be subject to U.S. laws and regulations, which may be different from the laws and regulations of your home country. By registering for this program, you are consenting to this collection, storage, and use.
JudgingSubmissions will be judged by CNN from among all eligible nominations received. If more than one nomination is received for a particular nominee, CNN, in its sole discretion may consider any of the nominations for that individual in its judging.
• A CNN Review Panel ("Panel") will select ten (10) potential finalists (the "Finalists") and an alternate from the Nominations provided.
• The final round of judging will be done by an online viewer vote conducted on www.cnnheroes.com. Viewers will have the chance to vote in an online poll for the Finalist whose accomplishment, impact and story best exemplifies a CNN Hero. The Nominee who collects the most votes will be the potential winner (the "Winner"). The Winner will be announced at the Awards Ceremony.
Please note that even if a Finalist may appear to be a leader or Winner online during the online voting, that Finalist has not yet been declared the Winner. CNN shall declare all official Winners. All Finalists are subject to verification by CNN and must meet all eligibility requirements including the execution and return of all necessary releases, or they may be disqualified. The decisions of the Panel will be final and binding. Whether a nominator is identified and which nominator is identified, if there are multiple nominations for one individual, is in the sole discretion of CNN. CNN is not bound by any voting or judging mechanism set forth herein as it maintains sole discretion to name Finalists and Winners and provide awards.
Notification and PublicationSome nominees may be notified by phone, email, or postal service and may be required to submit additional information. At the sole discretion of CNN, Finalists may be asked to attend the awards ceremony ("Awards Ceremony"). If asked to attend the Awards Ceremony, Finalists will be responsible for obtaining all proper documentation (e.g., Visa, Passport) prior to travel. Whether or not compensation will be provided for any portion of such travel will be in CNN's sole discretion. A Nominee may be disqualified at CNN's discretion if he/she chooses not to or is unable to attend the Awards Ceremony.
Finalists and any nominee to be featured online or on-air may be required to sign an affidavit verifying their eligibility in this Awards Program including, but not limited to, liability releases, tax acknowledgment forms and, except where prohibited by law, use of name and likeness releases ("Release Documents") and return such documents within seven (7) days of issuance of notification. Execution of the Release Documents will grant Sponsors the right, unless prohibited by law, to use the individuals' names, voices, likenesses, and any of the material provided by them or about them without compensation, for the purpose of advertising and publicizing the services of the Sponsors, all matters related to the Awards Program and the Awards Ceremony in any medium, throughout the world in perpetuity. Notification and/or the featuring of a nominee in no way conveys that a particular Nominee has or will be selected as a Winner. If at any point a Nominee becomes ineligible, chooses not to participate in the Awards Program or is disqualified for any reason, CNN reserves the right to select an alternate Nominee.
Awards• 10 Finalists: Each Finalist will receive Fifty Thousand Dollars ($50,000.00)
• 1 Winner: The Winner will receive Two Hundred Fifty Thousand Dollars ($250,000.00)
TaxesFinalists and Winner are responsible for the reporting and payment of all taxes as well as any other costs and expenses associated with acceptance and use of an award not specified herein as being awarded. A Finalist or Winner who is a United States citizen or resident must properly complete Internal Revenue Service (IRS) Form W-9 and provide to CNN prior to receiving an award. Payments to Finalists or Winners who are not US citizens or residents may be subject to a US withholding tax, which may be as much as 30% of the award. Additional documents may also be required prior to the provision of any award, including but not limited to IRS Form W-8BEN in the case of Finalists or Winners who are not US citizens or residents. Please consult your tax advisor regarding the taxation of your award since special rules may apply.
GeneralIf, for any reason, the Awards Program is not capable of running as planned, including infection by computer virus, bugs, tampering, unauthorized intervention, fraud, technical failures or any other causes beyond the control of the Sponsors which corrupt or affect the administration, security, fairness, integrity or proper conduct of the Awards Program, CNN reserves the right in its sole discretion to disqualify any individual who tampers with the entry process and to cancel, terminate, modify or suspend the Awards Program. Sponsors assume no responsibility for any error, omissions, interruption, deletion, defect or delay in operation with transmission, communications, line failure, theft or destruction or unauthorized access to or allegation of submissions. Sponsors are not responsible for any problem or technical malfunction of any telephone network or lines, computer online systems, servers, equipment or software, failure of any email or entry to be received on account of technical problems or traffic congestion on the Internet or at any website, phone lines, or any combination thereof, including any injury or damage to a participant's computer related to or resulting from participation in this Contest. CAUTION: ANY ATTEMPT BY A PARTICIPANT TO DELIBERATELY DAMAGE ANY WEBSITE OR UNDERMINE THE LEGITIMATE OPERATION OF THE AWARDS PROGRAM IS A VIOLATION OF CRIMINAL AND CIVIL LAWS AND SHOULD SUCH AN ATTEMPT BE MADE, SPONSORS RESERVES THE RIGHT TO SEEK DAMAGES TO THE FULLEST EXTENT PERMITTED BY LAW.
Sponsors are not responsible for any late, lost, garbled, misdirected, incomplete, or damaged entries; any disruptions, injuries, losses or damages caused by events beyond the control of Sponsors; or any printing or typographical errors in any materials associated with the Awards Program. The Awards Program Entities are not in any way responsible or liable for the use of the funds donated or for any damage, loss or injury (including death) resulting from participation in the Awards Program and/or acceptance and use of any awards won.
Voided CountriesBhutan
Brunei Darussalam
South Pacific Islands
Federated States of Micronesia
Pacific Islands Trust
Papua New Guinea
Sri Lanka
And all countries currently under sanction by the OFAC. Please note that the list of sanctioned countries can change at any time, however, a current list can always be located at http://www.treas.gov/offices/enforcement/ofac/programs/
As of 08/16/11, the list of OFAC sanctioned countries is:
Cote d'Ivoire
DR of the Congo
Liberia (the former regime of Charles Taylor)
North Korea


text:
Blindoom – CD
Digipack CD
In stock
After the triumphant concert held at the Wave Gotik Treffen in Lipsia, Bahntier comes back with his third album. This time the eclectic Stefano Rossello, in addition to his inseparable companion Filippo Corradin, is accompanied by JUSTIN BENNETT directly from SKINNY PUPPY, who has worked hard to leave an indelible mark with his drumming virtuosity and violent percussions.
The album is characterized by a suffering atmosphere marked by extreme, compact tracks and surely its technical and artistic level is very high. Distorted vocals ranging from hard industrial sounds to great piano compositions, extremely fast noise rhythms and real electro hard hits not heard in a long time.
Produced by Stefano Rossello with Justin Bennett. Mastered by European industrial electronic music mastermind ERIK VAN WONTERGHEM (INSEKT, SONAR, MONOLITH, KLINIK). Defined by the critics as one of the records of this year, it puts Bahntier among the cult groups of the new international electronic scene.
1. Dsimulation
2. Hiding face
3. Worried Words
4. Panic Flame
5. Fractal Desire V.2
6. Stainless
7. dISPUTE
8. Nucleus
9. Phagocyte/Oblivion
10. Underworlds
There are no reviews yet.


text:
KANAB, Utah – Authorities in southern Utah have identified four Las Vegas men who were killed in a plane crash this week near Zion National Park.
Kane County Emergency Manager Alan Alldredge says the dead were 31-year-old pilot Joshua Stubblefield; 44-year-old Chris Spircu; 32-year-old Paul Andrews; and 45-year-old Todd Stuntzner.
The aircraft left North Las Vegas Airport headed for Utah's Bryce Canyon National Park on Tuesday morning. Officials say the company that owns the plane reported it missing when it didn't arrive at Bryce.
Investigators are trying to determine the cause of the crash, which happened about 3 p.m. Tuesday in a remote area about 18 miles north of Zion.
The crash comes less than a week after another plane crashed in southern Utah, killing four near the St. George Municipal Airport.


text:
by Llewellyn Vaughan-Lee, February 2012
Published online at Common Ground Magazine
What is the meaning of this approaching moment in time, winter solstice 2012? It is a day in cosmic time when it is said our solar system will be aligned with the center of our galaxy.[i] There are many different interpretations about what this might mean. According to the Mayan calendar it is the end of the Great Cycle of 26,000 years. Does this "end of time" mean a global cataclysm or the beginning of a Golden Age? The truth is that nobody knows. And yet our attention is drawn towards this moment in time, like moths to a lamp. Is it because in our soulless, materialistic culture we are looking for some event that can awaken us to a deeper purpose within our day-to-day existence? Or does this day in December hold a real secret for all of us?
If we are going to approach this date with a receptive attitude we first need to have some understanding of time. The Mayans had a deep spiritual knowledge of time, of its cycles and cosmic dimensions. Their whole culture, their cities, were built around their knowledge of time and accurate observations of celestial events. In contrast our culture has a very limited, linear approach to time. We see time as a river of events that pass us by, never to return. And in this linear time we often feel constricted, caught. There is "never enough time." We are hounded, haunted by time, by the days, hours and minutes in which we try to cram the events and demands of our life. We have "schedules" to try to arrange our lives, like train timetables. We have forgotten the flexibility of time, its deeper rhythms and spiritual dimension.
Although we often live seemingly caught in time, spiritual teachings tell us that time itself is an illusion. It is created by our mind and does not belong to the spiritual reality of the Self, of our true nature.
In the dimension of the Self there is only the present moment, only now exists. There is no past or future. This is why spiritual teachings stress the importance of being present in the moment, and also why there is great value in the basic spiritual practice of watching your breath. You cannot breathe in the future or the past. If you watch your breath you are always aware of the present moment. And only in the present moment can you awaken to the reality of existence. Only in the present moment can you experience life as it really is—taste the sweetness of the strawberry, smell the fragrance of a rose. The present moment is all that ever exists.
Caught in the illusion of time we struggle to be present in the moment. We practice awareness of the now, and try to escape from the imaginary conflicts and struggles of our ego.
Only in the present moment can we awaken to our divine nature. In this reality of our true nature, the Self, we are always outside of time, always present in the moment. This is also the truth of love, not our passions and projections but the love that belongs to our heart. In depths of our heart there is no time, just the essence of love as Rumi exclaims:
Step out of the circle of time and into the circle of love.
And we know this timeless state of love in those moments when our heart opens and we say "I love you forever." In that eternal moment there is no time and love is always forever. And yet sadly we return from these moments out of time, from the sweetness of what is, to our time-bound culture with its days and hours and clocks and schedules. Once again we become caught in time.
If we are to begin to understand time it is important to recognize that our relationship to time is not universal. For example the Moken, the sea gypsies who live in South East Asia live only in the moment. In their language there is no word for time, and significantly no word for worry! They also have no word for "hello" or "goodbye." There are no greetings. You arrive, spend a few minutes or a few years and then leave. You are either here or not here. With few possessions they live in the moment—eat when they are hungry, sleep when they are tired.
But significantly when the tsunami came in 2004, they knew how to respond. How did the Moken know that the tsunami was coming? "The water receded very fast and one wave, one small wave, came so they recognized that this is not ordinary…And then they have this kind of legend that passed from generations to generations about seven waves."[ii] Attentive to the moment they were also attuned to their ancestral memories, and so they turned away from the shore and took their boats to deeper water where they rode out the tsunami. When they were asked why they survived and the Burmese fishermen perished they responded simply, "They saw nothing. They don't know how to look."
There is a time both ancient and present that belongs to the moment. Traditionally the Australian aborigines live in this relationship to time. For them every moment is an opportunity to return to the Primordial Moment, when Dreamtime comes into existence. Their understanding of time is not a linear progression of events, but a single moment when the Dreaming is born, when the patterns and meaning within existence become manifest. This is the moment in which they are alive.
In our culture we have lost any deep understanding of time, of the power of the present and of time's cycles and rhythms. Women have a closer relationship to this deeper time because they carry the cycles of the moon in their bodies. Women also seem more able to enter the timeless world of children, who are still able to live in the moment, outside of our construct of time. And yet even a few centuries ago in the West we lived in a very different relationship to time. For example, in the early medieval period when people did not have clocks, time was the cycle of the seasons, of the planting and harvesting, and each day was not divided into hours, but the rhythm of light and dark. If the peasant did have any relationship to time, it was the bells of the monastery heard across the fields, marking the time of prayers for the monks, a day marked by Vespers, Compline and Matins. Their time was a calling to prayer, a divine time.
And now we hurry through our days, slaves to a concept of time that does not nourish us, that does not connect us with our souls or the cycle of the year. We have lost an understanding of the deeper rhythms of our being, how our life, our heartbeat, can be in tune with the movement of the stars as well as the seasons. We struggle to live in the moment, and need spiritual practices or teachings to be able to present in life—something which is so natural for every child. And yet our attention is being drawn to this moment in cosmic time marked by the end of the Mayan Great Cycle in December 2012.
If time is an illusion, if only the moment of now exists, why does it matter? What is the meaning of a specific moment in time? Shakespeare understood that specific moments can have a important meaning, be an opportunity that does not come again:
There is a tide in the affairs of men.
Which, taken at the flood, leads on to fortune;
Omitted, all the voyage of their life
Is bound in shallows and in miseries.[iii]
He uses the image of the sailing ship that needs to wait for the moment of high tide to reach the deeper waters and the sea. But he is referring to the esoteric fact that there are moments in our life in which an opportunity is present, a door opens, that can give us access to a different chain of events, a different reality. If we recognize this moment we can make a shift in our life that we would otherwise miss.
In these moments an energy is present that can enable us to make such a transition, a shift in consciousness. This is why spiritual practices often stress the importance of watching, practicing a receptive awareness "like the cat at the mouse hole, infinitely relaxed, infinitely attentive." You learn to watch the signs in the inner and outer worlds, taking notice of events and synchronicities, paying attention to your dreams. Many of us have experienced such a moment, meeting a teacher for example, that can change our life forever. But we have to be attentive in order to catch this moment. Otherwise, to quote T.S. Eliot, "We had the experience but missed the meaning." Then we remain in our old patterns and nothing changes, our life "bound in shallows and in miseries."
Could it be that collectively we are approaching such a moment, that our whole planet is being given an opportunity that comes only once every 26,000 years? Are we awake to the possibilities of such a moment, or are we caught in our patterns of conditioning, even our spiritual conditioning, unable to fully respond? We sense a crisis all around us. There is unprecedented depletion of species, global warming, global economic instability. Our materialistic lifestyle is unsustainable, but collectively we do not seem to want to change. We seem blinkered by our desires as we approach ever faster a global ecological disaster.
Are we really attentive to what is happening, both spiritually and ecologically? Do we dare to be fully present at this moment in time as the materialistic darkness devours our planet, killing its life support systems? And what could it mean if the day in 2012 is the moment we have been waiting for? Is this the moment when we finally have to take responsibility for what we have done, for the damage and destruction we have caused this beautiful planet? Or is it the moment when we can collectively change, when a door opens between the worlds and humanity is given a unique opportunity to help the world to evolve? Or do we need to take responsibility in order to be awake to the possibility of global transformation? Have we read the signs in the inner and outer worlds, or merely heard the slogans that keep us asleep?
It is also important to remember that at any moment of possible transformation there are forces that try to hinder or prevent any real change. We know this in our own journey, when our own negative patterns try to keep us imprisoned, when the darkness within us tries to stop any real shift in consciousness. The darkness does not want the light, our lower nature tries to keep us in its grip. Similarly the forces of corporate greed that seem to dominate our world, destroying our ecosystem, do not want any change that would limit their power. They poison our souls and our planet with the images of materialism, with brand-names and advertising, keeping us asleep, making it more and more difficult for us to wake up. To be attentive to any possibility of change means to break through their grip, and all the collective images of desire and prosperity that try to manipulate us.
We need energy to be awake. We need our own power in order to be attentive and not be caught in the web of materialism that is bleeding our planet and our souls. And it could be that this coming moment is crucial in our collective evolution. If we remain asleep will we miss the tide, the opportunity for a real global shift?
Every moment is an opportunity to be awake, to be fully present and alive. And yet according to spiritual teachings some moments need to be waited for because they give us a greater opportunity. They are moments that belong not just to the succession of days but the patterns of the soul and rhythms of the cosmos. There are moments when many cycles come together, when our individual and cosmic destinies are aligned.
The Mayan prophecies suggest that on the coming winter solstice there will be such a moment: an outpouring of cosmic energy that is unprecedented. It will be both an end of time and a beginning—a death and a birth. Such an inflow of energy can be both creative and destructive. And if this prophecy is true it will be a possibility for change beyond our imagining.
But will we be fully present at this moment? Will we try to hold on to our old patterns? Are we prepared to give up our images of security and go with an energy of change that can effect everything?
Life always gives us an opportunity and a choice. For those who can read the signs it is not difficult to see that great changes are constellating in the inner and our worlds. We can see it in the unprecedented loss of species as well as in global political changes suddenly happening around us. Many of us also sense it in our dreams—see an inner tsunami coming. What really matters is not whether the Mayan prophecies about a date in December prove accurate, but whether we are awake in this moment of our planet's time. Are we like the Mokan, attentive to the changes happening around us, and thus able to access a deeper wisdom that knows how to respond. Or will we be like the sailors who were destroyed by the tsunami, "who did not know how to look."
Llewellyn Vaughan-Lee Ph.D., Sufi teacher and author. His most recent book is Fragments of a Love Story, Reflections on the Life of a Mystic.
©2012 The Golden Sufi Center, www.goldensufi.org
[i] At sunrise on the December 21st 2012 for the first time in 26,000 years the Sun rises to conjunct the intersection of the milky Way and the plane of the ecliptic.


text:
Those who've purchased an HDTV understand that when making such a purchase you don't simply buy the TV. You have to upgrade your cable or satellite TV account for HD. And since you have this glorious picture, are you really going to settle for the weak stereo sound built into the TV or cough up the money necessary for a surround-sound receiver and speakers? And then there's the hunk of furniture large enough to hold the thing.
The iPad has a similar power to compel change. After a couple of months with Apple's tablet, these are some of the changes it's wrought in my life.
Sitting pretty
When Steve Jobs first demonstrated the iPad he didn't do so standing up. Rather, he settled into a comfortable chair and rested the iPad against a crossed leg. And he did because the iPad's easiest to command when it's nestled in your lap. Regrettably, that position isn't good with an office chair and will eventually get tiresome even in a swank leather chair like Jobs'.
No, to my mind, the perfect chair for the iPad is one that you can adjust to support your legs while, at the same time, allowing you to recline slightly. And no chair I can think of handles that job better than that icon of the 70s—the beanbag chair.
I chose Sumo's $149 Omni model. Available in 10 colors, this large (5.5 by 4.5 feet) beanbag chair is covered in ballistic nylon and filled with polystyrene foam beads. Place it against a wall and you can make a couch shape. In a standalone position you can turn it on its side and fashion a lounge chair. Either way, you can mold the chair into a form that allows you to work with the iPad without straining your neck, back, or arms.
Working it out
Much as I love my job, it can be a sedentary pursuit and, after awhile, it starts to show in added weight and shorter breath. I'd resolved to get more exercise this year and to do that I acquired an elliptical trainer. Like most people who purchase exercise gear, I used it religiously for a couple of weeks and then slacked off. The iPad has brought me back to it.
I have a Sole E55 elliptical trainer, and it has a couple of features that make it iPad friendly. The first is a passthrough audio system that sports a 3mm (miniplug) audio input jack and a 3mm headphone port. String a cable between the iPad and the input jack and then plug your headphones into the headphone port. Should you fall from the elliptical machine after a particularly draining workout, you don't risk pulling the iPad from its stand.
And that stand is the other attractive feature. The E55 has a large LCD display that tracks the progress of your workout. I find watching it about as enjoyable as staring at the clock in my fourth-grade civics class—when, in heaven's name, will this be over? But below that display is a shelf just deep enough to accommodate my iPad. Once on the machine I can fire up the Netflix app, access an episode of The X Files stored in my Watch Instantly queue, and sweat away in a nicely distracted fashion. Typically you find these kinds of machines at the gym, and just as typically they have similar shelves. Coupled with an iPad, they may compel people to take greater advantage of their gym memberships.
Think mobile
With its larger screen and faster processor, the iPad is a better productivity device than my iPhone. As such, I wanted to use mine for real work rather than "work I have to do on my iPhone because I have no alternative." The hitch is that doing real work often requires moving files between devices, a way to open files in different applications, and an input device more flexible than the iPad's virtual keyboard.
To address the first issue, I resolved to get serious about Dropbox. Dropbox is a service that provides 2GB of free online storage as well as tools for easily syncing stored data between devices (including your computer). I've had a Drobox account for quite awhile but used it mostly for making large files available to friends and colleagues.
With the assistance of the Dropbox app for iPad and the Dropbox folder on my Mac, I have easy access to my documents on both my Mac and iPad. But you can't edit those documents in Dropbox. Fortunately, the Dropbox app contains a helpful Open In pop-over that allows you to open files stored on Dropbox in other applications. One app that's proven to be particularly helpful is DataViz's $15 Documents To Go Premium – Office Suite. Using Documents To Go I can open and edit Microsoft Word, Excel, and PowerPoint files as well as text files bearing the .txt extension.
As for an input device, I wasn't a fan of Apple's $79 Wireless Keyboard () until I acquired an iPad and spent a couple of hours typing on the iPad's virtual keyboard. While I'm faster typing on the iPad's keyboard than I am on my iPhone, I'm far faster still using a physical keyboard. Apple's Wireless Keyboard is small enough to put in an iPad bag, it carries Volume and Brightness keys that I find helpful, its Arrow keys make selecting text easy, I don't have to switch screens to type numbers and punctuation, and the battery lasts a long time.
Take a stand
I suspected that I'd use my iPad in a lot of different rooms throughout my house, but I hadn't thought much about where I'd put it in those rooms. For example, as the family cook, I've turned to Condé Nast's free Epicurious app and Weber's $5 On the Grill outdoor grilling app. But I generally have my hands full when cooking and need the iPad at a viewable angle.
It dawned on me that as I was using the iPad as a cookbook, it made perfect sense to place it in a cookbook holder stand. These things are sturdy enough to hold a heavy cookbook, and, unlike iPad-specific frame stands, some come with acrylic shields, which should protect your iPad when your cooking takes an adventurous turn.
In the living room, I have a not-so-grand piano and, as those who own pianos understand, it operates both as a musical instrument and a place to hold pictures of your loved ones. As such, it's become the resting place for the family iPad, where it displays slideshows. I rest it in Apple's $29 iPad Dock so it can charge while acting as a digital photo frame.
The bedroom is a tougher nut to crack. While the iPad may be a great device for reading books, unless you sit straight up in that chaste Mike-and-Carol-Brady way, it's tiring to hold one for more than a couple of chapters. The cheapskate's way out is to plump up a fluffy pillow, place it at your body's mid-point, and prop up the iPad against it. If you care for a dedicated solution, you might look at Padded Spaces' $40 Prop It Up, an adjustable stand that works on your lap as well as it does on a reclined belly.
Making connections
I've used Apple's $49 AV cables in the past—mostly on business trips so I can watch movies on my iPod or iPhone on the hotel TV. I'm now using the Component AV Cable at home. Unlike with the iPhone 3GS and earlier, Apple allows third-party applications to output video via the iPad's dock connector port. One of those supported applications is the Netflix app. While I have Netflix on both the Mac mini and Blu-ray player attached to my AV gear in the family room, the back-bedroom TV has no connection to the Internet. Thanks to my iPad and AV cable, it now does.
And then there's photography. In league with Apple's $29 iPad Camera Connection Kit (), the iPad is starting to change the way I take pictures. Typically I go out to shoot, snag what I think are some perfectly wonderful images, return home, review the pictures on my Mac, and throw out nearly every one of them because I've failed to focus correctly or misjudged the light.
I can now toss the iPad in my camera bag along with the iPad Camera Connection Kit and, while on location, string a USB cable between my camera and the iPad dongle and review what I've shot. Real photographers can make judgements based on what's on their camera's display and in its histogram. I, however, am not a real photographer and the iPad gives me a helpful leg up so that I can make adjustments on-site.
What's next
Although I've made significant changes to incorporate the iPad into my life, work remains to be done. For example, while Dropbox and Documents to Go are a decent band-aid for moving and editing some files, that band-aid shouldn't be necessary. For a device that acts as a light-duty laptop much of the time, having to physically connect the iPad to my Mac to transfer and sync media and data seems archaic.
I'm also a little surprised that we haven't seen more speakers that include docks that accommodate an iPad. Most of the speakers designed for the iPod and iPhone can't hold an iPad and, even if they could, their dock connector port doesn't provide enough power to charge the iPad when it's awake. Ideally we'll see such speakers that not only provide good sound, but allow you to orient the iPad in landscape mode so you can comfortably watch videos on it. In the meantime, Bluetooth speakers may be the answer.
Home slice
In the two months that I've had the iPad, it's brought welcome changes to my life. When I'm not in my office, the thing is almost constantly at my side—ready to check e-mail, perform a casual Web search, and entertain and educate my family. I look forward to the additional changes it brings as Apple and third-parties find new ways to exploit its many capabilities.
[Christopher Breen is a senior editor at Macworld.]
Apple iPad Tablet Computer
iPad with Wi-Fi 64GB
iPad (2010)
Read our full iPad (2010) review
iPad with Wi-Fi 16GB
iPad with Wi-Fi + 3G 16GB
Read our full iPad with Wi-Fi + 3G 16GB review
Apple iPad Tablet Computer


text:
Apparently Mr. Connolley has edited 5428 Wikipedia articles, most about climate. Die Kalte Sonne:
Unbelievable but true: The Wikipedia umpire on Climate Change was a member of the UK Green Party and openly sympathized with the views of the controversial IPCC. So it was not a referee, but the 12th Man of the IPCC team.
I'm not sure how accurate the translation is, but it suggests he was somehow part of the IPCC "short list" team. See it here at Die Kalte Sonne via this Google Translate link:
With over 5000 articles he's edited, it makes you wonder if Mr. Connolley was employed by someone or some organization specifically for the task.


text:
Argument Leads Deputies To Huge Blue Lake Grow, $100K Cash, Environmental Damage – August 24, 2012
HCSO Press Release
BLUE LAKE – On Thursday, Aug. 23 at approximately 9 a.m. employees of a logging company working on Lord Ellis Summit heard what appeared to be someone calling for help and a woman crying. The employees went to the area of the noise and contacted a male who admitted to being in argument with his wife. The employees were concerned for the well being of the female, called the Humboldt County Sheriff's Office and informed them what they heard and what the male told them.
The Sheriff's Office dispatched two deputies to the scene to check on the welfare of the female. When the deputies arrived at the residence where the argument had been coming from they saw signs of a commercial marijuana growing operation. Deputies made contact with the male and female who resided at the residence. They admitted they had a verbal argument. The deputies secured the residence for a search warrant after seeing and smelling greenhouses filled with growing marijuana. Additional deputies were called into the assist, along with members of the Humboldt County Drug Task Force.
While waiting for the search warrant, the wife told the deputies she was having medical issues. Emergency Medical personnel were summoned to the scene and she was transported to a local hospital where she was treated and released.
A Humboldt County Superior Court Search Warrant was issued for the residence, located in the 4900 block of Wiregrass Road, Blue Lake at approximately 3 p.m. After the search warrant was issued, a search of the residences and greenhouses was conducted. Deputies and Task Force Agents located and seized 763 growing marijuana plants ranging in height from five to six feet tall and four large garbage bags full of dried marijuana.
Inside the residence deputies located over $100,000 in cash stashed in various locations throughout the residence, along with packaging material and other evidence indicating the marijuana was being grown for sale.
While following trails around the property deputies located another large greenhouse approximately one-quarter mile away from the residence in a drainage. That greenhouse was filled with another 529 growing marijuana plants averaging three feet in height. Those plants were also seized. Deputies are still trying to determine if this greenhouse is tied to the initial residence or is on another parcel.
The installation of this greenhouse caused environmental damage by cutting trees and into the hillside. The California Department of Fish and Game is being called in to investigate.
Timothy Matthew Pratts, 39, was arrested on charges of cultivation and possession for sale of marijuana. He was transported and booked to the Humboldt County Correctional Facility where his bail is set at $75,000. A warrant for his wife is being sought through the Humboldt County District Attorney's Office, requesting the same charges.
Anyone with information for the Sheriff's Office regarding this case or related criminal activity is encouraged to call (707) 445-7251 or the Sheriffs Office Crime Tip line at (707)268-2539. Humboldt County Drug Task Force can be reached at (707)444-8095. If you live in the city limits of Eureka the Eureka Police Problem Oriented Policing Unit can be reached at (707)441-4373.


text:
There are many types and shapes of tiles to choose from but I promise you that no tiles would look as eye-catching and gorgeous as fishscale tiles. Today I'm sharing cool ideas of fishscale tiles for various bathrooms and kitchens.
Bathroom Fishscale Tiles
Fishscale tiles are amazing for any kind of bathroom, from modern to tropical-inspired. You can go for a fishscale tile floor in a neutral bathroom, so you'll make a cool accent. Another idea is to accentuate the sink zone covering the wall with fishscale tiles in some color that you like. Make your shower stand out cladding the walls with adorable turquoise fishscale tiles, feel like Ariel! To feel under the sea, you can clad all the walls with fishscale tiles in blue, looks wow!
Kitchen Fishscale Tiles
Fishscale tiles in kitchens may be used for creating adorable backsplashes, for example, a marble fishscale backsplash will spruce up a simple neutral kitchen. Add color to the monochromatic space with green fishscale tiles, hint on the seaside with blue and aqua fishscale tiles. White fishscale tiles will add texture and interest to the space. Get inspired!
by Chloe


text:
10-24-12 The New Ferris Wheel Along the Waterfront in Seattle. This is a 5 exposure HDR shot with my Panasonic GH2 processed in Nik HDR Effex Pro 2 and Color Effex 4.
Critiques welcome.
Ilene Samowitz201209281190312HDR
From PAD2012
12-9-12 Close Up of the Ferris Wheel at the Seattle Waterfront - HDR converted to Black and White using Sliver Effex Pro 2.
Critiques Welcome.
Ilene Samowitz201209281190392HDR
12-10-12 Seattle waterfront - near argosy cruise plaza with new Ferris wheel.
Critiques welcome.
Ilene Samowitz201209281190295fused
Another Seattle Ferris Wheel
Critiques Welcome
Ilene Samowitz201209281190342fused
1-25-13 Ferris Wheel at Seattle Waterfront - I love photographing this wheel It lends itself to many interesting compositions. I took this on my lunch break when I got a chance to walk around. The weather was close to 50 partly cloudy and no wind. It was a very welcome respite from our recent weather. It's due to start raining again but at least the temps will be above freezing.
DowntownIlene SamowitzSeattle20130125DSC0435
From PAD2013
2-2-13 Under the Ferris wheel at the Seattle waterfront. This was taken with the Nikon 1 v1
DowntownIlene SamowitzSeattle20130125DSC0421
2-3-13 Another Ferris Wheel Perspective taken with my Nikon 1 V1 and converted into black and white with Silver Effex 2.
DowntownIlene SamowitzSeattle20130125DSC0428tonemapped
2-4-13 This is the last in the current series of Ferris Wheel shots in downtown Seattle taken with the Nikon 1 V1.
DowntownIlene SamowitzSeattle20130125DSC0437
6-6-13 Ferris Wheel - this was shot last night after I had a wonderful dinner with fotoeffects (Judy Horton and Phil). We had a really nice time talking photography, RV, and travel. Then to top it off we did some shooting in some nice light.
Ilene Samowitz20130605IS05754
6-10-13 This is a black and white conversion of a 202 sec exposure taken at sunset. I took this last week when I met Judy and Phil. I intend to post the color version of this tomorrow.
Ilene Samowitz20130605IS05818
6-11-13 This is a 202 sec exposure taken at sunset. I took this last week when I met Judy and Phil. I wonder which one you prefer? Today's or the black and white conversion that I posted yesterday?
6-30-13 Seattle twilight. I took advantage of the warm evening last night and did some night shooting.
Ilene SamowitzSeattle20130629IS06320topaz
7-24-13 Another SOOC image jpeg from the Fuji x100s. I went down to the Seattle waterfront alone. Some things in addition to the image quality that I like, I looked like a tourist and did not worry about my camera or my safety. I used a Jobi gorillapod.
7-25-13 Sunset at the Pier 66. When I went to the pier last night I could've get to my favorite viewing platform on the roof because a cries ship was in port. Thanks for all the wonderful feedback on my images shot with the fuji. Here is another one...
awesomizedfuji x100s07251320450691
8-1-13 Another Seattle Ferris Wheel shot taken last night from the Pike Place Market with my Fuji X100s. I seem to gravitate to the wheel.
8-7-13 Ferris Wheel in Seattle. More obsession.
Ilene Samowitz20130731IS06432hdrx
8-9-13 Getting ready fo "E" with evening light. More Ferris Wheel shots. I wonder what "F" will bring.
Ilene Samowitz20130731IS06541
8-28-13 At the Wheel in Golden Hour.
Ilene Samowitz20130824IS06736tonemapped
8-30-13 Another look at the wheel. It will be hard to comment for the next few days. Wishing all a happy weekend.
Ilene Samowitz20130824DSCF1548
9-1-13 Sunset at the Wheel
Seattle, WA
Ilene Samowitz20130824DSCF1492hdrx
9-19-13 Another Ferris Wheel
Ilene Samowitz20130605IS05810
9-27-13. Ferris Wheel lines
Ilene Samowitz20130824IS06686hdrx
9-28-13. L is for "Looking at the Lights of the Wheel"
Ilene Samowitz20130824IS06877
Seattle Waterfront
From PAD2014


text:
Business owners in the French Quarter were furious. The year was 1983 and the neighborhood's old streets were plowed up, making it either impossible or problematic for vehicles and pedestrians to pass their stores. Not even in the days when the French Quarter was a dusty frontier town with dirt roads had passage been so bad. Sure there would be a World's Fair in the distance, '84, and in preparation the streets were being redone, but the businesses were losing money now. The future could wait; the French Quarter had to survive the present.
Mayor Dutch Morial was accustomed to adversity. On the second full day of his first term, May 3, 1978, heavy rains and an inadequate drainage system had caused the greatest urban flood that anyone could remember. Then, a few months later as Carnival approached, the police went on strike. Morial stood firm, Carnival parades in New Orleans were cancelled that year, but in the end Morial won.
Being the city's first black mayor had toughened him up for conflict, though he could also empathize with the plight of the business owners. The street work needed to continue but Morial made a promise: After the work was over the city, as an appeasement to the businesses, would organize a festival. Not only would it bring some pre-World's Fair dollars to the French Quarter, but it also would encourage locals, many of who had written off the French Quarter as being for tourists, to revisit the neighborhood.
Once the work was completed Morial turned on the resources of city government, including providing police and sanitation services, granting permits, building bandstands, collaring volunteers, directing traffic and making the streets pedestrian friendly.
Morial was no slouch when it came to using power, and the office of the mayor of New Orleans is inherently powerful, but one factor City Hall couldn't control was the weather. Sandra Dartus, who served as the festival's first coordinator would later recall: "I spent that first weekend under cover in the square during the torrential downpour that prompted us to repeat the event the next weekend."
An optimist might call it an event so nice they did it twice; a realist might say that once more New Orleanians defied the weather, so much so that the early festival even included more substantial drops from the heavens as sky divers landed along the riverfront.
That was 1984. This year the festival is celebrating the 30th anniversary of its organization. Now under the direction of French Quarter Festivals, Inc., the festival has grown beyond what even the big-thinking Morial might have imagined. It now bills itself as "Louisiana's largest free music event." Because it falls in the same month as Jazz Fest, there's a temptation of thinking of the French Quarter event as a warm-up, but that doesn't do it justice. While both events are spectacular there are some important differences:
- There's no admission price to the French Quarter Festival.
- There is a heavy emphasis on local musicians.
- While the Jazz Fest is about culture and heritage, the French Quarter Fest is about a neighborhood.
Congratulations to all those who over the past three decades have contributed to the festival's success. You have proved that even a rocky road can be made into a path for success.


text:
Pakistani Police Absolve Christian Girl of Blasphemy Charges
A police investigator in Pakistan told a trial court Saturday there was no evidence that a minor Christian girl, believed to be mentally disabled, had desecrated Islam's holy book as her accusers had alleged seeking to expel Christians from the area.
The investigator, Munir Hussain Jaffri, told the court in Islamabad that his final report shows there is no evidence against Rimsha Masih, and it is possible that the cleric of a nearby mosque tampered with evidence by putting pages of the Quran into a bag the girl had been carrying, local media reported.
Police brought Rimsha to the court in a helicopter, and took her back to an undisclosed location after the hearing as her parents have received death threats.
The case was adjourned until Sept. 24. The investigation report is likely to help the defense argue for the quashing of the entire case.
Rimsha, who was arrested from the Mehria Jaffar area on the outskirts of Islamabad on Aug. 16, was released on bail from Adiala Jail in Rawalpindi earlier this month after police arrested the Muslim cleric, Imam Khalid Jadoon, for framing her.
The girl was accused of burning a Noorani Qaida, a booklet used to learn the basics of the Quran. It was also alleged that she had thrown the booklet in the garbage after putting it in a plastic bag.
Jaffri had earlier said three witnesses saw the cleric adding pages carrying Quranic verses to ashes that the complainant, Ammad, handed to him as evidence against the girl. The three urged the cleric not to interfere with the papers. But the cleric told them, "You know this is the only way to expel the Christians from this area."
More than 600 people had to flee the Christian neighborhood due to tensions after the girl's arrest.
Rao Abdul Raheem, the lawyer representing the girl's accuser, has hinted that there could be vigilante violence. He boasted that Pakistan had many who support people like Mumtaz Qadris, who assassinated Punjab's Governor Salman Taseer last year for his advocacy for Pakistani Christian woman Asia Bibi. Bibi had been convicted by a trial court for blasphemy.
After Taseer's killing came the assassination of Shahbaz Bhatti, a Christian and Minister for Minority Affairs, for his criticism of the notorious blasphemy law.
It is estimated that 51 people accused of blasphemy have been killed before their respective trials were over, according to Pakistan's Dawn newspaper. Most recently, a mentally unstable man was torched alive for alleged blasphemy near Bahawalpur in Punjab Province in July. The mob took the man from a police station where he was under custody on blasphemy charges after burning pages from the Quran.
The blasphemy law, embedded in Sections 295 and 298 of the Pakistan Penal Code, is frequently misused to target religious minorities – Christians, Shi'as, Ahmadiyyas and Hindus – and allows Islamists to justify killings. Extremist Islamists believe that killing a "blasphemous" person earns a heavenly reward.
Just an accusation is enough to have a person arrested. There is no provision in the law to punish a false accuser or a false witness of blasphemy. Some local Muslims seek revenge by making an allegation against his or her adversary who is a non-Muslim. Many who are accused of blasphemy are killed by mobs extra-judicially.


text:
Stem cells hold promise for understanding and treating neurodegenerative diseases, but so far they have failed to accurately model disorders that occur late in life.
A study published by Cell Press in the journal Cell Stem Cell has revealed a new method for converting induced pluripotent stem cells (iPSCs) into nerve cells that recapitulate features associated with ageing, as well as Parkinson's disease. The simple approach, which involves exposing iPSC-derived cells to a protein associated with premature ageing called progerin, could enable scientists to use stem cells to model a range of late-onset disorders, opening new avenues for preventing and treating these diseases.
'With current techniques, we would typically have to grow pluripotent stem cell-derived cells for 60 or more years in order to model a late-onset disease,' said senior study author Lorenz Studer, of the Sloan-Kettering Institute for Cancer Research.
'Now, with progerin-induced ageing, we can accelerate this process down to a period of a few days or weeks. This should greatly simplify the study of many late-onset diseases that are of such great burden to our aging society.'
iPSC technology to reprogramme skin cells
Modelling a specific patient's disease in a dish is possible with iPSC approaches, which involve taking skin cells from patients and reprogramming them to embryonic-like stem cells capable of turning into other disease‑relevant cell types like neurons or blood cells.
However, iPSC-derived cells are immature and often take months to become functional, similar to the slow development of the human embryo. As a result of this slow maturation process, iPSC-derived cells are too young to model diseases that emerge late in life.
To overcome this hurdle, Studer and his team exposed iPSC-derived skin cells and neurons, originating from both young and old donors, to progerin. After short-term exposure to this protein, these cells showed age-associated markers that are normally present in old cells.
The researchers then used iPSC technology to reprogramme skin cells taken from patients with Parkinson's disease and converted the stem cells into the type of neuron that is defective in these patients. After exposure to progerin, these neurons recapitulated disease-related features, including neuronal degeneration and cell death, as well as mitochondrial defects.
'We could observe novel disease-related phenotypes that could not be modelled in previous efforts of studying Parkinson's disease in a dish,' said first author Justine Miller of the Sloan-Kettering Institute for Cancer Research.
'We hope that the strategy will enable mechanistic studies that could explain why a disease is late-onset. We also think that it could enable a more relevant screening platform to develop new drugs that treat late-onset diseases and prevent degeneration.'


text:
The Château of Valençay
Situated in Berry, the Château de Valençay harmoniously combines two architectural styles, Renaissance and Classical. Fully furnished, it also has magnificent formal gardens and a landscaped informal park...
It was in 1803 that Napoleon bought Château de Valençay for his famous Foreign Affairs Minister, Charles Maurice de Talleyrand, so that the minister could receive European dignitaries in style. From 1808 to 1814, Napoleon imposed upon him the presence of the Princes of Spain, who were in exile. Talleyrand and his wife, Princess de Bénévent, made sure the princes and their retinue were catered for in lavish style, making Valençay a "golden prison".
On a visit to the château you will discover an exceptional collection of Louis XVI and Empire furniture.
The park, the formal gardens, the floral checkerboard arrangement, the lively tours, the big maze, the little farm…. Fun visits for all the family!
From April to September, historical performances given by actors in period costume take you back to daily life in the era of Talleyrand.
In 2011, a new 600m² garden was created, the Jardin d'Antonin, with 320 types of culinary herbs, in tribute to Antonin Carême. This great chef and the inventor of the 'Grande Cuisine' spent 12 years in the service of the Prince de Talleyrand.
In summer, two evenings with visits by candlelight take visitors into a magical, festive, lively ambience. 3000 candles cast a new perspective over the gardens and the Renaissance château.
Parc & Château de Valençay
2 rue de Blois
36600 Valençay
+33 0(2) 54 00 15 69


text:
Places that Make the Magic Happen
Everyone has felt it. That strange and wonderful sense of déjà vu or the feeling of connecting to a place. Sometimes you just sigh when you look at a photo of a waterfall in Hawaii or you get goosebumps when set foot in the town where your ancestors lived. Places are powerful and the connections people make with them are even more powerful.
When I was coming up with the idea for my League of Rogues series (an adventurous Regency romance romp that promises it's not your average historical romance), I knew I needed powerful places. I had five grown men, powerful leaders in London society who are bound by a dark secret from their past. These heroes needed a place where it all began, the genesis of their story and the friendships that bind them. How did I find this mythical place that would hold my heroes together? It's a rather interesting story.
When I was attending undergraduate school at Oklahoma State University, I interviewed for the Cambridge Study Abroad program. This was not a study abroad experience you typically associate with undergrads and Europe. It was quite the opposite. I went with a small number of students (no more than fifteen) and with two professors. We spent all day in "class" learning on a specific subject. The program only lasted three weeks, but it changed my life. I lived in the old dorms of the University. For those of you unfamiliar with Cambridge, the campus is divided into several colleges. I lived and went to school in Magdalene College. It was here that my connection was forged. I fell hopelessly in love with the college and its grounds. The dormitories were over six hundred years old and I was living there just like students had for hundreds of years. It became my sacred place.
I envisioned the heroes of my series walking across the grass, getting in trouble with professors. I could see them lounging by the River Cam and coming back from pubs a little drunk and having to feel above the doorways to the doors the icons that had been carved in stone to identify if they were entering the right dorm or not. Cambridge rooted itself deep in my soul and in my heart. Now, in my League of Rogues Series, the heroes share the same love for that place that I do.
What places leave their marks on your heart?
Book Title: Wicked Designs
Series Name: The League of Rogues
Series Number: 1
Author: Lauren Smith
Length: 101k
Genre: Romance > Historical > Regency
Publication Date: January 7th 2014
The League of Rogues takes what they want—but have they taken on too much?
For too long Miss Emily Parr has been subject to the whims of her indebted uncle and the lecherous advances of his repulsive business partner. Her plan to be done with dominating men forever is simple—find herself a kind husband who will leave her to her books.
It seems an easy enough plan, until she is unexpectedly abducted by an incorrigible duke who hides a wounded spirit behind flashing green eyes.
Godric St. Laurent, Duke of Essex, spends countless nights at the club with his four best friends, and relishes the rakish reputation society has branded him with. He has no plans to marry anytime soon—if ever. But when he kidnaps an embezzler's niece, the difficult debutante's blend of sweetness and sharp tongue make him desperate for the one thing he swears he never wanted: love.
Yet as they surrender to passion, danger lurks in Godric's shadowed past, waiting for him to drop his guard—and rob him of the woman he can't live without.
Warning: This novel includes a lady who refuses to stay kidnapped, a devilish duke with a dark past, and an assortment of charming rogues who have no idea what they've gotten themselves into.
Buy Links:
Amazon | Barnes and Noble | Itunes
Godric St. Laurent, the twelfth Duke of Essex, leaned back in his saddle watching the abduction he'd orchestrated unfold. Covering his mouth with a gloved hand, he stifled a yawn. Things were going smoothly. In fact, this entire kidnapping bordered on the point of tedious. They'd intercepted the coach ten minutes before it reached Chessley House. No one witnessed the escort of riders or the driver changing his route. Oddly enough, the young woman hadn't shown any signs of resistance or concern from inside the coach. Wouldn't she have made some protestations when she realized what was happening? A thought stopped him dead. Had she somehow slipped out of the coach when they'd slowed on a corner before they'd left town? Surely not, they would have seen her. Most likely she was too terrified to do anything, hence the silence from inside. Not that she had anything to fear, she would not be harmed.
He nodded to his friend Charles who was perched next to the driver. A bag of coins jingled as Charles dropped it into the jarvey's waiting hands.
They had reached halfway point between London and Godric's ancestral estate. They would go the rest of the way on horseback, with the girl sharing a horse with either him or one of his friends. The driver would return to London with a message for Albert Parr and a wild story that exonerated himself from blame.
"Ashton, stay here with me." Godric waved his friend over while the others rode the horses a good distance away to wait for his signal. Abductions were tricky things, and having only himself and one other man take hold of the girl would be better. She might have a fit of hysterics if she saw the other three men too close.
He rode up to the coach, curious to see whether the woman inside matched his memory. He'd seen her once before from a window overlooking the gardens when he'd visited her uncle. She'd been kneeling in the flowerbeds, her dress soiled as she weeded. A job more suited to a servant than a lady of quality. He'd been ready to dismiss her from his mind when she'd turned and glanced about the garden, a smudge of dirt on the tip of her upturned nose. A butterfly from a nearby flower had fluttered above her head. She hadn't noticed it, even as it settled on her long, coiling auburn hair. Something in his chest gave a funny little flip, and his body had stirred with desire. Any other woman so innocent would not have caught his interest, but he'd glimpsed a keenness in her eyes, a hidden intelligence as she dug into the soil. Miss Emily Parr was different. And different was intriguing.
Ashton handed the driver the ransom letter for Parr and took up a position near the front of the coach. Taking hold of the door, Godric opened it up, waiting for the screaming to start.
None came.
"My deepest apologies, Miss Parr—" Still no screaming. "Miss Parr?" Godric thrust his head into the coach.
It was empty. Not even a fire-breathing dragon of a chaperone, not that he'd expected one. His sources had assured him she would be alone tonight.
Godric looked over his shoulder. "Ash? You're sure this is Parr's coach?"
"Of course. Why?" Ashton jumped off his horse, marched over and thrust his head into the empty coach. He was silent a long moment before he withdrew. Ashton put his finger against his lips and motioned to the inside. A tuft of pink muslin peeped out from the wooden seat. He gestured for Godric to step away from the coach.
Ashton lowered his voice. "It seems that our little rabbit chase has turned into a fox hunt. She's hidden in the hollow space of the seat, clever girl."
"Hiding under the seat?" Godric shook his head, bewildered. He didn't know one woman of his acquaintance who would do something so clever. Perhaps Evangeline, but then if anything could be said of that woman, it was that she was far from ordinary. A prickling of excitement coursed through his veins, into his chest. He loved a challenge.
"Let's wait a few minutes and see if she emerges."
Godric looked back at the coach, impatience prickling inside him. "I don't want to wait here all night."
"She'll come out soon enough. Allow me." Ashton walked back to the coach and called out to Godric in a carrying voice. "Blast and damnation! She must have slipped out before we took charge of the coach. Just leave it. We'll take the driver back to London tomorrow." Ashton shut the door with a loud slam and motioned for Godric to join him.
"Now we wait," Ashton whispered. He indicated that he would guard the left coach door while Godric stationed himself at the right.
Emily listened to the drum of retreating hooves and silently counted to one hundred. Her heart jolted in her chest as she considered what the men would do if they caught her. Highwaymen could be cruel and murderous, especially if their quarry offered little. She had no access to her father's fortune, which left only her body.
Icy dread gripped Emily's spine, paralyzing her limbs. She drew a breath as anxiety spiraled through her.
I must be brave. Fight them until I can fight no more. With trembling hands, she pushed at the roof of the seat, wincing as it popped open. Once she climbed out, she brushed dirt from her gown, noticing some tears from the rough wood on the inside of the seat. But the tears held no importance. All that mattered was survival.
Emily looked out the coach window. Nothing stood out in the darkness. Only the faint glimmer of moonlight touched the road with milky tendrils. Stars winked and flickered overhead, pale lights, distant and cold. A shudder wracked her frame, and Emily hugged herself, wanting so much to be at home. She missed her warm bed and her parents' murmurs from down the hall. It was a comfort she'd taken for granted. But she couldn't afford to think about them, not when she was in danger.
Were the men truly gone? Could it really be this easy?
She opened the coach door, and stepped down onto the dirt road. Strong arms locked about her waist and yanked her backward. The collision with a hard body knocked the breath from her lungs. Terror spiked her blood as she struggled against the arms that held her.
"Good evening, my darling," a low voice murmured.
Emily screamed once, before she bit down on the hand that covered her mouth. She tasted the smooth leather of fine riding gloves.
The man roared and nearly dropped her. "Damn!"
Emily rammed an elbow backwards into her attacker's stomach and began to wrestle free until he grabbed her arm. She swung about, striking him across the face with a balled fist. The man staggered back, leaving her free to dive inside the coach.
If she could get to the other side and run, she might stand a chance. She scrabbled towards the door, but never made it. The devil surged into the coach after her. Turning to face him, she was knocked flat onto her back.
She screamed again as his body settled over hers.
The dim moonlight revealed his bright eyes and strong features.
He caught her flailing wrists, pinning them above her head. "Quiet!"
Emily wanted to rake his eyes out, but the man was relentless. His hips ground against hers and panic drove her to a new level of terror. Her fears of being forcibly taken surfaced as his warm breath fanned over her face and neck. She shrieked, and he reared back away from her, as though the sound confused him.
"I'm not going to hurt you." His voice vibrated with a low growl, ruining any promise his words might carry.
"You're hurting me now!" She yanked her arms uselessly against his hold.
The man eased off her somewhat, and Emily took her chance. She tucked her knees up, and with all the power she could summon, she kicked. Her attacker stumbled out the open door and fell onto his back. Emily barely registered that he was winded before she turned and exited the other side of the coach.
The moment she emerged, another man lunged for her. To escape him, Emily fell back against the side of the coach. Rather than grab her, he held his arms wide to keep her from slipping by him, like he was corralling livestock.
"Easy, easy," he purred.
Emily whipped her head to the left and pleaded with her mind to think, but the man she'd bitten rounded the corner and pounced, pinning her against the coach, his arms caging her in. His solid muscular body towered over her. His jaw clenched as though one move from her would trigger something dark and wild. Emily's breath caught, and her heart pounded violently against her ribs.
The man was panting and angry. The intensity of his eyes mesmerized her, but the second he blinked, the spell broke and she fought with every bit of strength she could muster.
About the Author
Lauren Smith is an attorney by day, author by night, who pens adventurous and edgy romance stories by the light of her smart phone flashlight app. She's a native Oklahoman who lives with her three pets—a feisty chinchilla, sophisticated cat and dapper little schnauzer. She's won multiple awards in several romance subgenres including being an Amazon.com Breakthrough Novel Award Quarter-Finalist and a Semi-Finalist for the Mary Wollstonecraft Shelley Award.
Check her out at http://www.laurensmithbooks.com. You can follow her on Facebook at http://www.facebook.com/LaurenDianaSmith and on Twitter at @LSmithAuthor. Her blog is http://theleagueofrogues.blogspot.com.