text:
Cross posted on the official SymPy Blog
SymPy 0.7.1 has been released on July 29, 2011. It is available at
The source distribution can be downloaded from:
You can get the Windows installer here:
And the html documentation here:
About SymPy
SymPy is a Python library for symbolic mathematics. It aims to become a full-featured computer algebra system (CAS) while keeping the code as simple as possible in order to be comprehensible and easily extensible. SymPy is written entirely in Python.
Release notes
Major changes
– Python 2.4 is no longer supported. SymPy will not work at all in
Python 2.4. If you still need to use SymPy under Python 2.4 for some
reason, you will need to use SymPy 0.7.0 or earlier.
– The Pyglet plotting library is now an (optional) external dependency.
Previously, we shipped a version of Pyglet with SymPy, but this was
old and buggy. The plan is to eventually make the plotting in SymPy
much more modular, so that it supports many backends, but this has not
been done yet. For now, still only Pyglet is directly supported.
Note that Pyglet is only an optional dependency and is only needed for
plotting. The rest of SymPy can still be used without any dependencies
(except for Python).
– isympy now works with the new IPython 0.11.
– mpmath has been updated to 0.17. See the corresponding mpmath release
notes at http://mpmath.googlecode.com/svn/trunk/CHANGES.
– Added a Subs object for representing unevaluated substitutions. This
finally lets us represent derivatives evaluated at a point, i.e.,
`diff(f(x), x).subs(x, 0)` returns `Subs(Derivative(f(_x), _x), (_x,), (0,))`.
This also means that SymPy can now correctly compute the chain rule
when this functionality is required, such as with `f(g(x)).diff(x)`.
Hypergeometric functions/Meijer G-Functions
– Added classes hyper() and meijerg() to represent Hypergeometric and Meijer G-functions, respectively. They support numerical evaluation (using mpmath) and symbolic differentiation (not with respect to the parameters).
– Added an algorithm for rewriting hypergeometric and meijer g-functions in terms of more familiar, named special functions. It is accessible via the function hyperexpand(), or also via expand_func(). This algorithm recognises many elementary functions, and also complete and incomplete gamma functions, bessel functions, and error functions. It can easily be extended to handle more classes of special functions.
– Added FiniteSet class to mimic python set behavior while also interacting with existing Intervals and Unions
– FiniteSets and Intervals interact so that, for example `Interval(0, 10) – FiniteSet(0, 5)` produces `(0, 5) U (5, 10]`
– FiniteSets also handle non-numerical objects so the following is possible `{1, 2, 'one', 'two', {a, b}}`
– Added ProductSet to handle Cartesian products of sets
– Create using the `*` operator, i.e. `twodice = FiniteSet(1, 2, 3, 4, 5, 6) * FiniteSet(1, 2, 3, 4, 5, 6) or square = Interval(0, 1) * Interval(0, 1)`
– pow operator also works as expected: `R3 = Interval(-oo, oo)**3 ; (3, -5, 0) in R3 == True`
– Subtraction, union, measurement all work taking complex intersections into account.
– Added as_relational method to sets, producing boolean statements using And, Or, Eq, Lt, Gt, etc…
– Changed reduce_poly_inequalities to return unions of sets rather than lists of sets
– Added generating routines for integer partitions and binary partitions. The routine for integer partitions takes 3 arguments, the number itself, the maximum possible element allowed in the partitions generated and the maximum possible number of elements that will be in the partition. Binary partitions are characterized by containing only powers of two.
– Added generating routine for multi-set partitions. Given a multiset, the algorithm implemented will generate all possible partitions of that multi-set.
– Added generating routines for bell permutations, derangements, and involutions. A bell permutation is one in which the cycles that compose it consist of integers in a decreasing order. A derangement is a permutation such that the ith element is not at the ith position. An involution is a permutation that when multiplied by itself gives the identity permutation.
– Added generating routine for unrestricted necklaces. An unrestricted necklace is an a-ary string of n characters, each of a possible types. These have been characterized by the parameters n and k in the routine.
– Added generating routine for oriented forests. This is an implementation of algorithm S in TAOCP Vol 4A.
xyz Spin bases
– The represent, rewrite and InnerProduct logic has been improved to work between any two spin bases. This was done by utilizing the Wigner-D matrix, implemented in the WignerD class, in defining the changes between the various bases. Representing a state, i.e. `represent(JzKet(1,0), basis=Jx)`, can be used to give the vector representation of any get in any of the x/y/z bases for numerical values of j and m in the spin eigenstate. Similarly, rewriting states into different bases, i.e. `JzKet(1,0).rewrite('Jx')`, will write the states as a linear combination of elements of the given basis. Because this relies on the represent function, this only works for numerical j and m values. The inner product of two eigenstates in different bases can be evaluated, i.e. `InnerProduct(JzKet(1,0),JxKet(1,1))`. When two different bases are used, one state is rewritten into the other basis, so this requires numerical values of j and m, but innerproducts of states in the same basis can still be done symbolically.
– The `Rotation.D` and `Rotation.d` methods, representing the Wigner-D function and the Wigner small-d function, return an instance of the WignerD class, which can be evaluated with the `doit()` method to give the corresponding matrix element of the Wigner-D matrix.
Other changes
– We now use MathJax in our docs. MathJax renders LaTeX math entierly in
readable than the previous png math, which uses images. MathJax is
only supported on modern browsers, so LaTeX math in the docs may not
work on older browsers.
– nroots() now lets you set the precision of computations
– Added support for gmpy and mpmath's types to sympify()
– Fix some bugs with lambdify()
– Fix a bug with as_independent and non-commutative symbols.
– Fix a bug with collect (issue 2516)
– Many fixes relating to porting SymPy to Python 3. Thanks to our GSoC
student Vladimir Perić, this task is almost completed.
– Some people were retroactively added to the AUTHORS file.
– Added a solver for a special case of the Riccati equation in the ODE
– Iterated derivatives are pretty printed in a concise way.
– Fix a bug with integrating functions with multiple DiracDeltas.
– Add support for Matrix.norm() that works for Matrices (not just vectors).
– Improvements to the Groebner bases algorithm.
– Plot.saveimage now supports a StringIO outfile
– Expr.as_ordered_terms now supports non lex orderings.
– diff now canonicalizes the order of differentiation symbols. This is
so it can simplify expressions like `f(x, y).diff(x, y) – f(x,
y).diff(y, x)`. If you want to create a Derivative object without
sorting the args, you should create it explicitly with `Derivative`,
so that you will get `Derivative(f(x, y), x, y) != Derivative(f(x, y), y, x)`.
Note that internally, derivatives that can be computed are always
computed in the order that they are given in.
– Added functions `is_sequence()` and `iterable()` for determining if
something is an ordered iterable or normal iterable, respectively.
– Enabled an option in Sphinx that adds a `source` link next to each function, which links to a copy of the source code for that function.
In addition to the more noticeable changes listed above, there have been numerous other smaller additions, improvements and bug fixes in the ~300 commits in this release. See the git log for a full list of all changes. The command `git log sympy-0.7.0..sympy-0.7.1` will show all commits made between this release and the last. You can also see the issues closed since the last release [here](http://code.google.com/p/sympy/issues/list?can=1&q=closed-after%3A2010%2F6%2F13+closed-before%3A2011%2F7%2F30&sort=-closed&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary+Stars+Closed&cells=tiles).
The following people contributed at least one patch to this release (names are given in alphabetical order by last name). A total of 26 people contributed to this release. People with a * by their names contributed a patch for the first time for this release. Five people contributed for the first time for this release.
Thanks to everyone who contributed to this release!
* Tom Bachmann
* Ondřej Čertík
* Renato Coutinho
* Bill Flynn
* Bradley Froehle*
* Gilbert Gede
* Brian Granger
* Emma Hogan*
* Yuri Karadzhov
* Stefan Krastanov*
* Ronan Lamy
* Tomo Lazovich
* Sam Magura*
* Saptarshi Mandal
* Aaron Meurer
* Sherjil Ozair
* Mateusz Paprocki
* Vladimir Perić
* Mario Pernici
* Nicolas Pourcelot
* Min Ragan-Kelley*
* Matthew Rocklin
* Chris Smith
* Vinzent Steinberg
* Sean Vig
* Thomas Wiecki


text:
Today's start: under caution
The first official broadcast this season will get started a little tardy today. Since Buffalo's newest – and most animated – resident has taken all the headlines the past 24 hours the Bisons 2009 Season Preview Show will follow NASCAR 'flag to flag' coverage on WWKB-AM 1520.
Today's preview show will be the first of five airing each Sunday prior to the season beginning at Coca-Cola Field, April 9 at 3:05 p.m. Following the show, it will be available on Bisons.com.
Let's be honest, starting a little late in the first of over a 150 broadcast will be a distant memory since the Bisons have visions of a taking victory lap later this September.

subset: commoncrawl


text:
by Antonia D'Amato
SFC alumna Manpreet Kaur Tiger shows her raw and vulnerable self in the pages of her book, The Soul With A Scar.
Kaur Tiger graduated with a Bachelors of Science and a Masters of Science in Accounting.
When reflecting on her time at SFC, Tiger said: "I loved my experience at SFC because of the small community.
"The professors, staff and students all felt like a big family and that's the reason why I still feel the desire to visit back and give back to my SFC community as an alumni."
On her visits back to SFC, Kaur Tiger spreads love and happiness.
In six chapters, Kaur Tiger takes readers on her journey to find herself and her true happiness. Each poem was written with passion and the quest to show the world how her obstacles only made her stronger.
"In November 2018, I was feeling really down and emotional and I didn't know what to do or why I was feeling all these emotions.
"After writing my heart out for seven days, I realized that everything I was writing were the scars that I had been hiding in my heart for years."
Kaur Tiger wants to empower more and more people who are going through obstacles in their life that feel like they are alone and give them the support to release all their emotions.
Going through those difficult moments in her life, Kaur Tiger was able to turn the negative into something beneficial, something that will influence many people to heal their souls.
"A message to my readers: I hope you find yourself in my book. I have put my heart in your hands in hopes to connect to your soul to heal its deepest scars.
"I invite you to read through my journey of healing and empowerment to look deep within your own heart and take a step towards self-healing too.
"Learn to let go of what no longer serves you and confidently move forward to a happy and filing life. I will be there with you through my book," she said.


text:
Parish Information
St. Michael the Archangel Catholic Parish [Grand Prairie]
Masses offered in: English
2910 Corn Valley Road
Grand Prairie, TX 75052 (Map)
Phone: 972-262-0552
Fax: 972-642-5429
Rev. Joseph Hoa Duc Trinh
Dionisito Arocha
Bob Miller
Pete Rodriguez
Website: St. Michael the Archangel Catholic Parish [Grand Prairie]
Mass Times:
Saturday Anticipatory Mass:
5:30 p.m. (English)
8:00 a.m. (English)
10:00 a.m. (English)
12:00 p.m. (English)
7:00 p.m. (English)
Mon: 8:00 a.m. (English)
Tues: 6:00 p.m. (English)
Wed: 8:00 a.m. (English)
Thu: 6:30 p.m. (English)
Fri: 8:00 a.m. (English)
Sat: 8:00 a.m. (English)
Holy Days:
Please visit parish website, or call parish office.
Reconciliation Times:
Sat: 8:30 a.m.-9:30 a.m. Also by appointment.
Communal Celebrations of the Sacrament are held in Advent and Lent.


text:
Candidates Tied in Polls, Spar on Foreign Policy in Last Debate
BOCA RATON - With the latest NBC and Wall Street Journal poll showing both presidential candidates dead even at 47 percent, both campaigns indicated Monday night's third and final debate on foreign policy at Lynn University in Fla. was a major opportunity for one to pull ahead.
But, according to political analyst and MU political science professor Marvin Overby, there was little disparity in the candidates' positions. Thus, he predicted this debate, alone, would yield only minimal, if any, poll change.
"People tend to watch these debates very much with their partisan lenses on," Overby said. "I think Republicans are going to think Mitt Romney did OK. I think the Democrats are going to think President Obama looked very presidential. I think part of what we're going to see is President Obama trying to push this question of 'can you see Mitt Romney as Commander-in-Chief?'"
Competing for television viewership with a game seven bid to the World Series and Monday night football, Overby suspected the audience--as subtly but noticeably revealed by both candidates in their responses--consisted predominantly of women.
"We might see tonight there was a larger female audience watching because of those major sporting event, and I think we saw both candidates maybe playing to that," Overby said. "In his very first response to a question from Bob Schieffer in talking about the Middle East, what [did] Gov. Romney talk about? He talk[ed] about empowering women in the Middle East--probably trying to close that gender gap."
In his segway into the first and largely anticipated question about the changing Middle East and new face of terrorism, Moderator Bob Schieffer from CBS News made note of the 50-year anniversary of the Cuban Missile Crisis. Analogously, he then asked President Obama and Governor Romney whether there was "an attempt to mislead people" about what happened in the deadly Sept. 11 attack on the U.S. consulate in Benghazi, Libya that left U.S. Ambassador to Libya Chris Stevens and three other Americans dead. The question came just hours after Republican Senate candidate Richard Mourdock called for a Senate investigation into the attack.
President Obama emphasized he "took leadership" post-attack, reminding the audience that the majority of Libyans condemned the seige and rallied in support of the U.S. and its anti-terrorism efforts. Romney said his strategy to "go after the bad guys" and yielding the Muslim community to "reject extremism on its own" entails a three-part plan for better education, gender equality and "rule of law."
After briefly sparring on Egypt, Syria and the most plausible means of destabilizing the Assad regime, Schieffer redirected the discussion to America's role in the world--a topic that prompted dispute over the logistics of Romney's pledge not to cut the military budget. Amid the discussion, Pres. Obama declared what analysts have deemed his most memorable jab of the evening, saying, "Governor, we also have fewer horses and bayonets, because the nature of our military's changed."
Iran also took precedence in Monday's debate, as reports now suggest the U.S. may engage Iran in nuclear talks after the election. As indicated before and re-emphasized tonight, the President and Romney have slightly differing ideas on how to foster sanctions with Iran. But, both expressed support for the U.S.'s protection of Israel if under nuclear attack.
"President Obama again categorically denied this report about possible bilateral negotiations [between the U.S. and Iran], and also President Obama repeatedly tonight invoked Israel--talked about it six or seven times, probably because this debate took place in Florida, a swing state with a large Jewish population--probably trying to close the deal in trying to bring Florida back into the Democratic camp in this election," Overby said.
The last question regarding China exposed what Overby said were the candidates' consistent talking points. At both Monday's debate and the previous debate, Romney professed he would crack down on China and label it as a currency manipulator. Both candidates stressed China, though a valuable trade hub, must be forced to abide by international trade rules. "We like free enterprise, but we've gotta play by the rules," Romney declared.
As they frequently did with several questions, the President and Romney interjected domestic policy issues into their responses on China. Overby said, "I think both candidates tried to make China about domestic policy, which was a common theme tonight in the debate. Even though it was about foreign policy, both candidates took every opportunity to turn the debate back to domestic policy, indicating...that's what's going to decide the Election, not foreign policy.
Schieffer did not ask the candidates directly about Latin America in the debate, but both candidates agreed Latin America is a "huge opportunity" in terms of trade relations.
The debate is the last event at which both candidates will be face-to-face until after the General Election, which will occur on Tues., Nov. 6. On that date, KOMU 8 News will provide live coverage from polling centers and campaign headquarters across the state.


text:
This article originally appeared in Your Tango
While our kids are eagerly anticipating summer vacation, in one state, parents considering a divorce are going back to school.
Oklahoma lawmakers signed a bill requiring divorcing couples with children under the age of 18 to complete a mandatory educational program. We guess parents are not going to be thrilled about this forced enlightenment and yet compatibility with your spouse is a critical subject. And it's one you can pass with flying colors without government intervention if you complete these three homework assignments:
1. Anticipate Problems: Marriage is difficult! Anticipate problems. We are not trying to be negative, but problems exist in all marriages. No one marries someone who thinks and feels exactly as they do. No one. And yet we are often surprised when conflict arises in our homes.
Would your relationship feel different if you anticipated challenges and worked towards understanding instead of hurting your partner's feelings and resenting them for not knowing what you want? Marriage is a little like construction on a road; if you know in advance that there is going to be trouble, you may be irritated, but you can plan for it. On the other hand, if you are not anticipating any issues or delays and the orange cones pop up out of nowhere, your reaction and the outcome is far worse.
No marriage will ever be perfect, but anticipating problems creates a different attitude or environment to work though inevitable marital issues. Norman Vincent Peale said, "change your thoughts, and you change your world." Every marriage has its rough patches, so anticipate them and avoid the lawmakers and lawyers.
2. Stop Fighting About Money: When you do hit those rough patches in your marriage, does it seem like you're always traveling on the same rutted section of road? Do you find yourself fighting about money? If so, you are not alone. 70% of divorced couples say they called it quits because of money.We personally see it over and over again, couples exhausting themselves with frequent fights about money when they are caught in a cycle of assumptions, misunderstandings and blame. It rarely matters if they have lots of money or very little in the bank because money isn't really the problem.
It took us years to see this, not only in our own marriage, but in our work. We'd meet with couples in our financial planning business, put together airtight financial plans for them, and still see them fighting and even divorcing because of "financial issues." The plan (and often piles of cash) didn't make their conflict go away because those arguments were not really about money. They were about relationship issues like trust, respect and connection.
She wants to drive through Starbucks every day; he wants her to save money and make coffee at home. He wants to let loose and enjoy a memorable vacation; she ruins the trip with her constant worrying about costs. She wants to invest in her friend's new company; he is suspicious of another investment risk and sees no need to put money anywhere but under their mattress.
Both parties feel judged, misunderstood and hurt. Disagreements like this could go on forever because people are born with an attitude about money (we call it your Money Personality), which rarely changes. But you and your partner can identify your views about money and the ways they potentially conflict with each other. And then stop fighting about it.
3. Dream Together: One of our money tools to help couples communicate about money in honest respectful ways is the Money Huddle. This is a time set aside to discuss the current state of debt and savings, each person's emotional needs in regards to money and a time to dream about the future together.
Setting aside time to optimistically and realistically discuss money eliminates some of the urge to fight about money day in and day out. If you see a money fight gaining steam, you can table it since you have somewhere to discuss it later. You can curb an argument by saying, "let's talk about that Sunday night in the Money Huddle." We recommend doing it once a month, but if weekly works better at first, go for it.
We have found when couples dream together, they move forward together. Even if those dreams feel boring right now like "save for college," if you tackle them together, someday you'll be able to dream of sailing the high seas or becoming a pastry chef. The process of dreaming together will draw you closer and build a deeper sense of connection and intimacy.
Oklahoma's new law reminds us that marriage requires continual learning. Perfect marriages don't exist, but unions where the couples have anticipated potential problems, identified repeated areas of conflict and dreamed together about an ideal future do.
Just like summer school Calculus, marriage isn't easy, but at least what you learn about your relationship you can use every day — unlike the derivative of the inverse of hyperbolic functions.
Please let us know how we can help you with your homework or earn some extra credit. Email us at [email protected] or leave a comment on Facebook or Twitter.


text:
"Be you therefore perfect, as also your heavenly Father is perfect" (Mat. 5:48)
These words that Jesus Christ gave to to his apostles, disciples and the multitude on the Mount must be taken to heart by every follower of Jesus Christ. We can look to the Church Fathers to help us understand what "being perfect" really means. The Fathers were surprisingly realistic in understanding the rich spiritual meaning of these words. They were far from the modern meaning of the term; where "being perfect" is understood as "perfectionism" and regarded as a cognitive-emotional aberration by mental health clinicians and researchers.
St. Diadochos of Phototiki tells us:
For what is considered perfection in a pupil is far from perfect when compared with the richness of God, who instructs us in love which would still seek to surpass itself, even if we were able to climb to the top of Jacob's ladder by our own efforts.
St. Makarious of Egypt states:
Thus aspiring to perfection two of the best things come about, provided we struggle diligently and unceasingly we seek to attain this perfect measure and growth; and we are not conquered by vanity, but look upon ourselves as petty and mean because we have not yet reached our goal.
St. Makarious again warns us:
Hence, if we do not know how to discriminate, we fancy that we have attained something great and begin to think highly of ourselves, deluding ourselves that we have reached the final stage of purification, though this is very far from the truth.
Ultimately perfection does not come from the individual but from God. "But the God of all grace, who hath called us unto His eternal glory in Christ. Jesus, after you have suffered a little, will Himself perfect you and confirm you and establish you" (1 Peter 5:10).
The psychological model of perfection is very different. Individuals suffering from this malady are motivated by a fear of failure and sense of duty. They strive to be in first place in all manner of endeavours but their accomplishments never seem to satisfy them. They believe there is a special quality to acquiring "perfection." The flawless expression of particular characteristic such as intelligence or the mistake-free application of a specific skill is the only way to earn self esteem and achieve the sense of being special.
This perception may lead individuals to intuit that they have mastery over their emotions and behavior. When unforeseen consequences challenge these unrealistic perceptual intuitions the person becomes self-critical and experiences anxiety and hostility and becomes vulnerable to depression, disgrace, even suicide, through the collapse of self-esteem (Burns, 1989). Slaney and his colleagues (Grzegorek, Slaney, Franze and Rice 2004) add that patients who sense a discrepancy between their unrealistic standards of perfection and their actual accomplishments are most vulnerable to the delirious effects of self-criticism.
This problem is addressed in scripture and by the Fathers. St Matthew records the dialogue between Jesus and His disciples: "Who then can be saved?"; asked the disciples. "And Jesus beholding, said to them: With men this is impossible: but with God all things are possible." What a rock of assurance to all Christians in their struggle to attain "perfection" which is holiness, union with God or theosis.
Perfection comes from God. We have to trust in Him. To think we have attained perfection or can attain it on our own is an unrealistic delusion, vanity. Our goal of union with Christ can only come as a gift, as a grace from God. Theosis is a movement toward the energies of God, and not his essence (Chryssavgis, 2004). Paraphrasing the words of St. Maximus the Confessor, from Him we come and toward Him we tend.
Theosis is not static, it is movement. Theosis is a process that is eternal starting with our new-birth at Baptism, continuing through cooperation with the grace of God -- a grace that extends through our lifetime into eternity. Because we are finite and created (creatures) we can only move toward Him because of His grace because He is infinite through eternity and without end.
Trust and patience are two pillars of our journey to "perfection." In psychological terms patience is attained by letting go of our "unrealistic urgent demanding expectations" and substituting reality the way it actually is. Trust in God and His Divine Providence becomes a powerful "technique" to challenge self-created urgencies and helps heal the malady of perfectionism.
The Church is crucial in this healing. St. Irenaeus said that, "Where the Church is there is the Spirit, and where the Spirit is there is the Church." Thus we have tradition, scripture in tradition (Breck, 2001) the Divine Liturgy, the holy mysteries (e.g. repentance, reception of the Body, Blood, Soul and Divinity of Our Lord God and Savior Jesus Christ) the other prayers of the church, the writings of our holy fathers and mothers of the church, the teachings of our bishops and priests, the holy icons and architecture of our buildings and the love we are to have between one another.
St. Paul reminded the Galatians of the fruits and the virtues involved in this journey: charity, joy, peace, patience, kindness, goodness, faith, modesty and self continence (Gal 5: 23-24). We cannot love God, if we do not love man (1 John). One spiritual director taught that we can only love God to the extent we love the person we hate the most.
Ultimately the spiritual cure for perfectionism is given to us by St. Paul: "For if anyone thinks of himself as something, whereas he is nothing he deceives himself" (Gal 6:3). "God forbid I should glory save in the cross of our Lord Jesus Christ, through whom the world is crucified in me" (Gal 6:14). Here lies true perfection.
Breck, J. (2001). Scripture in Tradition. Crestwood, NY St. Vladimir's Seminary Press.
Burns, D.D. (1989). The Feeling Good Handbook. New York: Morrow.
Chrysasavgis, J. (2004). Light through darkness: The Orthodox tradition. Maryknoll, NY: Orbis.
Grzegorek, J.L, Slaney, R.B., Franze, S. & Rice, KG. (2004). Self-Criticism, dependency, self-esteem and grade point average satisfaction among clusters of perfectionists and nonperfectionists. Journal of Counseling Psychology 51(2),
V. Rev. Fr. George Morelli Ph.D. is a licensed Clinical Psychologist and Marriage and Family Therapist, Coordinator of the Chaplaincy and Pastoral Counseling Ministry of the Antiochian Orthodox Christian Archdiocese, (www.antiochian.org/counseling-ministries) and Religion Coordinator (and Antiochian Archdiocesan Liaison) of the Orthodox Christian Association of Medicine, Psychology and Religion. Fr. George is Assistant Pastor of St. George's Antiochian Orthodox Church, San Diego, California.


text:
Saving the Congo from Man's distruction
To build synergy between business and environment by helping industry to discover the opportunity for profit and growth through sustainable development
Disseminating, diffusing and driving eco-friendly initiatives including eco-innovation and environment management systems in all sectors of industry for minimising impact of industrial activities on environment.
To develop synergy among all stake holders viz government, business, NGOs and Trade Unions for a collective approach in solving environmental problems
To develop and implement strategies for large scale application of renewable energy resources.
To conduct workshops, conferences, seminars to meet the above objectives.
We are working to fulfil our commitment to create a pragmatic approach to environment and development by emphasizing the complementarily and compatibility between the business goals of profitability and environmental sustainability. This exercise needs active participation of organizations who are committed to the preservation of environment. Its also provide a platform to network with like minded environmentalists and project their views nationally and internationally.
Africa Rescue, save the Congo Now ...
The Congo is home to the mighty and ancient yet intact rainforest on the planet. Covering an area more than twice the size of France (1.3 million square kilometres or 358 million acres), DRC's rainforest is the second largest area of contiguous moist tropical forest left in the world and represent approximately one fifth of the world's remaining closed canopy tropical forest.
Read More
- For Businesses
- Find out more about SAVE THE CONGO NOW
- Trading International
- Commercial Solar Services & Energy Saving Products Provided By Enviko
- http://solarpoweronline.co.uk/
- https://www.facebook.com/pages/Save-the-Congo/101060803883
- Save The Congo : UK Registered Charity Registrant's address: 19, Hoxton Square London N1 6NT United Kingdom
Web Resources


text:
Donna's Blueberry Overnight French Toast
This is a treat. Make it ahead — even several days ahead and it will be a big breakfast hit. My husband loves to have the left-overs warmed in the microwave for lunch.
2 tablespoons butter or margarine, melted
1/2 cup brown sugar 2 teaspoons cinnamon
5 slices wheat bread, divided 1 cup fresh blueberries 1 cup fat-free milk 3/4 cup Egg Beaters or 3 eggs 1 ½ teaspoons vanilla 1 teaspoon salt
Butter a 7 x 11 baking pan. In a small bowl, melt butter in microwave. Add brown sugar and cinnamon. Stir to mix well. Sprinkle 1/3 of the mixture on bottom of the baking pan.
Cut crusts off from the bread slices. Cut 4 slices of bread into quarters. Arrange on bottom of the baking pan. Add more bread if needed to completely cover bottom of pan. Top evenly with blueberries. Take remaining piece of bread and crumble. Sprinkle bread crumbles on top of blueberries.
In a small bowl, combine milk, eggs, vanilla and salt. Beat well. Pour over bread. Sprinkle remaining brown sugar mixture on top. Cover and refrigerate several hours or overnight.
When ready to bake, preheat oven to 350 degrees. Bake for 40 minutes or until lightly brown and set in the middle.
Serves 6
Nutritional information per serving:
Calories: 170
Fat, gm.: 4 Protein, gm.: 5 Carb. gm.: 29 Cholesterol, mg.: 10 Fiber: 2.0


text:
I apologize for the absence. I've been on vacation (in Arizona) and otherwise pretty busy. Also, not a whole lot going on in the NFL. (Though with free agency starting and the draft around the corner, I'm starting to tune in a bit more.)
Have read recently at jsonline and PFT that Jeremy Kapinos feels like he's the scapegoat for the not-so-stellar net punting stats because the Pack did not opt to offer him a tender. He may have a point sort of, but he's also not that critical to the team at this time. I'm not sure I would have offered him a tender either, but I have to admit, he did have some big punts down the stretch last season which made me wonder if he might be improving. But even if we tendered him and essentially thought of him as the starter going into next season, we'd need some good competition for him.
Colledge apparently is all worked up about being given a second round tender. I don't understand why. I don't understand what he expected. Read here from Bedard.
He isn't that good and as PFT notes, and as Bedard notes I'd also be surprised if he were pursued by any other teams. It's funny, watching a number of interviews over the years with Colledge, I get the impression that he is one of those guys who views himself as far more valuable to the team than most people think. Not saying he's a jerk or anything, but he just seems too comfortable and he just acts too secure with his place on the team.


text:
60 mm (2-3/8 in.) cutting depth for 40% deeper holes in 1 pass and increased productivity.
Free Shipping on all Orders
Orders entered by 1:00 PM EST Ship the Same DayToggle menu Toggle menu
Free Shipping on all Orders
Orders entered by 1:00 PM EST Ship the Same Day
+ Free, Same Day Shipping *see details »
Changing the world one light bulb at a time for over 40 years.About Us
If you have any questions about your order, please contact us.Contact Us
Not satisfied? No problem! Return it in 30 Days for your money back.Learn More
Order by 1pm for free shipping on all products for U.S. Lower 48.Learn More
Your order info is private and secure with GeoTrust SSL.About Us
Calculate Savings! See what you can save.
Have Questions? Talk to an ESL Expert.
Enjoy free same day shipping on all US orders. Order by 1pm EST.Learn more »
Have questions about a purchase? Talk to an ESL specialist.Contact Us »
Not satisfied? Send it back within 30 days for a full refund!About Us »


text:
Ejection leads to learning experience for Baez
CHICAGO -- The development of Javier Baez continued this past weekend, and Cubs president of baseball operations Theo Epstein said the team's top prospect got an important lesson, thanks to his teammates.
Baez was hitless in his first nine at-bats at Triple-A Iowa and ejected from Saturday's game after arguing a checked swing third-strike call. He reportedly exchanged words and had an altercation in the dugout with teammate Eli Whiteside.
"He had a nice conversation with a teammate and that was a good thing," Cubs manager Rick Renteria said Tuesday. "It's a tremendously great learning experience."
Baez ended his hitless streak in style Sunday with a pinch-hit home run in the seventh inning.
"I think it was a great development and experience for him," Epstein said. "He started out not feeling real comfortable at the plate and he let it frustrate him, and he showed it on the field. His teammates, they know how good he can be and how good a teammate he can be and they called him out on it.
"He responded just the right way and took it to heart and came back the next day with a pinch-hit home run," Epstein said. "He's hit the ball hard in five straight plate appearances. He's taking the responsibility of being a good teammate and taking it to heart. Experiences like that will just help him get where he needs to be."
And this is part of the process Baez, 21, has to go through in the Minor Leagues.
"You want that stuff to happen down there," Epstein said. "It helps our players mature, so when they get up here, they can handle a broader set of experiences that are thrown at them."
Baez had struck out six times in his first nine at-bats. The Cubs know he won't get a hit every at-bat when he does get to the big leagues.
"It's more important how players respond to adversity," Epstein said. "You want everyone to go through adversity in the Minor Leagues, because it's important for them to learn how to deal with failure and make adjustments and come back even stronger, because that's the type of thing you have to deal with when you're breaking in in the big leagues."


text:
Written on 04 March
Saturday today, and I'm feeling lethargic. Very lethargic. I've got bills to pay, friends to meet, a room floor to clean, books that I badly want to read...but I just don't want to budge. I sit by my computer; watch Law & Order Season 8 (P.S. It's particularly good. Mariska Hargitay is terrific and Chris Meloni is certainly an interesting actor to watch), and read the news.
I dream of running a marathon, but don't do nearly enough exercises to make it through the first five minutes. Not that I would run a marathon even if I were in form. Where does one run a marathon here anyway? Maybe I could go to the store. Maybe I could tear myself from this desk and start with the messy floor and work my way to an appetite.
Maybes. Life today is packed with maybes. What am I going to do? Where will I be one year from now? What will I accomplish a couple of hours from now?
Friday began a little badly. A slight hiccup and tears during the beginning of the day. But never mind, it got better. I had a nice lunch with some of the other colleagues for the first time, as in nice conversation but not so great. Runa's left the company. She gave in her papers last month and we all knew this was coming but we just didn't anticipate how much we'd actually miss her.
Later on in the evening, we went to a lounge bar for dinner and a little alcohol therapy. Runa (a very famous name here on my blog) and I have the kind of friendship that endures hurdles. We talk about everything with no unease, no spiritless conversation. Several years ago when I noticed how a few friends of mine had grown distant and ultimately faded away only to hear from them on Christmases and birthdays, in some way I hoped Runa and I would be friends for a very long time, for always. And especially in the last month I kept reminding her that we must never lose touch all the while holding back tears that kept rushing forward. The good person that she is didn't laugh; she saw how serious I was and in her own way told me that I need never worry where she was concerned.
And this is how Friday ended: I lay in bed - very buzzed - opened my mind to those wonderful moments we had shared through college and work, and then let the alcohol do its job. I managed to wake up a little past eleven o'clock on Saturday to wash my face and brush my teeth, and to write this.
Runa, I'm lucky to have a friend like you who cares for me so damn much. You are so beautiful and so full of grace. I don't think I've met anyone as gifted as you, or anyone with such varied interests. All our years together, I've enjoyed talking to you about writing, books, men, music and love. You've been a splendid friend - wise beyond your years, kind, thoughtful, and blessed with the ability to converse with just about anyone. Thank you. Not merely for the gift of the years of friendship but also for putting up with me through rolling eyes, flaring tempers and impulsive choices. Thank you for being around when I most needed you.
In the ability of being competent to talk about what interests and inspirations are so clearly evident, I am always trying to keep myself in touch with as much music as possible. There's so much out there, it's enough to get you feeling a bit tense, however, I'm surfing through it one artist at a time.
After waiting for months for this album by James Morisson, I wasn't really sure if I'd want to hear it for concern of understanding that it might not be what I was hoping...which the case wasn't as this album is something as wonderful and musically clever as his previous albums with the grace just short of a masterpiece. At this point I'd say that what I was looking forward to hear didn't disappoint at all. There's not a song that obviously stands out apart from the rest and there is also positively not a track that should have been removed. It really is rather a relatively good album, melodically as well as lyrically. I'd like to think that most people like what they listen to because it sincerely calls to them. And this one does to me.
For you, Runa. To this day, I marvel at how our years together made me respect you because you totally defined what a good friend should be like. Love you!
James Morrison with 'You make it real'
April 06, 2009
To Runa,
Written on 04 March
Keyed in by Eveline 5 Pulses Say
Labels: aruna, friend's leaving, James Morrison, runa, songs for you, truths for me, you make it real


text:
From Fedora Project Wiki
< Anaconda
|Line 25:
|Line 25:
* Telnet support has been removed. You can still use ssh to remotely access an installation.
* Telnet support has been removed. You can still use ssh to remotely access an installation.
* The following command line options have been removed: vesa.
* The following command line options have been removed: vesa.
== For Developers ==
== For Developers ==
Revision as of 07:48, 13 September 2010
This page summarizes significant additions, removals, and behavior changes in anaconda from one version of Fedora to the next. It is not meant as an exhaustive list of all changes, nor does it discuss bug fixes unless those fixes are a serious change. If you see something weird (in a good or bad way) that is not explained below, please let us know so we can consider adding it to this page.
Fedora 13 to Fedora 14 (as of anaconda-14.17-1)
Kickstart Changes
- network --ipv6= and ipv6 values for network --gateway= are now supported.
- part --grow is no longer supported for partitions of fstype RAID. You must specify the final size you want to use.
- part --size is no longer required. If you do not specify a size, anaconda will assume the default.
- url --noverifyssl and repo --noverifyssl allow you to skip verification of the SSL cert check that causes some HTTPS installs to fail.
- The following kickstart commands have been deprecated and no longer do anything: interactive.
- Throughout kickstart, disks may now be referred to via /dev/disk/by-path, /dev/disk/by-label, and /dev/disk/by-uuid in addition to device node names. This is to mitigate the fact that device node names are unstable. Please see Anaconda/Kickstart.
For Users
- anaconda now uses a NetworkManager-based configuration UI for setting up network connections. For DVD/CD installs, using this dialog will result in the network configuration being applied to the installed system as well. Wireless connections are supported via this interface as well.
- If no directory is used in stage2=hd:, default to /images/install.img.
- If the basic devices selection is made, the filter UI will be skipped entirely.
- Just like with all other forms of installation, NFS installs will also search for updates.img and product.img. Please see Anaconda/Updates.
- Memory requirements have been increased due to changes in the size of the installation environment and us being more realistic about how much is required.
- Multipath and RAID support (especially in the filter and clear disks UIs) has been greatly improved.
- Remote logging is greatly improved. Please see Anaconda/Logging.
- s390 only: anaconda will offer to format previously unformatted DASD devices.
- Support for whole-disk formats has been improved.
- Telnet support has been removed. You can still use ssh to remotely access an installation.
- The following command line options have been removed: vesa.
- With virtual machine installs it is now possible to have all logs produced during the installation forwarded to the host machine. See Remote logging via virtio.
For Developers
- anaconda is now a proper Python module, installed under /usr/lib/python?.?/site-packages/pyanaconda. This means you can import it via "import pyanaconda.whatever", instead of using a sys.path hack. The source layout in git reflects the same layout in the installed package - everything that's part of the module is under pyanaconda/. This means your old custom scripts to build the updates might no longer produce a working image. The Makefiles and updates image scripts in scripts/ have been changed to do the right thing. Please see Anaconda/SourceOverview.
- "make check" uses pylint instead of pychecker now.
- There is no more InstData class. Its contents have either been moved into the Anaconda class, moved into other classes if appropriate, or removed entirely.
- There is very little in /usr/lib/anaconda-runtime anymore. Most things have moved to /usr/share/anaconda or /usr/libexec/anaconda.
For Rebuilders
Fedora 14 to Fedora 15 (as of anaconda-15.0-1)
Kickstart Changes
- %packages, %pre, %post, and %traceback must now end with a %end token.
- The following kickstart commands have been removed, and will cause an error if used: key.
- The following kickstart command options have been removed, and will cause an error if used: bootloader --lba32, driverdisk --type, firewall --telnet, logvol --bytes-per-inode, partition --bytes-per-inode --start --end, raid --bytes-per-inode, xconfig --driver --depth --resolution --videoram, zfcp --scsiid --scsilun
For Users
- anaconda will warn if there are no previous installations to be upgraded. This prevents the user from thinking an upgrade is proceeding when anaconda wants to do an install.
- If the custom partitioning selection is made, the two panel clear disk UI will be skipped.
- The following command line options have been removed: nousbstorage.


text:
Hope College has been ranked No. 44 nationally in Division III Collegiate Power Rankings done by the National Collegiate Scouting Association (NCSA). There are 449 Division III institutions.
In addition, Hope is ranked No. 76 in the overall rankings that includes schools from all three NCAA divisions (1,073 institutions).
The NCSA is a resource that matches high school athletes with collegiate athletic programs, ranking schools based on strength of academics, athletics and graduation rates.
According to the NCSA, the Collegiate Power Rankings are calculated for each college and university at the NCAA Division I, II and III levels by averaging the U.S. Sports Academy "Directors' Cup" rankings, the institution's NCAA student-athlete graduation rate and the U.S. News & World Report ranking.
In those individual rankings, Hope is No. 37 in the Director's Cup rankings, No. 148 in NCAA graduation rate and No. 88 among national liberal arts colleges in the U.S. News & World Report rankings.


text:
At The Plate – I know this is the "at the plate" section, but I have to talk about what you have already noticed, that big fat ZERO in the hit column for Dunedin. That's right, Daytona started Matt Loosen tossed a no-hitter today, more on that below. The D-Cubs offense gave Loosen plenty of support early on as they scored seven times in the first three innings. Zeke DeVoss was 1-for-3 with a triple, a walk, a stolen base, and two runs scored. Dustin Geiger continued his solid season going 2-for-4 with a double, a walk, and a run scored, he's now hitting .282 on the season. Bijan Rademacher was productive today as he went 1-for-2 with his first home run of the season, two RBI's, two walks (Cubs Way!), and two runs scored.
On The Mound – Two words, Matt, Loosen. Loosen was brilliant (understatement, I know) as he was almost perfect going nine no hit innings while walking two and striking out nine. Shortest "on the mound" recap in the History of ever.
The final out of Matt Loosen's no-hitter!
Full Box Score Game One / Full Box Score Game Two
- Boise Hawks – Shawon Dunston was 2-for-4 with two walks, an RBI, and a run scored.
- Boise Hawks – Jacob Rogers was 2-for-3 with an RBI, three walks (Cubs Way!), and three runs scored.
- Boise Hawks – Daniel Lockhart was 3-for-4 with two RBI's, and a run scored.
- Boise Hawks – Dae-Eun Rhee was solid going three scoreless innings giving up two hits while striking out three.
- Tennessee Smokies – A.J. Morris was good in game two, he went five innings giving up one run on six hits while striking out three.
- Iowa Cubs – Logan Watkins was 2-for-4 with two doubles, a walk, an RBI, and a run scored.
- Iowa Cubs – Brad Nelson was 3-for-4 with a double, and two RBI's.
- Iowa Cubs – Luis Flores was 2-for-4 with his fourth home run of the season, a double, an RBI, and a run scored.
- Iowa Cubs – Chris Rusin got the win for Iowa, he worked six innings giving up two runs on four hits while walking four and striking out two.
Notes: AZL Cubs had the day off, and Kane County was rained out.


text:
How to Sleep Well When You're Busy
How to Get a Good Night's Sleep This Holiday Season
You don't have time to sleep, you say? That's no excuse. Neglecting sleep in favor of fitting in more errands and holiday obligations can affect all areas of your life, from your mood to your waistline, so even if your schedule is packed to the brim, make sure you use these tips for a better night's sleep this holiday season.
Wake up and work out: Exercise is a tried and true way to help you sleep, but it's hard to stick to a routine after work during these short Winter months. And even if you can fit in a late-night workout, new research says that might not be the best idea if you want to have a restful sleep. Instead, wake up a little bit earlier to fit in a workout (or go at lunch); expending all that energy earlier in the day will make you that much happier to crawl into your bed at night. If you're having trouble waking up early enough for exercise, read our tips on how to wake up in the morning to work out.
Sleepy soundtrack: Establishing a wind-down routine is important if you have trouble falling asleep — and is especially so when never-ending to-do lists keep you from quieting your mind. Tune in to our soothing 40-minute playlist to help you relax and drift to sleep so you spend less of your precious bedtime trying to fall asleep and more time getting quality Zs.
Yoga in bed: Feeling restless? These easy yoga poses are another relaxing way to fall (and stay) asleep. And you can do these stretches right in your bed — perfect if holiday stress is making you wake up in the middle of the night and you need help going back to sleep. The next time you're feeling tense in bed, stretch joints and muscles with our video of three yoga poses you can do in bed.


text:
WebGL is an in-browser 3D renderer based on OpenGL, which lets you display your 3D content directly into an HTML5 page. In this tutorial I will cover all the essentials you need to get started using this framework.
There are a couple things you should know before we get started. WebGL is a JavaScript API that renders 3D content to an HTML5 canvas. It does this by using two scripts that are known in the "3D world" as Shaders. The two shaders are:
- The vertex shader
- The fragment shader
Now don't get too nervous when you hear these names; it's just a fancy way of saying, "position calculator" and "color chooser" respectively. The fragment shader is the easier one to understand; it simply tells WebGL what color a given point on your model should be. The vertex shader is a little more technical, but basically it converts the points in your 3D models into 2D coordinates. Because all computer monitors are flat 2D surfaces, and when you see 3D objects on your screen, they are merely an illusion of perspective.
If you want to know exactly how this calculation works, you'd need to ask a mathematician, because it uses advanced 4 x 4 matrix multiplications, which are a bit beyond the 'Essentials' tutorial. Luckily, you don't have to know how it works because WebGL will take care of most of it. So let's get started.
Step 1: Setting Up WebGL
WebGL has a lot of small settings that you have to setup nearly every time you draw something to the screen. In order to save time and make your code neat, I am going to make a JavaScript object that will contain all the 'behind the scene' things in a separate file. To get started, create a new file called 'WebGL.js' and place the following code inside it:
function WebGL(CID, FSID, VSID){ var canvas = document.getElementById(CID); if(!canvas.getContext("webgl") && !canvas.getContext("experimental-webgl")) alert("Your Browser Doesn't Support WebGL"); else { this.GL = (canvas.getContext("webgl")) ? canvas.getContext("webgl") : canvas.getContext("experimental-webgl"); this.GL.clearColor(1.0, 1.0, 1.0, 1.0); // this is the color this.GL.enable(this.GL.DEPTH_TEST); //Enable Depth Testing this.GL.depthFunc(this.GL.LEQUAL); //Set Perspective View this.AspectRatio = canvas.width / canvas.height; //Load Shaders Here } }
This constructor function takes in the IDs of the canvas and the two shader objects. First, we get the canvas element and make sure it supports WebGL. If it does, then we assign the WebGL context to a local variable called "GL". The clear color is simply the background color, and it is worth noting that in WebGL most of the parameters go from 0.0 to 1.0 so you would have to divide your rgb values by 255. So in our example 1.0, 1.0, 1.0, 1.0 means a white background with 100% visibility (no transparency). The next two lines tell WebGL to calculate depth and perspective so that an object closer to you will block objects behind it. Finally, we set the aspect ratio which is calculated by dividing the canvas's width by it's height.
Before we continue and load the two shaders, let's write them. I am going to write these in the HTML file where we are going to put the actual canvas element. Create an HTML file, and place the following two script elements just before the closing body tag:
<script id="VertexShader" type="x-shader/x-vertex"> attribute highp vec3 VertexPosition; attribute highp vec2 TextureCoord; uniform highp mat4 TransformationMatrix; uniform highp mat4 PerspectiveMatrix; varying highp vec2 vTextureCoord; void main(void) { gl_Position = PerspectiveMatrix * TransformationMatrix * vec4(VertexPosition, 1.0); vTextureCoord = TextureCoord; } </script> <script id="FragmentShader" type="x-shader/x-fragment"> varying highp vec2 vTextureCoord; uniform sampler2D uSampler; void main(void) { highp vec4 texelColor = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t)); gl_FragColor = texelColor; } </script>
The vertex shader is created first, and we define two attributes:
- the vertex position, which is the location in x,y and z coordinates of the current vertex (Point in your Model)
- the texture coordinate; the location in the texture image that should be assigned to this point
Next, we create variables for the transformation and perspective matrices. These are used to convert the 3D model into a 2D image. The next line creates a shared variable to the fragment shader, and in the main function we calculate the gl_Position (the final 2D position). We then assign the 'current texture coordinate' to the shared variable.
In the fragment shader we just take the coordinates we defined in the vertex shader and we 'sample' the texture at that coordinate. Basically we are just getting the color in the texture that corresponds to the current point on our geometry.
Now that we have written the shaders, we can go back to loading them in our JS file. So replace the "//Load Shaders Here" with the following code:
var FShader = document.getElementById(FSID); var VShader = document.getElementById(VSID); if(!FShader || !VShader) alert("Error, Could Not Find Shaders"); else { //Load and Compile Fragment Shader var Code = LoadShader(FShader); FShader = this.GL.createShader(this.GL.FRAGMENT_SHADER); this.GL.shaderSource(FShader, Code); this.GL.compileShader(FShader); //Load and Compile Vertex Shader Code = LoadShader(VShader); VShader = this.GL.createShader(this.GL.VERTEX_SHADER); this.GL.shaderSource(VShader, Code); this.GL.compileShader(VShader); //Create The Shader Program this.ShaderProgram = this.GL.createProgram(); this.GL.attachShader(this.ShaderProgram, FShader); this.GL.attachShader(this.ShaderProgram, VShader); this.GL.linkProgram(this.ShaderProgram); this.GL.useProgram(this.ShaderProgram); //Link Vertex Position Attribute from Shader this.VertexPosition = this.GL.getAttribLocation(this.ShaderProgram, "VertexPosition"); this.GL.enableVertexAttribArray(this.VertexPosition); //Link Texture Coordinate Attribute from Shader this.VertexTexture = this.GL.getAttribLocation(this.ShaderProgram, "TextureCoord"); this.GL.enableVertexAttribArray(this.VertexTexture); }
Your textures have to be in even byte sizes or you will get an error...like 2x2, 4x4, 16x16, 32x32...
We first make sure that the shaders exist, and then we move on to loading them one at a time. The process basically gets the shader's source code, compiles it, and attaches it to the central shader program. There is a function, called LoadShader, that gets the shader code from the HTML file; we will get to that in a second. We use the 'shader program' to link the two shaders together, and it give us access to their variables. We store the two attributes we defined in the shaders; so we can input our geometry into them later.
Now let's look at the LoadShader function, You should put this outside of the WebGL function:
function LoadShader(Script){ var Code = ""; var CurrentChild = Script.firstChild; while(CurrentChild) { if(CurrentChild.nodeType == CurrentChild.TEXT_NODE) Code += CurrentChild.textContent; CurrentChild = CurrentChild.nextSibling; } return Code; }
It basically just cycles through the shader and collects the source code.
Step 2: The "Simple" Cube
In order to draw objects in WebGL you are going to need the following three arrays:
- vertices; the points that make up your objects
- triangles; tells WebGL how to connect the vertices into surfaces
- texture coordinates; defines how the vertices are mapped on the texture image
This is referred to as UV mapping. For our example let's create a basic cube. I will split the cube into 4 vertices per side which connect into two triangles. let's make a variable that will hold a cube's arrays.
var Cube = { Vertices : [ // X, Y, Z Coordinates //Front 1.0, 1.0, -1.0, 1.0, -1.0, -1.0, -1.0, 1.0, -1.0, -1.0, -1.0, -1.0, //Back 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, //Right 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, -1.0, //Left -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, -1.0, -1.0, -1.0, -1.0, //Top 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, //Bottom 1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0 ], Triangles : [ // Also in groups of threes to define the three points of each triangle //The numbers here are the index numbers in the vertex array //Front 0, 1, 2, 1, 2, 3, //Back 4, 5, 6, 5, 6, 7, //Right 8, 9, 10, 9, 10, 11, //Left 12, 13, 14, 13, 14, 15, //Top 16, 17, 18, 17, 18, 19, //Bottom 20, 21, 22, 21, 22, 23 ], Texture : [ //This array is in groups of two, the x and y coordinates (a.k.a U,V) in the texture //The numbers go from 0.0 to 1.0, One pair for each vertex //Front 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, //Back 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, //Right 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, //Left 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, //Top 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, //Bottom 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0 ] };
It may seem like a lot of data for a simple cube, however, in in part two of this tutorial, I will make a script that will import your 3D models so you don't have to worry about calculating these.
You may also be wondering why I made 24 points (4 for each side), when there is really only eight total unique points on a cube? I did this because you can only assign one texture coordinate per vertex; so if we would only put in the 8 points, then the whole cube would have to look the same because it would wrap the texture around all the sides that the vertex touches. But this way, each side has it's own points so we can put a different part of the texture on each side.
We now have this cube variable and are ready to start drawing it. Let's go back to the WebGL method and add a
Draw function.
Step 3: The Draw Function
The procedure for drawing objects in WebGL has a lot of steps; so, it's a good idea to make a function to simplify the process. The basic idea is to load the three arrays into WebGL buffers. We then connect these buffers to the attributes we defined in the shaders along with the transformation and perspective matrices. Next, we have to load the texture into memory, and, finally, we can call the
draw command. So let's get started.
The following code goes inside the WebGL function:
this.Draw = function(Object, Texture) { var VertexBuffer = this.GL.createBuffer(); //Create a New Buffer //Bind it as The Current Buffer this.GL.bindBuffer(this.GL.ARRAY_BUFFER, VertexBuffer); // Fill it With the Data this.GL.bufferData(this.GL.ARRAY_BUFFER, new Float32Array(Object.Vertices), this.GL.STATIC_DRAW); //Connect Buffer To Shader's attribute this.GL.vertexAttribPointer(this.VertexPosition, 3, this.GL.FLOAT, false, 0, 0); //Repeat For The next Two var TextureBuffer = this.GL.createBuffer(); this.GL.bindBuffer(this.GL.ARRAY_BUFFER, TextureBuffer); this.GL.bufferData(this.GL.ARRAY_BUFFER, new Float32Array(Object.Texture), this.GL.STATIC_DRAW); this.GL.vertexAttribPointer(this.VertexTexture, 2, this.GL.FLOAT, false, 0, 0);
var TriangleBuffer = this.GL.createBuffer(); this.GL.bindBuffer(this.GL.ELEMENT_ARRAY_BUFFER, TriangleBuffer); //Generate The Perspective Matrix var PerspectiveMatrix = MakePerspective(45, this.AspectRatio, 1, 10000.0); var TransformMatrix = MakeTransform(Object); //Set slot 0 as the active Texture this.GL.activeTexture(this.GL.TEXTURE0); //Load in the Texture To Memory this.GL.bindTexture(this.GL.TEXTURE_2D, Texture); //Update The Texture Sampler in the fragment shader to use slot 0 this.GL.uniform1i(this.GL.getUniformLocation(this.ShaderProgram, "uSampler"), 0); //Set The Perspective and Transformation Matrices var pmatrix = this.GL.getUniformLocation(this.ShaderProgram, "PerspectiveMatrix"); this.GL.uniformMatrix4fv(pmatrix, false, new Float32Array(PerspectiveMatrix)); var tmatrix = this.GL.getUniformLocation(this.ShaderProgram, "TransformationMatrix"); this.GL.uniformMatrix4fv(tmatrix, false, new Float32Array(TransformMatrix)); //Draw The Triangles this.GL.drawElements(this.GL.TRIANGLES, Object.Trinagles.length, this.GL.UNSIGNED_SHORT, 0); };
The vertex shader positions, rotates, and scales your object based on the transformation and perspective matrices. We will go more in depth into transformations in the second part of this series.
I have added two functions:
MakePerspective() and
MakeTransform(). These just generate the necessary 4x4 Matrices for WebGL. The
MakePerspective() function accepts the vertical field of view, the aspect ratio, and the nearest and farthest points as arguments. Anything that is closer than 1 unit and farther than 10000 units will not be displayed, but you can edit these values to get the effect you are looking for. Now let's take a look at these two functions:
function MakePerspective(FOV, AspectRatio, Closest, Farest){ var YLimit = Closest * Math.tan(FOV * Math.PI / 360); var A = -( Farest + Closest ) / ( Farest - Closest ); var B = -2 * Farest * Closest / ( Farest - Closest ); var C = (2 * Closest) / ( (YLimit * AspectRatio) * 2 ); var D = (2 * Closest) / ( YLimit * 2 ); return [ C, 0, 0, 0, 0, D, 0, 0, 0, 0, A, -1, 0, 0, B, 0 ]; } function MakeTransform(Object){ return [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, -6, 1 ]; }
Both these matrices effect the final look of your objects, but the perspective matrix edits your '3D world' like the field of view and the visible objects while the transformation matrix edits the individual objects like their rotation scale and position. With this done we are almost ready to draw, all that's left is a function to convert an image into a WebGL texture.
Step 4: Loading Textures
Loading a texture is a two step process. First we have to load an image like you would in a standard JavaScript application, and then we have to convert it to a WebGL texture. So let's start with the second part since we are already in the JS file. Add the following at the bottom of the WebGL function right after the Draw command:
this.LoadTexture = function(Img){ //Create a new Texture and Assign it as the active one var TempTex = this.GL.createTexture(); this.GL.bindTexture(this.GL.TEXTURE_2D, TempTex); //Flip Positive Y (Optional) this.GL.pixelStorei(this.GL.UNPACK_FLIP_Y_WEBGL, true); //Load in The Image this.GL.texImage2D(this.GL.TEXTURE_2D, 0, this.GL.RGBA, this.GL.RGBA, this.GL.UNSIGNED_BYTE, Img); //Setup Scaling properties this.GL.texParameteri(this.GL.TEXTURE_2D, this.GL.TEXTURE_MAG_FILTER, this.GL.LINEAR); this.GL.texParameteri(this.GL.TEXTURE_2D, this.GL.TEXTURE_MIN_FILTER, this.GL.LINEAR_MIPMAP_NEAREST); this.GL.generateMipmap(this.GL.TEXTURE_2D); //Unbind the texture and return it. this.GL.bindTexture(this.GL.TEXTURE_2D, null); return TempTex; };
It's worth noting that your textures have to be in even byte sizes, or you will receive an error; so they have to be dimensions, like 2x2, 4x4, 16x16, 32x32, and so on. I added the line to flip the Y coordinates simply because my 3D application's Y coordinates were backward, but it will depend on what you are using. This is due to some programs making 0 in the Y axis the top left corner and some applications make it the bottom left corner. The scaling properties that I set just tell WebGL how the image should up-scale and down-scale. You can play around with different options to get different effects, but I thought these worked best.
Now that we are done with the JS file, let's return to the HTML file and implement all of this.
Step 5: Wrapping It Up
As I mentioned earlier, WebGL renders to a canvas element. That's all we need in the body section. After adding the canvas element, your html page should look like the following:
It's a pretty simple page. In the head area I have linked to our JS file. Now let's go implement our Ready function, which gets called when the page loads:
//This will hold our WebGL variable var GL; //Our finished texture var Texture; //This will hold the textures image var TextureImage; function Ready(){ GL = new WebGL("GLCanvas", "FragmentShader", "VertexShader"); TextureImage = new Image(); TextureImage.onload = function(){ Texture = GL.LoadTexture(TextureImage); GL.Draw(Cube, Texture); }; TextureImage.src = "Texture.png"; }
So we create a new WebGL object and pass in the IDs for the canvas and shaders. Next, we load the texture image. Once loaded, we call the
Draw() method with the Cube and the Texture. If you followed along, your screen should have a static cube with a texture on it.
Now even though I said we will cover transformations next time, I can't just leave you with a static square; it's not 3D enough. Let's go back and add a small rotation. In the HTML file, change the
onload function to look like so:
TextureImage.onload = function(){ Texture = GL.LoadTexture(TextureImage); setInterval(Update, 33); };
This will call a function called
Update() every 33 milliseconds which will give us a frame rate of about 30 fps. Here is the update function:
function Update(){ GL.GL.clear(16384 | 256); GL.Draw(GL.Cube, Texture); }
This is a fairly simple function; it clears the screen and then draws the updated Cube. Now, let's go to the JS file to add the rotation code.
Step 6: Adding Some Spin
I'm not going to fully implement transformations, because I'm saving that for next time, but let's add a rotation around the Y-axis. The first thing to do is add a Rotation variable to our Cube object. This will keep track of the current angle, and allow us to keep incrementing the rotation. So the top of your Cube variable should look like this:
var Cube = { Rotation : 0, //The Other Three Arrays };
Now let's update the
MakeTransform() function to incorporate the rotation:
function MakeTransform(Object){ var y = Object.Rotation * (Math.PI / 180.0); var A = Math.cos(y); var B = -1 * Math.sin(y); var C = Math.sin(y); var D = Math.cos(y); Object.Rotation += .3; return [ A, 0, B, 0, 0, 1, 0, 0, C, 0, D, 0, 0, 0, -6, 1 ]; }
And that's it! In the next tutorial, we will cover loading models and performing transformations. I hope you enjoyed this tutorial; feel free to leave any questions or comments that you might have below.
Envato Tuts+ tutorials are translated into other languages by our community members—you can be involved too!Translate this post


text:
Brussels Airlines is Belgium's national airline, connecting the capital of Europe to more than 120 destinations, whereof 22 in Africa, the continent Brussels Airlines considers its second home. Besides Africa, Brussels Airlines offers more than 90 destinations in Europe, 3 in North America and Tel Aviv. The company has over 4,000 employees and 48 aircraft operating some 250 flights daily, flying more than 10 million passengers a year to, via and from Brussels Airport. Thanks to its no compromise positioning, Brussels Airlines combines competitive fares with the highest service quality. With yearly changing Belgian Star Chefs, its wide offer of Belgian food and drinks and the six Belgian Icons, Brussels Airlines is an ambassador of its country, bringing the world to Belgium and the best of Belgium to the world.
Our mission is to be the most personal airline, bringing people together and making travel a pleasure.
Brussels Airlines offers cargo capacity on all its flights, commercialized by Lufthansa Cargo. The airline also handles the daily maintenance of its aircraft fleet.
Brussels Airlines was founded in 2002 and is 100% owned by Deutsche Lufthansa AG. The company is a Star Alliance member since 2009.


text:
The Bottom Line: Canada's public broadcaster will have to find a way to do business differently without $115 million from the federal government. Other cultural agencies will also take a hit.
OTTAWA — The Canadian Broadcasting Corp. will see its budget cut by $115 million over the next three years, about 10 per cent of its approximately $1.1 billion allotment from the federal government.
The cuts to the public broadcaster, rumoured for months, could amount to a 10-per-cent cut in the CBC's workforce.
That could mean the loss of more than 700 jobs at the CBC, which has already been paring down and changing its operations to focus on more digital and diverse content.
"These cuts pale in comparison to the Chretien-Martin cuts," said Gregory Thomas from the Canadian Taxpayers Federation. Those cuts, he said, ended with 2,400 layoffs at the public broadcaster. "This isn't going to come close to that."
The cuts will start this year with a $27.8-million reduction in government spending on the CBC's operations, and increase to $69.6 million in 2013-14, and finally reach the $115-million savings mark by 2014-15.
"It's a constructive step the government's taking," Thomas said. "We would have preferred to see deeper cuts to all of the cultural welfare programs."
The cuts to the CBC are the largest portion of $191.1 million in heritage program cuts over the next three years. Aside from the CBC, the National Film Board will see its budget cut by $6.7 million over the next three years, while Telefilm Canada will see a $10.6-million budgetary reduction.
The Canada Council for the Arts, the National Gallery of Canada and national museums will not see any budget reductions.
Since the Conservatives won their majority government last May, CBC supporters have voiced concerns that the public broadcaster could disappear. Their concerns were exacerbated when one of CBC's competitors, Quebecor, launched attacks on the public broadcaster.
"We believe in the national public broadcaster," Heritage Minister James Moore said in a post-election victory interview with the CBC in May.
"We have said that we will maintain or increase support for the CBC. That is our platform and we have said that before and we will commit to that."
Until now, the Tories have been consistent with the federal funding flowing to the CBC. Public account documents for 2007 through to last year show that the federal allotment to the CBC has ranged from a low of $1.1 billion in 2006 to a high of $1.14 billion in 2010 and 2011.
CBC executives have expressed concern publicly about the future viability of the broadcaster should the cuts to its budget run deep.
"The Corporation's strategic plan . . . was developed on the assumption that CBC/Radio-Canada will have stable funding within the five-year planning period. While a Government funding reduction would not change the path of the new strategy, it could force the Corporation to make adjustments," the CBC wrote in its annual report last year.


text:
Lawsuit filed weeks before I-77 pileup that killed 3
Lincolnton driver sued VDOT after truck blown over
Less than four weeks before the 95-vehicle pileup on Interstate 77 in Fancy Gap, a North Carolina man filed a lawsuit aiming to get corrective measures taken to prevent more accidents on the dangerous stretch of highway.
Hillsville Attorney Jonathan McGrady represents Kevin Williams, 49, of Lincolnton, N.C., who suffered a severe, traumatic brain injury and serious orthopedic injuries as a result of his tractor-trailer being blown over by high winds on March 6, 2011 on the 2.8 mile marker of I-77 Northbound, just south of Fancy Gap. In Williams' suit against the Commonwealth of Virginia and the Virginia Department of Transportation (VDOT), he claims VDOT failed to warn drivers ascending the mountain of high winds in excess of 55 miles per hour.
"This suit arose from a terrible wreck that happened on March 6, 2011, which we believe could have been prevented by VDOT. The Commonwealth of Virginia has consistently denied my client's, Kevin Williams's, claim, and suit had to be filed," McGrady said. "Mr. Williams…will likely never work again. He has asked that I release a copy of the suit to the media with the hope that VDOT will take corrective measures so that lives may be saved in the future on Fancy Gap Mountain."
Ironically, Williams' suit was filed March 5, just 26 days before the 95-vehicle pileup on I-77 in Fancy Gap that claimed the lives of three people and injured nearly 30 more.
The suit claims that on March 6, 2011 at approximately 11 p.m., Williams was traveling northbound on I-77 in a tractor-trailer approaching Fancy Gap Mountain. Unbeknownst to Williams, the mountain was being pummeled by extremely high sustained winds and wind gusts. Williams was also unaware that approximately 45 minutes before he arrived on the mountain, another tractor-trailer headed northbound on I-77 had been turned over near mile marker 2.8 by the high winds buffeting the mountain.
"VDOT was aware of the high winds even before the other tractor trailer overturned because their weather monitoring stations on the mountain were registering winds in excess of 55 mph. VDOT was further aware of the overturned tractor trailer because emergency vehicles were already on scene before Plaintiff arrived at Mile Marker 2.8," the lawsuit claims. "Despite their knowledge of the dangerous conditions on the Mountain, and despite their express knowledge that those conditions had already overturned one tractor trailer, no warning was posted on the electronic message board in the northbound lanes south of the mountain until after Plaintiff had already passed those electronic message boards. Moreover, VDOT, and specifically (former Salem VDOT District Administrator Richard) Caywood, took no steps to close the roadway despite being aware of wind conditions that made it impossible for a tractor trailer to safely travel up the Mountain on Interstate 77."
When Williams arrived at mile marker 2.8, almost the same location the other tractor-trailer had turned over, Williams' tractor-trailer was struck by high winds, causing his vehicle to overturn, leading him to incur grievous, permanent and life-altering injuries, the suit claims.
"We very much feel like the Commonwealth of Virginia and VDOT sacrificed safety in the name of commerce by keeping the interstate open, and as a result my client suffered injury and will never work again," McGrady said. "Winds were registering in excess of 55 miles per hour. They have a VDOT weather station there hooked into Salem. A tractor trailer had already blown over and they had 42 minutes to shut it down. Officers working the scene that night couldn't even open their door. They know at VDOT about it because they have the weather station, but there was no message on the message boards."
McGrady said Williams has already incurred approximately $300,000 in medical bills. The lawsuit seeks $3.5 million in compensatory damages from the Commonwealth, VDOT, and Caywood because Williams will never be able to work again. The compensatory damages would provide him enough money to support himself due to his inability to work, to cover future medical costs, and for the pain and suffering he's gone through. But McGrady said the case has more to do about VDOT taking corrective measures to prevent similar events from taking place in the future.
"The point is he wants them to take corrective measures. We feel like they had 45 minutes to take measures," McGrady said. "It is a public safety issue. Let's get measures in place to protect the public. There are times when that road needs to be closed down. VDOT knows it, and they need to take measures."
The lawsuit claims the Commonwealth, VDOT, Caywood and an unknown employee were negligent by failing to close I-77 to tractor-trailer traffic despite actual knowledge of the wind conditions and knowledge that those wind conditions had already overturned one tractor trailer; failed to communicate and warn travelers of dangerous and impassable conditions on I-77; failed to have appropriate procedures in place to communicate timely information to travelers; and failed to have in place appropriate procedures, devices and personnel to shut down I-77. Specifically with regard to the Commonwealth, VDOT and Caywood, the lawsuit alleges they failed to provide appropriate training and oversight of their employees to insure that they could respond in a timely and appropriate manner to conditions on the Mountain; and were otherwise negligent and grossly negligent in their maintenance, operation and oversight of I-77 on Fancy Gap Mountain on March 6, 2011.
"I want to make clear that I think we have great local folks who work for VDOT. Where I believe the problem is, is with the top brass in Salem and Richmond where they place commerce over public safety by keeping that road open," McGrady said. "It is not the local folks, it is the leadership at Salem and the top brass in Richmond. When they know the road is bad, they keep the road open. I think that is an issue that continues to wreak havoc."
McGrady said he has tried to negotiate the case for the past two years, but his client's claims have been denied. McGrady has requested a jury trial in Carroll County.
"Part of the reason my client wants me to do this is for VDOT to take corrective measures that may save lives in the future," McGrady said. "He is one of those hard-working guys that would love to be working and driving a truck. He doesn't want to be disabled."


text:
(Phoenix, Ariz. – May 13, 2004) Attorney General Terry Goddard today announced a Consumer Protection settlement with Warner-Lambert resolving allegations of deceptive "off-label" marketing of its blockbuster drug – Neurontin©.
This nationwide settlement includes all 50 states and resolves investigations by the National Association of Medicaid Fraud Control Units and the U.S. Attorney's Office out of Boston. In total, Warner-Lambert will pay $430 million dollars under these settlements including $38 million dollars, of which $28 million will be used to fund a remediation program and $10 million will go directly to the States. Arizona will receive a minimum of $278,000 from these proceeds.
The remediation program includes a National Advertising Program to provide physicians and other prescribers with fair and balanced information about Neurontin and other drugs in its therapeutic class. A portion of the settlement will also be used to fund a Prescriber and Consumer Education Program, which will provide prescribers and/or consumers with fair and balanced information about drugs.
The investigation focused on allegations that Warner-Lambert violated state consumer protection laws by promoting Neurontin for various "off-label" indications – including various psychiatric disorders, back pain, and headache – even though the scientific evidence supporting the drug's use in such situations was lacking. Neurontin is approved by the Food and Drug Administration ("FDA") to treat epilepsy and certain nerve pain which can occur after Shingles (post-herpetic neuralgia). Approximately 90 percent of Neurontin prescriptions, however, are for "off-label" purposes.
"The settlement today sends a message to all drug manufacturers that they cannot exalt profits above truth," Goddard said. "Profits cannot come before patients' health. Drug Companies will be prosecuted whenever they deceive doctors into prescribing useless drugs do nothing to make patients better."
Among the methods used by Warner-Lambert to deceptively promote Neurontin included:
- continuing medical education classes ("CMEs") that lacked fair balance and misrepresented the nature of the CME
- providing expensive "perks" to attending physicians
- creating a "publication strategy" that subsidized the production and dissemination of anecdotal reports favorable to "off-label" use of Neurontin that were of no scientific value
- providing payments to prescribers for "research" that was, in effect, a kickback for "off-label" prescribing; and
- providing incomplete information about Neurontin to the drug reference compendium "Drugdex"
The settlement forbids Warner-Lambert and its corporate parent Pfizer Inc. from doing the following:
- making false, misleading or deceptive oral or written claims about Neurontin and from promoting "off-label" uses in violation of the federal Food, Drug and Cosmetic Act
- misrepresenting the scientific evidence relating to Neurontin
- disseminating written materials that have not appeared in peer reviewed scientific journals
- misrepresenting the credentials of sales, medical and technical personnel whose job was to convince physicians to prescribe Nerontin for "off-label" use
- providing misleading or incomplete information regarding Neurontin's "off-label" use to the drug reference compendia
- violating Federal anti-kickback laws


text:
Welcome to the High School Athletic and Activities Department
The athletic teams, clubs and activities continue to be a great
source of school and community pride. Ocean Township has one of the most
comprehensive and all-inclusive sports and activities programs in the
state. Currently we field twenty-eight (28) varsity teams, thirteen (13)
junior varsity teams and ten (10) freshman teams, as well as a student
trainer program. In addition, there are currently forty (40) approved
after-school clubs and activities.
The district is blessed with some of the finest coaches and advisors
around, helping to produce a number of All-Conference, All-Shore and
All-State players, as well as a number of nationally ranked club
participants. Our athletic programs continue to grow, prosper and remain
healthy. More and more of our students become involved each year and
continue to become good players, good sports and good citizens. The
student clubs and activities continue to service a wide variety of our
students with divergent interests and serve as a tremendous outlet for
their time and talents.
All of our extra-curricular programs are a valuable extension to the
school day and provide invaluable learning experiences and life-lessons
for all of our students. The positive interaction between students with a
variety of backgrounds and from different schools is surely facilitated
by participation in our extra-curricular programs. The emphasis on
sportsmanship and scholarship continues to be the primary focus and
philosophy of the Ocean Township Board of Education and administration.
We are extremely proud of our student participants in extra-curricular
activities. Our hope is that they can strengthen the virtues of good
sportsmanship, self sacrifice, fair play and teamwork for success in our
community, society and life.
Please click this link for the 2018-2019 Athletic Director's Letter
Athletic Director: H. Rusty Todd
Athletic Trainer: Katelyn Zimmerman


text:
It's been awhile since I dabbled on what I have been doing in my off time from WoW – mostly because I've not had a lot of down time lately. When we last left Beru's book club, I was working my way through the Sookie Stackhouse series. I devoured every last one of them, and the were fabulous! I certainly maintain my prior statement that they are well worth the read.
However, after I finished the last one (while I was travelling nonetheless), I was left with needing something new to read, and fast because I had a plane ride to catch! I had noticed in the covers of my Sookie books that Charlaine Harris had a number of other series that she wrote, and so I did what any good bookworm would do, and googled the nearest bookstore to my hotel. I went in and browsed through a few of the selections and ultimately decided that I'd try her "Aurora Teagarden Mystery" series, and purchased the first three books.
The protagonist in these stories is a quiet librarian with a bit of spark and a knack for being in the wrong place at the wrong time. As the books progress she becomes more and more spunky, and it's enjoyable to watch her progress. The books all have some sort of murder that occurs and invariably draws Aurora into their web, and she feels obliged to solve them…and usually gets hurt in the process. They are filled with a bit of southern charm and giggles, and are generally quite adorable. I wouldn't go as far as to call them "cute", but they have a good amount of amusement about them.
I think that at least the first handful of the books were some of Charlaine Harris' early work, and are certainly pre-Sookie. The first ones, while enjoyable, are a little thin in character development and some of the plot is fairly predictable. However, as the series progresses (I'm currently on book 6 of 8) they have gotten much, much better, and you can tell that the author has grown as a writer. They've gone more from frivolity to nail biters that are harder to put down. I have also found myself very attached to the characters as they evolve, so I think it is safe to say that the flat characters I saw in the first few books have definitely been given some shape 🙂
If you are looking for something to read, I'd strongly recommend taking a look at the series, but wait until you are a few books into it before giving up on it and rendering judgment.
Anyone else have any good reads to recommend?!?!
Bits of Friday Randomness:
Currently Reading – A Fool and his Honey (ATM Book 6)
Currently Watching – NCIS Season 6
Weekend Plans – The Traveling Broadway Show of Wicked
Naz's Val'anyr Countdown: 25 – 5 more fragments until we can stop full Ulduar clears! /cheer
Current Grilling – Corn on the Cob! mmmmmmm


text:
Health Care
Obama to Appear on 5 Sunday Talk Shows This Weekend
By Anne E. Kornblut
President Obama will appear on five Sunday talk shows this weekend, a senior administration official said Monday, becoming the first president to do so as he attempts to maintain momentum for his health care overhaul.
In making the rounds -- appearing on NBC, ABC, CBS, CNN and Univision back-to-back -- Obama will do a modified version of "the Full Ginsburg," as such a sweep was dubbed after Monica Lewinsky's lawyer, William H. Ginsburg, became the first person to do five broadcast shows it in 1998.
It is rare for a president to appear on a single Sunday show, let alone multiple ones. (The original "Full Ginsburg" included Fox News, which was cut out of the loop this time and replaced with the Spanish language Univision).
The appearances will cap a week of multiple trips and speeches for Obama, suggesting that White House officials are not concerned with the potential of his overexposure. If anything, they have an opposing view: Administration officials feel Obama's performance before Congress last week helped move his health care effort forward, and that it got another lift from his raucous health care rally in Minnesota over the weekend.
Obama is making three appearances on Tuesday -- at an AFL-CIO convention in Pittsburgh, a fundraiser in Philadelphia and an auto plant in Youngstown, Ohio -- and holds his next big health care rally in College Park on Thursday.
Posted at 7:13 PM ET on Sep 14, 2009
| Category:
Health Care
Share This: Technorati | Tag in Del.icio.us | Digg This
Previous: Obama Defends Sending an Envoy to Lobby for 2016 Olympics | Next: Tweeted and Deleted: Obama Rebukes Kanye West
Get This Widget >>
Please email us to report offensive comments.
"America mad the right choice"
Like a rabid dog? Ha. He's bombing, the polls show it, he's afraid of the non-boot lickers, he doesn't get ratings idiot, watch him go down the tubes even with his sycophants proping him up at every turn.
Posted by: haunches | September 19, 2009 4:27 PM
Obama chose the stations where he knows no one will ask the difficult questions: he doesn't know the answers, all he knows is what his advisers tell him and he's good at the campaign rheotric. It's obvious the critics of Fox News do not watch it or they would know better. You can not describe the other channels as "objective." They "left" objectivity a long time ago.
Posted by: tman19 | September 16, 2009 1:56 PM
Do they make teleprompters that are easily packed up, moved, and set-up. What a logistic nightmare for Obozzo's handlers and just imagine all the "impromptu dialogue" he has to memorize.
It is a really tough job when you have to memorize what you should actually already know from a foundation of understanding. That's the result of hiring someone with literally NO EXPERIENCE WHATSOEVER.
Posted by: Bcamp55 | September 16, 2009 8:58 AM
Eh, I think it's a given that he won't be on Fox News Sunday. Not that their viewers would even take Obama seriously anyways, so why bother. Besides they did such a great job interviewing Bill Clinton last time (sarcasm).
Posted by: Mrtraveler01 | September 15, 2009 11:20 PM
Fox is as far right-wing as MSNBC is left-wing.
I saw a sign at the TEA party rally last weekend, with all the networks written on it and all but Fox News crossed out. If you watch only Fox News, you have no idea what is going on in the world.
Good for you for skipping Fox, Mr. President.
Posted by: mikeinmidland | September 15, 2009 9:56 AM
Obama loves TV and thinks he's some kind of rock star. The people are getting overloaded with him on TV. He's like the old radio charactor "Chicken Man" "he's everywhere, he's everywhere"!
Nothing new, same old dribble and misrepresentations.
Trouble is, he's too dishonest to recognize that the people are speaking and he's not listening. WE DON'T WANT THIS MESS!!
His head is too full of CONTROL that he can't see the trouble he's stirring up....
Posted by: TexRancher | September 15, 2009 7:38 AM
I understand why Obama isn't going to Fox. Obama is making the rounds at all the big *news* stations. If Obama were to go around to various propaganda stations, then I'm sure Fox would be top of the list. But for now, Obama is going to stations that seek to objectively report facts, which fully explains why Fox isn't on the list.
Posted by: Dr_Bob | September 15, 2009 12:35 AM
ow, because he cannot attract any base.
Obama love is fading.
There is no support for anything he says or does now.
His shorts on television now in public places, meets with people yelling open your Court secrets or shut up at the TV.
If Obama blathers on, and on, and on, again.
Many will say,
JOE WILSON for PRESIDENT
JOE WILSON for PRESIDENT
JOE WILSON for PRESIDENT
JOE WILSON for PRESIDENT
JOE WILSON for PRESIDENT
Posted by: dottydo | September 14, 2009 11:38 PM
Check ratings everytime our wonderful President is on TV,a ratings winner..every time..It must kill some of the people on on this comment section to see that we have an articulate, intelligent, coherent and photogenic President..It must kill them every time they look in the mirror..President Barack Obama, America mad the right choice in November 2008..
Posted by: ruraledcomm | September 14, 2009 10:23 PM
That's OK. Fox can book Joe WIlson saying Liar, Liar, Pants On Fire!
Posted by: FairlingtonBlade | September 14, 2009 10:10 PM
Obama is not afraid of Fox (guaranteed that Chris Wallace would kiss his arse harder than he kissed Cheney's), just smart enough to avoid wasting his time on the haters.
Posted by: DemoDevil | September 14, 2009 10:06 PM
The people plan to boycott those channels enmasse.
5 times only means
#1 No thank you, Obama = Moot
#2 No thank you, Obama = Moot
#3 No thank you, Obama = Moot
#4 No thank you, Obama = Moot
#4 No thank you, Obama = Moot
Others will say
Shhaadup liar
Shhaadup liar
Shhaadup liar
Shhaadup liar
Shhaddup liar
Posted by: dottydo | September 14, 2009 10:04 PM
You can only polish a turd so much. He's afraid to go on Fox where he would be challenged.
Posted by: DaMan2 | September 14, 2009 9:48 PM
Nice to see Obama has finally found someplace to call home on Sunday morning.
Posted by: chatard | September 14, 2009 9:42 PM
Post a Comment
We encourage users to analyze, comment on and even challenge washingtonpost.com's articles, blogs, reviews and multimedia features.
User reviews and comments that include profanity or personal attacks or other inappropriate comments or material will be removed from the site. Additionally, entries that are unsigned or contain "signatures" by someone other than the actual author will be removed. Finally, we will take steps to block users who violate any of our posting standards, terms of use or privacy policies or any other policies governing this site. Please review the full rules governing commentaries and discussions.


text:
BOISE, Idaho – In an effort to highlight current pet-naming trends, Pets Best Insurance Services, LLC, a leading U.S. pet insurance agency, has released its list of the top 10 most popular names for dogs and cats enrolled with the agency in 2013.
Each year, pop culture tends to have a considerable impact on the names people select for their pets. Illustrating this trend, Bella was the No. 1 name among dogs insured by Pets Best. The increased popularity of the name Bella can be attributed to the well-known main character of the "Twilight" book and movie series. Bella also served as the most popular canine name in 2012.
While Lucy took the No. 2 spot for canines, other favorites in 2013 included classic dog names that remain popular throughout the years, such as Max, Buddy, Molly and Charlie. Although Bailey was the fourth most popular name in 2012, it slid to tenth place in 2013.
Lucy was the most popular cat name, representing an impressive increase from 2012, when it was tenth on the list. Bella was also popular among felines, placing fourth in 2013. In addition, the name Lily dropped from first place in 2012 to fifth in 2013. Simba, the name of the courageous young lion in Disney's animated film "The Lion King," fell out of the top ten in 2013 after ranking fourth in 2012. Simba's spike in popularity likely came as a result of the popular film's 3D rerelease in 2011.
Top 10 Dog Names of 2013
1. Bella
2. Lucy
3. Max
4. Charlie
5. Daisy
6. Molly
7. Buddy
8. Lola
9. Maggie
10. Bailey
Top 10 Cat Names of 2013
1. Lucy
2. Jack
3. Max
4. Bella
5. Lily
6. Oliver
7. Charlie
8. Lucky
9. Sammy
10. Leo
"A pet's name often has a strong personal significance to its owner," said Dr. Jack Stephens, president and founder of Pets Best. "Many people show their affection by naming pets after characters and icons they admire and enjoy. Pet owners also often give their dogs and cats human names that seem to reflect the unique personalities of their four-legged family members."
Pets Best offers a multitude of pet health insurance plans for both cats and dogs. These include a Feline Illness plan that covers common feline illnesses and a Cancer Only plan covering the diagnosis and treatment of cancer. For more information about the agency and its plans, visit www.petsbest.com.
About Pets Best Insurance Services, LLC
Dr. Jack L. Stephens, president of Pets Best, founded pet insurance in the U.S. in 1981 with a mission to end euthanasia when pet owners couldn't afford veterinary treatment. Dr. Stephens went on to present the first U.S. pet insurance policy to famous television dog Lassie. Pets Best provides coverage for dogs and cats and is the only veterinarian founded and operated pet insurance company in the United States. Dr. Stephens leads the Pets Best team with his passion for quality pet care and his expert veterinary knowledge. He is always available to answer questions regarding veterinarian medicine, pet health and pet insurance. The Pets Best team is a group of pet lovers who strive to deliver quality customer service and value. Visit www.petsbest.com for more information.
Pet insurance coverage offered and administered by Pets Best Insurance Services, LLC is underwritten by Independence American Insurance Company, a Delaware insurance company. Independence American Insurance Company is a member of The IHC Group, an organization of insurance carriers and marketing and administrative affiliates that has been providing life, health, disability, medical stop-loss and specialty insurance solutions to groups and individuals for over 30 years. For information on The IHC Group, visit: www.ihcgroup.com. Additional insurance services administered by Pets Best Insurance Services, LLC are underwritten by Prime Insurance Company. Some existing business is underwritten by Aetna Insurance Company of Connecticut. Each insurer has sole financial responsibility for its own products.
Pets Best is a proud member of the North America Pet Health Insurance Association (NAPHIA).
Photo: Bella, a Cavalier King Charles Spaniel, has been protected by Pets Best since 2008.