text:
Saudi Arabia was long considered…
Two Fundamental Laws For Energy Pricing
EDF, a giant French utility…
The Geopolitical Risks To Watch This Winter
There are plenty of geopolitical…
Dr. John C.K. Daly is the chief analyst for Oilprice.com, Dr. Daly received his Ph.D. in 1986 from the School of Slavonic and East European…
Indian Business Press Trashes China's Electrical Grid Ambitions
By John Daly - Dec 03, 2012, 4:48 PM CST
Rising BRIC economic superpowers India and China, while having vastly differing economic and political systems nevertheless have one thing in common.
A surging need for increased electrical output to fuel their booming economies.
India achieved an unenviable world record, when during a torrid summer earlier this year, an electric grid failure on 30-31 July resulted in the world's largest blackout, affecting more than 600 million people.
It was easy to see it coming, as India's surging economy has resulted in increased electrical demand that the country's ramshackle power grid has been unable to meet. Ensuring such events will occur again in the future, 300 million people, a quarter of India's population, still have no access to electrical power, and as they are connected to the national grid, demand will only further increase.
Related Article: Use New Oil & Gas Production Revenues to Invest in Energy Innovation
According to a recent report by the International Energy Agency, "India suffers from a severe shortage of electricity generation capacity. According to the World Bank, roughly 40 percent of residences in India are without electricity. In addition, blackouts are a common occurrence throughout the country's main cities. Further compounding the situation is that total demand for electricity in the country continues to rise, and is outpacing any increases in capacity. Additional capacity has failed to materialize in India in light of market regulations, insufficient investment in the sector, and difficulty in obtaining environmental approval and funding for hydropower projects. In addition, coal shortages are further straining power generation capabilities."
So it comes as no little surprise that the Indian business press is gleefully citing critics of China's State Grid Corp., which is pressing the government to approve a $250 billion upgrade plan that it contends would make China's grid an international trailblazer, but which critics contend is both too costly and which could expose the system to blackouts.
During a meeting two weeks ago in Beijing where China's leadership met to decide the nation's transition of power, China's State Grid Corp. head Liu Zhenya, presented his case to the Chinese leadership to approve a massive plan to upgrade the country's electrical transmission system, whose bottom line would be more than four times the cost of the Three Gorges Dam. China's State Grid Corp. intends to weave across the Chinese landscape as many as 20 ultra-high voltage (UHV) power lines, labeled "power corridors," over the next seven years.
"The Economic Times" quotes Joseph Jacobelli, a Hong-Kong based independent energy analyst, who was formerly head of global clean technology research at HSBC Holdings PLC as observing, "The UHV projects are massively expensive and, together with many observers, I am not convinced of the projects economics and not convinced the projects make sense from an energy supply security perspective."
Want more? Two months ago the European Union Chamber of Commerce in China issued a report noting, "Connecting regional power grids by UHV transmission line has high risk of leading to national blackouts."
Related Article: The Top Eight Energy Risks for 2013
Not surprisingly, the project is viewed somewhat differently in China. At a news conference of the 18th National Congress of the Communist Party of China chairman of the Tebian Electric Apparatus Stock Co Ltd (TBEA) in the Xinjiang Uygur autonomous region Zhang Xin told reporters, "The government is going to approve many UHV transmission projects in the coming years, to satisfy the energy demand during the economic expansion. Unprecedented opportunities for China's UHV transmission and new-energy industries are coming, along with the government's plan to accelerate economic restructuring."
What is beyond dispute is China's increasing need for reliable electricity, as government analysts project that the nation's capacity needs to grow to 1,500 gigawatts by 2020 from 1,060 GW at the end of 2011.
If the massive UHV project is approved, it will place China's State Grid Corp., which already transmits and distributes electricity to 1.1 billion Chinese, nearly 90 percent of China's population, in an even more commanding position, a near monopoly situation that Western (and Indian) power companies can only dream of. In contrast, the state-owned Power Grid Corp. of India Ltd. supplies about 50 percent of the total power generated in India on its transmission network.
So, who's correct, the critics or the optimists? India has no comparable scheme even in the planning stages.
One thing is certain – if the Chinese mange over the seven years successfully to construct their UHV grid additions, then it will give a massive boost not only to the country's economy but the population's standard of living.
All of which no closely will be watched by 600 million sweltering Indians and 300 million of their fellow citizens waiting to turn on their lights.
By. John C.K. Daily
Bad Times for BP Amid Rumors of Acquisition or Split
Who Will Obama Pick as his New Energy Secretary?


text:
Much Ado About Jihad: Misconceptions and Media Manipulation
by warsan January 8, 2021 January 8, 2021 08
by Alessandro Bruno | Jan 2, 2021
There are many ways of understanding Jihad and while it can be described broadly as a war against the enemies of Islam, this is only one of the interpretations. But since the emergence of radical Islamic revolutionary groups in the Egypt of the 1970s and 80s, it has been the one that secures the boldest headlines.
Jihad is an Arabic word related to the idea of self-improvement. (Creative Commons Photo)
The much feared "holy war" connotation that media pundits and government officials too often attribute to Jihad is deceiving. The term has a far more complex meaning, which revolves around the concept of "improving oneself." In specific situations, Jihad can also signify war or violent struggle. But such situations are rare and confined by strict legal and religious boundaries.
Jihad derives from the Arabic root J h D (ج ه د) and the verb Jahada (جَهَدَ). It translates to "strive, making an effort, or applying oneself to achieve a goal." Therefore, Jihad is a word related to the idea of self-improvement. The Islamic philosopher Abdul Hamid al-Ghazali (1058-1111 AD) described the Jihad-related term ijtihad' as the exercise of striving to achieve the outmost expertise in a given subject. From that interpretation other philosophers of Islam's golden age applied the term to jurisprudence. In this sense, ijtihad represented the effort of legal scholars in mastering fiqh (the study of the law, or the study of Shari'a). And in Shiite Islam, practitioners of ijtihad, or mujtahids, are the legal scholars and judges.
Not only is the idea of aggression missing from Jihad, the term describes noble human activities, associated with internal struggles to overcome obstacles.
In the West, apart from a few specialists, most people interpret this beautiful concept as the fiercest form of religiously mandated violence; Jihad has become the very synonym for terror. Yet, not only is the idea of aggression missing from Jihad, the term describes noble human activities, associated with internal struggles to overcome obstacles, instincts, and self-doubt. Jihad might be best described as the effort to elevate one's character or psyche. It's a concept that clearly applies to the individual's journey to believe and to have faith. Even Jesus Christ might be said to have experienced a Jihad when, after being baptized, according to religious texts, he spent 40 days and 40 nights fasting in the desert. During this period, Satan tempted Jesus three times to compromise his mission.
The sacred Islamic texts do distinguish, however, al-Jihad al-Asghar from al-Jihad al-Akbar – that is "smaller Jihad" from "greater Jihad." It is the latter, the great Jihad, or great effort exerted within the believer in pursuit of a higher plane of faith, that is the most important. The small Jihad implies an external war to defend the 'Umma (believing community) from outsiders and "infidels" – or enemies – and only when responding to acts of aggression. Jihad can be incited against other Muslims. A Muslim leader, who wants to lead a Jihad against another Muslim nation, however, must first declare his intended enemies to be kafir, that is atheists or unbelievers as occurred recently in the case of the Iran-Iraq war, the war in Syria, the 1990s' war in Algeria, and in Egypt starting in the 1970s.
Those who perform it for such purposes are mujahidin, such as the Afghan patriots who fought against the Soviet invaders in the 1980s – or in the case of those who fought the Crusaders in the 11th and 12th centuries. In recent decades, and without the due nuances, it is the latter form of Jihad, interpreted as "holy war," that has prevailed as a concept in the West, obscuring the other and more important component. Thus, the most familiar expression of "holy war" related to the term Jihad is not entirely wrong, but it does mislead. Indeed, it's often an image that deceives, evoking fear of an invasion and colonization of Western lands in the pursuit of a worldwide Islamic theocracy.
The most familiar expression of "holy war" related to the term Jihad is not entirely wrong, but it does mislead.
More accurately, the contemporary meaning of Jihad might be better defined as a challenge to the cultural, economic, and political interference of the West (and the Communists in the 20th century) in the affairs of the Islamic world. Jihad in this sense is a defense against external enemies. This interpretation contrasts sharply with the one that Western media has perpetuated ad nauseam: Jihad as a synonym for terrorism and a deliberate challenge to "democracy" and Western lifestyle and values.
1970s Egypt and the Origin of the Distortions of Jihad
Jihad, let alone the shades of its meanings, were unknown to the general public in the West until the late 1990s. While the media – and many politicians – have abused the term, developments in Egypt during the 1980s, marked a period when thinkers and activists established the philosophical and religious underpinnings of a revolutionary political project which perpetuated misconceptions around Jihad. It was an ideological radicalization process that, in practice, resembled contemporary far-Left and self-determination movements in Europe such as the Red Brigades in Italy, Action-Directe in France, the Beider-Maanhof in Germany, Euskadi ta Askatasuna (ETA) in Spain, and the Irish Republican Army (IRA) in Ireland.
Indeed, even the principles of the Muslim Brotherhood (founded in 1928), which advanced the concept of an Islamic Order that would gradually, and peacefully, permeate through Egypt's institutions, shared the visions of some European socialist thinkers of the 1920s, like Antonio Gramsci.
Gramsci stressed the pursuit and achievement of a cultural and moral domination, or hegemony, in order to then impose these notions on society with little resistance, to achieve political power. (In Islamic terms the Gramscian hegemony approach applied to Islam might be interpreted as a kind of Jihad al-Akbar).
As a result of President Gamal Abdel Nasser's repression of the Muslim Brotherhood and arrest of one of its leaders, Sayyid Qutb – culminating in Qutb's torture and execution in 1966; the failed wars against Israel of 1967 and 1973; the economic crises (bread riots); and the unilateral Camp David peace agreement with Israel of 1979, the Muslim Brotherhood's hegemonic project changed radically.
The movements that evolved from the Muslim Brotherhood at the end of the 1970s targeted those who the group believed, by their actions, had renounced Islam.
Just as the radical leftists in Europe targeted representatives of the state and the capitalist system for assassination – for instance the Red Brigades kidnapped and murdered an Italian Prime Minister in 1978 – the movements that evolved from the Muslim Brotherhood at the end of the 1970s targeted those who the group believed, by their actions, had renounced Islam. And they challenged these individuals and institutions with direct violence, adapting Sayyed Qutb's later ideas sent out during his time in Tura prison, which advocated a Jihad against apostasy and ignorance (jahiliyya). The idea was to challenge the "enemy" within the Muslim world – and those forces that had corrupted the Dar al-Islam (Muslim world): the West.
The Muslim Brotherhood, founded by Hasan al-Banna, who was succeeded by Hasan al-Hudaybi, did not subscribe to Qutb's ideas. Rather than a Jihad al-Asghar, the Brotherhood continued to evolve along Gramscian lines, dismantling its armed wing and pursuing a political approach, which would eventually culminate in parliamentary representation with independent candidates and alliances with traditional parties like the Wafd.
Both former Egyptian Presidents Sadat and Mubarak tolerated the Brotherhood as a stalwart against the emergence of a strong secular opposition. But many rejected the political makeover. And the more "action" minded within the faction abandoned the Brotherhood to join and establish movements, which subscribed to revolutionary orientation, ready to put Qutb's ideas into practice such as Takfir wa hijra (which led to the killing of one of Sadat's ministers in 1977) and al-Jihad, whose militants killed Egyptian President Sadat in October 1981. As happens when ideologies and movements atomize into separate entities, ideas – often interpreted more liberally – become distorted.
One engineer, Muḥammad ʿAbd al-Salām Faraj, argued that performing an act of Jihad against an apostate ruler was the sixth pillar of Islam in his "al-Farida al-Ghaiba" (The Missing Obligation). Not only did Faraj's pamphlet inspire the assassination of President Anwar Sadat, it would also continue to serve as a guide for extremist violence in Egypt throughout the 1980s and 1990s. Some theologians challenged the new self-declared "authorities" who interpreted the Qur'an ad-lib, often forcing the interpretation of selected verses to justify violence. And it is the very weak foundation in Islamic theology and jurisprudence, which has done so much damage to the idea of Jihad.
It is an almost universal attribute of all the new and self-taught "philosophers" of Shari'a that they lack the scholarly authority to pronounce interpretations of Jihad.
It is an almost universal attribute of all the new and self-taught "philosophers" of Shari'a that they lack the scholarly authority, let alone understanding of nuances, to pronounce interpretations of Jihad and other aspects of the faith. After all, the violent communist groups of Europe also engaged in the exegesis of foundational texts (Marx and Lenin for example), often lacking the philosophical tools.
In fact, it is very easy for untrained scholars to confuse actions that belong to Jihad from those that don't. In that regard, imagine the confusion among Christians upon reading Luke 22:36, whereupon Jesus asks his followers to procure swords – a command that contrasts sharply with the usual "turn the other cheek" exhortations that the vast majority of Christians are asked to follow.
The media's often deliberate lack of awareness about the Middle East, its socio-economic conditions, the involvement of internal and external (Western) actors, and Islam has allowed the confusion borne out of ignorance to perpetuate. This speaks volumes about the superficiality with which it approaches subjects relating to Jihad and Islam. That said, the specific social circumstances, particularly those in Egypt during the 1970s and 80s, played a significant role in shaping the West's understanding – and manipulation – of the concept of Jihad. Clearly, a better use of appropriate terms and more study of the context of certain phenomena would ensure greater clarity and promote understanding between cultures – as opposed to encouraging a clash of civilizations.
This article has been adapted from its original source
Ethiopia kills 4 top TPLF leaders, arrests 9
Capitol riots prove Americans don't practice what they preach
Tuberculosis drug could be Covid-19 silver bullet
warsan March 31, 2020 March 31, 2020
looming constitutional changes to give Kenya president powers to sack his DP
Kenyatta under pressure from Washington, London and Brussels to negotiate with Farmajo

redpajama_set_name: RedPajamaCommonCrawl


text:
Artiest Arena
Titel From the beginning... a photographic history of the first 25 years!
Medium BOOK+2-CD
Omschrijving Two CDs + 180-page Hardcover Book! 2020 saw the English rock band Arena celebrate their 25th Anniversary of the band's first critically acclaimed studio album release in 1995. This 180-page book (weight 1,6kg) is 303x303 mm hardback cover with embossed silver foil lettering is a perfect size to fit in with anyone's vinyl collection. The 180 pages have over 2000 photos printed on 170 gsm silk paper containing previously unseen photos of the band and crew past and present. Comment and insight are made by mainstay band members Mick Pointer, Clive Nolan, John Mitchell, and Kylan Amos about past and present band/crew members that have graced the stage with us over these 25 years. This limited DELUXE EDITION of the book also contains a DOUBLE LIVE CD recording of the bands last concert recorded at the Veruno Festival Italy in September 2019 bringing the first 25 years of the band history to a close. Arenas Guitarist and Producer John Mitchell also recorded and mixed the double live cd. This recording is also the last live show with Vocalist Paul Manzi. Band Members are: Mick Pointer (ex Marillion) Clive Nolan (Pendragon) John Mitchell (It Bites, Lonely Robot) TRACKLISTING: CD1: Welcome to The Cage Crack in The Ice Chosen Witch Hunt Skin Game Elijah CD2: Mirror Lies Poisoned Fridays Dream Tinder Box Don't Forget to Breathe Solomon Crying 7


This tutorial is the next lesson in a series designed to teach you some of the mathematical skills that you will need (in addition to good programming skills) to become a successful game programmer. The first lesson was titled Math for Java Game Programmers, Getting Started. The previous lesson was titled Math for Java Game Programmers, Applications of the Vector Dot Product (see Resources).
In the previous lesson, you learned how to apply the vector dot product to three different applications. You learned how to use the dot product to compute nine different angles of interest that a vector makes with various elements in 3D space. You learned how to use the dot product to find six of the infinite set of vectors that are perpendicular to a given vector, and you learned how to use the dot product to perform back-face culling.
In this lesson, which is the first part of a multi-part miniseries on projections, you will learn how to use the game-math library to create a first-person game in a 3D world. Before getting into the technical details, I am going to give you some background.
What is a first-person shooter game?
Because I frequently teach an introductory programming course using the Alice programming language (see Resources), I often visit the Alice Community Forums. Many students also visit the forums. It seems that a large percentage of those students have a single programming goal in mind. That goal is to learn how to write a first-person shooter game, which they refer to as an FPS game. In this lesson, you will learn how to write a first-person game, but it may not be exactly what those students have in mind insofar as shooting is concerned. While it does involve shooting, there is a distinct lack of blood and gore being spilled, which is a staple of typical FPS games.
A first-person game, according to my understanding, is a game in which the player views the game world through the eyes of the main character (avatar), just as though the main character has a video camera attached to his head. The first first-person shooter game that I remember was the widely-distributed game of Doom (see Resources), which was released around 1993.
There were several primitive games installed on the computer at the college that I visited. They were played using character graphics on the CRT terminals. I remember two games in particular. One game was a Lunar Lander game in which the player attempted to cause something that looked vaguely like a spaceship to land on a target on the screen. The second game was a Cannonball game in which the player adjusted the elevation angle of a cannon in an attempt to cause the projectile to land on a target on the screen. Those games were definitely not first-person games.
In this lesson, you will learn how to write a modern 3D interactive first-person version of the cannonball game using the updated game-math library named GM03.
More specifically, in this game, the player's avatar is a human cannonball with a video camera attached to her helmet. The objective is to adjust the horizontal (azimuth) firing angle, the vertical (elevation) firing angle, and the muzzle velocity of the cannon so that the human cannonball will land safely in the net when she is fired from the cannon.
As the avatar flies through the air, she keeps the camera trained on the center of the safety net and the player sees a 2D projection of the 3D world of the safety net on the computer screen. Sometimes she lands in the net and survives. At other times, she misses the net. The player sees it all from a first-person 3D animation perspective. Figure 1 shows a screen shot of the human cannonball successfully approaching the net for a soft landing.
Figure 1. Human cannonball approaching the safety net in Cannonball01.
As you will see when we get into the details of the program, quite a lot of math is required to write this program. For example, the safety net that you see in Figure 1 is a screen shot at one instant in time of the video camera approaching the circular safety net at an angle in the 3D world. Figure 2 shows another screen shot of the game in progress. In Figure 2, the aim and muzzle velocity were not correct for a soft landing and the human cannonball sees the safety net pass by on her left before she crashes into the ground.
Figure 2. Human cannonball missing the safety net in Cannonball01.
The 3D world is projected onto the 2D screen using a perspective projection, which can be mathematically challenging. The trajectory of the human cannonball is based on the actual trajectory of a projectile under the influence of constant gravity in 3D space. The list of mathematical requirements goes on and on but I won't enumerate it here.
Before I continue with this game program, I'm going to give you a preview of what's in store for you if you continue studying the lessons in this miniseries on projections.
In the next lesson, you will learn how the math behind a parallel oblique projection works. This type of projection was first presented in the lesson titled Math for Java Game Programmers, Venturing into a 3D World (see Resources) but I didn't explain how it works at that time. An example output from this projection type is shown in Figure 3.
Figure 3. Parallel oblique projection of a 3D world onto a 2D plane.
About the angles named alpha and phi, which are critical to the solution of the parallel oblique projection equations, and which control the overall appearance of the projection.
How to start with a general point in 3D space and derive the two equations required to project that point onto a projection plane that coincides with the x-y plane using a parallel oblique projection.
How to adjust the values of the angles named alpha and phi to produce different variations of the parallel oblique projection known as Cavalier projections and Cabinet projections.
How to cause the parallel oblique projection to degenerate into a parallel orthographic projection instead of a parallel oblique projection.
How to write the Java code necessary to implement the two equations that are required to project the 3D point onto the 2D projection plane.
With a fixed camera position looking straight down the z-axis as shown in Figure 4.
With a variable camera position and a variable camera angle as shown in Figure 1, Figure 2, and Figure 6.
Figure 4. Perspective projection with a fixed camera position looking straight down the z-axis.
Figure 5. Perspective projection with the fixed camera position off the z-axis (compare with Figure 3).
Figure 6. Perspective projection with a variable camera position and a variable camera angle.
Because the images in Figure 3 through Figure 6 consist solely of straight lines with no other visual references, and the lines on the back side of the cube are not reduced in prominence relative to the lines on the front of the cube, I sometimes find that my eyes play tricks on me and I don't perceive the image as it was intended to be perceived. If this happens to you, you may need to blink your eyes a few times and concentrate on the fact that the red circle at the intersection of two red lines is at the top-front corner of the 3D cube.
Figure 1 Human cannonball approaching the safety net in Cannonball01.
Figure 2 Human cannonball missing the safety net in Cannonball01.
Figure 3 Parallel oblique projection of a 3D world onto a 2D plane.
Figure 4 Perspective projection with a fixed camera position looking straight down the z-axis.
Figure 7. The graphic display at startup for Cannonball01.
Figure 8. User control panel.
Figure 9. Result of using sliders to re-position the safety net.
Figure 10. Horizontal (azimuth) firing angle aiming screen.
Figure 11. Vertical (elevation) firing angle aiming screen.
Figure 12. Birds-eye view of the human cannonball having overshot the safety net.
Figure 13. Birds-eye view of the human cannonball having successfully landed in the safety net.
Figure 14. Successful landing produced by default values of sliders.
Listing 1. Beginning of the class named Display.
Listing 2. Beginning of the constructor for the Display class.
Listing 3. Elevate and tilt the camera.
Listing 4. Beginning of the method named drawTheImage.
Listing 5. Draw the guy wires.
Listing 6. Define the points on a circle.
Listing 7. Draw lines connecting the points.
Listing 8. Draw special lines.
Listing 9. Beginning of the method named stateChanged.
Listing 10. Get the source of the ChangeEvent.
Listing 11. Response to event fired by positionXslider.
Listing 12. Rotate the cannon around its y-axis.
Listing 13. Set the elevation angle of the cannon.
Listing 14. The actionPerformed method.
Listing 15. Beginning of the class named Animator.
Listing 16. Beginning of the constructor for the Animator class.
Listing 17. The remainder of the constructor.
Listing 18. Beginning of the run method.
Listing 19. Begin the animation loop.
Listing 21. Adjust the orientation of the camera.
Listing 22. Draw the new image and sleep for a little while.
Listing 23. Pause and then switch to the birds-eye view.
Listing 24. Determine the impact location and draw a red or green circle.
Listing 25. The member class named GUI.
Listing 26. Source code for game-math library named GM03.
Listing 27. Source code for the game program named Cannonball01.
"... 3D computer graphics consists of two activities: (1) Creating an imaginary world inside a computer, and (2) producing two dimensional images of that world from various viewpoints.
Producing a 2D image from a 3D image is an example of projection."
He then proceeds to provide quite a lot of technical information about projecting one vector onto another vector in both 2D and 3D. The techniques that he describes are extremely useful in solving various engineering and physics problems that can be expressed in terms of vectors that represent force, work, etc.
However, we need to understand much more that just the projection of one vector onto another vector to be able to produce two dimensional images of an imaginary 3D world. In particular, we need to understand how to project the imaginary 3D world onto a plane that represents the computer screen.
There are several different ways to produce 2D images from the imaginary 3D world that we create inside the computer. For example, the online document titled Classification of 3D to 2D Projections by Paul Bourke (see Resources) lists about a half-dozen different ways to create 2D images from 3D worlds in the parallel category alone. That list completely leaves out another important projection category commonly known as perspective.
However, it is not the purpose of this lesson to get into the details of the different projection schemes. Instead, the purpose of this lesson is to pick a projection scheme and show you how to use that scheme to produce a working game program. I will get into the mathematical details of four different projection schemes in future lessons.
A complete listing of the updated game-math library named GM03 is provided in Listing 26. This listing includes the method named threeDto2DprojectionD that I will use to implement the perspective projection in the game program named Cannonball01. It also includes a number of other updates and modifications, some of which I will use in this lesson and some of which I won't use. In any event, you will need a copy of the library source code in order to compile and run the game program named Cannonball01.
It is not my intention to explain the updates and modifications to the game-math library in this lesson. Rather, I will provide those explanations in future lessons. My intention for this lesson is to help you learn how to use the library based on what you have already learned and based on a cursory explanation of the new features in the library.
The program and the game-math library in this lesson were tested using JDK 1.6 running under Windows XP.
A complete listing of the game program named Cannonball01 is provided in Listing 27 near the end of the lesson.
Use the two sliders at the top to adjust the x and z-coordinates of the safety net.
Use the other three sliders to adjust the azimuth, elevation, and muzzle velocity of the cannon.
Click the Fire button and watch as the human cannonball flies through the air on her way toward the safety net.
Observe the impact location in the birds-eye view. If the impact location is outside the safety net, as indicated by a small red circle, repeat steps 2 and 3.
The center line in Figure 7 shows the default firing angle of the cannon. The lines on either side show azimuth angles of plus and minus 45 degrees.
In addition to the graphic display showing the safety net in Figure 7, the user control panel shown in Figure 8 will also appear on the screen. It will appear to the right of the graphic display.
Use the two sliders at the top of Figure 8 to adjust the x and z-coordinates of the safety net. For example, you might elect to move the safety net to the position shown in Figure 9.
Use the left middle slider in Figure 8 to adjust the azimuth aiming angle of the cannon.
As soon as you begin moving this slider, the graphic display will change to look similar to Figure 10.
The view shown in Figure 10 has the camera centered on the cannon at ground level. The gray material to the left is the edge view if the safety net. The vertical red line is the current aiming direction of the cannon. If you move this slider to center the red line on the safety net, the cannon will be pointing directly at the net.
When making this adjustment, you must take into account that the three guy wires are not distinguishable from the actual circular safety net in the edge view shown in Figure 10. Therefore, the actual center of the safety net is not at the exact center of the horizontal gray line in Figure 10. You can switch back and forth between the azimuth slider and the position sliders to visually estimate the effect of the guy wires on the edge view of the safety net.
As soon as you begin moving the right middle slider in Figure 8, the graphic display will switch to something similar to that shown in Figure 11.
The red horizontal line in Figure 11 shows the vertical aiming angle of the cannon and the gray material shows the edge view of the safety net.
You could also get a hit by positioning the cannon in the center of the safety net and setting the elevation angle to 90 degrees regardless of muzzle velocity. This would cause the human cannonball to go straight up and then fall straight back down. I will present the equations of motion later.
If you move the elevation slider to the 0 position, the red line and the safety net will merge in Figure 11, meaning that the cannon is aiming at the same elevation as the safety net (ground level). Of course, you will never hit the safety net that way due to the effect of gravity on the human cannonball unless you place the camera in the safety net and set the muzzle velocity to a small value.
Note in Figure 8 that there is a non-editable JTextField below each slider that displays the result of adjusting the slider.
As soon as you begin adjusting the slider for muzzle velocity, the graphic display will switch back to that shown in Figure 7. However, this graphic display is not helpful in deciding upon the appropriate muzzle velocity. If you want to hit the safety net with the first shot, you may simply need to get out your calculator and solve the equations of motion, (which I will explain later) using the acceleration of gravity (32.174 ft/sec/sec) along with the values displayed below the sliders in Figure 8. Or, you can simply use trial and error.
When you click the Fire button in Figure 8, you will see an animated presentation of the safety net as seen by the human cannonball as she flies through the air, either landing in the safety net or landing outside the safety net. Examples of each case are shown in Figure 1 and Figure 2.
Shortly after the human cannonball lands, the graphic output will switch to a birds-eye view similar to that shown in Figure 12.
If the impact location is outside the safety net, (as indicated by a small red circle in Figure 12), adjust the aiming parameters and the muzzle velocity and click the Fire button to try again.
Continue this process until the human cannonball lands in the safety net as indicated by a green circle inside the safety net as shown in Figure 13.
In addition to the green circle shown inside the safety net in Figure 13, the computer will also beep when the human cannonball successfully lands in the safety net.
As I mentioned earlier, if you simply click the Fire button without adjusting any of the sliders, the default values of the sliders will cause the human cannonball to land squarely in the center of the safety net as shown in Figure 14.
This is a modern interactive 3D version of the early cannonball games that appeared on computer terminals long before the advent of the personal computers.
The scenario is that of a human cannonball with a video camera mounted on her helmet. The player sees the scene through the video camera, which is essentially seeing the game through the eyes of the human cannonball. Hence, this is a first-person game.
As the cannonball flies through the air, she keeps the video camera trained on the center of the safety net. This causes the image of the safety net to be displayed on the screen during the entire trajectory of the cannonball.
After the cannonball lands, a birds-eye view of the playing field is displayed as shown in Figure 12 and Figure 13. If the cannonball landed in the safety net, a green circle appears in the net as shown in Figure 13 showing where the cannonball landed. A successful landing also causes the computer to beep.
If the cannonball landed outside of the net, a red circle marks the spot where the cannonball landed as shown in Figure 12. In this case, the computer does not beep.
At this point, the player can use the sliders shown in Figure 8 to adjust the parameters and fire the cannon again.
The x-coordinate of the center of the safety net.
The vertical direction that the cannon is pointing (elevation).
The muzzle velocity of the cannon.
In addition, the GUI provides five non-editable JTextField objects that display the current value of an associated slider. Finally, the GUI provides a JButton object labeled Fire that the user clicks to fire the cannon.
The projectile motion is based on the equations of motion for a projectile in a vacuum with constant acceleration of gravity.
When the user adjusts the x-coordinate or the z-coordinate of the net, the program provides a view of the playing field from a vantage point immediately above the cannon, which is at the origin as shown in Figure 7. In that case, the camera is pointed downward toward the expanse of the playing field. Three blue lines radiate from the cannon. The center line is in line with the default firing direction of the cannon. The other two lines form a 45-degree angle on either side of the center line.
As the user adjusts either coordinate value by moving the slider, the animated safety net moves within the playing field according to the current coordinate values as illustrated in Figure 9.
When the player adjusts the azimuth of the cannon, the view of the playing field reverts to ground level with the camera attached to the cannon and pointing toward the horizon as shown in Figure 10. A vertical red line shows the azimuth that the cannon (and the attached camera) are currently pointing. The user can rotate the cannon until it lines up with the center of the safety net to ensure that the cannon is pointing in the direction of the safety net.
When the player adjusts the elevation of the cannon, the view of the playing field is at ground level with the cannon attached to the cannon as shown in Figure 11. A horizontal red line shows the pointing elevation of the cannon (and the attached camera) relative to the safety net that is at ground level.
Because the muzzle velocity is simply a numeric quantity with no spatial representation, there is no animation when the user adjusts the muzzle velocity slider.
As is my custom, I will break the program down into fragments and explain the individual fragments. As mentioned earlier, a complete listing of the game program named Cannonball01 is provided in Listing 27 near the end of the lesson. Some portions of the program are very similar to the code that I have explained in previous lessons (see Resources), so I won't bore you by explaining that code again in this lesson.
The main method of the Cannonball01 class simply instantiates a new object of the class named Display. Listing 1 shows the beginning of the class named Display.
//Save a reference to this object for access by the GUI.
//Instance variable declarations deleted for brevity.
An object of the Display class is the graphical display shown in Figure 1. This class implements both the ChangeListener and the ActionListener interfaces. This requires that the class provide concrete definitions of the method declared in those two interfaces.
Implementation of the ChangeListener interface makes the object eligible to be registered as a listener on the sliders shown in Figure 8. When any of the sliders fires a ChangeEvent, the stateChanged method that is defined in the Display classis called. I will explain the stateChanged method later.
Implementation of the ActionListener interface makes the object eligible to be registered as a listener on the JButton object shown in Figure 8. When the button fires an ActionEvent, the actionPerformed method defined in the Display class is called. I will also explain the actionPerformed method later.
The Display class declares a relatively large number of instance variables that serve as working variables in the program.There is nothing unusual or exciting about these variables, so I deleted them from Listing 1 for brevity. You can view the variable declarations in Listing 27 near the end of the lesson.
The constructor for the Display class begins in Listing 2. Once again, much of the code in the constructor is very similar to code that I have explained in previous lessons, so I deleted that code from Listing 2 for brevity.
// them in the main display.
Registers the object of the Display class as a listener on each of the sliders and the button shown in Figure 8.
This code is completely straightforward and should not require an explanation beyond the embedded comments in Listing 2.
The two boldface statements in Listing 3 elevate the camera to a position directly above the origin (the cannon) and tilt it downward by 45 degrees to produce the view shown in Figure 7 (except that the blue lines are created later). Also note that the camera is rotated by 180 degrees around the y-axis to cause it to be pointing along the positive z-axis.
// display it on the screen.
Two of the instance variables that I deleted from Listing 1 were named camera and angle. The variable named camera refers to a GM03.Point3D object that controls the position of the camera. The variable named angle refers to a GM03.ColMatrix3D object that controls the orientation of the camera. The two boldface statements in Listing 3 simply establish initial values in those objects by calling methods from the game-math library named GM03. If you have studied the earlier lessons in this miniseries, you should have no trouble understanding the meaning of those statements.
The remaining code in Listing 3 calls the method named drawTheImage to cause the scene to be drawn on the off-screen image. I will have a lot to say about the method named drawTheImage later.
Then Listing 3 calls the standard repaint method, which in turn calls the overridden update method to cause the off-screen image to be copied to the screen. I have explained all of this in previous lessons.
Listing 3 also signals the end of the constructor for the Display class.
This method begins by erasing the off-screen image. I have explained code like this in earlier lessons.
Listing 5 draws three vectors that simulate guy wires and anchors holding up the net as shown in Figure 2.
Instantiates a new GM03.Vector3D object with the appropriate x, y, and z values.
Calls the draw method on the Vector3D object to cause the vector to be drawn on the off-screen image with its tail located at a point that will ultimately be the center of the safety net.
angle - controls the orientation of the camera.
Of the four new parameters, only the type parameter is not intuitive on the basis of its name and the brief description given above. This parameter specifies the type of projection employed to project the 3D world onto the 2D viewing plane. (I will be explaining a lot more about the different projection types in future lessons.) For now, suffice it to say that the type value of 3 used in this program projects the 3D world onto the 2D viewing plane with perspective and with independent control over the position and the orientation of the camera.
The perspective aspect of the projection is illustrated by Figure 1 where the circular safety net appears as an ellipse and the points where the straight lines join that are furtherest from the camera are pictured closer together than similar points on the side that is nearer the camera.
The independent control over the position and orientation of the camera is illustrated by Figure 1 and Figure 2 showing two different views of the safety net. The two views are produced by the camera in two different positions with two different orientations. In Figure 1, the camera is flying directly toward the safety net, pointing directly at the center of the net. In Figure 2, the camera is flying by on the right side of the safety net, but is still pointing directly at the center of the net.
Listing 6 begins the creation of the safety net by defining twelve points that represent the circumference of a circle on the x-z plane and storing references to those points in an array.
You need to know a little about trigonometry to understand the code in Listing 6. (Explaining trigonometry is beyond the scope of this lesson.) If you do understand the trigonometry in Listing 6, there is nothing in Listing 6 that I haven't explained in earlier lessons in this miniseries (see Resources).
The twelve points that are defined in Listing 6 are the points where the straight lines are joined in Figure 1.
Listing 7 draws lines that connect every point to every other point to create the mesh shown in Figure 1.
Except for the new parameters required by the draw method, there is nothing new or unusual in Listing 7. The code in Listing 7 draws the lines that connect the points shown in Figure 1 and other views of the safety net.
The code in Listing 8 tests three different state variables (highlighted in boldface) to determine whether or not to draw the blue lines (guideLines) in Figure 7, the red vertical line (verticalSightLine) in Figure 10, or the red horizontal line (horizontalSightLine) in Figure 11.
// with an angle of 45 degrees between them.
All three of these state variables are type boolean. You will see the code that sets the values of the variables to true and false later in this lesson.
Listing 8 also signals the end of the method named drawTheImage. When this method terminates, the projection of the 3D scene onto the 2D off-screen image is ready to be copied to the computer screen for viewing by the player.
As you saw in Listing 1, the Display class implements the interface named ChangeListener. This makes an object of the Display class eligible to serve as a listener on the sliders in Figure 8. As you saw in Listing 2, the object of the Display class is registered as a listener on all of the sliders.
Implementation of the ChangeListener interface requires the class named Display to define the event-handler method named stateChanged. The definition of the method named stateChanged begins in Listing 9. This method is called to respond to change events on any of the sliders. In other words, whenever the position of a slider is changed, this method is called.
The method begins by executing code that is very similar to code that I explained in Listing 3 to elevate the camera above the origin and tilt it downward by 45 degrees. Once again note that the horizontal orientation of the camera is set to cause it to be pointing in the direction of the positive z-axis (180 degrees). If one of the top two sliders or the bottom slider in Figure 8 is moved, this code will produce a view that is similar to that shown in Figure 7 (with or without the blue lines). Moving one of the center two sliders in Figure 8 will also produce this view, but it will be quickly changed to one of the views shown in Figure 10 or Figure 11 so you probably won't see the view produced by the code in Listing 9 in those two cases.
When writing event-driven programs in Java, you have a variety of options for organizing your code. One option is to instantiate and register a separate event handler object on each of the potential sources of events. For example, I could have instantiated five different objects from classes that implement the ChangeListener interface and could have registered each one of those objects as a listener object on one of the sliders shown in Figure 8. In that case, there would be a one-to-one correspondence between the sliders and the listeners. The stateChanged method associated with each particular slider would be called when a particular slider fires an event. When a particular stateChanged method executes, there would be no question as to which slider fired the event.
Another option, which is the option that I elected to use in this program, is to register a single listener object on all of the event sources. As you saw in Listing 2, I registered the same listener object on all five sliders and also on the button shown in Figure 8. The distinction between the button and the sliders is made automatically by which event-handler method is called. However, regardless of which slider fires the event, the same stateChanged method is called. Therefore, the stateChanged method must determine which slider fired the event in order to be able to respond appropriately. This is accomplished by the code in Listing 10, which gets and saves a reference to the JSlider object that fired the event.
You will see later than when the five JSlider objects shown in Figure 8 are instantiated, a unique value is assigned to the name property for each slider. The code in the stateChanged method uses the source of the event along with the unique names to identify the particular slider that fired the event and to take the appropriate action on the basis of that identification.
Set the x-coordinate of the center of the safety net to the current value indicated by the pointer on the slider.
Display that value immediately below the slider.
Set the value of the state variable named guideLines to true to cause the blue lines shown in Figure 7 to be displayed.
Set the value of the state variable named verticalSightLine to false to prevent the vertical red line shown in Figure 10 from being displayed.
Set the value of the state variable named horizontalSightLine to false to prevent the horizontal red line shown in Figure 11 from being displayed.
From this point forward in the explanation of this method, I will delete some of the repetitive code for brevity. You can view all of the code in Listing 27 near the end of the lesson.
Listing 12 shows the response to an event fired by the middle-left slider in Figure 8.
//Rotate the cannon around the y-axis.
//Display direction that the cannon is pointing.
The purpose of this slider is to change the horizontal aiming angle (azimuth) of the cannon and the attached camera. The code in Listing 12 produces the graphic output shown in Figure 10, which is used interactively to aim the cannon at the safety net.
Get and display the current value of the slider.
Set the vertical position of the camera to ground level.
Set the vertical rotation angle of the camera to zero.
Set the horizontal rotation angle of the camera to 180 degrees plus the current slider value.
Set the state variables named guideLines, verticalSightLine, and horizontalSightLine to cause only the red vertical line shown in Figure 10 to be displayed.
Listing 13 shows the code that is executed when the player moves either the right-center or the bottom-left slider in Figure 8.
The only thing that is unique about the response to those two sliders is that it was necessary to divide the slider value by four to keep the view of both the red horizontal line and the safety net shown in Figure 11 within the viewing area of the canvas.
Finally, after adjusting a variety of state variables, Listing 13 calls the method named drawTheImage to cause the 3D world defined by those state variables to be projected onto the 2D off-screen image.
Then Listing 13 calls the repaint method to cause the off-screen image to be copied to the canvas. As a result, as you move a pointer on one of the sliders, the effect of that movement is displayed on the screen.
Because the object of the Display class is registered as a listener object on the Fire button shown in the bottom right corner of Figure 8, the actionPerformed method, shown in Listing 14, is executed whenever the user clicks the button.
Most of the code in the actionPerformed method is straightforward and I deleted it from Listing 14 for brevity. Basically, the purpose of the deleted code is to prepare the program for the animation that will follow. You can view the deleted code in Listing 27.
The two boldface statements in Listing 14 do deserve an explanation. The first boldface statement instantiates a new object of the member class named Animator. I will explain that class shortly, but for now suffice it to say that the class is a Thread class.
The second boldface statement in Listing 14 calls the start method on the new Thread object, which in turn causes the run method belonging to the object to be executed. It is the run method that actually produces the animation, causing the human cannonball to fly toward the safety net.
The Animator class begins in Listing 15.
//Store the camera angle and position here.
//Unit vectors along the x, y, and z axes.
As is typical, the Animator class begins by declaring several instance variables that are use as working variables by the constructors and methods belonging to the class.
Beginning of the constructor for the Animator class.
The constructor for the Animator class begins in Listing 16.
//Compute the x,y, and z-components of the velocity.
The code in Listing 16 computes and saves the x, y, and z-components of the initial velocity with which the human cannonball will be fired out of the cannon.
Basically, the code in Listing 16 uses the velocity from the Muzzle Velocity slider (see Figure 8) along with the values from the Cannon Azimuth and Cannon Elevation sliders to project the muzzle velocity onto the x, y, and z-axes of the 3D world.
Once again, you will need to understand trigonometry to be able to understand the code in Listing 16. If you do understand trigonometry, and you understand the material in the Kjell tutorial up through Chapter 11, you should have no trouble understanding the code in Listing 16. If you don't meet one or both of those criteria, you will simply have to take my word for it that the code in Listing 16 produces the desired results.
The remainder of the constructor for the Animator class is shown in Listing 17.
//Initialize the camera position and angle.
// along the positive z-axis.
// used by the draw methods.
The code in Listing 17 is straightforward and shouldn't require an explanation beyond the embedded comments. I will point out, however, that as soon as the object is constructed, the methods named drawTheImage and repaint are called to cause the current state of the 3D world to be projected onto the 2D viewing plane and copied to the canvas.
As I explained earlier, when the user clicks the Fire button in Figure 8, the actionPerformed method in Listing 14 is executed. The code in the actionPerformed method instantiates a new object of the Animator class and calls the start method on the new object. This, in turn, causes the run method that begins in Listing 18 to be executed.
//Position the camera at the origin.
Later in the run method, the equations of motion for the trajectory of the human cannonball will be evaluated and the animation will show the view from the camera mounted on her helmet as she flies through that trajectory. The equations of motion involve, among other things, the time since she was fired from the cannon at a particular velocity in a particular direction. The variable named time keeps track of the absolute time since she was fired and the variable named deltaTime specifies the time increment between computations of her position in 3D space.
The value of this variable is one of the controlling factors of the animation speed. (You will see another controlling factor later.) Increasing this value will reduce the number of points along the trajectory at which her position is computed, and everything else being equal, will speed up the animation.
The human cannonball (and the attached camera) starts at ground level, flies through the air in an arc-like trajectory, and impacts the safety net (or the ground) at the other end of the trip. If the computation is allowed to continue at that point, the camera will continue along a path that takes it into negative-y territory below the ground level.
The animation loop that begins in Listing 19 continues until the y-coordinate of the camera goes negative, at which time the loop terminates.
// based on the equations of motion.
The boldface statements in Listing 19 evaluate the equations of motion to compute the current position of the human cannonball and the attached camera in 3D space at a specific point in time. I'm not going to explain the equations of motion. I will simply refer you to a good elementary physics book (or a comparable website) for that knowledge.
Note that the evaluation of the equations of motion in Listing 19 includes, among other things, the amount of time since the trip began.
Listing 20 increments the time so that the next time the equations of motion are evaluated, they will be evaluated with a larger value of time.
Listing 21 computes and saves the angle from the camera to the center of the net.
//Convert the angles to degrees and save them.
If you have studied the previous lessons in this miniseries and you understand trigonometry, you should have no difficulty with the code in Listing 21.
Listing 22 projects the 3D world onto the 2D off-screen image, copies the 2D image to the screen and goes to sleep for 37 milliseconds. Then control goes back to the top of the while loop in Listing 19 where the value of the y-coordinate is tested to see if it is positive or negative.
// and display it on the screen.
If the y-coordinate is still positive, the process repeats and the human cannonball is moved another incremental step along her trajectory. If the y-coordinate is negative, this means that the human cannonball has reached the end of the trip and has impacted either the safety net or the ground. In either case, the loop terminates.
The animation loop has terminated meaning that the y-coordinate for the camera has gone slightly negative, signaling that it has reached the end of its trajectory. The code in Listing 23 causes the program to pause for two seconds to allow the player to absorb the impact from a 3D first-person view and then switches to the birds-eye view shown in Figure 12 (without the small red circle) to allow the player to more clearly see what happened.
guideLines = true;//Draw angular guideLines.
//Project the scene onto the 2D off-screen image.
After disconnecting the camera from the human cannonball's helmet and moving it to the birds-eye view, the code in Listing 23 draws the new view onto the off-screen image.
Listing 24 determines whether the impact location was inside or outside the safety net. If the impact was outside of the net, a small red circle is drawn on the off-screen image to identify the impact location as shown in Figure 12.
//The human cannonball hit the net.
//Draw a green circle at the point of impact.
//Beep the computer to indicate success.
//The human cannonball missed the net.
// do not beep the computer.
//Draw a blue circle at the origin.
If the impact was inside the safety net, listing 24 draws a small green circle on the off-screen image to show where the impact occurred as shown in Figure 13. In this case, the program also causes the computer to beep to indicate a successful landing.
Listing 24 also calls the repaint method to copy the off-screen image to the canvas on the computer screen.
That leaves one more class that I haven't explained yet. This class is named GUI. An abbreviated version of the class is shown in Listing 25.
// input components and set its layout manager.
This class is a member class of the Display class consisting entirely of a constructor. An object of this class provides a home for the user input components shown in Figure 8, and is needed only because there isn't sufficient space on the object of the Display class to contain all of the user input components. This object is displayed to the right of the object of the Display class on the screen.
All of the code in the GUI class is straightforward and I have deleted it from Listing 25 for brevity. You can view the code in Listing 27.
I encourage you to copy the code from Listing 26 and Listing 27. Compile the code and execute the program named Cannonball01 in conjunction with the game-math library named GM03. Experiment with the code, making changes, and observing the results of your changes. Make certain that you can explain why your changes behave as they do.
In this lesson, you learned a little about first-person computer games in general. You also learned how to use the game-math library to write a first-person game in a 3D world.
In the next lesson in this miniseries, you will learn how to derive the equations required for a parallel oblique projection. You will learn about the two angles that are critical to the solution of those equations. You will learn about Cavalier and Cabinet projections, and you will learn how to write the Java code necessary to implement the equations.
Complete listings of the programs discussed in this lesson are shown in Listing 26 and Listing 27 below.
This is an update to the game-math library named GM02.
earlier programs. Note that these methods are overloaded.
parameters whenever the first version is called.
time the draw method is called.
that was included in earlier versions of the library.
earlier versions of the library.
above the xz plane and to the right of the zy plane.
of the type parameter passed to the draw method.
vector around a specified anchor point.
instantiate objects of those classes.
// the xz plane and to the right of the zy plane.
// position looking straight down the z-axis.
// relatively simple perspective projection.
dZ = 0.00001;//prevent DivideByZero error.
//Compute the x,y coordinates on the 2D display.
// control over the camera position and camera angle.
// as to cause it to continue pointing at the point.
// make it appear that the camera has been rotated.
// be provided in the following order.
// comply with this requirement.
// rotation. Then perform the rotation.
//Extract the coordinate values for the camera.
// the visual effect of perspective.
//Declare variables for storing the output.
// that it is no longer visible in the 2D.
// camera ventures into the scene.
// dZ to give the visual effect of perspective.
// follows with dummy parameters.
//Note that this method is overloaded.
// projection method to call.
// the y-axis of the anchor point.
// that this method is overloaded.
// and returns the scaled vector.
// details regarding the rotation of a point.
// this method is overloaded.
before the advent of the personal computers.
1. Adjust the x and z-coordinates of the safety net.
4. Observe the impact location in the birds-eye view.
the safety net and a beep emitted by the computer.
located somewhere within the range of the cannon.
in the safety net when she is fired from the cannon.
screen during the entire trajectory of the cannonball.
the computer does not beep.
holding the net in place.
The elvation of the cannon.
clicks to fire the cannon.
for a projectile in a vacuum.
view of the playing field reverts to ground level.
cannon is pointing in the direction of the safety net.
relative to the safety net that is at ground level.
the user adjusts the muzzle velocity slider.
//The following are 3D perspective drawing parameters.
Graphics2D g2D;//A reference to the off-screen image.
// for adjusting the azimuth of the cannon.
// for adjusting the elevation of the cannon.
//References to the current position of the camera.
//User input and data output components.
//Values obtained from user input.
// constructor for the GUI class.
// downward for initial adjustments.
// and project it onto the 2D off-screen image.
// anchors holding up the net.
// plane. Store the points in an array.
// point to create the mesh in the net.
// according to the values of the flags.
// any of the sliders.
// of the source of the event.
//Set and display the velocity value.
// values of the associated sliders.
//This is an inner class of the Display class.
// is an inner class.
// called on the animation thread.
// to the birds-eye view.
// class to contain all of the user input components.
// of the Display class on the screen.
// labels to the control panel.
//Add the control panel to the JFrame.


text:
Sean 'Diddy' Combs' All-Star Prayer Circle and More Insider Scoop
As far as Sean "Diddy" Combs is concerned, the family that plays together prays together. Insiders say the hip-hop mogul led an all-star prayer circle that included his son Christian Combs, Lil' Kim…
By Selma Fonseca
Selma Fonseca
Demi Lovato, Chris Martin & More Turn Out for Emmanuel Kelly's 'Never Alone' Video
FLAVIA Releases 'Them' Video for Transgender Day of Visibility
Rodrigo Films Signs With Jessy Terrero's Cinema Giants: Exclusive
Sean "Diddy" Combs photographed in 2015. Charles Sykes/Bravo/NBCU Photo Bank via Getty Images
Diddy Prays
As far as Sean "Diddy" Combs is concerned, the family that plays together prays together. Insiders say the hip-hop mogul led an all-star prayer circle that included his son Christian Combs, Lil' Kim, Lil Wayne, French Montana and Busta Rhymes before the artists took part in a performance by Puff Daddy & The Family in Miami on the first night of the 2015 Revolt Music Conference on Oct. 16. Onstage, the spiritual vibe gave way to a financial theme as Diddy performed "All About the Benjamins" with Kim and "Pass the Ciroc" with Rhymes. Diddy, who briefly dubbed himself "Ciroc Obama" is a hype man for the spirit brand and gets a cut of profits.
The Promise & Perseverance of Detroit Rap's Rising Stars
Puffy Daddy Debuts 2 New Songs At BET Hip-Hop Awards
Jennifer Garner Rocks On
Jennifer Garner may be going through a public divorce from Ben Affleck, but that didn't stop her from rocking out for a good cause. On Oct. 14, Garner hosted a fundraiser in Malibu for the Charlotte and Gwenyth Gray Foundation to Cure Batten Disease, a rare, fatal neurodegenerative disorder. The National and Young the Giant performed, and a source says that though Garner "didn't dance, she clearly was enjoying the music."
Jennifer Garner attends the Danny Collins New York premiere at AMC Lincoln Square Theater on March 18, 2015 in New York City. Photo by Jamie McCarthy/Getty Images
Matt Schultz Uncaged
Cage The Elephant frontman Matt Schultz takes his reputation for unhinged live performances seriously. To help spread the word about the band's upcoming album, Tell Me I'm Pretty, which was produced by Dan Auerbach of The Black Keys and will be released on Dec. 18, Cage the Elephant played a secret Oct. 15 show at the tiny, 400-capacity Lower East Side venue The Box, and during one of Schultz's forays into the audience, he was lifted by the crowd and raised, upside down. toward the balcony where a concertgoer pulled the singer up by his feet. Balancing himself on the narrow outer ledge of the second-floor structure, Schultz nodded toward the lights strung beneath him along the balcony. "I didn't break a single one," he boasted before leaping wildly from the ledge and being caught by fans.
Firefly 2014: Top 10 Best Performances
Pras' Oscar Bid
Pras Michel is hoping to add an Oscar to his Grammy wins. On Oct. 16, film producer and three-time Academy Award nominee Lawrence Bender (Pulp Fiction, Inglourious Basterds) hosted an intimate screening of Sweet Micky for President, which Michel wrote and produced. The former Fugees member, who has two Grammy Awards to his credit, also appears in the film, which is about his (and others') successful backing of flamboyant musician Michel Martelly's bid to become president of Haiti. Sources say the screening, held at Soho House in West Hollywood, was part of Michel's efforts to get the film nominated by Oscar voters.
An edited version of this story originally appeared in the Oct. 31 issue of Billboard.
christian combs
Lawrence Bender
Michel Martelly


My friend and I shoot a short film for a thesis. We need to rent a room, or find suitable properties to recreate the atmosphere. We need a takof vintage sofa https://housera.co.uk/214-chesterfield- sofas and a few chairs. We will be shooting it at the end of next month in Denver. Can someone help us?


Below is the complete list of current Stride Center class offerings.
Click HERE to download the Course Calendar!
The A+ course is designed for individuals who are seeking an IT career in technical support. It is recommended that before beginning the A+ training that applicants have some foundational knowledge of computer technologies and the aptitude to learn a large volume of information in a relatively short period of time.
Completion and certification of this course documents and validates foundational-level knowledge and skills necessary for a career in the ever-expanding field of Information Technology.
IT careers demand ongoing skills refreshing and updating. The field is rich with options for technical certifications. The Stride Center offers a focused offering of advanced technical certifications designed to enhance graduate's competitive position in the field. The Stride Center offers CompTIA's Network + certification and Security+ certification, both very valuable and relevant technical certifications for today's job market.
CCNA manages local area networks (LAN) and wide area networks (WAN) that use Cisco routers and switches.


Subscribe The Sunglass Fix Coupon Or Discount Directly In Your Inbox.
Make The Most Of Free Shipping Worldwide at Thesunglassfix.com!
Sunglass fix offers free shipping anyway. You don't need a coupon for this!
Select which repair parts you want to buy to fix yor sunglasses and get 20% off at thesunglassfix.com. Offer will be appeared at checkout page automatically.
Special Offer calaca lenses from $26.62!
Enjoy dragon calaca replacement sunglass lenses from $26.62!
Get change you sunglass lenses and avail 10% off without using coupon code in the code section.
Get channel replacement lenses only for $26.62.
We have created a number of videos explaining how to do everything from how to adjust your frames, replace your lenses, and more. Just click get deal button!
Make Custom Regular & Polarized Sunglass Lenses as discount price as $33.06 at thesunglassfix.com.
When it comes to sunglasses, people are willing to pay hundreds of dollars for a stylish pair. The Sunglass Fix has great range of premium quality sunglasses and lenses for fashion conscious people to make an impression in today's world. It's one of the best sites to purchase awesome range of quality sunglasses and lenses from leading eyewear brands such as Ray Bans, Oakley, Revo, Giorgio Armani, Prada's and much more at cost effective prices. The products lined up at this store are beautifully made and really fabulous for every individual lifestyle which you won't find in mainstream stores. If you do make up your mind, make use of Coupon Codes and Promo Codes to achieve benefit of awesome discount offers.


text:
Resize Text
Skip to main content D.C., Md. & Va. The District Maryland Virginia Local Crime & Public Safety Local Education Obituaries Local Transportation Capital Weather Gang
Principals sue Prince George's school system
By Ovetta Wiggins
Ovetta Wiggins
Local reporter covering Maryland state politics
The principals' union has filed a class-action lawsuit against the Prince George's County public school system and its Board of Education.
The Association of Supervisory and Administrative School Personnel filed the suit, alleging discrimination based on age and race, on behalf of its 800 members.
The complaint, which seeks $100 million in lost wages and benefits, interests, costs expenses and attorney fees, was filed this month in District Court.
The union alleges that the school system terminated 27 employees in spring 2011 "under the guise or pretext of a reduction in force and/or reorganization."
The school system "systematically promoted" younger principals over those who were over 40 and subjected older principals to "more subjective and rigorous performance standards," according to the lawsuit.
Doris Reed, the president of the union, said employees have been "demoralized."
"You have experienced people who were passed over for promotion, that affects their jobs and therefore affects the children," she said.
Briant Coleman, a spokesman for the school system, said in an e-mail that the school system has not been served with a complaint by the union.
Reed said the lawsuit will be served on the board this week.
Ovetta Wiggins Ovetta Wiggins covers Maryland state politics in Annapolis. She came to The Washington Post in 2003 and previously worked at the Philadelphia Inquirer and the Bergen Record in New Jersey. Follow
Carolyn Hax: Three's a crowd, except when it's an angry, drunken mob
Boyfriend's debauched, middle-aged son moves home and wants her out of the house.
Most Read Local
Who would work for Rep. Santos? Capitol Hill is watching closely.
'Schoolhouse Rock' debuted 50 years ago — and shaped a generation
Downtown D.C.'s struggles mount as many workers remain remote
Man sentenced to nearly 7 years in Jan. 6 assault of Officer Brian Sicknick
How a mesmerizing cloud — stacked like pancakes — hovered over Mount Shasta
Success! Check your inbox for details.
The Washington Post App
Submissions and Discussion Policy


Am I a Compulsive Gambler or a Pathological Gambler?
Home › Gambling Addiction › Am I a Compulsive Gambler or a Pathological Gambler?
Compulsive, also called problem, gambling may be a different disorder entirely from pathological gambling. Depending on your habits, you may be able to tell if you are a compulsive or a pathological gambler and where you should go to find help.
Problem or compulsive gamblers are individuals whose betting activities have become controversial, perhaps even dangerous. Their habits have likely led them to making mistakes, whether it is forgetting to pick up their children or taking care of something at home, calling into work so often their boss notices, or spending money meant for other things on wagering. However, they may be able to cut back on these activities if they realize the damage it is causing in their life.
According to the National Library of Medicine, "Pathological gambling is being unable to resist impulses to gamble, which can lead to severe personal or social consequences." This also causes many issues in the individual's life, but unlike the former disorder, pathological gamblers cannot stop these dangerous habits, even if they try. They will need serious professional help in order to do so, and they may need to stop gambling and cease any other activities related to it in order to avoid any issues in the future.
Which Type of Gambler Am I?
A gambling problem can lead to financial issues and even bankruptcy.
Ask yourself the questions below. Make sure to answer truthfully in order to find out which disorder is more likely associated with your behavior and how serious your problematic wagering has become.
Do you ever lie to others when you are going out to gamble?
Would you always prefer to be betting, wagering, or playing instead of doing something else?
Do you sometime feel bad after wagering too much or losing money?
Do you ever use money meant for other things when you place bets?
Do you feel restless, sad, anxious, or irritable when trying to cut back?
Have these feelings caused you to go back to gambling?
Have you ever committed a crime to get more betting money?
Do you engage in these activities to escape your problems or the negative feelings you experience?
Do you bet large sums of money to try and "make up" for past losses?
Have you ever lost a job, relationship, education, or another important opportunity in the past due to this habit?
Are you constantly preoccupied with how to make more money or win back your loses?
Have you tried to quit or cut back more than twice and not succeeded?
Do the other people in your life refuse to give you money?
If you answered yes to these questions, it is likely that you have an addiction and have become a pathological gambler. You will need professional addiction treatment in order to stop.


text:
Watkinsville Mayor Attempts To Veto Budget, Proposes Cuts In EMS Services, Staff Salaries, Legal Services, Arts Funding
***Behavior At Odds With City Charter***
Watkinsville Mayor Bob Smith, on June 30, the final day of the last Fiscal Year, attempted to veto the nearly $2 million budget for the current fiscal year that had been passed in a 5 to 0 vote by the Council on June 17.
Smith sent out a press release on June 30 saying he was vetoing the budget because the Council "ignored" his request at the June 17 meeting to cut 12 percent from the budget and was instead using anticipated federal pandemic relief funds and the city's reserve funds to balance the budget.
Smith submitted a copy of the budget with hand-written notes that, he said, would cut $158,000 from the budget passed by the Council.
Watkinsville City Manager Sharyn Dickerson, in an email message on July 1 copied to Smith, Council Members, and City Attorney Joseph Reitman, said "We do not believe the approved Budget Resolution (with attachments) was affected by the Veto Attempt."
The City Charter provides language about vetoing ordinances but not resolutions, Dickerson explained in a separate email.
In addition, she said, Smith signed the resolution on June 26 and then struck through his signature and did not put into writing his objections within the 10-day window allowed in the Charter for vetoing ordinances.
String Of Confrontations
Smith raised objections to the budget and asked for the 12 percent cut at the June 17 meeting.
Smith 6 25 2020
He spoke for more than 30 minutes, without allowing interruptions, about his inability to understand the budget and raised a host of other long-standing complaints about Council and the city administration.
At the called meeting on June 25, Smith used his Mayor's Report to revisit many of his complaints, speaking this time for more than 36 minutes.
The meeting was for the Mayor and Council to review project categories for the proposed Special Purpose Local Option Sales Tax referendum for the November county-wide ballot, and Smith raised objections to many of the projects being discussed as well.
In the end, Council approved unanimously a project list that includes funds for: public safety facilities and equipment; recreational, parks, and greenspace; roads, streets, drainage, sidewalks, and bridges; and multipurpose government facilities, signage, and equipment.
Veto Letter And Budget Cuts
Smith did not send me a copy of his press release on June 30 announcing his budget cut, but he did send copies to media outlets in the area. One of those who received a copy sent it to me.
In the letter, Smith said he "vetoed the Fiscal Year 2020-21 budget passed unanimously by the Watkinsville City Council earlier this month" and said he had "requested a 12-percent decrease in the budget given a projected $146,000 decrease in the city's sales and ad valorem taxes."
Smith said he "has requested a legal opinion from the City Attorney regarding whether city funds and reserves can be used to balance the budget when there is a deficiency. This question remains to be answered."
City Attorney Reitman participated in the meeting on June 17 when Council passed the budget resolution. Governments routinely use reserves to balance budgets and establish them for that purpose.
"I am fully aware the Council may override this veto, but I ran on a platform of fiscal responsibility," Smith quotes himself as saying in his press release. "Draining our reserves and counting on taxpayer money from the federal government is not fiscally responsible," he added.
Among the items Smith, in his hand-written notes, proposed cutting were the $5,000 for the Oconee Cultural Arts Foundation, the $5,000 for the Urban Forestry Board, half of the $5,000 for Tourism, $35,000 for county Dispatch Services, $9,323 for poll workers, and $3,500 from travel.
Smith also proposed cutting $300 from his $10,000 salary, $34,000 from legal and professional services, and $46,428 from employee salaries.
Brodrick Response
Council Member Brian Brodrick contacted me on Wednesday evening and said he had "background to offer" regarding the veto and the proposed cuts by Smith. He subsequently sent me a page-and-a-half memo.
Smith directs many of his harshest criticism of Council at Brodrick, and Brodrick is the most outspoken of Council members in responding to Smith at Council meetings.
Brodrick said that Smith did not make comments on the budget as it was being prepared by the city manager, did not meet with the manager and the city finance director "before suggesting on the day before scheduled final budget approval at the June 17 council meeting that council cut the publicly vetted and staff recommended budget by 12 percent."
"The Mayor's last-minute recommended cuts would eliminate the Watkinsville Police Department's ability to access the county's 911 and EMS services, cut salaries for existing employees, remove support for tourism and arts programs that bring customers to local businesses, and eliminate the city's designation as a Tree City by cutting required funds for tree planting," Brodrick wrote.
"Due to long term conservative fiscal management the City of Watkinsville has a more than adequate unallocated reserve fund of more than $3 million," Brodrick wrote.
"The reason these funds exist is largely to smooth out recessions so basic functions of government are not dramatically impacted by economic ups and downs," he added.
The Mayor and Council members met at City Hall for the June 25 meeting, but access was restricted.
Sarah Bell was invited to attend and video record the session, but she was unable to do so.
Philip Ashford volunteered to take her place, but he did not arrive until after the meeting was underway.
I had recorded the meeting on Ring Central, and the video below merges the first part of the meeting from my recording via Ring Central and the last part of the meeting as recorded by Ashford.
Smith began his mayor's report at 1:43:52 in the meeting.
Watkinsville Mayor Attempts To Veto Budget, Propos...
State Adds Nearly 3,500 New COVID-19 Cases On Thur...


text:
Q: How to disable or remove clipboard and paste functionality in Stripe Card I am getting crash when I am pasting the 22 numbers of text in Stripe card of monthly and yearly part.
To generate this scenario -
Write 1 to 22 numbers in your device (not in stripe edit text write some where else) and copy it and paste into input of expiry month and year of stripe.

I am using this stripe library -
compile com.stripe:stripe-android:'7.0.0'

Also I have tried this approaches but didn't work -
etUsername.setLongClickable(false);
android:longClickable="false"

Please any body know how to disable the paste and clipboard in Stripe please let me know

redpajama_set_name: RedPajamaStackExchange


text:
If you need immediate support, please contact Good2Talk at 1-866-925-5454, ReachOut at 1-866-933-2023, go to your nearest Emergency Department, or call 911.
Crisis Support/Someone to Talk To
Togetherall: Togetherall harnesses the protective and therapeutic effects of connectedness and healthy social networks in its unique community where people share with and support each other. https://account.v2.togetherall.com/join/ckkdsbx6y3xop0851gbe0ky0s
Be Safe: You deserve help (Family Service Thames Valley). Designed to help you make decisions in a crisis, this app enables you to make a safety plan, and offers information and options for getting help and resources in the London area and other regions. Free and available on both iOS and android. https://mindyourmind.ca/interactives/be-safe
The Lifeline (Liane Weber of The LifeLine Canada Foundation (TLC)). Connects you to crisis centers across Canada 24/7, and offers support for suicide prevention and awareness. Free and available on both iOS and android. https://thelifelinecanada.ca/lifeline-canada-foundation/lifeline-app/
7 Cups (7 Cups of Tea). Designed to provide people with someone to talk too. The service is confidential and anonymous, and it connects you to a caring listener or an online therapist or counsellor. Free with offers for in-app purchases. Available on both iOS and android. https://www.7cups.com/
Bsafe: never walk alone (Bipper USA, Inc.). Designed to help you keep safe in social situations or when alone. Features include: GPS and Alerts to friends/family about your location, check-in alarms, video recording, and fake call to help you get out of unpleasant situations/dates. Free and available on iOS and Google Play (Android).https://getbsafe.com/
Support for Mood and Depression
Mind Your Mood (Family Service Thames Valley). Designed to help you track your mood, understand your ups and downs, and to see the larger picture of your emotional health. Offers a scale to measure the intensity of your moods. Free and available on both iOS and android. https://mindyourmind.ca/interactives/mind-your-mood
Lantern: Manage Stress. Ease Anxiety (Thrive Network Inc.). Combines Cognitive Behavioural Therapy (CBT) techniques with advice from experts. Assess 5 areas including: body, stress/anxiety, mood, sleep, and social life. Provides daily exercises tailored to your needs. Each user is matched with a professional coach trained in CBT. Subscription-based with a monthly fee of $75/month or $398/year ($33/month). Primarily web based with the supplemental app for iOS. https://golantern.com/
Stop, Breathe & Think (Stop, Breathe & Think, PBC). This award-winning app is designed to help you cultivate kindness and compassion in your daily life through a process of Stop: check-in with how you are feeling and what you are thinking; Breathe: practice mindful breathing, and Think: learn to broaden your perspective. Free with offers for in-app purchases. Available on both iOS and android http://www.stopbreathethink.org/
SAM: Self-help for Anxiety Management (The University of West England). Offers self-help methods for managing both the physical and mental symptoms of anxiety. Provides education about anxiety, and external links to resources, as well as a tracker to monitor your anxiety, and a coping toolkit. Free and available on both iOS and android. http://sam-app.org.uk/
B2R: Breathe2Relax (National Centre for Telehealth and Technology). Designed to be a portable stress management tool. Provides information on the effects of stress on the body, as well as instructions and breathing exercises to manage stress and anxiety. Free and available on both iOS and android. https://psyberguide.org/apps/breathe2relax/
MindShift (Anxiety Disorders Association of British Columbia). Designed to help young adults cope with anxiety. Learn to decrease avoidance by practicing relaxation strategies, helpful ways of thinking, and identify steps to cope with anxiety. Free and available on both iOS and android. https://www.anxietybc.com/resources/mindshift-app
Healthy Minds (Royal Ottawa Mental Health Care Centre). Designed specifically for post-secondary students. Designed as a problem solving tool to help you deal with emotions and cope with stresses both on and off campus. Free and available on both iOS and android. http://www.theroyal.ca/mental-health-centre/apps/healthymindsapp/
thinkFull (Canadian Mental Health Association). Designed to help you manage stress, solve problems, and increase wellness. Provides a tracker and personalized tips to help you live a healthy and balanced life. Free and available only on iOS. http://thinkfull.ca/
Wellness and Motivation
SuperBetter (SuperBetter, LLC). Designed as a game to help you feel stronger, increase resiliency, increase motivation and optimism, strengthen social connection, and helps you feel more capable to tackle challenges and achieve your goals. Free and available on iOS and android. https://www.superbetter.com/
Happify (Happify Inc.). Provides tools, techniques, and programs to help you improve your emotional wellbeing. Techniques include positive psychology, mindfulness, and CBT interventions. Free with offers for in-app purchases. Available on both iOS and android. http://www.happify.com/
ThinkUp: Positive Affirmations & Motivations Daily (Precise Wellness LLC). Designed to help you develop and maintain a sense of positivity in your life. Offers personalized guided meditations geared towards your goals. Free with offers for in-app purchases. Available on iOS and android. http://thinkup.me/
Promoting wellness and improves stress management.
Calm (Calm.com). Provides guided meditation, ranging from 2 to 20 minutes. Offers various soft music options to take you to your sanctuary. The goal: To allow you to slow down and de-stress. Free with offers for in-app purchases. Available on both iOS and android.
Omvana – Meditation for Everyone (Minvalley Creations Inc.). Offers personalized guided meditations and includes background music. Provides a health kit to help you recognize your stress level and respond accordingly so as to promote calmness. Free with offers for in-app purchases. Available on both iOS and android. http://www.omvana.com/
10% happier (Change Collective). "Meditation for Fidgety Skeptics," this is a clear, simple approach to learn meditation, and/or improve your meditation practice. Free with offers for in-app purchases on iOS and webapp. http://www.10percenthappier.com/
Smiling Mind (Smiling Minds). It is a tool designed to make meditation and mindfulness easy. Includes a tracker and daily meditations geared for specific age groups. Free and available on iOS and android. https://smilingmind.com.au/smiling-mind-app/
Sleepio – the sleep improvement app (Big Health Ltd.). Developed by a clinical research team made of CBT clinical psychologists and sleep researchers. Designed to improve your sleep using CBT techniques that address your thoughts, lifestyle, and sleep routine. Free with offers for in-app purchases. Available only on iOS https://www.sleepio.com/
Sleep Cycle Alarm Clock (Northcube AB). Uses your phone to analyze your sleep pattern, and wake you up in your lightest sleep phase. Designed to make waking up easy and natural. Free with offers for in-app purchases. Available on iOS and android. https://www.sleepcycle.com/
Relax and Sleep Well with Glenn Harrold (Glenn Harrold). Offers self-hypnosis and meditation recordings to help improve sleep, decrease stress, and promote relaxation. Free with offers for in-app purchases. Available on iOS and android
Health: Fitness
Sworkit (Nexercise, rated #1 fitness app by the American College of Sports Medicine). Sworkit stands for "simply work it." Offers 5- to 60-minute workouts that require no equipment and can be done anytime/anywhere. Free with offers for in-app purchases. Available on both iOS and android. https://sworkit.com/
C25K (Zen Labs). Designed to train new/beginner runners to be 5K distance runners in 8 weeks. Provides a tracker and connects to your music. Free with offers for in-app purchases. Available on both iOS and android. http://www.c25kfree.com/
Aaptiv (Skyfit Sports, Inc., #1 audio fitness app in the Apple Store). Offers personal training anytime, anywhere, and on-demand audio fitness that combines your preferred music playlist and the guidance/voice of a trainer. Free with offers for in-app purchases. Available on iOS and android. https://aaptiv.com/
Health: Food
My fitness pal's calorie counter & diet tracker (MyFitnessPal.com). Designed to help you track your food intake/calories and fitness. Free with offers for in-app purchases. Available on both iOS and android. https://www.myfitnesspal.com/
Zipongo (Zipongo Inc.). Designed as a digital nutrition platform that helps you make healthier food choices based on personalized meal recommendations that meet your food and shopping preferences, needs, and goals. Offers healthy recipes, grocery list function, and local grocery deals. Free and available on both iOS and android. https://www.zipongo.com/
My Diet Coach, Weight Loss Program, and Calorie Counter (Inspired Apps). Designed to help increase motivation to accomplish your health goals, resist unhealthy food choices, and offers a tracker so you can view your progress. Free with offers for in-app purchases. Available on both iOS and android. http://www.mydietcoachapp.com/
Student Planners
Timetable (Gabriel Ittner). Helps you manage your timetable, homework, and studying for exams. Syncs across all Android devices. Free and available on Android on Google Play
My Class Schedule (Sebastian Mayer). Helps you keep organized by reminding you about upcoming classes, unfinished homework, and upcoming exams. Offers a color-coded timetable, notifications. Free with offers for in-app purchases. Available on Android on Google Play.
Class Timetable (Ice Media Creative). Helps you schedule your homework, assignments, upcoming exams, reminders about upcoming-classes, and events. Free with offers for in-app purchases. Available on iOS and Android.
Support for Eating Disorders
Recovery record (Recovery Record, with research partners Stanford U, U of Kansas, Duke U, U of N. Carolina and Nova Scotia Health Authority). Designed as a self-help companion tool to treat any eating disorder. Connects you to a treatment team. Uses CBT and self-monitoring treatment approaches. Free and available on both iOS and android. https://www.recoveryrecord.com/
Rise up + recover (Recovery Warriors LLC). Based upon cognitive behavioural therapy (CBT) self-monitoring techniques, this app helps you track your meals, emotions, and behaviors related to food, body image, and exercise. Free and available on both iOS and android. https://www.recoverywarriors.com/app/
PTSD Coach Canada (Veterans Affairs Canada in partnership with Dept. of National Defense and CMHA). Offers dependable resources, information, and self-help tools to help you learn about and manage symptoms of PTSD. Also includes direct links to support and help. Free and available on both iOS and android. http://www.veterans.gc.ca/eng/stay-connected/mobile-app/ptsd-coach-canada
Sober Grid (Sober Grid, LLC). Provides a sober social network that offers 24/7 peer support and other resources to help maintain sobriety. Offers a sobriety counter to track your recovery. Free with offers for in-app purchases. Available on both iOS and android. https://www.sobergrid.com/
Sober Tool (Blitzen, LLC). Designed to support people recovering from alcoholism and addition problems. Offers a sobriety tracker, rewards, inspirational messages, and support meeting finder, connection to sober community, relapse prevention resources, and relapse help. Free and available on both iOS and android. http://www.sobertool.com/about/
WEconnect – Recovery Aftercare (Pala-linq Social Purpose Corporation). Supports recovery from addiction. Provides a tracker to view progress and helpful routines, encourages social connection, offers rewards for completion of activities/goals, and includes a SOS button when you require immediate support. Free and available on iOS and Google Play. https://www.weconnectrecovery.com/


text:
Quick Lit: Poetry Edition
Shawn was zipped into a bag
and rolled away, his blood added
to the pavement galaxy of
bubblegum stars. The tape
framed it like it was art. And the next
day, kids would play mummy with it.
Will's brother, Shawn, was murdered. Will's certain he knows who did it, too. Will knows the rules: no crying, no snitching, you better seek revenge. He steps into an elevator, ready to find his brother's killer, but the one-minute ride changes everything.
A Newbery Honor Book, a Coretta Scott King Honor Book, a Printz Honor Book, a National Book Award finalist, the winner of the Walter Dean Myers Award, an Edgar Award Winner for Best Young Adult Fiction, the Parents' Choice Gold Award Winner, just to name a few.
This book is gut-wrenching masterpiece. Perfect down to the very last (unforgettable) words.
This Poem Is a Nest by Irene Latham
What Hope Is
of stars
Irene Latham has taken the concept of found poems and put her own spin on it: She's written a poem she calls a Nest and then has created Nestlings from it — poems whose words all started in the original poem.
One of the things I love about poetry is its limitation and how that limitation creates so much opportunity. You can see that right here in what Irene's done. There's great backmatter to walk teachers, students, and aspiring poets through creating their own Nestlings, too. A Kirkus Reviews Best Book, an NCTE (National Council of Teachers of English) Notable Poetry Book.
I adore Irene. She is a talent and a generous soul, and I feel like she's out there doing bookish things no one else is. If you haven't read Irene's work, please remedy that now!
New and Selected Poems, Volume One by Mary Oliver
The water, that circle of shattered glass,
healed itself with a slow whisper
As I mentioned a few weeks back, I've committed to reading poetry every night this year, and I started with New and Selected Poems. It's got the poems most of us think of when we think of Mary Oliver — "When Death Comes," "The Summer Day," and "Wild Geese" (or at least the poems I think of!) and many more that were new to me. I love her reverence for nature and keen observation on what it means to be a person. Little lines jumped out at me, like these:
how the mind clings to the roads it knows, rushing
through crossroads, sticking
like lint to the familiar.
Who ever made music of a mild day?
Alone by Megan E. Freeman
When last year I learned a middle-grade verse novel about a girl surviving on her own was releasing in 2021, I immediately hunted down the details and contacted the book's author, Megan E. Freeman. I had to have her on the blog! Regular readers here will remember her post from February.
Thirteen-year-old Maddie wakes up to discover the rest of her town has been evacuated in the night, and she's been left to fend for herself. Certain the others will soon return, Maddie copes with caring for herself, faces numerous disasters and challenges, and clings to hope, trying to make sense of her "wild and precious life" (there's that Mary Oliver again).
Could my life be any wilder?
Or more precious?
Thought provoking and courageous.
Filed Under: books and reading, poetry
Linda Mitchell says
Oh, that last quote. Beautiful! I so agree about these books and authors.
Joanne R Fritz says
Love this post, Caroline! I too loved LONG WAY DOWN. Such a powerful verse novel. And I love Mary Oliver. And of course, I also loved Megan E. Freeman's novel in verse, ALONE. So intense and engaging.
Jordan says
I struggle so much with poetry and novels in verse. It's something that I feel I should like but I've never understood the appeal! Apparently my brain just doesn't work that way 🙂 I will say that did enjoy the two Jacqueline Woodson novels in verse that I've read in the past year or so, but they were both middle-grade. I guess that's the level of poetry I can handle lol.
I think that's okay! I write verse novels and sometimes am not in the mood to read them. One of the many things I love about them is kids usually come to them without the poetry hang ups adults often bring. It's simply another way to experience story. From the writer's side, there are things I can do with verse I'm unable to accomplish with prose. I love having more than one way to communicate a story.
A quick note to add I tried to comment on your blog but got blocked as a suspected bot.
Thanks for the recommendations! I've read the first two on your list, and many Mary Oliver poems, though not that whole collection. The last one, though, is new to me. I'll put it on my list! Happy National Poetry Month!
Thank you. You, too!