text:
The Moonbeam Children's Book Awards are intended to bring increased recognition to exemplary children's books and their creators, and to celebrate children's books and life-long reading.
Many of our award-winning books encourage children to be generous and compassionate, to stand up to bullies, and to believe in fulfilling their dreams. The diversity of the winning publishers proves that promoting childhood literacy knows no boundaries, as medal-winners came not only from long-established publishers and university presses, but from small presses, foundations, and self-published entrepreneurs.
"This year's Moonbeam award winners confirm that books can change children's lives," says Moonbeam Awards founder Jerrold Jenkins, father of four children ranging in ages 9 to 19. "They've already had a big impact on the judges and the kids that read them, so we know these books were created to enrich childrens' lives. The Moonbeams are all about rewarding these books and bringing them to the attention of parents, booksellers, librarians – and to the kids themselves."
This year's Moonbeam Awards medal ceremony was held in conjunction with the 4th annual Traverse City Children's Book Festival, November 9, 2013. Each year the festival features children's book authors, illustrators and storybook characters, games and activities meant to inspire children's interest in books.
To learn more about the Traverse City Children's Book Festival, visit www.TCChildrensBookFestival.com or become a fan of the festival on Facebook,www.facebook.com/tccbf.
Visit the Moonbeam Merchandise Page.
Follow the Moonbeam Awards on Facebook.
Independent Publisher on Instagram
2013 Moonbeam Children's Book Awards Results
�Celebrating Youthful Curiosity, Discovery and Learning through Books and Learning�
Jenkins Group is proud to announce the winners of the 2013 Moonbeam Children's Book Awards. Launched in 2007, the awards are intended to bring increased recognition to exemplary children's books and their creators, and to celebrate children's books and life-long reading. Congratulations to all the winners!
This year's Moonbeam Awards medal ceremony was held in conjunction with the 4th annual Traverse City Children's Book Festival, on Saturday, November 9, 2013. Here's a photo of the winnners in attendence:
Click here to go to Moonbeam Award ceremony photo album.
Click here to go to the Moonbeam Award Winners press page.
Click here to go to the Moonbeam Awards Amazon store page.
Listed below are the seventh annual 2013 Moonbeam Awards results, listed by category, followed by the Moonbeam Spirit Award winners and E-Book category winners. There are 165 medalists in all, chosen from over 1,200 total entries. The winners represent 35 U.S. States, five Canadian Provinces, and 7 countries overseas.
Creating books that inspire our children to read, to learn, and to dream is an extremely important task, and these awards were conceived to reward those efforts. Each year's entries are judged by expert panels of youth educators, librarians, booksellers, and book reviewers of all ages. Award recipients receive gold, silver and bronze medals and stickers depicting a mother and child reading and silhouetted by a full moon.
Click here to visit the Moonbeam Award winners press page.
2013 Moonbeam Children's Book Awards - Gold, Silver and Bronze medalists listed by category
1. Board Book/Cloth Book
Gold: Twinkle, Twinkle, Little Star, by Charles Reasoner (Picture Window Books)
Silver: Look Left, Look Right, Look Left Again, by Ginger Pate; illustrated by Rhett Ransom Pennell (Greene Bark Press)
Bronze: Words, by Shelley Sleeper; designed by Francisco Macias (Simple Steps)
2. Alphabet/Counting Book
Gold: You Can Count on Gracie, by Joan Harrison (Little Minute Publishing)
Silver: Count the Sheep to Sleep, by Philippa Rae; illustrated by Stéphanie Röhr (Sky Pony Press)
Bronze: All Hallow's ABC, written and illustrated by Jenni Kaye (Daring Ink Press)
3. Books Arts/Pop-up/Cut-out
Gold: ABC, by Santiago Beascoa; illustrated by Patricia Geis (Lupita Books)
Silver: Take a Peek with Peek-a-Bear, by Jill Mangel Weisfeld; illustrated by Garry Thorburn (Peek-A-Bear Press)
Bronze: The Oldest Bedtime Story Ever, written and illustrated by Benjamin Morse (Orson & Co)
4. Activity Book 1 - Games, Arts & Crafts, etc.
Gold: Time to Create: Hands-On Explorations in Process Art for Young Children, by Christie Burnett (Gryphon House)
Silver (tie): All Me, All the Time, by Karla Oceanak; illustrated by Kendra Spanjer (Bailiwick Press) and Spot the Differences: Art Masterpiece Mysteries Book 4, by Dover editors (Dover Publications)
Bronze: Dessert Designer: Creations You Can Make and Eat! by Dana Meachen Rau (Capstone Young Readers)
5. Activity Book 2 - Educational, Science, History, etc.
Gold: Big Book of Earth & Sky, by Carolyn Reeves and Bodie Hodge (Master Books)
Silver: Forensics: Uncover the Science and Technology of Crime Scene Investigation, by Carla Mooney; illustrated by Samuel Carbaugh (Nomad Press)
Bronze: Discover the Yellowstone River, by Project WET; illustrated by Peter Grosshauser (Project WET Foundation)
6. Book with Music/Theatrical
Gold: Fireflies and Shooting Stars – "The Tale of Enzo," by Ed Raarup; illustrated by Lindsay D. Nery (MoonWatch Productions)
Silver: Voices Across the Lakes, Great Lakes Stories and Songs, by Anita Pinson; illustrated by Emmeline Hall (Pine Lake Press)
Bronze: The Little Song That Wanted to Be a Symphony, music by William Grant Still; words by Verna Arvey; illustrated by Victor Cano (The Master-Player Library)
7. Picture Book - Preschool
Gold: Never Ever, written and illustrated by Jo Empson (Child's Play)
Silver: Sitting on a Zinnia & Other Sweet Dreams, by Ellie Alldredge-Bell; illustrated by Stacey Williams-Ng (Little Creek Press)
Bronze: Colorful Cats, written and illustrated by Karen Ann Smith (Jump the Moon Studio)
8. Picture Book - 4-8 Year Old
Gold: The Bramble, by Lee Nordling; illustrated by Bruce Zick (Carolrhoda Books)
Silver (tie): The Magic Ball of Wool, by Susanna Isern; illustrated by Nora Hilb (Cuento de Luz) and Commonplace Birthday, written and illustrated by Karima Cammell (Dromedary Press)
Bronze: Al and Teddy, written and illustrated by Neil Waldman (Dream Yard Press)
9. Picture Book - All Ages
Gold: Nic and Nellie, written and illustrated by Astrid Sheckels (Islandport Press)
Silver (tie): A Persistent Vine, by Han Tran & Christinia Cheung; illustrated by Hsiao-Yen Chi (Hands-on-Prints) and Flood, by Alvaro F. Villa (Picture Window Books)
Bronze (tie): Unplugged: Ella Gets Her Family Back, by Laura Pedersen; illustrated by Penny Weber (Tilbury House) and The Apron: Stories From the Farm, by Guy Kelm; illustrated by Brady Bussler (Green Kite Publishing)
10. Juvenile Fiction - Early Reader/1st Chapter books
Gold: Third Grade Mix-Up: Sidney & Sydney Book 1, by Michele Jakubowski; illustrated by Luisa Montalto (Picture Window Books)
Silver: Three Green Rats, An Eco Tale, by Linda Mason Hunter and Suzanne Summersgill (Ink Pinn Press)
Bronze: The Case of the Superstar Scam: Milo & Jazz Mysteries Book 10, by Lewis B. Montgomery; illustrated by Amy Wummer (The Kane Press)
11. Pre-Teen Fiction – General
Gold: Angel and Brie, by Barbara Lopuszynski (Outskirts Press)
Silver: The Knighting of Sir Kaye: Sir Kaye the Boy Knight Book 1, by Don M. Winn; illustrated by Dave Allred (Cardboard Box Adventures)
Bronze: Game Face, by Andy Kantar; illustrated by Fran Keleher (Whiskey Creek Press)
12. Pre-Teen Fiction - Fantasy
Gold (tie): Wish: Faerieground Trilogy Book 1, by Beth Bracken and Kay Fraser; illustrated by Odessa Sawyer (Capstone Young Readers) and Shade & Sorceress: The Last Days of Tian Di Book 1, by Catherine Egan (Coteau Books)
Silver: Jack Templar and the Monster Hunter Academy: The Templar Chronicles, Book Two, by Jeff Gunhus (Seven Guns Press)
Bronze: Brody Boondoggle, The Last Akaway – A Spirit Animal Adventure, by Gary Karton (Brattle Publishing Group)
13. Pre-Teen Fiction - Mystery
Gold: Hocus Pocus Hotel, by Michael Dahl; illustrated by Lisa K. Weber (Capstone)
Silver: Lost in Petra, by Melissa Mahle & Kathryn Dennis (SpyGirls Press)
Bronze: Inspector Rumblepants and the Case of the Golden Haggis, by Mike Blyth; illustrated by Mike Motz (Boutique of Quality Books Publishing)
14. Pre-Teen Fiction - Historical/Cultural
Gold: Taking the Reins, by Dayle Campbell Gaetz (Coteau Books)
Silver: The Boy Who Slept With Bears, by George R. Douthit, III (Rhyolite Press)
Bronze: The Voice of Thunder, by Mirka M.G. Breen (WiDō Publishing)
15. Pre-Teen Fiction – Mature Issues
Gold: September's Big Assignment, by Dr. Bena R. Hartman (Ferne Press)
Silver: The Tattered Prayer Book, by Ellen Bari; illustrated by Avi Katz (Gihon River Press)
Bronze: Kitten Caboodle, by Paige Grant; illustrated by Lisa Carol Williams (Azro Press)
16. Young Adult Fiction - General
Gold (tie): After Isaac, by Avra Wing (Olinville Press) and The Silent Summer of Kyle McGinley, by Jan Andrews (Great Plains Teen Fiction)
Silver: Fall Down Seven, by C.E. Edmonson (WinePress Publishing)
Bronze: Screaming Quietly, by Evan Jacobs (Saddleback Educational Publishing)
17. Young Adult Fiction - Fantasy/Sci-Fi
Gold: The Twelve-Fingered Boy, by John Hornor Jacobs (Carolrhoda Lab)
Silver (tie): Dragon Lords Rising, by Lucinda Hare (Thistleburr Publishing) and Atlantis Rising, by T.A. Barron (Philomel)
Bronze: The Silver Sphere, by Michael Dadich (Evolved Publishing)
18. Young Adult Fiction - Horror/Mystery
Gold: Second Verse, by Jennifer Walkup (Luminis Books)
Silver: Lake Thirteen, by Greg Herren (Bold Strokes Books)
Bronze: Breaking Glass, by Lisa Amowitz (Spencer Hill Press)
19. Young Adult Fiction - Historical/Cultural
Gold: Violins of Autumn, by Amy McAuley (Walker Publishing)
Silver: Her Mother's Secret, by Barbara Garland Polikoff (Allium Press)
Bronze: Whisper Falls, by Elizabeth Langston (Spencer Hill Press)
20. Young Adult Fiction - Religion/Spirituality
Gold: Children of Angels: Book One of the New Nephilim Series, by Kathryn Dahlstrom (WinePress Publishing)
Silver: A Miracle for Micah: Faith in Hard Times, by Mike and Carol Wyrick (WinePress Kids)
Bronze: The Field, by Tracy Richardson (Luminis Books)
21. Young Adult Fiction - Mature Issues
Gold: Being Emily, by Rachel Gold (Bella Books)
Silver: Crumble, by Fleur Philips (Self-Published)
Bronze (tie): OMG Queer: Short Stories by Queer Youth, edited by Radclyffe and Katherine E. Lynch, PhD (Bold Strokes Books Soliloquy) and Maybe I Will, by Laurie Gray (Luminis Books)
22. Children's Poetry
Gold: Mooseclumps, written and illustrated by Ryan T. Bliss (Artsy Bee)
Silver (tie): Rosa Rose, by Robert Priest; illustrated by Joan Krygsman (Wolsak & Wynn) and The Bubble Collector, written and illustrated by Vikram Madan (CreateSpace)
Bronze: Moon Cleaning, by Skip Weinstock; illustrated by Yura Osborn (Millennium Press)
23a. Non-Fiction - Picture Book
Gold: What's in the Garden? by Marianne Berkes; illustrated by Cris Arbo (Dawn Publications)
Silver: The Discovery of Longitude, by Joan Marie Galat; illustrated by Wes Lowe (Pelican Publishing)
Bronze: Hey, Charleston! The True Story of the Jenkins Orphanage Band, by Anne Rockwell; illustrated by Colin Bootman (Carolrhoda Books)
23b. Non-Fiction – Animals/Pets
Gold: The Eye of the Whale: A Rescue Story, written and illustrated by Jennifer O'Connell (Tilbury House)
Silver (tie): Growler the Wolf Pup, by Jenni Bidner (Ajax Acres) and Squirt the Otter: The True Story of an Orphaned Otter, by Tracy L. Mikowski; illustrated by P.M. Richard (Talking Crow Publishing)
Bronze (tie): Fish Do WHAT in the Water? The Secret Lives of Marine Animals, by Caroline Patterson; illustrated by Robert Rath (Farcountry Press) and Ferdinand Fox's First Summer, by Mary Holland (Sylvan Dell Publishing)
24. Non-Fiction - Young Adult
Gold: National Parks: A Kid's Guide to America's Parks, Monuments, and Landmarks, by Erin McHugh; illustrated by Neal Aspinall (Black Dog & Leventhal Publishers)
Silver: The Split History of the Civil War, by Stephanie Fitzgerald (Compass Point Books)
Bronze: Go Teen Writers: How to Turn Your First Draft into a Published Book, by
Stephanie Morrill and Jill Williamson (Novel Teen Press)
25. Multicultural - Picture Book
Gold: Three Years and Eight Months, by Icy Smith; illustrated by Jennifer Kindert (East West Discovery Press)
Silver: I Know an Old Mzee Who Swallowed a Fly, by Cathy Kreutter; illustrated by Johnmary Mukiza and Eric Kreutter (Cornerstone Development/North Star Publishers)
Bronze (tie): Finders Keepers? A True Story in India, by Robert Arnett; illustrated by Smita Turakhia (Atman Press) and Chikasha Stories Volume Two: Shared Voices, by Glenda Galvan; illustrated by Jeannie Barbour (Chickasaw Press)
26. Multicultural Non-Fiction - Young Adult
Gold: Eagle of Delight: Portrait of the Plains Indian Girl in the White House, by Dr. Jean A. Lukesh (Field Mouse Productions)
Silver: Bumbling Through Hong Kong, written and illustrated by Tom Schmidt (Kakibubu Media Limited)
Bronze: I Call Him My Brother, by Chris Morse and Robel Alemu; edited by Carolynne Krusi (AuthorHouse)
27. Religion/Spirituality
Gold (tie): The Oldest Bedtime Story Ever, written and illustrated by Benjamin Morse (Orson & Co) and Grandmother's Cabin, by Angela Rout (Angela Rout Design)
Silver: The Princess, the Pearls & the Pekingese, by Elizabeth Jamie Katz; illustrated by Dominick Blanda (DC Press)
Bronze: In the Garden of Our Minds and Other Buddhist Stories, by Michelle L. Johnson-Weider; illustrated by Brian Chen (Blue Moon Aurora)
28. Holiday
Gold: Melissa's Halloween Wish, by Dona Ross Pratt; illustrated by Megan Cunningham (Little Creek Press)
Silver (tie): The Dragon in the Christmas Tree, by Patrick W. Ledray; illustrated by Kim Gordon (Romanian Dragons) and Gift of a Servant, by Tamara Amos; illustrated by David W. Luebbert (Mystical Rose)
Bronze: The Myth of Santa's Beard, by Sharon Thayer; illustrated by Marci Chambers (Carousel Publishing)
29. Book with Merchandise (plush toy, etc.)
Gold: Bubble Tubbie (bathtub book and bubble light set), by Epiphany Schwarz; illustrated by Epiphany Schwarz and Brian Swanson (Black Catapult Publishing/Epiphany Schwarz LLC)
Silver: My Home, An Oneida Legend (Blu-ray and DVD short film), by Peter Hale (Oneida Indian Nation)
Bronze: The Adventures of Snitch the Fraccoon – Book One: In Search of the Magic Crystals (plush fraccoon), by John Shelley; illustrated by Stefan Wollmar (Bag-O-Loot)
30. Spanish Language – Picture Book
Gold: Luces de Feria (Fairground Lights), by Fran Nuño; illustrated by Enrique Quevedo (Cuento de Luz)
Silver: ¿Es mío? Una historia verdadera en la India (Finders Keepers? A True Story in India), by Robert Arnett; illustrated by Smita Turakhia (Atman Press)
Bronze: Ser Filiberta (I Want to Be Philberta), by Mar Pavón; illustrated by Alex Pelayo (Cuento de Luz)
31. Spanish Language – Chapter Book
Gold: Mi Mariposa Azul (My Blue Butterfly), by Mercedes Alvarez Rodman (Vineyard Stories)
Silver: Victor, el zopilote renuente (Victor, the Reluctant Vulture), by Jonathan Hanson; illustrated by Kim Kanoa Duffek (Arizona-Sonora Desert Museum Press)
Bronze: Cartas para siempre (Letters Forever), by Tom Luna; illustrated by Laura Alvarez (Lectura Books)
32. Environmental Issues
Gold: When Rivers Burned: The Earth Day Story, by Linda Crotta Brennan; illustrated by Lisa Greenleaf (Apprentice Shop Books)
Silver: Douwlina: A Rhino's Story, by Grace Borgeson (Bright Sky Press)
Bronze: Fidget's Folly, by Stacey Patterson; illustrated by Vadim Gorbatov (Mountain Press Publishing/The Raptor Education Foundation)
33. Health Issues
Gold: 47 Strings: Tessa's Special Code, by Becky Carey; illustrated by Bonnie Leick (Little Creek Press)
Silver: Gordy and the Magic Diet, by Kim Diersen and April Runge; illustrated by Carrie Hartman (Special Kids Enterprises)
Bronze: Sammie & Sax in the Land of Quinoa: The Search for a Balanced Meal, by Sheila Kemper Dietrich; illustrated by Timothy Foss (Livliga)
34. Mind-Body-Spirit/Self-Esteem
Gold (tie): Shovelful of Sunshine, by Stacie Vaughn Hutton; illustrated by Cheryl Harness (Headline Kids) and Heroes, Villains, and Vincent, by Trenton Payne; illustrated by Shahab ShamShirsaz (Spirit Boy Publishing)
Silver: Happy, Sad, & Everything In Between: All About My Feelings, by Sunny Im-Wang, Psy.D., S.S.P.; illustrated by Alex McVey (lilSprout Press)
Bronze: Bucket Filling from A to Z: The Key to Being Happy, by Carol McCloud and Caryn Butzke; illustrated by Glenn Zimmer (Ferne Press)
35. Reading Skills/Literacy
Gold: I See the World (Yo veo el mundo), by Tom Luna; illustrated by Christina Song (Lectura Books)
Silver: Doodling Dragons: An ABC Book of Sounds by Denise Eide; illustrated by Ingrid Hess (Pedia Learning)
Bronze: Night Buddies, Imposters and One Far-Out Flying Machine, by Sands Hetherington; illustrated by Jessica Love (Dune Buggy Press)
36. Best First Book - Picture Book
Gold: Dear Bully of Mine, by Vicki Fraser; illustrated by Cody and Sean McGrath (Domnizelles Publications)
Silver: Winds, A Legend from the Lower Yukon, by Armen and Aida Marasli; illustrated by Zepur Hanimyan (World Legends for Kids)
Bronze (tie): My Name Is Leona, by Carol Gahara Harris; illustrated by Kim Fujiwara (Snowy Night Publishing) and The Pajamas of My Dreams, by Laurie Collins; illustrated by Margie Florini (Three Bean Press)
37. Best First Book - Chapter Book
Gold: Snowcial: An Antarctic Social Network Story, by Chelsea Prince; photography by Keoki Flagg and Robert Pittman (Chelsea Print & Publishing)
Silver: Spaghetti Is NOT a Finger Food (And Other Life Lessons), by Jodi Carmichael; illustrated by Sarah Ackerley (Little Pickle Press)
Bronze: Why Kimba Saved the World, by Meg Welch Dendler (Serenity Mountain Publishing)
38. Best Illustrator
Gold: Zuzanna Celej, for Inside My Imagination, by Marta Arteaga (Cuento de Luz)
Silver (tie): Nívola Uyá, for A Very, Very Noisy Tractor by Mar Pavón (Cuento de Luz) and Danny Popovici, for World on a String, by Larry Phifer (Storytime Works)
Bronze: Jo Empson, for Rabbityness, by Jo Empson (Child's Play)
39. Best Book by Youth Author (under 18)
Gold: Playing Fairy Godmother, by Rachel Jeffries (Lizard Ventures)
Silver (tie): The Adventures of Detective Luke, by Wilson Grant Hickman (CreateSpace) and Luna: Puppy Detective, by Kesmine G. Hickman (CreateSpace)
Bronze: The Adventures of Fin and Aivilo, by various authors (The Art Cabriolet)
40a. Best Book Series – Fiction (Picture Book)
Gold: Maurice's Valises Series: Moral Tails in an Immoral World, by J.S. Friedman; illustrations by Chris Beatrice (Mouse Prints Press)
Silver: Carlos and Friends Series, by Fiona Murray; illustrated by Dinalie Dabarera (Palmer Higgs Publishing)
Bronze: Purple Paw Prints Series, by Sarah Mounsey; illustrated by Jade Fang (Brindal Books)
40b. Best Book Series – Fiction (Chapter Book)
Gold: The Tale of Edgar Trunk, by Jason O. Silva (Thimble Publishing)
Silver: The Dragonsdome Chronicles, by Lucinda Hare (Corgi Books/Thistleburr Publishing)
Bronze: The Red Hand Adventures, by Joe O'Neill (Black Ship Publishing)
41. Best Book Series – Non-Fiction
Gold: Read-Aloud Series, edited by Glorya Hale, Pamela Horn, and Susan Kantor (Black Dog & Levanthal Publishers)
Silver: Badger Biography Series, by various authors (Wisconsin Historical Society Press)
Bronze: Illumination Leadership Series, by Kari Holloway, Ph.D.; illustrated by Eva Vagreti (Illumination Leadership)
Moonbeam Spirit Awards - For dedication to children's books and literacy and for inspired writing, illustrating and publishing. This year we chose three books in three different areas. All recipients will receive gold medals.
Art: Squircle,written and illustrated by Andrea Skyberg (Wooden Nickel Press)
The artwork in this book was crafted from fabrics collected from around the world and worked on in collaboration with five Wisconsin schools. Students added their own unique designs through free-hand embroidery to adorn each animal.
"Our mission at Wooden Nickel Press is to publish books that exhibit an original & inspired connection between storytelling and fine art."
Music: My Book About Musical Instruments, by Claudia Baumgaertner Lemmerz (Touch the Music)
"Especially at preschool age, children are like sponges and eagerly waiting for the next exciting thing to do. Why not let your child experience the fascination of musical instruments? I wish to plant seeds in all children to make music an important and everlasting part of their lives...when they make the first sound, their eyes get bigger and bigger and then they don't want to stop."
Literature: The Seeker: A Nocturnal Journal, written and illustrated by Rebecca Janes (Self-Published)
Ms. Janes has worked for sixteen years as a mental health counselor in Westport, Massachusetts.
"My eyes can stop listening to noises outside,
And listen, very quietly, inside.
There is treasure to search for
And joy to find.
I can become anything...
What shall I be tonight?
2013 Moonbeam Children's E-Book Awards Results
E1. Children's Picture Book
Gold: Swamp Things, by Ronald L. Morris; illustrated by Chris Beatrice (Tailwind Books)
Silver: Every Walrus Can Fly, by Brian Phillips (The Basement)
Bronze: Randy the Raindrop, by Patty Jean Wiese; illustrated by Kim Sponaugle (Stormy Day Books)
E2. Children's Picture Book – Enhanced & Apps
Gold: Where Do Balloons Go? An Uplifting Mystery, by Jamie Lee Curtis; illustrated by Laura Cornell (Auryn Apps)
Silver: Tales From the Playroom – Part One: The Arrival of Erste Farben, by Edit L. Molnár; illustrated by Lídia Steiner (Webstar Csoport)
Bronze: Priscilla McDoodleNutDoodleMcMae Asks Why? by Janet Mary Sinke; illustrated by Craig Pennington; design by Mintium Digital (My Grandma and Me Publishing)
E3. Fiction – Pre-Teen
Gold: Esme Dooley, by Jane Donovan and Rosie McTozy (Sky Candle Press)
Silver: Ennara and the Fallen Druid, by Angela Myron (Stardance Publishing)
Bronze: Scary Spring: Our Polio Fright of 1955, by C.A. Hartnell (Hawk Prints Publishing)
E4. Fiction – Young Adult
Gold: The Knoll, by Ginger Cucolo (Allen House Publishing)
Silver: The Adventures of Alice Creek, by Emily Knight (Emily Knight Publishing)
Bronze: Elvis A. Eagle, by C.R. Sinclair (Scribe Press)
E5. Non-Fiction
Gold: The Worry Chest System, by Howard Abraham (The Worry Chest System LLC)
Silver: Your Amazing Heart (For Kids Only), by Edwin Lee, Jim Huth and Bryan Burright (IHB Publishing)
Bronze: Red Is… by Ivy Wong (Ripple Digital Publishing)
E6. Languages/Cultural
Gold: ¡Despierta al Amor! (Wake Up To Love, Lessons on Friendship from a Dog Named Rudy), written and illustrated by Corinne Humphrey (Lucky Penny Press)
Silver: Alistair the Armadillo: Journey to the Stars, by Mike Brumby; illustrated by Cipta Croft-Cusworth (MBDigital Media)
Bronze: Cinderella Spinderella, by Mark Binder; illustrated by Steve Mardo (Light Publications)


text:
Officer Duties
The Texas Municipal League Regional Structure
The regional structure of the Texas Municipal League (TML) was created in 1958, a time of great change for the League. It was at the 1958 TML Annual Conference in Houston that the League adopted a new constitution that created a regional and affiliate organization structure to better engage the growing League membership.
Article VI of the TML Constitution lays out the specific organizational requirements of TML regions, including the election of officers (president, vice president, and secretary). Article IV of the TML Constitution addresses the election of regional director to the TML Board of Directors.
The TML Constitution does not specify the format for regional meetings nor the content of the meetings. In addition to evening business meetings and guest speakers, some regions conduct afternoon workshops prior to the evening meeting on issues of general interest to municipal leaders and explore ways to foster regional cooperation among the cities.
The purposes of the regions, as outlined in the TML Constitution, are to promote interest in municipal government on a regional level; facilitate the exchange of information among cities in the region; and assist the TML Board of Directors in formulating policy that represents the diverse interests of the state.
TML Support of Regional Activities
Upon request, TML will provide email and mailing lists, send emails, suggest program speakers, and provide any additional assistance requested by the regional officers.
The TML president and TML president-elect welcome invitations to speak at regional meetings. In addition, TML staff members frequently attend regional meetings and are available to speak at afternoon workshops or provide the evening keynote presentation. For assistance in obtaining speakers for regional meetings, email Rachael Pitts or call her at 512-231-7472.
All of these services are provided to TML regions at no cost to the region.
Duties of TML Regional Officers
The TML Constitution requires each region to have a president, vice president, secretary, and regional board director. In all cases, the president, vice president, and board director, must be elected officials. The Constitution also permits any region to provide for additional officers, which explains why some regions elect a first and second vice president, and a treasurer in addition to the required minimum.
The following are descriptions of the responsibilities of the various regional officer positions.
- Serves as presiding officer and chief executive of the region.
- In conjunction with the host city, sets date for regional meetings.
- Coordinates educational workshops and speakers for regional meetings. This should be done in cooperation with other regional officers and the city hosting the regional meetings.
- Presides over business session during TML regional meetings.
- Executes resolutions and other documents on behalf of the region.
- Appoints a nominating committee for election of officers as required.
- Term of office: one year, or two years at the discretion of the region, commencing with his/her election at the last regional meeting prior to the TML Annual Conference. (Section 6.6 of the TML Constitution)
Vice President
- Assumes the duties of the president upon the disability or absence of the president; may assume presidency and serve the unexpired part of the term of the regional president who vacates his/her office.
- Upon appointment by the regional president, presides over standing or special committees of the region
- Term of office: one year, or two years at the discretion of the region, commencing with his/her election at the last regional meeting prior to the TML Annual Conference. (Section 6.6 of the TML Constitution)
- Prepares and maintains minutes of regional meeting proceedings.
- Working with regional president, keeps TML staff informed of activities of region. (A post-meeting report form is available.)
- Handles correspondence on behalf of the region.
- In coordination with city hosting the regional meeting, distributes regional meeting notices and other communications (minutes, resolutions, etc.).
- Receives and distributes funds on behalf of the region.
- Term of office: one year, or two years at the discretion of the region, commencing with his/her election at the last regional meeting prior to the TML Annual Conference. (Section 6.6 of the TML Constitution)
TML Regional Board Director
- Represents the region on the TML Board of Directors.
- Serves as the legislative grassroots coordinator for the region.
- Serves as communications link between the region and the TML Board and staff.
- Term of office: two years with a maximum of four years for any one person, except a regional director who begins service on the TML Board by filling a vacancy under the provisions of Section 4.6B of the TML Constitution is eligible for two full, two-year terms in addition to the time served filling the vacancy. The election of the regional board representative takes place every other year at the same time that the offices of president, vice president, and other officers are filled. The Regional Board Directors (representative) in odd-numbered regions are elected in odd-numbered years; TML Regional Board Directors (representative) in even-numbered regions are elected in even-numbered years. The term of office for the regional board director (representative) commences on the last day of the TML Annual Conference.
Elections of Regional Officer Positions
The election of officers is conducted at the last meeting of the region prior to the TML Annual Conference, preferably no later than September 1. Regional officers are elected for one year, or two years at the discretion of the region, except that the regional board director serves a two-year term and is elected every other year.
The board director is elected each even year (2024, 2026, etc. in even-numbered regions:
- 2
- 4
- 6
- 8
- 10
- 12
- 14
- 16
The board director is elected each odd years (2023, 2025, etc.). Odd-numbered regions:
- 3
- 5
- 7
- 9
- 11
- 13
- 15
Should a region fail to hold a timely election to elect or re-elect the regional board director, the position shall be declared vacant. The region should hold an election as soon as practical.
Vacancies in Regional Board Director Positions
In the event of a vacancy during the term of office for the regional board director, the president of the region shall become a member of the TML Board, and shall hold such office until the adjournment of the next Annual Conference. If the regional president does not wish to serve or is ineligible to serve as a regional director, a regional director shall be elected at a meeting of the region to fill the vacancy for the remainder of the unexpired term.
Sample Regional Meeting Agenda
- Call to Order. Regional president or other presiding officer.
- Invocation. Officer of region or other designated person.
- Message of Welcome. Mayor or other official of host city. (To be introduced by presiding officer.)
- Response to Welcome. Presiding officer.
- Introduction of Other Guests and City Officials Present. Some regions follow the practice of having each city official stand and give his or her name, title, and city. In the interest of time, others follow a policy under which one official from each of the cities represented at the meeting introduces all of the persons present from his or her city.
- Business Session
- Approval of minutes and other routine items
- Committee reports
- Report from TML Regional Board Director
- Election of officers (If appropriate)
- Introduction of Speaker or Program
- Main Program
- Closing Remarks by Presiding Officer
- Adjournment. Announcement of the next regional meeting date and location.
Report on TML Regional Meeting (PDF).

subset: commoncrawl


text:
Holdsclaw returns to Knoxville for Hall of Fame induction
KNOXVILLE, Tenn. (AP) Chamique Holdsclaw will enjoy the crowning achievement of her basketball career in the town where she produced many of her greatest moments.
It's only appropriate that she's getting inducted into the Women's Basketball Hall of Fame alongside Mickie DeMoss, the former Tennessee assistant coach who helped make sure Holdsclaw remained a Lady Vol.
Holdsclaw, who grew up in New York, struggled to adapt to Knoxville when she first arrived at Tennessee. Holdsclaw credits DeMoss for helping her adjust to her new surroundings and meet the demands of former Tennessee coach Pat Summitt.
''To be going in at the same time as Coach DeMoss is a totally amazing feeling,'' Holdsclaw said. ''When I think about my time at Tennessee, she's a big reason why I left New York to come here. I was so scared of Coach Summitt. I was nervous or whatever, but Mickie was always the silly one who made you feel connected, like it's going to be OK.''
Holdsclaw and DeMoss are being inducted Saturday as part of a class that also includes former Colorado coach Ceal Barry, former New Jersey high school and college coach Rose Marie Battaglia, Connecticut assistant coach Chris Dailey and former players Katie Smith and Tina Thompson.
The induction ceremony is taking place in a downtown Knoxville theater less than two miles from Thompson-Boling Arena, where Holdsclaw's No. 23 hangs from the rafters.
Tennessee won three straight national titles from 1996-98 with Holdsclaw playing a starring role and DeMoss assisting Summitt. Two decades later, Holdsclaw remains the Southeastern Conference's career scoring leader (3,025) and Tennessee's career rebounding leader (1,295).
But it wasn't a smooth transition for Holdsclaw when she first arrived at Tennessee.
Summitt died in 2016, but her book ''Sum It Up'' tells the story of how Holdsclaw walked out of a practice, announced plans to quit and said that ''I'm calling (Connecticut coach) Geno (Auriemmma)! `Cause Geno wouldn't treat me like this!''
According to Summitt's book, DeMoss went into the locker room and helped talk Holdsclaw into staying.
''She'd spent her whole life in New York, so I knew the adjustment was going to be hard,'' DeMoss said. ''We anticipated that when she got here, and then playing for Pat as a freshman, that's extra tough. Having the demands, the expectations, plus you're totally out of your comfort zone. We anticipated she was going to need some extra nurturing.''
Holdsclaw went on to make six WNBA all-star teams and also won an Olympic gold medal in 2000. She now speaks often on mental health issues while discussing her own off-court struggles, which include a 2006 suicide attempt as well as a 2012 arrest that resulted in a probation sentence.
''You've got to have the tough conversations,'' Holdsclaw said. ''People don't want to have it, but now we're dealing with our young people being affected with school shootings and things like that. Every school needs to talk about these types of things. We have to understand what's going on.''
Holdsclaw's discussions on the subject recently included a talk at LSU, where DeMoss worked as an assistant coach the last two seasons.
''I learned things that night I didn't even know about her,'' said DeMoss, who stepped down from LSU's staff after the 2017-18 season. ''I was like, `Man, you did not leave a stone unturned.' She's very authentic when she speaks.''
Holdsclaw is one of three former WNBA stars getting inducted this week.
Thompson, a nine-time WNBA all-star and two-time Olympic gold medalist, was the No. 1 pick in the inaugural WNBA draft and helped the Houston Comets win the first four WNBA titles. Smith, a former Big Ten player of the year for Ohio State, won three Olympic gold medals and played on two WNBA championship teams with the Detroit Shock.
Dailey, a former Rutgers forward, has worked on Connecticut's staff throughout Auriemma's 33-year tenure and has been a part of 11 national championship teams.
Barry won 510 games in 26 seasons as a college head coach. Battaglia won over 700 games in 38 years of coaching at the high school and junior-college level.
The induction ceremony weekend also includes recognizing members of the Women's Professional Basketball League as ''trailblazers of the game.'' The WBL existed from 1978-81 and was the first professional women's basketball league in the United States.
Follow Steve Megargee at www.twitter.com/stevemegargee


text:
GetSatisfaction for SugarCRM is the July 2013 SugarCRM App of the Month
GetSatisfaction for SugarCRM is the July 2013 SugarCRM App of the Month. This plugin is about more than simply putting more data into your CRM. It is about integrating these special customer and potential customer interactions into the company's systems and business processes. See for yourself at the live demo on the SugarCRM Community Webinar on July 17th at 11am EDT. To learn more about the GetSatisfaction SugarCRM plugin, you may contact DRI directly.
Name, title and brief bio?
Mitch Lieberman, Managing Partner DRI, USA
Mitch has successfully helped businesses of all sizes to understand the importance of technology and culture; it is about balance. The focus needs to remain on the problem, appropriate solutions, and getting jobs done. Mitch takes a modern, unique, but practical view of customer strategy, process improvement, and technology optimization achieved by creating tight alignment between business strategy, goals and objectives.
His own personal balance is that of a practical view on today, as well as, a strong belief on where we are headed, and how this applies to many different types of businesses, cultures, and geographies.
When you designed and built this app, what problems were you looking to solve for SugarCRM users and how does the GetSatisfaction plugin solve those problems?
Communities should be used to bridge the gap from social media conversation to digital interactions with a purpose. Today many organizations are trying to figure out how to leverage social conversations and these new connections to deliver a better customer experience. Customer communities are great way to accomplish this goal. As much as we would like to do it, taking the online conversations people are having about your company in Facebook and Twitter and dumping them into a CRM system without a considered process, just does not provide a whole lot of value. As you have learned with forums, your customers really do want to connect with you and while the basics have not changed, customers expect more as does your business.
What unique or interesting ways does the GetSatisfaction plugin make it easy for users to use?
Users do not think about the fact that it is being used, it feels like a natural extension to SugarCRM and the CRM process. Does a user think about the Internet connection when they log into the application? It just works and makes their lives easier. In this case, the user of the plug-in itself is the business and not only does it bridge the gap, technically, among service, sales and marketing it brings the organization to together to discuss more important topics like customer experience and customer satisfaction.
What attracted you to being a part of the SugarCRM ecosystem?
I have been a part of the SugarCRM ecosystem longer than most; I have been part of the system (same login to SugarCRM.com ) for over 9 years. DRI has been a gold partner since 2005. I have taken a few breaks, but I keep coming back!
Are there any other apps you'd like to mention that you have either used or been involved with in the SugarCRM ecosystem?
We are actually seeing a lot of traction, in different regions with Act-On.
For someone who wants to create their own SugarCRM apps, what resources would you recommend that helped you?
Build the business case and bounce that off of business users. Technology is the easy part, once the business case is understood.
What is your vision for the GetSatisfaction plugin? What can we expect to see from DRI in the future?
A customer community allows you to collect and analyze data, derive insights about your customers that will then allow you to provide them with relevant, appropriate information at key points along the journey. Today's forums, or customer communities, can be strongly linked to social networks in order to maximize insight, streamline campaigns, and drive organizational shift to bring your company into the social age. What you can expect from DRI is to focus on the whole customer experience, not just the sale, not just service, nor marketing – but how all the pieces connect, relate and solve the bigger questions of loyalty and satisfaction.


text:
Prescription Refill Appearance Change Puts Patients off Meds
Don't judge a book by its cover. And don't judge a pill by its color—or shape.
When prescriptions for post-heart attack care got refilled and the same drugs suddenly came in different shapes or colors, patients were significantly more likely to stop taking their meds. That's the finding from a study involving more than 11,000 patients that appears in the Annals of Internal Medicine. [Aaron S. Kesselheim et al., Burden of Changes in Pill Appearance for Patients Receiving Generic Cardiovascular Medications After Myocardial Infarction: Cohort and Nested Case–Control Studies]
Even when different-looking pills contained the exact same active ingredient, a change in color boosted the odds that patients would stop taking their heart medication by 34 percent. A change in shape jumped the chance that patients would cease their meds by 66 percent.
There's no legal requirement to make generic and brand-name drugs appear alike. But the study's authors say that the Food and Drug Administration should consider making consistent appearance the standard, as such uniformity would likely result in more patients adhering to their medication regimens. For now, we're all stuck reading pharmaceutical labels.
—Dina Fine Maron
[The above text is a transcript of this podcast.]


text:
Before the financial-sector meltdown, few people had ever heard of credit-default swaps (CDS). They are insurance contracts or, if you prefer, wagers that a company will pay its debt. As a founding member of AIG's financial-products unit, Cassano, who ran the group until he stepped down in early 2008, knew them quite well. In good times, AIG's massive CDS-issuance business minted money for the insurer's other companies. But those same contracts turned out to be at the heart of AIG's downfall and subsequent taxpayer rescue. So far, the U.S. government has invested and lent $150 billion to keep AIG afloat.
See the top 10 scared traders.
See the top 10 financial-crisis buzzwords.
Next Ian McCarthy


text:
COM Marshaling is a subject most developers can and do take for granted. Indeed the Microsoft COM engineers have done such a marvelous job of concealing the internals of marshaling that we are left totally unaware of the precision that take place with each cross-apartment method call.
This article is part one of a multi-part series of articles in which I plan to expound on the various methods of achieving COM Custom Marshaling. In this first installment, I will touch on the concept of a proxy and that of a marshal data packet. To this end, I have prepared basic sample implementation codes which we will walk through thoroughly. It is my hope that as we study this subject in-depth, we will come to realize and appreciate how marshaling works.
This series of articles is advanced in nature and I do expect the reader to possess prior knowledge on the following topics :
Armed with the above-mentioned knowledge, we will now proceed to explore the world of custom marshaling. Let us start by going through some background on COM marshaling in general.
The term custom marshaling is a misnomer. It is in fact a generic architecture that stipulates the rules and requirements of marshaling in general. What we know of as standard marshaling is actually a specific instance of custom marshaling . Any other forms of marshaling will be treated as various manifestations of custom marshaling. Each of these manifestations is transparent to the COM sub-system. For convenience of discussion, we will refer to standard marshaling as just that even though we know that it is Microsoft's specific implementation of custom marshaling. We will also regard all private, non-Microsoft marshaling as custom marshaling.
Marshaling is indelibly associated with apartments. We know that an apartment is a logical container inside an application for COM objects which share the same thread access rules (i.e. regulations governing how the methods and properties of an object are invoked from threads within and without the apartment in which the object belongs). We also know that all COM objects live inside exactly one apartment.
In order that an object be used in an apartment other than its own, the object's interfaces must first be exported from its original apartment and then imported into the target (client) apartment. The resultant interface pointer which is used by the client apartment, however, will not be the original object itself. It is instead something known as a proxy. When COM performs the exporting and importing of interface pointers, it does so using a conjugate pair of procedures known as marshaling and unmarshaling. For the sake of convenience, we will refer to all types of client apartments (as mentioned above) as simply client apartments.
When a method of the imported interface is invoked, the proxy must somehow pass control to the original object (in its original apartment), get it to execute the method and then return control back to the proxy. In this way, it is ensured that a method is always executed in the correct apartment. When control is passed to the original object, the proxy's thread must halt until control is returned to the proxy.
This passing of control from one apartment to another is also known as method remoting. Method remoting is how all cross-thread, cross-process and cross-machine communications occur in COM.
Custom marshaling is essentially the generic mechanism that lets a COM object control the way it communicates with its proxy in a client apartment. The client apartment can either be in the same process as the COM object or in another process or even in a process in another machine. When we implement custom marshaling, what we eventually wind up doing is to implement a custom proxy.
We mentioned earlier that when a method of an imported interface is invoked, the proxy must somehow pass control to the original object. Under custom marshaling, the protocol for this is totally within the domain of the object and its proxy. COM plays no part in the communication process. However, when a proxy is created, COM gives the object a one time chance to pass something to the proxy. This is done to help the object establish its protocol with its proxy. This something is known as a marshal data packet. We shall explore these in greater detail in the coming sections below.
A term which will be covered in a future article but is worth mentioning at this time is that of a stub. Stubs are not always required although they can serve to simplify object-to-proxy communications. As will be made clear later on, stubs will not be relevant in the sample codes that we present in this article.
To support custom marshaling, a COM object must implement the IMarshal interface. If it does not, COM deems that standard marshaling is to be used whenever this object's interfaces are to be marshaled. Hence the first point about creating custom marshaling is to ensure that your COM object implements the IMarshal interface.
The second point about creating custom marshaling is that a proxy object must be defined. This proxy is also a COM object and it must also implement the IMarshal interface albeit not all of the IMarshal methods need to be non-trivial.
Note also that once an object has declared that it will implement custom marshaling, it must custom marshal all of its interfaces. The IMarshal interface consists of 6 methods. We will study these more in-depth when we explore our sample codes. For now, a short examination of how COM interacts with the IMarshal methods would be appropriate as much of what will be expounded on very soon afterwards will depend on a good understanding of this interface.
When called upon to perform marshaling, COM first queries the object for its IMarshal interface. Once COM discovers that it supports IMarshal, it will call its IMarshal::GetUnmarshalClass() method. This method returns to COM the CLSID of the object that will be used for the unmarshaling process. In other words, COM is asking for the CLSID of the proxy that will be created when unmarshaling takes place. Having a CLSID implies that this proxy is a COM object.
Later, when unmarshaling is to occur, COM will use this CLSID to create the proxy object within the importing client apartment. Sensibilities dictate that such a COM object should be housed within a DLL and that it should support both the Single-Threaded and Multi-Threaded Apartments. These requirements will ensure that there will be no need for a proxy to the proxy that has just been created !
Still within the context of marshaling, COM will next call the IMarshal::GetMarshalSizeMax() method to determine the size of its marshal data packet. We will start to go deep into marshal data packets in the next section. The IMarshal::MarshalInterface() method of the object will then be invoked. From this method, COM expects to obtain the marshal data packet from the object. This marshal data packet can then either be passed to client code (for later unmarshaling) or be kept by COM itself inside a table in memory (to be retrieved multiple-times later by client code for unmarshaling).
Now, when unmarshaling takes place, a proxy COM object must first be created. Then the marshal data packet must be passed to it via its IMarshal::UnmarshalInterface() method. This is how a proxy becomes initialized. Being initialized could mean that a proxy now has what it takes to communicate with its original object, or that a proxy constructs itself as a clone of the original object. Whichever is the case, once a proxy has been initialized, COM will no longer play any part in object-to-proxy communications.
From a high-level point of view, marshaling and unmarshaling is the collective act of transforming an interface pointer from a source apartment into a series of bytes and then transporting this series of bytes to a client apartment which will reverse-transform the bytes back into an interface pointer usable by the client apartment.
The transformation of anything into a series of bytes is known as serialization. The series of bytes obtained from serialization is more commonly referred to as a stream. The serialization of an interface pointer is better known as marshaling the interface pointer. The stream obtained from marshaling is also known as a marshal data packet. The marshal data packet stream object is always referenced by a pointer to an IStream interface.
The format of a marshal data packet used for custom marshaling is as follows :
The above diagram is a slightly modified version of the same taken from Don Box's book Essential COM (page 245).
The first part of the marshal data packet is a 4-byte signature which is hardcoded to the characters "MEOW" which is an acronym for Microsoft Extended Object Wire. This is followed by a single byte flags field. I personally do not know the purpose of this field. Next comes a 16-byte GUID field which is filled with the IID of the interface which is being marshaled. After that comes another 16-byte GUID field which is filled with the CLSID of the custom proxy which will be created in the client apartment.
We then have a 4 byte data the purpose of which is also unknown to me at this time. I resorted to calling this 4-byte field "Reserved" rather than speculate its actual intended purpose. The next field "Byte Count" is important as it indicates the length (in bytes) of the custom data which will follow.
This last section of the marshal data packet (i.e. "Custom Marshal Data") is particularly important. It is created by the original COM object and will be passed to a proxy during the proxy's initialization. To COM, this custom marshal data is essentially an opaque array of bytes that can contain anything as long as a proxy knows how to use it to establish communication with the original COM object or to re-create the object within the context of the client apartment. This array of bytes is the something that gets passed between an object and its proxy. This is the essence of custom marshaling.
We will revisit this structure again later when we go through our sample codes.
Note that unmarshaling may not always occur after an object has been marshaled. There is no rule stating this necessity. However because a marshal data packet potentially represents an object, its presence may warrant the need to add a reference count to the original object. This has to do with something known as strong and weak connections. We shall discuss this in a later article.
In this section, we present a simple example of marshaling known as "Marshal-by-Value". It is a perfect illustratory example for custom marshaling. The premise behind "Marshal-by-Value" is to create a proxy that is a clone of the original object. This concept applies to immutable objects (i.e. objects whose properties which will not change once they have been initialized).
Because immutable objects will never change the values of their properties, it makes no difference whether a proxy is a reference to the original object or is an exact copy of the object itself. This being the case, when a proxy to the object is required by a client apartment, we may as well clone the object and deliver it to the apartment.
And because a "Marshal-by-Value" proxy need not communicate with its original object, this example is simple enough for me to illustrate in-depth the proxy creation process. Proxy creation is a very important first step in understanding custom marshaling. Furthermore, since method calls will be made directly from the client code to the proxy, there will be no need for any marshaling of method arguments. This will be covered in a future article of this series.
The complete source codes for the basic example implementation are included in the zip file. Once unzipped, it will be stored in the following folder :
where <main folder> is wherever you have copied the zip file to.
Inside BasicSample01, there are 3 additional folders : Interfaces, Implementations and Clients. Let us now examine the projects contained within these folders.
Inside the Interfaces folder, we have a Visual Studio .NET project folder named BasicSample01Interfaces in which the Visual Studio .NET solution project BasicSample01Interfaces.sln is found.
This BasicSample01Interfaces.sln project will not contain any useful implementation code. Its purpose is simply to allow us to automate (via ATL Wizards) the creation and maintenance of two COM interfaces named IImmutable and IImmutableObjectFactory.
Listed below is a fragment of code taken from BasicSample01Interfaces.idl showing the IImmutable and the IImmutableObjectFactory interfaces :
helpstring("IImmutable Interface"),
interface IImmutable : IDispatch
[propget, id(1), helpstring("property LongValue")]
HRESULT LongValue([out, retval] LONG* pVal);
helpstring("IImmutableObjectFactory Interface"),
interface IImmutableObjectFactory : IDispatch
[id(1), helpstring("method CreateObject")]
HRESULT CreateObject
[in] LONG InitializationValue,
[out,retval] IImmutable** ppIImmutableObjectReceiver
Note that the IImmutable interface definition stipulates the basic attributes of this interface in terms of its GUID, methods, argument types, etc.
Customizable attributes like the apartment type, packaging format (in-proc DLL or EXE server) and whether standard or custom marshaling will be used, are the decision of the eventual implementation code.
An object which implements the IImmutable interface must possess a readonly long property. This readonly property must also never change once set internally.
The IImmutableObjectFactory interface describes an object which serves as a factory of IImmutable objects. An IImmutableObjectFactory object must implement the CreateObject() method which serves as an entry point for the creation and initialization of an IImmutable object. This method takes a long parameter which is used as the value to be set for the long property of the IImmutable object to be created and returned.
The BasicSample01Interfaces.sln solution will specifically help to maintain the BasicSample01Interfaces.idl file, which will be referenced by the BasicSample01InterfacesImpl.sln project (will be described in the next sub-section), and the BasicSample01Interfaces.h header file, which will be referenced by the various client codes included in the source codes zip file.
Next, we examine the BasicSample01InterfacesImpl.sln project the folder of which can be found in the Implementations folder.
The BasicSample01InterfacesImpl.sln project contains concrete classes which implement the IImmutable and IImmutableObjectFactory interfaces. These are the CImmutableObjectFactoryImpl and the CImmutableImpl C++ classes respectively.
Let us now examine these classes in greater detail.
The CImmutableObjectFactoryImpl class is implemented using ATL. It is an STA class but this fact is not important as we will not be performing any custom marshaling for this interface. If CImmutableObjectFactoryImpl should be instantiated inside an STA thread, no marshaling will be immediately required in order that it be usable by the current apartment.However, if it is instantiated inside an MTA thread, then marshaling will be immediately required but we will be relying on standard marshaling for this.
Besides these immediate needs, any other cross apartment marshaling for CImmutableObjectFactoryImpl's IImmutableObjectFactory interface will also use standard marshaling.
Listed below is the implementation code for the only method of the IImmutableObjectFactory interfce :
long InitializationValue,
IImmutable ** ppIImmutableObjectReceiver
CComObject<CImmutableImpl>* pCImmutableImpl = NULL;
if (pCImmutableImpl)
CImmutableImpl* pBase
= dynamic_cast<CImmutableImpl*>(pCImmutableImpl);
if (pBase)
pBase -> SetLongValue(InitializationValue);
pCImmutableImpl -> QueryInterface
return S_OK;
The CreateObject() method simply creates an instance of CImmutableImpl and then sets its long property value by calling its non-COM public function SetLongValue(). The long value used here is taken from CreateObject()'s first parameter.
CreateObject() then returns a pointer to the new CImmutableImpl instance's IImmutable interface via QueryInterface().
The CImmutableImpl class is also implemented using ATL. Like CImmutableObjectFactoryImpl, it is designated as an STA object. This means that if it is instantiated inside an STA thread, marshaling will not be immediately required. However, if it is instantiated inside an MTA thread, marshaling will be immediately required. This would complicate matters a little. We will be demonstrating something similar to this in a more advanced sample in a future article. The current basic sample client code will not be touching on this. The cross-apartment marshaling we will be demonstrating in our basic sample will be across two STA apartments.
CImmutableImpl supports the IImmutable interface by defining a long member data m_lLongValue. This long value is set via the non-COM public function named SetLongValue(). This method is only callable from code within the BasicSample01InterfacesImpl.dll server itself and only CImmutableObjectFactoryImpl uses it to initialize a CImmutableImpl object's long value.
The heart and soul of CImmutableImpl, however, is in its implementation of the IMarshal interface. CImmutableImpl shows its support for the IMarshal interface in its class definition :
class ATL_NO_VTABLE CImmutableImpl :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CImmutableImpl, &CLSID_ImmutableImpl>,
public IMarshal
The IMarshal interface requires implementors to supply six methods. We shall examine CImmutableImpl's implementations of these functions below.
HRESULT GetUnmarshalClass(
REFIID riid,
void * pv,
DWORD dwDestContext,
void * pvDestContext,
DWORD mshlflags,
CLSID * pCid
The GetUnmarshalClass() method is fully documented in MSDN. It is the first IMarshal method that COM will invoke after determining that an object will be performing its own custom marshaling (through the discovery of the object's IMarshal interface). COM calls this method to determine the CLSID of the marshaling proxy object. It is the proxy that will perform the unmarshaling of the original object in the importing client apartment.
In our basic sample, because the proxy is an exact copy of the object itself, i.e., the CImmutableImpl object is its own proxy. Hence the following code can be found in CImmutableImpl::GetUnmarshalClass():
REFIID riid,
void * pv,
DWORD dwDestContext,
void * pvDestContext,
DWORD mshlFlags,
CLSID* pCid
// The class that will perform the unmarshaling will be
// this class itslf.
*pCid = GetObjectCLSID();
return S_OK;
We simply return the CLSID of the CImmutableImpl class itself. This tells COM that once CImmutableImpl has performed the necessary marshaling process and has acquired a marshal data packet stream (these are accomplished via the IMarshal::MarshalInterface() method), COM should then create, in the target client apartment, another instance of the CImmutableImpl class which will serve as the proxy to the original object.
The following diagram illustrates what happens when GetUnmarshalClass() is called :
HRESULT GetMarshalSizeMax(
REFIID riid,
void * pv,
DWORD dwDestContext,
void * pvDestContext,
DWORD mshlflags,
ULONG * pSize
GetMarshalSizeMax() is the second IMarshal method that COM will invoke. The purpose of this method is to determine the size of the marshal data packet to be created for marshaling the IImmutable interface. This method works in pair with the MarshalInterface() method as we shall see later. Once COM has determined this size value, it will proceed to prepare the stream object (a container for bytes) which will be used to store the marshal data packet.
CImmutableImpl's implementation of GetMarshalSizeMax() is listed below :
REFIID riid,
void * pv,
DWORD dwDestContext,
void * pvDestContext,
DWORD mshlFlags,
ULONG* pSize
HRESULT hr = S_OK;
*pSize = sizeof(CImmutableMarshaledObjectReferenceStruct);
return hr;
Here we see that the size of the CImmutableMarshaledObjectReferenceStruct structue will be returned. This is because we will be storing a CImmutableMarshaledObjectReferenceStruct structure into the marshal data packet.
The CImmutableMarshaledObjectReferenceStruct structure is listed below :
typedef struct
long lLongValue;
As mentioned earlier, to COM, the customized data contained inside the marshal data packet is essentially an opaque array of bytes that can contain anything as long as a proxy knows how to use it to establish communication with the original COM object or to re-create the object within the context of the client apartment. For our CImmutableImpl class, this customized array of bytes will contain the CImmutableMarshaledObjectReferenceStruct structue. As we shall see later on, this structure contains all the necessary information for our proxy to re-create the original object in the client apartment.
The following diagram illustrates what happens when GetMarshalSizeMax() is called :
HRESULT MarshalInterface(
IStream * pStm,
REFIID riid,
void * pv,
DWORD dwDestContext,
void * pvDestContext,
DWORD mshlflags
The MarshalInterface() method is the next method to be called. This is a very important method as it is here that the marshal data packet will be created and end up being serialized and marshaled across to a target apartment. Whatever we place into the marshling data packet should contain information that will help the proxy to uniquely identify and establish connection with the original CImmutableImpl object (in order to invoke its properties and methods) or to re-create it in the context of the client apartment.
CImmutableImpl's MarshalInterface() method is listed below :
IStream* pStm,
REFIID riid,
void *pv,
DWORD dwDestContext,
void * pvDestContext,
DWORD mshlFlags
if (dwDestContext != MSHCTX_INPROC)
return E_FAIL;
ImmutableMarshaledObjectReferenceStruct.lValue = m_lValue;
*pStm << ImmutableMarshaledObjectReferenceStruct;
return S_OK;
We stipulate that the marshaling context must be MSHCTX_INPROC (ie. the unmarshaling will be done in another apartment in the same process). The other marshaling contexts are not supported in our basic example.
We essentially create a CImmutableMarshaledObjectReferenceStruct structure and fill its only member data lValue with the current value in m_lValue. Once this is done, we will write the contents of our structure into the stream. We use a global stream support function (listed in marshalhelpers.h) to perform this.
The CImmutableMarshaledObjectReferenceStruct structure is used to store the current value of the m_lValue member data (which is returned when the IImmutable interface's LongValue property is requested by a client). This structure will be contained as raw bytes in the marshal data packet and will be passed to the IMarshal::UnmarshalInterface() method of the proxy which will reverse-transform these raw bytes into a CImmutableMarshaledObjectReferenceStruct structure. More on this later.
The following diagram illustrates what happens when MarshalInterface() is called :
HRESULT UnmarshalInterface(
IStream * pStm,
REFIID riid,
void ** ppv
The UnmarshalInterface() method is to be implemented by a proxy. It is meant to be the congugal opposite of the MarshalInterface() method which is meant to be implemented by the original object. However, CImmutableImpl provides an implementation because it is its own proxy class. What happens before UnmarshalInterface() is invoked is that a new instance of CImmutableImpl (playing the role of a proxy) will be created inside the client apartment. Thereafter, this new instance's UnmarshalInterface() method will be called with an IStream pointer of the stream object which contains the marshal data packet created previously during the MarshalInterface() call.
What is expected from the UnmarshalInterface() method call is to return an interface pointer (whose IID is specified by the riid parameter) from the unmarshaled object (i.e. the proxy).
Let us examine CImmutableImpl's UnmarshalInterface() method :
IStream* pStm,
REFIID riid,
void ** ppv
*pStm >>
m_lValue = ImmutableMarshaledObjectReferenceStruct.lValue;
return QueryInterface(riid, ppv);
We create a new instance of the CImmutableMarshaledObjectReferenceStruct struct which is used to download all the contents of the input stream. Thereafter, we reconstruct CImmutableImpl by retrieving the lValue member of the structure and filling m_lValue with this value. This is exactly how the proxy becomes a "Marshal-By-Value" proxy. The original object is effectively re-created. And in our simple example, this completes the reconstruction process.
We then perform a QueryInterface() to retrieve the required interface pointer. The interface required is none other than that of IImmutable (i.e., IID_IImmtable).
The following diagram illustrates what happens when UnmarshalInterface() is called :
HRESULT ReleaseMarshalData(
IStream * pStm
This method is COM's way of indicating to an object (which has been marshaled) that a marshal object packet is being destroyed. The ocurrence of this is a very important event. However it is not significant in our basic example, as will be the case for most "Marshal-by-value" proxies. It is related to two concepts known as table marshaling and strong connections. In general only strong table-marshaled objects need to provide a non-trivial implementation of ReleaseMarshalData().This topic will be discussed again in a more advanced article in the future.
CImmutableImpl's version of ReleaseMarshalData() is listed below :
STDMETHOD (ReleaseMarshalData)(IStream *pStm)
return S_OK;
It is a trivial implementation indeed.
HRESULT DisconnectObject(
DWORD dwReserved
This method applies only to objects which are housed within EXE COM servers. The typical situation in which this method is called on an object is when the EXE COM server is forcibly terminated while it still has at least one running object. In this situation, prior to shutting down, the EXE server must invoke the CoDisconnectObject() API on each of these running objects. For each object that implements IMarshal, CoDisconnectObject() will call the IMarshal::DisconnectObject() method so that each object that manages its own marshaling can take steps to notify its proxy that it is about to shut down.
After this is done, clients which hold proxies may continue to call the proxy's methods but the proxy must then return the HRESULT CO_E_OBJECTNOTCONNECTED.
This method is equally irrelevant to "Marshal-by-Value" proxies because a proxy is a clone of the original object and will not need to communicate with it. The above-described scenario do not apply for our basic example. Hence CImmutableImpl's version of DisconnectObjectI() is also trivial :
STDMETHOD (DisconnectObject)(DWORD dwReserved)
return S_OK;
I have prepared 3 separate client projects each of which illustrate a slightly different way to marshal and unmarshal our immutable object across apartments. These solutions are contained within the Clients folder. Let us examine these projects individually.
The VCConsoleClient01.sln project provides a good basic example of demonstrating cross-apartment marshaling and unmarshaling with the lowest-level techniques available : i.e. via the CoMarshalInterface() and CoUnmarshalInterface() APIs and the creation of a stream object via CreateStreamOnHGlobal().
One of the highlights of the VCConsoleClient01 solution is our examination of the contents of the marshal data packet that will be created after we call the CoMarshalInterface() API.
VCConsoleClient01.sln is a console-based application. The following is a synopsis of this application :
The source codes of the VCConsoleClient01 solution is simple enough for us to break it down into its constituent components and have them analyzed individually. These are summarized below :
The _tmain() function is the entry point of the application. It is listed below :
int _tmain(int argc, _TCHAR* argv[])
g_hInterfaceMarshaled = CreateEvent(NULL, TRUE, FALSE, NULL);
if (g_hInterfaceMarshaled)
g_hInterfaceMarshaled = NULL;
Nothing sophisticated about the _tmain function. It essentially initializes the thread that it runs on to be an STA thread. It then creates an event handle g_hInterfaceMarshaled which will be signalled when the IImmutable object has been marshaled. _tmain than calls the Demonstrate_Cross_Apartment_Call_Via_Stream function. This function is where the real action starts.
The Demonstrate_Cross_Apartment_Call_Via_Stream() function is where the good stuff begins. This function works hand-in-hand with another named ThreadFunc_CustomMarshaledObject() to provide a complete demonstration of exporting and importing an interface pointer from one apartment to another.
Due to its length, we will not be printing a complete listing in this section. Instead we will provide a general synopsis of this function. Specific parts of this function will be examined closely in a later section when we discuss how it works together with ThreadFunc_CustomMarshaledObject().
Here below is a general synopsis :
As mentioned previously, ThreadFunc_CustomMarshaledObject() works hand-in-hand with Demonstrate_Cross_Apartment_Call_Via_Stream().
Here below is a general synopsis of this function :
In this section, we examine how the above two functions work together to demonstrate marshaling/unmarshaling. We will also see the IMarshal methods of the IImmutable object in action while marshaling and unmarshaling take place. We will describe what goes on chronologically starting from the Demonstrate_Cross_Apartment_Call_Via_Stream() function.
// lpStream is an uninitialized pointer to a stream.
LPSTREAM lpStream = NULL;
// We create a thread which is started by the function
// ThreadFunc_CustomMarshaledObject(). We also pass the
// uninitialized IStream pointer to this thread function
// as a parameter.
hThread = CreateThread
This is done so that it will be initialized by ThreadFunc_CustomMarshaledObject() to point to the marshal data packet for the IImmutable object which will be created in that thread.
// We wait for the thread to initialize.
ThreadMsgWaitForSingleObject(g_hInterfaceMarshaled, INFINITE);
// Signal the situation that the immutable object
// has been marshaled by setting the g_hInterfaceMarshaled
// event.
if (g_hInterfaceMarshaled)
When this event handle is set, it is a signal to the Demonstrate_Cross_Apartment_Call_Via_Stream() function that its lpStream now holds a marshal data packet and is ready for use.
DWORD WINAPI ThreadFunc_CustomMarshaledObject(LPVOID lpvParameter)
MSG msg;
long lLong = 0;
LPSTREAM* ppStreamReceiver = (LPSTREAM*)lpvParameter;
// Create an instance of the COM object which has ProgID
// "BasicSample01InterfacesImpl.ImmutableObjectFactoryImpl"
// and manage it
// via its IImmutableObjectFactory interface.
// Now, because the resultant object (spIImmutableObjectFactory)
// is an STA object, and this thread is an STA thread,
// spIImmutableObjectFactory will live in the same STA
// as this thread.
// Get the immutable object from spIImmutableObjectFactory.
// Now because the immutable object is also an STA object,
// it will live in the same STA as this thread.
spIImmutableObjectFactory -> CreateObject
Note that IImmutable object's long property will be initialized to a value of 101.
The CreateStreamOnHGlobal() API is used to create a Stream Object which will reside in global memory. We set the first parameter to zero to indicate that we want CreateStreamOnHGlobal() to internally allocate a new shared memory block of size zero. The second parameter is set to TRUE so that when the returned stream object is Release()'d, the global memory will also be freed.
The newly allocated stream object will be returned as an IStream pointer. CreateStreamOnHGlobal() expects a pointer to a LPSTREAM in its third parameter. For this, we pass ppStreamReceiver. This way, lpStream (from Demonstrate_Cross_Apartment_Call_Via_Stream()) is set to store the resultant pointer to the IStream interface of the newly created stream object.
For the first parameter, CoMarshalInterface() expects a pointer to a stream object to be used during marshaling. For this, we pass the contents of ppStreamReceiver. This way, the lpStream (from Demonstrate_Cross_Apartment_Call_Via_Stream()) is used to store the marshal data packet of the IImmutable object. The use of the MSHCTX_INPROC as the destination context (parameter 4) indicates that the unmarshaling of the data in the stream will be done in another apartment of the same process.
The use of the MSHLFLAGS_NORMAL flag (parameter 6) indicates that the marshal data packet can be unmarshaled just once, or not at all.
During the course of running CoMarshalInterface(), COM will attempt to get the CLSID of the proxy for the IImmutable object and then to get the marshal data packet from it.
The following sequence of function calls on the side of the IImmutable object will take place :
The reader may want to put a breakpoint in these functions for observation purposes.
// We will need to reset the stream to the beginning.
// Otherwise a later call to the CoUnmarshalInterface()
// API will fail with error STG_E_READFAULT.
(*ppStreamReceiver) -> Seek(li, STREAM_SEEK_SET, NULL);
CImmutableImpl() (constructor)CImmutableImpl::FinalConstruct() (part of proxy construction)CImmutableImpl::UnmarshalInterface() (the marshal data packet will be passed here).
The reader is encouraged to place breakpoints inside these functions to see the sequence of CImmutableImpl function calls.
// At this time, spIImmutable has been initialized to be a proxy
// of the immutable object.
if (spIImmutable)
spIImmutable -> get_LongValue(&lLongValue);
The value 101 will be returned, proving that the proxy is indeed a clone of the original object.
PostThreadMessage(dwThreadId, WM_QUIT, 0, 0);
The ExamineStream function uses standard IStream manipulation APIs to cast the data contained inside a stream into a MarshalDataPacket structure. This structure is listed below :
struct MarshalDataPacket
char Signature[4];
char chFlags;
IID iidMarshaledInterface;
CLSID clsidCustomProxy;
unsigned long ul;
unsigned long ulSize;
unsigned char ucCustomMarshalDataBytes[1];
Notice that it is a complete representation of the marshal data packet illustrated in the "The Marshal Data Packet" section. The MarshalDataPacket struct is defined to help us cast the contents of a marshal data packet to a structure which will make its analysis much easier.
The ExamineStream function will allocate in memory a buffer which is the size of the stream object pointed to by the lpStream parameter. After that, its contents are copied into a MarshalDataPacket structure instance.
The diagram below shows a QuickWatch on the field values of this structure :
The format of the marshal data packet is revealed. We can see how the raw bytes of the customized part of the marshal data is used to contain the value of the lLongValue field (value 101) of the CImmutableMarshaledObjectReferenceStruct structure.
I have included two other client solutions which are contained inside the VCConsoleClient02 and VCConsoleClient03 folders. We do not have to go through their code as they are each sufficiently similar to VCConsoleClient01. My intention is to demonstrate other methods of marshaling and unmarshaling interfaces across apartments.
The following is a summary of their special features :
Instead of CoMarshalInterface() and CoUnmarshalInterface(), CoMarshalInterThreadInterfaceInStream() and CoGetInterfaceAndReleaseStream() are used. Please refer to MSDN for details on these two APIs.
These two APIs are actually warppers for the elaborate work that we did in VCConsoleClient01 of constructing a stream object and then using it to create a marshal data packet for marshaling and unmarshaling.
VCConsoleClient03 presents a radically different way of managing marshal data packets and proxies. It uses the Global Interface Table (GIT) to store the marshal data packet of an object. Whenever a proxy to the object is required, it is first created in the client apartment, then the marshal data packet from the GIT is retrieved and used to initialize the proxy.
In this example, the reader will see the IMarshal::ReleaseMarshalData() method in action. This method is COM's way of indicating to an object (which has been marshaled) that a marshaled object packet is being destroyed. A marshaled object reference can be considered an additional reference to an object. Hence, a call to ReleaseMarshalData should signal an object to perform reference count state management. This is especially true of objects which have been table-marshaled (i.e. their marshal data packets are stored in a table somewhere, e.g. the Global Interface Table) However it is not significant in our basic example, as will be the case for most "Marshal-by-value" proxies. This is because a "Marshal-by-value" proxy is independent of its original object.
In this first part of a multi-part dissertation on custom marshaling, I have attempted to provide an in-depth analysis of a proxy and a marshal data packet. In part two, we will go deeper by studying more advanced examples of custom marshaling. For the first time, we will touch on the role of stubs in custom marshaling.
Essential COM by Don Box. Published by Addison-Wesley
This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)
General News Suggestion Question Bug Answer Joke Praise Rant Admin
Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.


text:
Frighteningly relevant
"Of course the people dont want war. But after all, it's the leaders of the country who determine the policy, and it's always a simple matter to drag the people along whether it's a democracy, a fascist dictatorship, or a parliament, or a communist dictatorship. Voice or no voice, the people can always be brought to the bidding of the leaders. That is easy. All you have to do is tell them they are being attacked, and denounce the pacifists for lack of patriotism, and exposing the country to greater danger."
- Herman Goering during the Nuremberg trials in 1945
Contact: email@example.com


text:
The Young Earth
Is the earth billions of years old, or just thousands?
Does it Matter?
Did God create our world in six literal days, or did it evolve on its own over countless eons of time? The age of the earth - a key question in the creation/evolution debate - has been portrayed as an issue of science versus religion, but is it really that simple?
The answers to these questions are vital to understanding not just earth science, but also the biblical record.
Dr. John Morris
The Young Earth scientifically examines the evidence to see what the earth actually reveals about itself. This classic and definitive work, newly revised and expanded, demonstrates that the Bible can be trusted in questions of science and history.
The Young Earth offers both compelling scientific analysis and effective biblical exposition. A powerful resource, it also includes a CD with PowerPoint presentations that illustrate such key concepts as salt levels in the oceans, the age of the atmosphere, the accumulation of ocean sediments, and much more.
- Great for presentations and personal study
- Organized for teaching to groups of all sizes
- Illustrated slides illuminate important points
Scientifically, irrefutably, the truth of God's world proclaims the truth of God's Word.


text:
Here's the next tip in our new series of Admissions Tips by the UCLA Anderson MBA Admissions team.
Check back weekly on Tuesdays for a new #TuesdayTip here on our blog, or follow us at @uclaMBA on Instagram and Twitter.
Stay in Touch: Introduce Yourself
Follow the Admissions Team @uclaMBA: Twitter and Instagram
Questions? Contact us at: [email protected]


text:
Dennis and Merna Koula.
CBS News.com Screenshot by Chris Matyszczyk/CNET)
Sometimes, even after a murder conviction, some see reasonable doubt that the conviction was a righteous one.
Such is the case in the murder of Dennis and Merna Koula in La Cross, Wisc, a quiet community.
Their son Eric was found guilty and is currently serving two consecutive life-sentences for the murder of the wealthy couple.
It was Eric Koula who found the body. It was Eric Koula whose alibi didn't stand up. Eric Koula was broke.
Yet as CBS News' "48 Hours" reported, there are some inconsistencies that some can't quite put aside. They include John Christophersen, a special agent at the time with the Wisconsin Department of Justice.
It was said at the trial that Eric Koula treated his father as an ATM. There was a $50,000 check that he cashed right after his parents died.
It was a check from his father. Eric Koula had forged the signature -- something he claimed to have done many times.
But, as his attorney said at the trial: "What sort of an idiot would put a check in the bank the morning after they killed their parents, knowing that bank records are easy to get?"
To some eyes, the murder seemed like a professional hit. No valuables were taken. And there was no DNA evidence to implicate Eric Koula.
Moreover, there was another idea that investigators began to pursue at the time. A neighbor of the Koula's, Steve Burgess, freely admitted that he had received death threats. He was the president of a local bank.
More Technically Incorrect
And, as the CBS News investigation indicated (embedded, but there are some gaps in the audio), if you use Google Earth to locate Burgess' house, you get a surprise.
"48 Hours" correspondent Peter Van Sant said: "In fact, when you Google Earth Steve Burgess' address...the zoom into the house goes to the Koula's house, not to Steve Burgess' house."
Police say they discounted the threatening caller, as they located him and he had an alibi. But then could that individual have hired someone to do any allegedly required dirty work, a person who used Google Earth to go to the wrong house?
This story brings to mind the even more recent case of the alleged murder of Rodrigo Diaz. His friends claim that his GPS had led him to the wrong house.
The owner of that house allegedly became annoyed or threatened by the presence of Diaz and his friends. This resulted in Diaz being shot in what lawyers for the accused, Phillip Sailors, say was a case of self-defense.
The jury in the trial of Eric Koula believed there was enough evidence to convict him.
Others look at the evidence they see on Google Earth and still have their doubts.


text:
I've been drawing the Casanova comic book without Casanova Quinn since I did the sketch below on May 5th. I did the other charactes afterwards, but the damage was already done.
Wednesday, October 31, 2007
I've been drawing the Casanova comic book without Casanova Quinn since I did the sketch below on May 5th. I did the other charactes afterwards, but the damage was already done.
Posted by Fábio Moon at 12:56 AM 0 comments
Tuesday, October 23, 2007
See today what's out tomorrow!
Newsarama has a preview of Casanova 10, which comes out tomorrow. Check it out and see for yourself how strange and bizarre this story-line is turning out to be, which throws me into a different place artistically.
I'm not changing my style or anything, but there are certainly scenes I never thought I would have to draw in a comic.
Here's the first page of said issue:
This is the first issue I did after I started doing Sugarshosk, and I guess the more fluid and somewhat cartoony aspect of Sugarshock went into this as well. One thing is for sure, with every new issue, Casanova is getting more graphic and "designy". Issue 12 should be a blast in that sense.
Wait and see. But, first, go buy Casanova 10 and let me know what you thought of it.
Posted by Fábio Moon at 7:24 PM 6 comments
Thursday, October 18, 2007
Another umbrella on the air.
So, the new Umbrella Academy, issue two of the first series, has arrived. Have you got your copy yet? Tell us what did you think of it. We really want to know, even if it's bad. But, if it's bad, why is it bad, and how would it be good (if you didn't think it was good).
I really liked issue two, but what I can't wait is issue four. December is far away for all the regular readers, and Bá is just doing pages I never imagined possible.
Anyway, it's late here, and tomorrow morning we're leaving for a brazilian convention. We're releasing a new book here, and we'll have a panel on Sunday. Before that, we'll hang around with Eduardo Risso, Giancarlo Berardi and many other fine guests of the festival (such as ourselves). It's the best festival in Brazil to meet the independent artists, and it's a great way to see the fans of comics at large. We'll have our copies of 5 (which are not that many, and we might sell out of our stash), as well as our other cool books.
There are french guests, argentinean guests, american guests and even japanese guests. It's a very good festival, and we hope to meet a lot of new people, and see old friends.
I haven't seen Eduardo in three years.
To sleep now.
Next week, Casanova enters it's countdown as I officially enter "the last three issues" period. (By the way, issue 11 of Casanova is my best issue yet. I'm having a lot of fun with that crazy blue).
Posted by Fábio Moon at 2:16 AM 3 comments
Labels: brazil, casanova, Gabriel Bá, umbrella academy
Tuesday, October 09, 2007
I've seen the future.
Bá finished another Casanova cover, two issues from the issue I'm still at. hopefully, less than two months from now (or just two months from now), I'll be drawing what we talked about when he had this idea.
This is the my future, happening right now, and it's strange how that's the way things work in comics.
Posted by Fábio Moon at 3:01 PM 3 comments
Labels: casanova, Gabriel Bá
Monday, October 08, 2007
All over the net.
Man, I'm late.
I'm still finishing issue 11 of Casanova. I'll finish it this week, and then go right into 12, but still I feel I'm late. Even if I'm my own colorist, my own inker, and so mostly the art is all up to me, still I feel like I'm late.
It sucks to feel like that.
Meanwhile, have you already read the last Sugarshock chapter at DHP? It's online, waiting for you. (as well as the previous chapters and Bá's umbrella story on the first issue of DHP)
Also, you can read the entire Casanova issue 8 online as well, so there's no excuse for anyone if you have no idea what I'm drawing at the moment.
Since the robot story I did for the second 24Seven was also previewed at MySpace, this year all the books I'm currently working on had either previews or entire runs on MySpace.
This is so weird. I like paper. I like to turn the page. I like to read comics in the bathroom. Suddenly, all of my work is primary online. Weird.
Also, it seems the internet sales of our work are starting to grow, as we keep showing up over at the Khepri top 5 list almost every week.
Posted by Fábio Moon at 4:20 PM 1 comments
Labels: casanova, comics, MySpace, Sugarshock, umbrella academy
Tuesday, October 02, 2007
Always with me.
When I started working on Sugarshock, the only thing I knew before getting the first script was that the girls should be cute. Then, there was something about a robot and them all being a band.
Okay, I thought. Simple enough.
After I've done all three chapters, I can say I have drawn stuff I never imagined could be in the same story of the "cute girls in a band with a robot" story, which comes as a lesson to any artist. You should always be prepared to draw everything, and should always be learning how to draw and show new things. The artist should be always curious, asking questions with his or her eyes, learning from what it's around. Look at those trees, aren't they big? They're branches only start all the way up there, twenty feet from the ground. That other tree is fat, and twisted, and has branches from the height of your midget friend up to the top of those other trees you saw first.
Artists must always be looking for the stuff. You know, stuff is a bit vague, but so is looking. Anything could be the stuff, and you should look every where to everything you see.
And then you have to make all this reality look like something you make up when you draw. Or make the stuff you make up look like reality. Or a little of both.
Go, artist.
The next sugarshock chapter is coming. It's the end of the first story. Yet again, I had to draw stuff I haven't drawn before on the story (maybe on my life), and I kept thinking when would I draw those characters again. Maybe I could keep drawing them for myself, as sketches on my notebook.
I remember the first drawings I did of the character. I did them on my notebook, the little one I carry all around with me. So, even if I don't know if I'll ever draw these characters again, they're always with me. They're close.
Of course, you don't need a notebook to keep them close. Nor should you.
But it's nice, isn't it?
Posted by Fábio Moon at 7:15 PM 3 comments
Labels: comics, inspiration, Sugarshock


text:
ETV Visit to Kalite Federal Prison – Meet Birtukan Mideksa
The Ethiopian opposition leader Birtukan Mideksa who was imprisoned for life two times in post election riot of 2005, and liberated two times with with so called "dictatorial amnesty" after recognizing the so called " crime committed "against the irredentist regime.
She was recently pushed to step down from the leadership of her party, Unity for Democracy and Justice (UDJ) Party. This was done first in a pretext to take care of her immediate family and now to pursue higher education in the US. We are hopping the truth will finally come to light once in the US. And the whole world will know the veracity about the dictatorial regime of Melese Zenawie behavior. Birtukan is not the only one after so called «dictatorial pardon» who has been forced to exile.
Birtukan Mideksa Pardoned Again(English news).wmv
Birtukan was scheduled to leave for the US on Saturday, March 19, 2011, accompanied by her daughter. She is expected to arrive first in San Francisco, California, where she has relatives, sources told Fortune.