text:
City Agency Collects More than $250,000 in 'Stolen' Wages
Published on Thursday, 25 May 2017 12:11
The city of Los Angeles' Office of Wage Standards has collected more than $250,000 in restitution since last July for workers who were paid below the city's minimum wage, the head of the Bureau of Contract Administration said Tuesday.
The City Council created the Office of Wage Standards within the Bureau of Contract Administration of the Department of Public Works in 2015 to help enforce the city's plan to increase the minimum wage to $15 by 2020.
The first increase kicked in on July 1 of last year for employers with 26 or more workers, bringing the hourly rate from $10, which is the state's minimum wage, to $10.50.
John Reamer, director of the Bureau of Contract Administration, told the City Council about the work of the Office of Wage Standards while speaking about the Department of Public Works' annual report.
The report was for fiscal year 2015-16, so it did not cover the new minimum wage law and the Office of Wage Standards, but Reamer included the information on this year's minimum wage enforcement effort during his verbal presentation.
According to the UCLA Labor Center, L.A. workers lose $26.6 million each week from wage theft through labor violations committed by their employers. Wage theft could include workers not getting paid overtime, getting misclassified as independent contractors and being paid lower than the minimum wage.
For fiscal year 2015-16, the Office of Wage Standards had five employees, but the staff increased this fiscal year and is currently at 19.
A UC Berkeley study in 2015 found that L.A. would need 25 investigators to reach an average of one investigator per 20,000 low-wage workers similar to the standard in San Francisco, which has the state's oldest minimum wage law.
Councilman Paul Koretz asked Reamer if he felt the current staffing levels were sufficient.
"The optimum number, it's hard to say," Reamer responded.
Reamer added that small businesses that have 26 employees or fewer will be subject to the minimum wage increase starting in July. He said the change will likely lead to a higher workload for the office and he will monitor closely to see if additional resources are needed.
Kimberly Fitzpatrick, division manager for the Office of Wage Standards, told City News Service there is money in the budget for seven additional positions for the upcoming fiscal year in the unallocated balance.
"If the workload materializes, they have earmarked money... The way it would work is, if the workload requires it, we would then go back to the council and request those positions," she said.


text:
Q: How to generate dynamic API's in ASP.net Core 2.1 I need to know how to generate API's dynamically, let's we assume that we have their definitions in an XML file, like the below:
<?xml version="1.0" encoding="UTF-8" ?>
<APIS>
 <API>
  <APIName>getCategories</APIName>
  <APIinputs>
   <categoryName>Politics</categoryName>
   <categoryID>1150</categoryID>
  </APIinputs>
 </API>

 <API>
  <APIName>getEmployees</APIName>
  <APIinputs>
   <DepartmentName>HR</DepartmentName>
   <DepartmentID>1150</DepartmentID>
  </APIinputs>
 </API>

</APIS>

Now what needs to be done, is to to read the above and generate from it the listed API's. So then we would have the APIs generated and they can be called from their URLs like this www.example.com/api/v1/controller/getCategories/{categoryName}/{categoryID}
Can you please provide me some insight of this.

A: I think you are looking for something like this.
It has generators for servers as well as for clients, link
You define your API in .yaml and it even has an api-generator-api

redpajama_set_name: RedPajamaStackExchange


text:
NCBWA Polls Articles
Popular Categories: Awards News Polls All Articles
Salisbury tops D3baseball.com NCBWA Division III Preseason Poll
The National Collegiate Baseball Writers Association continues its tradition of NCAA polls with the NCBWA/D3baseball.com Division III Poll. Weekly polls continue through the NCAA Division III Championship.
North Greenville tops NCBWA Division II Preseason Poll
Defending national champion North Greenville will pick up the 2023 season where it left off as the Crusaders picked up 17 out of a possible 19 first-place votes to top the preseason edition of the National Collegiate Baseball Writers Association (NCBWA) Division II Top 25 on Wednesday.
Ole Miss (42-23) tops final 2022 NCBWA Poll
The National Collegiate Baseball Writers Association continues its tradition of NCAA Division I polls for the 25th year with its 2022 weekly surveys. NCAA champ Ole Miss wears the crown in this season-ending survey. This was the first NCAA diamond crown for the Rebels as they downed No. 2 Oklahoma 4-2 in the June 26 finals. Neither of the top two NCAA finishers was among the Top 16 seeds in the NCAA tourney draw, though UM began the season at 13-2 and was ranked No. 2 in four different NCBWA regular-season polls.
North Greenville (54-10) tops final Division II Poll
National champion North Greenville raked in all 19 available first-place votes to cement itself atop the National Collegiate Baseball Writers Association (NCBWA) Division II Top 25 final poll that was released on Friday afternoon by the organization.
Eastern Connecticut tops final d3baseball.com NCBWA Division III Poll
The National Collegiate Baseball Writers Association continues its tradition of NCAA polls with the NCBWA/D3baseball.com Division III Poll. The is the final poll for the 2022 season.
Tennessee (56-7) tops NCBWA Division I Poll
Tennessee is No. 1 for the ninth time in the last 10 weeks with a nation-leading 56 victories. The Volunteers of 2021 NCBWA Mike Martin Coach of the Year Tony Vitello are the No. 1 seed in the NCAA Championship and will host the Knoxville Super Regional against Notre Dame of the ACC. Oregon State, the Vols, Texas and Vanderbilt have held the No. 1 position in 16 NCBWA surveys to date. All eight NCAA Super Regional hosts are among the Top 15 in this week's poll.
Tennessee is No. 1 for the seventh time in eight weeks with a nation-leading 49 victories. The Volunteers, of 2021 NCBWA Mike Martin Coach of the Year, Tony Vitello, were the No. 1 seed in the Southeastern Conference Tournament, May 24-29 and begin the NCAA Knoxville Regional Tournament as the No. 1 National Seed. Oregon State, the Volunteers, Texas, and Vanderbilt also have held the No. 1 position in 15 NCBWA surveys to date.
Tennessee is No. 1 for the seventh time in eight weeks with a nation-leading 49 victories. The Volunteers, of 2021 NCBWA Mike Martin Coach of the Year Tony Vitello are the No. 1 seed in the Southeastern Conference tournament May 24-29. Oregon State, the Volunteers, Texas, and Vanderbilt also have held the No. 1 position in 15 NCBWA surveys to date. Most of the teams ranked among the Top 30 are top seeds in their respective conference tourneys this week.
North Greenville (45-8) tops NCBWA Division II Poll
North Greenville will be the team to beat when the NCAA Division II Baseball Tournament opens up play on Thursday as the Crusaders hauled in 15 of the available 19 first-place votes to top the final regular season edition of the National Collegiate Baseball Writers Association Division II Top 25 on Wednesday.
Eastern Connecticut (39-3) tops d3baseball.com NCBWA Division III Poll
Warriors top final regular-season poll
Tennessee returned to No. 1 for the sixth time in seven weeks to replace last week's No. 1 Oregon State. The Volunteers, of coach Tony Vitello, continue to lead all DI teams with 45 victories and have clinched the No. 1 seed in the Southeastern Conference tournament, held in Hoover, Alabama, on May 24-29. Oregon State, the Volunteers, Texas and Vanderbilt have held the No. 1 position in 14 NCBWA surveys to date.
North Greenville tops NCBWA Division II Poll
North Greenville's steady climb up the ladder of the National Collegiate Baseball Writers Association (NCBWA) Division II Top 25 proved fruitful on Wednesday when the Crusaders swept in seven first-place votes to become just the fourth team this season to hold the top spot in the listing.
Oregon State (38-9) tops NCBWA Division I Poll
Oregon State (38-9 overall) has replaced Tennessee at the top after the Volunteers were No. 1 for five consecutive weeks. The Beavers of coach Mitch Canham have taken a three-game lead over perennial power Stanford in the Pac-12 Conference standings with an 18-6 mark and had achieved a No. 2 ranking for their previous 2022 best mark. OSU joins Texas, Vanderbilt and Tennessee as holders of the No. 1 position in 13 NCBWA surveys to date.
Tennessee (40-4 overall) is No. 1 for the sixth consecutive week after having an earlier school-record winning streak of 23 games and going 9-3 since then. Volunteers head coach Tony Vitello, the 2021 NCBWA Mike Martin National Coach of the Year Award winner, has led the Vols to their best start in Southeastern Conference annals at 19-2. Texas, Vanderbilt and Tennessee have held down the No. 1 position in 10 NCBWA surveys to date.
Tennessee (37-3) is No. 1 for the fifth consecutive week; going 6-2 since having its school-record winning streak ended at 23 games overall two weeks ago. Volunteers head coach Tony Vitello, the 2021 NCBWA Mike Martin National Coach of the Year Award winner, has led the Vols to their best start in Southeastern Conference annals at 17-1. Texas, Vanderbilt and Tennessee have held down the No. 1 position in 10 NCBWA surveys to date.
Tennessee (33-3) is No. 1 for the fourth week in a row, despite having its school-record winning streak ended at 23 games. Volunteers head coach Tony Vitello, the 2021 NCBWA Mike Martin National Coach of the Year Award winner, continues to lead the Vols to their best start in Southeastern Conference annals at 14-1. Texas, Vanderbilt and the Vols have held down the No. 1 position in 10 NCBWA surveys to date.
Tennessee (31-1) is No. 1 for the third week in a row after running its winning streak to 23 games – second in Southeastern Conference history behind Texas A&M in 2015 with 24 consecutive victories. Volunteers head coach Tony Vitello, the 2021 NCBWA Mike Martin National Coach of the Year Award winner, also has led the Vols to their best Southeastern Conference start in school history at 12-0. Texas, Vanderbilt and the Vols have held down the No. 1 position in eight NCBWA surveys to date.
Tennessee (27-1) is No. 1 for the second week in a row after sweeping previous NCBWA No. 1 Vanderbilt in Nashville to win its school-record 19th consecutive game. Volunteers head coach Tony Vitello, the 2021 NCBWA Mike Martin National Coach of the Year Award winner, also has led the Vols to their best Southeastern Conference start in school history at 9-0. Texas, Vandy and the Vols have held down the No. 1 position in eight NCBWA surveys to date.
TAMPA TOPS NCBWA DIVISION II POLL
One poll point separates top two squads
Vanderbilt (17-2) tops NCBWA Division I Poll
Vanderbilt remains No. 1 for a second week after Texas ruled the first four NCBWA national surveys.
Not a member? Join now! 2022 Awards Calendar Division I Media Contacts Archived Site

redpajama_set_name: RedPajamaCommonCrawl


text:
You are at:Home»older»Two-Way Traffic to Return to Broadway at Henderson in Time for Move-In Day
Two-Way Traffic to Return to Broadway at Henderson in Time for Move-In Day
By southeast on	 August 12, 2005 older
CAPE GIRARDEAU, Mo.,
Aug. 12, 2005 – Two-way traffic will return to the north side of Broadway from Park Avenue to Houck Place, and Henderson Street at Broadway will reopen to traffic beginning on Monday, Aug. 15.
"Two-way traffic will be possible on the north side of Broadway for move-in day" scheduled for Aug. 18 at Southeast Missouri State University, said Keith Kimmel, Facilities Management construction manager for the project. "Henderson will be open completely at that time; however, there will be a right-turn-only access to Broadway from Henderson in order to reduce crowding on Henderson Street."
The staging of material and equipment on the parking lot across from New Hall, just north of Broadway along Henderson, will be cleaned for move-in day to allow increased access to the University for students and their families, University officials say.
Southeast Missouri State University, in conjunction with the city of Cape Girardeau, has been working since May to widen Broadway to four lanes between Park Avenue and Houck Place and realign Henderson Street to make it more perpendicular to Broadway. Nip Kelley Equipment Co. Inc. has been serving as the general contractor for the project that will allow better traffic flow and increased access to the University. The work will widen Broadway by about 10 to 20 feet through this stretch, with the intersection of Broadway and Henderson being moved 100 feet to the west.
Broadway also is receiving a new curb and gutter, along with better storm drainage. The project is expected to result in better traffic flow from Park Avenue to Houck Place.
The final concrete for the north side of Broadway was poured on Thursday, July 28, marking the completion of the first phase of the project. University officials say work on the south side of Broadway will be completed by the end of August, which will finish the second phase of the project. During this time, Broadway from Park Avenue to Henderson Street may be closed intermittently as the project is completed.
The next phase of the project, which will consist of improvements from Park Avenue to Perry Avenue, is expected to begin in 2006.
The project experienced some unexpected delays throughout the summer, University officials say, including the discovery of thousands of telephone lines in the grade of Broadway as well as uneven street elevation. For these reasons, construction crews had to lower the telephone cable and raise the grade of the street in some areas. Rain during July also slowed work.
"This project overcame lots of adversity," said Scott Meyer, director of Facilities Management at Southeast Missouri State University. "We worked with the city, the utilities, the contractor and the consulting engineer to find solutions to problems that threatened at least a six-week delay. Even with the hurricane induced rains in the middle of the summer, the road will be opened and operable for the arrival of students."The widening of Broadway and the relocation portion of the project is being funded by the City of Cape Girardeau with transportation trust funds. The University is acting as the city's agent on the project.
Simultaneously with the project, the renovation of the exterior of Houck Field House is under way and also will be complete by the end of August. Work is being done to reface the Field House to more closely reflect the façade of Houck Stadium, with repair of all deteriorating surfaces and treatment of the exterior on the east, south and west sides. An exterior insulation finish system with a stucco-like sandstone finish is being put in place, and the outer facing on the building is scheduled to be complete in mid-August.
Masonry work, including the construction of limestone planters at the base of the south face of the building, is also well under way. Columns will be placed on each side of the main doors of the facility with a canopy over the entrance. New aluminum curtain wall framing and new glass will be installed near the entrance as well, and the building will also feature new glass block panels on its outer walls. Improvements will be made to Lot 65 in front of the Field house to include 120 parking spaces. Half of Houck Place is also being renovated to better serve the flow of traffic in that area.
In another related project, the University is using its funds to install gateway entrance signage on the east and west sides of Henderson at Broadway. The entrance will feature rough-cut limestone, with each structure spanning about 35 feet, capped on each side by five-foot square pedestals eight feet in height with smooth-cut limestone caps. The concave face of each monument will feature a water curtain with the name "Southeast Missouri State University" in pin-mounted lettering above. The monuments will be mirror images of each other. Construction drawings for the project are now being finalized, with the project set to be completed later this fall.
Southeast Announces Recipients of Competitive President's Scholarship
Syed Saqib Hussain and Family International Student Scholarship Established at Southeast
Children's Musical Theatre Class Coincides with 'Hairspray'


text:
Reverb Features
Watch: Super Bowl halftime show 2014 with Bruno Mars and Red Hot Chili Peppers
By Ricardo Baca Feb 2, 2014, 6:52 pm
East Rutherford, N.J. — The fans here needed to be entertained on Sunday night.
Even the diehard Seahawks fans reveling in their team's 22-0 lead against the Broncos at Super Bowl XLVIII's halftime were in need of something unexpected, something flashy, something that was more engaging than their beloved Seattle footballers running over the floppy, flat-footed team from Denver.
Enter Bruno Mars with a gold sportcoat, sky-high hair-poof and, unexpectedly, a drumkit.
[insertSlideshowjava xml="http://reverb.slideshowpro.com/images.php?album=427550″]
And that's how the halftime show started — with pop star Mars slinging sticks on an elevated drum riser. Regardless of the first-half blowout (that continued through the game's end), it was a smart way to get things moving at halftime — percussion!
The only problem? Mars, who first seduced the pop/R&B spotlight in 2009-2010 when he co-wrote Flo Rida's "Right Round" and Cee Lo Green's "F–k You," isn't much of a drummer. But since the Denver Broncos set such a low bar, the New Jersey crowd was wowed as Mars transformed an overblown drum solo into a medley of the biggest hits from his still-very short career.
The halftime show started with a children's choir singing a small taste of Mars' "Billionaire," a solemn moment before the gold-clad pop star popped out behind the drums for a quick transition into "Locked Out of Heaven." A large, soulful band backed up Mars, who appeared to be singing live, and the transition into his "Treasure" was an easy and smooth one.
Watch Mars and the Red Hot Chili Peppers perform at the Super Bowl halftime show below:
Hearing shortened, chorus-centered versions of "Locked Out of Heaven" and "Treasure" back to back like that served as a potent reminder of Mars' familiar formula. His hook-heavy retrofitted R&B is plug-and-play — the kind of music you can almost immediately sing along with on first listen. On 100th listen? Yeah, it gets a little old.
The Red Hot Chili Peppers (with singer Anthony Kiedis and bassman Flea going shirtless on the seasonal New Jersey night) added much-needed originality to the halftime with their single shot, "Give It Away." The hit might be 23 years old, but the post-punk pre-grunge alt-rock jam still has a sting — especially when held in comparison to Mars' polished and produced throwback sounds.
But of course Mars was headlining for a reason — definitely the right call for the super-safe Super Bowl. Mars represents mainstream music in America in 2014, and while he lacked the wow-factor marquee-billing of a Rolling Stones or Prince or Who or Janet Jackson (whose nip-slip celebrated 10 years at this year's big game), his profile worked — with a little help from the Red Hot Chili Peppers.
A lulling piano solo played after the Chili Peppers' departure to the touching monologues of American soldiers' shout-outs from abroad to their friends and family, leading into Mars' "Just the Way You Are." The familiar tune was a fitting close for a halftime show that will never be remembered as one of the greats — but it won't go down as one of the worst, either.
Follow our news and updates on Twitter, our relationship status on Facebook and our search history on Google +. Or send us a telegram.
Ricardo Baca is the founder and executive editor of Reverb, the co-founder of The UMS and an award-winning critic and marijuana editor at The Denver Post.
Post tags: national news, Photo Essays, Red Hot Chili Peppers
Last hit: Watch: Imagine Dragons on "Saturday Night Live" with Kendrick Lamar Up next: Watch: The five Best Super Bowl commercials with Bob Dylan, OneRepublic and more
As unemployment benefits expire, Colorado restaurant workers are taking to the streets to demand support
Outside of Colorado
Voting is open for Katmai National Park's iconic Fat Bear Week
Colorado restaurateurs: We fear for our businesses and employees under Trump. Colorado must vote for Biden.
Get to know Golden


text:
Brian Winters to replace Willie Colon (knee) as Jets' right guard, just in time for Ndamukong Suh
Updated Jan 17, 2019; Posted Sep 28, 2015
Jets host Eagles in NFL Week 3 action
Gallery: Jets host Eagles in NFL Week 3 action
By Darryl Slater | NJ Advance Media for NJ.com
FLORHAM PARK -- Jets coach Todd Bowles said Monday that right guard Willie Colon sprained his knee in Sunday's loss to the Eagles, and will miss at least this week's meeting with the Dolphins in London.
It's a sprained medial collateral ligament for Colon.
PLUS: Eagles 24, Jets 17: The good, the bad, and the ugly from an unsightly offensive performance
"He'll be out at least a week, and we'll reevaluate him after that," Bowles said.
The Jets have their bye week after facing the Dolphins in London. Their next game after the bye is Oct. 18 against Washington.
Brian Winters is now the starting right guard, Bowles said. Winters replaced Colon on Sunday after Colon got hurt. Colon played 32 snaps, Winters 47. Winters will have the challenge this week of facing Dolphins defensive tackle Ndamukong Suh.
"Obviously, with Suh being one of the best in the league, he'll have his hands full," Bowles said.
Winters was a third-round draft pick by the Jets in 2013. He started 12 games that season at left guard and mostly struggled. He started six games there last season, and struggled again, before he tore the anterior cruciate ligament in his knee, and was sidelined for the remainder of the season.
In 2013, Pro Football Focus rated Winters 77th out of 81 offensive guards in the NFL. In 2014, Winters rated 65th out of 78.
This offseason, the Jets signed a new left guard, James Carpenter, and pitted Colon in a right guard competition against Winters and Oday Aboushi, another third-year pro. The Jets wound up cutting Aboushi and keeping Winters as Colon's backup.
Though Colon is 32 and had troublesome knees (even before this MCL sprain), he was able to beat out two younger guys, Winters and Aboushi, to win the job.
Colon has started all 35 games for the Jets at right guard since he signed with them before the 2013 season. Aboushi replaced Winters as the left guard last year, after Winters tore his ACL.
Against the Eagles, Winters was beaten in the fourth quarter by defensive end Brandon Bair, who deflected Ryan Fitzpatrick's pass, leading to an interception.
Winters on Monday explained what happened on the play: "I didn't realize that Fitz was running out of the pocket. He was outside the pocket. I thought I drifted my guy past the play, and he was still there."
The pick happened with 6:28 left in the game, when the Jets trailed 24-14, and had reached the Eagles' 30-yard line. So it was costly.
Despite this hiccup, Bowles was mostly pleased with how Winters played Sunday.
"He graded out pretty good," Bowles said. "Nobody played great on both sides of the ball."
Said Winters: "I thought I played well. Obviously, it's never fun to come in when you're down, and you're going to throw the ball 24/7."
The Jets lost 24-17 to the Eagles after falling behind 24-0.
Winters believes he is "definitely improved" from last season. Suh will test that notion.
As for why the Jets kept Winters over Aboushi, Bowles said, "We thought Brian was tough. Not that Oday was a bad player. But Winters showed some stuff in the spring. He was a little more mobile. Both different types of players."
Aboushi was caught with marijuana during the offseason, which resulted in a one-game suspension by the NFL to start this season. The Jets cut him after his suspension ended. Bowles said Aboushi's weed arrest had nothing to do with why the Jets decided to keep Winters over him. Aboushi now plays for the Texans.
Darryl Slater may be reached at dslater@njadvancemedia.com. Follow him on Twitter @DarrylSlater. Find NJ.com Jets on Facebook.


text:
Home › What We Believe › Purity
It's not easy being pure
Why do we resist God's call to a life of holiness?
By Charles Wiley
"He's such a goody-two-shoes!" "She's a goody-goody."
These childhood taunts cut deep. With these short descriptions you are ostracized from the common majority and tagged as one who makes all the other kids look bad. Pure behavior makes you into someone who thinks she's perfect. Even adults draw back from such descriptions.
The Bible calls us to live lives of holiness. But purity and holiness sound so restrictive, so boring. Who wants to be that good?
We see this played out in television shows and movies on a regular basis. We await the climactic scene when the holier-than-thou characters are discovered to have secret sins or are caught in some other hypocritical situation. Then they either get their humiliating comeuppance or in rare instances become more human, more sympathetic people.
Whether it is Shaw Moore (the killjoy Christian minister in the 1984 movie Footloose, who represses the entire town by having dancing outlawed) or one of his more contemporary successors, audiences love to see the emancipation and joy that comes with the unmasking of sin parading in the name of holiness. We cheer when the lifeless, restrictive prude is foiled and people can express themselves freely.
Who wants to be good?
Think about the qualities of character you aspire to. While honesty or integrity might have come to mind, did purity or holiness? Probably not. For most of us, it is not that we do not want to be good, but we do not want to be too good. We want enough "bad" to be worldly wise. If we are too good, then we will not really know what the world is like — we will be naive at best and boring and lifeless at worst.
The idea of purity has been polluted. It is no longer attractive. When we see people we would associate with purity, we often want them to lighten up or loosen up.
What then do we do with the Biblical call to purity? One stumbling block is that purity is defined as a lack: one who has not done this or that, or something that does not contain a pollutant. But the Biblical notion of purity goes beyond avoidance of impurity. Writing to the church at Philippi, the Apostle Paul informed the believers what he asked God to do in them:
And this is my prayer, that your love may overflow more and more with knowledge and full insight to help you to determine what is best, so that in the day of Christ you may be pure and blameless, having produced the harvest of righteousness that comes through Jesus Christ for the glory and praise of God.
(Philippians 1:9-11)
Purity is something that produces a good: the harvest of righteousness. Purity is also something that Jesus calls us to in the well-known Beatitude: "Blessed are the pure in heart, for they will see God" (Matthew 5:8). Here purity refers to single-minded devotion. To be pure is to worship and serve God with one's whole heart-the opposite of being "double-minded." It is this sense of purity that inspired Søren Kierkegaard's famous definition of purity of heart: Purity of heart is to will one thing.
What does it mean to be holy?
Purity is one aspect of the more inclusive term, holiness, which comes from the Old English word for wholeness. Holiness means our lives are whole because we are set apart for service to God.
Holiness is personal and corporate. We often think of holiness as an individual pursuit. We refer to holy persons (holy men). But our individual holiness is part of a corporate calling. In a time when the young church was dealing with persecution and needed to stand firm in what God had called them to, Peter wrote:
But you are a chosen race, a royal priesthood, a holy nation, God's own people, in order that you may proclaim the mighty acts of him who called you out of darkness into his marvelous light.
(1 Peter 2:9)
Presbyterian congregations are called to be a people set apart that we might proclaim the mighty acts of God.
Holiness is fundamentally about what we do, not just what we do not do. I grew up in what is called the Holiness Movement, a child of missionaries in the Pilgrim Holiness Church. There was much in that upbringing that I cherish and practice to this day, most importantly a sense of being set apart — a sense that following Jesus placed me in a counter-culture that would render me strange in many contexts. This commitment to stand up for what one believes is one that I hope to pass on to my own children.
But there was another aspect to this understanding of holiness that I rejected: the notion that the most important markers of holiness were things one could spot from five feet away. In the world in which I was raised, the biggest sins were smoking, drinking, dancing, playing cards, going to movies, cursing and not dressing modestly. To this day I do not smoke, drink, curse or dress immodestly (to the great relief of the female of the species). I also try to avoid many forms of entertainment that are vulgar, and while I do dance, I do so particularly poorly.
With some exceptions, the problem was not so much the behaviors to be avoided. The problem was that these easily observable behaviors were emphasized to the exclusion of the kinds of dispositions and behaviors that the Scriptures emphasize the most: working for justice for the oppressed, building one another up, and avoidance of pride and easy judgment.
When we seek holiness, we will avoid behaviors and attitudes that are destructive, and we will pursue God's calling for our lives.
Without being uptight
Christians who communicate a judgmental and controlling attitude toward others fuel the popular disdain for purity and a life of holiness. How can we pursue holiness without being uptight?
We can remember our identity as forgiven sinners. In worship we stand before God and one another and confess, "We have sinned against you in thought, word, and deed." Our forgiveness is declared: "In the name of Jesus Christ, you are forgiven." We are then exhorted to live holy lives:
As God's own people, be merciful in action, kindly in heart, humble in mind. Be always ready to forgive as freely as God has forgiven you. And, above everything else, be loving, and never forget to be thankful for what Christ has done for you.
(Colossians 3:12-14 as paraphrased in the Book of Common Worship)
As forgiven people who have been called to a new life, we look to our sisters and brothers and share the peace of Christ with one another.
Because we are forgiven regardless of our merits, we cannot take pride in our salvation or think ourselves better than others. Further, our attempts to live the Christian life are not founded in our own determination or strength or discipline, but in the freedom of being forgiven sinners.
In Galatians 5:1 the Apostle Paul writes, "For freedom Christ has set us free." Our life is to be lived in freedom. We do not pursue lives of holiness and purity because we must, but because we have been enabled to, and because we want to. Likewise, we encourage others to live this life out of joy; we do not coerce. In an atmosphere of freedom, purity can be the fruit of a joyful life.
Contrary to popular opinion, holiness does not kill joy; oddly enough, it brings us joy.
John Calvin was pessimistic about our ability to achieve holiness, but he never denied the worthiness of the pursuit
Crawling toward the goal
Occasionally you'll hear it said — erroneously — that Presbyterians don't believe in holiness.
In fact, the Reformed theologian John Calvin spent much of his time calling the people of Geneva to bring every aspect of their lives into conformity with the gospel. But even though he believed such a life was to be attempted, he refused to acknowledge that anyone had actually attained it. And if attaining the pure life were a prerequisite for becoming part of the church, Calvin believed this would exclude us all.
What then should we do? In the spirit of Hebrews 12:1, Calvin said we should make every effort to run toward the holiness goal. But most of us find running difficult, if not impossible. Crawling slowly is the best we can do. However, our slow progress should not discourage us. Goodness will be attained when we meet God face to face in full fellowship.
Calvin's abiding concern over the exercise of discipline in church and society was due to his conviction that we are called to holiness individually and communally. But he believed we are unable to live this out on our own power. Even our crawling is made possible only by the work of the Holy Spirit — both in our individual lives and in the Christian community that helps us move forward.
In the following passage Calvin exhorts believers to keep creeping along toward the goal:
"But no one in this earthly prison of the body has sufficient strength to press on with due eagerness, and weakness so weighs down the greater number that, with wavering and limping and even creeping along the ground, they move at a feeble rate. Let each one of us, then, proceed according to the measure of his puny capacity and set out upon the journey we have begun .. .. Only let us look toward our mark with sincere simplicity and aspire to our goal; not fondly flattering ourselves, nor excusing our own evil deeds, but with continuous effort striving toward this end: that we may surpass ourselves in goodness until we attain to goodness itself. It is this, indeed, which through the whole course of life we seek and follow. But we shall attain it only when we have cast off the weakness of the body, and are received into full fellowship with him." (John Calvin, Institutes of the Christian Religion, Ed. John McNeill, Tr. by Ford Lewis Battles; Westminster Press, 1960; 3.6.5) — Charles Wiley
This article originally appeared in the April 2007 issue of Presbyterians Today.


text:
15% OFF • CODE: ADVENTURE
For over 14 years, Nagoan Village had been safe from Empress Zarina and her Thor Warriors. The magic treaty, although frail, had been maintained. To help maintain that treaty, Anyia's father, the chief, kept magic out of the village to protect them. Anyia grew up not knowing she had magic, but that has all changed. With her magic awoken, she's now able to charge her battle stick, but it might not matter. Thor Warriors captured her mother and took her to Empress Zarina to break the treaty. To get her back, Anyia must go into the heart of Thor City, the place of stolen magic, and face her enemies. The cost will be high, and if she wants to succeed, she will have to give up her identity, trust a stranger, and rely on new friends.
Anyia, It Begins, is the second book in an epic story of a young feisty girl's journey to follow her dream. She will discover her real power when she leaves the only worlds she knows. This book explores identity, self-trust, and traditions. She will come face to face with Palens, the resistance, and a new foe. It's an excellent addition to any fantasy reader's collection. It's perfect for readers ages 8 to 12.
Anyia - It Begins
Baby Princess and the Lost Doll
Adventure Girl Journal
My Pink Journal
Info@WorldsToDiscover.com
Privacy Policy / Return Policy
© 2017-2020 by Worlds To Discover, LLC.


text:
Michigan State Hoops Preview
A look into the early season of the 2018-19 MSU basketball team
Michigan State University Illustration by Josh Blatt
Illustration by Joshua Blatt
Brody Conaty, Opinion Editor
Football season is beginning to wrap up, and the weather is starting to become bitterly cold. In the sports world, especially in the great state of Michigan, this weather shows that the start of yet another exciting college basketball season is upon us.
Michigan sports fans have been blessed over the past decade to have two great college basketball programs competing in the state. One of those teams, the Michigan State Spartans, is coming off a bittersweet year. In the 2017-18 season, the Spartans were able to hang a conference championship banner behind the efforts of the ever talented Miles Bridges and Jaren Jackson. The Spartans were 28-3 ending the regular season and looked poised to make a deep run in the annual NCAA Tournament. Upon getting to tournament time, the Spartans defeated Bucknell in the first round and was then shocked by 11th seeded Syracuse in the second round. Subsequently, both Bridges and Jackson elected to take their talents to the NBA and both were lottery selections. These events lead to an offseason full of questions: Is Coach Tom Izzo washed up? Will MSU have the talent to be successful next year? Has Michigan surpassed MSU as the premier program in the state? All these questions will be answered soon enough, as the 2018-19 season has now commenced.
Just six games into the season, the Spartans have looked fairly competent at most times. They opened up the season with a tough draw facing Kansas, the number one ranked team in all of college basketball. The first half had Spartan fans panicking as Kansas was completely dominating and Michigan State was looking rough at best. Turnovers, bad defense, and free throws were plaguing MSU in the first half as they entered the locker room down by 14 points. In the second half, MSU played much better basketball and was able to come all the way back from down 18 to only to lose by five points. This late performance had any Michigan State fans relieved, but not yet satisfied. The next two games were snoozers as Izzo's team was able to dominate against clearly inferior teams, Florida Gulf Coast and Louisiana Monroe. Through these three games, there has clearly been some positives to look at, and some negatives.
Starting with the positives, MSU has done a very good job scoring the basketball. They have two playmakers in Cassius Winston and Joshua Langford, who have proven they are able to score the basketball efficiently from all three levels. The two juniors, who are both starting guards, have shouldered the scoring load averaging 17.3 and 16.7 points, respectively. Another force in the Spartan offense is Nick Ward. Ward is putting up 12.7, which is skewed due to an early injury in the most recent matchup with ULM, forcing him to leave the game with only four points. Without a double team, Ward is virtually impossible to defend near the basket. Ward uses his large frame and strength to bully defenders in the paint. The roster is also filled many streaky shooters who can make open shots when given the opportunity. Players like Kyle Ahrens, Matt McQuaid, Kenny Goins, and Aaron Henry fit this category and need to get more consistent from the three point line to keep the entire scoring load off of Winston, Langford, and Ward. Overall, the Spartan offense has been extremely proficient from inside, mid-range, and the three point line. Another good thing going for MSU is their experience and depth. The Spartans run out two seniors and three juniors every night, which is something most teams cannot say. They also have at least twelve capable players who can contribute at a high level, which is important during a grueling, marathon like season.
As for the negatives, there seems to be a lot of small issues that can be fixed. The biggest component holding MSU back is their turnover tendency. The Spartans are turning the ball over 13.6 times per game this season. These turnovers have been the biggest factor in slowing down the offense and also stains the defense as opposing teams have been able to get easy baskets. While on the topic of defense, MSU has not been awful, but to be an elite team, they have a lot to clean up. The hole in the defense is in the paint. Udoka Azubuike, Kansas' center was able to dominate the entire game around the basket. In part, this may be caused by the loss of Jaren Jacksons elite shot blocking in which the remaining players relied on too heavily at times. It will take some time, but once MSU adjusts to not having a elite shot blocker, their defense should improve from where it is at currently.
Overall, the Spartans appear to have the talent to make some noise this season. There are still questions, but it does not seem like anything hall of fame coach Tom Izzo cannot figure out.
(Michigan State went on to defeat two undefeated teams, UCLA and Texas, to win the Las Vegas Invitational. These games resolved some of the problems brought up in the article, such as the defensive struggles of the Spartans, and also gave MSU more credibility with two significant wins.)
Brody is a GLHS senior and has been on the newspaper staff for two years now. Brody is the opinion editor for the Comets...
Hanging with Friends (56%, 5 Votes)
Recreation: Fishing, Camping, Hiking, etc. (22%, 2 Votes)
Playing a Sport (11%, 1 Votes)
Playing Video Games (11%, 1 Votes)
Grand Ledge High School 62 - Traverse City West 44
Grand Ledge High School 34 - Williamston 44
Grand Ledge High School 34 - Dewitt 40
Grand Ledge High School 41 - East Lansing 37
GL Archer Shoots for Glory
Spring Sports Preview 2019
ZionCenter
The Dawg Pound Bracket
Grand Ledge's Archery Teams Compete at the State Tournament
What is Really Fueling College Basketball?
Joe Brya is on the Job
Looking Ahead to March Madness
NBA Trade Deadline
2018 Sports Year in Review


App Engine outage postmortem. Interesting peek behind the scenes. The primary cause of the error was a bug in a GFS (Google File System) Master server caused by a MapReduce process sending a malformed filehandle, reminiscent of the error which took down S3 last year.


text:
5g Local government Timeline
2018 - City of Charleston Sued For Stalling 5G Deployment
Click to view order on Crown Castle Fiber LLC's Motion for Summary Judgment in the Crown Castle Fiber LLC v. City of Charleston litigation pending in US District Court in the District of South Carolina, Charleston Division
Houston based 5G infrastructure installation company Crown Castle sued the City of Charleston for discouraging small cell infrastructure downtown. As a result Charleston passed the current Small Cell Ordinance so the installation process could begin.
This ordinance is written in favor of the wireless industry and offers no protection Charleston residents.
Click to view Charleston City Ordinance for Small Cell Wireless Facilities Permitting & Placement in Rights of Way
December 2019 - Residents Voice 5G Concerns to City Council
Charleston residents spoke at three city council meetings asking council members to send the unacceptable Small Cell Ordinance back to corporate counsel attorneys for revisions. Specifically residents wanted the ordinance to restrict the installation of small cell towers and antennas to a minimum of 300 feet from schools, day cares, and homes.
January 2020 - City Council Votes In Favor of Resident's 5G Concerns
Charleston City Council voted in favor of sending the Small Cell Ordinance back to the city attorneys for revision to include the restriction limiting installation of towers/antennas at least 300 feet away from schools, day cares and homes.
In addition, City Council also passed a resolution to go to the State Senate opposing the passing of any legislation to further restrict local governments in the deployment of 5G - see SC Bill H4262 "South Carolina Small Wireless Facilities Deployment Act". (click here for contact lists and tools to tell our State Reps to vote NO on H4262).
Third, City Council passed a resolution to go to the U.S. Congress asking for a review of FCC regulations and urging new studies on the health risks of 5G technology, since none currently exist.
February/March 2020 - South Carolina Senate Subcommittee Meetings for SC Bill H4262 "South Carolina
Senate subcommittee meetings began on Bill H4262. Concerned citizens from all over the state of South Carolina attended and spoke opposing H4262, which restricts local governments decision making power in regards to 5G deployment, giving more power to the wireless industry.
At the last subcommittee meeting, which occurred on March 5, concerned citizens opposing the bill were told by the subcommittee that the Charleston attorneys only came to statehouse with 5G cell tower aesthetic concerns. They claimed to have not been presented with the Charleston City Council resolution opposing H4262.
Our group later learned the Charleston city attorneys were contacted by "someone from the other side" and offered a deal if Charleston decided it would not oppose H4262. The details of this agreement have not been disclosed, but the result on the other side was Charleston's support of H4262.
Because of this agreement at the state level, Charleston City Council's opposition to H4262 had been intercepted and buried. We are still trying to piece together what happened.
March 2020 - Mayor Tecklenburg's Current Stance
In discussions with a representative for Stop 5G Charleston, Mayor Tecklenburg said he feels it is unlikely that the current Small Cell Ordinance will be revised to meet our requests to restrict the placement of small cell antennas at least 300 feet from schools, day cares, and homes. He said the reason is because of the FCC 2018 Order and now the pending State H4262 bill which restrict local government power in such decisions.
**Update, now with state Bill H4262 vote postponed because of COVID, the City of Charleston has more time to make changes to its Small Cell Ordinance before the state bill potentially goes into affect and Charleston still has local decision making power. Please email and call Mayor Tecklenburg's office with your concerns about 5G deployment and the minimum protection we need to offer schools, day cares and residential homes. Click here for contact information for our city government officials.
April 2020 - COVID Lockdown
Despite schools and businesses being closed, small cell infrastructure companies continue to install towers and antennas as they have been deemed "essential services" during the crisis. Our group contacted Mayor Tecklenburg and Charleston city attorney/corporate counsel to question the installation of infrastructure for a 5G service (that won't be operational for many months if not years) as an "essential" service during the crisis. We were told if the installation companies have been classified as "essential" by the governor, then there is nothing that can be done. So, the 5G infrastructure installation companies have been granted permission to continue work in Charleston, while all other "non-essential" businesses are forced to close.


text:
Hanau Shooting: 'Several People Dead' After Incident In German City
11 months ago 1news.info
German police say several people have been shot dead in the city of Hanau.The dpa news agency reported that police said people were killed, but it was not clear exactly what was behind the incident. It also was not immediately clear how many people wer...
German police say several people have been shot dead in the city of Hanau.
The dpa news agency reported that police said people were killed, but it was not clear exactly what was behind the incident. It also was not immediately clear how many people were dead.
The Bild newspaper reported at least eight people have been killed. Hanau is near Frankfurt.
Regional public broadcaster Hessischer Rundfunk reported, without citing sources, that an attack took place in a hookah lounge in the centre of the city.
It said witnesses reported hearing eight or nine shots and seeing at least one person lying on the ground.
The perpetrator or perpetrators then apparently went to another part of the city, where shots were fired in another hookah lounge, the broadcaster said.
This is a breaking news story and will be updated. Follow HuffPost UK on Twitter, Facebook and Instagram.
Source: Huffington Post Australia Athena2 https://www.huffingtonpost.com.au/entry/hanau-shooting-several-people-dead-after-incident-in-german-city_au_5e4dc670c5b6db259022000a
READ: MasterChef Australia: How Reynold Poernomo's Girlfriend Helped Him Reconnect With His Culture
Previous Homewares retailer ISHKA collapses with 450 jobs at risk
Next Rapper Pop Smoke Reportedly Shot And Killed In Hollywood Hills


text:
How the Bonn climate talks survived Trump
The White House sparked a furor by pushing coal, but U.S. negotiators largely stayed the course from the 2015 Paris deal.
By EMILY HOLDEN
A visitor enters the U.S. "We Are Still In" pavilion at the COP 23 United Nations Climate Change Conference on Nov. 11 in Bonn, Germany. The "We Are Still In" initiative is an alliance of U.S. state and city government representatives, business interests and climate activists who want the nation to remain in the Paris agreement. | Lukas Schulze/Getty Images
BONN, Germany — The White House goaded activists at the international climate talks by pushing coal and other fossil fuels. But behind closed doors, U.S. negotiators stuck to their Obama-era principles on the 2015 Paris deal — despite President Donald Trump's disavowal of the pact.
State Department negotiators at the U.N. conference that ended Saturday hewed to the United States' long-established positions on the details of how to carry out the Paris agreement. And that's the U.S. role that most foreign political leaders sought to highlight, despite the low expectations inspired by Trump's "America First" agenda and his dismissal of human-caused climate change as a hoax.
"You couldn't have expected more," said German Environment Minister Barbara Hendricks, who described the U.S. delegation as constructive and neutral. "Its diplomats who are working here, they act professionally."
White House energy adviser George David Banks portrayed the outcome in even more glowing terms, saying the U.S. had been "indispensable in thwarting efforts by some countries to get a free pass" under the Paris agreement.
The American negotiating team, Banks said, had "led across many issues, promoted U.S. national interests, and protected U.S. taxpayers and businesses."
Among the contentious issues that arose were efforts by poorer nations to allow them to use less arduous systems than wealthier countries to ensure they are measuring their greenhouse gas emissions. China had led that push, which the European Union and U.S. have long opposed, though ultimately the issue was left largely unsettled.
Morning Energy newsletter
The source for energy and environment news — weekday mornings, in your inbox.
Negotiations at the conference, which began Nov. 6, wrapped up Saturday morning after developing nations launched an 11th-hour campaign to require wealthier nations to outline in advance how much climate funding they will provide — a sticking point for countries like the U.S. that amend their budgets each year.
Although observers said the U.S. made no effort to disrupt the talks, former Obama administration climate diplomat Todd Stern said Washington was "not in the negotiations with the same credibility as before."
"It's not that the U.S. isn't there, but it's not the same," said Stern, who had led the U.S. negotiators in Paris nearly two years ago. "It's the EU, the U.K. ... New Zealand, Australia, Canada, Japan, etc. They don't weigh as much as the U.S. did, but they can be very important."
The State Department sent fewer than 20 staffers, a far smaller delegation than it has sent to other climate gatherings in recent years.
Some observers said a U.S.-sponsored panel discussion earlier this week that promoted coal, natural gas and nuclear power appeared designed to please Trump's political base and energy industry supporters in the U.S. At the event, which provoked a high-profile protest, Banks told the audience that the U.S. would support "universal access" to affordable and reliable energy, which for many places in the world meant coal.
Andrew Light, who was part of Obama's delegation and is now a fellow at the World Resources Institute, said bringing that pro-fossil fuel event to the climate talks showed that the U.S. can remain a party to the international talks without substantively changing its positions.
"This administration can continue telegraphing its core beliefs, whether or not anyone one believes that with them," Light said. "In the long run there's everything to be gained from an environment where the United States does cooperate with other parties on whatever they want to cooperate on."
White House coal pitch sparks climate outcry in Bonn
By EMILY HOLDEN and KALINA OROSCHAKOFF
Other U.S. representatives, from companies to a group Democratic governors and mayors led by California Gov. Jerry Brown, sought to reassure the world that many in the U.S. still want to take action to ratchet down carbon pollution, even without Trump. Microsoft Corp. announced own its goal to slash carbon emissions 75 percent by 2030 and pitched sustainable technology, including for agriculture and land-cover mapping, in meetings it held with foreign governments.
But the talks on carrying out the Paris agreement will face major hurdles before the next major gathering next year in Poland. Countries will also face a deadline to finish deciding how they achieve the deal's goal of keeping global warming to below 2 degrees Celsius, the mark that scientists warn would cause irreversible damage.
"Parties haven't allowed the threatened U.S. withdrawal to derail this process," said Elliot Diringer, a former Clinton administration adviser who is executive vice president for the Center for Climate and Energy Solutions. "They've made good progress and set themselves up for a more focused negotiation next year. At the same time, the talks here have underscored the significant political challenges ahead next year."
But Tosi Mpanu-Mpanu, the lead climate change specialist for the environment ministry in the Democratic Republic of the Congo, said many major issues were pushed until next year. "I have a feeling that people were a little bit complacent," he said, disappointed in what he called a "self-fulfilling prophecy" that countries wouldn't make much progress this year.
Top Democrats stage anti-Trump revolt at Bonn climate summit
By DAVID SIDERS and EMILY HOLDEN
Environmental advocates insisted they still aren't seeing the emissions reductions or money necessary to achieve the goals of the Paris deal.
"The conference gets a grade of 'meets expectations,'" said Andrew Deutz, director of international governmental relations for The Nature Conservancy.
Deutz said that while the U.S. didn't blow up the process, "the absence of national U.S. leadership was evident within the negotiating process this week and for driving more ambitious climate action in the future."
Island nations that face the most immediate threats from climate change and sea-level rise pressed their case throughout the two weeks. Allen Chastanet, the prime minister of Saint Lucia, told reporters that island nations are "paralyzed," because they can't stop rising temperatures alone.
Hurricane Maria demolished Barbuda and brought heavy damage to Puerto Rico, after passing just 40 miles from Saint Lucia.
"I have to say to you deep down inside of me I'm angry, I'm anxious and I'm fearful," he told a news conference. "It can't be that a prime minister's only resource is to get on the side of your bed on your knees and pray, and that's what I feel every time I'm here and a hurricane is developing over the Atlantic, is 'Lord, please take care of our people.'"
Kalina Oroschakoff and Sara Stefanini contributed to this report.


My native seed mixtures are unique, so please browse through their contents and you will see a much greater variety of species than is usually obtainable within a commercially available mix. Many of the species present, such as Orchid are not found in other seed mixtures. You will also notice the absence of any cheap 'filler' species within this mix.
This mix produces some stunningly beautiful wild flower landscapes, small and large. I specialise in creating these habitats and this is my unique seed combination for clay, loam and sandy soils. It contains over 40 different native wild flower species at an exceptionally high ratio of 45% wild flowers to grasses.
Once established this species rich mix will display a wide range of some of our most beautiful native wild flowers with different flowers coming into bloom from spring, through summer and well into the autumn to produce a continuous cascade of changing colour.
I also have for sale seeds of some rarer individual species, such as Orchids and Helleborines. They can be chosen from the 'Rarities'/ 'Additional Species' page. Click here for details of the Additional Species.
I have carefully created these seed mixtures from my experiences gained from over 14 years creating wild flower lawns & meadows for clients and they are well balanced to produce a very rich and colourful wild flower grassland with a very long flowering season.


It's the home club of R&A chief executive Peter Dawson so it must be good and the Northumberland, the handiwork of Harry Colt and James Braid, definitely doesn't disappoint. It is played over and beside the racecourse and these days it still stages big events (2013 Regional Open Qualifying) and you need to take great care to negotiate the strategically-placed bunkers and large undulating greens.
Established in 1898, Northumberland Golf Club, situated under 5 miles from Newcastle, offers an 18 hole course, designed in part by both Harry Colt and James Braid. The course features tricky, well-defended greens.


Orient Software opened for business in 2005. Today, Orient is one of Vietnam's Number 1 software development company. After almost 10 years of offering professional IT solutions, Orient's strong team of 100 skilled and experienced IT experts collaborate to provide software development solutions to clients with small to corporate-sized businesses worldwide.
Our client list at Orient includes companies ranging from hot, new start-ups to well-established corporations. Our clients know that using our professional staff for IT needs helps to increase income streams, build or improve communication channels, and simplify operations.
At Orient Software, we understand that our talented professionals are responsible for our company's success. We pride ourselves on fostering a creative work environment that meets the needs of our employees. We give our employees a solid foundation for future success by providing unlimited opportunities for continuous learning and ongoing professional development and personal growth. Each employee is a valued member of the Orient Software family. Experience has taught us that when we demonstrate a full commitment to our employees' satisfaction and wellbeing, they reciprocate with unparalleled dedication to our team and our clients.
We are proud to retain over 130 professional software engineers at Orient Software. We have sourced them from Vietnam's most prestigious universities. Their impressive engineering skills result in the delivery of powerful professional software solutions that are best suited for our clients' needs. Our experienced management team and partners guide and support our engineers and their decisions throughout the development process.


This op-ed originally appeared in the Washington Examiner on February 15, 2018.
These can be challenging narratives to reconcile, and that means that today's still mostly white political reform movement has to build bridges with communities of color. No movement can achieve fundamental democratic restructuring without the substantial inclusion and leadership of communities of color.
While we are called upon to stand up for democracy in North Carolina and Pennsylvania, we are also told to stand down on opening up our elections. In New York City, black elected officials and Democratic Party leaders fought an effort to open the primaries to its one million independent voters, half of whom are young and of color. In Kinston, North Carolina, after the voters enacted open primaries, the Justice Department — under President Obama and Attorney General Holder — nullified the results. Their claim was rather self-serving — that black people's interests were better served by a closed election system run through the Democratic Party.
Two million African-American independents living in closed primary states and millions more Latino independents, along with 26 million Americans, were barred from voting in the 2016 presidential primaries. Taxpayers spent a quarter of a billion dollars on those primaries alone. This is voter suppression. This is taxation without representation. This undermines the democratic process.
Dr. Jessie Fields is a Board member and National Spokesperson for Open Primaries, a national election reform organization.


text:
namespace Abetare
{
    GManager *m_gManager = NULL;

    void GManager::CallbackEventOnActiveMouseMove(int x, int y)
    {
	if(m_gManager)
	{
	    if(m_gManager->HandleEventOnActiveMouseMove(x, y))
		glutPostRedisplay();
	    m_gManager->m_mousePrevX = x;
	    m_gManager->m_mousePrevY = y;
	}
    }

    void GManager::CallbackEventOnPassiveMouseMove(int x, int y)
    {
	if(m_gManager)
	{
	    if(m_gManager->HandleEventOnPassiveMouseMove(x, y))
		glutPostRedisplay();
	    m_gManager->m_mousePrevX = x;
	    m_gManager->m_mousePrevY = y;
	}
    }

    void GManager::CallbackEventOnMouse(int button, int state, int x, int y)
    {
	if(m_gManager)
	{
	    if(button == GLUT_LEFT_BUTTON && state == GLUT_DOWN &&
	       m_gManager->HandleEventOnMouseLeftBtnDown(x, y))
		glutPostRedisplay();

	    m_gManager->m_mousePrevX = x;
	    m_gManager->m_mousePrevY = y;
	}
    }

    void GManager::CallbackEventOnTimer(int id)
    {
	if(m_gManager)
	{
	    m_gManager->HandleEventOnTimer();
	    glutTimerFunc(m_gManager->m_timer, CallbackEventOnTimer, id);
	    glutPostRedisplay();
	}
    }

    void GManager::CallbackEventOnIdle(void)
    {
	if(m_gManager)
	{
	    if(m_gManager->HandleEventOnIdle())
		glutPostRedisplay();
	}
    }

    void GManager::CallbackEventOnMenu(int item)
    {
	if(m_gManager && m_gManager->HandleEventOnMenu(item))
	    glutPostRedisplay();
    }

    void GManager::CallbackEventOnSpecialKeyPress(int key, int x, int y)
    {
	if(m_gManager &&
	   m_gManager->HandleEventOnSpecialKeyPress(key))
	    glutPostRedisplay();
    }

    void GManager::CallbackEventOnNormalKeyPress(unsigned char key, int x, int y)
    {
	if(m_gManager && m_gManager->HandleEventOnNormalKeyPress(key))
	    glutPostRedisplay();
    }

    void  GManager::CallbackEventOnDisplay(void)
    {
	if(m_gManager)
	{
	    glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
	    glClearDepth(1.0);
	    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	    glShadeModel(GL_SMOOTH);

	    glViewport(0, 0, glutGet(GLUT_WINDOW_WIDTH), glutGet(GLUT_WINDOW_HEIGHT));
	    glMatrixMode(GL_PROJECTION);
	    glLoadIdentity();
	    if(m_gManager->m_gCameraAction & ACTION_CAMERA_PROJECTION)
		gluPerspective(GDrawGetParam(GDRAW_PERSPECTIVE3D_ANGLE),
			       (double) glutGet(GLUT_WINDOW_WIDTH) / glutGet(GLUT_WINDOW_HEIGHT),
			       GDrawGetParam(GDRAW_PERSPECTIVE3D_NEAR_PLANE),
			       GDrawGetParam(GDRAW_PERSPECTIVE3D_FAR_PLANE));
	    else
		glOrtho(m_gManager->m_viewZoom * GDrawGetParam(GDRAW_MINX),
			m_gManager->m_viewZoom * GDrawGetParam(GDRAW_MAXX),
			m_gManager->m_viewZoom * GDrawGetParam(GDRAW_MINY),
			m_gManager->m_viewZoom * GDrawGetParam(GDRAW_MAXY),
			GDrawGetParam(GDRAW_PERSPECTIVE3D_NEAR_PLANE),
			GDrawGetParam(GDRAW_PERSPECTIVE3D_FAR_PLANE));

	    glMatrixMode(GL_MODELVIEW);
	    glLoadIdentity();

	    double m[16];
	    m_gManager->m_gCamera.GetModelViewMatrixOpenGL(m);
	    glMultMatrixd(m);

	    if(m_gManager->m_gDrawAction & ACTION_DRAW_TEXTURES)
		glEnable(GL_TEXTURE_2D);
	    else
		glDisable(GL_TEXTURE_2D);

	    if(m_gManager->m_gDrawAction & ACTION_DRAW_LIGHTING)
	    {
		glEnable(GL_DEPTH_TEST);
		glShadeModel(GL_SMOOTH);
		glEnable(GL_LIGHTING);
		GDrawIllumination();
	    }
	    else
		glDisable(GL_LIGHTING);

	    GDrawWireframe((m_gManager->m_gDrawAction & ACTION_DRAW_WIREFRAME) != 0);

//	    GDrawShaderSceneRender();

	    m_gManager->HandleEventOnDisplay();

	    if(m_gManager->m_gDrawAction & ACTION_DRAW_EXPORT_FRAMES)
		ExportFrameAsImage();

//	    glUseProgram(0);

	    glutSwapBuffers();
	}
    }

    GManager::GManager(void)
    {
	m_idWindow      = -1;
	m_timer         =  2;
	m_gCameraAction = ACTION_CAMERA_ROTATE_CENTER |
	    ACTION_CAMERA_ROTATE_GLOBAL_AXIS |
	    ACTION_CAMERA_ROTATE_X |
//	    ACTION_CAMERA_ROTATE_Y |
	    ACTION_CAMERA_ROTATE_Z |
	    ACTION_CAMERA_MOVE_X |
	    ACTION_CAMERA_MOVE_Y |
	    ACTION_CAMERA_MOVE_Z |
	    ACTION_CAMERA_PROJECTION;

	m_gCameraMove   = 2.25;
	m_gDrawAction   = ACTION_DRAW_TEXTURES | ACTION_DRAW_LIGHTING;

	m_mousePrevX    = 0;
	m_mousePrevY    = 0;
	m_viewZoom = 1;

	m_frames = 0;

	m_nrMenuItems                  = 0;
	MENU_CAMERA_ROTATE_CENTER      = ++m_nrMenuItems;
	MENU_CAMERA_ROTATE_GLOBAL_AXIS = ++m_nrMenuItems;
	MENU_CAMERA_ROTATE_X           = ++m_nrMenuItems;
	MENU_CAMERA_ROTATE_Y           = ++m_nrMenuItems;
	MENU_CAMERA_ROTATE_Z           = ++m_nrMenuItems;
	MENU_CAMERA_MOVE_X             = ++m_nrMenuItems;
	MENU_CAMERA_MOVE_Y             = ++m_nrMenuItems;
	MENU_CAMERA_MOVE_Z             = ++m_nrMenuItems;
	MENU_CAMERA_PROJECTION         = ++m_nrMenuItems;
	MENU_CAMERA_STANDARD           = ++m_nrMenuItems;
	MENU_DRAW_TEXTURE              = ++m_nrMenuItems;
	MENU_DRAW_LIGHTING             = ++m_nrMenuItems;
	MENU_DRAW_WIREFRAME            = ++m_nrMenuItems;
	MENU_DRAW_EXPORT_FRAMES        = ++m_nrMenuItems;
	MENU_DRAW_XY_BBOX              = ++m_nrMenuItems;

//	m_gCamera.RotateAroundAxisAtPoint(0.5 * M_PI, 0, 1, 0, 0, 0, 0);

    }

    GManager::~GManager(void)
    {
	if(m_idWindow >= 0)
	    glutDestroyWindow(m_idWindow);
    }

    void GManager::MainLoop(const char * const title, const int width, const int height)
    {
	m_gManager = this;

	static int    argc = 1;
	static char  *args = (char*)"args";

	glutInit(&argc, &args);
	glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE);
	glutInitWindowSize(width, height);
	glutInitWindowPosition(0, 0);
	m_idWindow = glutCreateWindow(title);

	glutDisplayFunc(CallbackEventOnDisplay);
	glutMouseFunc(CallbackEventOnMouse);
	glutMotionFunc(CallbackEventOnActiveMouseMove);
	glutPassiveMotionFunc(CallbackEventOnPassiveMouseMove);
	glutIdleFunc(CallbackEventOnIdle);
	glutTimerFunc(0, CallbackEventOnTimer, 0);
	glutKeyboardFunc(CallbackEventOnNormalKeyPress);
	glutSpecialFunc(CallbackEventOnSpecialKeyPress);

	MenuOptions();

	//RandomSeed();

//	GDrawShaderSceneInit();

	glutMainLoop();
    }

    void GManager::MenuOptions(void)
    {
	m_idMenuCamera = CreateMenu();
	AddMenuEntry("Rotate at center[on]/eye[off]", MENU_CAMERA_ROTATE_CENTER);
	AddMenuEntry("Rotate axis global[on]/camera[off]", MENU_CAMERA_ROTATE_GLOBAL_AXIS);
	AddMenuEntry("Rotation around x-axis [on]", MENU_CAMERA_ROTATE_X);
	AddMenuEntry("Rotation around y-axis [off]", MENU_CAMERA_ROTATE_Y);
	AddMenuEntry("Rotation around z-axis [on]", MENU_CAMERA_ROTATE_Z);
	AddMenuEntry("Moving along x-axis [on]", MENU_CAMERA_MOVE_X);
	AddMenuEntry("Moving along y-axis [on]", MENU_CAMERA_MOVE_Y);
	AddMenuEntry("Moving along z-axis [on]", MENU_CAMERA_MOVE_Z);
	AddMenuEntry("Perspective[on]/orthogonal[off]", MENU_CAMERA_PROJECTION);
	AddMenuEntry("Look at standard position", MENU_CAMERA_STANDARD);

	m_idMenuDraw = CreateMenu();
	AddMenuEntry("Textures [on]", MENU_DRAW_TEXTURE);
	AddMenuEntry("Lighting [on]", MENU_DRAW_LIGHTING);
	AddMenuEntry("Wireframe [off]", MENU_DRAW_WIREFRAME);
	AddMenuEntry("Export frames [off]", MENU_DRAW_EXPORT_FRAMES);
	AddMenuEntry("Set xy bounding box", MENU_DRAW_XY_BBOX);

	m_idMenuMain = CreateMenu();
	AddSubMenu("Camera", m_idMenuCamera);
	AddSubMenu("Draw", m_idMenuDraw);

	glutAttachMenu(GLUT_RIGHT_BUTTON);
    }

    bool GManager::HandleEventOnMenu(const int item)
    {
	if(item == MENU_CAMERA_STANDARD)
	{
	    m_gCamera.SetLookAtStandardPosition();
	    return true;
	}
	else if(item >= MENU_CAMERA_ROTATE_CENTER && item <= MENU_CAMERA_PROJECTION)
	{
	    const int  offset = item - MENU_CAMERA_ROTATE_CENTER;
	    const int  val    = 1 << offset;
	    char msg[50];

	    SetMenu(m_idMenuCamera);
	    if(m_gCameraAction & val)
	    {
		m_gCameraAction &= ~val;
		if(item == MENU_CAMERA_ROTATE_CENTER)
		    sprintf(msg, "Rotate at center[off]/eye[on]");
		else if(item == MENU_CAMERA_ROTATE_GLOBAL_AXIS)
		    sprintf(msg, "Rotate axis global[off]/camera[on]");
		else if(item >= MENU_CAMERA_ROTATE_X && item <= MENU_CAMERA_ROTATE_Z)
		    sprintf(msg, "Rotation around %c-axis [off]", "xyz"[offset - 2]);
		else if(item >= MENU_CAMERA_MOVE_X && item <= MENU_CAMERA_MOVE_Z)
		    sprintf(msg, "Moving along %c-axis [off]", "xyz"[offset - 5]);
		else if(item == MENU_CAMERA_PROJECTION)
		    sprintf(msg, "Perspective[off]/orthogonal[on]");
	    }
	    else
	    {
		m_gCameraAction |= val;
		if(item == MENU_CAMERA_ROTATE_CENTER)
		    sprintf(msg, "Rotate at center[on]/eye[off]");
		else if(item == MENU_CAMERA_ROTATE_GLOBAL_AXIS)
		    sprintf(msg, "Rotate axis global[on]/camera[off]");
		else if(item >= MENU_CAMERA_ROTATE_X && item <= MENU_CAMERA_ROTATE_Z)
		    sprintf(msg, "Rotation around %c-axis [on]", "xyz"[offset - 2]);
		else if(item >= MENU_CAMERA_MOVE_X && item <= MENU_CAMERA_MOVE_Z)
		    sprintf(msg, "Moving along %c-axis [on]", "xyz"[offset - 5]);
		else if(item == MENU_CAMERA_PROJECTION)
		    sprintf(msg, "Perspective[on]/orthogonal[off]");
	    }
	    ChangeToMenuEntry(offset + 1, msg, item);
	    SetMenu(m_idMenuMain);
	    return true;
	}
	else if(item >= MENU_DRAW_TEXTURE && item <= MENU_DRAW_EXPORT_FRAMES)
	{
	    const int  offset = item - MENU_DRAW_TEXTURE;
	    const int  val    = 1 << offset;
	    char  msg[50];

	    SetMenu(m_idMenuDraw);
	    if(m_gDrawAction & val)
	    {
		m_gDrawAction &=~val;
		if(item == MENU_DRAW_TEXTURE)
		    sprintf(msg, "Textures [off]");
		else if(item == MENU_DRAW_LIGHTING)
		    sprintf(msg, "Lighting [off]");
		else if(item == MENU_DRAW_WIREFRAME)
		    sprintf(msg, "Wireframe [off]");
		else if(item == MENU_DRAW_EXPORT_FRAMES)
		    sprintf(msg, "Export frames [off]");
	    }
	    else
	    {
		m_gDrawAction |= val;
		if(item == MENU_DRAW_TEXTURE)
		    sprintf(msg, "Textures [on]");
		else if(item == MENU_DRAW_LIGHTING)
		    sprintf(msg, "Lighting [on]");
		else if(item == MENU_DRAW_WIREFRAME)
		    sprintf(msg, "Wireframe [on]");
		else if(item == MENU_DRAW_EXPORT_FRAMES)
		    sprintf(msg, "Export frames [on]");
	    }
	    ChangeToMenuEntry(offset + 1, msg, item);
	    SetMenu(m_idMenuMain);
	    return true;
	}
	else if(item == MENU_DRAW_XY_BBOX)
	{
	    double xmin, ymin, xmax, ymax;

	    printf("Current xy bbox: %f %f %f %f\n",
		   GDrawGetParam(GDRAW_MINX),
		   GDrawGetParam(GDRAW_MINY),
		   GDrawGetParam(GDRAW_MAXX),
		   GDrawGetParam(GDRAW_MAXY));
	    printf("Enter new values:");
	    scanf("%lf %lf %lf %lf", &xmin, &ymin, &xmax, &ymax);
	    GDrawSetParam(GDRAW_MINX, xmin);
	    GDrawSetParam(GDRAW_MINY, ymin);
	    GDrawSetParam(GDRAW_MAXX, xmax);
	    GDrawSetParam(GDRAW_MAXY, ymax);
	    return true;
	}

	return false;
    }

    bool GManager::HandleEventOnNormalKeyPress(const int key)
    {
	if(key == 27) //escape key
	{
	    exit(0);
	    return true;
	}
	else if(glutGetModifiers() & GLUT_ACTIVE_ALT)
	{
	    if(key == '1')
	   	return HandleEventOnMenu(MENU_CAMERA_ROTATE_X);
	    else if(key == '2')
	   	return HandleEventOnMenu(MENU_CAMERA_ROTATE_Y);
	    else if(key == '3')
	   	return HandleEventOnMenu(MENU_CAMERA_ROTATE_Z);
	    else if(key == 'c')
		return HandleEventOnMenu(MENU_CAMERA_ROTATE_CENTER);
	    else if(key == 'g')
		return HandleEventOnMenu(MENU_CAMERA_ROTATE_GLOBAL_AXIS);
	    else if(key == 'p')
		return HandleEventOnMenu(MENU_CAMERA_PROJECTION);
	    else if(key == 't')
		return HandleEventOnMenu(MENU_DRAW_TEXTURE);
	    else if(key == 'l')
		return HandleEventOnMenu(MENU_DRAW_LIGHTING);
	    else if(key == 'w')
		return HandleEventOnMenu(MENU_DRAW_WIREFRAME);
	    else if(key == 'f')
	    {
		ExportFrameAsImage();

		//return HandleEventOnMenu(MENU_DRAW_EXPORT_FRAMES);
	    }
	    else if(key == 'q')
	    {
		return HandleEventOnMenu(MENU_DRAW_EXPORT_FRAMES);
	    }

	    else if(key == 'x' || key == 'X' || key == 'y' || key == 'Y' || key == 'z' || key == 'Z')
	    {
		const double *p =
		    m_gCameraAction & ACTION_CAMERA_ROTATE_CENTER ?
		    m_gCamera.GetCenter() : m_gCamera.GetEye();
		const double theta = (key == 'x' || key == 'y' || key == 'z') ?
		    Constants::DEG2RAD :
		    -Constants::DEG2RAD;

		if(key == 'x' || key == 'X')
		{
		    if(m_gCameraAction & ACTION_CAMERA_ROTATE_GLOBAL_AXIS)
			m_gCamera.RotateAroundAxisAtPoint(theta, 1, 0, 0, p[0], p[1], p[2]);
		    else
			m_gCamera.RotateAroundRightAxisAtPoint(theta, p[0], p[1], p[2]);
		}
		else if(key == 'y' || key == 'Y')
		{
		    if(m_gCameraAction & ACTION_CAMERA_ROTATE_GLOBAL_AXIS)
			m_gCamera.RotateAroundAxisAtPoint(theta, 0, 1, 0, p[0], p[1], p[2]);
		    else
			m_gCamera.RotateAroundUpAxisAtPoint(theta, p[0], p[1], p[2]);
		}
		else if(key == 'z' || key == 'Z')
		{
		    if(m_gCameraAction & ACTION_CAMERA_ROTATE_GLOBAL_AXIS)
			m_gCamera.RotateAroundAxisAtPoint(theta, 0, 0, 1, p[0], p[1], p[2]);
		    else
			m_gCamera.RotateAroundForwardAxisAtPoint(theta, p[0], p[1], p[2]);
		}
	    }

	}

	return false;
    }

    void GManager::Help(void)
    {
	BeginPrint(PRINT_INFO);
	printf("Help -- Menu options\n");
	printf(" right click to see menu\n\n");
	printf("Help -- Keyboard controls\n");
	printf(" F1         => help\n");
	printf(" Esc        => exit\n\n");
	printf(" ArrowUp    => move camera forward\n");
	printf(" ArrowDown  => move camera backward\n");
	printf(" ArrowLeft  => move camera left\n");
	printf(" ArrowRight => move camera right\n");
	printf(" PageUp     => move camera up\n");
	printf(" PageDown   => move camera down\n\n");
	printf(" Alt+x      => toggle rotate camera around x-axis [current = %s]\n",
	       (m_gCameraAction & ACTION_CAMERA_ROTATE_X) ? "on":"off");
	printf(" Alt+y      => toggle rotate camera around y-axis [current = %s]\n",
	       (m_gCameraAction & ACTION_CAMERA_ROTATE_Y) ? "on":"off");
	printf(" Alt+z      => toggle rotate camera around z-axis [current = %s]\n\n",
	       (m_gCameraAction & ACTION_CAMERA_ROTATE_Z) ? "on":"off");
	printf(" Alt+c      => toggle rotate camera about center/eye [current = %s]\n",
	       (m_gCameraAction & ACTION_CAMERA_ROTATE_CENTER) ? "center":"eye");
	printf(" Alt+g      => toggle rotate camera use global/own frame [current = %s]\n",
	       (m_gCameraAction & ACTION_CAMERA_ROTATE_GLOBAL_AXIS) ? "global":"own frame");
	printf(" Alt+p      => toggle perspective/orthogonal projection [current = %s]\n\n",
	       (m_gCameraAction & ACTION_CAMERA_PROJECTION) ? "perspective":"orthogonal");
	printf(" Alt+t      => toggle textures on/off  [current = %s]\n",
	       (m_gDrawAction & ACTION_DRAW_TEXTURES) ? "on":"off");
	printf(" Alt+l      => toggle lightining on/off [current = %s]\n",
	       (m_gDrawAction & ACTION_DRAW_LIGHTING) ? "on":"off");
	printf(" Alt+w      => toggle wireframe on/off [current = %s]\n",
	       (m_gDrawAction & ACTION_DRAW_WIREFRAME) ? "on":"off");
	printf(" Alt+f      => toggle export frames on/off [current = %s]\n",
	       (m_gDrawAction & ACTION_DRAW_EXPORT_FRAMES) ? "on":"off");

	EndPrint();

    }

    bool GManager::HandleEventOnSpecialKeyPress(const int key)
    {
	switch(key)
	{
	case GLUT_KEY_F1:
	    Help();
	    return true;

	case GLUT_KEY_UP:
	    if(m_gCameraAction & ACTION_CAMERA_MOVE_Y)
	    {
		if(m_gCameraAction & ACTION_CAMERA_PROJECTION)
		    m_gCamera.MoveForward(m_gCameraMove);
		else
		    m_viewZoom -= m_gCameraMove;
		return true;
	    }
	    break;

	case GLUT_KEY_DOWN:
	    if(m_gCameraAction & ACTION_CAMERA_MOVE_Y)
	    {
		if(m_gCameraAction & ACTION_CAMERA_PROJECTION)
		    m_gCamera.MoveForward(-m_gCameraMove);
		else
		    m_viewZoom += m_gCameraMove;
		return true;
	    }
	    break;

	case GLUT_KEY_RIGHT:
	    if(m_gCameraAction & ACTION_CAMERA_MOVE_X)
	    {
		m_gCamera.MoveRight(m_gCameraMove);
		return true;
	    }
	    break;

	case GLUT_KEY_LEFT:
	    if(m_gCameraAction & ACTION_CAMERA_MOVE_X)
	    {
		m_gCamera.MoveRight(-m_gCameraMove);
		return true;
	    }
	    break;

	case GLUT_KEY_PAGE_DOWN:
	    if(m_gCameraAction & ACTION_CAMERA_MOVE_Z)
	    {
		m_gCamera.MoveUp(m_gCameraMove);
		return true;
	    }
	    break;

	case GLUT_KEY_PAGE_UP:
	    if(m_gCameraAction & ACTION_CAMERA_MOVE_Z)
	    {
		m_gCamera.MoveUp(-m_gCameraMove);
		return true;
	    }
	    break;
	}

	return false;
    }

    bool GManager::HandleEventOnMouseLeftBtnDown(const int x, const int y)
    {
	return false;
    }

    bool GManager::HandleEventOnActiveMouseMove(const int x, const int y)
    {
	const double thetax = 2 * M_PI * (y - m_mousePrevY) / glutGet(GLUT_WINDOW_HEIGHT);
	const double thetay = 2 * M_PI * (x - m_mousePrevX) / glutGet(GLUT_WINDOW_WIDTH);
	const double thetaz = thetay;
	bool         event  = false;

	const double *p =
	    m_gCameraAction & ACTION_CAMERA_ROTATE_CENTER ?
	    m_gCamera.GetCenter() : m_gCamera.GetEye();

	if(m_gCameraAction & ACTION_CAMERA_ROTATE_X)
	{
	    if(m_gCameraAction & ACTION_CAMERA_ROTATE_GLOBAL_AXIS)
		m_gCamera.RotateAroundAxisAtPoint(thetax, 1, 0, 0, p[0], p[1], p[2]);
	    else
		m_gCamera.RotateAroundRightAxisAtPoint(thetax, p[0], p[1], p[2]);
	    event = true;
	}

	if(m_gCameraAction & ACTION_CAMERA_ROTATE_Y)
	{
	    if(m_gCameraAction & ACTION_CAMERA_ROTATE_GLOBAL_AXIS)
		m_gCamera.RotateAroundAxisAtPoint(thetay, 0, 1, 0, p[0], p[1], p[2]);
	    else
		m_gCamera.RotateAroundUpAxisAtPoint(thetay, p[0], p[1], p[2]);
	    event = true;
	}

	if(m_gCameraAction & ACTION_CAMERA_ROTATE_Z)
	{
	    if(m_gCameraAction & ACTION_CAMERA_ROTATE_GLOBAL_AXIS)
		m_gCamera.RotateAroundAxisAtPoint(thetaz, 0, 0, 1, p[0], p[1], p[2]);
	    else
		m_gCamera.RotateAroundForwardAxisAtPoint(thetaz, p[0], p[1], p[2]);
	    event = true;
	}
	return event;
    }

    bool GManager::HandleEventOnPassiveMouseMove(const int x, const int y)
    {
	return false;
    }

    bool GManager::HandleEventOnIdle(void)
    {
	return false;
    }

    void GManager::MousePosFromScreenToWorld(const int x, const int y,
					     double * const wx,
					     double * const wy,
					     double * const wz)
    {
	GLint viewport[4];
	GLdouble modelview[16];
	GLdouble projection[16];
	GLfloat winX, winY, winZ;
	double px = 0, py = 0, pz = 0;

	glGetDoublev( GL_MODELVIEW_MATRIX, modelview );
	glGetDoublev( GL_PROJECTION_MATRIX, projection );
	glGetIntegerv( GL_VIEWPORT, viewport );

	winX = (float)x;
	winY = (float)viewport[3] - (float)y;
	glReadPixels( x, int(winY), 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ );
	gluUnProject(winX, winY, winZ, modelview, projection, viewport, &px, &py, &pz);

	if(wx)
	    *wx = px;
	if(wy)
	    *wy = py;
	if(wz)
	    *wz = pz;
    }

    void GManager::ExportFrameAsImage(void)
    {
	char fname[50];
	sprintf(fname, "frames_%05d.ppm", (m_gManager->m_frames)++);
	ExportFrameAsImage(fname);
    }

    void GManager::ExportFrameAsImage(const char fname[])
    {

	const int width = glutGet(GLUT_WINDOW_WIDTH);
	const int height= glutGet(GLUT_WINDOW_HEIGHT);

	char *temp  = new char[3 * width * height];
	char *image = new char[3 * width * height];

	FILE *fp = fopen(fname, "w");

	printf("Writing %s\n", fname);

	glPixelStorei(GL_PACK_ALIGNMENT, 1);
	glReadPixels(0, 0, width, height, GL_RGB, GL_UNSIGNED_BYTE, temp);

	int  a, b, row_sz = 3*width;
	// Reverse rows
	for(int i=0; i < height; i+=1)
	{
	    for(int j=0; j < width; j+=1)
	    {
		a = i*row_sz+3*j;
		b = (height-i-1)*row_sz+3*j;
		image[a]   = temp[b];
		image[a+1] = temp[b+1];
		image[a+2] = temp[b+2];
	    }
	}
	fprintf(fp, "P6\n");
	fprintf(fp, "%i %i\n 255\n", width, height);
	fwrite(image, sizeof(char), 3 * width * height, fp);
	fclose(fp);
	delete[] temp;
	delete[] image;
    }

    int GManager::CreateMenu(void)
    {
	return glutCreateMenu(CallbackEventOnMenu);
    }

    void GManager::SetMenu(const int menu)
    {
	glutSetMenu(menu);
    }

    void GManager::AddSubMenu(const char name[], const int menu)
    {
	glutAddSubMenu(name, menu);
    }

    void GManager::AddMenuEntry(const char name[], const int item)
    {
	glutAddMenuEntry(name, item);
    }

    void GManager::ChangeToMenuEntry(const int pos, const char name[], const int item)
    {
	glutChangeToMenuEntry(pos, name, item);
    }
}

redpajama_set_name: RedPajamaGithub


text:
Best answer: What does opposite attract mean?
What are examples of opposites attracting?
Do opposites attract in relationships?
Can opposites attract stay together?
Is opposites attract good or bad?
What opposite means?
Who said opposites attract?
Why am I attracted to my opposite?
How do you love someone who is your opposite?
Do opposites make good couples?
Is it good to date someone opposite of you?
Do opposite couples last?
Is it better to marry your opposite?
Can opposites stay married?
Why do opposites attract and likes repel?
Can couples with different personalities work?
—used to say that people who are very different from each other are often attracted to each other.
They can vary from person to person, but some common examples may include a stance on having kids, religious beliefs, or wanting to travel versus putting down roots. In contrast, wants, Elson and Wright say, are more of a bonus. If you're looking for a long-term partner, what's crucial is that your needs overlap.
The idea that "opposites attract" in relationships is a myth. In reality, people tend to be attracted to those who are similar to themselves, as dozens of studies have shown. This could be because personality contrasts tend to stand out and become bigger over time.
those in the partners. A new study adds even more fodder to the dialogue, concluding that opposites attract in some ways, but not in others. In other words, opposites can only stay attracted to each other under certain conditions. That's probably not what you want to hear either, but here we go.
THIS IS UNIQUE: Your question: How much is the cost of visit visa in Dubai?
Winch's research suggested that it's not that opposites attract, but traits that are complementary. Further research on complementary personalities suggest mixed results. A few studies parroted Winch's findings, but most studies, in a pool of over 300, found that the opposites largely do not attract.
2a : occupying an opposing and often antagonistic position opposite sides of the question. b : diametrically different (as in nature or character) opposite meanings. 3 : contrary to one another or to a thing specified : reverse gave them opposite directions.
The idea of "opposites attract" was first posited in psychology by Robert Francis Winch, who studied spouses in the 1950s and came to the conclusion that it wasn't similarities that made a relationship work — rather, it was complementarity.
According to clinical psychologist John Mayer, PhD, author of Family Fit: Find Your Balance in Life, you're attracted to your opposite because they have some qualities that you feel you kinda suck at. "The actual attraction is over a quality you would like to develop or build up in yourself," he says.
11 Tips For Dating Your Total Opposite
Let Your Partner Be Your Teacher. …
Dive Into Their Hobbies On An Emotional Level. …
Compromise Like It's Your Job. …
Learn To Argue Like Grown Ups. …
Set Up Boundaries. …
Schedule Time Apart. …
Find Something You Both Like. …
Make Some Decisions In Advance.
We may not know exactly why opposites attract, but there's no denying that opposites who date each other can have extremely fulfilling relationships. Because a successful relationship isn't about dating the same character, but learning to love what makes you different.
You'll Face Your Fears
Of course, it's not necessary to date someone who's your opposite in order to do these things, but it certainly can help. By remaining open-minded, you can learn a lot from each other, feel more balanced, and possibly even have a stronger relationship.
They say opposites attract, and psychologists agree. According to research, couples who are too similar to each other, both physically and in personality, are less likely to have a long lasting relationship than those with some distance between them.
This recent study examined married couples to find out if opposites fare well in marriage, or if picking a partner more like yourself is the better way to go. … According to the study, couples who shared similar values were happier in their marriages.
They say that opposites attract, and that can certainly be a good thing for a happily married or coupled-up pair of people who are, indeed, polar opposites. Still, it can be scary to discover that the person you've fallen in love with, married, and are building a life with is actually very different from you.
Opposites attract.
THIS IS UNIQUE: What is personalized tour?
These two types of electrical charges – positive and negative – are said to be opposite types of charge. … Similarly, a negatively charged object will exert a repulsive force upon a second negatively charged object. Objects with like charge repel each other.
What's more, science has found that couples with different personality types work – and can be super-happy together. According to 2012 research by Cornell University's Vanessa K. Bohns, published in the journal Social Cognition, opposite couples worked well together as a team on mutually-shared long term goals.


'The Walking Dead' Falls Yet Again - Horror News Network - The Horror News You Need!
We hate to sound like a broken record but The Walking Dead ratings continue to hit new lows. Deadline is reporting that the trend continued with the shows latest episode, "Warning Signs." The episode drew a score of 1.94 among the coveted 18-49 demographic.
Andrew Lincoln has only two episodes left and will depart the series on November 4. There is no word yet on how Lincoln's character Rick Grimes will leave the series. Speculation from fans on social media encompass many different scenarios including Grimes will simply go on his own journey, while others guess that he will save his friends but suffer a zombie bite in the process.
One thing is for sure though, AMC is hoping that long-time fans will tune in to the show they once loved to say goodbye to a friend.
Keep it locked to Horror News Network for more news on The Walking Dead.


If you wanted to learn to speak Chinese – really speak Chinese at a level that allowed you to converse with native speakers at a high level and conduct business in China – you'd have to go to China, right?
Not necessarily, thanks to the work of some Rensselaer Polytechnic Institute professors.
They're working to create the next generation of language education – a hybrid of immersive classroom experiences and virtual reality adventures designed to grab students' attention and keep it as they master Chinese.
Teaching a foreign language, especially one as difficult for native English speakers as Chinese, is a particularly thorny problem. Listening, speaking, reading, and writing are all crucial components, but so is the cultural context in which the language is spoken or written.
Particularly thorny problems are exactly the kind that professors Lee Sheldon and Ben Chang like to tackle. Together, they run the Emergent Reality Lab (ERL) in the Rensselaer Technology Park.
Their concept is to combine elements of gaming, like extended narratives and ongoing quests utilizing mixed-reality technology, with the best practices of language education to create the world's most advanced Chinese language pedagogy. Helping them are two experts in Chinese language education recently added to the HASS faculty, Jianling Yue and Yalun Zhou.
In late November, the first class of students taking Chinese at Rensselaer since efforts began to re-establish the Chinese language minor, stepped into the Mandarin Project's hangar-like space in the ERL for a test-drive.
They took seats at café tables surrounded on three sides by massive screens projecting the image of a Beijing teahouse. Facing the students at the front of the room was a woman – a virtual woman – who would serve as their teacher.
The students donned 3-D glasses, the same kind you'd find at a movie theater, and one student was designated the guide and controlled the experience by wearing a hat studded with ping pong-like balls and holding a video game controller.
As Sheldon and Chang looked on, with what seemed like equal parts anxiety and excitement, the students were led through a series of questions by the virtual instructor. She taught them about traditional Chinese tea ceremonies and they had to use their knowledge of Chinese – still fledgling at this early stage of their studies – to interpret her questions and select the correct answer. By doing so, they moved on to the next part of the lesson.
That desire to move forward through the narrative is one of the keys of the Mandarin Project. Before his career in video games, and then academia, began, Sheldon worked as writer for television shows including Star Trek: The Next Generation, Charlie's Angels, and Cagney and Lacey.
The goal is for students to "leave the end of each class with a cliffhanger so they want to take the next level of Chinese," he added.
Inextricable from the storytelling of Mandarin, is the mixed-reality setting in which the story unfolds. That is Chang's specialty.
Mandarin utilizes CAVE — a virtual reality technology that originated at the University of Illinois at Chicago — to create an environment that can transport a group of students together, rather than one student individually.
The technology used to create the mixed-reality setting for Mandarin isn't new, but it is being used in an entirely new way at Rensselaer.
Chang calls it "an incredibly potent technology and an incredibly potent creative medium that we've only begun to scratch the surface of." The applications in education and innumerable other fields have just barely been tapped, he added.
One of the things limiting exploration of this type of mixed-reality technology is expense, he said.
"Something unique about Rensselaer getting involved with this technology is being able to build a system like this in what's, relatively speaking, a kind of DIY, low-cost method using a lot of homegrown things and consumer hardware… and then being able to commit a valuable amout of time and resources and energy and creativity into doing something that is far more experimental and 'blue sky' than a lot of the typical applications for the technology," Chang said.
The team behind Mandarin is larger than Sheldon, Chang, Yue, and Zhou and includes graduate and undergraduate students and experts from a variety of fields. Chang compared the creation of Mandarin to a movie production with a large team of specialists coming together to word toward one goal.
Everyone – from the students to the professors – is learning on the job, he added.
In the fall of 2013, the first class of students took the first level of Chinese language offered at Rensselaer in several years – that class of students is the class that test drove Mandarin in November. During the spring semester, two more level one classes will be offered as well as a level two course. The rollout of Mandarin will be slow and deliberate, but it is likely to begin to be incorporated into the more advanced Chinese courses in coming semesters.


text:
Cian William Thomas Harries (Birmingham, 1 april 1997) is een Welsh voetballer die als verdediger voor Bristol Rovers FC speelt.

Carrière
Cian Harries speelde in de jeugd van Coventry City FC, waar hij in 2015 de overstap naar de eerste selectie maakte. Omdat hij niet in actie kwam, werd hij in januari 2016 een maand uitgeleend aan Cheltenham Town FC, waar hij één wedstrijd speelde. Later in het seizoen debuteerde hij voor Coventry. Het seizoen erna kwam hij vaker in actie, wat hem in 2017 een transfer naar Swansea City AFC opleverde. Na een seizoen bij het tweede elftal debuteerde hij op 28 augustus 2018 voor Swansea in de met 0-1 verloren wedstrijd tegen Crystal Palace FC in de EFL Cup. In het seizoen 2019/20 wordt hij verhuurd aan Fortuna Sittard. Hij debuteerde voor Fortuna op 21 september 2019, in de met 4-2 verloren uitwedstrijd tegen Vitesse. Hij scoorde zijn enige doelpunt voor Fortuna op 6 oktober 2019, in de met 4-2 gewonnen thuiswedstrijd tegen Feyenoord. Omdat 'het avontuur voor beide partijen niet uitpakte zoals men had gewild' werd de huurperiode na een half jaar beëindigd en vertrok Harries naar Bristol Rovers FC.

Statistieken

Zie ook

 Lijst van spelers van Coventry City FC
Lijst van spelers van Fortuna Sittard

Welsh voetballer

redpajama_set_name: RedPajamaWikipedia


text:
Syria: Economic decline, rising hunger and surging humanitarian needs
Citing "disturbing new food security data" published by the World Food Programme (WFP), Under-Secretary-General for Humanitarian Affairs Mark Lowcock stated that some 60 per cent of the population "do not have regular access to enough safe and nutritious food".
"The increase may be shocking, but it cannot be said to be surprising", he said via video link.
Around 60% of Syrians – 12.4 million people – do not have regular access to enough safe & nutritious food.
My latest update to the Security Council on the economic crisis, humanitarian access, and the protection of civilians.https://t.co/v2xOIqbLnt
— Mark Lowcock (@UNReliefChief) February 25, 2021
'Desperate measures'
The UN official told the Council that average household expenses now exceed income by an estimated 20 per cent, leaving millions to resort to "desperate measures" to survive.
More than 70 per cent of Syrians say they have taken on new debt, and are forced to sell assets and livestock. Meanwhile, parents are eating less so they can feed their children, who are now working instead of studying.
"Those who have run out of options are simply going hungry", he spelled out, flagging that more than half a million under-fives are suffering from the effects of stunting.
Looking north
While these problems are visible in many parts of the country, Mr. Lowcock drew attention to the northwest and northeast, where nutrition data show that up to one in three children in some areas, suffer from the irreversible development and learning impacts of stunting.
"A doctor at a pediatrics hospital told me that of his 80 in-patient beds, half are occupied by malnourished children", five of whom had died due to their condition, he said.
Meanwhile, malnutrition has become so normal that parents cannot spot the signs in their own children, another doctor told the relief chief.
Cross-border assistance
Some physicians shared their concerns that cross-border aid into Syria's northwest may be disrupted, prompting Mr. Lowcock to stress the importance of humanitarian access.
"All humanitarian assistance that enters northwest Syria is delivered cross-border" and supports 2.4 million people monthly, he said. Without it, "the situation would go from terrible to catastrophic".
"When it comes to delivering life-saving aid to people in need, all channels should be made, and should be kept, available", the UN official said, echoing the Secretary-General.
Should the Security Council fail to extend its authorization for cross-border assistance in the future, he warned that it would "trigger suffering and loss of life potentially on a very large scale".
Turning to the northeast, Mr. Lowcock informed ambassadors that recent tensions have caused temporary disruptions in emergency assistance for hundreds of thousands of people.
While the UN has continued to scale up crossline medical deliveries there, expanding its reach is dependent on approvals, improved security conditions and adequate funding.
Sixteen families live in a damaged school in Binish, a city in northwest Syria.
Protecting civilians
He painted a picture of a series of "horrific bombings" that killed dozens and injured many others, a humanitarian worker killed while helping COVID-19-affected people on 16 February, and a hospital damaged when a missile struck an adjoining building,
Every day, humanitarian workers in Syria deliver aid under the most difficult circumstances and at great personal risk, Mr. Lowcock said, spelling out: "They must be protected".
He informed the Council that the third draft of UN Strategic Framework for 2021-2023, which covers the UN country team's agreed operational activities, is moving forward and noted those activities are complementary to the Humanitarian Response Plan "to save lives, enhance protection, and increase resilience and access to services".
"This is essential at a time when the economy continues to suffer severe decline, poverty and hunger are on the rise, and humanitarian needs are also increasing", he concluded.


Renowned screenwriter and Hollywood actress Barbara Turner was died on 5 April 2016. She was 79.She was a screenwriter of Petulia, Georgia, Pollock and may other features for film and television.Barbara Turner started her career as an actress in Hollywood. She starred in TV series such as Alfred Hitchcock Presents and Playhouse 90throughout the late 1950s.She shifted her career towards writing in 1966 with her first screenplay which was an adaption of author Jean Genet's play Deathwatch.She went on to pen acclaimed scripts for 1968 drama Petulia, Jackson Pollock biopic Pollack and Robert Altman's The Company.She wrote and produced music drama "Georgia In 1995. The film was honoured at the Montreal Film Festival's Grand Prix of the Americas.She also wrote a handful of screenplays for TV movies which includes.The War Between the Tates and Hemingway & Gellhorn, For both of them she was nominated for Emmy.


text:
ACCEPTED

#### According to
Index Fungorum

#### Published in
Bolezni rastenii 17(3-4): 166 (1928)

#### Original name
Phyllosticta allii-rotundi Lobik

### Remarks
null


text:
Decorating Quotes
Quotations list about decorating, accessorizing and adorn captions citing Tom Felton, Steve Jobs and Anna Quindlen sayings.
What a house. Turns out they're doing OK, the Malfoy's. However, the interior decorating leaves a lot to be desired. And needless to say, Voldemort isn't the greatest houseguest.
— Tom Felton
In most people's vocabularies, design means veneer. It's interior decorating. It's the fabric of the curtains and the sofa. But to me, nothing could be further from the meaning of design.
— Steve Jobs decorating quote
I would be most content if my children grew up to be the kind of people who think decorating consists mostly of building enough bookshelves.
— Anna Quindlen
I love decorating my home. I'm a gardener too, so that's usually something I have to play catch up with.
— Suzy Bogguss
I don't want to see people decorating a house or digging a garden. As for guys like Jonathan Ross, he got an award there last Christmas. What for? He doesn't sing, dance or tell jokes, does he?
— Ian St. John
Cooking, decorating, diet/self-help and gardening books are guilty pleasures and useful time fillers.
— Hillary Clinton