The Urban Rebellion

The Urban Rebellion is a collection of stories, ideas, solutions, questions, recipes, instructionals, and general backlash against the consumerism and cynicism that pervades our modern world.

3/28/08

Don't you Sass me! At least not dynamically ...

Being a programmer at large, aka a freelancer, and a highly opinionated one at that, I am often struck by how often a new "language" or way of doing things is touted as the best way and everything else must be abandoned at all cost. My advice in short is don't do it.

Those who know me may think that a strange thing for me to say; after all I'm a Ruby programmer. However, that does not negate the points I'm about to make below.

Sometimes the inventors of these new trends are simply not taking advantage of the current technologies, or are inventing new ones because it is fun. There is nothing wrong with that. I love reinventing the wheel for the simple fact that I can. It's a great learning experience. But it's not always productive.

So now that I've got that out of the way, I'm going to pick a little idea of dynamic css using the technology called Sass. Sass is kind of a sub-project of the haml project that was built to shorten the amount of css you have to type by hand. Haml does the same for html. Again, not a bad thing. A little less time on one part of a project goes a long way to completing a project quicker. It's also cleaner, if you are a decent coder, and easier on the eyes. This could enhance maintainability. Kudos to the idea in that respect.

Here's where I take up my gripe. I first came across the idea as a way to dynamically replace aspects of the css, dependent on the environment. Dynamic css would allow us t expand a layout based on the browsers current size for instance. Great! But I something doesn't seem right about this ... Why do we need a new language to accomplish this when those who are using any framework, be it Ruby on Rails, Django, or even CakePHP, all have controllers, views, and template rendering engines, to handle dynamic layouts already? Can't we just feed some variables into the template from the controller and "viola!" instant dynamic layouts! Well yes, in fact we can.

You might as well load up your terminal, cd into your development directory, get textmate warmed up, and follow along. Here's a quick Rails [1] example.

In Terminal create the rails project:

rails dynamic_css
cd dynamic_css


Clean up a bit:

mv public/index.html public/index.html.default
touch app/views/layouts/application.html.erb


Now we going to create a controller that will act as our stylesheet condute so to speak, a method for the media type screen, and the corresponding css view:

script/generate controller stylesheets screen
mv app/views/stylesheets/screen.html.erb app/views/stylesheets/screen.css.erb


So far all is fine with the world. Now would be a great time to ask, you have upgraded to rails 2.0 haven't you?

Moving on.


mate .


So now that we have the controller and view established let's move on to routing and environmental changes.

In config/routes.rb:


map.connect '/stylesheets/:action.:format', :controller => 'stylesheets'


In config/environment.rb at the very bottom:


Mime::Type.register 'text/css', :css


That should cover that. While we're at it we'll need a to point the root to a working controller. Let point it at the default application for the sake of simplicity (config/routes.rb):

map.root :controller => 'application'


And make an index def with layouts (apps/controllers/application.rb):

def index
end


And touch a little view for it as well:

mkdir apps/views/application
touch apps/views/application/index.html.erb


Now open up app/views/layouts/application.html.erb and let's toss in a generic 2 row, 1st row 1 column, 2nd row 2 columns, layout. We could also call this a header content layout or whatever. No snarky comments or you can just sit in the corner.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>Collegprops.com | Coming Soon</title>
<%= javascript_include_tag :defaults %>

<!--
I wrote a handy little javascript function to load the right style sheet view,
while still getting the screen resolution. Just copy the code below and
change the name of the style sheet to the style sheet view you are using.
-->
<script type="text/javascript">
load_style_sheet("screen");
</script>

</head>
<body>
<div id="header">
Give me a logo or something!
</div>
<div id="body">
<div id="left-column">
Stuff goes here
</div>
<div id="right-column">
<%= yield %>
</div>
</div>
</body>
</html>


"You added crap in the header!" Ahhh! You're right! I did throw in a bit of advertising for one of my projects, Collegeprops, in the title. The site where you can find, post, rate, love, hate, and manage your apartments in Columbus, Ohio. But enough modest self/client promotion!

Oh, You meant the javascript stuff and the lack of a style sheet tag! Yeah, now that you mention it let's dive into that!

So why am I using javascript? Well I want the screen resolution of course. Further, I want it to be passed to the stylesheets controller, so what better way than to use javascript to write out the stylesheet tag with a few parameters such as height, width, and time (to prevent caching). The controller can then handle those through params quite nicely. Here's the code to paste in your public/javascripts/application.js:

function load_style_sheet(sheet) {
width_height = get_width_height();
time = new Date(); time = time.getTime();
width = width_height[0]; height = width_height[1];
document.write(
"<:link href='/stylesheets/" + sheet + ".css?" + "width=" + width + "&height=" + height + "&time=" + time + "' media='screen' rel='stylesheet' type='text/css' />"
);
}

function get_width_height() {
// Thanks to [2] howtocreate.co.uk for the bulk of this function, and for
// feeding my laziness by giving this code so that I did not have to write the cross browser
// checks myself. Much obliged!
var myWidth = 0, myHeight = 0;
if( typeof( window.innerWidth ) == 'number' ) {
//Non-IE
myWidth = window.innerWidth;
myHeight = window.innerHeight;
} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
//IE 6+ in 'standards compliant mode'
myWidth = document.documentElement.clientWidth;
myHeight = document.documentElement.clientHeight;
} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
//IE 4 compatible
myWidth = document.body.clientWidth;
myHeight = document.body.clientHeight;
}
return [myWidth,myHeight];
}


We could also do for javascript what we are doing for css. But let's leave that alone for now. Don't get distracted Michael!

My lunch break is nearly over here so let's walk through the final steps.

Edit app/controllers/stylesheets_controller.rb (inside the screen def):

Resolution = Struct.new(:height, :width)
resolution = Struct.new(:height, :width)
@screen = resolution.new(params[:height].to_i, params[:width].to_i)
respond_to do |format|
format.css
end


Edit app/views/stylesheets/screen.css.erb:

body {
background-color: black;
}

#header {
clear: both;
width: 100%;
hieght: 50px;
background-color: green;
}

#body {
margin: 0px auto;
width: <%= @screen.width * 0.85 %>px;
}

#body #left-column {
float: left;
width: <%= (@screen.width * 0.85) * 0.25 %>px;
background-color: grey;
}

#body #right-column {
float: right;
width: <%= (@screen.width * 0.85) * 0.75 %>px;
background-color: white;
}


Ok. Load up the server and look at the beautiful mess we've created. Now apply these principles to a real layout and real code. You'll find a certain amount of freedom in being able to go "Dynamic" with technology you already use everyday. Not only will you not have to do anymore new studying, but you might just have that extra hour a day to get some exercise, breath some fresh air, and save days on trying to reinvent the wheel for clients on a deadline.

You can apply these same principles to Not do client editable templates in Liquid for that new engine your client wanted. Whatever. New technologies are fantastic, but long live the old ones too! Until my next sarcastic post, Cheers!

Oh, and here is the code if you want to download it in it's entirety: dynamic_css.zip

[1] nor
[2] howtocreate

Labels: , , ,

3/26/08

Fruit Smoothie Cake

Hi! I just finished the most divine cake and wanted to share the recipe with you. It has been adapted from a 'Hummingbird Cake' recipe that I've made for a couple of years now:

Fruit Smoothie Cake

1 mashed very ripe banana
1 1/2 cups mashed cooked fruit of some sort (I used strawberry applesauce- tangy!)
1 cup, with juice, crushed pineapple
1 stick (1/2 cup) unsalted butter, softened nearly to melting
2 eggs
1 cup dark brown sugar (less if your cooked fruit is already sweetened)
2 cups plain unbleached flour
2 tsp baking powder
1 1/2 tsp salt
2 tsp cinnamon
2 tsp vanilla

Preheat oven to 350˚ and line an 11" x 7" cake pan (or equivalent size) with parchment paper.
Make sure fruit is room temperature!
Whip all three fruits with soft butter. Beat in eggs & vanilla. Mixture should now look like a fruit smoothie.
Sift all dry ingredients together, fold into liquid until just moistened, pour into prepared pan. Bake for appx 35-45 mins, or until center cracks a bit across top and feels springy to the touch.

Cool on rack, upend onto serving plate, frost with:

Cream Cheese Frosting

4 oz softened cream cheese
1/4 cup softened unsalted butter
between 1 and 1 1/2 cups powdered sugar, depending on your preference for sweet and sticky.

Beat on high, until frosting has a faint shine to it.

Frost cake, cover with crushed walnuts (optional) and serve with caffeinated and/or dairy beverage of your choice. It is very, very moist and dense because of all the fruit, and eats well as a breakfast cake!

Labels: , , , , , , ,

3/25/08

This IS the Best Life Now

I've heard some obnoxious radio ad for a book or program or something called "Your best Life NOW!"
I've never kept the radio on long enough to know what this travesty really is, because the person speaking sounds like a mental case. It's possible they took the gig just to make enough cash to get their next fix.

I don't need someone telling me how to have my best life now.

Sitting in my just-right-for-a-short-person chair, which also happens to be my favorite color, I can hear Michael's voice from the next room as he reads The Chronicles of Narnia to the kids for bedtime. His voice is reassuring, gentle, pleasant. I always wanted to marry a man with a pleasant voice, it was on my 'list'. His is the voice of one who will always be there for me.

In my stomach is an excellent meal, in my lap sits a finely-tuned piece of equipment on which to type drivel, and by my side is a candle flickering softly. Kids come to exchange goodnight kisses, giggles are shared beneath mismatched sheets and blankets. The furnace kicks on, warming us against the lingering Michigan winter. When the house is asleep, I'll wander downstairs and nibble on my kids' Easter bunnies.

Life is good.

Not perfect, but very, very good. Sure, my house is a mess and I'm late on my car payment and I could stand to lose some weight and I struggle with acne at the ridiculous age of thirty, but those all pale in comparison to the facts: I have a good life.
I am safe, for now.
I am provided for.
I have a good job and a pleasant work environment.
I have a car- missing a side mirror and a bit too small for my family of five- but it runs consistently and has AC and a radio. And a sunroof.
I have a home. The rent is a bit high, the toilet still doesn't want to flush, I have to endure a ceiling fan in the kitchen if I want light, and its a long haul to the backyard during barbeque season, but there's a roof over my head. With a skylight!
I live in a country that may have its issues, but allows me to freely worship where and when I please, go into business for myself, and cross state lines and buy oranges whenever I want and even read whatever book I choose. For now.
I have a family that tolerates my mistakes and weaknesses, loves me despite them all, and encourages me always to be a better person.
I have a mother-in-law that is just as close as another sister. And she hems my pants.
I have an Italian immigrant grandmother (nonna) with stories of the war and clear plastic on her couch and garlic in her fridge. She is failing rapidly, but still made sure I got a flower for Easter this year. When I look in the mirror I see her face and sturdy frame and I am not sure if I am honored or terrified to be so much like her.
I have three (count 'em, three!) daughters who love to be princesses just as much as they love to be Obi-Wan Kenobe. They are intelligent and articulate and beautiful, and even if they weren't I would love them with all of my heart.
I have a spouse, a partner, a lover in my husband of ten years. He spars with me, for which I respect him, and he protects me, for which I revere him. He never lets me accept second best from myself, and he takes the trash out faithfully. Sometimes... on a full moon, he even washes the dishes. I'm not sharing him, get your own.

So for all of the self-fulfillment books and tapes and pills and herbal concoctions out there: stop trying to sell me blather that I don't need!
And for all of you grasping for happiness- through money, love, or power- you won't find it if you don't have it! Take an evening to look around you, drink in the wonderful things you have been surrounded with, and learn to be fulfilled with your life. Build a piece of your own contentment. Be brave enough to experience and even drown in love. Eat a good steak. Read a good book (ahem, I can recommend one, if you need).

This is the best life you could have, today. Let tomorrow worry about itself. Let yesterday be yesterday.

Labels: , , , , , , , , , , , , , , ,

3/23/08

Just what IS the Urban Rebellion, Anyhow??

...A Manifesto of Sorts...

People have been asking this of late. Although we have never developed a clichéd mission statement, we have come up with a little bit of reading for you:

The Urban Rebellion is a gestating movement. It is a concept that, if put into practice, would make the world just a little bit better, a little bit more efficient. Maybe a lot more.

The Urban Rebelion is basically an exchange of knowledge, talent, and time.

The Urban Rebellion is not a religion, a system, or a profit venture of any kind.

...How it Began...

Have you ever wandered the aisles of Wal-Mart and found yourself buying the same mass produced jeans as the next guy? The jeans designed somewhere in LA, knocked off from a designer line of two years ago, produced somewhere in China, or Indonesia, or Pakistan and shipped over here on a huge ocean liner by the million for your buying pleasure? Yeah, those jeans.
Do you ever get the feeling that you're being forced into a mold? That your personality, your diet, your spending habits, even your mood is being shaped by huge corporations somewhere in glass towers that you'll never inhabit?
Do you ever look around you and wonder how to break free of that mold- to not just survive but live, to not just consume but taste, to utilize your natural talents rather than sitting in a corporate box for38.5 hrs per week, performing loathsome and meaningless tasks..?

Nobody here is going to rescue you from your job, or your mortgage payment, or your Monday night football games on tv. But we just might give you the impetus to plant a garden, build a piece of furniture, make a personal connection, or maybe, just maybe, think just a little bit different. Perhaps all that will happen when you visit the Urban Rebellion is that we put a smile on your face. Maybe we'll give you a morsel of food for thought, maybe we'll make you angry.

We're not a bunch of vegetarian hippie environmentalists, or whatever you might call them, but we are impassioned about lowering our impact on the world we call home. We aren't gourmet foodies, but we do have a liking for locally grown, home cooked meals. We aren't avid crafters, but we love a good tutorial now and then.
We shun Wal-Mart and all that it means to the United States. We despise government corruption, corporate lobbying, and our American culture of greed and consumerism.
We love green building, handmade useful things, and spontaneous travel.
We feel that knowledge is power, but should be accessible and open to all. We want to share what knowledge we have with you, and learn what tidbits you may be able to offer us. We love interesting things outside of the common loop of the information stream, and we know that there is news everyday that is pushed down and unreported because it does not always serve the best interests of media moguls. We do not postulate conspiracy theories, per se, but we are open to discussion ;)

But while we are moving forward into a bright new horizon, we are also looking backward at the cycles and treasures of history. No civilization, no matter how progressive, can bear to leave behind the lessons and triumphs of their forebears. Getting back to some of the old ways, like canning, eating in season, and making things by hand will be good for our souls.

We will never subject ourselves to trends just because they are trends. We just want a community of people who have found a way to escape the rat race. We hope to see a system of barter and learning that will usher in a new age of personal accountability. If you're on board, let us know!

Have a great week!
~Sarah & Michael

Labels: , , , , , , , , , , ,

3/20/08

Stupid Thigns I've Done this Week

  1. Stayed up too late watching 'Pushing Daisies'
  2. Believed my nine year-old when she said she had no homework.
  3. Used the same knife that landed me in the hospital to do almost the same thing that landed me in the hospital. Everything's ok, but I feel so much dumber now.
  4. Put the salt shaker in the fridge.
  5. Misspelled the title to this post.
  6. Still haven't mated my mismatched socks.
  7. Stayed up too late watching 'Pushing Daisies'
  8. Went $13 over budget on the grocery bill. Forgot 3 important items.
  9. Two words: curb check!
  10. Threw away an important document.
  11. Argued with my husband on a rare date. Sorry, honey. :)
  12. Let my 11-month old niece have the whole container of crunchy things. There are now crunchy things permanently embedded in my couch.
  13. Forgot (again) to write my old friend.
  14. Played Civilization III instead of writing a better blog post.
  15. Mouthed off to a customer.

There, now you have it directly from me- I am not perfect. At least not this week.

Labels: , , , ,

3/16/08

Semper Fi

Have you ever had an accidental shopping buddy? They arrive at the grocery store within minutes of you, and your cruising algorithms fall into step with each other's. Up and down the aisles you go, accidentally winding up in front of the pickles at the same time as each other, simultaneously selecting salad greens and jelly. It is often an interesting glimpse into the life of a complete stranger.

I had a whole family as accidental shopping buddies today: a tall, square shouldered youngish man and his wife, their small daughter, and the woman's sister. The man was a bit loud, and I gathered that he was a recently decommissioned officer, a Marine, home (hopefully for good) recently. He and his wife and sister-in-law were engaging in the plebeian task of grocery shopping, but they were having more fun at it than I have had in a good long time. Although finding myself in the same aisles as them every single time, we were on alternate routes, so our carts crisscrossed each other's about ten or twelve times.

Each pass, I couldn't help but overhear snips of their conversation, patches of laughter seemingly out of place in the sterile red-and-white of our local Meijer. I never caught exactly what was so funny- maybe it was several things- but I did hear them prank calling another relative on their cell phone, then roaring in laughter at the result of this.

In the pasta aisle, something tickled their funnybone so bad that they literally startled the entire aisle of shoppers with their laughter. It wasn't raucous or drunken laughter, just pure fun with a touch of insanity. The man laughed until he had to wipe tears away from his eyes, a full-bodied belly laugh that I can still hear.
I ran into them again, five minutes later, standing in front of the yogurt. The man had just finished another good hearty blowup of hilarity and was once again wiping tears from his eyes. He shook his head, passed a thick hand over the small circle of hair on top of his head, and mumbled the quietest thing I'd heard from him yet:

"God, I hope I don't have to go back."
His wife sobered and put her hand on his arm, her lips white. I grabbed blindly at a container of cottage cheese and darted down another aisle.

I hope he doesn't have to go back either.

I've laughed like that before, and it was only after a particularly nightmarish time in my life. The laughter cleansed the past weeks away, veiled the worries that still lay hidden inside my soul, and drowned memories.

Who knows what horrors that man saw. Who knows what emotion he's been through, what panic greeted him every morning. I don't even know if he was in Iraq. I know nothing about him beyond what I gleaned by accident. All I know is that he is home, and he is safe, and he is healthy. He has his wife and his child back, and a cell phone on which to make prank calls. He has cereal and yogurt and barbeque sauce and cheese and Ziploc bags- synonymous of normalcy. He has laughter that masks any terror that he might not be able to talk about yet.

Wherever you are, belly-laughing decommissioned Marine: I thank you for your service to this country. I don't agree with the war anymore, haven't for a few years now, but I appreciate each and every person who has trudged through the sand and mud and sun to honor the commitments that they made.
I hope that you come back safe, with your families and your world intact.
I hope that this nightmare ends soon and none of you have to go back over there, ever.
And I hope that when you come home, that you are able to laugh just a little bit softer, knowing that there are no terrors to drown out any more.

Labels: , , , , , , , , , , , ,

3/11/08

The Blanket Octopus

Meet the tremoctopus.
thanks to bogleech for this photo

Utterly intriguing, this creature inhabits the waters off the coast of Florida, Hawaii, and the Gulf of Mexico, as well as Australia and, I'm assuming from the video below, possibly Japan (?).

The female outweighs and outsizes the male by up to 100 times! When swimming around, business as usual, the octopus looks rather normal, almost cute. But threaten her, and she unfurls a cape-like webbing meant to frighten predators away. This video is the only one that I was able to find:



Here's some more in-depth and technical reading as well as lovely photos.

Labels: , , , , ,

Laziness begone!

Or not. Well at least I finally got around to claiming us on technorati: Technorati Profile

3/10/08

Middle Age.

3/8/08

How would you handle the rising prices of gold if you were a jeweler?

Here's a decent approach:

blog wexford

3/7/08

A quick note

For those of you that have been visiting our blog, and I have seen you ;), you may have noticed the lack of postings. That's because we have been putting a lot of time into our "work". This includes posting jewelry related articles to our jewelery blog. Sarah, in particular, has been posting some very interesting stories with clever titles like Unmaking History, That Thing Will Rip Your Finger Off!!, and Touched Lives. My brother in-law, who isn't part of The Urban Rebellion per say, also has some rather lovely post. Take this last post for example :D.

Of course I've been busy building the blog, some internal tools, and the "coming soon!" Wexford Jewelers jewelry site. I'm extremely excited about that site as it will be ground breaking in several ways. First of all there is no jewelry site on the web that treats the jewelry as art, proactively interacts with netizens in general, and is actively looking for ways to provide actual servicces to the customer. This will also be an example of good ecommerce using Ruby on Rails 2.0, and I know the community needs that. One big feature, in my eyes, is giving the customer full control over what they see, and how they want to interact with these things. I could go on and on making a hideous paragraph and just tangling your eyes and mine, so I won't.

Needless to say, with all of the work I'm putting out between this and several social networking development projects, I've neglected posting here. It will happen again I'm sure, but I'll try and keep the neglect to a minimum :).

Until then, cheers!

3/4/08

pffttt, fwap

My brother in-law just wrote this post and it was so funny that I had to pass it on: http://blog.wexfordjewelers.com/articles/2008/03/04/pffttt-fwap

Labels: , ,

3/2/08

And a Child Shall Lead Them...

I bring my three-year old to work with me most days. This is, of course, slightly stressful for both myself and her, but somehow it works.
She has two little play stations in the jewelry store, with bins of LEGO blocks, books, toys, and crayons. I spend my lunch breaks reading books to her, and the other employees hang out with her as they can. Michael works with me, so the burden of childcare is seldom on my shoulders alone.
One or two days a week, Michael works from home, and Kid #3 stays with him, with the full run of the house until her sisters come tromping in from school. Soon I will be working from home one day a week as well, so Kid #3 will spend a maximum of 3-4 days in the store.
She's only three, so I don't really know if she is old enough to resent me for this. She seems happy enough, if a bit cooped up sometimes. She is a typical child for her age: energetic and imaginative, pushing her disciplinary boundaries and asserting her independence. She loves me to death, and I am giving her the best childhood that I can at this point in time.

So it came as a crushing blow to me the other day when someone said to me,
"I feel sorry for her."
This came from someone who has it pretty much together in the 'mom' department, and I look up to her. I spent the next couple of hours obsessing about my parenting choices, dealing with the inevitable guilt that comes when one feels like an incompetent mother.

But am I really an incompetent mother? Who writes the rules here? My children are loved, well-fed, clothed (more or less), and are getting a good education. They have periods of boredom: after school some days, odd times when they are stuck in the car or at work. But it isn't terminal. Boredom stretches the imagination and teaches patience and creativity. They invent games, dream up entire fantasy lands in their heads, and learn to occupy themselves.

Throughout history, children have played in fields while their parents plowed and gleaned, they have sat quietly through four-hour Puritan church sermons, and they have huddled in the dank underbellies of ships for months traveling to a refuge on foreign shores. Did this damage them beyond repair? No. In fact, some of our brightest contributors to the progress of the world have come from situations such as these.
Are we to bow to the slightest whim and imagined need of our offspring in order that they might grow up sheltered and pampered? Does the idyllic childhood produce perfectly adjusted adults?
I think not.

I think that children are a product of not only their environment, but of the attitude around them as well.
For example, we have moved an awful lot, as I've mentioned in previous postings. I hate doing this to our children, as well as myself, but it has always been to a better life, a brighter future for us all. On the times when my guilt really shows, the kids whine and get antsy. But on the times when Michael and I are excited, hopeful, positive- that attitude rubs off on the kids and they, in turn, are excited and positive. They have had more adventure than most kids their age, and it has grown their boundaries and broadened their horizons.

Kid #3 may not be in a structured pre-school with fingerpaints and primary colors all around her, but she learns the names of gemstones and helps me pull models out of silicon molds every Monday. She may not be with her peers, or safely tucked away in my living room, but she gets to talk to all sorts of people during the day. So, how is this going to harm her in the future? Now? As long as she gets an opportunity to run around now and then, as long as she is surrounded by love and intelligence and the ability to learn and think and grow- I think she will do just fine.

If our generation of parents continues to be enslaved to someone else's idea of how we are to raise our children, if we continue this trend of child-worship beyond practicality, we are headed for trouble.

The child who has had everything sacrificed for them their entire life will not know the value of his own sacrifice.

The child who has lived in a perfectly constructed and controlled environment will know only that which has surrounded her and will grow up stunted.

The child who rules the household will always rule. We are given our children to raise for eighteen years, and then they are on their own. Not that we cannot ever be a parent to them again, but they have to find their own way from there. Our culture is even now reaping the horrific consequences of a generation raised too self-centric: parents my own age are abandoning their children at an alarming rate while pursuing their own lives.

Tomorrow I'll get up and feed three kids, pack lunches, and drop the older two off at school. I'll drag Kid #3 into the store with me, try to keep her happy and occupied and fed and clean and out of trouble, carve some jewelry, wait on some customers, and somehow make it through the day.

Then I'll do it all over again on Thursday. And it's all going to be ok.

Labels: , , , , , , ,