text:
Home →
January 4, 2013
'Flying Monsters' - American Musem of Natural History, LeFrak Theater
Through January 04, 2013 - Upper West Side
"Flying Monsters" is a new giant screen adventure about the awe-inspiring world of a group of reptiles who ruled the skies about 220 million years ago.
Produced by award-winning Atlantic Productions and distributed by National Geographic Entertainment, the film follows world-renowned naturalist Sir David Attenborough as he sets out to uncover the truth about the enigmatic pterosaurs, who, after insects, were the first creatures to fly. Attenborough, who wrote and narrates the film, works with scientists and engineers to try and understand how and why pterosaurs flew, traveling to New Mexico's "Ghost Ranch," Big Bend National Park in Texas, Lyme Regis in the United Kingdom, an ancient pterosaur landing site in Southern France, a fossil pit in Germany where near-perfect pterosaur specimens have been found, and China's remote Liaoning Province in search of answers.
How did creatures the size of giraffes with a wingspan of 45 feet fly through the air? The audience will be immersed in the world of the pterosaur and experience the enormous challenges these creatures faced to survive, let alone flourish, in prehistoric skies. The film will introduce viewers to Dimorphodon, the earliest known pterosaur with a complete fossil, Darwinopterus, which, with a lighter build than Dimorphodon, had a wingspan of 2.3-3.3 feet, Tapejara, which may have configured its body to sail across the ocean in search of prey, and Quetzalcoatlus, which, with a wingspan of 33-40 feet and an 8-foot-long beak, is the biggest known animal that has ever flown.
Flying Monsters 3D won a BAFTA award in 2011 from the British Academy of Film and Television Arts in the Specialist Factual category, Best 3D Program at the 2011 Jackson Hole Wildlife Film Festival, and Best Science Film from the Association of International Broadcasting.
The film will screen at the museum through January 4, 2013.
Entrance to the museum is included in movie ticket price.
Progressive Insurance New York Boat Show - Javits Center
January 04, 2013 - Midtown
The Javits Center transforms into a boat lover's paradise at the 2013 Progressive Insurance New York Boat Show.
For four days in January, visitors can beat the post-holiday blues and gear up for summer with exciting attractions that are sure to entertain and deals on the best in boating. Avid boaters and those just discovering the boating lifestyle can shop and compare hundreds of boat brands side by side to find competitive deals on everything from luxury motor yachts and sport fishers to performance boats, sailboats, and thousands of marine accessories.
Wake boarding superstars Phil and Bob Soven who star in MTV's The Wake Brothers, will chat with fans about their "extreme" experiences as two of the nation's top-rated professional wake boarders. Other highlights include interactive boating workshops, a real American shipwreck, the Dema 'Be a Diver' pool and Paddlepalooza, the nation's first and longest running boat show offers fun for the whole family with plenty of ways to discover why life is better with a boat.
Kids can marvel at hundreds of boats of all sizes and enjoy playing "captain" as they take the helm, plus family and kid-friendly features include: kids can paddle their own boat in the mini paddleboat lake, get creative at Create-a-Boat, and try their hand at docking in the Powerboat Docking Challenge! Kids ages 13+ can try SCUBA at the Dema "Be a Diver" Pool and test their paddlesports skills on water and on land at Paddlepalooza.
The 36th Annual Three Kings Day Parade - El Museo del Barrio
January 04, 2013 - Harlem
Experience the live camels, colorful puppets, parrandas, and dancing on this magical day. The parade route begins at 106th St. and Madison Ave. and ends at 115th St and Park Ave. School groups, community members, local businesses, and families are encouraged to participate. Early registration is strongly suggested.
Professional Bull Riders - Madison Square Garden
January 04, 2013 - Midtown
Buckle up! Professional Bull Riding returns to Madison Square Garden with the 2013 Monster Energy Invitational.
Following three consecutive sold-out performances in 2012, the PBR returns to New York City for the seventh consecutive year to open the 2013 elite Built Ford Tough Series season and kick-off the 20th anniversary of PBR competition.
Two decades ago, 20 cowboys with one dream transformed bull riding into a global sports phenomenon that is now televised worldwide. Their vision and determination made PBR one of the fastest growing sports in history which has awarded over $120 million dollars in prize money over to date. The 20th Anniversary celebration includes stops in at least 15 different states over 27 events on the 2013 Built Ford Tough Series tour.
This seventh annual event, the Monster Energy Invitational, will feature the Top 35 bull riders in the world and the country's fiercest bucking bulls. Fans will be able to experience three action-packed nights of intense 8-second rides and outrageous wrecks as 150-pound cowboys – including 2012 MSG Invitational Champion Cody Nance and reigning World Champion Silvano Alves – have their chance in the arena against their 2,000-pound opponents.
The PBR is the world's premier bull riding organization. 2013 marks the 20th anniversary of PBR competition. In just two decades, the dream of 20 bull riders has become a global sports phenomenon that is televised worldwide. More than 100 million viewers annually watch primetime PBR programming on networks around the world and nearly two million fans attend Built Ford Tough Series and Touring Pro Division events each year. 25 riders have earned over $1 million each, including Justin McBride with $5.5 million – the most of any Western-sports athlete in history. PBR World Champion Silvano Alves also reached $2 million in 23 months and 58 events, which is faster than any bull rider in history. The Built Ford Tough Series will make 26 stops around the U.S. before the Built Ford Tough World Finals in Las Vegas on Oct. 23-27, 2013. The World Finals are where the PBR World Champion will be crowned and awarded the coveted championship buckle and a $1 million bonus. Known as the richest bull riding event to take place, the World Finals awards over $2 million to participating riders each year. Prior to PBR, there was not a bull rider who earned $1 million during their career, including eight-time world champion Donnie Gray. Top-ranked rodeo bull riders could earn $100,000 at most in a season, compared to 20 or more riders earning over $100,000 apiece in each of the last seven years of PBR. In 2011, 22 riders earned over $100,000, 10 of which won more than $200,000. PBR has awarded over $120 million dollars in prize money over 20 years of competition.
For more information on the PBR, go to pbr.com, or follow on Facebook at facebook.com/PBR, Twitter at twitter.com/PBR, and YouTube at YouTube.com/PBR.
Print It - Children's Museum of the Arts
January 04, 2013 - SoHo
This drop-in class explores various types of printmaking, including block prints, monotypes, and silk screening.
Dr. Seuss Story Time - Children's Museum of Manhattan
January 04, 2013 - Upper West Side
Use your listening ears to hear favorite classic stories by Dr. Seuss.
RAMMELLZEE Fine Art Gallery Workshop - Children's Museum of the Arts
Through January 05, 2013 - SoHo
Experience RAMMELLZEE's unique world of neon color, edgy design, and vast imagination in this series of fine art workshops. To fully explore his vision, CMA Teaching Artists will introduce kids to a variety of mediums and techniques including illustration, painting, sculpture, and music.
Creatures of Light: Nature's Bioluminescence - American Museum of Natural History
Through January 06, 2013 - Upper West Side
This exhibition features the extraordinary organisms that produce light, from the flickering fireflies found in backyards across the Northeast to the alien deep-sea fishes that illuminate the perpetually dark depths of the oceans.
Rare among plants and animals that live on land, the ability to glow--that is, generate light through a chemical reaction--is much more common in the ocean, where up to 90 percent of animals at depths below 700 meters are bioluminescent, including many unknown to science. Like the crystal jelly whose glow led to a revolution in cell biology, these animals may hold important clues to essential questions, but scientists are in a race against time as habitats are increasingly threatened by pollution, overfishing, and global climate change.
Visitors will move through a series of re-created environments, from the familiar to the extreme, to explore the diversity of organisms that glow and how they do it; discover the variety of ways in which light is used to attract a mate, lure unsuspecting prey, or defend against a predator; and learn how, where, and why scientists study this amazing natural phenomenon. Throughout the exhibition, iPads featuring videos, infographics, photo albums, and animations will provide opportunities to hear directly from researchers about their work.
Starting in a local meadow on "a summer's night," where fireflies use unique patterns of flashing light to communicate with potential mates, visitors will descend into "a mysterious cave" in New Zealand to watch a fantastic spectacle of luminescent "fishing lines" strung by larval gnats (glowworms) to trap prey.
A unique interactive environment in "a sparkling sea" will introduce the brilliant light displays of Mosquito Bay on Puerto Rico's Vieques Island, where high concentrations of microscopic dinoflagellates, a type of plankton, create a halo around anything that moves through the water. Visitors will activate the bioluminescent bay as they move through this section.
"The night dive" will feature a large-scale, day-and-night interactive image of the Cayman Islands' Bloody Bay Wall, a remarkable coral wall that is home to both bioluminescent and biofluorescent animals, which glow only after exposure to light.
In "altered light," visitors will encounter the jellyfish Aequorea victoria, which combines bioluminescence with biofluorescence (in which an organism's molecules absorb blue light, then radiate it at a lower energy, longer wavelength) to emit flashes of green light. The protein found in its light organs, known as the green fluorescent protein (GFP), has become a critical tool in cellular and developmental biology, used for mapping neural circuits, observing cancer cells, and much more.
Borrowed Light will feature live flashlight fishes, which harbor bioluminescent bacteria in an organ under their eyes, and highlight symbiotic relationships.
"The deep ocean" will take visitors into the perpetually dark deep ocean, which comprises the vast majority of the planet's habitable space. A deep sea theater will reveal the diversity of animals that marine biologists have captured on camera, including female anglerfishes waving bioluminescent "lures" to attract prey and mates, and jellyfishes that light up like a flashing pinwheel when threatened.
Tunes with Tina - Bar on Fifth at Setai Fifth Avenue
Through January 06, 2013 - Midtown East
Singer/jazz pianist Tina deVaron will take center stage at this interactive weekend brunch where kids and parents are invited to sing along and request songs while enjoying a prix-fixe menu. September's theme is "Back to Broadway," October's theme is "Let's See Your Costume", November's theme is "Move with the Movies," and December's theme is "Here Come the Holidays."
'ELF: The Musical' - Al Hirschfeld Theatre
Through January 06, 2013 - Midtown
"ELF: The Musical" is the hilarious tale of Buddy, a young orphan who mistakenly crawls into Santa's bag of gifts and is transported to the North Pole. Buddy is raised unaware that he is actually a human, until his enormous size and poor toy-making abilities cause him to face the truth.
With Santa's permission, Buddy embarks on a journey to New York City to find his birth father and discover his true identity. Faced with the harsh reality that his father is on the naughty list and his step-brother doesn't even believe in Santa, Buddy is determined to win over his new family and help New York remember the true meaning of Christmas.
Based on the 2003 movie Elf starring Will Ferrell, "ELF: The Musical" has become a New York holiday tradition.
Monster Energy Invitational - Madison Square Garden
Through January 06, 2013 - Midtown
The seventh annual Monster Energy Madison Square Garden Invitational features the Top 35 bull riders in the world and the country's fiercest bucking bulls. Fans will be able to experience intense 8-second rides and outrageous wrecks as 150-pound cowboys – including 2012 MSG Invitational Champion Cody Nance and reigning World Champion Silvano Alves – have their chance in the arena against their 2,000-pound opponents. Tickets are available at the MSG box office, online at ticketmaster.com and by telephone at (800) 745-3000. For more information visit www.pbr.com.
Nybelwyck Hall: A Mansion in Miniature - Hudson River Museum - Glenview
Through January 08, 2013 - Yonkers
Nybelwyck Hall, a dollhouse representing Lilliputian life at its most luxurious, makes its appearance in Glenview, the Museum's 1897 river home. The 24-room, granite-and-mortar Glenview, and Nybelwyck, the 24-room dollhouse, share architectural features - a Great Hall and a double staircase that curves from the top floor down to the Hall. Nybelwyck's central facade is loosely based on the Hudson River estate, Staatsburg, the Ogden Mills House. The orange-and-green colors on its Victorian addition are reminiscent of Wilderstein, in Rhinebeck, the family home of Franklin Delano Roosevelt's personal secretary. Dollhouse enthusiast Mark O'Banks created Nybelwyck Hall over the course of a decade and looked to the wisdom of a ouija board to name his creation. The house is furnished with found objects in its 24 rooms, as well as rugs O'Banks designed. Among its 900 objects are minute musical instruments that play, doors with intricate locks that work, and a tiny dollhouse within the dollhouse's nursery.
Scandinavian Sing-Along - Scandinavia House: The Nordic Center in America
Through January 12, 2013 - Midtown
Scandinavia holds a treasure-trove of children's songs and games. Danish musician Vibe Normann will introduce children to English versions of these songs, play musical games, and perform a selection of songs in modern, jazzy arrangements. Come prepared to move, dance, imagine, and sing your heart out.
Vibe Normann is a Danish musician living in New York with a background in classical and Danish folk music. She has a special love for the Danish children's songs that she grew up with, and has performed all over the eastern United States. Normann will be accompanied by pianist Sean Wayland.
The Amazing Max and the Box of Interesting Things - Manhattan Movement and Arts Center
Through January 13, 2013 - Midtown
The Amazing Max and The Box of Interesting Things is a Magic Show with a mind of its own. Magician Max Darwin makes objects appear out of thin air, as the laws of physics are defied, and miracles are performed inches from spectators' faces. As the props onstage seem intent on surprising even the magician himself, this out of control show bursts with striking visual magic, comedy and juggling, and loads of audience participation. The Amazing Max and The Box of Interesting Things is the wackiest, most interactive, highest energy magic show for families on the market today.
Witness: The Art of Jerry Pinkney - Hudson River Museum
Through January 13, 2013 - Yonkers
In 100 books, Jerry Pinkney has turned his artist's eye and hand to the story - a classic, a folktale, a fable - and readers all over the world saw something new, something they wanted to read and to remember. Pinkney is the master of the American picture book. More than 120 watercolor illustrations by the artist, who lives in Westchester, will be on view in the first major overview of his career as a designer and illustrator in "Witness: The Art of Jerry Pinkney." The exhibition follows his 2010 award of the Randolph Caldecott Medal for "The Lion and the Mouse." The Hudson River Museum is the only New York showing for this exhibition on national tour, organized by the Norman Rockwell Museum in Stockbridge, Massachusetts. Pinkney has found it interesting to trace how the chapters of his life have knitted themselves into his art, touching on the cultural themes of the African-American experience. He uncovers, again and again, the energy in a small moment that surprisingly can change a life or turn an event in history. Most recently in his almost wordless adaptation of the Aesop fable, "The Lion and The Mouse," two creatures on a faraway African plain choose not the hard chase and bloody battle but, instead, exchange kindnesses. Fascinated with wildlife, Pinkney, in many books including "The Brer Rabbit" in "The Last Tales of Uncle Remus" shows us the human qualities of an animal as he shows us the animal in its natural setting. Pinkney, Philadelphia born and bred, and now a long-time New Yorker, has illustrated children's books since 1964, but it was not an easy path. Blacks were not expected to be able to forge careers in the art field. Trained as a commercial artist at a vocational school, he persisted and won a scholarship to the Philadelphia College of Art where his work took on the shading and detail for which he is now renowned, and he where he began to use color to convey mood and emotion. He has most often worked on children's books that celebrate multiculturalism and African-American heritage, as he took on the task of reshaping the perceptions of the stereotypes of blacks. He designed the first nine stamps of the US Postal Service's Black Heritage series. Art critics will look at the color of Pinkney's illustrations, the scarlet curve of Little Red Riding Hood's cloak, the golden blade of grass on the Serengeti plane. Sociologists will look at Pinkney the little boy, who without a visit to a museum or an art class, drew at home on the back of wallpaper samples. What the viewer will see though, in "The Art of Jerry Pinkney" is his wish: "It has always been my intent for my work to continue to breathe after publication. My hope is that (museum visitors) will believe that Jerry Pinkney cares deeply for people, making art, and visual storytelling." The exhibition includes a 96-page illustrated catalog that provides new scholarship into Pinkney's work in essays by the exhibition's co-curator Stephanie Haboush Plunkett, Dr. Gerald L. Early, and others. On view through January 13, 2013.
Big Apple Circus - Lincoln Center Damrosch Park
Through January 13, 2013 - Lincoln Center
The Big Apple Circus presents Legendarium, where you will experience the nostalgic thrills of bygone big tops and get a first-hand view of beauties, daredevils, and clowns from another era.
Travel back to when circus traditions were born and witness incredible acts that would have had the villagers chattering for days.
The courageous mid-air flips and catches of a man on the trapeze, a captivating contortionist whose flexibility is as impressive as her steadfast poise, an agile, adept acrobat and her strapping suitors, a swaying wire act of sure-footed strength and stability!
The dizzying delights of a daring inventor in his tumbling, twirling hoop, the stunning, soaring beauty of a pair on aerial straps and a woman held aloft by hanging silks, a jaw-dropping juggling tango team performing to passionate rhythms!
Bicyclists whose spinning wheels turn smooth and speedy stunts, majestic horses with graceful gaits and playful pups with teasing tricks, and what circus would be complete without bumbling clowns who bring the spirit of timeless comedy?
It's all led by an affable ringmaster and the great Big Apple Circus Band playing the iconic songs of yesteryear. So run away with the Big Apple Circus and relive big tops of old in a memorable one-ring show for the ages!
Holiday Train Show - New York Botanical Garden
Through January 13, 2013 - Bronx
Marvel at the charming model trains and New York City landmark replicas, stroll the spectacular grounds, and decorate (and eat!) gingersnaps.
Within the enchanting setting of the Enid A. Haupt Conservatory, model trains zip over bridges and past replicas of New York landmarks made of plant parts such as nuts, bark, and leaves. Show favorites include the original Yankee Stadium, Statue of Liberty, and Brooklyn Bridge. The Artist's Studio provides an insider's look at how the replicas are constructed as you get up close to G-gauge trains.
'Angelina Ballerina The Very Merry Holiday Musical' - McGinn/Cazale Theatre
Through January 13, 2013 - Upper West Side
Based on the characters created by Katharine Holabird and illustrated by Helen Craig, the Angelina Ballerina The Musical creative team returns with book and lyrics by Susan DiLallo, music by Ben Morss, and direction and choreography by Sam Viverito.
Building Connections - Center for Architecture
Through January 19, 2013 - Greenwich Village
Building Connections, the Center for Architecture Foundation's annual exhibition of K - 12 student design projects during the 2011-12 school year. The exhibition covers a wide range of topics in architecture, from NYC landmarks and bridges to designs for new Olympic stadiums and resort islands.
Preschool Art Class - Arts in Action Studio
Through January 22, 2013 - Upper West Side
Founded and directed by Angela Tripi-Weiss, who provides a unique, sequentially-structured fine art education.
Preschool artists will embark on an exploration of how they feel while creating laughable long lines, silly sassy shapes, fabulous forms, and colossal kaleidoscopes of colors using many of the art materials that artists use to express themselves.
These classes are designed to expose your child, ages 3 to 5, to a variety of fun art materials, and the many exciting ideas and concepts that artists employ while creating their own art. They will tell their own visual stories through art based activities that foster fun, and an understanding of concepts of line, shape, form, and colors in a fun filled way.
Afterschool Art Class - Arts in Action Studio
Through January 23, 2013 - Upper West Side
Founded and directed by Angela Tripi-Weiss, who provides a unique, sequentially-structured fine art education. Arts in Action teaches a visual language as a means of communication that's fun to learn.
'The Velveteen Rabbit' - DR2 Theatre
Through January 27, 2013 - Union Square
Based on the book by Margery Williams and adapted for the stage by Kevin Del Aguila ("Click Clack Moo," "Altar Boyz"), this wonder-filled production is a testament to the power of a child's imagination. With a little bit of nursery magic, three actors and their simple props transform into a wise old rocking horse, a cavalcade of mechanical playthings, a kind-hearted fairy, and of course, a stuffed rabbit who is transformed by the love of a young boy.
Beatrix Potter: The Picture Letters - Morgan Library & Museum
Through January 27, 2013 - Midtown
Beatrix Potter: The Picture Letters brings together for the first time twenty-two letters, including the famous Peter Rabbit letter, from important American private holdings as well as from three major institutional collections: the Morgan, the Victoria & Albert Museum in London, and the Cotsen Children's Library at Princeton University. The letters will be supplemented and enhanced with more than eighty related items, including Potter's privately-printed "The Tale of Peter Rabbit" and other printed books, original artwork, manuscripts, and early children's toys and games inspired by Potter's stories.
A joyous testament to the eternal power of a child's imagination, this classic tale comes to life for a whole new generation in a wonder-filled, interactive production created by Kevin Del Aguila. With a little bit of nursery magic (and a whole lot of audience participation), three actors and their simple props transform into a wise old rocking horse, a cavalcade of mechanical playthings, a kind-hearted fairy and, of course, a stuffed rabbit who is transformed by the love of a young boy.
Cinderella Brunch - The New York Palace
Through January 27, 2013 - Upper East Side
The New York Palace will begin serving a magical Cinderella Brunch on Saturday, Dec. 1. Featuring whimsical entrees and delights for all ages, the themed brunch will be offered on Saturdays and Sundays, 12pm-2:30pm.
As part of The Palace's enchanted Cinderella Brunch, Prince Charming will make special guest appearances each Saturday and Sunday to spread delight to diners of all ages. Guests can pose for a photo with Prince Charming and try on a special Cinderella slipper. Guests can enter a daily drawing to win four tickets to see Rodgers and Hammerstein's "Cinderella" on Broadway.
Navigating the Path to Parenthood Between Fertility Treatments and Adoption - Spence-Chapin Services
Through January 28, 2013 - Upper East Side
When faced with infertility, couples and singles are faced with more possibilities to build their families, but also more confusion, risk, and unknowns. For most families, the transitions between different paths to parenthood can be painful and unclear.
This will be a presentation and discussion focused on the emotional decisions involved in pursuing fertility work, deciding when to stop or when to keep going, how and when adoption can become a part of the conversation, and how thoughtful decisions and planning ahead can help make your journey to parenthood just a little bit smoother.
Little New-Yorkers - DiMenna Children's History Museum at New-York Historical Society
Through January 30, 2013 - Upper West Side
On Tuesdays and Fridays kids ages 2-4 can explore New York City through singing, stories, and activities. Each class will include story readings, time with historic toys, free exploration, a special Little New-Yorkers hello song, and time in the museum or a craft project, which will alternate each week. Some of the stories that will be featured include Larry Gets Lost in NYC, Don't Let the Pigeon Ride the Bus, The Little Red Lighthouse and the Great Gray Bridge, New York from Above, and Knuffle Bunny.
The RAMMELLZEE Galaxseum - Children's Museum of the Arts
Through January 30, 2013 - West Village
The Children's Museum of the Arts presents the most comprehensive collection of works to-date by visionary artist and MC, RAMMELLZEE. Entitled The RAMMELLZEE Galaxseum, the exhibition will reveal the inner workings of RAMMELLZEE's artistic vision and trace his career trajectory which began in the 1970s as a pioneering "Wild Style" graffiti writer and hip hop MC and evolved in manifesto and medium to the far reaches of the imagination.
RAMMELLZEE's legend grew in a Tribeca loft known as the "Battle Station," where the artist conceived a new vision for the future – a self-made mythology, known as Gothic Futurism, with its own set of heroes and villains, which he called Recyclers and Trashers or more notably, Garbage Gods and Monster Models. For over 30 years, RAMMELLZEE inhabited the universe he created, building layer upon layer of legend and legacy.
The RAMMELLZEE Galaxseum showcases a visual encyclopedia of RAMMELLZEE's artworks including full-body life-sized costumes, masks, character frescoes, figurines, large scale paintings and video and audio recordings from some of his performances. Suspended from the gallery's ceiling are RAMMELLZEE's legendary letter racers, or car-like vehicles representing letters of the alphabet seeking to "break free."
In addition to his visual artwork, RAMMELLZEE is well-known for his contributions to hip-hop lyricism and vocalization, as illustrated in the documentaries Style Wars and Wild Style, as well as the hip-hop single Beat Bop, which was produced by Jean-Michael Basquiat and consists of a 10 minute narrative rap by RAMMELLZEE and K-Rob that is considered to be one of the most essential hip-hop recordings ever made.
Playtime with Sammie and Tudie - Sprout San Francisco
Through January 31, 2013 - Upper East Side
Playtime with Sammie and Tudie is a 'mommy and me' style class. The interactive class includes themed week such as ducks, butterflies, teddy bears, fish, and dinosaurs. Great for ages 1 to 3 1/2 years. Come by the class once or buy a multiple class package.
11th Annual Holiday Train Show - New York Transit Museum Shop in Grand Central Terminal
Through February 10, 2013 - Midtown
The New York Transit Museum presents its Holiday Train Show at its store in Grand Central, with a brand new layout wherein model Metro-North and New York Central trains depart from a miniature Grand Central on their way North on a 34' long, two-level "O" gauge layout.
Vintage model trains from the museum's collection will also be on display joined by stunning New York Central railroad posters harkening back to Grand Central's heyday as the nexus of long distance and commuter train travel.
'The Lion, The Witch and the Wardrobe' - St. Luke's Theatre
Through February 23, 2013 - Times Square
Off Broadway Family Theatre presents an adaptation of C.S. Lewis' beloved tale from his Chronicles of Narnia series. In this creative adaptation, two actors play eight characters, both human and animal. Travel to Narnia through the old wardrobe with the four Pevensie children, and get swept into their journey to stand with the great lion Aslan against the evil White Witch. She has placed the land of Narnia under enchantment and now it is always winter, but never Christmas. Audiences will be drawn into the theater's "magic circle," where children and animals, fauns and mythical creatures come to life in this enchanting tale.
Spy: The Secret World of Espionage - Discovery Times Square
Through March 31, 2013 - Times Square
Spy: The Secret World of Espionage is a new exhibition launching in May at Discovery Time Square. This interactive exhibition is a once-in-a-lifetime opportunity to step inside the real world of intelligence, showcasing real items from the actual vault of the CIA. Encounter real stories and actual gadgets revealed for the first time ever from the CIA vault. Experience what it's like to be a spy firsthand by creating your own disguises, altering your voice, and navigating laser beams. Plus, gain exciting new insights into how intelligence really works: how science and technology play a major role, and discover how the men and women who do this kind of work shape the course of history every day.
Harry Potter: The Exhibition - Discovery Times Square
Through April 07, 2013 - Times Square
Back by popular demand, this stop in New York City will serve as the exhibition's return to North America after a yearlong international tour. Since it was last here in 2011, the exhibition has been updated significantly with artifacts from the film series, including the final film.
The 14,000-square-foot experiential exhibition includes dramatic displays inspired by the Hogwarts film sets and authentic costumes and props from the films. Fans will have a firsthand view of hundreds of artifacts displayed in settings inspired by the film sets including the Great Hall, Hagrid's hut, the Gryffindor common room, and more.
In addition to the hundreds of original props and costumes from the Harry Potter films displayed during the exhibition's first time in New York, original artifacts from the series finale, Harry Potter and the Deathly Hallows: Part 2, will be on display for the first time, including a new vignette dedicated to the epic battle of Hogwarts.
Magnificent Trees of The New York Botanical Garden - New York Botanical Garden
Through April 14, 2013 - Bronx
Larry Lederman, landscape photographer and member of NYBG's Board of Advisors, has spent years walking the garden grounds to observe and photograph trees and vistas in all seasons and at all times of day. Lush images featuring their diversity and visual impact are on view in the gallery space.
The New York Botanical Garden is home to more than 30,000 trees, some in woodland, some in groves, and some standing in solitary majesty. Magnificent Trees is lavishly illustrated with photographs by Larry Lederman and accompanied by descriptions by Todd A. Forrest, Arthur Ross vice president for horticulture and living collections at the garden. An authority on the diverse species present across the 250-acre landscape, Forrest details their fascinating histories -- from their vital role in Native American life and culture to their function in neutral territory during the Revolutionary War. Lederman captures their grandeur in hundreds of stunning images and portrays their diversity with photographs that reveal the trees in myriad fascinating perspectives: in landscape views that convey the garden's genius loci; portraits illustrating the architecture and profound visual impact of select trees; remarkable details of flowers, fruit, leaves, and bark; and impressionistic images, abstract in character yet beautiful in composition.
Shababa™ Saturday Mornings with Karina - 92Y
Through May 25, 2013 - Upper East Side
Celebrate the joys of Shabbat with the Shababa™ community in this intergenerational family Shabbat experience including singing, art projects, playground visits, holiday themed celebrations, and more. Saturdays, ongoing, 10:30am-12pm.
Shababa™ Saturday Club - 92Y
Through May 25, 2013 - Upper East Side
Let your child explore and expand their connection to Shabbat, Jewish holidays, and Jewish values in a warm, informal communal setting. The staff will engage them through creative and traditional approaches. Saturdays, ongoing, 10:30am-12pm.
Manolo Valdes Monumental Sculptures - The New York Botanical Garden
Through May 26, 2013 - Bronx
Drawing inspiration from the natural landscape of the Botanical Garden, seven towering sculptures by acclaimed Spanish artist Manolo Valdes showcase the relationship between art and nature.
Our Global Kitchen: Food, Nature, Culture - American Museum of Natural History
Through August 30, 2013 - Upper West Side
Food is the one thing that unites every culture, race, and generation: over one billion people work in agriculture and every person eats. Food is used as a social ritual, a holiday tradition, a symbol of comfort, a gift, and an excuse to catch up with friends. The curators of this exhibition hope it will encourage visitors (both grown ups and kids) to examine a thing we all do everyday -- eat! -- and think about everything that goes into that act more consciously. The exhibition touches on a lot of serious issues such as the scarcity of food predicted for the future, alternatives to avoid that shortage, and childhood obesity.
'Twas the Night Before Christmas: A Holiday Reading With NBC New York's Anchor Pat Battle - Church of the Intercession
Through December 23, 2013 - Manhattan
One of New York's longest running family holiday traditions is the annual recitation of Clement Clarke Moore's 'Twas the Night Before Christmas, this year read by News 4 New York's anchor Pat Battle, at historic Church of the Intercession. Lantern procession, wreath-laying at Moore's grave site and reception immediately follow at Trinity Church Cemetery & Mausoleum, located across from the church.
Pat Battle joined NBC New York in April 1996. She serves as co-anchor for "Weekend Today in New York" and is one of the station's New Jersey correspondents. Battle's reports focus on issues affecting the Garden State, as well as breaking news of the day.
Clement Clarke Moore (1779-1863) was the son of Dr. Benjamin Moore, the sixth rector of Trinity Parish. In 1822, as a Christmas present for his six children, Moore wrote the poem also known as "A Visit from St. Nicholas" that became a cherished classic. Moore is buried at Trinity Church Cemetery & Mausoleum, which is located across from The Church of the Intercession.
All Aboard with Thomas & Friends - New York Botanical Garden
Through January 01, 2027 - Bronx
Join Thomas and Driver Sam on a fun-filled, sing-along, mini-performance adventure by helping Thomas find his way from Knapford Station to Brendam Docks using teamwork, friendship, and discovery. Parents: bring your camera for a photo op with Thomas to capture the special day. Daily, January 1-27.
New England Fashion+Design Association Opens in White Plains
MacInspires Offers Makerspaces and Larger Classrooms
When the News Is Terrifying
Chappaqua Children's Book Festival Coming in October
Party Planning
After-School Activities
Camp Guide
Sports for Kids
Child Care Options
Education Resources
Family Health Guide
Special Needs Guide
Aug 18, 2017
Aug 17, 2017
Aug 14, 2017
Aug 16, 2017
Jul 07, 2017
Jun 26, 2017
Aug 09, 2017
Aug 15, 2017
Kidfund is an app that makes putting money into your child's savings account as easy as tipping the barista.
Tips to help parents promote positive sibling relationships between an older child and an infant, as well as when the children get older.
| All Rights
Reserved | Davler Media
| Privacy Policy
Get NYMetroParents in Your Inbox
Get Newsletter
Get NYMetroParents via Email


text: Wife of John Newton Oliphant, a notorious Confederate guerrilla fighter. Margaret was denounced by a neighbor in Johnson Co., MO, for giving aid and comfort to "bushwhackers." Earlier, her house had been burnt down, reportedly by local Union militia authorities, while her husband Newton was away fighting Federal troops in the countryside.

subset: commoncrawl


text:
Hi, I have site running and wish to convert the urlhttp://mysite.com/variabletohttp://mysite.com/index.php?action=variable
This requirement is opposite to the usual method to convert dynamic url to static url
How can this be achieved with mod rewrite rules
I'm here to help members learn to create good mod_rewrite code (rather than offer free coding) so I'll ask you first to read the tutorial linked in my signature then make a valid attempt. Post your code and I'll be happy to critique it and offer additional pointers to get you where you want to go.
BTW, that's basically what WordPress's mod_rewrite does and they do a good job despite a few missteps that noobies might not be aware of. Look through this board for examples (and my critique).
Hi, Below is what I have written
RewriteEngine OnRewriteRule ^index\.php\?data\=variable$ /variable [L]
And I wish to request the following from browser:http://example.com/variable/
to get redirected tohttp://example.com/index.php?data=variable
However this doesn't redirect
Your rewrite rule is backwards (or so it seems) Since you want to capture /variable/ and redirect it to index.php?data=variable, you want to do the following
RewriteEngine On
RewriteRule ^variable/? index.php?data=variable [L]
Then when you want to make it capture /*/ and redirect to index.php?data=*, you can do the following
RewriteEngine On
RewriteRule ^([a-zA-Z0-9]+)/? index.php?data=$1 [L]
Good reply except that I'd prefer to check that the request is not for a directory (or extensionless file) before your RewriteRule. That's important as not to do so could disable important functionality.
If you read the tutorial, you'd have known that your attempt was "backward" as cp noted. It's worthwhile to spend the time to read and understand the tutorial and look through the sample code (and explanations) at the end.
Bah! :headbang: I knew that! I can't believe I forgot it. Next time I'll nail it!
:tup: Not bad anyway!


text:
STEVE Kirby and Will Gidman are the latest county cricket stars to confirm their involvement in this weekend's T20 charity match at the County Ground.
Somerset speedster Kirby and Gloucestershire's Gidman will join Jon Lewis, Hamish Marshall, Alex Gidman and Craig Miles in turning out alongside a host of local cricketing talent in aid of End Polio Now on Sunday.
Kirby, 36, has captured 572 first-class wickets at an average of less than 30 during a distinguished 18-year career, while Gidman - who spent time at Goatacre last season - has two County Championship hundreds and 14 half-centuries to his name.
As well as the four other pros, the pair will be teamed up with the likes of Purton's India Under 19 international Akki Gomel, Swindon seamer Matt Kidd and Goatacre veteran Kevin Iles for the event, with the match due to start at 2pm.
Former Swindon Town defender Phil King will be dusting off his whites and striding to the crease, while Advertiser chief sports writer Sam Morshead is also set to take part.
Entry to the game is priced at £5 for adults and £3 for juniors and OAPs, with proceeds split between the chosen charity and the cricket club.
Having received significant backing from prominent local businesses, including Excalibur, Richard James Estate Agents, Arkell's Brewery and Deacon's, the club will be providing plenty of entertainment and refreshments to keep the whole family entertained over the course of the afternoon.
Children's rides, a hog roast and barbecue, an ice cream stall and a beer tent will all be available, while car parking can be found in the County Ground car park.
Entry to the event will be via the gates from the County Ground or via the main entrance to the club off County Road.


text: Jack was a tall thin man with curly balck hair and bright blue eyes. He had a wicked, ornery grin. My father, Jack's brother, told many stories about what a fun loving boy he was. He had a great sense of humor. They were always getting into trouble and most of the ideas were Jack's. They grew up in a poor Irish Catholic neighborhood in Columbus, Ohio.


text:
The voice of 12-year-old Emily Gray debuted in late January on a new animated TV series as "Olivia," the precocious 6-year-old piglet of storybook fame.
Despite headlines made by her on-screen persona: "Olivia, Spunky Girl Pig, Gets Nickelodeon TV Series" in USA Today and "Olivia Gets her own TV Show" in the New York Post, the sixth-grader from Scripps Ranch says her classmates haven't treated her differently.
She gets occasional feedback such as, "I heard you on TV," but it's back to life as usual after recording 26 half-hour episodes.
In fact, Emily and her classmates aren't often home when the program airs weekdays at 11:30 a.m., so she records it and makes occasional trips to Studio West in Rancho Bernardo to record lines.
Nickelodeon producer Megan Laughton described Emily's voice as natural, unforced and spunky. "We listened to all manner of little girls, and when we heard Emily we all just did that inhale of, "That's her," Laughton says. She added that the program has since been picked up in Great Britain, Canada, Australia and France.
If all goes as hoped, Emily could be taping more episodes because, unlike maturing boys, growing girls' voices don't change pitch significantly, explains a Nickelodeon publicist. The original girl portraying "Dora the Explorer" recorded for eight years before finally retiring from her role last year.
While Emily is game to record another "Olivia" season, she isn't sure she'll be a candidate. "I might get braces soon, and that may change my voice."
San Diego ties
Former U-T staffer R.B. Brenner took a month's leave from his editing job at the Washington Post to be a paid consultant on the recently released movie, "State of Play," about the newspaper business. A bonus: He ended up with two lines on screen opposite Academy Award-winning actress Helen Mirren and membership in the Screen Actors Guild . . .
There most likely were a few U-T newsroom props on the set of the fictional Washington Globe, where Russell Crowe's reporter character worked. Movie set designer Cheryl Carasik toured the U-T newsroom in September 2007 and photographed paper-choked desks, filing cabinets, staffers' story souvenirs, supply rooms, etc. She took several props back to the Culver City studio, including outdated dictionaries, old police radio monitors and a truckload of newsprint.
Star search . . .
When T.K. and Ellen Bryson of Del Mar got wind that a celebrity guest was about to arrive at their hotel during their recent visit to Cleveland, they stationed themselves in the lobby at the guest's rumored arrival time.
Sure enough, in walked Robert Redford. Later, in the InterContinental Hotel restaurant, the couple happened to be seated at a table facing a private room where they could see him dining.
As the evening passed, Ellen noticed Redford staring in her direction. Each time she looked up, he grinned. At first she was baffled, but politely smiled back. Then it hit her.
He surely must be mistaking her for Sarah Palin. Whenever she puts her hair up and wears glasses, people say she resembles the Alaska governor.
Mistaken identity or not, Ellen was delighted to catch Redford's attention – and his signature smile.
Party scene
As attendees scramble to find red shoes – be they pumps, sandals, loafers or tennis shoes – to wear to tonight's Red Shoe Ball, Barnhart construction executive Brian Cahill is all set. He spray painted a pair of construction boots. After all, his company is building the new Ronald McDonald House where the event takes place. Guests will preview the facility, which is set to open June 13.
Diane Bell's column appears Tuesdays, Thursdays and Saturdays. Fax items to (619) 260-5009, call (619) 293-1518 or e-mail to email@example.com .


text:
Usualy the beef ribs locally look like bleached whale bones with a few meat fibers on them, but my local grocery had these & they were the best I've seen!
Cost $2.70/ lb since I don't buy them don't know if good or bad!
Had already seasoned them & looking for idea's & got on this forum then on quel's blog ( lots of idea's I may steal oops borrow!)
On CGK with a couple chunks pecan for about 90 min @ 300+-
Really good , if I find them with meat will do again!


text:
Mullen Library Stacks Directory
Enter call number of a book in Mullen Library and the system will show it on the map.
PDF version of Mullen Stacks Directory
This directory shows the location of material in the Mullen Library stacks. The stacks of Mullen Library are located on the east side of the building. To find out where an item is located, look for its call number. The call numbers are listed alphabetically, in ranges. Above each range is the stacks location for items within that range.
The stacks are organized in alphabetical call number order. The General Stacks begin with A in 3A North and continue on to 3A Center and 3A South before picking up again in 3 North and so on. Periodicals are housed in two rooms on the first floor of the stacks.
Note that periodicals are separated from the rest of the stacks, and shelved in the Periodical Stacks, 1 North to 1 South. For example, a book with the call number LB 1047.3.U75 would be located in section 2 Center (General Stacks), but a journal with this call number would be found in 1 Center (Periodicals Stacks). If you can't find an item, please see a reference librarian at the Information desk on the first floor.
Please note that the stacks usually close a half hour before the Circulation desk.


text:
Here's something I often ponder over: If an object contains other objects, which is responsible for grabbing database information for the child objects?
eg we have a Product class, which contains a $supplier of type Supplier class. If we instantiate the Product from an ID, would we also grab the details for its Supplier, or would we wait and see if the Supplier needs to be got? I'm talking in general here, as my system (and most system) are obviously much larger than indicated by this code snippet:
First off, the Supplier does need to be able to get it's own information from the database:
class Supplier
private $supplierID;
public $name;//probably define some setters & getters instead of using public
public $emailAddress;
public __construct($supplierID = null)
$this->supplierID = $supplierID;
private function load()
$database_result = something_database_function("SELECT s.supplierID, s.supplierName, s.emailAddress FROM suppliers s WHERE s.supplierID=".$this->supplierID);
$this->supplierName = $database_result->supplierName;
$this->emailAddress = $database_result->emailAddress;
When we instantiate the Product from an ID, we could also grab the Supplier:
class Product
private $productID;
private $productName;
private $supplier; //instance of Supplier class
public __construct($arg = null)
$this->productID = $arg;
private function load()
$database_result = something_database_function("SELECT p.productID, p.supplierName, s.supplierID, s.supplierName, s.emailAddress FROM products p JOIN suppliers s ON p.supplierID = s.supplierID WHERE p.productID=".$this->productID);
$this->productName = $database_result->productName;
//create supplier
//not that we could also allow the Supplier construct to accept these values. Or failing that, make some setter methods in the supplier
$this->supplier = new Supplier();
$this->supplier->supplierName = $database_result->supplierName;
$this->supplier->emailAddress = $database_result->emailAddress;
public function getSupplier()
return $this->supplier;
Or we could just load the product information and only grab the supplier information when needed:
class Product
private $productID;
private $name;
private $supplier;
private $_loaded_supplier = false;
public __construct($arg = null)
$this->productID = $arg;
private function load()
$database_result = something_database_function("SELECT p.productID, p.supplierName, p.supplierID FROM products p WHERE p.productID=".$this->productID);
$this->productName = $database_result->productName;
$this->supplierID = $database_result->supplierID;
public function getSupplier()
$this->supplier = new Supplier($this->supplierID);
$this->_loaded_supplier = true;
return $this->supplier;
These classes are used in many parts of the system, so it's hard to know now how they will be used. There's also the situations where a list of (eg) products will be grabbed from the database with a single query, and Products being passed their instance data directly, rather than each one grabbing from the database. How would you handle a reference to a missing class property $product->some_property_we_havent_populated? Throw an error? return null? detect that this hasn't been given the data and grab it on the fly?
Either is acceptable, or an entirely different approach can be used (see below).
All of what you listed is acceptable.
Now, I've always taken a different approach, is it right or wrong? Maybe. But I like it for a few reasons. First, my data access does not exist in my objects. I have separate classes for data access. Why? Because I like to try and make only 1 query to the database for a given action. Maybe this is my .NET background, maybe I'm just crazy (well at least a lot of us were crazy, as this is how we did it at my old job).
The first thing I did was identify the ways in which I needed to retrieve data for my objects. Viewing a Product page, viewing Search results, the Shopping Cart page, etc. What was easily obvious about all of these retrieval processes and each one differed from the other (just slightly, but they were definitely different). So I'd write a query for each, store them in their own Data Access class (or if they were similar enough, store them in the same class as two different functions/methods).
Then I would consider what indexes needed to be associated to the table based on these queries. To this end, I never had to worry about an object getting its data for a second time because the constructor went out and queried the data, or a property would go out and query the data. I knew exactly what data was being sent back for the given page/action/request because it had a dedicated data access for it.
Again, I'm not going to say one way is wrong and another is right, I and many others took a different approach and it worked and scaled very well for us. We also required that all connections be closed as soon as possible, so we didn't permit passing connections from method to method or object to object, so you can see why the approach we took was favored over other ones. Connections are expensive, the queries once connected usually are not expensive (unless you have a poorly indexed table; or poorly written query).
If all the products are stored in the same table, and you add a new field, say "colour", then someone tries to access $product->colour then if it is "not populated" but does exist, you will get a null value, or whatever the default value is in your table.colour
OR do you mean :
If all the products are stored in the same table, and someone tries to access $product->shape which does not exist you have to decide how to handle that, silently ignore it and carry on (returning those fields which do exist)? Throw an err/exception etc.
If your products can potentially be stored in multiple tables perhaps depending on product types, then the challenge is going to be slightly different.
If your "end-user" is another developer then the exception/error might be a suitable response, if the end-user is a non-developer via a website who may be filtering on data depending on a GET string (which can be fiddled with, or be an old url link) then you might want to silently ignore and carry on displaying what you can.
This seems to suggest that load() be a bit smarter and respond to $ids being an array:eg.
$arr = array(23,99,876);
$ilelds = array('colour', 'shape');
$kettles = new Product($arr, $fields);
Or, create a loadMulti() method.
Then you are then possibly heading into the realms of creating an SQL query string builder.
Once you crack that, you can then refactor that code out into its own class which you can possibly use for both Supplier and Product and others.
Then, when you switch to using PDO, or sqlite or any other rdbms you only alter one class.
Making a generic SQL query string builder class which interacts with one single table is quite easy to do it probably doing the work of a Data Mapper.
The problem arises when you want to do JOINS -- which you will be doing, one trick is to leave the door open so that you can create complex sql statements and just passThru($sql) to get the data you want.
If you know you are going to be doing a lot of JOINS then either forget about a query builder, or face the fact that your Product class will contain lots of methods like this:
function loadProductWithSupplier($ids, $fields = null){}
The best solution for your problem will, as ever, turn on your situation such as depending whether you are engineering a CRUD operation for managing data, or, whether you are simply creating simple and fast read-only data views.
cpradio, this sounds interesting, could you post a short example of the Data Access class you are talking about and how you would use it? Let's take an example of data similar to what the OP presented: we have a Product class and each product has a Supplier and also has Accessories. Now I understand you say that the Product constructor fetches the data using the Data Access class, right? Let's say we need to fetch Product data from the database in two different scenarios:
(also in each case different fields need to be fetched from the db)
How do you differentiate between these two cases so that you use sql queries optimized for the given task? Do you pass a parameter to the Product constructor? It would be great if you could illustrate that with sample code!
Sorry, that didn't come out exactly the way I wanted it to (or at least my original intention is easily mis-understood). I meant to say, my objects constructors would not try and access the data access, though I guess they could if they knew which scenario you needed...
I can build something later today (hopefully), but here is the gist
Typically I would have three layers, My Objects, Business Layer, and Data Access Layer.
So given the above, the Data Access Layer would have either two classes or 1 class with two methods to retrieve the two scenarios described.Scenario 1, would select the product and its accessories as a data set (result whatever) back to the Business Layer which would perform any validation and convert that data set to the appropriate objects and return them to the callee.
Scenario 2, would do the same calling a different method/class for both Business Layer and Data Access Layer resulting in the Product, Accessories and all Supplier information.
Granted given how closely similar these two are (assuming Supplier is a limited amount of data, name, website, description), I would tend to have Scenario 1 use the same methods/classes as Scenario 2 and drop Scenario 1 altogether, yes it would return more data than it needed, but it is more maintainable that way.
Now when the data is significantly different, Cart Products versus Production and Accessories, then the separation is necessary, as the Cart may only need the name, url, price, and stock of the product, and wouldn't need the description, accessories, etc that may make a larger result set returned (or cause paging on the table).
Ok, there's no hurry and thanks for the explanation :). What I'm most interested in is where and how exactly you call the Data Access methods depending on various scenarios. For example, if you have a getSupplier() method in your Product object (or maybe you don't have and it's something different?) then how does the getter know which scenario (eventual sql code) needs to be executed. You also mentioned you don't have to worry about object getting its data for the second time - how is that achieved? I do it with a cache but your approach seems to not need one.
Yeah, I'll work on that. In the mean time another helping answer, my objects don't have methods that run any Data Access which is why I don't have to worry about it. Hopefully in a few hours I can post some code that resembles this technique (granted I primarily have only used it in .NET, but I'm sure I can work up a PHP example).
Okay, here is the general idea (there is a lot of work I didn't do, such as establishing a real connection or a lot of validation/refactoring for efficiency type stuff. Don't focus on the fact that the methods/functions are static (that was just to reduce my coding a slight bit).
In essence, your Objects are more like DTOs (Data Transfer Objects). They may contain some useful utility functions for the item, but for the most part they are just a way to transfer that data from a controller to a view, or whatever path you may need to take.
namespace Objects;
class Product
private $productId;
public function GetProductId()
return $this->productId;
public function SetProductId($value)
if (is_int($value))
$this->productId = $value;
private $name;
public function GetName()
return $this->name;
public function SetName($value)
$this->name = $value;
private $supplier;
public function GetSupplier()
return $this->supplier;
public function SetSupplier($value)
$this->supplier = $value;
private $accessories;
public function GetAccessories()
return $this->accessories;
public function SetAccessories($value)
$this->accessories = $value;
public function AddAccessory($accessoryId, $accessoryName)
if (!is_array($this->accessories))
$this->accessories = array();
$this->accessories[] = new Accessory($accessoryId, $accessoryName);
class Accessory
public $accessory_id;
public $name;
public function __construct($accessory_id, $name)
$this->accessory_id = $accessory_id;
$this->name = $name;
class Supplier
public $supplier_id;
public $name;
public function __construct($supplier_id, $name)
$this->supplier_id = $supplier_id;
$this->name = $name;
Business Layer: (you will notice I am constantly overwriting the product id, name, supplier id and name, this is because I was lazy in my example)
namespace Business;
class Product
public static function GetProductInfoAndAccessories($productId)
if (is_int($productId))
$results = \\DataAccess\\Product::GetProductInfoAndAccessories($productId);
if ($results != null)
// process results into object
$product = new \\Objects\\Product();
foreach ($results as $row)
$product->AddAccessory($row['accessory_id'], $row['accessory_name']);
return $product;
return null; // or throw an exception
throw new Exception("Must provide a valid product id");
public static function GetProductInfoAccessoriesAndSupplier($productId)
if (is_int($productId))
$results = \\DataAccess\\Product::GetProductInfoAccessoriesAndSupplier($productId);
if ($results != null)
// process results into object
$product = new \\Objects\\Product();
foreach ($results as $row)
$product->AddAccessory($row['accessory_id'], $row['accessory_name']);
$product->SetSupplier(new \\Objects\\Supplier($row['supplier_id'], $row['supplier_name']));
return $product;
return null; // or throw an exception
throw new Exception("Must provide a valid product id");
Data Access: (the Base would typically have a Close function as well to destroy/unset the connection variable)
namespace DataAccess;
class Product extends Base
public static function GetProductInfoAndAccessories($productId)
self::GetConnection()->prepare("SELECT p.product_id, p.name AS product_name, a.accessory_id, a.name AS accessory_name
FROM Products AS p LEFT JOIN Accessories AS A ON p.product_id = a.product_id WHERE p.product_id = ?");
return self::GetConnection()->execute(array($productId));
public static function GetProductInfoAccessoriesAndSupplier($productId)
self::GetConnection()->prepare("SELECT p.product_id, p.name AS product_name, a.accessory_id, a.name AS accessory_name, s.supplier_id, s.name AS supplier_name
FROM Products AS p LEFT JOIN Accessories AS A ON p.product_id = a.product_id LEFT JOIN Suppliers AS S on p.product_id = s.product_id WHERE p.product_id = ?");
return self::GetConnection()->execute(array($productId));
class Base
private static $connection;
public static function GetConnection()
if (self::$connection === null)
self::$connection = ... // define a new connection
return self::$connection;
Page needing Product and Accessories (don't forget, Business\Product validates/filters the $_GET item
$productInfo = \\Business\\Product::GetProductInfoAndAccessories($_GET['product_id']);
// Do whatever you need to do with $productInfo; pass it to your view, whatever, it is your DTO
Page needing Product, Accessories, and Suppliers
$productInfo = \\Business\\Product::GetProductInfoAccessoriesAndSuppliers($_GET['product_id']);
// Do whatever you need to do with $productInfo; pass it to your view, whatever, it is your DTO
Again, not saying this is a right or wrong way, just a different approach that can/did work well for the applications we maintained at my old job.
cpradio, thanks for your explanation, that was a very detailed and clear description. I can see similarities in your method to what I often do - my object structure is based on Propel ORM (some older version, now they may have refactored their code) where each object (\Object) has a corresponding 'peer' object (\Business) with static methods similar to yours. So the Product object is like your \Objects\Product and the ProductPeer object is like \Business\Product and there I can put methods like GetProductInfoAccessoriesAndSuppliers(). The major difference is I don't use a separate Data Access class, I perform all of that in the peer (\Business) methods. This is convenient when writing the code because all fetching code is in one place but there is less clean separation of tasks - I don't feel I'm missing this separation, however I haven't tried it yet so I can't say if that's wouldn't be beneficial. Certainly having a separate Data Access class would allow me to use the same methods for fetching data in different scenarios, for example when I don't need to feed the data into objects and plain array would suffice.
The thing is that I can actually do the same thing as you in that I do not have to worry about fetching data for the second time except I didn't always take advantage of this possibility probably because I wanted to do it too properly, in other words fetching as little as possible and then fetching more chunks of data on demand. For example, I first fetch the Product object that would contain data from the product table only and I don't think at this stage what other related data I might need later. So whenever a method like GetSupplier() is called that method has to worry about fetching the data from the database. My reasoning was that if an object has GetSupplier() method then it needs to always work, no matter how the object was instantiated. In your case GetSupplier() will not work if you don't call the appropriate method in your Business class so you need to think beforehand what data you will need and call the right business method. In an ideal world I wouldn't need to think about it beforehand but I can see in practice it's a good idea to do so at least from performance point of view - fitting relational database access into objects is not possible if you want both the [full] convenience of the objects and optimised database access.
Thanks, that was inspiring and I may now lean more towards the way you fetch objects since it makes sense and I can already do it in my current setup, it's just a question of being aware of it and putting it to use.
BTW, are your objects writable? Can you fetch a Product object, change something in it and then call $product->save() to save the changes in the database? I'm asking because when you have specialised methods for fetching in your Business Layer and some of them don't fetch all of the data then save() might not work properly because some fields in the object are empty and may be unintentionally deleted on saving. Sure, there are ways to deal with it but it makes the whole system more complicated.
And that is a valid point, I just dislike how chatty that scenario is, constantly trying to get data that could have been established once earlier. Think about it, you are not trying to get the data across pages, you are still trying to load the same freakin' page but just realized you need data you didn't have, so you go back out to the database to get it. In my opinion, this style lacks requirements/clarity as to what the application and each page in the application is supposed to do. It isn't "wrong", it just doesn't seem efficient and could lead to a lot of chattiness. Just my very strong opinion
Yes. You would could update the product properties and then pass it to a \Business\Products::Save($product) method (actually you can have a $product->save() that then calls \Business\Products::Save($product) too), the idea is your data goes to the Business layer first, the business layer validates all properties, etc.
You can also take it a step further and develop a "isDirty" indicator for each property (or a framework really that the \Objects\Product class could extend) that would track what properties were changed. Then you know what properties need to be updated/inserted/added/deleted, etc. (I haven't developed this framework yet; though now it seems like a really neat challenge, so maybe in my spare time I might try it).
This is the biggest problem. The original question of Should a product fetch its own data? Probably not is the answer but that's a case of ActiveRecord vs DataMapper which has been discussed many times before. Separation of concerns implies DataMapper is the better pattern (and I agree).
The problem as you say, comes with joins but your solution presents even more problems: The SoC benefits from DataMapper are lost as soon as you start giving products/supplies access to the database as it tightly couples them to it. Once a product is coupled to the database, any flexibility it once had is lost.
The answer is to handle joins outside the data objects. On the face of it, the solution is:
$product = $productMapper->findById(123);
$supplier = $supplierMapper->findById($product->supplierId);
However, this creates very brittle code due to lack of encapsulation and the need of repetition. Anywhere this code is reused it needs to be repeated. What if "supplierId" becomes supplier_id. Messy! This code is clearly an OO layer over the top of relational data.
In an ideal world you should be able to call $product->getSupplier() from anywhere and it work automatically, but at the same time keeping it so that $product does not have a direct dependency on the database.
I won't go over old ground as there was a very good and in-depth discussion on how this can be achieved here: http://www.sitepoint.com/forums/showthread.php?687271-New-PHP-Data-Mapper-Library
In this other thread you present this example:
echo $user->orders[0]->items[0]->product->manufacturer->name;
It's very convenient OOP but how many sql statements are executed under the hood? Also, how many orders are retrieved from the db and how many items of the first order are retrieved? Here we just need the first order and the first item of the first order.
Because it's using offsetGet the implementation can do anything. In this case (assuming that it's using a database) it would be able to run a query that used LIMIT 1 OFFSET $offset.
One SQL statement is used per mapper. However, this is often faster than joins.
The main point here, though, is that they don't have to be rows in the DB, they could be coming from a web service. The users could be in a database and the products could be in an XML file or totally different database/server for instance. This offers far greater flexibility than tying all your data to a single source.
Aren't you trying to solve a problem that has already been solved by the Doctrine 2 ORM? I would highly recommend reading the following articles:
The thing you really need to ask yourself is whether you are looking for a generic framework or just a series of patterns to follow. If you are looking to build a generic framework for handling this layer than you are probably better off using something like Doctrine. However, if you would like the code to be as straight-forward and efficient but as possible than a solution like cpradio presented is a good option. Really that solution is nothing more than a data mapper/orm with an extra layer for mapping the the result set to entities. Nothing is automated though like it would be in doctrine, which can be a huge advantage or disadvantage depending on different circumstances.
The problem with doctrine is it is very complex and a beast to understand and maintain. Powerful of course but it is huge. Not creating a generic automated mapper will always be more code efficient and readable though it requires writing everything from scratch or just about. I have nothing against doctrine myself just find it large and unnecessary at times.
Hey @aaarrrggh ;, have you had any personal experience with Doctrine 2 ORM? I'd like to hear about your personal experience with it (if any). This thread has a lot of potential to be a good resource for many different users, a personal story can easily help sell an ORM.
My personal experience with ORM's and Frameworks is limited. I have never had the need to use them in PHP, and in the .NET world our company had a strict rule of not using third-party products unless your team had time to vet them (so we would end up creating our own without any bells and whistles, like I did in my prior example -- first time I wrote that in PHP too).
When it comes down to it, I still like to roll my own versus using a third party solution for two reasons, 1) I get to learn a lot by having to re-invent the wheel, and 2) Most of the third party solutions I've researched using have a lot more to them than what I would need, so why bundle it with an already growing codebase? I still believe ORMs and third party Frameworks are good, for some, but not necessarily for everyone.
@hessodreamy ; Lots of food for thought here, if there is any one aspect that sounds interesting to you, please ask more questions on how it may be suitable to your project (or not suitable). Out of all of the replies here, there is a LOT of good information, different tactics, etc.
Have you checked out Doctrine 2? It's very different to Doctrine 1. You actually use plain old php objects to map out your domain logic and these classes end up looking very similar to the classes we see in this thread. About the only significant difference is that you don't have any sql in them (generally, although you can do this if you want to for some reason - although this kinda defeats the purpose of a DBAL). You use meta information in the class to map out the persistance layer, and from there it is dealt with for you. You can end up doing stuff like this:
$comments = $blogPost->getComments();
foreach ($comments as $comment){
Based on the relations you've set up in your own objects.
On top of this you don't have complex issues to worry about, such as worrying about what will happen if say a comment is updated while you're working on a blog post with related comments (all tracked automatically for you). It also does lazy loading, so it won't load the comments in the above instance automatically unless you explicitly need to call the getComments() method.
It also has some exceptionally good stuff for database migrations, and is the first ORM I've ever used that works so well with any data source that I've actually used this facility in pracitice. In my current application, all of the unit testing is done in a sqlite database, while the production and staging server and my development environment all use mysql - I have had to change literally nothing in my objects at all to make this work (it's literally a one line thing in a config file that basically says "if in the testing environment, load through sqlite instead).
Overall I've found it excellent, not particularly hard to get your head around and it produces massive benefits if you want to map your business domain logic to a persistance layer of any kind.
Here's another article about the principle behind domain driven design: http://net.tutsplus.com/tutorials/domain-driven-design/
I would highly recommend learning this, because it will prevent you from re-inventing the wheel time and time again. Don't mistake Doctrine 2 for Doctrine 1 or for Active Record based ORMS. This is on a whole other level, and I believe it solves the original poster's problems.
Hey CP - yeah, I was using Doctrine 2 just today actually.
As I said in the above post - it's really great, because you end up simply writing plain old php objects. The only thing that makes them different to standard php objects in anyway is that you attach certain meta tags to fields that helps the Doctrine 2 orm do it's thing.
I may write something up here later to explain this more fully. Perhaps I could give you some examples from the stuff I've been doing recently. I can tell you I've been using Doctrine 2 inside the Zend Framework 1 based on this tutorial video that I found: http://www.zendcasts.com/unit-testing-doctrine-2-entities/2011/02/ (Even though the video is Entitled "Unit Testing Doctrine 2 Entities", it goes beyond that - shows you how to set it up in ZF1, and also shows you how to set it up so you end up using a sqlite db for unit testing while maintaining a mysql database for production/development and staging).
I'm currently doing some work (as always), but in a few weeks I'll have 2 weeks off due to paternity, so perhaps I could write up an example of something here for people to look at?
It's really a great tool. It saves you so many headaches when it comes to setting up the legwork for your domain level logic.
That is a strange approach when you use SQL Server, as you say each connection is very expensive. But perhaps it worked well for the type of application you guys worked on.
On a side note, connections in MySQL is very cheap (compared to SQL Server) so this is not a worry here.
The problem with an ORM is that you sacrifice database/server speed/efficiency for the ability to write faster code. Since PHP also compile this data on each run, it also make an ORM less effective in this language compared to Java and C#.
Personally we prefer a plain DOA approach, where we have a class for each table in the database, and then separate methods depending on what data that is required and if it pull or insert, as this allow us to optimize the queries to the fullest. It also makes it very easy to pull a cache solution down on the queries as well, or change to a different database type.
I think the speed argument with regards to the ORM issue is overstated in many cases. Also, Doctrine 2 has methods for dealing with caching built in, so it can actually be far more efficient than writing standard mysql code.
I haven't really experienced too many issues with regard to speed in practice. In general, when people try to write their own implementations for this sort of thing they tend to end up hitting brick walls and writing all kinds of messy hacks to deal with issues further down the line.
I think I may write up a mini tutorial at some point if I can find the time...


text:
It's like a 4 cylinder on its last limp. The damn thing squeaks on every turn and the engine is no more practical than a lawn mower. It's like overworked and hot by the time you get to the grocery store. I maintain it properly and it's just junk. It makes me hate how America sold stuff like this. Not only that, but this crap car has been made under three different names, such as the dodge stratus and Chrysler cirrus. Pretty much Every 4 cylinder in another country is ten times better and more trustworthy. Me and my buddy call it a drymouth cheese.
"It's like an upgrade from the Neon" when the dumb blonde bought a junky white 1998 Plymouth breeze.
by Porsche 924s October 06, 2013
The Urban Dictionary Mug
One side has the word, one side has the definition. Microwave and dishwasher safe. Lotsa space for your liquids.Buy the mug


text:
Craftsman Tools are once again inviting applications from youngsters to join their award winning apprentice training scheme at their facilities based in Otley.
They have recently received national recognition for the training programme, winning "Best Training Scheme" at the recent Manufacturing Technologies Association Awards and finalists in the MWP Advanced Manufacturing Awards.
A spokesman for the company said: "Craftsman are really proud to have achieved so much in the first year since the official training school was established, although the company has taken on many apprentices throughout it's 60 year history.
"It's great to know young people are still enthusiastic about engineering and we look forward to recruiting more potential engineers from Otley and the surrounding area, helping to ensure the future of the company and UK manufacturing."
To join the scheme email firstname.lastname@example.com or call (01943) 466788.


text:
15 Lessons Penguins (Yes, Penguins) Can Teach Us About Love
Our flightless friends have love all figured out. Who knew penguins were so smart?
A year ago, we returned from the expedition of our lifetime together — all 47 years of it. We spent ten days on the continent of Antarctica. While we learned much from the couples we interviewed that live and work in Antarctica, the most important lessons we learned about love and relationships came from the penguins of Antarctica — particularly the gentoo, the adelie, the emperor, and the chinstrap. And, as it turns out, penguins and humans have a whole lot in common. With that in mind, here are the top 15 lessons about love and life we learned from the penguins of Antarctica:
Read 3 Tips to Avoid the Dreaded Friend Zone
1. Look out for each other. Like humans, penguins live in towns and villages called rookeries because it's easier to protect each other from predators and from the cold weather in groups. And what's really nice is most have a short commute to work finding food!
2. Have fun and play a lot. Penguins, like humans, love to gather with friends and family to have fun and play. Hanging around with their family gives them particular joy.
3. Communicate effectively. Penguins talk and chatter a lot to each other, just like humans! Communication is at the heart of their relationships with each other, just as it is with us.
4. Be a responsible adult. As they grow older, penguins learn to spread their wings, and even though they will never fly, they grow up for the most part to be responsible and productive adults. Almost all become parents at some point in their life. Sounds like a familiar human story to us.
5. Build your support network. Sometimes penguins take trips together with their extended family. Like us, penguins know that friends and family are an integral part of their support network.
Read the rest here!


text:
- Collection Overview
- ExhibitionsPast Exhibitions
- Close Up: Piermatteo D'Amelia's The Annunciation
- Journeys East
- The Triumph of Marriage
- Luxury For Export
- A Bronze Menagerie
- Gentile Bellini and the East
- Gondola Days
- Raphael, Cellini, and a Renaissance Banker
- Making of the Museum
- Cosmè Tura
- Off the Wall: Gardner and Her Masterpieces
- Ornament and Illusion: Carlo Crivelli of Venice
- Donatello, Michelangelo, Cellini: Sculptors' Drawings from Renaissance Italy
- The Inscrutable Eye: Watercolors by John Singer Sargent in Isabella Stewart Gardner's Collection
- Anders Zorn: A European Artist Seduces America
- Illuminating the Serenissima: Books of the Republic of Venice
- Modeling Devotion
- Conservation
- Browse RoomsView Room MapsFirst FloorSecond Floor
- Browse Artists
- Angelico, Fra
- Anguissola, Sofonisba
- Bakst, Léon
- Bandinelli, Baccio
- Beckhausen, Jakob
- Bellini, Gentile
- Bellini, Giovanni
- Bellini, Leonardo
- Bermejo, Bartolomé
- Bles, Herri met de
- Bordone, Paris
- Botticelli, Sandro
- Botticini, Francesco
- Boucher, François
- Bourdichon, Jean
- Bronzino, Agnolo
- Bulgarini, Bartolommeo
- Bunker, Denis Miller
- Cambodian: Unknown Artist
- Cellini, Benvenuto
- Chinese: Unknown Artist
- Chunosuke, Niiro
- Civitali, Matteo di Giovanni
- Crivelli, Carlo
- Comes, Francesc, the Younger
- Curtis, Ralph
- Daddi, Bernardo
- Degas, Edgar
- Dewing, Thomas Wilmer
- Dürer, Albrecht
- Dyck, Anthony van
- Eriksson, Christian
- Eurasian: Unknown Artist
- Falconetto, Giovanni Maria
- Fiesole, Mino da
- Flemish: Unknown Artist
- Flinck, Govaert
- Fondulis, Giovanni de
- Francesca, Piero della
- Francia, Francesco
- French: Unknown Artist
- French or German: Unknown Artist
- García de Benabarre, Pedro
- Giorgio, Francesco di
- Giambono, Michele
- German: Unknown Artist
- Geubels, Jacques
- Giotto
- Greek: Unknown Artist
- Hassam, Childe
- Helleu, Paul César
- Hidetsugu, Yosai
- Holbein, Hans, the Younger
- Indian: Unknown Artist
- Iranian: Unknown Artist
- Iranian or Central Asian: Unknown Artist
- Italian: Unknown Artist
- Italian or Spanish: Unknown Artist
- Japanese: Unknown Artist
- Javanese: Unknown Artist
- Ken'ya, Miura
- Kronberg, Louis
- Lippi, Filippino
- Macknight, Dodge
- Maiano, Benedetto da
- Mancini, Antonio
- Manet, Edouard
- Manship, Paul
- Mantegna, Andrea
- Martini, Simone
- Master T.° Ve.
- Matisse, Henri
- Mendoza Binder
- Mesopotamian: Unknown Artist
- Mexican: Unknown Artist
- Michelangelo
- Mor, Antonis
- Moroni, Giovanni Battista
- Mosca, Giovanni Maria
- Moyen, Jan van der
- Paolo, Giovanni di
- Pesellino, Francesco
- Piermatteo d'Amelia
- Pinturicchio, Bernardino
- Planche, Raphael de la
- Pollaiolo, Piero del
- Pourbus, Frans, the Younger
- Raphael
- Rembrandt
- Rimini, Giuliano da
- Robbia, Andrea della
- Robbia, Giovanni della
- Roman: Unknown Artist
- Rossetti, Dante Gabriel
- Rubens, Peter Paul
- Ruskin, John
- Ryonyu, Raku
- Sargent, John Singer
- Schongauer, Martin
- Seisai
- Spanish: Unknown Artist
- Taikan, Yokoyama
- Terilli, Francesco
- Tibetan: Unknown Artist
- Tiegen, Jan van
- Tiepolo, Giovanni Domenico
- Tintoretto, Domenico
- Titian
- Tsunenobu, Kano
- Tura, Cosmè
- Turkish: Unknown Artist
- Turner, J.M.W.
- Uccello, Paolo
- Vasari, Giorgio
- Velázquez, Diego
- Vermeer, Johannes
- Veronese, Paolo
- Voerman, Jan I
- Whistler, James McNeill
- Zorn, Anders
- Zurbarán, Francisco de
- Decorative Arts
Covered Cup and Saucer
19th century
Lapis lazuli, set with rubies, diamonds, and pearls in gold, saucer diameter 10.8 cm
Genre: Asian Art, Decorative Arts
Location: Little Salon
Accession Number: S18s22.a-c
In the late nineteenth century, British authorities in India attempted to "improve and advance" local arts by introducing new materials and experimental techniques. At the Mughal court, lapis lazuli had been used for inlay rather than as a material for large pieces. In contrast to jade – the favorite Mughal hard stone – the structure of lapis does not allow the carving of the thin and translucent surfaces so widely admired by the Mughals. This explains the thick and rather heavy form of the cup and saucer, acquired from [A.N.] Jacob in Calcutta.
While rubies and diamonds were the standard gems employed in the decoration of jeweled Indian objects, pearls are rarely seen. There are technical reasons for this, because in India gemstones are normally set in the kundan technique, which requires heating. This would damage the fragile surface of organic pearls. Here, they appear to have been set with an adhesive, which probably caused the dark stains on the adjacent gold. Even the 22-carat gold normally used by Indian jewelers contains copper and other base metals, which may have reacted with the adhesive.
The lotus leaves carved on the outside of the saucer, at the base of the cup, and below the cover's finial follow Mughal models, although their lack of vitality indicates a later date of manufacture. It is therefore likely that the objects were made not long before Jacob sold them to Isabella and Jack Gardner in January 1884.
Source: Pedro Moura Carvalho, "Jewelry and Objects from India," in Journeys East: Isabella Stewart Gardner and Asia, edited by Alan Chong and Noriko Murai (Boston: ISGM and Gutenberg Periscope, 2009): 459-460.


text:
View unanswered posts | View active topics
Board index » What's Cookin?
All times are UTC - 6 hours
sfranciss wrote:Jealous! Finding venison isn't easy in the big city, and once you do find it it's insanely expensive. I treat myself a couple of times a year or so, but at over $35 a pound it'll never become a staple. Maybe I need to get over my fear of the country (bugs!) and take up hunting.
Users browsing this forum: No registered users and 2 guests


text:
DRT - Dead Right There. (Doctors and nurses shorthand acronym for a patient found dead at the scene.)
DRTTTT - Dead Right There, There, There and There. (Nurses and doctors abbreviation, as DRT above, but used for pedestrian-train incidents. This outrageous acronym is an example of the human species' tendency to use humour when dealing with horrific trauma.)
FLKFLP - Funny Looking Kid, Funny Looking Parents
FOBIO - Frequently Outwitted By Inanimate Objects. (Ideal for anyone struggling with one of those ridiculous picnic tables, flat-pack self-assembly furniture, crisis situations caused by errant cars, computers, mobile phones, and the ultimate FOBIO challenge - removing the cellophane from a new CD.)
And if you see this around when visiting Down Under, you'll now know what it means:
GOFER - Genial Old Farts Enjoying Retirement.
GLAM - Greying, Leisured, Affluent, Married
and one just for Tim to use:
PICNIC - Problem In Chair Not In Computer.
mark I-didn't-write-these-so-blame-someone-else Bailey


text:
Hey there, time traveller!
This article was published 29/3/2013 (1607 days ago), so information in it may no longer be current.
NASHVILLE -- The tickets for a family Spring Break trip to Tennessee and -- of course -- to the Grand Ole Opry already had been purchased long before we knew about the small-town dreamer whose epiphany we would, by wonderful chance, be in the balcony to cheer.
It was about a month ago that we happened upon a YouTube video of a girl named Kayla Slone.
She was a 21-year-old Walmart clerk from Matewan, W. Va., on the Tug Fork River, where the Hatfields and McCoys once feuded to the death and where seams of coal and streams of want still flow together down through the decades and the clans. The store where she worked was in a county seat called Logan, long famous in its own right as a den of flagrant vote-buying worthy of its own grand opera, or at least an episode of Hee Haw.
At the Logan Walmart, we learned, Kayla Slone had taken to singing loudly while she laboured, favouring the hardscrabble anthems made famous by Dolly Parton and Loretta Lynn, daughters of Appalachian poverty who, through country music's unique alchemy, had turned the carbon of their native ground to diamonds.
As a New Yorker who was raised -- improbably, to much ridicule -- on southern and western music, I already knew that authenticity lies at the core of every great country song, whether it be spawned by a Tammy Wynette picking cotton in Mississippi, or a Hank Snow cutting out cod tongues as a cabin boy on a Nova Scotia schooner, or a Dolly Parton growing up as one of 12 children in a one-room cabin on Tobacco Road. Even Eddy Arnold -- the so-called Tennessee Plowboy, my father's favourite -- had ridden a mule to town. (Times have changed: Taylor Swift's father is a financial analyst and her granddad was president of a bank.)
Now here was Kayla Slone, not only a modern coal miner's daughter and granddaughter, but even -- at her tender age -- already a coal miner's wife. By mid-March, that cellphone video from the Logan Walmart had been picked up by ABC News as a fillip of human interest from a usually invisible corner of the republic, and this, in turn, had not gone unnoticed in Music City, U.S.A.
Suddenly, Kayla Slone was invited to sing at the Grand Ole Opry on Saturday night, March 23, which was to be the 4,551st live broadcast from the cathedral of the hillbilly canon.
A man named John Carlin, the doyen of Lyrick (sic) Promotions in the river town of Williamson, W.Va., was serving as Kayla Slone's manager even before the annunciation came from Nashville. A few days before Kayla's debut, I called him between shifts of his own real-world job -- he is a locomotive engineer on the Norfolk Southern Railway -- and he told me his own career as a bluesy studio musician had peaked short of the Opry stage.
"Why do you think you never got there?" I asked him.
"I would imagine I wasn't good enough," John Carlin said.
Carlin told me that in addition to her impromptu oratorios at Walmart, Kayla Slone had made a few stage appearances around Williamson and Matewan. He said she had "a very unique voice to her," and along the Tug Fork at least, "she stood out from the crowd." (She wouldn't be paid for her guest appearance at the Opry, and her manager would get 10 per cent of zero.)
"How are things down in Williamson?" I wondered.
"Poverty is king," John Carlin replied.
On Saturday night at the Grand Ole Opry, Kayla Slone was preceded to stage-centre by a succession of ancients: Jim Ed Brown, whose records I bought as a fourth-grader; Jean Sheperd, still yodelling at the age of 79; Jeannie Seely, 72, who urged us all to greet the ingénue from Walmart warmly, as if we did not already feel the power of the moment in our hearts.
In perfect rendition, failing not a word or a note, the girl from Walmart sang Loretta's Coal Miner's Daughter and Dolly's Coat of Many Colours, blew a kiss and walked off stage. Touched as in a fantasy, we rose and roared, and I saw people crying.
Allen Abel is a Brooklyn-born Canadian journalist based in Washington, D.C.