I need to find a QA engineer. Here's a rough draft of the job description:
----------------
Senior Software Engineer in Test -- Customer Service Applications
THE ROLE
We are looking for someone who can own the process of reliably getting the good ideas out of our developers heads onto the desktops of our customer service reps. We are looking for someone familiar with testing enterprise applications built from web services, Oracle, SQL, PL/SQL and telephony integration in the customer service space.
Quality Assurance at Netflix is not about waiting for some code to fly over the wall from development. It's about providing an environment for the development engineers that helps them minimize the number of bugs that make it into the code in the first place. It's also about insuring that what works when we test continues to work as well when we deploy it. Working on our customer call center software, you will help the people that help our members solve their problems.
You will provide your expertise in understanding what to test, as well as how to test. Given a schedule that is always too short and a feature list that is always too long, you'll identify and efficiently evaluate those changes to our software that pose the greatest risk to the smooth and effective operation of the customer service staff.
RESPONSIBILITIES
* Validate and verify the correct operation of the customer service application
* Advocate designs that are usable by the customer service representatives
* Collaborate with customer service management to design a complete system that meets business needs
* Bridge any communication gaps between the development and operational teams supporting the system
* Improve and extend the automated regression test suite and production monitoring tools
QUALIFICATIONS
Must have:
* 5+ years of white box 3-tier application testing, building and deployment
* Deep experience with Oracle and PL/SQL or equivalent database systems
* Experience with Java/jUnit or C#/nUnit development and testing
* Experience with testing high-traffic, highly scaling, multi-threaded software design
* A Bachelors or Masters in Computer Science or equivalent engineering experience
Nice to have:
Familiarity with contact center technology (e.g. CTI, IVR, CRM)
Familiarity with use of .NET Remoting, Web Services, 3rd party .NET controls, TestComplete
----------------
Email me if you're interested.
Saturday, June 23, 2007
Fiction writing
You should never see the phrase "I woke up and went through my usual routine" or anything like it in fictional stories. The point of writing the story is to give insight into the character. If the reader doesn't already know what the character's 'usual routine' is, then they will infer that the character's routine is just like their own, which is probably very boring. If your character usually runs out onto the patio to chase away the squirrel at the bird feeder, you should tell your reader.
Friday, June 22, 2007
Real Life on Second Life
I saw a pretty funny movie when I was visiting Valleywag today. It was about what real life would look like if real life were like Second Life.
Wednesday, June 06, 2007
Prosper
So there's this service out there that hooks up lenders and borrowers and trims out a lot of the fat of more traditional financial institutions by using an auction to set the rate.
There's a button off to the left that you can use to click thru and signup. If you want to be involved in lending money, get a much better rate than a savings account, and maybe help some good folks with a better rate than they'd ever get from a credit card or bank, then you can make $25 at the same time I make $25.
You can also click through just below.
There's a button off to the left that you can use to click thru and signup. If you want to be involved in lending money, get a much better rate than a savings account, and maybe help some good folks with a better rate than they'd ever get from a credit card or bank, then you can make $25 at the same time I make $25.
You can also click through just below.
Monday, May 07, 2007
Run for the WSOP 2007
Yesterday was my annual attempt to get a seat in the WSOP at the Oaks Card Club in Emeryville, CA. The format is no-limit holdem, with a $100+25 buy in and a single $100 rebuy. The top twenty were paid both cash and points towards a freeroll in which the top five prizes are WSOP seats ranging from the $10k main event down to a $1500 ducat. First place gets 20 points and 20th place gets 1 point. As of the start of the tourney yesterday, the bubble for the top 75 (who would be those invited to the freeroll) stood at 16 points, or a 5th place finish. That was likely to become 17 points after the day was out and possibly become 18 (but that was unlikely). So I went in to the game looking for 4th place or better.
My results were unspectacular, busting some time in the 2nd round after the rebuy period ended. With QQ I raised to 600 with 100-200 blinds UTG and was put all-in for 1500 more before the flop by AJo in middle position. The ace on the turn ruined my day.
More impressive was my father-in-law Tony's performance. Last year, he took 25th place when 20 places were paid. This year, he managed to make it all the way to 8th place, and probably could have done better had his KK not been vanquished by 55 which turned a set. 8th place paid $1,015 and 14 points. The $1k paid for his entry last year, this year, and now he'll be back again next year. The 14 points wasn't enough to make the freeroll, but he was busy weekend after next anyway.
I'll be back again next year.
My results were unspectacular, busting some time in the 2nd round after the rebuy period ended. With QQ I raised to 600 with 100-200 blinds UTG and was put all-in for 1500 more before the flop by AJo in middle position. The ace on the turn ruined my day.
More impressive was my father-in-law Tony's performance. Last year, he took 25th place when 20 places were paid. This year, he managed to make it all the way to 8th place, and probably could have done better had his KK not been vanquished by 55 which turned a set. 8th place paid $1,015 and 14 points. The $1k paid for his entry last year, this year, and now he'll be back again next year. The 14 points wasn't enough to make the freeroll, but he was busy weekend after next anyway.
I'll be back again next year.
Sunday, March 18, 2007
Separated at birth: David Foley and Ira Glass
So, we received in the mail a preview DVD of the new collaboration between the Showtime cable network and the Public Radio International show, This American Life. My wife and I watched it, and we got to see Ira Glass for the first time. My first thought was "That's David Foley. This must be a gag." However, once I heard the voice, it was clear that it was our old buddy Ira.
See for yourself (Ira's on the left and David's on the right):

My wife thinks I'm nuts, and that they look absolutely nothing alike.
See for yourself (Ira's on the left and David's on the right):

My wife thinks I'm nuts, and that they look absolutely nothing alike.
Monday, February 26, 2007
Star of the Show
Rob on the trapeeze at Ixtapa Club Med
| My family went to the Ixtapa Club Med in February 2007, and I took a turn on the flying trapeeze. Excellent experience that I'd recommend to anyone. | |
Tuesday, February 13, 2007
2007 SAP Open
At the 2007 SAP Open tennis tournament, I saw a match today with Bjorn Phau. He showed incredible sportsmanship while playing in the first round against Konstantinos Economidis. A ball that Phau hit to Economondis was out, but not called out by the line judge. Economidis returned it, and Phau having seen that his ball was out, let the return go by, giving the point to Economidis. Phau went on to win the match and advance to the second round.
He was graceful, both in his stroke and his approach to the game. Quite refreshing to see someone acting professionally in a professional sport.
He was graceful, both in his stroke and his approach to the game. Quite refreshing to see someone acting professionally in a professional sport.
Wednesday, February 07, 2007
Memorial for Grace Alice Gilbert-Fagen
My wife Jennifer and I expected our third child on January 1. Unfortunately, when we went in on Thursday, January 4 to induce labor, they weren't able to find a heartbeat. Jennifer had been in on Tuesday, January 2 for a non-stress test, and the baby was happy and healthy from all indications.
While delivering the baby, we discovered that there had been a cord accident. The cord had wrapped very tightly twice around her neck some time late Tuesday night and become compressed to the point where blood flow was blocked. In every other way, she was a perfect baby.
We decided to call her Grace Alice Gilbert-Fagen.
On Saturday, February 3, we had a memorial service for Grace at our home. Family, friends and co-workers showed up to support us in our moment of great sadness. Jennifer and I both said a few words. Jennifer read the following poem:
I read something that I had written for the occasion:
While delivering the baby, we discovered that there had been a cord accident. The cord had wrapped very tightly twice around her neck some time late Tuesday night and become compressed to the point where blood flow was blocked. In every other way, she was a perfect baby.
We decided to call her Grace Alice Gilbert-Fagen.
On Saturday, February 3, we had a memorial service for Grace at our home. Family, friends and co-workers showed up to support us in our moment of great sadness. Jennifer and I both said a few words. Jennifer read the following poem:Emily Dickinson (1830–86).
Complete Poems. 1924.
Part Three: Love
XXXIII
I HELD a jewel in my fingers
And went to sleep.
The day was warm, and winds were prosy;
I said: “’T will keep.”
I woke and chid my honest fingers —
The gem was gone;
And now an amethyst remembrance
Is all I own.
I read something that I had written for the occasion:
Last spring, I wrote a poem.
It was a short poem, only 23 lines long.
Into that poem I put everything that I am:
all of my hopes, all of my dreams, and all of my love for my family.
I gave that poem to Jennifer, and she bound it into a book.
It was a short book, with only 23 pages to start, but plenty of room to grow.
She put into that book everything that she is:
all of her hopes, all of her dreams and all of her love for our family.
We waited patiently, and in the case of Eloise and Lucy not so patiently,
for the author to arrive. We wondered what the story might turn out to be.
We wondered if the author might be an artist, like Eloise.
We wondered if the author might be a gymnast, like Lucy.
We wondered if the author might be a dreamer, like me.
We wondered if the author might be the best of all possible people, like Jennifer.
The cover was beautiful, the spine was strong, and the pages were smooth and blank.
The book was perfect. The pages were ready for the author to write the story.
But in the end, when the book was delivered, the author was missing.
A tragic accident took the author from us before the story could even get started.
Grace Alice Gilbert-Fagen will never have the chance to write her own story.
And so, in her honor, we who love her, gather to write the epilogue.
Thursday, December 14, 2006
Senator Tim Johnson Conspiracy Theories
Well, I just checked google, and there aren't any conspiracy theories that have yet surfaced about Senator Johnson. I certainly wish him well, both for his own sake, and for the sake of the country.
Just seems to me that we should check him for any Polonium that George W. Putin, or one of his minions, left lying around.
Just seems to me that we should check him for any Polonium that George W. Putin, or one of his minions, left lying around.
Wednesday, December 06, 2006
Employment opportunities redux
Here's an excerpt from an email I sent to a friend who was telling me that she didn't want to commute quite as far as Los Gatos for a job:
So, as I've mentioned before, I'm looking for a couple of people who are interested in addressing the issue of software quality at Netflix, and I'm NOT looking for a browser-poker or someone who dreams up test cases for an offshore outfit to throw warm bodies at.
If you want to help us run with scissors, apply
Anyway, if you *were* working, and there was anyone that you'd want to have on your team again, let me know who they are. They're not necessarily even traditional QA people. Anyone who is smart, curious and diligent, and who understands how computers work qualifies.
I'm trying to build a different brand of QA. It's the java engineers who are ultimately responsible for the correctness, completeness and scalability of their product -- you can't test in any of those attributes. All QA can do is assess whether those attributes exist and advise the developers on any significant lack.
I'm not looking for someone who knows silktest or loadrunner or even jUnit inside and out. I want someone who can understand the fact that our business is driven by three things: 1. customers can sign up, 2. customers can add movies to their queue, 3. customers get discs shipped to them
Everything else is just syntactic sugar that dresses up our core semantics.
So, as I've mentioned before, I'm looking for a couple of people who are interested in addressing the issue of software quality at Netflix, and I'm NOT looking for a browser-poker or someone who dreams up test cases for an offshore outfit to throw warm bodies at.
If you want to help us run with scissors, apply
Tuesday, December 05, 2006
Free Blockbuster Rentals for Netflix Customers
On HackingNetflix there is an article about being able to take the address flap from your Netflix rental envelope into a Blockbuster store and getting a free rental. I wonder if BBI is harvesting the addresses for targeted direct mail campaigns? That free movie might not only be costing you the gas to drive there, but it might cost you a bunch of future junk mail, too.
Thursday, November 30, 2006
Employment opportunities
Most people think of Netflix as either a movie company, or a logisitics company, because on the surface, we appear to buy DVDs from the studios and just mail a bunch of plastic around the country.
However, the secret sauce to the business is that we're really a software company. We're solving problems in how to scale the website to serve 20 million members (Java, Oracle). We're working on machine learning problems (like the Netflix Prize) and scaling problems with our recommendations engine (C++, mysql). I'm most closely involvd in figuring out how quality fits in to all of these development processes. I'm changing the role of a QA engineer from someone who pokes at a browser to someone who writes software to test software.
Then there's all the stuff that the back end teams do (logisitics, inventory, order generation). Once all the software's figured out, it has to run somewhere, and we need good system admins, DBAs and managers for those people that can plan for growth and install, configure and deploy to that plan.
The key thing is that we aren't doing this with an army of developers like an eBay, Yahoo or Google. We've got a relatively small team of really smart software engineers solving problems in an efficient and clever manner. A very deeply ingrained cultural value here is to only hire very senior people who understand how to solve problems, and then go and solve them. It's how we've been able to scale from just over 1MM customers when I joined 3.5 years ago to nearly 6MM customers today. The team that builds the website hasn't grown by more than 10-15% over that time, and we've added a ton of new stuff to the site. It's all because we don't scale the business by doing what we were doing just with more people; we scale through clever automation.
There's a list of what's open at our jobs page, but if there's something that anyone's specifically interested in, let me know. We're always looking for the right kind of person more than we're looking for a particular technology or skill.
However, the secret sauce to the business is that we're really a software company. We're solving problems in how to scale the website to serve 20 million members (Java, Oracle). We're working on machine learning problems (like the Netflix Prize) and scaling problems with our recommendations engine (C++, mysql). I'm most closely involvd in figuring out how quality fits in to all of these development processes. I'm changing the role of a QA engineer from someone who pokes at a browser to someone who writes software to test software.
Then there's all the stuff that the back end teams do (logisitics, inventory, order generation). Once all the software's figured out, it has to run somewhere, and we need good system admins, DBAs and managers for those people that can plan for growth and install, configure and deploy to that plan.
The key thing is that we aren't doing this with an army of developers like an eBay, Yahoo or Google. We've got a relatively small team of really smart software engineers solving problems in an efficient and clever manner. A very deeply ingrained cultural value here is to only hire very senior people who understand how to solve problems, and then go and solve them. It's how we've been able to scale from just over 1MM customers when I joined 3.5 years ago to nearly 6MM customers today. The team that builds the website hasn't grown by more than 10-15% over that time, and we've added a ton of new stuff to the site. It's all because we don't scale the business by doing what we were doing just with more people; we scale through clever automation.
There's a list of what's open at our jobs page, but if there's something that anyone's specifically interested in, let me know. We're always looking for the right kind of person more than we're looking for a particular technology or skill.
Tuesday, August 29, 2006
I stuck the equivalent of two dead bodies in the ground today
That would be the six bags of concrete that weighed sixty pounds each. I'm building an emergency shed out in back of the house. This has been a bit of a saga, going on for the better part of eight months. Maybe I'll tell that whole tale some other time. For now, I can share the more 'concrete' part of the story.
If you haven't worked with concrete then you may be underestimating, to a great degree, my latest foe. Six bags of portland cement, sand and small rocks. Each bag is 0.45 cubic feet of concrete. A half a cubic foot sounds pretty small. It is pretty small when you're trying to do a footing around the perimeter of a 8'x10' shed foundation. I did six bags on Sunday and six bags today while waiting for an air conditioning repairman to show up. It only took me an hour to mix and distribute the six bags, but that was the longest stinking hour of my life. Add on top of that the effort to get the 360 pounds (hence, the two dead bodies reference) of dry concrete down from the garage to the shed site, and I didn't have to go running this morning to get a workout. I considered whether to cut down the amount of water I was mixing in, to balance out the amount of sweat dripping off me that was falling into the mixing trough.
I actually have about 4 more bags to go, then I can actually start assembling the shed on the flat, level foundation that I've built. I'll try to snap some pictures so you all can mock my efforts.
If you haven't worked with concrete then you may be underestimating, to a great degree, my latest foe. Six bags of portland cement, sand and small rocks. Each bag is 0.45 cubic feet of concrete. A half a cubic foot sounds pretty small. It is pretty small when you're trying to do a footing around the perimeter of a 8'x10' shed foundation. I did six bags on Sunday and six bags today while waiting for an air conditioning repairman to show up. It only took me an hour to mix and distribute the six bags, but that was the longest stinking hour of my life. Add on top of that the effort to get the 360 pounds (hence, the two dead bodies reference) of dry concrete down from the garage to the shed site, and I didn't have to go running this morning to get a workout. I considered whether to cut down the amount of water I was mixing in, to balance out the amount of sweat dripping off me that was falling into the mixing trough.
I actually have about 4 more bags to go, then I can actually start assembling the shed on the flat, level foundation that I've built. I'll try to snap some pictures so you all can mock my efforts.
Friday, August 25, 2006
You looking for a job? I'm looking for someone to work!
As you may or may not recall, I'm the QA manager for the Netflix website. I've also been given the responsibility to manage our customer service call center application. If you fit the following description and also happen to like the idea of the job, drop me a line or even better, apply directly.
------------------------------
Senior Quality Assurance Engineer — Customer Service Automation
The Position:
Join Netflix and help insure that every member who has a problem gets that problem solved quickly and effectively. Working on our customer call center software, you will help the people that help our members.
You will provide your expertise in understanding what to test, as well as how to test. Given a schedule that is always too short and a feature list that is always too long, you'll identify and efficiently evaluate those changes to our software that pose the greatest risk to the smooth and effective operation of the customer service staff.
We are looking for an experienced engineer with a background testing applications involving .NET, Oracle, SQL, PL/SQL, telephony integration, email and customer service application user interfaces.
Responsibilities:
• Validate and verify the correct operation of the customer service application
• Continuously improve and extend the automated regression test suite
You are:
• An advocate for the customer service representatives with regard to usable system design
• An advocate for customer service management with regard to accuracy and completeness of the system
• A bridge between the development organization and the operational groups supporting the system
Qualifications:
• 5+ years of rich GUI client application testing, building and deployment
• Deep experience with Oracle and PL/SQL or equivalent database systems
• Experience with C# and nUnit development and testing
• Experience with testing high-traffic, highly scaling, multi-threaded software design
• Able to work autonomously and flexible enough to shift priorities based on changing needs of the business
• Familiarity with use of .NET Remoting, Web Services, 3rd party .NET controls, TestComplete, Parasoft .TEST and Tuvox are all plusses
• A Bachelors or Masters in Computer Science or equivalent engineering
------------------------------
Senior Quality Assurance Engineer — Customer Service Automation
The Position:
Join Netflix and help insure that every member who has a problem gets that problem solved quickly and effectively. Working on our customer call center software, you will help the people that help our members.
You will provide your expertise in understanding what to test, as well as how to test. Given a schedule that is always too short and a feature list that is always too long, you'll identify and efficiently evaluate those changes to our software that pose the greatest risk to the smooth and effective operation of the customer service staff.
We are looking for an experienced engineer with a background testing applications involving .NET, Oracle, SQL, PL/SQL, telephony integration, email and customer service application user interfaces.
Responsibilities:
• Validate and verify the correct operation of the customer service application
• Continuously improve and extend the automated regression test suite
You are:
• An advocate for the customer service representatives with regard to usable system design
• An advocate for customer service management with regard to accuracy and completeness of the system
• A bridge between the development organization and the operational groups supporting the system
Qualifications:
• 5+ years of rich GUI client application testing, building and deployment
• Deep experience with Oracle and PL/SQL or equivalent database systems
• Experience with C# and nUnit development and testing
• Experience with testing high-traffic, highly scaling, multi-threaded software design
• Able to work autonomously and flexible enough to shift priorities based on changing needs of the business
• Familiarity with use of .NET Remoting, Web Services, 3rd party .NET controls, TestComplete, Parasoft .TEST and Tuvox are all plusses
• A Bachelors or Masters in Computer Science or equivalent engineering
Harder's getting easier every day
A few days ago, I wrote about running, and how sometimes it wasn't physically difficult, but mentally difficult to put my body in an active state. I guess sometimes if you can distract the mind, the body will do what it has to.
Case in point, today while running, I was tangling with a statistical problem. There are performance monitoring tools built in to the Netflix website server that keep track of how long it takes to do stuff along the way to presenting a page to a member. We call them tracers. We keep track of the average execution time, how many times it's executed and also buckets for ranges of execution time. For example, we keep track of how many times it took less than 10 milliseconds, and how many times it took 10-50 milliseconds, 50-100 milliseconds, etc. Using them, we can diagnose the health of the system and discover if a recent change is the source of site problems.
I am studying whether we can learn if the system is healthy from comparing the skew of that distribution of buckets. I'd worked out a database query that gave me a value for skew, but I was measuring the skew of the number of hits per bucket, instead of the skew of all the values of all the individual hits (which is what I actually want). For example, if the eight buckets have the values of (10, 14, 100, 20, 3, 0, 0, 0), I would a value based on those eight numbers, with a relatively high positive skew of 2.57, because the 100 is a pretty far outlier to the right, making this distribution of eight numbers 'pointy' on the positive end. What I was really after is the skew of the 147 individual data points with 10 instances of value 1, 14 of value 2, 100 for value 3, etc. This would have a much more neutral skew of -0.56 indicating that it's slightly pointy on the left.
Anyway, while pondering all of this, I was running along and didn't even have time to whine to myself about not wanting to be out there running, and it was over before I knew it. I think I made pretty good time today, too.
It's kind of bugging me that I lost track of another thought that I had running. Something to do with just a little bit of peril. Now I can't recall what it was. I guess maybe I need the inverse of an iPod. Something I can run with and dictate the flotsam that crosses my mind, and be able to play it back later.
Case in point, today while running, I was tangling with a statistical problem. There are performance monitoring tools built in to the Netflix website server that keep track of how long it takes to do stuff along the way to presenting a page to a member. We call them tracers. We keep track of the average execution time, how many times it's executed and also buckets for ranges of execution time. For example, we keep track of how many times it took less than 10 milliseconds, and how many times it took 10-50 milliseconds, 50-100 milliseconds, etc. Using them, we can diagnose the health of the system and discover if a recent change is the source of site problems.
I am studying whether we can learn if the system is healthy from comparing the skew of that distribution of buckets. I'd worked out a database query that gave me a value for skew, but I was measuring the skew of the number of hits per bucket, instead of the skew of all the values of all the individual hits (which is what I actually want). For example, if the eight buckets have the values of (10, 14, 100, 20, 3, 0, 0, 0), I would a value based on those eight numbers, with a relatively high positive skew of 2.57, because the 100 is a pretty far outlier to the right, making this distribution of eight numbers 'pointy' on the positive end. What I was really after is the skew of the 147 individual data points with 10 instances of value 1, 14 of value 2, 100 for value 3, etc. This would have a much more neutral skew of -0.56 indicating that it's slightly pointy on the left.
Anyway, while pondering all of this, I was running along and didn't even have time to whine to myself about not wanting to be out there running, and it was over before I knew it. I think I made pretty good time today, too.
It's kind of bugging me that I lost track of another thought that I had running. Something to do with just a little bit of peril. Now I can't recall what it was. I guess maybe I need the inverse of an iPod. Something I can run with and dictate the flotsam that crosses my mind, and be able to play it back later.
Tuesday, August 22, 2006
Interesting page from ten years ago
I saw an interesting puzzle with a surprising answer while tripping around the net today looking for something else (isn't that always the way)?
The twist to the story entertained me, and the commentary following the twist moved me. Even though the commentary is going on ten years old, most parts are relevant or even more relevant today.
The twist to the story entertained me, and the commentary following the twist moved me. Even though the commentary is going on ten years old, most parts are relevant or even more relevant today.
Tuesday, August 15, 2006
Easy's Getting Harder Every Day
So I run several times a week. Usually every other day. I go running in Rancho San Antonio near my home. Usually just under three miles. Some uphill and some downhill and some flats. Several weeks back, I was running and thought about what it would take to run across America. After all, Interstate 80 runs from San Francisco all the way to New York City. 3000 miles at three miles a day. A thousand days. Just about three years. I could do that, easy. Be kind of hard to only do three miles a day, though. I get through my three miles in 20-30 minutes, usually. I could probably slow down a bit and do 30 miles a day over the course of 10 hours of stops and starts. That gets it down to 100 days. Start in San Francisco in April with nothing but a running outfit and a credit card, then run and walk the whole day. Go to sleep whereever you're at and do it again the next day. Might be able to make it to Manhattan for the Fourth of July.
That seemed doable a few weeks ago (even if a little crazy). Lately, though, it's been harder to get up the hills, and even going down the hills has been awkward and sluggish. Now, running across the country seems not only crazy, but impossible. The hardest part of exercise is willfully putting myself into a state of discomfort. I know that I'll feel good when I'm done, but overcoming that inertia is the biggest obstacle. Once I'm going and I'm away from the house, then it's easier to go, but those first several scores of steps are hard.
That seemed doable a few weeks ago (even if a little crazy). Lately, though, it's been harder to get up the hills, and even going down the hills has been awkward and sluggish. Now, running across the country seems not only crazy, but impossible. The hardest part of exercise is willfully putting myself into a state of discomfort. I know that I'll feel good when I'm done, but overcoming that inertia is the biggest obstacle. Once I'm going and I'm away from the house, then it's easier to go, but those first several scores of steps are hard.
Thursday, July 13, 2006
I wish I could write
I want to write the perfect paragraph. I want it to enfold the sum of all human desire. I want it to motivate the world to do well by others. I want it to have rhythm and grace. I want it to enrapture all readers and purge them of ill intentions. I want honesty and freedom and the ability for all to reach the pinnacle of who they can be. I want to believe in the best of all possible worlds, and I want to believe that the world we live in is that world.
Subscribe to:
Posts (Atom)


