text:
WASHINGTON (AP) — Now it's for real. Every time Mitt Romney or Barack Obama hits a rhetorical high note or commits another blunder, millions of voters watching and listening out there have the power to sit down at home, fill out a ballot, drop it in the mail and be done with the 2012 presidential race.
At least a third of American voters probably will lock in their choices before Election Day arrives on Nov. 6.
The old democratic ritual of a single Tuesday in November when citizens commune in lines at schools and libraries and churches is fading across much of the United States. Why not just mail it in?
Although the two candidates have yet to meet for their first debate, voting by mail is under way in two dozen states, with more to follow. In three — Idaho, South Dakota and Vermont — voters already can show up in person.
Wyoming begins its in-person voting on Thursday and so does Iowa, one of a handful of states considered up for grabs in the neck-and-neck presidential race.
In some of the other hotly contested states — Colorado, Nevada, North Carolina and Florida — more than half the ballots are expected to come in early this year.
Stretching voting out over six weeks makes the high-wire act of presidential campaigning that much more complicated. It presents risks but also rewards for the candidates, as Obama proved in 2008 through an aggressive early mobilizing strategy that overpowered Republican challenger John McCain.
This year looks different: The Romney campaign is pouring manpower and money into its own push to sew up early votes.
An early voting primer:
Oregon's elections are entirely by mail these days. Washington state also has eliminated traditional polling places in favor of mailed ballots, but residents determined to vote in person on Nov. 6 can go to a county election office.
The rest of the states still offer traditional Election Day voting as well as some early option. Colorado, one of the presidential battlegrounds, has the most early birds. In 2008, nearly 80 percent of its votes were cast early and that's expected to increase this time.
In 34 states and the District of Columbia, people can vote early without giving any reason, in contrast to traditional absentee balloting, which was designed for those who will be away from home on Election Day, such as military members or college students, or are physically unable to go to a voting booth.
Some states that ask for an excuse are so loose almost any reason will do, while others have kept strict rules limiting who can vote absentee.
New England and Southern states are less likely to encourage early voting. It's most popular in the West, where the trend got started in the 1990s.
Not necessarily. Giving people more time seems like an easy way to get more citizens to vote. But it's not so simple.
Some studies have found a small increase in total presidential turnout when it's easy to vote early. Others found turnout actually dropped. Maybe some voters just procrastinate and end up missing the deadline. And potential Election Day voters might stay home if early voting drains excitement from the finale.
For state and local elections, mailing ballots to all registered voters does bring an increase in participation, perhaps by reminding people about more forgettable elections.
Presidential races are hard to overlook, so voting options don't seem to make such a large difference.
"Early voting is not something that suddenly brings out hoards of new voters who would not otherwise have voted," said Barry Burden, a University of Wisconsin political science professor who studies voting patterns. "It's a convenience for people who likely would have voted anyway."
Once cast, an early vote is the bank. It can't slip away because of a candidate's misstep or an "October surprise" or a nasty new attack ad. Neither rain nor snow nor traffic jam can touch it come Nov. 6.
A candidate holding back dirt on his opponent can't afford to be coy much longer. By mid-October, significant numbers of voters will be locking in.
"If you wait until the weekend prior to the election to release your stink bomb, you've lost Coloradans," said George Mason University associate professor Michael McDonald, an expert in election statistics. "If you've got the game-changer, you've got to do that soon."
Offsetting that, however: Early voters tend to be die-hard partisans, whose faith in their candidate is less apt to be shaken, political researchers say. Independents and undecided voters are more likely to vote on Election Day or just before.
Despite what you might have heard, early voters traditionally are more likely to be Republican.
Barack Obama's successful push for early votes in 2008 created the impression of a Democratic phenomenon, and that idea's been reinforced by court fights this year over changes to early voting rules in Democratic-leaning areas in Florida and Ohio.
But 2008 was an aberration, McDonald said. Obama's beefed-up early mobilizing effort benefited from infectious enthusiasm among young people and black voters for his campaign.
Across the years, early birds tend to be older and better-educated and are more likely to be white than Election Day voters, he said, and they skew toward the GOP. About a third of voters cast their ballots early in 2008, and Romney's efforts are likely to bump that up this year.
Someday the notion of an Election Day may seem as quaint as giving a campaign speech from atop a tree stump. Maybe it'll be Election Month or the six-week Voting Season.
McDonald thinks that would be OK.
"Voters like it. They like the convenience of it," he said of early voting.
But Burden worries that something is being lost. States with tight limits on absentee voting have higher turnout rates than states with prolonged, wide-open voting seasons, he said.
That may be because in heavy early voting states, Election Day as a civic social event is disappearing.
"Before early voting took off, you could go into your workplace and see co-workers with 'I voted' stickers on their lapels. Media would be camped out at polling places. Your children's school might be a polling place. That's hard to miss," Burden said. "That energy could push over the line people who are on the edge of
One thought on "Vote Early: Skip the Lines, Maybe the Debates, Too"
Mitt Romney Is The Living Embodiment Of The Biggest Problem In America" It's not just his giant income or the low tax rates he pays on it. And it's not just the videotape of him berating almost half of America, or his endless gaffes, or his regressive budget policies.
It's something that unites all of this, and connects it to the biggest underlying problem America faces — the unprecedented concentration of wealth and power at the very top that's undermining our economy and destroying our democracy.


text:
Sarah Jarosz
Sam Bush
Bryan Sutton
Dwight Yoakam
Liz Longley
In the late sixties, Barry Poss came to the United States from Canada with a fellowship and a student visa to obtain a doctorate's degree of sociology from Duke University in Durham, North Carolina. Coming within one chapter of completing his dissertation, Poss answered a classified ad for a graphic artist placed by a small Virginia-based record label, County Records. Though Poss didn't know anything about graphic design, he applied for the job anyway, admitting his lack of experience in design but professing his love for the music. County hired him, and Poss gave up teaching to follow his main passion, music, at a record label he admired. Within the first few years Poss was immersed in the record business, learning everything from reissuing old 78s to producing traditional musicians to selling records at retail stores.
Three years later, in 1978, Barry Poss launched Sugar Hill Records (named after a song Poss heard in Western North Carolina). Poss wanted a strong label identity with a "signature sound," that stood for great artists and quality production, similar to what Sam Phillips had done with Sun Records. While traveling around rural areas in the South with his banjo, engrossing himself in traditional music, Poss became intrigued by the music of the children and grandchildren of the mountain musicians he visited.
Those younger generations of musicians were a combination of the old and the new—influenced as much by old-time and bluegrass music as they were rock, country and other newer forms of music. This interesting combination of, and tension between, roots and contemporary music gave further impetus for Poss to start Sugar Hill Records. Ricky Skaggs was the perfect personification of this tension and became the first artist Poss targeted to help launch the new record label. Sugar Hill's first album was by a band called Boone Creek and it featured Ricky Skaggs and Jerry Douglas, two artists Poss credits as being instrumental in shaping the "Sugar Hill sound." The success of that record begat a Ricky Skaggs solo effort, Sweet Temptation , that went on to sell over 150,000 copies—a huge success for the brand new independent label. Following on that success, Sugar Hill, in a joint effort with Epic Records, released Ricky Skaggs' Don't Cheat In Our Hometown. That record helped pave the way for a neo-traditional movement in Nashville/Country Music.
It also helped Sugar Hill cement its burgeoning legend, a legend that would, decades later, elicit praise: "Sugar Hill is one of twenty-one labels that changed the world … reinventing country music" —PULSE!

subset: commoncrawl


text:
Your browser does not support iframes.
DECATUR - Vandalia senior RaeChelle Leiken had a rough finish to the girls state tournament on Saturday, shooting a 15-over-par 87 to drop to 21st in the standings.
Leiken was ninth in the standings after the first day, but struggled on the front nine on Saturday, shooting a 47. There was also a rain delay after five holes.
Her finish, however, was better than last season's, when she placed 29th.
More information about the state tournament will be available in this week's edition of The Leader-Union.
BLOOMINGTON - After finishing 17th on the first day of the boys state golf tournament on Friday, Vandalia senior Blake Swofford was looking forward to moving up the standings on Saturday.
And after playing even par through the first three holes, he may have been well on his way.
No one will know, however, as the tournament's second round was canceled to due to storms on Saturday afternoon, leaving Swofford with a 17th-place finish, five places worse than the 12th place he recorded last year.
PANA - Alex Newsom scored three touchdowns and the varsity defense allowed zero points, as the Vandals earned their seventh win of the season on Friday night, winning 33-13 at Pana.
The win sets up a vital home matchup aginst Greenville next Friday, which will be a battle of 8-1 teams.
With Carlinville's win against Southwestern on Friday, there is still a three-way tie at the top of the conference standings.
Vandalia senior RaeChelle Leiken is tied for ninth after the first day of the Class 1A girls state golf golf tournament in Decatur, also shooting the only two eagles in the tournament.
She eagled holes 4 and 6 at Red Tail Run Golf Course, which are both par four.
Leiken trails by six strokes after day one. She is in the last group to tee off on Saturday, beginning at about 10:27 a.m. on hole 1.
Vandalia senior Blake Swofford is tied for 17th after the first day of the Class 1A boys state golf tournament in Bloomington.
Four South Central players and one from St. Elmo were named all-National Trail Conference.
Dan Diss, Fischer Tharp and Noah Powless were named all-conference for South Central, joining St. Elmo's Connor Beasley. South Central's Kyle Bray was named honorable mention.
The Egyptian-Illini Conference Volleyball Tournament schedule has been released. St. Elmo High School will host all games.
Monday, Oct. 15 (Pool A)
•5 p.m. – Brownstown vs. Patoka
•6 p.m. – Beecher City vs. CORL
•7 p.m. – Patoka vs. Beecher City
•8 p.m. – CORL vs. Brownstown
Two Vandalia seniors will be taking part in state golf tournaments this weekend.
Blake Swofford and RaeChelle Leiken each placed high enough in their respective sectionals to qualify for their gender's state tournament, which both will be played on Friday and Saturday.
Leiken shot an 86 at the Teutopolis Sectional, which was played at Effingham Country Club, to place 11th and beat the cut-off for state by four strokes. Last Wednesday, Leiken was the medalist at the same course during the Effingham Regional, shooting an 81.
PIASA – Vandalia had to work for each of its offensive yards on Saturday, but once the game was over, it was the Vandals who were celebrating an automatic berth to the playoffs.
Senior Tim Ritchey had his best rushing and passing days of the season, accounting for four total touchdowns and 244 yards, as the Vandals picked up their sixth win of the season with a 36-14 victory at Southwestern.
With postseason qualification secured, the Vandals will now shift their focus to getting the highest playoff seed that they can.
And neither of the next two games will be easy wins.
Vandalia travels to Pana (4-3) on Friday and will host Greenville (6-1) next Friday in the final two games before the postseason starts, and coach John Stout said that the opposition doesn't matter as well as the team executes well.
This week's Mystery Banks Photo: This young woman was about 15 when this picture was taken nearly 70 years ago.
Copyright © 2018
The Leader Union is your source for local news, sports, events and information in Vandalia, Il, and the surrounding area.


text:
Research support for this article was provided by the Investigative Fund at The Nation Institute.
For decades, sociologist Margaret Poloma struggled against the tone-deafness to spirituality that rules her discipline; she wanted to study prayer, to measure divine love, to "see God as an actor." In the meantime, having held a tenured post at the University of Akron since 1970, she built a respectable career with a long list of journal articles and books to her name. She became an authority on Pentecostalism and on the family lives of modern women. But all along, Poloma says, "I felt like I was swimming alone upstream."
That changed in the early 1990s, when she found an ally in David Larson, a psychiatrist who longed to integrate religion into the practice of medicine. He was in the process of founding the National Institute for Healthcare Research (NIHR); what the National Institutes of Health (NIH) is to medicine writ large, the NIHR would be for "the forgotten factor" of faith. In 1995 Larson brought Poloma to a conference organized by his funder: the John Templeton Foundation, established by the eponymous investor who died in July 2008 at 95. "That conference was a magical experience for me," Poloma remembers. It was there that she met Stephen Post, a bioethicist who would later create the Institute for Research on Unlimited Love with Templeton money. With Post she began receiving grants from the foundation. By 2007 she was co-director of the Flame of Love Project, administering $2.3 million from Templeton to establish "a new interdisciplinary science of Godly Love," with a focus on the Pentecostal tradition.
Other scholars aren't quite sure what the "science of Godly Love" means, exactly. Anthea Butler, a historian of Pentecostalism at the University of Pennsylvania, remembers that when Poloma's Flame of Love request for proposals appeared, "nobody in the field could figure out what the hell she was talking about." Many applied anyway. "She went from being an outsider to someone with tons of money who can set the terms of discussion," says Butler.
"This grant is something I would never have dreamed of," Poloma told me. "I feel like I'm soaring like an eagle." For her, all gratitude is due to the funder. "Where but Templeton would you find that kind of dialogue going on?"
Nowhere—and that's what has some people so concerned. The kind of research Poloma and her colleagues propose, however empirical and peer-reviewed, seems to come as an affront to centuries of purported progress in disentangling natural science from supernatural belief. Depending on whom you ask, Templeton represents either the hijacking of nothing less than the meaning of life, or the restoration of its luster, which has been dulled by politics and cynicism.


text:
ARGI+™ provides 5 grams of L-Arginine per serving plus synergistic vitamins to give your body the boost it needs to keep going all day long. L-Arginine is an amino acid that plays many important roles in the body, from aiding cell division to building protein and boosting nitric oxide production. Mixed with Forever Natural Spring Water or Aloe Vera Gel for an added boost, you will love the taste of new ARGI+™
L-Arginine is an amino acid that's so potent, scientists refer to it as the "Miracle Molecule." And for good reason, because our bodies convert L-Arginine into nitric oxide, a molecule that helps blood vessels relax and open wide for greater blood flow. Greater blood flow supports many important functions in our body:• Healthy blood pressure levels• Overall cardiovascular health• Immune function• Muscle growth• Bone & tissue growth & repair• Male sexual function• Fat and glucose metabolism• Anti-aging hormone production and more With so many health benefits, it's no wonder L-Arginine is generating so much excitement. New ARGI+ provides all the power of L-Arginine, plus:• Pomegranate – well-known for its strong antioxidant properties• Red Wine Extract – to help maintain healthy cholesterol levels• And Grape Skin and Berry extracts for cardiovascular and immune system health.Together, these ingredients create a new generation of supplement – one that supports better health throughout your entire body. Just a scoop of ARGI+ mixed with Forever Natural Spring Water or your favorite Aloe drink helps provide a performance boost to every part of you. Add optimal health to your family's diet with the powerof L-Arginine!SUGGESTED USETake one scoop of ARGI+™ mixed well with 8 ounces of water or other beverage once daily.OTHER INGREDIENTSCitric acid, natural mixed berry flavor, xylitol, d-ribose, and sucralose.Consult your doctor before using if you are pregnant, nursingor have a medical condition.
Welcome to Coolherbal! We have the market-leading brands of health and beauty products and natural remedies, specially formulated to offer a complete solution for holistic wellness! Founded in 2008, we have customers worldwide and offer over 400 products, including herbal and homeopathic remedies for adults, children and even pets.
Benicia, CA 94510
Call Us : +1-415-480-4816
Email Us :
© 2018 Wellanova.com All Rights Reserved. Template by Edify


text:
Independent resale tickets, prices may be above face value
Server Error
Oops! Something went wrong. Our technical team has been notified. We apologize for the inconvenience.
Click Here To View Events In Your Area.
We display resale event tickets.
Prices may be above or below face value.
We are not affiliated with any venue.
Privacy Policy
Contact Us
About Us


text:
With the holiday weekend, our favorite reality TV stars were missing in action since not too many red carpet events were scheduled and the photographers probably took a vacation. As the week went on, the stars popped back up as the camera crews returned.
Above: Danielle Staub attends La Toya Jackson's first night performing in Newsical the Musical.
Below you'll find creepy husbands, the always-elegant Lisa Vanderpump, Hollywood Exes star Mayte Garcia, pregnant stylist Rachel Zoe, Giuliana Rancic and more!
Photo Credit: Joseph Marzullo/WENN.com


text:
For AW08-09, Topman has created a video showcase of their latest collection- Block Heads. Model James Mclean poses in what Topman tells is a trend "inspired by the look of a Dickensian gypsy mixed with influences from the deep south." We get a glimpse of what we will no doubt be wearing by Christmas and the video really projects what the look is all about- a poetic Grunge with not a slight hint of Luke Worrall.
"Bib front t-shirts are worn under a waistcoat and double breasted cardigans, topped off with a black padded donkey jacket for a military feel. Big accessories for this trend include a selection of trilby hats and scarves worn with tweed trainers or brogues." Winter's never looked so good!
Check the video here.


text:
Region: Upstate
Industry: Information Technology
"This is more than just a business opportunity to me. I was one of those kids that learned through movement and engaging with content. We appreciate the support of SC Launch as we bring ActivEd to classrooms and help children to learn in a fun, healthy way."
Julian Reed, Furman University Professor and ActivEd Founder
Founded by Furman University professor of health sciences Julian Reed, ActivEd is an educational software company aimed at giving educators interactive lessons that incorporate movement into learning for pre-K through grade school. ActivEd cites more than 15 years of research examining the connection between movement and academic achievement, cognitive ability and health.
The company has received investment, mentoring and support services as a Client Company.
"At ActivEd, we believe learning is physical and research is clear. Kids who move more, perform better academically," said Reed. "Having the support of SC Launch to move ActivEd forward is helping us to expand our software and reach for South Carolinians and children everywhere."


text:
Thursday 10th May, 2007
1:30pm to 2:15pm
Putting The Phone on The Web
BT is undergoing a transformation at the heart of which is a £10 billion IP based multi-service 21st century network (21CN). Web21C is an initiative to put useful capabilities into the hands of developers by providing .NET, Java, Python and PHP Software Development Kits (SDK) behind which lie open Web services.
This presentation will demonstrate the use of Web21C services in a series of Web applications, discuss the importance of trust on the Web, in particular when exchanging presence information and locating mobile devices, and highlight the benefits of providing a Web friendly exposure.
Expect phones to ring, text messages be exchanged with the audience and mobile devices will be tracked and placed upon a map, so please Leave Your Mobile Phone ON for the duration of this presentation!
BT is exposing a series of interesting capabilities. To assist developers, each capability is being accompanied by a Software Development Kit (SDK) in the form of code, sample applications, test data and documentation.
These capabilities include:
* Voice allows a programmer to initiate and control a voice telephone call
between two individuals. From within your program a developer may setup a phone
call between two parties using a combination of traditional land lines (PSTN),
cellular devices or softphones (SIP), anywhere in the world. The service calls the
first person's device which after being aswered calls the second. The developer may then
access information about the call and end the call from within his program.
* Conference call offers a convenient way for two or more people to talk with each
other at the same time. The Web21C Conference Call Service enables calls from
landline telephones or softphones. A developer initiates the conference, brings
people into the conference by calling their device, and may remove people from
the conference programmatically.
* Presence Service stores the availability of an application's users and manages
the visibility of the status across a user's roster of contacts.
* Information About Me (IAM) provides an access-controlled, persistent store for
information about a user. Access control, can be managed by the user themselves.
* Location allows the user of an application track the geographical location of a
device owned by an individual. The Location Service enforces a permission model
based upon the agreed industry code of conduct for passive location services.
* White Label Authentication is a generalised service through which an application
can manage its users, and the users may be authenticated without being aware that
BT is powering the application.
During the beta period, and at the time of writing limited access is provided free
of charge to a developer and their users:
* SMS - 10 international messages / day. 160 Characters / message
* Voice Call - 10 international calls of 2 mins / day.
* Conference Call - 10 international calls (upto 4 participants max)
of 2 mins / day.
* Location - 10 requests / day, currently limited to BT mobile phones.
* Presence - Logged out after 8 hours. 100 requests / day.
* Authentication - 100 requests / day
* Information About Me - 100 requests / day.
Please note that these limits may change without notice.
For more information see http://web21c.bt.com/
Many developers may consider these services to be intrinsically a function
call, and the BT SDKs enable developers to quickly use the services from
within a number of programming environments. Under the covers the current
SDK sends digitally signed SOAP messages described in WSDL. In some cases
the messages contain a SAML token to provide a user context.
What does it mean to make such an API "Web friendly"?
What are the risks and benefits of doing so?
How do you establish identity and maintain trust
without signing messages, something not currently
easily achieved in a browser based application?
Demonstrations currently planned include:
- building an ad-hoc SMS/Jabber message board with the audience
- breaking out to phone conversations between members of the audience
- recording the availability of audience members in presence
- establishing a conference call with available audience members
- putting the location of mobiles onto a mapping service
- presenting the record of the conversations as XHTML containing
Microformats, JSON and RSS/Atom
- combining information from the above using Yahoo! pipes
This presentation is in part based upon a lightning talk on
how the best Web APIs are just Web sites:
Paul Downey (BT)
Paul acts as Chief Web Services Architect for BT,
defines the exposure of the Web21C services, chairs the
W3C XML Schema Patterns for Databinding Working Group
and has participated in the W3C Web Services Addressing,
W3C Web Services Description and WS-I Basic Profile Working Groups.
Uros Rapajic (BT)
Uros leads the effort to define and build the Call Control and SMS services
for BT's Web21C initiative. He boasts nine years' worth of battle scars
from leading-edge software development, covering three industries,
two continents and a failed startup. His interests include software and
services for communication and collaboration, agile software development,
lightweight frameworks and the developer experience. He holds a Masters
degree in Information Systems Engineering from Imperial College, London.
I never reveal my sources. I always give attribution. I never use absolutes. I am never conflicted. bio from Twitter
Sign in to add slides, notes or videos to this session


text:
Hypertherm to mark opening of Lebanon facilityBy MEGHAN PIERCE
Union Leader Correspondent
March 02. 2013 1:40AM
LEBANON - Hanover-based manufacturer Hypertherm will celebrate the opening of its 160,000-square-foot facility in Lebanon on Monday.
"We expect when this building is at full capacity it will enable us to create up to 500 new jobs over the next three years," said Hypertherm public relations manager Michelle Avila on Friday.
The company, which employees about 1,100 people in the Upper Valley, moved about 300 employees into the new buildings after the first of the year, including Avila's office.
"We were squeezed for space, so it's given us more breathing room ...," she said. "This facility's primarily a mix of manufacturing and office space."
Hypertherm designs and manufactures advanced cutting products for use in a variety of industries, such as shipbuilding, manufacturing and automotive repair.
Jobs to be created include engineers, highly skilled machinists, lab researchers and office workers, Avila said.
Through a partnership with the Vermont and New Hampshire departments of labor and the Community College System of New Hampshire, Hypertherm runs the Hypertherm Technical Training Institute through River Valley College, which trains many of the machinists working at Hypertherm today, Avila said.
"We train them; it's a nine-week intensive course. We train them how to operate these intensive machines, and they are guaranteed a job at Hypertherm," Avila said. "We give them the skills that they need to be advanced operators."
Participants in the program also receive college credit toward an associate degree, she said.
Celebrating the opening with Hypertherm will be Gov. Maggie Hassan, Chancellor Ross Gittell of Community College System of New Hampshire, Commissioner George Copadis of state Department of Employment Security and Jill Houser from the U.S. Department of Labor.


text:
How you make headers and footers depends on where you want them to appear—handouts for the audience? notes for the speaker? on-screen slides?
For instructions, select the link below that corresponds to what you're making:
Printed handouts: Page numbers, footers, headers, date and time, and pictures
Printed speaker notes: Page numbers, footers, headers, and date/time
On-screen slides: Slide numbers, footers, date and time
Change the font
Delete headers/footers/numbering
Turn off or delete headers/footers for Handouts
Turn off or delete headers/footers for Notes


text:
Donna Soucy steps up: And away from her commitment
March 17. 2013 5:32PM
Donna Soucy, in her fourth term on Manchester's Board of School Committee, used that seat as a stepping stone to the state Senate, to which she was elected last fall. There is nothing wrong with that. But apparently she has found that she no longer needs the school board. The stone had already been stepped. Last Monday she resigned her seat.
Soucy cited as a reason for her resignation the pressing demands of being a state senator. Could the demands of serving simultaneously in both positions be any greater than those felt by Mayor Ted Gatsas when he served as a senator and an alderman?
When Frank Guinta was a state representative and an alderman from Manchester, he resigned his House seat after newly elected U.S. Rep. Jeb Bradley offered him a job. The same thing? No. More than a month after the election, Guinta was offered a position that required him, under federal law, to resign his House seat. He kept his aldermanic seat. Soucy simply chose to keep other commitments.
Soucy might have given up some other duties so she could continue serving the people of Ward 6. Her position as chief financial officer of the New Hampshire Democratic Party, perhaps. But no, she is keeping the commitment to her party and dropping the commitment to her city constituents. What could say more about her priorities than that?
Soucy resigned abruptly, leaving Ward 6 without representation on the school board during a critical time. The search for a superintendent is under way. The board will have to vote on a replacement for retiring Superintendent Thomas Brennan sometime fairly soon. As Ward 6 Alderman Garth Corriveau said, "It's hard to imagine a more important vote that the school board might be taking this year. I want our Ward 6 represented on that."
The voters of Ward 6 surely want the same thing. It is too bad that Soucy left them without their elected representative during this process.


text:
Meet the New Faces of Evil: Craigslist's Human Hunters
A 52-year-old man and a teenaged boy from Ohio stand accused of some truly nightmarish crimes: They allegedly placed a Craigslist ad searching for someone to earn $300 a week to "watch over a 688 acre patch of hilly farmland and feed a few cows."
They'd vet candidates, choosing the most uneducated and ones with few family ties. Then they would lure them, one by one, to a stretch of land in Noble County owned by a coal company, where they shot them dead, and buried the bodies in a shallow grave.
Richard J. Beasley, the elder, has not yet been charged with murder. He was already incarcerated on prescription drug trafficking and prostitution charges (involving another 17-year-old boy) when he was implicated by 16-year-old Brogan Rafferty, his would-be accomplice. Rafferty has been charged with aggravated murder of David Pauley, 51, and the attempted murder of Scott Davis, 48, and will be tried as an adult. Neither has yet been charged yet with the murder of two other men.
Davis escaped, miraculously, with a gunshot to his arm. From The New York Times:
Mr. Davis told the sheriff that he had met two people for breakfast in Marietta, Ohio, and after leaving his car in Caldwell, was driven to the nearby "farm."
While walking through the wooded area, Mr. Davis reported, he "heard what he thought was a gun being cocked. He turned to see a gun pointed at his head. He deflected the gun and ran," hiding in the woods and finally seeking help at a house two miles away.
News reports cite "robbery" as a motive, which is ridiculous, seeing as the men they killed were desperate for work. Other motives thrown around are identity theft, and — what seems most likely — the pure thrill of hunting down people for sport.
And there could be more bodies to come: Over 100 people responded to the ad. [Photos via AP]


text:
IT Management Slideshow: 10 Reasons Android Is Scaring CIOs
By Don Reisinger | Posted 10-06-2011
10 Reasons Android Is Scaring CIOs
Security, security, securityFirst and foremost, CIOs are concerned about security when it comes to Android. The mobile operating system's open ecosystem makes it an easy target for malicious hackers. There have been no major outbreaks so far, but no CIO wants his or her enterprise to be the first breached by an Android security loophole.
Google's Android mobile operating system is taking the world by storm. People from just about every continent on the globe are quickly warming to the idea of adopting Google's operating system, and even those that have yet to take the plunge and buy an Android device are thinking quite seriously about doing so. In fact, Forrester recently found that Android and Apple's iOS, users, combined, outpace BlackBerry users in the enterprise. That's no comfort for most CIOs, who have legitimate reasons to be concerned about Android-based smartphones and tablets in the workplace. Here are 10 good reasons why.
Loading Comments...


text:
A person who follows a paleolithic nutrition plan or eats a paleo/primal diet. Characterized by eating fresh fruits, vegetables, lean meats and rejecting gluten, grains, legumes, dairy, starchy vegetables, excessive carbohydrates and processed foods.
Suzie the vegetarian never eats bacon, but Jack the paleotarian occasionally does.
by chelbs May 13, 2011
A conservative libertarian; a libertarian who holds conservative personal opinions on homosexuality, drug use, abortion, and other social issues, but does not support government authority in these issues (except possibly abortion). Compare to cosmotarian.
The Libertarian candidate attended the gun show in order to gain support from the paleotarians who he would be unlikely to meet at a cocktail party.
by crimethink January 18, 2008


text:
Sports psychology in Canesport Magazine – October 26, 2011 – John F Murray – Publisher's Note: "Mind Games" is a column written for CaneSport each week by John Murray, a noted sports psychologist and author who has developed an index for evaluating the mental performance of players and coaches in games. We think it will provide all of us with a unique viewpoint as the Hurricanes navigate through the season.
The Georgia Tech game was a thorough performance as well as a great win for the Hurricanes. No need for comments this week about escaping a bullet, blowing it on defense, or failing to make the big play at the end. But did the presence of these factors help in some small way to keep this team from getting overconfident going into the Georgia Tech game? It's possible.
This UM team did well and won in convincing fashion against a Top 20 ranked opponent. Coach Al Golden and crew should be very proud and excited, and I am too. But as I do each and every week, I will not rest in my efforts to understand this game at a much deeper level than the final score. For some this is still somewhat hard to grasp, but realize that while the final score is what wins the game in the end, getting points on the board and defending against points by the opponent has little to do with the score.
Points are just the end result of performance by the team in each moment on the field. The act of building up to points on a long drive or perfectly executed pass and catch, or a great defensive takeaway all refer to performance in the moment and proper execution, NOT POINTS. Points come after all that had work and smarts that I measure on the MPI.
The rule makers of football have defined how a game is won, and that is indeed by scoring more points than the opponent. The point differential is obviously a pretty good sign of which team was better on the field that day, but there are other factors that are much richer in showing which team was better.
You might walk away screaming, "I don't care about those other factors, all I care about is points and whether we won or lost the game," and I would agree with you that getting in the win column is always better than a loss, but I would also tell you that you have no idea what you are talking about.
I studied this for eight years, so don't be a typical beer drinking fan and mutter, "all I care about is that we won." The University of Miami is a much smarter institution of higher learning than that kind of ignorance, and I will not stand for it.
Examined more closely, as I discovered in reviewing all 45 Super Bowl games and hundreds of other games, you soon realize that the final score is only another statistic to qhow well a team performed, and it often does a very lousy job. And telling players or teams to put stock in this by scoring points to win is just absurd. However, coaching players to win the battle in the moment, or to perform well on each play, is very smart advice leading then to points and success.
Performance in the moment as a studied factor is also a better predictor of which team will win the game, as statistical analyses have shown. Even points scored or given up as statistics are not as good as performance in the moment measured on the MPI scores.
Translation: if you really want to win a game, focus on getting a great MPI score on each play, not on getting points! Make the block, catch the pass, make the correct read, throw the pass to the correct target, make proper cuts, avoid turnovers, avoid penalties, use your head for more than a hat rack! These and many more things are performance-related factors that have meaning, not points. And this is the same as saying `focus on performing well in each and every moment and not just on the big plays or touchdown plays.'
In this particular game, UM outperformed Georgia Tech overall by roughly 5% of performance, which is a solid dominance, but not a blowout. Miami's MPI-T score was .535 (79th percentile) compared with Georgia Tech's MPI-T score of .480. Miami was also better on 12 of 14 MPI scores and 8 of 9 traditional statistics examined, so this was clearly an impressive performance that justifies the victory, compared with last week when the Canes were outperformed and won anyway.
Let's see how the Hurricanes did it.
Let's give a loud round of applause to the Miami defense. Finally! The defense of the Canes had their best performance of the year (MPI-D=.569, 91st percentile). Miami's defense was 11.6 percent better than Georgia Tech's offense, whereas Georgia Tech's defense was 10.4 percent better than the Miami offense. So while both defenses outperformed the opposing offenses, Miami's defensive margin of dominance was better.
Even more impressive statistically was the Miami special teams (MPI-ST=.732, >99th percentile). It could be argued that this unit won the game for Miami, but there are fewer plays on special teams and I would give first honors to the Miami defense as far as total impact on the game. Still, Miami's special teams dominated Georgia Tech's special teams (MPI-ST=.271) by over 46 percent, an almost unheard of demolition, and above the 99th percentile.
Both offenses performed below average (slight MPI-O edge to Georgia Tech .453 to .452) and at about the 20th percentile. However, Miami's offense in pure pressure situations was superior (MPI-OP=78th percentile for Miami, MPI-OP=48th percentile for Georgia Tech). This means that while we might put down the Miami offense for an off day, the truth is that they were able to get it done well in critical 3rd and 4th downs and in other pressure situations. You don't always have to be great if you can make it happen in the clutch, and the Miami offense did so just enough.
The final and incredibly decisive factor was penalties and turnovers. Miami is starting to get the hang of this as it had only one penalty for 5 yards, one turnover, and a +2 takeaway minus giveaway number. This is a big credit to the coaching staff of Miami for conditioning their players to reduce needless mental errors that often lead to penalties and turnovers.
Lamar Miller (27 rushes for 93 yards) and Tommy Streeter (3 catches for 96 yards) were the individual stars of this game. Time of possession slightly favored the Canes.
Any way you slice this, the Miami Hurricanes grew up a little more in this seventh game of the season. They reduced penalties and turnovers, they were unbelievably good on special teams, they were impressive on defense. In sum, they totally destroyed a former top 20 team.
Where does this team go from here? If the defense can keep playing this well, the special teams continues to dominate, and the offense can play this well or better, the Hurricanes are capable of great things now and even greater things later. Is this the beginning of a return to national dominance we've all waited for? It may be.
This UM team needs to keep getting high MPI scores, which is another way of saying to keep performing well mentally and physically every single moment of the game. If this happens enough, bet your bottom dollar that the Miami Hurricanes will also score points, keep their opponents off the scoreboard, and win too.
But let's make sure we don't put the cart before the horse. It is performance first that leads to points and then to winning. And knowing the precise nature of performance is what this column is all about, so that the Hurricanes can win even more.
I appreciate you coming along with me on this new and insightful way of looking at football performance and success. Go Canes!
Dr. John F. Murray, described as "The Freud of Football" by the Washington Post, is a South Florida native and licensed clinical and sports psychologist in Palm Beach. He provides mental coaching and sports psychology services, counseling, speeches and seminars. He recently authored his second book, "The Mental Performance Index: Ranking the Best Teams in Super Bowl History," destroying stigmas about the mental game in sports and showing football teams how to perform better and win more games by enhancing team performance assessments and training. For further information call Dr. Murray at 561-596-9898, visit johnfmurray.com or email firstname.lastname@example.com.


text:
Tuesday, October 15, 2013 - Felix, Silvestr and Robert - FULL CONTACT
Latest Sets at WilliamHiggins.com
We brought Felix Ryha together with Robert Drtina and Sylvestr Paty for a cene. We find Robert and Sylvestr sleeping. Felix walks into the bedroom, wearing just a towel. He wakes the guys up, telling them they have a party to attend. It seems that Robert and Sylvestr want to stay in bed, and they grab Felix and pull him onto the bed too. His towel flies of and he lands across Robert and Sylvestr. They begin a sort of pillow fight, quickly losing their underwear. As they play Felix starts to kiss Robert and then Sylvestr joins in too. The three of them are on their knees, feeling each other's bodies as they kiss. Robert takes hold of Felix's cock and begins to wank it. Felix does the same to him and then Robert goes down on sucks on Felix's hard cock. It is a big, long cock and Robert sucks it real good. Sylvestr, behind Felix, holds him and looks down at the sucking. Then they lay Felix down and Sylvestr sucks on his cock as Robert kisses him. Robert and Sylvestr take turns sucking on that big dick and kissing Felix. His cock is so hard and they gorge themselves on it, making it throb. Felix stands again and Sylvestr goes straight back down on the cock. Robert begins to wank Sylvestr before he takes a turn on the cock again. Felix then returns the favour, on his knees he sucks Robert and wanks Sylvestr. But only for a short while as they have other plans. Felix is put onto his knees and bent over so that Sylvestr can rim his hot hole. Felix wanks Robert some more as Sylvestr rims that ass. Next Robert gives up his sexy ass to Felix, who slides his cock deep into that tight hole. He kisses Sylvestr as he fucks Robert's ass. Moving Robert into missionary position he continues to fuck that ass as Sylvestr is sucked. Felix is fucking that hole real good and Robert's hard cock is being wanked. Soon Robert and Felix need to cum and Sylvestr lays on the bed, straddled by Felix to receive his load over his chest. Felix dumps his cream and is quickly followed by Robert cumming as well. What a lovely scene from three very handsome guys.
Jarmil Sladky came in to see us but he has a leg in a plaster cast. Borek Sokol tells him to strip down to his underwear and lay down on the bed. Once he is on the bed Jarmil waits for Borek, who begins to oil his good leg, massaging the oil deep into the muscles. Then he does the same to the injured leg as well. Jarmil turns over, onto his stomach and Borek begins to massage his back. When the back is finished he removes Jarmil's underwear and oils that lovely bubble butt. His hands move over it, spreading the cheeks as he massages. The hands move down that hot ass crack and rub against Jarmil's balls too. Then Jarmil moves up on his knees and Borek reaches between the legs and takes hold of Jarmil's swelling cock and begins to wank it. As he wanks the other hand rubs over the ass and a finger slips into the hole. A dildo is brought into the action and slides into that tight hole, stretching it. Then it is back to more fingering as Jarmil gets wanked some more. Turning over again and layin on his back Jarmil looks very good as his chest is oiled and Borek wanks on that fat cock some more. He gets that dick nice and hard and the wanking speeds up, until it is fast and furious and Jarmil's breathing gets very heavy. His cock erupts with a big creamy load, which Borek milks from the swollen head, as a wonderful finale.
Peter Van Don is from Michalova, Slovakia and is aged 19. He works as a mechanic and likes travelling, martial arts and Thai boxing. Having completed his interview Peter removes his sweater to reveal a wonderful chest. Then he pushes himself back on the bed and takes off his shoes and opens and removes his pants too. Completely naked he looks very good indeed as he leans back on the bed, running his hands over his body. He takes hold of his cock and wanks it, quickly getting it nice and hard. That cock is very impressive, as he strokes it. It is so hard and stands at attention. His other hand is rubbing his body as he wanks. Peter stands up, on the bed, and continues to wank that big cock, with his balls getting nice and tight. That awesome body also looks fabulous as he wank. Then Peter goes down on his knees and shows off his ass. It looks great as a hand pulls the cheeks apart to show off his tight hole as well. He sits again and continues to wank as a helping hand arrives and starts to oil that hot body. The oil is spread over Peter's chest and down onto his thighs as he is still wanking. Then he is scooted down some and lifts his legs in the air to show off that ass again. The hands run over the ass, coating the cheeks with oil. That ass crack, with a lovely tight hole is shown perfectly as the hands massage the cheeks. As Peter wanks his throbbing cock lots of oil is dripped onto the shiny head and the hands rub over his balls. As he wanks himself the hands mimic his wanking and then take over completely wanking that hard cock, speeding up until Peter shoots his cum over his left thigh. The excess cum is left smeared over that cock as Peter takes hold of it again to milk it dry. Then it is off to the shower to clean all that oil from his gorgeous body.
Tibor Rysavy is aged 21 and lives in Trencin, Slovakia. He works as a fitness trainer and in his spare time enjoys sports and bodybuilding. What a very handsome guy Tibor is. He looks splendid as he starts his shoot. lifting his tee-shirt he shows off his chest some. Then the tee-shirt is off completely and we really get to appreciate just how good that chest is. He poses to let us see it, and then flexes his big biceps too. The jeans come off too and Tibor stands to pose, in just the underwear. He turns and lowers the underwear so that we can see that hot ass as he twists to look into the camera. Turning again he lowers the underwear further to let us see his flaccid cock. Tibor then sits on the sofa, hands behind his head, posing again. He is very proud of that awesome body and stands up to go through a series of very good poses, so that we can see it all. Then he wanks on his cock and it grows very nicely. Kneeling on the sofa, back to camera, Tibor shows the ass again, spreading the cheeks to let us see his tight hole. He poses again, sitting on the edge of the sofa before leaning back and pulling his legs up, to really expose that tight hole. Then it is time to get that cock nice and hard for a final series of very good poses.


text:
In "them" (the title of her award-winning 1969 novel) I noted the fantasy of violence that prominent liberal novelist Joyce Carol Oates projected onto NRA members in the aftermath of the Sandy Hook massacre. Oates took to Twitter to announce:
If sizable numbers of NRA members become gun-victims themselves, maybe hope for legislation of firearms?
Words being her stock in trade, Oates has now circled back to clear up any possible misunderstanding:
Sorry for any misunderstanding! I'd said the other day that, if "sizable numbers of NRA members were themselves gun victims…." they might be more sympathetic with victims & with the effort to regulate guns. I meant this seriously– not ironically.
There is more Oates mania collected at the link and it is all sick, sick, sick.


text:
What's new in Groovy 2.0?
- Share
- |
Read later
Reading List
The newly released Groovy 2.0 brings key static features to the language with static type checking and static compilation, adopts JDK 7 related improvements with Project Coin syntax enhancements and the support of the new "invoke dynamic" JVM instruction, and becomes more modular than before. In this article, we're going to look into those new features in more detail.
A "static theme" for a dynamic language
Static type checking
Groovy, by nature, is and will always be a dynamic language. However, Groovy is often used as a "Java scripting language", or as a "better Java" (ie. a Java with less boilerplate and more power features).
A lot of Java developers actually use and embed Groovy in their Java applications as an extension language, to author more expressive business rules, to further customize the application for different customers, etc. For such Java-oriented use cases, developers don't need all the dynamic capabilities offered by the language, and they usually expect the same kind of feedback from the Groovy compiler as the one given by javac. In particular, they want to get compilation errors (rather than runtime errors) for things like typos on variable or method names, incorrect type assignments and the like. That's why Groovy 2 features static type checking support.
Spotting obvious typos
The static type checker is built using Groovy's existing powerful AST (Abstract Syntax Tree) transformation mechanisms but for those not familiar with these mechanisms you can think of it as an optional compiler plugin triggered through an annotation. Being an optional feature, you are not forced to use it if you don't need it. To trigger static type checking, just use the
@TypeChecked annotation on a method or on a class to turn on checking at your desired level of granularity. Let's see that in action with a first example:
import groovy.transform.TypeChecked
void someMethod() {}
void test() {
// compilation error:
// cannot find matching method sommeeMethod()
def name = "Marion"
// compilation error:
// the variable naaammme is undeclared
println naaammme
We annotated the
test() method with the
@TypeChecked annotation, which instructs the Groovy compiler to run the static type checking for that particular method at compilation time. We're trying to call
someMethod() with some obvious typos, and to print the name variable again with another typo, and the compiler will throw two compilation errors because respectively, the method and variable are not found or declared.
Check your assignments and return values
The static type checker also verifies that the return types and values of your assignments are coherent:
import groovy.transform.TypeChecked
Date test() {
// compilation error:
// cannot assign value of Date
// to variable of type int
int object = new Date()
String[] letters = ['a', 'b', 'c']
// compilation error:
// cannot assign value of type String
// to variable of type Date
Date aDateVariable = letters[0]
// compilation error:
// cannot return value of type String
// on method returning type Date
return "today"
In this example, the compiler will complain about the fact you cannot assign a
Date in an
int variable, nor can you return a
String instead of a
Date value specified in the method signature. The compilation error from the middle of the script is also interesting, as not only does it complain of the wrong assignment, but also because it shows type inference at play, because the type checker, of course, knows that
letters[0] is of type
String, because we're dealing with an array of
More on type inference
Since we're mentioning type inference, let's have a look at some other occurrences of it. We mentioned the type checker tracks the return types and values:
import groovy.transform.TypeChecked
int method() {
if (true) {
// compilation error:
// cannot return value of type String
// on method returning type int
} else {
Given a method returning a value of primitive type
int, the type checker is able to also check the values returned from different constructs like
if / else branches,
try / catch blocks or
switch / case blocks. Here, in our example, one branch of the
if / else blocks tries to return a
String value instead of a primitive
int, and the compiler complains about it.
Common type conversions still allowed
The static type checker, however, won't complain for certain automatic type conversions that Groovy supports. For instance, for method signatures returning
String, boolean or
Class, Groovy converts return values to these types automatically:
import groovy.transform.TypeChecked
boolean booleanMethod() {
"non empty strings are evaluated to true"
assert booleanMethod() == true
String stringMethod() {
// StringBuilder converted to String calling toString()
new StringBuilder() << "non empty string"
assert stringMethod() instanceof String
Class classMethod() {
// the java.util.List class will be returned
assert classMethod() == List
The static type checker is also clever enough to do type inference:
import groovy.transform.TypeChecked
void method() {
def name = " Guillaume "
// String type inferred (even inside GString)
println "NAME = ${name.toUpperCase()}"
// Groovy GDK method support
// (GDK operator overloading too)
println name.trim()
int[] numbers = [1, 2, 3]
// Element n is an int
for (int n in numbers) {
Although the
name variable was defined with
def, the type checker understands it is of type
String. Then, when this variable is used in the interpolated string, it knows it can call
String's toUpperCase() method, or the
trim() method later one, which is a method added by the Groovy Development Kit decorating the
String class. Last, when iterating over the elements of an array of primitive
ints, it also understands that an element of that array is obviously an
Mixing dynamic features and statically typed methods
An important aspect to have in mind is that using the static type checking facility restricts what you are allowed to use in Groovy. Most runtime dynamic features are not allowed, as they can't be statically type checked at compilation time. So adding a new method at runtime through the type's metaclasses is not allowed. But when you need to use some particular dynamic feature, like Groovy's builders, you can opt out of static type checking should you wish to.
@TypeChecked annotation can be put at the class level or at the method level. So if you want to have a whole class type checked, put the annotation on the class, and if you want only a few methods type checked, put the annotation on just those methods. Also, if you want to have everything type checked, except a specific method, you can annotate the latter with
@TypeChecked(TypeCheckingMode.SKIP) - or
@TypeChecked(SKIP) for short, if you statically import the associated enum. Let's illustrate the situation with the following script, where the
greeting() method is type checked, whereas the
generateMarkup() method is not:
import groovy.transform.TypeChecked
import groovy.xml.MarkupBuilder
// this method and its code are type checked
String greeting(String name) {
// this method isn't type checked
// and you can use dynamic features like the markup builder
String generateMarkup(String name) {
def sw =new StringWriter()
new MarkupBuilder(sw).html {
body {
div name
assert greeting("Cédric").contains("
CÉDRIC
")
Type inference and instanceof checks
Current production releases of Java don't support general type inference; hence we find today many places where code is often quite verbose and cluttered with boilerplate constructs. This obscures the intent of the code and without the support of powerful IDEs is also harder to write. This is the case with
instanceof checks: You often check the class of a value with instanceof inside an
if condition, and afterwards in the
if block, you must still use casts to be able to use methods of the value at hand. In plain Groovy, as well as in the new static type checking mode, you can completely get rid of those casts.
import groovy.transform.TypeChecked
import groovy.xml.MarkupBuilder
String test(Object val) {
if (val instanceof String) {
// unlike Java:
// return ((String)val).toUpperCase()
} else if (val instanceof Number) {
// unlike Java:
// return ((Number)val).intValue().multiply(2)
val.intValue() * 2
assert test('abc') == 'ABC'
assert test(123) == '246'
In the above example, the static type checker knows that the val parameter is of type
String inside the
if block, and of type
Number in the else if block, without requiring any cast.
Lowest Upper Bound
The static type checker goes a bit further in terms of type inference in the sense that it has a more granular understanding of the type of your objects. Consider the following code:
import groovy.transform.TypeChecked
// inferred return type:
// a list of numbers which are comparable and serializable
@TypeChecked test() {
// an integer and a BigDecimal
return [1234, 3.14]
In this example, we return, intuitively, a list of numbers: an
Integer and a
BigDecimal. But the static type checker computes what we call a "lowest upper bound", which is actually a list of numbers which are also serializable and comparable. It's not possible to denote that type with the standard Java type notation, but if we had some kind of intersection operator like an ampersand, it could look like
List<Number & Serializable & Comparable>.
Flow typing
Although this is not really recommended as a good practice, sometimes developers use the same untyped variable to store values of different types. Look at this method body:
import groovy.transform.TypeChecked
@TypeChecked test() {
def var = 123 // inferred type is int
var = "123" // assign var with a String
println var.toInteger() // no problem, no need to cast
var = 123
println var.toUpperCase() // error, var is int!
var variable is initialized with an
int. Then, a
String is assigned. The "flow typing" algorithm follows the flow of assignment and understands that the variable now holds a
String, so the static type checker will be happy with the
toInteger() method added by Groovy on top of
String. Next, a number is put back in the var variable, but then, when calling
toUpperCase(), the type checker will throw a compilation error, as there's no
toUpperCase() method on
There are some special cases for the flow typing algorithm when a variable is shared with a closure which are interesting. What happens when a local variable is referenced in a closure inside a method where that variable is defined? Let's have a look at this example:
import groovy.transform.TypeChecked
@TypeChecked test() {
def var = "abc"
def cl = {
if (new Random().nextBoolean()) var = new Date()
var.toUpperCase() // compilation error!
var local variable is assigned a
String, but then,
var might be assigned a
Date if some random value is true. Typically, it's only at runtime that we really know if the condition in the if statement of the closure is made or not. Hence, at compile-time, there's no chance the compiler can know if
var now contains a
String or a
Date. That's why the compiler will actually complain about the
toUpperCase() call, as it is not able to infer that the variable contains a
String or not. This example is certainly a bit contrived, but there are some more interesting cases:
import groovy.transform.TypeChecked
class A { void foo() {} }
class B extends A { void bar() {} }
@TypeChecked test() {
def var = new A()
def cl = { var = new B() }
// var is at least an instance of A
// so we are allowed to call method foo()
In the
test() method above,
var is assigned an instance of
A, and then an instance of
B in the closure which is call afterwards, so we can at least infer that var is of type
All those checks added to the Groovy compiler are done at compile-time, but the generated bytecode is still the same dynamic code as usual - no changes in behavior at all.
Since the compiler now knows a lot more about your program in terms of types, it opens up some interesting possibilities: what about compiling that type checked code statically? The obvious advantage will be that the generated bytecode will more closely resemble the bytecode created by the javac compiler itself, making statically compiled Groovy code as fast as plain Java, among other advantages. In the next section, we'll learn more about Groovy's static compilation.
Static compilation
As we shall see in the following chapter about the JDK 7 alignments, Groovy 2.0 supports the new "invoke dynamic" instruction of the JVM and its related APIs, facilitating the development of dynamic languages on the Java platform and bringing some additional performance to Groovy's dynamic calls. However, unfortunately shall I say, JDK 7 is not widely deployed in production at the time of this writing, so not everybody has the chance to run on the latest version. So developers looking for performance improvements would not see much changes in Groovy 2.0, if they aren't able to run on JDK 7. Luckily, the Groovy development team thought those developers could get interesting performance boost, among other advantages, by allowing type checked code to be compiled statically.
Without further ado, let's dive in and use the new
@CompileStatic transform:
import groovy.transform.CompileStatic
int squarePlusOne(int num) {
num * num + 1
assert squarePlusOne(3) == 10
This time, instead of using
@TypeChecked, use
@CompileStatic, and your code will be statically compiled, and the bytecode generated here will look like javac's bytecode, running just as fast. Like the
@TypeChecked annotation, @CompileStatic can annotate classes and methods, and
@CompileStatic(SKIP) can bypass static compilation for a specific method, when its class is marked with
Another advantage of the javac-like bytecode generation is that the size of the bytecode for those annotated methods will be smaller than the usual bytecode generated by Groovy for dynamic methods, since to support Groovy's dynamic features, the bytecode in the dynamic case contains additional instructions to call into Groovy's runtime system.
Last but not least, static compilation can be used by framework or library code writers to help avoid adverse interactions when dynamic metaprogramming is in use in several parts of the codebase. The dynamic features available in languages like Groovy are what give developers incredible power and flexibility but if care is not taken, different assumptions can exist in different parts of the system with regards to what metaprogramming features are in play and this can have unintended consequences. As a slightly contrived example, consider what happens if you are using two different libraries, both of which add a similarly named but differently implemented method to one of your core classes. What behaviour is expected? Experienced users of dynamic languages will have seen this problem before and probably heard it referred to as "monkey patching". Being able to statically compile parts of your code base - those parts that don't need dynamic features - shields you from the effects of monkey patching, as the statically compiled code doesn't go through Groovy's dynamic runtime system. Although dynamic runtime aspects of the language are not allowed in a static compilation context, all the usual AST transformation mechanisms work just as well as before, since most AST transforms perform their magic at compilation time.
In terms of performance, Groovy's statically compiled code is usually more or less as fast as javac's. In the few micro-benchmarks the development team used, performance is identical in several cases, and sometimes it's slightly slower.
Historically, thanks to the transparent and seamless integration of Java and Groovy, we used to advise developers to optimize some hotspot routines in Java for further performance gains, but now, with this static compilation option, this is no longer the case, and people wishing to develop their projects in full Groovy can do so.
The Java 7 and JDK 7 theme
The grammar of the Groovy programming language actually derives from the Java grammar itself, but obviously, Groovy provides additional nice shortcuts to make developers more productive. This familiarity of syntax for Java developers has always been a key selling point for the project and its wide adoption, thanks to a flat learning curve. And of course, we expect Groovy users and newcomers to also want to benefit from the few syntax refinements offered by Java 7 with its "Project Coin" additions.
Beyond the syntax aspects, JDK 7 also brings interesting novelties to its APIs, and for a first time in a long time, even a new bytecode instruction called "invoke dynamic", which is geared towards helping implementors develop their dynamic languages more easily and benefit from more performance.
Project Coin syntax enhancements
Since day 1 (that was back in 2003 already!) Groovy has had several syntax enhancements and features on top of Java. One can think of closures, for example, but also the ability to put more than just discrete values in
switch / case statements, where Java 7 only allows
Strings in addition. So some of the Project Coin syntax enhancements, like
Strings in switch, were already present in Groovy. However, some of the enhancements are new, such as binary literals, underscore in number literals, or the multi catch block, and Groovy 2 supports them. The sole omission from the Project Coin enhancements is the "try with resources" construct, for which Groovy already provides various alternatives through the rich API of the Groovy Development Kit.
Binary literals
In Java 6 and before, as well as in Groovy, numbers could be represented in decimal, octal and hexadecimal bases, and with Java 7 and Groovy 2, you can use a binary notation with the "0b" prefix:
int x = 0b10101111
assert x == 175
byte aByte = 0b00100001
assert aByte == 33
int anInt = 0b1010000101000101
assert anInt == 41285
Underscore in number literals
When writing long literal numbers, it's harder on the eye to figure out how some numbers are grouped together, for example with groups of thousands, of words, etc. By allowing you to place underscore in number literals, it's easier to spot those groups:
long creditCardNumber = 1234_5678_9012_3456L
long socialSecurityNumbers = 999_99_9999L
double monetaryAmount = 12_345_132.12
long hexBytes = 0xFF_EC_DE_5E
long hexWords = 0xFFEC_DE5E
long maxLong = 0x7fff_ffff_ffff_ffffL
long alsoMaxLong = 9_223_372_036_854_775_807L
long bytes = 0b11010010_01101001_10010100_10010010
Multicatch block
When catching exceptions, we often replicate the catch block for two or more exceptions as we want to handle them in the same way. A workaround is either to factor out the commonalities in its own method, or in a more ugly fashion to have a catch-all approach by catching
Exception, or worse,
Throwable. With the multi catch block, we're able to define several exceptions to be catch and treated by the same catch block:
try {
/* ... */
} catch(IOException | NullPointerException e) {
/* one block to handle 2 exceptions */
Invoke Dynamic support
As we mentioned earlier in this article, JDK 7 came with a new bytecode instruction called "invoke dynamic", as well as with its associated APIs. Their goal is to help dynamic language implementors in their job of crafting their languages on top of the Java platform, by simplifying the wiring of dynamic method calls, by defining "call sites" where dynamic method call section can be cached, "method handles" as method pointers, "class values" to store any kind of metadata along class objects, and a few other things. One caveat though, despite promising performance improvements, "invoke dynamic" hasn't yet fully been optimized inside the JVM, and doesn't yet always deliver the best performance possible, but update after update, the optimizations are coming.
Groovy brought its own implementation techniques, to speed up method selection and invocation with "call site caching", to store metaclasses (the dynamic runtime equivalent of classes) with its metaclass registry, to perform native primitive calculations as fast as Java, and much more. But with the advent of "invoke dynamic", we can rebase the implementation of Groovy on top of these APIs and this JVM bytecode instruction, to gain performance improvements and to simplify our code base.
If you're lucky to run on JDK 7, you'll be able to use a new version of the Groovy JARs which has been compiled with the "invoke dynamic" support. Those JARs are easily recognizable as they use the "-indy" classifier in their names.
Enabling invoke dynamic support
Using the "indy" JARs is not enough, however, to compile your Groovy code so that it leverages the "invoke dynamic" support. For that, you'll have to use the --indy flag when using the "groovyc" compiler or the "groovy" command. This also means that even if you're using the indy JARs, you can still target JDK 5 or 6 for compilation.
Similarly, if you're using the groovyc Ant task for compiling your projects, you can also specify the indy attribute:
<taskdef name="groovyc"
<groovyc srcdir="${srcDir}" destdir="${destDir}" indy="true">
The Groovy Eclipse Maven compiler plugin hasn't yet been updated with the support of Groovy 2.0 but this will be the case shortly. For GMaven plugin users, although it's possible to configure the plugin to use Groovy 2.0 already, there's currently no flag to enable the invoke dynamic support. Again, GMaven will also be updated soon in that regard.
When integrating Groovy in your Java applications, with
GroovyShell, for example, you can also enable the invoke dynamic support by passing a
CompilerConfiguration instance to the
GroovyShell constructor on which you access and set the optimization options:
CompilerConfiguration config = new CompilerConfiguration();
config.getOptimizationOptions().put("indy", true);
config.getOptimizationOptions().put("int", false);
GroovyShell shell = new GroovyShell(config);
As invokedynamic is supposed to be a full replacement to dynamic method dispatch, it is also necessary to disable the primitive optimizations which generate extra bytecode that is here to optimize edge cases. Even if it is in some cases slower than with primitive optimizations activated, future versions of the JVM will feature an improved JIT which will be capable of inlining most of the calls and remove unnecessary boxings.
Promising performance improvements
In our testing, we noticed some interesting performance gains in some areas, whereas other programs could run slower than when not using the invoke dynamic support. The Groovy team has further performance improvements in the pipeline for Groovy 2.1 however, but we noticed the JVM isn't yet finely tuned and still has a long way to go to be fully optimized. But fortunately, upcoming JDK 7 updates (in particular update 8) should already contain such improvements, so the situation can only improve. Furthermore, as invoke dynamic is used for the implementation of JDK 8 Lambdas, we can be sure more improvements are forthcoming.
A more modular Groovy
We'll finish our journey through the new features of Groovy 2.0 by speaking about modularity. Just like Java, Groovy is not just a language, but it's also a set of APIs serving various purposes: templating, Swing UI building, Ant scripting, JMX integration, SQL access, servlet serving, and more. The Groovy deliverables were bundling all these features and APIs inside a single big JAR. However, not everybody needs everything at all times in their own applications: you might be interested in the template engine and the servlets if you're writing some web application, but you might only need the Swing builder when working on a rich desktop client program.
Groovy modules
So the first goal of the modularity aspect of this release is to actually split the original Groovy JAR into smaller modules, smaller JARs. The core Groovy JAR is now twice as small, and we have the following feature modules available:
- Ant: for scripting Ant tasks for automating administration tasks
- BSF: for integrating Groovy in your Java applications with the old Apache Bean Scripting Framework
- Console: module containing the Groovy Swing console
- GroovyDoc: for documenting your Groovy and Java classes
- Groovysh: module corresponding to the Groovysh command-line shell
- JMX: for exposing and consuming JMX beans
- JSON: for producing and consuming JSON payloads
- JSR-223: for integrating Groovy in your Java applications with the JDK 6+ javax.scripting APIs
- Servlet: for writing and serving Groovy script servlets and templates
- SQL: for querying relational databases
- Swing: for building Swing UIs
- Templates: for using the template engine
- Test: for some test support, like the GroovyTestCase, mocking, and more
- TestNG: for writing TestNG tests in Groovy
- XML: for producing and consuming XML documents
With Groovy 2, you're now able to just pick up the modules you're interested in, rather than bringing everything on your classpath. However, we still provide the "all" JAR which contains everything, if you don't want to complicate your dependencies for just a few megabytes of saved space. We also provide those JARs compiled with the "invoke dynamic" support as well, for those running on JDK 7.
Extension modules
The work on making Groovy more modular also yielded an interesting new feature: extension modules. By splitting Groovy into smaller modules, a mechanism for modules to contribute extension methods has been created. That way, extension modules can provide instance and static methods to other classes, including the ones from the JDK or third-party libraries. Groovy uses this mechanism to decorate classes from the JDK, to add new useful methods to classes like
String, File, streams, and many more - for example, a
getText() method on URL allows you to retrieve the content of a remote URL through an HTTP get. Notice also that those extension methods in your modules are also understood by the static type checker and compiler. But let's now have a look at how you can add new methods to existing types.
Contributing an instance method
To add new methods to an existing type, you'll have to create a helper class that will contain those methods. Inside that helper class, all the extension methods will actually be
public (the default for Groovy but required if implementing in Java) and
static (although they will be available on instances of that class). They will always take a first parameter which is actually the instance on which this method will be called. And then following parameters will be the parameters passed when calling the method. This is the same convention use for Groovy categories.
Say we want to add a
greets() method on
String, that would greet the name of the person passed in parameters, so that you could that method as follow:
assert "Guillaume".greets("Paul") == "Hi Paul, I'm Guillaume"
To accomplish that, you will create a helper class with an extension method like so:
package com.acme
class MyExtension {
static String greets(String self, String name) {
"Hi ${name}, I'm ${self}"
Contributing a static method
For static extension methods, this is the same mechanism and convention. Let's add a new static method to Random to get a random integer between two values, you could proceed as in this class:
package com.acme
class MyStaticExtension {
static String between(Random selfType, int start, int end) {
new Random().nextInt(end - start + 1) + start
That way, you are able to use that extension method as follows:
Random.between(3, 4)
Extension module descriptor
Once you've coded your helper classes (in Groovy or even in Java) containing the extension methods, you need to create a descriptor for your module. You must create a file called
org.codehaus.groovy.runtime.ExtensionModule in the
META-INF/services directory of your module archive. Four essential fields can be defined, to tell the Groovy runtime about the name and version of your module, as well as to point at your helper classes for extension methods with a comma-separated list of class names. Here is what our final module descriptor looks like:
moduleName = MyExtension
moduleVersion = 1.0
extensionClasses = com.acme.MyExtension
staticExtensionClasses = com.acme.MyStaticExtension
With this extension module descriptor on the classpath, you are now able to use those extension methods in your code, without needing an import or anything else, as those extension methods are automatically registered.
Grabbing an extension
With the @Grab annotation in your scripts, you can fetch dependencies from Maven repositories like Maven Central. With the addition of the @GrabResolver annotation, you can specify your own location for your dependencies as well. If you are "grabbing" an extension module dependency through this mechanism, the extension method will also be installed automatically. Ideally, for consistency, your module name and version should be coherent with the artifact id and version of your artifact.
Groovy is very popular among Java developers and offers them a mature platform and ecosystem for their application needs. But without resting still, the Groovy development team continues to further improve the language and its APIs to help its users increase their productivity on the Java platform.
Groovy 2.0 responds to three key themes:
- More performance: with the support of JDK 7 Invoke Dynamic to speed up Groovy for those lucky to have JDK 7 already in production, but also with static compilation for JDK 5 and beyond for everyone, and particularly those ready to abandon some aspects of dynamicity to shield themselves from the reach of "monkey patching" and to gain the same speed as Java.
- More Java friendliness: with the support of the Java 7 Project Coin enhancements to keep Groovy and Java as close syntax cousins as ever, and with the static type checker to have the same level of feedback and type safety as provided by the javac compiler for developers using Groovy as a Java scripting language
- More modularity: with a new level of modularity, Groovy opens the doors for smaller deliverables, for example for integration in mobile applications on Android, and allowing the Groovy APIs to grow and evolve with newer versions and newer extension modules, as well as allowing users to contribute extension methods to existing types.
About the Author
As Head of Groovy Development for SpringSource, a division of VMware, Guillaume Laforge is the official Groovy Project Manager, leading the Groovy dynamic language project at Codehaus.
He initiated the creation of the Grails web application framework, and founded the Gaelyk project, a lightweight toolkit for developing applications in Groovy for Google App Engine. He is also a frequent conference speaker presenting Groovy, Grails, Gaelyk, Domain-Specific Languages at JavaOne, GR8Conf, SpringOne2GX, QCon, and Devoxx, among others.
Guillaume is also one of the founding members of the French Java/OSS/IT podcast LesCastCodeurs.
Rate this Article
Hello stranger!You need to Register an InfoQ account or Login or login to post comments. But there's so much more behind being registered.
Get the most out of the InfoQ experience.
Tell us what you think
Ready for the real breakthrough
Ivo Houbrechts
The (optional) static type checking offers the best of both worlds and hopefully persuades these Java developers to have a second look at Groovy.
Nice job guys!
Looks good
John Dodo
The only thing I'm not sure to like, is the "Common type conversions still allowed" part. If my method is annotated with @TypeChecked and its return type is "boolean", I want a compilation error if I try to return a String!!
Will there be a Grails version using Groovy 2.0 soon?
Daniel Serodio
JDK 7u8?
Ashwin Jayaprakash
You said "upcoming JDK 7 updates (in particular update 8) should already contain such improvements..". As of today 7u3 is available. How do you know it'll be in update 8? That seems pretty far away.
Re: JDK 7u8?
Guillaume Laforge
I've heard some of the newer optimizations for update 6 were postponed to update 8, although I can't find a link handy to give you more details.
Re: Looks good
Guillaume Laforge
As for Grails, the integration of Groovy 2.0 should be in the Grails 2.2 release.
Static compilation by default
Stefan Undorf
If Groovy really performs Java-alike now I will come back from Scala.
Re: Static compilation by default
Guillaume Laforge
At put at the class level, you can use @CompileStatic(SKIP) to the methods you want to stay dynamic (for example when using a builder).
We're investigating how to turn on type checking or static compilation more globally for 2.1.
So for now, you'll have to annotate your classes with @CompileStatic, but stay tuned ;-)
Re: Static compilation by default
James Gordon
@CompileStatic(SKIP) on a method does not seem work for me in a @CompileStatic class.
With the SKIP, it compiles the code fine, but complains with a NoSuchMethodError at runtime.
TypeChecked(SKIP) works in a @TypeChecked class though
I hope I am not missing something obvious here. Here is the test code.
import groovy.transform.CompileStatic
import static groovy.transform.TypeCheckingMode.SKIP;
class GMain {
def test() {
def p = ['name': 'John Doe']
println p.name
static main(args) {
new GMain().test()
> We're investigating how to turn on type checking or static compilation more globally for 2.1.
Great. I vote for this too. Groovy++ has package level annotations.
Re: Static compilation by default
James Gordon
with the compiler is set to 2.0.0 by default.
@CompileStatic and Android?
Michel Alexandre Salim
It'd really make Android development much more pleasant, to have closures and type inferencing - FWIU only the dynamic code generation is a deal-breaker up to now.
Re: @CompileStatic and Android?
Guillaume Laforge
There's an experimental project called DiscoBot that ran with Groovy 1.7, in a pure dynamic fashion though, and that was running on Android, but it's not really been kept up-to-date. But trying Groovy 2.0 on Android is definitely something we'd like to investigate!
So please stay tuned!
Or even, if you're interested, perhaps you could help us work on that?
Re: Static compilation by default
Guillaume Laforge
What currently works is if you annotate each and every method with @CompileStatic, and then say skip for the one you don't want statically compiled. So this is a workaround for now, but that problem will definitely be fixed in 2.0.1.
Thanks for bringing that to my attention!
Re: Static compilation by default
Guillaume Laforge
Re: @CompileStatic and Android?
Michel Alexandre Salim
Re: @CompileStatic and Android?
Guillaume Laforge
Re: Static compilation by default
James Gordon
Re: Ready for the real breakthrough
Alex Hugh
Re: Static compilation by default
Alex Hugh
I won't feel safe using Groovy at this moment except may consider when version 3 is out. Till then, I would stay on Scala, by then, will be a mature language.
Chris Gaudreau
Just bought Groovy in Action and Definitive Guide to Grails. Hint: you guys should write a more up-to-date book sometime. :)
Re: Great.
Alex Hugh
Re: Great.
Guillaume Laforge
And it's not even using any static feature at all, just plain dynamic Groovy.
Re: Great.
Alex Hugh
scala or groovy for creating class from script file at run time
Veerbhan Tahlani
scala or groovy for creating class from script file at run time
Veerbhan Tahlani
scala or groovy for creating class from script file at run time
Veerbhan Tahlani
scala or groovy for creating class from script file at run time
Veerbhan Tahlani
scala or groovy for creating class from script file at run time
Veerbhan Tahlani
scala or groovy for creating class from script file at run time
Veerbhan Tahlani
scala or groovy for creating class from script file at run time
Veerbhan Tahlani
scala or groovy for creating class from script file at run time
Veerbhan Tahlani
scala or groovy for creating class from script file at run time
Veerbhan Tahlani


text:
|Home >> Course Descriptions >> College of Arts and Sciences
|British Novel
|Three semester hours. (FL-Even)
|This course will study the continuum of novelistic tradition in Britain. The works of such authors as Richardson, Fielding, Austen, the Bronte sisters, George Eliot, Dickens, Hardy, Woolf, etc. may be surveyed as reflection of sociopolitical, theological, and sexual aspects of British life. Prerequisite: Three hours sophomore literature or consent of instructor. May be taken for graduate credit.
Home - General Information - Student Services -