text:
<!doctype html>

	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<meta name="robots" content="noindex, nofollow">

  <title>Bereavement – Suffolk Libraries</title>

	<meta name="description" content="Books to help your child dealing with grief, loss and sadness after a death.">

  <link rel="stylesheet" href="/css/style.css">
	<link rel="preload" as="font" type="font/woff2" href="/fonts/source-sans-pro-v11-latin-regular.woff2">
	<link rel="preload" as="font" type="font/woff2" href="/fonts/source-sans-pro-v11-latin-italic.woff2">
	<link rel="preload" as="font" type="font/woff2" href="/fonts/source-sans-pro-v11-latin-700.woff2">

Skip to content

Skip to navigation menu

💳 You can now pay online.
	Pay charges now →

Donate

Join

Login

Search

Home

eLibrary

Online events

Help

Contact

    Home

      → Parents carers and children

      → Parenting advice books to help with raising a family

      → Child family problems

      → Bereavement

Bereavement

  Written by Sophie Green · Published Jun 5, 2018

To reserve any of the following books for parents/carers and children dealing with bereavement to your local library, click on the links to reserve them from our online catalogue, visit any of our libraries, or contact us on 01473 351249 or help@suffolklibraries.co.uk

You can sign up for a library card online for free. You can sign your child up for a library card at any age.

Pencil Dog, by Leigh Hodgkinson

"This is a beautifully told, poignant story about memory, remembrance, and how those we love live on in us. The thought-provoking story centres on a little girl who has a pencil dog as a companion. Pencil Dog is imaginative, creative, and always able to turn a rainy day into a time of sunshine. But as time goes on, Pencil Dog gradually grows smaller and smaller, and his drawings become confused."

Grandad's Island, by Benji Davies

"At the bottom of Syd's garden, through the gate and past the tree, is Grandad's house. Syd can let himself in any time he likes. But one day when Syd comes to call, Grandad isn't in any of the usual places. He's in the attic, where he ushers Syd through a door, and the two of them journey to a wild, beautiful island awash in colour where Grandad decides he will remain. So Syd hugs Grandad one last time and sets sail for home. Visiting Grandad's house at the bottom of the garden again, he finds it just the same as it's always been - except that Grandad isn't there anymore.

"Sure to provide comfort to young children struggling to understand loss, Benji Davies's tale is a sensitive and beautiful reminder that our loved ones live on in our memories long after they're gone."

The Ocean Meets the Sky, by Eric & Terry Fan

"Finn lives by the sea and the sea lives by him. Every time he looks out his window it's a constant reminder of the stories his grandfather told him about the place where the ocean meets the sky. Where whales and jellyfish soar and birds and castles float.

"Finn's grandfather is gone now but Finn knows the perfect way to honour him. He'll build his own ship and sail out to find this magical place himself! And when he arrives, maybe, just maybe, he'll find something he didn't know he was looking for."

Dear Grandma Bunny, by Dick Bruna

"Miffy says goodbye to someone very special in this moving addition to the collectible, classic 'Miffy' series. Miffy and her family are really sad. Grandma Bunny has died and it's time for them to say goodbye and thank Grandma Bunny for everything she did for them. Sensitively translated by award-winning poet Tony Mitton, this touching Miffy story celebrates the life and loss of loved ones."

Cloud Forest, by Victoria Turnbull

"A child's Umpa teaches them to read and to follow the words, out the garden gate and all the way to the sea. Every day is a new adventure. They visit castles in the air, feast with friends and sail away on the rains. But then one day, Umpa isn't there.

"This incredibly moving tale from acclaimed author-illustrator Victoria Turnbull speaks of the power of books to bring people together, and to help us remember loved ones when they're no longer with us."

Waiting for Wolf, by Sandra Dieckmann

"Fox and Wolf spend all their perfect days together - talking and laughing for hours, swimming together in the big blue lake, and watching the stars come out, one by one. Until one day, Wolf is gone. This is a moving tale of friendship and loss and learning to carry on."

The Immortal Jellyfish, by Sang Miao

"When a young boy's grandfather dies suddenly, he feels overwhelmed and confused. They will never see each other again. To his delight, they meet again in a dream, where his grandfather takes him to Transfer City, where our departed loved ones live on through our memories.

"In this modern, Eastern telling of the afterlife, death is not an ending, but a new start to life, just like the Immortal Jellyfish which is constantly maturing and then regressing, staying as present as our deceased loved ones do in our memories."

The Rabbit Listened, by Cori Doerrfeld

"When something terrible happens, Taylor doesn't know where to turn. All the animals are sure they have the answer. The chicken wants to talk it out, but Taylor doesn't feel like chatting. The bear thinks Taylor should get angry, but that's not quite right either. One by one, the animals try to tell Taylor how to process this loss, and one by one they fail. Then the rabbit arrives. All the rabbit does is listen, which is just what Taylor needs.

"Whether read in the wake of tragedy or as a primer for comforting others, this is a deeply moving and unforgettable story sure to soothe heartache of all sizes."

Let's Talk About When Someone Dies, by Molly Potter

"When someone dies, we can feel a whole host of different emotions and explaining them to a child isn't so easy. This book uses clear, easy-to-understand language to answer complex questions about death and how a child might feel when someone dies. It covers all manner of tricky subjects with sensitivity and honesty, from what death is to why people die. Each double page spread takes a child through how they might feel, what they might think and how they might behave."

Mum's Jumper, by Jayde Perkin

"If Mum has gone, how do you carry on? Missing her feels like a dark cloud that follows you around, or like swimming to a shore that never comes any nearer. But memories are like a jumper that you can cuddle and wear. And Mum's jumper might be a way to keep her close. A simple, heartfelt and ultimately uplifting book for anyone coping with loss."

Only One of Me: a love letter from Mum and One One of Me: a love letter from Dad, by Lisa Wells, Michelle Robinson, Catalina Echeverri & Tim Budgen

"The Only One of Me project grew from Lisa's determination to leave a lasting legacy for her daughters and her desire to help other families rally against the difficulties of loss. Her activities have raised thousands for charity and huge public support through JustGiving has enabled the publication of these beautiful books."

Life and I: a story about death, by Elisabeth Helland Larson & Marine Schneider

"Rosy-cheeked and wrapped in blue, with a flower in her hair, Death rides a pink bike. Death, a green-eyed little girl in this pastel world, visits small animals with soft fur and big animals with sharp teeth. She lingers with a kindly grandmother as they knit one last scarf together. She wanders through surroundings of gentle beauty and she tells us who she is."

Goodbye Mog, by Judith Kerr

"Mog was tired - dead tired. She thought, 'I want to sleep for ever'. And so she did. But a little bit of her stayed awake to see what would happen next. So Mog keeps watch over the upset Thomas family, who miss her terribly, and she wonders how they will ever manage without her."

If All the World Were…, by Joseph Coelho & Allison Colpoys

"A moving, lyrical picture book about a young girl's love for her granddad and how she copes when he dies, written by poet and playwright Joseph Coelho. This powerful and ultimately uplifting text is the ideal way to introduce children to the concept of death and dying, particularly children who have lost a grandparent."

Badger's Parting Gifts, by Susan Varley

"Badger was dependable, and always ready to lend a helping paw. He was very old and wise, and knew that he would die soon. Susan Varley wrote this book to help children overcome the death of loved ones, and it has since become a children's classic."

Always and Forever, by Debi Gliori & Alan Durant

"When Fox dies, the rest of his family are distraught. How will Mole, Otter and Hare go on without their beloved friend? But months later, Squirrel reminds them all of how funny Fox used to be, and they all realize that Fox is still there in their hearts and memories."

Goodbye Grandma, by Melanie Walsh

"When a little boy is told that his grandma has died, he isn't really sure what death means. In this reassuring lift-the-flap book with bold and colourful illustrations, he asks his mum important questions about death and bereavement. Why do people have to die? What happens to them once they are dead? What can he do to remember his grandma?"

Missing Mummy, by Rebecca Cobb

"This title deals with the loss of a parent from a child's point of view. Perfectly pitched text and evocative artwork explore the many emotions a bereaved child may experience, from anger to guilt and from sadness to bewilderment. And importantly, the book also focuses on the positive, the recognition that the child is still part of a family."

Are You Sad, Little Bear? A book about learning to say goodbye, by Rachel Rivett & Tina Macnaughton

"This charmingly illustrated book will help young children in times of bereavement, loss, or change, gently exploring the reasons for saying goodbye and giving reassurance that goodbye doesn't mean the end of things."

Saying Goodbye to Uncle Joe: what to expect when someone you love dies, by Nancy Loewen & Christopher Lyles

"When someone you love dies, you might feel sad, lonely, and confused. What do you do? No matter who your loved one was, this story can help you through the tough times."

Duck, Death and the Tulip, by Wolf Erlbruch

"In a strangely heart-warming story, a duck strikes up an unlikely friendship with Death. Death, Duck and the Tulip will intrigue, haunt and enchant readers of all ages. Simple, unusual, warm and witty, this book deals with a difficult subject in a way that is elegant, straightforward, and thought-provoking."

I Miss You: a first look at death, by Pat Thomas & Lesley Harker

"This book helps young children come to terms with the loss of loved ones, through examples such as the death of a grandparent or pet."

The Memory Tree, by Britta Teckentrup

"Fox has lived a long and happy life in the forest. One day, he lies down in his favourite clearing, takes a deep breath and falls asleep forever. Before long, Fox's friends begin to gather in the clearing. One by one, they tell stories of the special moments that they shared with Fox. And, as they share their memories, a tree blooms, big and strong, eventually watching over all the friends, just as Fox did when he was alive.

"This gentle and comforting tale celebrates life and the memories that are left behind when a loved one dies."

When Dinosaurs Die: a guide to understanding death, by Laurie Krasny Brown & Marc Brown

"Explaining the concept of death to a child can often be an upsetting experience. This book deals with the issue in a healthy, open manner, addressing children's fears and curiousities head-on, therefore making the grieving process as painless as possible."

Michael Rosen's Sad Book, by Michael Rosen

"We all have 'sad stuff' to deal with in life. What makes Michael Rosen most sad is thinking about his son, Eddie, who died. In this book he writes about his sadness, how it affects him, and some of the things he does to try to cope with it."

The Pond, by Nicola Davies & Cathy Fisher

"The Pond is a touching picture book about a young boy and his family, overcoming the loss of his father through a small pond in the garden. This colourful, emotional book is filled with natural imagery and will teach children not only about death and loss, but the importance of the natural world."

The Scar, by Charlotte Moundlic & Oliver Tallec

"With tenderness, touches of humour and unflinching emotional truth, Charlotte Moundlic captures the loneliness of grief through the eyes of a child, rendered with sympathy and charm in Olivier Tallec's expressive illustrations."

Heaven, by Nicholas Allan

"A touching tale of a child's final farewell to her opinionated dog who goes off to heaven."

The Copper Tree, by Hilary Robinson & Mandy Stanley

"When Olivia's teacher, Miss Evans, dies, the children at her school are encouraged to think of everything that reminds them of her. This book is about love and legacy and will help children understand that while sadness is an inevitable part of grief, death is not necessarily the end for what is left behind can be everlasting."

Charlotte's Web, by E. B. White & Garth Williams

"This is the tale of how a little girl named Fern, with the help of a friendly spider, saved her pig, Wilbur, from the usual fate of nice fat little pigs."

The Cat Mummy, by Jacqueline Wilson

"I have a pet. I love her lots, but she is very, very boring. Even so, Mabel, my tabby cat, is a good listener. Miss Smith, my teacher, told us that in ancient Egypt people worshipped cats. Mabel could have been a cat goddess in those days."

The Many Worlds of Albie Bright, by Christopher Edge

"When Albie's mum dies, it's natural he should wonder where she's gone. His parents are both scientists and they usually have all the answers. Dad mutters something about Albie's mum being alive and with them in a parallel universe. So Albie finds a box, his mum's computer and a rotting banana, and sends himself through time and space to find her."

Clownfish, by Alan Durant

"Dak's dad has been dead for seven days when suddenly he reappears. He's the same in almost every way, with one startling exception: Dad has turned into a clownfish, and now lives in a tank at their local aquarium. Dak is delighted by the news - he has Dad back, even if he isn't quite as he was before.

"Deciding to keep Dad's transformation a secret, Dak visits him at the aquarium as often as he can, and ends up spending so much time there that they offer him a job. This is how he comes to meet Violet, the owner's prickly but kindhearted niece; when the aquarium is threatened with closure, the pair must work together to save it. For Dak, the stakes couldn't be higher - after all, if the aquarium shuts down, what will happen to the fish?"

Superpowerless, by Chris Priestley

"Life hasn't been easy recently for David. His father died just a couple of years ago, he has a fractious relationship with his mum, and has fallen out with his best friend. But David has a secret, which he hasn't told anyone: he has superpowers. He can soar through the air, he has superhearing, he feels and hears everything super-keenly. So life should be easier, then, shouldn't it?"

A Monster Calls, by Patrick Ness & Siobhan Dowd

"The monster showed up just after midnight. But it isn't the monster Conor's been expecting. He's been expecting the one from his nightmare, the one he's had nearly every night since his mother started her treatments. The monster in his back garden, though, this monster, is something different. Something ancient, something wild."

See also:

Child Bereavement UK

Cruse Bereavement Care - Children

Winston's Wish

Young Minds - Grief and Loss

Sophie Green

I work for the Suffolk Libraries stock team. I also write children's fiction, short stories and comedy. Visit my website.

Parents, carers and children

Home

New in & book ideas

Parenting advice: Books to help with raising every sort of family

Bookstart and storytime resources

Getting the best out of the library service

Dyslexia and Irlen syndrome

Library cards and welcome packs for children in care

Let's Talk Reading

Do it online

Search & reserve

Login & renew

eLibrary

Get a library card

Support your library

We're a charity that makes life in Suffolk better for thousands of people.

Donate

Contact us

01473 351249

help@suffolklibraries.co.uk

Social media

Facebook

YouTube

Twitter

Instagram

LinkedIn

Email newsletter

Sections

eLibrary

Libraries

Mobile & home service

Help using the service

Recommendations & reviews

Events & activities

Research & reference

Parents, carers & children

Teachers & home educators

Health & wellbeing

Help with reading & literacy

Work & benefits

Business & room hire

BLOC

Music & Drama Library

News

Jobs

Volunteering

About us

Privacy & cookies

Find out what cookies we use and how we use your data: our privacy policies.

Privacy notice for job applicants

Suffolk Libraries HMRC charity number XT34476. Registered company number IP031542.


Garage Door Repair in Mounds View, MN is a family owned and operated company that has been installing and repairing overhead doors for the Minneapolis-St. Paul Metro Area for over 20 years. We offer a great blend of quality and service on garage door installation and repair by offering competitive pricing on top brands.
Our team of certified technicians always standing by and ready to work on your garage door day or night, rain or shine. Our techs can be at your home quickly and will always arrive on time.
Our professional telephone operators are available to take your call 24 hours a day, 7 days a week, and do not charge extra for nights and weekends. Emergency services are also available for all of our customers. Our flexible hours make it easier for us to help you with your garage door problems anytime you need us.
Our company is available to solve all of your garage door needs anywhere in Hennepin County whenever you need us. We also provide services for Dakota, Anoka,Washington, and Ramsey Counties as well.
Our technicians can be on your doorstep and ready to get to work within an hour from the time you call. It doesn't matter if you live near Townsedge Terrace or along Highway 10 Service Road.
Occasionally overhead door parts become broken beyond repair. Whenever you are in the market for a new garage door, our company is the perfect ones for the job. We offer custom door options that will beautifully match the overall look and style of your home. Our installation services are affordable and we get the job done fast.
All of our custom overhead door installations include rust resistant hardware and longer lasting springs. We also offer a lifetime warranty on all of our work so you will not have to worry about your overhead door again.
After many years of everyday usage along with exposure to the weather your garage door parts can become damaged. Panels can become broken, springs can become rusty, and doors can come off of their tracks.
When you need the parts for your overhead door repaired we are the perfect company to hire. We can get the repairs done quickly and still keep it very affordable for you. It is important for us to deliver a job well done in a timely manner so you can get back to more important things in your life.
Plus take advantage of our $75 special on any garage door repairs with the purchase of parts.
It is our company's ultimate goal to provide you with quality overhead door services at a low price. We promise that you will be 100% satisfied with the service you receive from us.
Call us for all of your overhead door problems today.
Our team is honored to serve our customer's garage door needs Mounds View, Minnesota of Ramsey County. This growing area is a suburb of the Minneapolis-St. Paul area and we frequent the surrounding neighborhoods. We employ certified technicians that can get to your location and provide garage door service within an hour of your call. Our company is pleased to be situated so prominently as a business in this growing area.
Our team is willing and able to get to your location quickly. We don't want you to have to wait and so we the travel the areas around Mounds View via US Highway 10 and Interstate Highway 35W. Regardless of your location, we are able to get to you and give you top notch service.
Leave the work to our trusted team of technicians while you and your family enjoy the sights of Mounds View. The opportunities are endless, but we suggest you check places such as The Mermaid and Zero Gravity Trampoline Park for a fun time in Mounds View. We will handle your garage door needs in the meantime.


I HAVE A PLAN, HOW ABOUT NOW? SWEET PLAN, GOT IT.
To GOD, I GOD YA. HOW MANY "NOWS" ARE BEING PRESENT? ALL OF THEM, EXACTLY.
What happens when a Living God AWAKENS on EARTH HEART, CHEERS.
SIMPLE fact, You have to love yaself before you can love for Love for LOVE, CREATION.
CREATION gotcha, you get CREATION.
Answer this question and you are GOD: ARE YOU BREATHING? WE GOT YOU.
OH YEAH, I GET VERY EXCITED BY GOD BEING LOVE IN EVERYONE.


text:
Zec's World & Moans
I won't let the election results make me unwell!
1 month ago Zechariah Richardson
It is 7am and I am awake and the first thing I do is to check BBC news for the...
Why is free broadband needed?
2 months ago Zechariah Richardson
So Labour has pledged free broadband for all and as you can imagine, it has caused a debate with some...
As a disabled person, how should I vote in the 2019 General Election?
First off I have to say that no one can tell you how to vote and I definitely can't! I...
The Tories can't lose! Why, who would vote Conservative?
I keep hearing The Tories can't lose! Why, who would vote Conservative? I really don't understand how the people of...
So today brings the news that the Conservatives have managed to keep power and do so without having the Lib...
Disability Talk
What about disability?
All we hear lately is election, election, election! Its on the news, its on chat shows, its on every newspaper...
Email to various local political candidates.
I have the various election communications from all parties except Conservative and I really think that is because they know...
I'm voting for
I have been very undecided about who to vote for in the general election. My dilemma has been whether to...
The future scares me!
So Cameron has officially announced that the general election will take place on the 7th May and its a battle...
Who gets my vote?
On Thursday 7th of May I along with over a million other disabled people will get to vote, nothing new...

redpajama_set_name: RedPajamaCommonCrawl


Options With Learning Limited deliver exceptional learning solutions.
Integrity We only make commitments we believe we can keep. We only accept work where we will truly add value for our client.
Enjoyment We believe people learn best when they are having fun. We know our people are most effective when they are enjoying what they do.
Learning is life-long. We aim to impart our knowledge to others. We seek to add to our wisdom by combining ideas that have stood the test of time with innovative thinking.
Relationships We like working with people and believe in partnerships based on mutual honesty, fair treatment, teamwork and respect.
Energy to excite their audience and stimulate learning.
Experience of training thousands of people from all backgrounds across a range of organisations both in the private and voluntary sector. They have also managed staff, volunteers and complex projects themselves.
Expertise in a range of disciplines.
Ethos to creatively develop interactive and fun learning experiences that also powerfully achieve our client's desired outcomes.
Extensive Networks from which we can source experts who can complement our skills to achieve the right solution for our clients.
Founded in 1997 by George Athorn, we are based near Newbury in Berkshire but help clients across England and beyond.


text:
The Long and Fascinating History of Screen Printed Shirts
by Content Team H
If you've ever been to a beach boardwalk, you've probably seen about a million sweatshirts with the same logo printed on them.
But how old exactly is the screen printing process?
It dates back farther than you'd think, and it is evidence of the ever-improving artistic cycle.
If you want to learn how your favorite screen printed shirts came into existence, check out our detailed history below!
The Origins of Screen Printing
Screen printing really has its roots in China, during the era of the Song Dynasty (960-1279 AD). It originally was done by using brushes to push the ink through stencils onto pulled silk. It was often done to make specialized masks, and the human hair that glued the pieces of the mask together allowed for perfect ink passage.
It wasn't long before other Asian countries, like Japan, started adopting the practice. The success that Japanese textiles had at World Fairs inspired European craftsmen to try out the process.
Screen printing made its way to France in the 1600's. It was in France that they began stretching the silk over a frame to keep the fabric taut and in place. It started being introduced and used more in Europe in the 1700's.
Modern Screen Printed Shirts History
The first modern takes on screen printing began around 1850 at the wake of the textile printing industry. In 1907, Samuel Simon was using stencils to draw designs onto bolting cloth stretched on frames and then using brushes to create the printing process through the mesh.
In 1920 Albert Kosloff gave a screen printing presentation in Berlin. He used essentially the same method as Samuel Simon, except he used a squeegee to transfer the ink rather than brushes. Soon after he moved to the United States to become one of the first individuals to popularize the process in the U.S.A.
Screen printing began taking off commercially in the United States in the 1910's, as a way of printing advertisements and signs.
In the 1960s, the civil rights movement prompted the process to move to clothing. Shirts provided the perfect canvas for people who wanted to share a message and convey their feelings through fashion. It was also adopted by contemporary artists, such as Andy Warhol. His portraits of Marilyn Monroe are just one example among many.
The 1970s and 1980s gave rise to caps and shirts plastered with brand names and characters from popular television shows.
Screen printing continued to improve in the 1990s and up until the present day, and it shows through the fashion trends. Now you can find just about any word or design on screen printed shirts. Not to mention, it's easy to custom order your own from countless companies.
An Ever-Improving Method
Screen printing has been around for centuries, and it doesn't look like it's going away any time soon. With the ability to transfer virtually any design you can think of onto screen printed shirts, it's easy to see why it has blown up in the past 100 years.
For more information on screen printing and custom t-shirts, check out the rest of our blog or contact us to get a quote for your next order!
Content Team H
Key Benefits of Using Promotional Products for Your Business
Benefits of Custom Screen-Printed T-Shirts This Winter
Ways Screen Printed T-Shirts Are Great for Fundraisers
Benefits of Custom Designed, Screen-Printed T-Shirts


I may have been too hasty.
After my last post, the family was in an uproar.
I can see his point…..an acorn nativity does score high marks for creativity…..but in the overall competitiion…..
….some may feel that this pillow made by one of my sisters gave the nativity a run for its money.
Some might think burlap + tiny tea-stained cotton balls = mirror ball trophy.
After a second look, I thought to myself…..was I too hasty to claim victory….too overconfident in the fabulousness of my gift….too quick to decide and boldly declare myself the winner….
…..for you see….the other entries had their selling points….
…..but when the dust clears and the Christmas wrapping settles….we all know….
…..the flatware takes the cake.
I love silver for collecting.
I love silver in a white urn.
I love silver with dinner…..but most of all….
I love silver for wearing.
Each year at Christmas we have a homemade gift exchange. This year I gave my family necklaces created from vintage silver spoons. We simply detached the spoon from the handle, sanded it down and stamped it.
There were many entries this year, including a burlap pillow adorned with tiny, tea-stained cottonballs and a nativity set created out of acorns.
It was a grueling and arduous contest, but in the end….
…..I declared myself the winner.
Who could top a necklace that started out life as a piece of vintage flatware?
So when the tissue and ribbons and wrapping paper were cleared away….I just knew somewhere there would be a mirror ball trophy calling my name…..
….if I could only get the nativity set and the pillow to agree.
PS If you have any questions about how I made these, feel free to e-mail me at thistlewoodfarms@yahoo.com.
PPS Here's the link to the pinterest inspiration.
Some people collect 1960's Italian glass decanters.
As for me, I am an avid, undying fan of vintage silverware.
….forks, spoons, soup ladles, servers, pickle forks, sugar spoons, iced teaspoons, meat forks, ice cream spoons and on and on.
I think each piece of silverware tells a story.
Stories of dinner parties and ladies in flapper outfits, tinkling bells for the next course.
Stories of dignitaries and newlyweds and special occasions.
And just like in days of old, I want my silver to tell its own stories…stories for my children and grandchildren.
And oh…..the stories my forks and spoons could tell….
….but enough about my silverware….
PS What do you collect?
PSS Wishing you a Merry Christmas Happy New Year!
So it has already been established…..
I'm not the best at adding arrows to my pictures. I can draw an imaginary arrow, but real arrows on pictures…..I leave that to the experts.
Enter Andrea from A Cottage Market …..
She is a creative genius, an incredibly positive fellow blogger, and a talented writer.
She can make fabulous spinach bread.
She can make the cutest glitter bird ornament.
But most importantly she has offered to be the official arrow creator for this blog. Any time there is an arrow to be produced or created she is on the task.
I cannot emphasize enough, the importance of having an official arrow creator on staff.
On behalf of arrowless blogs everywhere, I salute you.
I wish I knew how to draw an arrow on a picture.
If I could draw an arrow, I would add an arrow to this picture of the kitchen to show you where the butler's pantry is.
Can you imagine an arrow?
Look at the picture of the kitchen and then (with your mind, of course because I don't know how to draw the aforementioned arrow) and draw a line pointing to the doorway between the hutch and the cabinet.
You draw an arrow much better than I ever could anyway.
So now that we have gotten this arrow business straightened out….
I would like to introduce you to the butler's pantry.
Let's put it this way….
Soon my "Silent Night" will become "Joy to the World" and the wonder of Christmas will fill the rooms and rooftops here.
May the gladness of Christmas bring you hope.
May the warmth of Christmas grant you love.
I wish I were here.
I wish I were sitting here with my twin girls and a cup of hot chocolate.
If I were sitting here I might be inspired.
Inspired to read "A Christmas Carol" or make gingerbread cookies (which, if you know me, would be a great inspiration indeed).
Inspired to wrap packages with ribbons and bows.
As I read blogs yesterday….all over blogland people were sitting by the fire and knitting and showing pictures of beautifully wrapped packages. There were pictures of delicious treats and tables that were ready for guests. It seemed like all of my fellow blog friends were calmly sitting down to a cup of tea.
Ready and waiting for Christmas to arrive.
You see, I'm so far behind and I'm worried I'm not going to catch up.
My list is too long and the time is too short.
Even though, in my heart I'm wishing I was just sitting here.
PS I just added a facebook page if you want to follow along. It's listed as Thistlewood Farm.
I am a thrifter, a painter, a glitterer, a sander and a trash spotter.
I am a mother of four, a wife, a friend, a maid, a restaurant take-out orderer, and a chauffeur.
but I am not a professional decorator.
As a matter of fact, I shudder at what a professional decorator would say if they ever visited my home.
So, in honor of professional decorators everywhere, I decided to come up with a list….
A list of the top five things a decorator might say if they ever dropped by for a visit.
5. Are those pumpkins next to your nativity scene?
4. Is that vinyl on those plates? Really. That is so 2010.
3. Last time I checked silver trays belong on the side table, not on trees.
2. Lowe's called and they want their drop cloths back from your windows.
1. You got that bench out of the trash?
Seriously….what's next….old windows you turn into chalkboards?
Professional decorators everywhere, I salute you.
Just please don't stop by for a visit.
I actually think I understated it a bit.
Burlap is a wonder fabric.
You can paint on it….like my sister does.
Or you could just use burlap to….
….wish someone special a Merry Christmas!
P.S. For the purposes of full disclosure, I think it is important to reveal that I was not compensated by burlap in anyway for this overwhelming endorsement of its versatility and general fabulousness.
Why do you think that people count the Christmas trees in their homes?
If you haven't noticed, the number of Christmas trees in a person's home is definitely a hot topic of conversation on the party circuit this year.
"Why?" is the question I want to ask when they ask me.
I think to myself, sometimes it's not the number, but the simplicity of one.
One extra-special tree that glitters and glistens and signifies all of the wonder and joy of the Christmas season.
One special tree with glittered birds and tiny nests and mirrored snowflakes.
If I were stranded on a desert island and I could only take one tree along for my desert island stay, it would be this one.
And I would contentedly lay on a sandy beach and gaze up into its glittered branches.
So the next time you are at a Christmas party and you are asked that age old question about your Christmas trees.
Just smile to yourself and say, "I have one….


109	 Effectiveness of Telephone and Postcard Reminders for the Influenza Vaccination: A Study in the Elderly Who Have Visited a Family Practice Center in a Tertiary Care Hospital.
Korean J Prev Med. 2000;33(1):109-116.


text:
package scala.slick.ast

import scala.slick.SlickException
import slick.lifted.ShapedValue
import slick.util.{Logging, SimpleTypeName}
import TypeUtil.typeToTypeUtil
import Util._

/** An object that can produce a Node. */
trait NodeGenerator {
  def nodeDelegate: Node
}

/**
 * A node in the query AST.
 *
 * Every Node has a number of child nodes and an optional type annotation.
 */
trait Node extends NodeGenerator {
  /** All child nodes of this node. Must be implemented by subclasses. */
  def nodeChildren: Seq[Node]

  /** Names for the child nodes to show in AST dumps. Defaults to a numbered
    * sequence starting at 0 but can be overridden by subclasses to produce
    * more suitable names. */
  def nodeChildNames: Iterable[String] = Stream.from(0).map(_.toString)

  protected[this] def nodeRebuild(ch: IndexedSeq[Node]): Node

  /** Apply a mapping function to all children of this node and recreate the
    * node with the new children. If all new children are identical to the old
    * ones, this node is returned. */
  final def nodeMapChildren(f: Node => Node): Node =
    mapOrNone(nodeChildren)(f).map(nodeRebuild).getOrElse(this)

  def nodeDelegate: Node = this

  override def toString = this match {
    case p: Product =>
      val cln = getClass.getName.replaceFirst(".*\\.", "")
      val n = if(cln.endsWith("$")) cln.substring(0, cln.length-1) else cln.replaceFirst(".*\\$", "")
      val args = p.productIterator.filterNot(_.isInstanceOf[Node]).mkString(", ")
      if(args.isEmpty) n else (n + ' ' + args)
    case _ => super.toString
  }

  /** The intrinsic symbol that points to this Node object. */
  final def nodeIntrinsicSymbol = new IntrinsicSymbol(this)

  private var _nodeType: Type = UnassignedType

  /** The current type of this node */
  def nodeType: Type = _nodeType

  /** Return this Node with a Type assigned. This may only be called on
    * freshly constructed nodes with no other existing references, i.e.
    * creating the Node plus assigning it a Type must be atomic. */
  def nodeTyped(tpe: Type): this.type = {
    if(_nodeType != UnassignedType && tpe != UnassignedType)
      throw new SlickException("Trying to reassign node type -- nodeTyped() may only be called on freshly constructed nodes")
    _nodeType = tpe
    Node.logType(this)
    this
  }

  def nodeBuildTypedNode(newNode: Node, newType: Type): Node =
    if(newNode ne this) newNode.nodeTyped(newType)
    else if(newType == nodeType) this
    else nodeRebuildWithType(newType)

  def nodeRebuildWithType(tpe: Type): Node = nodeRebuild(nodeChildren.toIndexedSeq).nodeTyped(tpe)

  /** Rebuild this node and all children with their computed type */
  def nodeWithComputedType(scope: SymbolScope): Node
}

object Node extends Logging {
  def apply(o: Any): Node =
    if(o == null) LiteralNode(null)
    else if(o.isInstanceOf[WithOp] && (o.asInstanceOf[WithOp].op ne null)) Node(o.asInstanceOf[WithOp].op)
    else if(o.isInstanceOf[NodeGenerator]) {
      val gen = o.asInstanceOf[NodeGenerator]
      if(gen.nodeDelegate eq gen) gen.nodeDelegate else Node(gen.nodeDelegate)
    }
    else if(o.isInstanceOf[Product])
      ProductNode(o.asInstanceOf[Product].productIterator.map(apply).toSeq)
    else throw new SlickException("Cannot narrow "+o+" of type "+SimpleTypeName.forVal(o)+" to a Node")

  private def logType(n: Node): Unit =
    logger.debug("Assigned type "+n.nodeType+" to node "+n)
}

trait TypedNode extends Node with Typed {
  override def nodeType: Type = {
    val t = super.nodeType
    if(t eq UnassignedType) tpe else t
  }
  def nodeWithComputedType(scope: SymbolScope): Node =
    nodeMapChildren(_.nodeWithComputedType(scope))
}

/** An expression that represents a conjunction of expressions. */
trait ProductNode extends Node { self =>
  override def toString = "ProductNode"
  protected[this] def nodeRebuild(ch: IndexedSeq[Node]): Node = new ProductNode {
    val nodeChildren = ch
  }
  override def nodeChildNames: Iterable[String] = Stream.from(1).map(_.toString)
  override def hashCode() = nodeChildren.hashCode()
  override def equals(o: Any) = o match {
    case p: ProductNode => nodeChildren == p.nodeChildren
    case _ => false
  }
  def nodeWithComputedType(scope: SymbolScope): Node = {
    val this2 = nodeMapChildren(_.nodeWithComputedType(scope))
    nodeBuildTypedNode(this2, ProductType(this2.nodeChildren.map(_.nodeType)(collection.breakOut)))
  }
}

object ProductNode {
  def apply(s: Seq[Node]): ProductNode = new ProductNode {
    val nodeChildren = s
  }
  def unapply(p: ProductNode) = Some(p.nodeChildren)
}

/** An expression that represents a structure, i.e. a conjunction where the
  * individual components have Symbols associated with them. */
final case class StructNode(elements: IndexedSeq[(Symbol, Node)]) extends ProductNode with DefNode {
  override def toString = "StructNode"
  override def nodeChildNames = elements.map(_._1.toString)
  val nodeChildren = elements.map(_._2)
  override protected[this] def nodeRebuild(ch: IndexedSeq[Node]) =
    new StructNode(elements.zip(ch).map{ case ((s,_),n) => (s,n) }).nodeTyped(nodeType)
  override def hashCode() = elements.hashCode()
  override def equals(o: Any) = o match {
    case s: StructNode => elements == s.elements
    case _ => false
  }
  def nodeGenerators = elements
  override def nodePostGeneratorChildren = Seq.empty // for efficiency
  protected[this] def nodeRebuildWithGenerators(gen: IndexedSeq[Symbol]): Node =
    copy(elements = (elements, gen).zipped.map((e, s) => (s, e._2))).nodeTyped(nodeType)
  override def nodeWithComputedType(scope: SymbolScope): Node = {
    val this2 = nodeMapChildren(_.nodeWithComputedType(scope)).asInstanceOf[StructNode]
    nodeBuildTypedNode(this2, StructType(this2.elements.map { case (s, n) => (s, n.nodeType) }))
  }
}

/** A literal value expression. */
trait LiteralNode extends NullaryNode with TypedNode {
  def value: Any
}

object LiteralNode {
  def apply(tp: Type, v: Any): LiteralNode = new LiteralNode {
    val value = v
    val tpe = tp
    def nodeRebuild = apply(tp, v)
  }
  def apply[T](v: T)(implicit tp: StaticType[T]): LiteralNode = apply(tp, v)
  def unapply(n: LiteralNode): Option[Any] = Some(n.value)
}

trait BinaryNode extends Node {
  def left: Node
  def right: Node
  lazy val nodeChildren = Seq(left, right)
  protected[this] final def nodeRebuild(ch: IndexedSeq[Node]): Node = nodeRebuild(ch(0), ch(1))
  protected[this] def nodeRebuild(left: Node, right: Node): Node
}

trait UnaryNode extends Node {
  def child: Node
  lazy val nodeChildren = Seq(child)
  protected[this] final def nodeRebuild(ch: IndexedSeq[Node]): Node = nodeRebuild(ch(0))
  protected[this] def nodeRebuild(child: Node): Node
}

trait NullaryNode extends Node {
  val nodeChildren = Nil
  protected[this] final def nodeRebuild(ch: IndexedSeq[Node]): Node = nodeRebuild
  protected[this] def nodeRebuild: Node
}

/** An expression that represents a plain value lifted into a Query. */
final case class Pure(value: Node) extends UnaryNode {
  def child = value
  override def nodeChildNames = Seq("value")
  protected[this] def nodeRebuild(child: Node) = copy(value = child)
  def nodeWithComputedType(scope: SymbolScope): Node = {
    val ch = child
    val ch2 = ch.nodeWithComputedType(scope)
    val newType = CollectionType(CollectionTypeConstructor.default, ch2.nodeType)
    if((ch eq ch2) && (newType == nodeType)) this else copy(ch2).nodeTyped(newType)
  }
}

/** Common superclass for expressions of type
  * (CollectionType(c, t), _) => CollectionType(c, t). */
abstract class FilteredQuery extends DefNode {
  def generator: Symbol
  def from: Node
  def nodeGenerators = Seq((generator, from))
  def nodeMapFrom(f: Node => Node) = {
    val fr = from
    nodeMapChildren(n => if(n eq fr) f(n) else n)
  }
  def nodeMapOthers(f: Node => Node) = {
    val fr = from
    nodeMapChildren(n => if(n ne fr) f(n) else n)
  }
  override def toString = this match {
    case p: Product =>
      val n = getClass.getName.replaceFirst(".*\\.", "").replaceFirst(".*\\$", "")
      val args = p.productIterator.filterNot(n => n.isInstanceOf[Node] || n.isInstanceOf[Symbol]).mkString(", ")
      if(args.isEmpty) n else (n + ' ' + args)
    case _ => super.toString
  }
  def nodeWithComputedType(scope: SymbolScope): Node = {
    val fr = from
    val fr2 = fr.nodeWithComputedType(scope)
    val genScope = scope + (generator -> fr2.nodeType.asCollectionType.elementType)
    val n2 = nodeMapChildren { ch =>
      if(ch eq fr) fr2 else ch.nodeWithComputedType(genScope)
    }
    nodeBuildTypedNode(n2, n2.nodeChildren.head.nodeType)
  }
}

object FilteredQuery {
  def unapply(f: FilteredQuery) = Some((f.generator, f.from))
}

/** A .filter call of type
  * (CollectionType(c, t), Boolean) => CollectionType(c, t). */
final case class Filter(generator: Symbol, from: Node, where: Node) extends FilteredQuery with BinaryNode {
  def left = from
  def right = where
  override def nodeChildNames = Seq("from "+generator, "where")
  protected[this] def nodeRebuild(left: Node, right: Node) = copy(from = left, where = right)
  override def nodeDelegate =
    if(where match { case LiteralNode(true) => true; case _ => false }) left
    else super.nodeDelegate
  protected[this] def nodeRebuildWithGenerators(gen: IndexedSeq[Symbol]) = copy(generator = gen(0))
}

/** A .sortBy call of type
  * (CollectionType(c, t), _) => CollectionType(c, t). */
final case class SortBy(generator: Symbol, from: Node, by: Seq[(Node, Ordering)]) extends FilteredQuery {
  lazy val nodeChildren = from +: by.map(_._1)
  protected[this] def nodeRebuild(ch: IndexedSeq[Node]) =
    copy(from = ch(0), by = by.zip(ch.tail).map{ case ((_, o), n) => (n, o) })
  override def nodeChildNames = ("from "+generator) +: by.zipWithIndex.map("by" + _._2)
  protected[this] def nodeRebuildWithGenerators(gen: IndexedSeq[Symbol]) = copy(generator = gen(0))
  override def toString = "SortBy " + by.map(_._2).mkString(", ")
}

final case class Ordering(direction: Ordering.Direction = Ordering.Asc, nulls: Ordering.NullOrdering = Ordering.NullsDefault) {
  def asc = copy(direction = Ordering.Asc)
  def desc = copy(direction = Ordering.Desc)
  def reverse = copy(direction = direction.reverse)
  def nullsDefault = copy(nulls = Ordering.NullsDefault)
  def nullsFirst = copy(nulls = Ordering.NullsFirst)
  def nullsLast = copy(nulls = Ordering.NullsLast)
}

object Ordering {
  sealed abstract class NullOrdering(val first: Boolean, val last: Boolean)
  final case object NullsDefault extends NullOrdering(false, false)
  final case object NullsFirst extends NullOrdering(true, false)
  final case object NullsLast extends NullOrdering(false, true)

  sealed abstract class Direction(val desc: Boolean) { def reverse: Direction }
  final case object Asc extends Direction(false) { def reverse = Desc }
  final case object Desc extends Direction(true) { def reverse = Asc }
}

/** A .groupBy call. */
final case class GroupBy(fromGen: Symbol, byGen: Symbol, from: Node, by: Node) extends BinaryNode with DefNode {
  def left = from
  def right = by
  override def nodeChildNames = Seq("from "+fromGen, "by "+byGen)
  protected[this] def nodeRebuild(left: Node, right: Node) = copy(from = left, by = right)
  protected[this] def nodeRebuildWithGenerators(gen: IndexedSeq[Symbol]) = copy(fromGen = gen(0), byGen = gen(1))
  def nodeGenerators = Seq((fromGen, from), (byGen, by))
  override def toString = "GroupBy"
  def nodeWithComputedType(scope: SymbolScope): Node = {
    val fr = from
    val fr2 = fr.nodeWithComputedType(scope)
    val fromType = fr2.nodeType.asCollectionType
    val b = by
    val b2 = b.nodeWithComputedType(scope + (fromGen -> fromType.elementType))
    val newType = CollectionType(fromType.cons, ProductType(IndexedSeq(b2.nodeType, CollectionType(CollectionTypeConstructor.default, fromType.elementType))))
    if((fr eq fr2) && (b eq b2) && newType == nodeType) this
    else copy(from = fr2, by = b2).nodeTyped(newType)
  }
}

/** A .take call. */
final case class Take(from: Node, num: Int, generator: Symbol = new AnonSymbol) extends FilteredQuery with UnaryNode {
  def child = from
  override def nodeChildNames = Seq("from "+generator)
  protected[this] def nodeRebuild(child: Node) = copy(from = child)
  protected[this] def nodeRebuildWithGenerators(gen: IndexedSeq[Symbol]) = copy(generator = gen(0))
}

/** A .drop call. */
final case class Drop(from: Node, num: Int, generator: Symbol = new AnonSymbol) extends FilteredQuery with UnaryNode {
  def child = from
  override def nodeChildNames = Seq("from "+generator)
  protected[this] def nodeRebuild(child: Node) = copy(from = child)
  protected[this] def nodeRebuildWithGenerators(gen: IndexedSeq[Symbol]) = copy(generator = gen(0))
}

/** A join expression of type
  * (CollectionType(c, t), CollectionType(_, u)) => CollecionType(c, (t, u)). */
final case class Join(leftGen: Symbol, rightGen: Symbol, left: Node, right: Node, jt: JoinType, on: Node) extends DefNode {
  lazy val nodeChildren = IndexedSeq(left, right, on)
  protected[this] def nodeRebuild(ch: IndexedSeq[Node]) = copy(left = ch(0), right = ch(1), on = ch(2))
  override def nodeChildNames = Seq("left "+leftGen, "right "+rightGen, "on")
  override def toString = "Join " + jt.sqlName
  def nodeGenerators = Seq((leftGen, left), (rightGen, right))
  protected[this] def nodeRebuildWithGenerators(gen: IndexedSeq[Symbol]) =
    copy(leftGen = gen(0), rightGen = gen(1))
  def nodeWithComputedType(scope: SymbolScope): Node = {
    val l2 = left.nodeWithComputedType(scope)
    val r2 = right.nodeWithComputedType(scope)
    val lt = l2.nodeType.asCollectionType
    val rt = r2.nodeType.asCollectionType
    val o2 = on.nodeWithComputedType(scope + (leftGen -> lt.elementType) + (rightGen -> rt.elementType))
    val tpe = CollectionType(lt.cons, ProductType(IndexedSeq(lt.elementType, rt.elementType)))
    if((l2 eq left) && (r2 eq right) && (o2 eq on) && tpe == nodeType) this
    else copy(left = l2, right = r2, on = o2).nodeTyped(tpe)
  }
}

/** A union of type
  * (CollectionType(c, t), CollectionType(_, t)) => CollectionType(c, t). */
final case class Union(left: Node, right: Node, all: Boolean, leftGen: Symbol = new AnonSymbol, rightGen: Symbol = new AnonSymbol) extends BinaryNode with DefNode {
  protected[this] def nodeRebuild(left: Node, right: Node) = copy(left = left, right = right)
  override def toString = if(all) "Union all" else "Union"
  override def nodeChildNames = Seq("left "+leftGen, "right "+rightGen)
  def nodeGenerators = Seq((leftGen, left), (rightGen, right))
  protected[this] def nodeRebuildWithGenerators(gen: IndexedSeq[Symbol]) =
    copy(leftGen = gen(0), rightGen = gen(1))
  def nodeWithComputedType(scope: SymbolScope): Node = {
    val l2 = left.nodeWithComputedType(scope)
    val r2 = right.nodeWithComputedType(scope)
    if((l2 eq left) && (r2 eq right) && r2.nodeType == nodeType) this
    else copy(left = l2, right = r2).nodeTyped(r2.nodeType)
  }
}

/** A .flatMap call of type
  * (CollectionType(c, _), CollectionType(_, u)) => CollectionType(c, u). */
final case class Bind(generator: Symbol, from: Node, select: Node) extends BinaryNode with DefNode {
  def left = from
  def right = select
  override def nodeChildNames = Seq("from "+generator, "select")
  protected[this] def nodeRebuild(left: Node, right: Node) = copy(from = left, select = right)
  def nodeGenerators = Seq((generator, from))
  override def toString = "Bind"
  protected[this] def nodeRebuildWithGenerators(gen: IndexedSeq[Symbol]) = copy(generator = gen(0))
  def nodeWithComputedType(scope: SymbolScope): Node = {
    val f2 = from.nodeWithComputedType(scope)
    val fromType = f2.nodeType.asCollectionType
    val s2 = select.nodeWithComputedType(scope + (generator -> fromType.elementType))
    val newType = CollectionType(fromType.cons, s2.nodeType.asCollectionType.elementType)
    if((f2 eq from) && (s2 eq select) && newType == nodeType) this
    else copy(from = f2, select = s2).nodeTyped(newType)
  }
}

/** A table expansion. In phase expandTables, all tables are replaced by
  * TableExpansions to capture the dual nature of tables as as single entity
  * and a structure of columns. TableExpansions are removed again in phase
  * rewritePaths. */
final case class TableExpansion(generator: Symbol, table: Node, columns: Node) extends BinaryNode with DefNode {
  def left = table
  def right = columns
  override def nodeChildNames = Seq("table "+generator, "columns")
  protected[this] def nodeRebuild(left: Node, right: Node) = copy(table = left, columns = right)
  def nodeGenerators = Seq((generator, table))
  override def toString = "TableExpansion"
  protected[this] def nodeRebuildWithGenerators(gen: IndexedSeq[Symbol]) = copy(generator = gen(0))
  def nodeWithComputedType(scope: SymbolScope): Node = {
    val t2 = table.nodeWithComputedType(scope)
    val c2 = columns.nodeWithComputedType(scope + (generator -> t2.nodeType))
    val newType = CollectionType(t2.nodeType.asCollectionType.cons, c2.nodeType)
    if((t2 eq table) && (c2 eq columns) && newType == nodeType) this
    else copy(table = t2, columns = c2).nodeTyped(newType)
  }
}

/** Similar to a TableExpansion but used to replace a Ref pointing to a
  * Table(Expansion) (or another TableRefExpansion) instead of a plain Table. */
final case class TableRefExpansion(marker: Symbol, ref: Node, columns: Node) extends BinaryNode with DefNode {
  def left = ref
  def right = columns
  override def nodeChildNames = Seq("ref", "columns")
  protected[this] def nodeRebuild(left: Node, right: Node) = copy(ref = left, columns = right)
  def nodeGenerators = Seq((marker, ref))
  override def toString = "TableRefExpansion "+marker
  protected[this] def nodeRebuildWithGenerators(gen: IndexedSeq[Symbol]) = copy(marker = gen(0))
  def nodeWithComputedType(scope: SymbolScope): Node = {
    val r2 = ref.nodeWithComputedType(scope)
    val c2 = columns.nodeWithComputedType(scope + (marker -> r2.nodeType))
    if((r2 eq ref) && (c2 eq columns) && c2.nodeType == nodeType) this
    else copy(ref = r2, columns = c2).nodeTyped(c2.nodeType)
  }
}

final case class Select(in: Node, field: Symbol) extends UnaryNode with RefNode {
  /** An expression that selects a field in another expression. */
  if(in.isInstanceOf[TableNode])
    throw new SlickException("Select(TableNode, \""+field+"\") found. This is "+
      "typically caused by an attempt to use a \"raw\" table object directly "+
      "in a query without introducing it through a generator.")
  def child = in
  override def nodeChildNames = Seq("in")
  protected[this] def nodeRebuild(child: Node) = copy(in = child)
  def nodeReference = field
  protected[this] def nodeRebuildWithReference(s: Symbol) = copy(field = s)
  override def toString = Path.unapply(this) match {
    case Some(l) => super.toString + " for " + Path.toString(l)
    case None => super.toString
  }
  def nodeWithComputedType(scope: SymbolScope): Node = {
    val i2 = in.nodeWithComputedType(scope)
    val tpe = Type.select(i2.nodeType, field)
    if((i2 eq in) && tpe == nodeType) this
    else copy(in = i2).nodeTyped(tpe)
  }
}

/** A function call expression. */
case class Apply(sym: Symbol, children: Seq[Node])(val tpe: Type) extends RefNode with TypedNode {
  def nodeChildren = children
  protected[this] def nodeRebuild(ch: IndexedSeq[scala.slick.ast.Node]) = copy(children = ch)(tpe)
  def nodeReference = sym
  protected[this] def nodeRebuildWithReference(s: Symbol) = copy(sym = s)(tpe)
  override def toString = "Apply "+sym
}

/** A reference to a Symbol */
case class Ref(sym: Symbol) extends NullaryNode with RefNode {
  def nodeReference = sym
  protected[this] def nodeRebuildWithReference(s: Symbol) = copy(sym = s)
  def nodeWithComputedType(scope: SymbolScope): Node = scope.get(sym) match {
    case Some(t) => if(t == nodeType) this else copy().nodeTyped(t)
    case _ => throw new SlickException("No type for symbol "+sym+" found for "+this)
  }
  def nodeRebuild = copy()
}

/** A constructor/extractor for nested Selects starting at a Ref. */
object Path {
  def apply(l: List[Symbol]): Node = l match {
    case s :: Nil => Ref(s)
    case s :: l => Select(apply(l), s)
  }
  def unapply(n: Node): Option[List[Symbol]] = n match {
    case Ref(sym) => Some(List(sym))
    case Select(in, s) => unapply(in).map(l => s :: l)
    case _ => None
  }
  def toString(path: Seq[Symbol]): String = path.reverseIterator.mkString("Path ", ".", "")
  def toString(s: Select): String = s match {
    case Path(syms) => toString(syms)
    case n => n.toString
  }
}

/** Base class for table nodes. Direct and lifted embedding have different
  * implementations of this class. */
abstract class TableNode extends NullaryNode { self =>
  def nodeShaped_* : ShapedValue[_, _]
  def schemaName: Option[String]
  def tableName: String
  def nodeTableSymbol: TableSymbol = TableSymbol(tableName)
  def nodeWithComputedType(scope: SymbolScope): Node = this
  override def toString = "Table " + tableName
  def nodeRebuild: TableNode = new TableNode {
    def nodeShaped_* = self.nodeShaped_*
    def schemaName = self.schemaName
    def tableName = self.tableName
  }
}

object TableNode {
  def unapply(t: TableNode) = Some(t.tableName)
}

/** A dynamically scoped Let expression where the resulting expression and
  * all definitions may refer to other definitions independent of the order
  * in which they appear in the Let. Circular dependencies are not allowed. */
final case class LetDynamic(defs: Seq[(Symbol, Node)], in: Node) extends DefNode {
  val nodeChildren = defs.map(_._2) :+ in
  protected[this] def nodeRebuild(ch: IndexedSeq[Node]) =
    copy(defs = defs.zip(ch.init).map{ case ((s, _), n) => (s, n) }, in = ch.last)
  override def nodeChildNames = defs.map("let " + _._1.toString) :+ "in"
  def nodeGenerators = defs
  protected[this] def nodeRebuildWithGenerators(gen: IndexedSeq[Symbol]): Node =
    copy(defs = (defs, gen).zipped.map((e, s) => (s, e._2)))
  override def toString = "LetDynamic"
  def nodeWithComputedType(scope: SymbolScope): Node = {
    var defsMap = defs.toMap.mapValues(n => (n, false))
    var updated = false
    lazy val dynScope: SymbolScope = scope.withDefault { sym =>
      defsMap.get(sym) match {
        case Some((n, false)) =>
          val n2 = n.nodeWithComputedType(dynScope)
          if(n2 ne n) updated = true
          defsMap += (sym -> (n2, true))
          n2.nodeType
        case Some((n, true)) => n.nodeType
        case None => throw new SlickException("Symbol "+sym+" not found")
      }
    }
    val i2 = in.nodeWithComputedType(dynScope)
    if((i2 eq in) && !updated && i2.nodeType == nodeType) this
    else {
      val d2 = defs.map { case (s, _) => (s, defsMap(s)._1) }
      copy(defs = d2, in = i2).nodeTyped(i2.nodeType)
    }
  }
}

/** A node that represents an SQL sequence. */
final case class SequenceNode(name: String)(val increment: Long) extends NullaryNode with TypedNode {
  def tpe = StaticType.Long
  def nodeRebuild = copy()(increment)
}

/** A Query of this special Node represents an infinite stream of consecutive
  * numbers starting at the given number. This is used as an operand for
  * zipWithIndex. It is not exposed directly in the query language because it
  * cannot be represented in SQL outside of a 'zip' operation. */
final case class RangeFrom(start: Long = 1L) extends NullaryNode with TypedNode {
  def tpe = StaticType.Long
  def nodeRebuild = copy()
}

/** An if-then part of a Conditional node */
final case class IfThen(val left: Node, val right: Node) extends BinaryNode {
  protected[this] def nodeRebuild(left: Node, right: Node): Node = copy(left = left, right = right)
  def nodeWithComputedType(scope: SymbolScope): Node = {
    val l2 = left.nodeWithComputedType(scope)
    val r2 = right.nodeWithComputedType(scope)
    if((l2 eq left) && (r2 eq right) && right.nodeType == nodeType) this
    else copy(left = l2, right = r2).nodeTyped(right.nodeType)
  }
}

/** A conditional expression; all clauses should be IfThen nodes */
final case class ConditionalExpr(val clauses: IndexedSeq[Node], val elseClause: Node) extends Node {
  val nodeChildren = elseClause +: clauses
  protected[this] def nodeRebuild(ch: IndexedSeq[Node]): Node =
    copy(clauses = ch.tail, elseClause = ch.head)
  def nodeWithComputedType(scope: SymbolScope): Node = {
    val this2 = nodeMapChildren(_.nodeWithComputedType(scope)).asInstanceOf[ConditionalExpr]
    nodeBuildTypedNode(this2, this2.clauses.head.nodeType)
  }
}

final case class OptionApply(val child: Node) extends UnaryNode {
  protected[this] def nodeRebuild(ch: Node) = copy(child = ch)
  def nodeWithComputedType(scope: SymbolScope): Node = {
    val this2 = nodeMapChildren(_.nodeWithComputedType(scope))
    val tp = OptionType(this2.nodeChildren.head.nodeType)
    nodeBuildTypedNode(this2, tp)
  }
}

final case class GetOrElse(val child: Node, val default: () => Any) extends UnaryNode {
  protected[this] def nodeRebuild(ch: Node) = copy(child = ch)
  def nodeWithComputedType(scope: SymbolScope): Node = {
    val this2 = nodeMapChildren(_.nodeWithComputedType(scope))
    val tp = this2.nodeChildren.head.nodeType.asOptionType.elementType
    nodeBuildTypedNode(this2, tp)
  }
}

redpajama_set_name: RedPajamaGithub


In mid-winter a lot of us are looking to reconnect with the blossoming world—especially with Valentine's Day almost upon us. That's why, as the February snow swirls outside my window, I'm dipping again into Donald Culross Peattie's book Flowering Earth.
Everybody has his or her favourite book about trees or plants—The Golden Spruce by John Vaillant; Tree: A Life Story by David Suzuki and Wayne Grady; Arboretum Borealis by Diana Beresford-Kroeger. This one is mine, and like a lot of my favourite books, it's a forgotten classic. Published way back in 1939, Flowering Earth is a "biography of the plant kingdom" by an American botanist who could write rings around most poets or novelists of his generation. Trees are in this book right from the opening sentence: "There is morning light here, shafting down through the live-oaks in smoky beams." Peattie is not only a celebrant of trees; he knows them as a scientist does, and knows how they anchor and overarch all of life.
These works are as perennial and green as the life they celebrate.


It is bitterly cold. The kind of cold that makes your fingers numb within seconds, the snot freezes instantly in your nose, and the air hurts your lungs to breathe. Touching anything metal without gloves on is a sure fire way to lose some skin.
Everything is a massive undertaking to accomplish. Even just letting the horses out into the main pasture has become a slog.
I'm becoming convinced that the only way to handle winter is through inebriation.
If I go much more redneck with this, I'll be disbarred from the dressage community entirely.
There's a facebook group I belong to where real life vet's answer common people questions about horses. One of the questions was when is it too cold to ride. Vet made it seem like anything above 5 degrees was fine to ride in.
If this is true, this removes my most common excuse not to ride in the winter. Which is good, right? Except, Brrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr!
I keep trying to convince myself I'm more of a badass because I ride outside all year long, but secretly I really just want to tuck myself into an indoor for the rest of the winter.
Tell your husband he needs to do a better job plowing that path to the pasture.


Local Veterans and their families share very moving and powerful stories that relay their Vietnam War experiences.
Faustino Mendoza describes his Vietnam War experiences.
Rick Douglas describes his Vietnam War experiences.
Blas Ortiz describes his Vietnam War experiences.
Gerald Espinoza describes his Vietnam War experiences.
Gilbert Ramirez describes his Vietnam War experiences.
Ronaldo Escobar describes his Vietnam War experiences.
Mike Titus describes his Vietnam War experiences.
Frank Lowery describes his Vietnam War experience.
Rosie Williams details her point of view about her husband's Vietnam War experiences.
Franklin D. Lacy story as told by his mother.
Bob Adamson describes his Vietnam War experience.
Ed Weber describes his Vietnam War experience.


text:
Portage County Crime Reports
Aug 21, 2018 at 6:00 PM Aug 22, 2018 at 2:16 PM
Crime Reports is a sampling of incidents responded to by local law enforcement agencies. It is not intended to be all-inclusive.
A 25-year-old woman was arrested Friday at her address in the 5900 block of Rhodes Road and charged with assault, a first-degree misdemeanor, for allegedly assaulting another woman, according to the Portage County Sheriff's Office.
A 42-year-old Sylvania man was arrested at 3:52 p.m. Sunday at a business in the 500 block of South Water Street and charged with disorderly conduct by intoxication, a minor misdemeanor, for being intoxicated in public, according to Kent police.
Officers arrested 18-year-old Kaylee S. Sevic, of Grafton, at 2:08 a.m. after she was found at the Fairchild Avenue soccer fields at Fairchild Avenue and Majors Lane, allegedly in possession of the stimulant lisdexamfetamine — known by the brand name Vyvanse — without a prescription, as well as alcohol. She was charged with aggravated possession of drugs, a fifth-degree felony, and alcohol prohibitions, a first-degree misdemeanor, according to Kent police.
An 18-year-old North Olmsted woman and a 22-year-old Elyria man were arrested shortly after 2 a.m. Sunday at a business in the 600 block of North Mantua Street on alcohol-related charges. The woman was charged with two counts of operating a vehicle under the influence, both first-degree misdemeanors, and driving under suspension, an unclassified misdemeanor. The man was charged with disorderly conduct by intoxication, a minor misdemeanor, according to Kent police.
Officers arrested a 20-year-old Valley View Street man at his residence at 4:27 p.m. Saturday on a warrant for failure to appear in court on a theft charge, a first-degree misdemeanor, according to Kent police.
A 22-year-old Canal Fulton woman was arrested at 3:54 a.m. Saturday in the 1600 block of Olympus Drive and charged with disorderly conduct by intoxication, a minor misdemeanor, according to Kent police.
Officers arrested a 22-year-old South Mantua Street woman at 2:18 a.m. Saturday in the 200 block of East Main Street and charged her with disorderly conduct by intoxication, a minor misdemeanor, according to Kent police.
A 33-year-old Suzanne Drive man was arrested at 4:57 p.m. Friday in the 300 block of South Water Street, and charged with aggravated possession of drugs, a first-degree misdemeanor, after he allegedly possessed the drug buprenorphine without a prescription, according to Kent police.
Police are investigating a reported burglary Friday in the 1400 block of River Edge Boulevard in which "an unknown amount of beer," with an estimated value of $40, was taken from a garage refrigerator and an estimated $300 in loose change was stolen from an orange juice container where it was kept, according to Kent police.
A traffic stop at 11:17 p.m. Friday on a 1998 Dodge sedan on Waterloo Road eastbound at Conley Road resulted in the arrest of 33-year-old Dustin J.A. Bibey, of 2092 Rustic Trail, on charges of possession of drugs, a fifth-degree felony, driving under suspension, a first-degree misdemeanor, and no safety belt, a minor misdemeanor. Bibey allegedly was not wearing a seatbelt, driving on a suspended license and in possession of a clear crystal substance that tested positive for the presence of methamphetamine, according to the Ohio State Highway Patrol.
ROOTSTOWN
A deputy on Friday arrested a 34-year-old township man at his residence on New Milford Road and charged with domestic violence, a first-degree misdemeanor, after he allegedly assaulted a female family or household member, according to the Portage County Sheriff's Office.
A 54-year-old Route 303 man was arrested Saturday on a warrant charging him with receiving stolen property, a first-degree misdemeanor. On or about April 28, 2016, the man allegedly possessed stolen property that he tried to sell for personal gain, according to Windham police.


Payday advance dollars loans aid the borrowers, who want to fulfill their unforeseen economic requires instantly. These financial loans are perfectly-recognised as shorter term financial loans as the borrowers of these loans ought to repay the bank loan quantity when their up coming pay verify arrives.
There are lots of benefits of likely for these financial loans, without the need of getting funds from any one. Some of the advantages are prompt acceptance, no credit checks and no want to mention the purpose of taking mortgage. A single of the significant advantages is that quick acceptance that means the borrowers, who implement for these loans will get the revenue inside of 24 hrs as the personal loan application variety will be sanctioned by the loan provider on the exact working day. So that, the borrowers are no want to wait around for months and months to get the mortgage quantity. As these financial loans are recognised as the limited term ones, the lenders will sanction you revenue with in a limited time, with out likely for credit checks. Some of the creditors of Uk demand to fax the paperwork alongside with the application variety and some other provide payday loans devoid of using any form of documents from the debtors. These financial loans are known as as faxless payday financial loans.
If you have a poor credit score record, commonly, it is troublesome for you to get mortgage with in a person day to facial area some of your fast money needs. But no want to bother. To present financial assist to the debtors, who have the history of bad credit rating most of the UK's lenders are presenting poor credit score payday loans with adaptable alternatives. As a result, the people, who are deeply drowned in their money owed can meet their urgent monetary desires without having based on other people. To avail a payday progress cash personal loan, the qualified requirements is that the borrower must be aged 18 years or above, he should have an energetic preserving account in any lender and should get the job done in any a person of the businesses in the Uk. Just by owning these minimal necessities, everyone can get these financial loans to satisfy their numerous fiscal reasons. These purposes consist of purchasing a digital unit, spending credit score card payments, renovating property and car or truck restore.
Now-d-days, each and every work can be done through World-wide-web in an straightforward and speedy way. When you loved this article as well as you want to acquire guidance relating to tanie kredyty gotówkowe generously go to the web-site. So, the debtors, who want to implement for payday financial loans can choose the enable of the world-wide-web to get this financial loan on the exact same working day, when they utilize for mortgage. Since, several of the creditors of these loans are letting the borrowers to fill on line software form with no going to them personally. It can help the borrowers to save their precious time. They can locate all the details with regards to the personal loan above the Net. A person more primary gain of the Online is that there are numerous World wide web internet sites that allow the borrowers to look at the estimates of all the loan companies of Uk at one particular location. So that, they can find the very best mortgage deal at very low quantity of desire rates.
You have to like these financial loans, only if you get your future payday with in a small time (two months or utmost one thirty day period). If you you should not have supply to repay the personal loan sum, do not go for these financial loans. Simply because, if you are not able to pay the mortgage sum in time, the financial institution will commence lawfully and you will be drowned in much more and additional debts. Some of the payday loans creditors will lengthen the bank loan reimbursement day, if you concur to fork out excess prices.


A third of singles in Bristol do not know how to flirt – according to research by the dating app happn.
Extensive new research of the city's dating habits has been conducted by the dating app.
And although the city may be one of the best in the UK to go on a first date, knowing the do's and don'ts of that first meeting can be a minefield.
Research was carried out among 2000 singletons, with 30 per cent admitting not knowing how to flirt.
But for those who do, the most preferred style of flirting is smiling or making their date laugh – with 59 per cent of men opting for smiling and 54 per cent of women saying that making their date laugh is their preferred tactic.
Other top methods of flirting included being complimentary and teasing.
The research also revealed the top turn-ons and turn-offs.
For 81 per cent of women in Bristol, their date playing on their phone was the biggest faux-pas, followed by flirting with a waitress and getting drunk.
For 66% of men the biggest no-no is getting drunk followed by lateness and chatting about their ex.
According to research, the average Bristol singleton spends around an hour getting ready for a date.
And it has surprisingly confirmed men spend longer than women getting ready.
In fact, 50 per cent of men spend around one hour getting ready, compared to 28 per cent of women.
Classically, most singles do the expected whilst prepping for a hot date, with over a third of women - 37 per cent - putting on their sleekest lingerie and over a half of men – 59 per cent - opting for a fresh new haircut.
Meanwhile, the top thing to do on a first date in the eyes of both Bristolian men and women, is to take an interest in your date's personal life.
Second priority for both genders is for their date to make an effort with appearance followed by compliments.
According to happn, men are quicker to make up their mind if they are interested in their date – with over a third - 41 per cent - saying they make up their mind after just a few minutes – compared to less than a fifth - 15 per cent- of women.
Proving the huge difference between men and women, the research found that men are more regular daters than women with nearly one in five single guys in Bristol going on dates twice or more a month, compared to 13% of single women.
Women are more cautious than men, with 38% spending a minimum of seven to 13 days chatting before arranging the first date whereas 29 per cent of men don't wait longer than six days.
Dating expert Hayley Quinn said: "The results of happn's dating study didn't surprise me when it showed that Bristolians are timid flirts - dating apps are so popular because they give you the opportunity to meet and build a connection before having to meet in real life.
"How good you are at communicating via messaging on the app is also a great indicator of compatibility so you can make a better decision about who to invest your time in dating.
"In 2018 singles are comparatively time poor and also more focused on gender equality than in the past; so it's also interesting to see men spending more time than women with their pre-date grooming.
The survey also looked at how much Bristolians are spending on a date. On average, men spend up to £50 on a first date – which is almost almost double the amount women do – who don't tend to spend more than £25 .
But what happens when a date goes wrong?
A quarter of Bristolians say that they always have an excuse prepared while 22% admitted to making up an excuse on the spot to make a quick getaway.
Claire Certain, head of trends at Dating App happn, which conducted the research says: "This has been our biggest study into Bristol dating trends to date and has revealed some fascinating results – particularly around the differences between men and women.
"In this time of gender equality, it would appear that chivalry is indeed alive and well and is in fact still appreciated by most women.
"There is no 'magic bullet' solution to finding love which is why we use hyperlocation, and real-time technology to encourage our users to meet their crush in real life and have more meaningful interactions.
"You might have seen someone on the train that you hoped were single and then half an hour later they will pop up on your timeline.
"We've created so many happy couples since launching in February 2014 and online dating is only set to increase in popularity as we live increasingly busy lives."


Packets will go home with the students, please encourage sales and help our school reach its goal. We are asking that every child sale at least 5 items.
This week we are celebrating Dr. Seuss by having a fun dress up theme for each day. We hope you will join in with us.
Do you have a budding Scientist? If so, join us for a night filled with fun activities for the whole family.
We love to read here at Garrison-Pilcher! Today we will enjoy thousands of books as we take the day to do nothing but read! Please send your child's favorite book(s) with them to read today. Feel free to drop by and read a book or two with your child as well.


text:
Unveiled> 41-story office and hotel tower in Chicago's West Loop
By Chris Bentley • December 5, 2014 • Architecture, Development, Midwest, News, Skyscrapers, Unveiled
590 W. Madison, an office and hotel tower planned for Chicago's West Loop. (Goettsch Partners)
590 W. Madison, an office and hotel tower planned for Chicago's West Loop. (Goettsch Partners)
This week an already roiling real estate market in Chicago's West Loop got hotter still. The latest entrant is a $400 million mixed-use tower designed by Goettsch Partners—a 350-room, four-star hotel beneath about 600,000 square feet of offices that will surely stoke the continued evolution of the area from post-industrial grittiness into a sleek, high-rent hub for technology companies and haute cuisine.
Crain's Chicago Business reported Florida-based developer Joseph Mizrachi will further thicken an already competitive field of downtown office space, building on his 2012 acquisition of a 1.1 million-square-foot office tower at 540 West Madison Street. His group, Third Millennium Partners, hopes to start work by mid-2015 on a 1.2 million-square-foot building just to the west, at 590 West Madison Street.
Goettsch Partners' design is restrained, concealing its luxury hotel rooms and undoubtedly high-tech offices in tranquil planes of glass, scored with white mullions that stripe the building's bifurcated mass vertically.
As for the crowded market, Crain's says Mizrachi enjoys an advantage over the competition:
Because the foundation already was poured for the new building years ago when a second office tower was planned, the new tower can be built in as little as 20 months, giving Mizrachi's plan an advantage over some competitors, [J.F. McKinney & Associates Executive Vice President Mark] Gunderson said. Work could begin with as little as 200,000 square feet of office space leased in advance, he said.
It also might compete by offering office rents slightly lower than its neighbors, which include 52 and 53 story towers from developers Hines Interests and John O'Donnell.
crain's chicago businessFloridaGlassHotelsMixed-UsemullionsOffice Buildingstechnology companiesWest Loop
Dissolving the Swamp
Florida Governor Ron DeSantis plans to rid Walt Disney World of its special tax district privileges
Madison Avenue Glow Up
Snøhetta, Rockwell Group, and Gensler revamp a postmodern icon and add a backyard POPS
Donald Trump plans to build a Mediterranean-style guardhouse at Mar-a-Lago
page rendered @ January 28, 2023, 5:21 am UTC
httpsGETwww.archpaper.com/2014/12/unveiled-41-story-office-hotel-tower-chicagos-west-loop/-PUBLIC


Some habits are partly prescribed by the double helix. The most well-studied genetic predispositions are related to habitual coffee consumption, nicotine dependence, and alcohol addiction.
Coffee is among the most widely consumed beverages in the world. Researchers pinpoint several genetic variants that determine coffee cravings. AHR and BDNF genes can predict whether someone is prone to be a heavy coffee drinker.
CHRNA genes are always discussed when it comes to smoking behavior. It is proven that these genes affect the smoking quantity, nicotine dependence and the risk of two smoking-related diseases.
Alcohol addiction Alcohol dependence is moderately heritable. Genes of ethanol metabolism (such as ADH and ALDH), as well as dopamine receptor genes (DRD), contribute to the development of alcohol addiction.