text:
Tap Here to view the Mobile Optimized TFLN
Im starting to think including a smiley face in texts may or may not be a code for 'lets have sex'
Im going to research this theory. . .
i wanted to go smoke pot, so i told my mom i was getting tutored. she asked what time i would be back, i told her learning doesn't have a curfew
she just gave me a present from you... on a stripper pole. in front of the whole club. :)
I know i should have focused more on what you were saying in the text rather than the fact you spelt "suicidal" wrong
No, pictures of your dick will not make me feel better about my grandmother having a brain tumor.
i think he saw me take a picture of his dick
The shit I just took made me regret every life decision leading up to it.
There is a dude in a thong with a Nerf axe having battles in the street. Welcome to Portland
Nvm, he just almost drank his drink from last night, his drink that has the condom in it. Kinda answers my question.
You sent me snap chats of you guys having sex. Like plural. It was like flip book porn, I'm traumatized.
she pretty much pinned my hand to her boob "on accident" for like 10 seconds before she moved. Waiting the rest of the night was just a formality.
I woke up with my panties in the cat food dish, and everything covered in honey and bruises.
The number of mornings I actually have to say out loud to myself "you must put pants on and go to work" to get motivated is...troubling.
Theyll love you, its bunch of older ladies who drink whisky and sours and talk about the sex seans in Game of Throwns
Easter bunny might get some gnarly munches and not even have enought candy left to hand out
Follow @tfln


text:
Halloween | MarthaStewart.com
For The Home
Cooking & Entertaining
Crafts & Party Supplies
Editors Picks
Shop Our Products
Your Account
view cart
my account
order status
Scrapbooking Supplies
Scrapbooking Supplies
Martha Stewart Crafts Kraft Tags
Martha Stewart Crafts Kraft Tags
68 customer reviews
List Price:
Our Price:
& eligible for
FREE Super Saver Shipping
on orders over $35.
You Save:
$4.90 (66%)
These Kraft tags from Martha Stewart Crafts can be used for gifts, on favor bags, as table place cards and in scrapbooks. Includes 12 tags with string attached.
From Martha Stewart Crafts
Use as gift tags, to tie up favor tags and so much more
Festive embellishment for cards, scrapbooks and more
Includes 12 tags with attached strings
Product Details:
Product Length:
0.53 inches
Product Width:
2.89 inches
Product Height:
5.44 inches
Product Weight:
0.03 pounds
Package Length:
3.6 inches
Package Width:
3.0 inches
Package Height:
0.6 inches
Package Weight:
0.05 pounds
Average Customer Rating:
based on 68 reviews
Sorry, but this item is currently not available.
Customer Reviews:
Average Customer Review:
( 68 customer reviews )
Write an online review
and share your thoughts with other customers.
Most Helpful Customer Reviews
27 of 29 found the following review helpful:
Cute tags but item not as described
Nov 28, 2011
By Lisa T.
The tags were not as described in terms of size (listed as product dimensions). The quality is good and the tags are cute, but they are much smaller than what is listed in the description. The colors matched our "woodland chic" themed event, and I liked that the tags came with strings. Overall, if the sizes were properly indicated, they would have been perfect.
13 of 14 found the following review helpful:
A little disappointed
Dec 26, 2012
By Marsha Nance
The hole reinforcements are pink, and that was not noted in the description or noticeable from the pictures. The pink limits the use of them.
6 of 7 found the following review helpful:
Simple Product, but Well Done!
Mar 04, 2013
By Marlene E. Hinrichs
Does anyone question the Martha Stewart brand when purchasing anything pertaining to cooking or arts and crafts? I don't! I have learned through bitter experience over the years to simply pay more for a product and thus be happier with it. I had a need for these tags for Christmas as I was wrapping everything in brown craft paper, and wanted the tags to match. They did. They were beautifully made too. I saw others online that were cheaper, but these were done with the "Master's Touch" and I value that.
6 of 7 found the following review helpful:
May 07, 2013
By Thom
Just received these, very disappointed in the dishonest product description. Tags are not 2.9 x 5.4, that is rather the size of the plastic packaging they came in. The tags themselves are much smaller.
2 of 2 found the following review helpful:
Mar 25, 2013
By David V.
Very practicle. Able to write easily and erase then reuse in pencil for additional information. Using them for spare keys and to ID starter growth of our butterfly bushes project.
See all 68 customer reviews on Amazon.com
about us
contact us
privacy policy
copyright © MarthaStewart.com. all rights reserved.

subset: commoncrawl


text:
Hi I am a single mum of 3 kids. Felindyrch has been my life's work for the last 15 years living with community and bringing up our children to love and respect nature and each other. I am now living in Narberth a short distance from Felin and am renting out two of the converted buildings for holiday/retreats. I am an artist, actress, life-coach and networker for compassionate living on the planet.
Every Superhost has their own style, but they've all reached key hospitality goals.
Congratulations, you're a Superhost! We'll reward you with priority support, product previews and more.
Oshi has completed online and offline ID verification.
Communication both before and during the booking/stay was perfect. The accommodation is as described and is very cute in a beautiful location. Oshi is very generous, leaving logs, kindling, firelighters, matches, beer/cider, biscuits and flowers. We were lucky enough to meet Oshi by chance - very nice lady
We had a fantastic stay at the Old Mill Barn. The log burning fire makes the studio so cosy and Oshi was very helpful. We definitely hope to return!
4 of us stayed at Oshi's cottage for a long weekend in December. The cottage was perfect! We all agreed that the photos online didn't nearly do it justice! There was plenty of space for 4 adults and the house was decorated in a great, homely (and brilliantly quirky) way. The kitchen was also great and hand everything in it you could want. Would highly recommend the cottage for a place to stay for a long weekend away, just watch your head if you try and use the upstairs bathroom! (I don't think it's meant for adults...)
Our stay at the cottage was wonderful. The cottage was perfect for two and so clean, comfortable and cosy. Oshi has done a great job getting very detail right for her guests. We're already planning our next trip back there!
The mill is amazing! The river running around the mill and outside seating area creates a unique atmosphere. The place is well equipped with everything we needed and the lovely fireplace was lit on our arrival. We hope to return soon!
We had a fantastic stay at this fantastic mill converted cottage! Oshi made us feel welcome on arrival and had the fire going which was a godsend after a long drive on a wet Friday afternoon. The mill is exactly as advertised and lovelier than the pictures, the perfect place to relax away from a big city. Equipped with all you need to make everything from mulled wine to a roast dinner. The only thing we wanted - was to stay longer.
Description was spot on, cozy and relaxing place, lovely rural setting.
The cottage and the land are absolutely beautiful, the amount of work and love that has gone into the place creates a really warm feel. The weather wasn't great when we were there, but the cosy evenings in in front of the fire more than made up for it. We will be back!
The mill was absolutely lovely, the surroundings are wonderful with the river running through the fields near the property and the mill race running around the outside seating area. The bed was wonderfully comfortable and the views from the loft were fantastic. The kitchen was very well equipped and we found everything we needed. We have recommended it to several of our friends and are hoping to visit again in the new year!


text:
HOME UtilitiesFile Search Utilities YAGT (Yet Another Grep Tool)
YAGT (Yet Another Grep Tool) 184.108.40.206
- Freeware
- Charles Kyle
Description of YAGT (Yet Another Grep Tool) 22.214.171.124:
This is a very simple grep tool written in PERL.
Supported OS: Windows XP, Windows NT, Windows Me, Windows 98, Windows 95, Windows 3.x, Windows 2003, Windows 2000
User reviews: YAGT (Yet Another Grep Tool) Download
Software downloads related to YAGT (Yet Another Grep Tool)
GO Contacts EX
Brought to you by GO Dev Team , GO Contacts EX is yet another powerful tool, ideal replacement of stock Contacts and Dialer.
more info
Yet Another Laser Game
Yet Another Laser Game is a modern remake of the popular "laser and mirrors"\; genre. Using mirrors, you will have to guide your laser through mazes containing explosives, doors, teleporters.
more info
JAST Another Scrum Tool 0.9.0.1132 Beta
JAST Another Scrum Tool is an application to manage a product backlog and the Scrum team.
more info
YAAI - Yet Another Avi Info
Yet Another Avi Info is one of the best tools to display information about your avi files.
more info
Yet Another uTorrent
Yet Another uTorrent is a small and powerful BitTorrent client for Windows that uses torrents to download movies, TV shows, music, software, etc. Program is tiny and consumes no resources. In less than a minute you can download and install it.
more info
MP3 Tag Editor
MP3 Tag Editor is not just yet another music file tag editor. It is a powerful music collection organizer, audio file search system, personal DJ and more. MP3 Tag Editor is a great tool for editing data tags in sound files of any format.
more info
MP3 Tag Editor
MP3 Tag Editor is not just yet another music file tag editor. It is a powerful music collection organizer, audio file search system, personal DJ and more. MP3 Tag Editor is a great tool for editing data tags in sound files of any format.
more info
MP3-tag is not just yet another audio file tag editor. It is a powerful music collection organizer, audio file search system, personal DJ and more.
more info
YAFPC (Yet Another Free PDF-composer) can compose PDF documents from picture files and other PDF files, encrypt the created document and send it to some e-mail address.
more info
YADA is a very fast download manager. It will accelerate your downloads from the Internet and resume broken connections. YADA includes an easy-to-use interface and its installation does not interfere with the normal behavior of your browser. YADA...
more info
YahDecode - Yahoo Archive Decoder
YahDecode is a Yahoo messenger archive decoder. It can decode archived messages and archived conferences of any yahoo user without you having their password. It has another cool feature which lets you enable archiving for any yahoo user without...
more info
News related to YAGT (Yet Another Grep Tool)
Article 3
Bash has been around since the 1980's and has been integrated into many popular operating systems, including Linux, Unix and Apple's OS X. Bash is so widely used it is estimated that the software runs on over 50...
For one, using humans -- not image-recognition software -- to make each image shoppable may be more accurate, but it's also much more expensive. Then there's the matter of getting people to download yet another...
Android Authority (blog)
Additionally many users have reported major problems with their older hardware upon updating, especially when it comes to poor power management. The existence of yet another update will also mean that OEMs...
Windows IT Pro
Adobe Flash Player was caught with yet another zero-day flaw this week. Adobe released security fixes yesterday, providing a patch and releasing guidance for updating on affected systems. Affected systems include the usual...
The Register
The vulnerability is being actively exploited in the wild via drive-by-download attacks against systems running Internet Explorer and Firefox on Windows 8.1 and below, Adobe warned. Trend Micro reports the new Flash exploit...
Teradata says it's making Loom available as a free download on its Hortonworks Data Platform-based cloud sandboxes, but the software also works with Cloudera and MapR Hadoop distributions. In yet another announcement,...
Spyware like FinFisher contributes to a multi-billion dollar business. But until last week, ... Anyone can freely download Detekt's open-source software, but if the tool does detect spyware, getting rid of it is...
Samsung has released its 840 Evo SSD repair tool, as well as additional information on what causes the problem. It turns out that the issue is a bug in how the drive calculates what the voltage level within a cell...
Lifehacker Australia
Nmap is an extremely powerful tool, but it's not the easiest piece of software to use. If you're a little gun shy, you have some other options. Angry IP Scanner is another cross-platform utility that...
Virtual-Strategy Magazine (press release)
Less than one year since the launch of the company's record-breaking crowdfunding campaign, GNS3 Technologies is pleased to announce the world's first free multi-vendor network...


text:
The flight down, the ride to the hotel was okay till we arrived at the hotel and found out that our party of four rooms near each other ended up that half of us were booked at the village and the others at the garden side. I complained to no avail I was told nothing could be done because nothing... More
- Reservation Options:
- TripAdvisor is proud to partner with Caribbean Online Mgt Corp., Expedia, Orbitz, Travelocity, getaroom.com, BookIt.com and Tingo so you can book your ClubHotel Riu Merengue reservations with confidence. We help millions of travelers each month to find the perfect hotel for both vacation and business trips, always with the best discounts and special offers.
- Also Known As:
- Clubhotel Riu Merengue Hotel
- Club Hotel Riu Merengue
- Clubhotel Riu Merengue Puerto Plata
- Riu Merengue Dominican Republic
- Riu Merengue Puerto Plata
- Rui Merengue


text:
Faces of Death IV
Your senses will be numbed when you witness actual footage of a human barbeque, the electrocution of a woman on death row, news footage of a terrorist blown ...
- wojoo5
- Length: 89:24
- Tags:
10 Shocking Last Words of Death Row Inmates
These are craziest final words from prisoners right before they were given the death penalty. Subscribe to our channel: http://goo.gl/9CwQhg ----------------...
- TheRichest
- Length: 3:58
- Tags:
10 People Who Cheated Death
Here are 10 people who have cheated death and survived through some insane situations. Visit our site: http://TopTrending.com Like us on Facebook: https://ww...
- Top Trending
- Length: 4:21
- Tags:
Gaara VS Toph | DEATH BATTLE!
Thanks to Squarespace for making this episode possible. Use http://www.Squarespace.com/ScrewAttack and get 10% off. Pretty awesome stuff right there! Which w...
- ScrewAttack!
- Length: 18:45
- Tags:
Death Certificates & Forced Confessions: Russia's Ghost Army in Ukraine (Part 2)
Watch Part One - http://bit.ly/1ACEWOC The bitter conflict in Ukraine has cost thousands of lives, but the Russian government has continuously denied sending its soldiers to the frontlines,...
- VICE News
- Length: 13:4
- Tags:
5 Photos of People Laughing in the Face of Death
Bizarrely calm, bordering on madness, and ready for rapture, these are the final mysterious photos of men laughing in the face of death during WWII. Find more chilling pics on Facebook ▻...
- Dark5
- Length: 5:10
- Tags:
Top 10 Movie Depictions of the Grim Reaper or Death
Death is a fact of life, but he also moonlights as an actor on the side. Join http://www.WatchMojo.com counts down our picks for the top 10 depictions of dea...
- WatchMojo.com
- Length: 11:52
- Tags:
Death in the Ring: Experts describe what went wrong in fatal kickboxing fight at Eagles Club
Amateur kickboxer Dennis Munson Jr. died after his debut fight in March 2014 at the Eagles Club in Milwaukee. Independent experts say there was a cascade of ...
- Milwaukee Journal Sentinel
- Length: 10:40
- Tags:
Five Nights at Freddy's 3 PURPLE MAN Death Minigame! | FNAF 3 Secret Easter Egg (2015)
Five Nights at Freddy's 3 PURPLE MAN Death Minigame, FNAF 3 Secret Easter Egg (2015) ❤ Full Playlist ➥ http://bit.ly/fnaf3game ❤ SUB 4 MOAR! ➥ http://bit.ly/IULITM ◕ My brother's...
- Length: 1:51
- Tags:
Tamir Rice's Death Is His Own Fault, Rules Cleveland Courts
"According to court documents obtained by BuzzFeed's Stephanie McNeal, the city of Cleveland, Ohio is claiming that 12-year-old Tamir Rice's death — as well as the pain and suffering...
- The Young Turks
- Length: 6:28
- Tags:
Destiny: Red Death PvP Review - Best PvP Weapon After 1.1.1 Patch? (Exotic Pulse Rifle)
Is the Red Death the new best PvP weapon? If You Enjoyed The Video, Consider Leaving A LIKE :) Thanks. Follow me on Twitter: https://twitter.com/dpjsc08 Hey guys, in today's video we take...
- DPJ - Daily Destiny Videos
- Length: 6:39
- Tags:
DEATH BY TETRIS! Minecraft: Tetris Duel!
Ever wanted to crush your friends with giant Tetris Pieces? Well now you can! With the Tetris Duel Map made by Superintendant, compete against your friend in the role of the Player who gets...
- CavemanFilms
- Length: 11:7
- Tags:
Boba Fett VS Samus Aran Remastered | DEATH BATTLE
SUBSCRIBE: http://bit.ly/ScrewAttackSubscribe Connect with Ben (Wiz/Director) online: Like Ben on FACEBOOK: http://on.fb.me/hTPcT1 Follow Ben on TWITTER: http://bit.ly/gWGs0s Connect with...
- ScrewAttack!
- Length: 13:28
- Tags:
A Certain Kind Of Death - Documentary
Unblinking and unsettling, this documentary lays bare a mysterious process that goes on all around us - what happens to people who die with no next of kin. D...
- havoctrend
- Length: 69:38
- Tags:
FNAF 3 PURPLE MAN KILLS FOXY! (PLAY Death Minigame CUTSCENE)
FNAF 3 PURPLE MAN KILLS FOXY! (PLAY Death Minigame CUTSCENE) ❤ Full Playlist ➥ http://bit.ly/fnaf3game ❤ SUB 4 MOAR! ➥ http://bit.ly/IULITM ◕ My brother's channel ➥ http://bit.ly/maryo...
- Length: 0:55
- Tags:
DEATH BY TETRIS! (Minecraft Tetris Dual)
THE GOAL IS TO KILL THE OTHER PLAYER WITH TETRIS BLOCKS! » Join The Ant Farm Today - http://bit.ly/AntVenomSubscribe » Live-Streams - http://twitch.tv/AntVenom DOWNLOAD ...
- AntVenom
- Length: 11:10
- Tags:
Page: 1 of 62500


text:
You can now filter search results with text. Example: "person: john" will search only person pages for "john".
Doc Green needs to hunt down his A.I. and clean up the mess it has made.
The jaws of universe-shattering destruction are closing around Earth and its protectors.
Prepare yourself for a brutal, twisted and shocking crime drama.
Characters in the land of Limbo. Save them from their fate, Powers-That-Be !
Use your keyboard!
Log in to comment


text:
Anthony Weiner definitely has some problems. But his wife Huma Abedin came under fire this week as commentators speculated on why she had stuck by her sext-addict husband.
There's a lot to love about Tina Fey's sexy-geek image. For instance, "Geeks can be sexy!" is an awesome message, as is "Sexy women can be geeks!" (Okay, maybe there are only two things to love.) I think it's safe to say we get it: She's hot. She's smart. She's hot, yet smart. And vice-versa.
But Fey's sex appeal is no accident — it's the price she paid for fame. In January's Vanity Fair feature, Maureen Dowd gushes about "how a tweezer, cream rinse, a diet, and a Teutonic will transformed a mousy brain into a brainy glamour-puss." Dowd thrills at the success of the makeover that made Fey fit for the camera, and her enthusiasm for weight loss and designer clothes is unsettling. No one wants to picture Liz Lemon doing Weight Watchers...
Adult Sex Toys
Receive a monthly B-Mail in your inbox for special updates, deals, and news from Bitch Media
Have an idea for the blog? Click here to contact us!


text:
Upcoming Movies
Top 10 Horror
Contact Us
The Latest Horror Movie News Served Fresh Daily Since 2005
Graham Skipper
Almost Human (2013)
Posted by Herner Klenthur | Posted 518 days ago.
Mark Fisher disappeared from his home in a brilliant flash of blue light almost two years ago. His friend Seth Hampton was the last to see him alive. Now a string of grisly, violent murders leads Seth to believe that Mark is back, and something evil is inside of him.
Horror Writers Wanted!
Shared 28 Times
[Video] What if John Carpenter Directed Frozen?
Shared 271 Times
Headless [Review]
Shared 232 Times
Women in Horror Month: Gigi Saul Guerrero
Shared 186 Times
Vincent Price's From a Whisper to a Scream Hits Blu-ray This April
Shared 165 Times
The Barn Goes Old-School With This Artwork and Trailer
Shared 142 Times
New UK Trailer for Jon Watts' Clown by Chris Savage
Full Official Trailer for Rage: Midsummer's Eve by Chris Savage
First Teaser Trailer for Save Yourself by Chris Savage
Official Theatrical Trailer for Zombeavers by Chris Savage
The Barn Goes Old-School With This Artwork and Trailer by Chris Savage


text:
Wellington's new Anglican Bishop ordained
Relevant offers
The country's first dreadlocked, barefoot bishop has been ordained to his seat at Wellington's Anglican Cathedral.
Waikanae commune co-founder Justin Duckworth, 44, was led into his cathedral by about 140 family and supporters yesterday, after being voted in by fellow bishops.
His popularity was apparent as people overflowed the 1200 available seats to stand in aisles and watch from the foyer, cheering as he was officially ordained to his Wellington seat.
And there was giggling as their bishop donned his mitre (the traditional bishop's hat) on top of his long bohemian hair-do for the first time.
Despite his previous qualms, it fitted.
Speaking about her free-spirited husband who previously shied away from the mainstream church, Jenny Duckworth said she would "gladly share" him with the Wellington diocese.
"I'm not sure what is the greatest miracle, the diocese choosing Justin, or Justin choosing the diocese."
She talked of their "hidden-away" commune in the Reikorangi Valley, near Waikanae, before singing a short piece for the congregation.
Justin Duckworth was handed a wooden matai traveller's staff, carved by a member of the Ngati Porou at Rimutaka Prison - where he said he used to be more comfortable than facing a crowd of nearly 2000 people.
But he wanted to "leave a legacy amongst the lost, the last and the least", he said. "I want to say how proud I am to be your bishop."
Foxton resident Joan Bassett came with "busloads" of well-wishers to see their new bishop.
"It's a wonderful, inspiring event to happen in our life.
"The bishop is a leader of all people and he spoke so well. With humility and courage.
"He is perfect."
Duckworth later explained her husband's bare feet as being "just that he doesn't like wearing shoes".
Wellington Anglicans pick dreadlocked bishop
Contact Jody O'Callaghan
Consumer affairs, and Attractions and Events reporter
Email: email@example.com
Twitter: @miss_jodyo
- The Dominion Post
Sponsored links
Rugby becoming 'boring', says All Blacks coach Steve Hansen
'He peed in my shoes' tale by Southland girl revealed in Graham Norton's Red Chair
'Perfect, pink angel' Ruby Marris, 5, farewelled
Labour's Carmel Sepuloni to be reinstated after mother's benefit fraud
Cat shot through eye with arrow
GCSB committing crimes against whole countries - Greens
Tim Southee shakes off fever, declares himself fit for Afghanistan clash in Napier
Manchester United manager Louis Van Gaal plays down Jonny Evans spitting row
'Avid tramper' David Moen found 40 years after death
Reports: All Whites defender Winston Reid agrees lucrative deal with West Ham
Briscoe to open new stores, posts record profit
One-in-a-million baby girl loses her battle to live
Mob street makeover brings buyers
Microsoft co-founder Paul Allen says he's found Japan WWII warship Musashi
'He peed in my shoes' tale by Southland girl revealed in Graham Norton's Red Chair
MH370 flew to Kazakhstan: Journalist's new theory
Clocked at 171kmh before police chase
How he lost 25 kilos then went to Everest


text:
Welcome to FIVB
The FIVB
Beach Volleyball
Players' Database
Documents & Forms
Partnership opportunities
The Game
Further resources
World Championships
World Tour
U23 World Championships
U21 World Championships
U19 World Championships
U17 World Championships
Continental Cup
Challengers and Satellites
Exhibitions/Country v. Country
World Tour Grand Slams 2014
World Tour Opens 2014
National Tours
NF Entry Rankings
- Men
- Women
FIVB World Tour
- Men
- Women
FIVB Season Ranking
- Men
- Women
Technical Rankings
Teams - Men
Teams - Women
Players - Men
Players - Women
Beach Volleyball history
FIVB official Rules of the Game
BVB Info
Personal Plus - Dancers
Sports Regulations
Handbook 2014
Handbook 2014 (Age Group WCHS)
World Tour Branding Kit
Open Branding Kit
2014 Media Guide
Poland knocks out reigning U21 world champion to reach semifinals
Katarzyna Kociolek (diving) and Jagoda Gruszczynska made it to the final four in Umag
Umag, Croatia, June 22, 2013 – Poland's Katarzyna Kociolek and Jagoda Gruszscynska knocked out reigning world champion Nina Betschart and her partner Nicole Eiholzer to reach the final four at the U21 World Championships in Umag. The Swiss team took the game to a tiebreak after losing the first set, but Poland eventually won 21-17 11-21 15-12.
Both teams booked straight wins in the second elimination round after they had advanced as pool winners. Switzerland came back strong in the second with 21-11. "We did not stand a chance", Kociolek said. "We did not have any power, we just stopped playing. This was the worst ever set."
"In weather like this to play a tiebreak is really hard. I was glad we only had to play two matches today, if this was our third, we would not have made it." At 11-11 Poland took the lead and Gruszscynska cashed in the first match point with a kill block.
For Betschart, who won the event in 2011 and 2012, the elimination meant she was not going to set a new record by winning three U21 titles in a row.
Poland meets Austria in semifinal
In the semifinal on Sunday Kociolek and Gruszscynska play Katharina Schützenhofer and Lena Plesiutschnig. The Austrian girls upset Australia's Mariafe Artacho and Jessyka Ngauamo earlier on Saturday in two sets. In the quarterfinals Anna Behlen and Yanina Weiland were no match for the Austrians, though the German girls had eliminated Brazil's top team Taina and Eduarda in the second round.
"We won against Germany in the pool as well, so we used the same strategy again and just played our own game", Plesiutschnig said. She just recently returned to the sand, after surgery in January on a dislocated shoulder. "We used the U23 as a preparation and finished fifth."
Schützenhofer gained some World Tour experience with Barbara Hansel while Plesiutschnig was injured, but is glad her partner is back. They have been playing together for three years and they operate like a smooth machine. "Our communication is really good on the court", Schützenhofer said. "We love to play together. We are really good friends, outside the court as well."
The Austrian pair looks forward to their match against Poland. "We never played this combination before, but we know Kociolek well. We lost to her and Baran in the final at the U19 in Umag in 2011", Schützenhofer said. "So we definitely want to win this time."
FIVB U21 World Championships Tournament Page
FIVB - International Volleyball Federation
FIVB Video
Download highresolution
Hosts dominate day one of Brazil-USA showdown
World Champs Beach Blog - 17 weeks to go
South American Beach Tour stops in Peru
Beach volleyball set for global expansion with new partners
Draw sets up eight double-gender CEV Continental Cup tournaments
Twelve countries confirm tickets to second phase of CAVB Continental Cup
Walsh Jennings says Brazil test will serve as trial run for Rio Olympics
Player profile: Edouard Rowlandson
Argentina and Brazil win gold in Venezuela
African beach volleyball champions crowned in Tunisia
Beach Volleyball Tour begins in Venezuela
Countdown clock at 60 days for start of 2015 FIVB Beach Volleyball World Tour
Burundi and Kenya through to the Zonal phase of the CAVB Beach Continental Cup
World Champs Beach Blog - 18 weeks to go
Beach Volleyball World Championships - Register as a volunteer and be a part of the action
Beach Volleyball World Championships qualification update
Qualifiers confirm African teams at Beach Volleyball World Championships
Burundi defeat Tanzania in CAVB Continental Cup Pool 8 opening
Nineteen African teams compete to qualify for Beach Volleyball World Championships
Baku 2015 European Games announces beach volleyball national team quotas
Dutch beach volleyball venues multiply in build-up to World Championships
2015 FIVB Media Guide launched ahead of exciting season
Cope and Alfaro lead Costa Rica to victory in Central America
Costa Rica and Guatemala advance in NORCECA Continental Cup
World champs world record attempt approved
Guatemala, Nicaragua and El Salvador open with victories in NORCECA Continental Cup
Dutch teams to compete for wild card
Alison, back to fitness and back with Bruno
World Champs Beach Blog – 19 weeks to go
Dutch dreams being built in Florida sun
Morocco celebrate CAVB Continental Cup qualification
NORCECA Continental Cup gets underway in Nicaragua
Mauritius beat the Seychelles to top CAVB Continental Cup Pool 12
Player Profile: Alexander Brouwer
Argentina ready for South American Tour event in Montevideo
New editions of the Rules of the Game available
Beach volleyball world champ helping shape Rio 2016
Walsh Jennings and Ross "definitely getting there"
Venezuela's beach volleyball athletes gather in Montevideo
Wesselink calls an end to her career
Day hoping it all adds up with Kessy
Brazil and USA to clash on Copacabana
Japanese beach volleyball athletes complete training camp in Brazil
Laura Ludwig: The Unstoppable
Italy launches indoor beach volleyball championship
Bansley and Pavan know hard work is the key to success
Gambia and Senegal move into next round in CAVB Continental Cup Zone 2
Tactical tweaks help Pedro and Evandro to win in Forteleza
Larissa and Talita continue winning ways in Fortaleza
Humana-Paredes says Top Rookie award is "truly an honour"
Other news


text:
You are a fan of valleys vanilla ? Come to discover the best forums valleys vanilla on the internet and share your experience with a community fan of valleys vanilla . You can also build a forum valleys vanilla and create your online discussion.
MineCraft server, Legit Style.
legitland, minecraft, #vanilla, legit, server
www. bonkas4x4wales. com ( forum ). www. bonkas4x4wales. com forum
offroad, forum, plays, wales, club, landy, zone, #valleys


text:
Just an e-mail to let you know I received my package faster than expected. I'm extremely happy with MisterArt.com's customer service. I will shop at your web site again.
More Testimonials »
ChromaTemp Artists' Tempera Paint
by Chroma Inc.
Up to 50% Off
Chromacryl Students' Acrylic Paints
Up to 48% Off
Dots-n-Dashes Painters
by Alex Toys
At Least 9 % Off
Monster Art Center
At Least 19 % Off
Opaque Paint Box
by Pelikan
Up to 43% Off
Paint Porcelain Jewelry
Tempera Cake Set
by Prang
Up to 40% Off
Watercolor Sets
From $2.09
Glossies Acrylic Enamel Colors
by Liquitex
From $2.79
Air-Dry PermEnamel Specialty Products
by Delta
From $1.96
Ten Well Palette With Cover
by Jack Richeson
From $1.19


text:
Are you a Doctor?
153 Doctors Online
My Dashboard
My Transactions
Get your Health question answered in 3 easy steps
A Doctor will be with you shortly
Ask a Doctor Now
153 Doctors are Online
A Doctor will be with you shortly
I am
Dr. Andrew Rynne (Family Physician)
. I will be looking into your question and guiding you through the process. Please write your question below.
Loading Online Doctors....
Health Topics
Medical Procedures
Showing results for :
Post cholecystectomy syndrome diet
Public Forum Discussions
Abdominal pain radiating into back after cholecystectomy. Can a general anesthetic procedure be used for ECRP?
in the right side of my abdomen radiating into mg back. I have been told I have
...I have had a laparoscopic
procedure 7 months ago. I was in pain 5 years before ...
Non stop left lower quadrant pain, W/frequent loose stool movement and nausea, please help
because doctor didnt want a chance of gallstones.I read about
and you can ...
What is the diet after a cholecystectomy?
I am asking for dietary advice for an Asian friend of mine who has had a
at the beginning of the year but did not get enough medical advice and has been hospitalised last week with severe ...
Taking plaquenil, medrol and imura for lupus. Had dumping syndrome after cholecystectomy. Oil droplets in urine. Why?
I have lupus . It s pretty well controlled with Plaquenil , Imura and Medrol. I ve been
... but that isn t anything new. It s colorless oil. I did have dumping
for approximately 7yrs that began ...
Specific drugs for cholecystectomy
Which specific drugs (like generic or trade names) would be given to a patient preoperatively for a
including anesthesia used? and also what drugs would be given intraoperatively and postoperatively ...
Diabetes, obesity, chronic iron-deficiency anemia, frequent uti. Roux en y gastric bypass, cholecystectomy, hernia surgery done. Advise?
I had a roux-and-y gastric bypass and
performed in 2009. I had a follow ..., electrolytes, overnight pulse oximetry,and differential levels are normal, My plan is to start a low-carb
How to get relief after laparoscopic cholecystectomy?
Hi Doctor, the doctors did a laparoscopic
to my wife on Monday for the removal of gall bladder, but now she has not gone to relieve herself since the operation, but she is eating ...
How to reduce abdominal pain after cholecystectomy?
hi, i have my gall bladder out 2 months ago, since than i feel a pain in the right upper abdomen till now. the pain is stiff when i breath deep. i have done an utrasound week ago and the doctor finds nothing. he told me that it is a post...
Could acid reflux be due to angioplasty or cholecystectomy?
My brother 74yrs has had angioplasty where one major blockage of 60% and three 20% have been stented.He has returned on Saturday 24january.He has acid reflux for which he is having 2pantaprazole.Despite that he had acid reflux.He also had his gall...
Cholecystectomy to be done, had bulky uterus. How will it be cured?
I had to undergo
, hence gone for Scannning, where i got an additional comment as Bulky Uterus , the Doctor said that there is no problem. I have a son age 5 years , i have normal pain ...
Read More Public Forum Questions
Premium Questions
What causes mild elevation of ALP levels post cholecystectomy?
been this high and for about 4 weeks I have been eating a very clean
mostly fruits and veggies ...
What causes severe attacks of midepigastric pain with history of cholecystectomy?
10 yrs ago for severe biliary dyskinesia with +ve response to cck on hida and EF 8 ... gotten progressively better with some waxing and waning symptoms related to
. Back on clear liquids ...
Suffering from acute pancreatitis and fatty liver disease post Cholecystectomy. Suggest diet?
my father is suffering from ACUTE PANCREATITIS and NON
STATUS what type od
he ... and NON ALCOHOLIC FATTY LIVER DISEASE and POST
STATUS what type of
and MEDICINE he ...
Does cholecystectomy cause high cholesterol readings?
Good afternoon. Male, 54,
25 yrs ago, high cholesterol , gastritis and duodenitis ...
cause high cholesterol readings...especially triglycerides? Could
cause gastritis ...
What causes GB attack after cholecystectomy?
I had gall bladder surgery in April and suffered from what felt like another GB attack last night. Can you help me understand why?
Read More Premium Questions
People also viewed
Cocaine uterine rinse recovery formulas
Drugs/medication for viral hepatitis a
Cocaine and frequent urination
Smoking cocaine and sensation of frequent urination
Drugs/medication for esophageal varices
Nose leaks when leaning forward cocaine
Post cholecystectomy syndrome and anxiety
Drugs/medication for gall bladder calculus
Iron deficiency doing cocaine
Post cholecystectomy syndrome diet
Drugs/medication for retroperitoneal fibrosis
Post cholecystectomy syndrome, hyperlipidemia
Drugs/medication for acute liver failure
Post cholecystectomy syndrome in pregnancy


text:
Recent articles
- February 19 Eastern Hillsborough County homeowners with wells should be prepared for freezing temperatures
- February 18 Public Invited to 2015 Regional Water Supply Plan Presentation Focusing on Agriculture
- Governing Board to Meet in Sarasota
- February 13 Eastern Hillsborough County homeowners with wells should be prepared for freezing temperatures
January 19, 2007
Getting a well construction permit now can be just a point and click away thanks to a new online application process developed by the Southwest Florida Water Management District.
The District issues more than 20,000 well construction permit applications each year.
"This application revolutionizes the way that we conduct business by reducing paperwork, streamlining our business processes, and placing more power in the hands of the individual computer users," said Terry Redman, information resources director for the District.
The new online process allows applicants to identify well sites by simply pointing on a map. The system also is linked to the property appraiser's web site, where available, to ensure the most accurate data when submitting an application.
District staff and counties with delegated authority from the District will now review and issue the well construction permit applications online.
The new online well construction permit application process is the first phase of the District's new Water Management Information System (WMIS). Plans for the remaining phases will integrate information from systems including water use permitting and environmental resource permitting, making it easily accessible for both the staff and the public.
Eventually, information such as rainfall averages, aquifer levels and water use will be available through WMIS for analysis and comparisons.
The anticipated completion date of the entire project is March 2010.
A significant number of well contractors have taken advantage of training opportunities offered by the District. For more information about or to request training, please contact Sonia Beau at 1-800-423-1476, ext. 4730.


text:
Nevertheless, if meanwhile anybody comments on my Pull Request and suggest any change, I am happy to make the PR better.
I wish someone saw it as a CPAN challenge, took overt the maintenance of the module and made it easy to install it.
Well it seems somehow I always have great luck (not sure if it is good or bad) when getting a new computer and then loading Mojolicious on it.
So twice before this has happened to me, I set it up with all my dev software, a few flavors of perl, Padre and so on. Then I add start to port over some of my web apps then I try to run them and sure enough Mojolicous gives me great grief.
It seems I have an uncanny knack to update or break in a new box just as a new n.0 version of Mojolicious comes out (this time it is 6.0, I might of actually been one of the first to download it). Well at least I am savvy enough not to update the Mojo on my production boxes as quickly, so there is no real loss money wise just some frustration.
This time out I did not get as many as my last round (3.xx ~5.0) but here is some quick items to look at before you update your Mojo.
Well I am a windows kind of guy (yeah I can see your eys rolling to the back of your head) so when I tried to start my first app up with a simpleI got the above error>morbo aDnD
Well a few mins on google led me right here Mojo FAQ and a simple addition of MOJO_REACTOR to the ENV vars solved my problems so I guess morbo is more and more like production server so that is good to see
Well it seems I haven't been reading the what is being deprecated and this one caught me big time in a number of my apps so it took a little while to fix them all. Mostly changing from thisMojo::Loader->load('CS::Base::aDnD');
to something like this
- Removed deprecated bridge method from Mojolicious::Routes::Route
Well this one was a big of a bugger for me anyway though it was easy enough to fixtomy $rn = $r->bridge->to('authn#check');
my $rn = $r->under->to('authn#check');
but I will have to go out someday soon and make a bunch of updates to the documentation of authorization plugin or at least check that I do not use bridge anywhere.
- Replaced reserved stash value partial with render_to_string method
This one took me a while to figure out as it first showed up in a silly little helper in my base class, not sure if the 'partial' still works elsewhere I think it must as I use it all over the place. The fix was simple enough and even a little more readable.
my $html = $self->render( $string, partial => 1, );
my $html = $self->render_to_string( $string );
Well all in all things did not take too much time to fix up perhapse 30~60 mins per app.
I am not complaining about it it is just what one has expect and to deal with when playing with Mojo.
Next time I will know better to keep an eye on when the next '.0' release is coming and see what is deprecated and what has been removed
]]>Catalyst have agreed to host us on March 10th.
Broadbean have asked to have us on April 14th.
SiteSuite have agreed to host on the 14th of May.
Dates beyond that are up for grabs, and speakers are welcomed for any and all meetings.
Help promote by printing and hanging either the A3 or A4 poster around your workplace, university, college, local hang outs etc. (ask for permission first!)
More details to come, or subscribe to Sydney-PM mailing list
For me, I like the convenience of using Github Pages to host project-oriented websites. The project itself is already on Github, so why not keep the website closely tied to it so it doesn't get out-of-date? For an organization like the Chicago Perl Mongers, Github can even host custom domains, allowing easy collaboration on websites.
It's through the Chicago.PM website that I was introduced to Octopress, a blogging engine built on Jekyll. It's through using Octopress that I decided to write my own static site generator, Statocles.
]]> Like the most popular static site generators, Statocles uses Markdown to generate HTML. Simple, readable plain text becomes HTML using Text::Markdown. A small bit of YAML on top allows for metadata like tags, keywords, and links. If you want to change formats, or even store your documents in a database instead of on a filesystem, you can write a custom store module.Though currently primarily a blog and simple web site, Statocles is intended to be an application framework, allowing for custom ways to organize and display content.
Statocles can deploy itself to Git repositories, including Github, but it can also copy to another directory to be served by the local web server. If you've got another way you need to deploy, you can write a custom deploy module.
With this announcement, Statocles is beta-quality. The big API changes I wanted to make are out of the way, and I'm working towards some useful developer features before I mark a 1.0 stable release.
Statocles currently comes with:
Future plans include:
Here are some websites currently using Statocles:
Join me in #statocles on irc.perl.org for questions or comments, or write up a bug or feature request on Statocles's Github page.
]]>PAUSE interface disceased the request for ownership of a new package, fine.
Now I uploaded two new packages and systematically got: Failed: PAUSE indexer report.
Why ?
Sorry if I made a so stuuuupid mistake that is too big so I have not seen it!
Example on a distribution for which I have always been the single unique uploader:
Objet : Failed: PAUSE indexer report JDDPAUSE/MarpaX-Languages-M4-0.003.tar.gz Date : dimanche 22 février 2015, 20:57:32 De : PAUSE]]>À : ./.. me and andreas ../. The following report has been written by the PAUSE namespace indexer.
Please contact email@example.com if there are any open questions.User: JDDPAUSE (Jean-Damien Durand)
Distribution file: MarpaX-Languages-M4-0.003.tar.gz
Number of files: 64
*.pm files: 19
README: No README found
META-File: MarpaX-Languages-M4-0.003/META.json
META-Parser: Parse::CPAN::Meta 1.4404
META-driven index: yes
Timestamp of file: Sun Feb 22 20:56:03 2015 UTC
Time of this run: Sun Feb 22 20:57:32 2015 UTCThis distribution name can only be used by users with permission for the
package MarpaX::Languages::M4, which you do not have.
When it comes to us talking about people who contribute to the world of Perl it can be real easy to just mention those most visible[2] as being 'paid up' or 'most contributory' participants. This is not done to disregard the others who do participate and promote but out of a lack of understanding.
So I want to change that.
I would like to promote, equally, any organisation that does something for Perl. I am not going to go out and solicit the information, I could happily name a bunch of people[3] and still sound insulting as I missed people out. So I want you to send me some details and i will promote it around the various channels I have access to. In the Perl world that's a number of places.
Hopefully if we create a little noise we can make it outside of our community, but even if we don't we can at least point people at the when they ask who using something or doing something for the Perl community.
So what do I need from you?
Well this is easier than you think, I need some details and you have to supply some or all of what I ask, the more I have, the more I can edit into different formats. I need the vast majority in plain text so i can use it across different mediums.
If you work for a corporate organisation and don't know if you can get permission, don't stress, pass it to HR/Media with the words 'hey marketing monkey, free promotion, go go...'[4]
What I need?
Images can be any size and almost any format, make sure you own the copyright and can give me permission to use them elsewhere. I will not take any rights for the images themselves and will use them by the guidelines that you can supply.
Please ensure that text has as minimal formatting as possible. I will be setting it in a variety of places, some using fixed stylesheets, some using markdown so the smaller effort I have to get it into acceptable formats, the better. I would prefer it to be .txt, .md or other plain text format if possible.
From this I will tweet, facebook, Google+, blog (more than one location) create lists on community sites and if I feel that it would help get you on the front page of some community places. If we do this well enough I will also place them into a public Git repo and let people access them so that we can have a resource for others to show off.
If your Managerial Overlords need more you might want to tell them that this is free advertising and promotion, it will at least give them a higher profile. You can also tell them that they can supply usage guidelines to accompany any submission.
I look forward to you all making the effort.[5] If you have trouble commenting on this post just email me and we can discuss this further - use firstname.lastname@example.com.
[1] I am fairly sure we could keep adding to this list but this is as far as I got.
[2] Or loud ;)
[3] At random I could mention a dozen or more easily - Grant Street Group, cPANEL, Infinity Interactive, foo Magazin, CV Library, Blue Host, Perceptyx, BBC, NetBanx, Nestoria, Eligo, Perl Careers, Linode, Science Photo Library, netric, Smoothwall, Opus VL etc. - see, easy ;)
[4] Or words to that effect that are maybe not so insulting!
[5] If you all don't do anything it sure as heck gives me less work ;)
]]>I have spoken with Duke and Paul who performed magnificently for me, as always, and our plan going forwards is to move the planning and preparation to a rolling event. This means that we will start gathering more ideas, volunteers and approaching students now in preparation for 2016.
So although we have failed to get onto the programme in 2015, we can perhaps make a stronger effort for next year and subsequent years.
I would like to thank all those people who took the time and effort to help out with this year's attempt and to ask them not to get too downhearted as we will be using their hard work to guarantee success in the future.
[1] This year we were struck by a lot of timing issues and some problems with the wiki which meant re-doing the whole of the wiki.
]]>Larry already confirmed to come and it is a great honor for us to host him.
It's christmas time ;-)
Larry has announced that the Perl 6 Developers will attempt to make a development release of Version 1.0 of Perl 6.0 in time for his 61st Birthday this year and a Version 1.0 release by Christmas 2015.
This will be one of the last hackathons before September, 27.
Since this is a community event we are searching for sponsors who are willing to support this extraordinary event at Flörli in the lovely city of Olten, where the Swiss Perl Workshop 2014 took place as well.
Feel free to contact us in case you have any questions.
]]>The idea of the module is to allow Role users to import a role that defines a method that is already defined in the current package/object in a strict fashion. If the user declares that method will be overridden, it will work, if it doesn't, then an exception will be raised.
It was great to notice Ovid maintains a TODO list. It is not very clear what each item means, but I tried to ask him and understand. And as far as I could find, the first item of the TODO list seemed easy to implement. In fact, too easy. This Pull Request, as far as I can tell, could do the trick. But I lack knowledge on creating a test case.
So, in order to close this month's assignment, I am asking for comments, suggestions and any kind of constructive help on testing and fixing this pull request.
]]>I am happy to adopt these modules in the event that the original authors are unable or unwilling to continue maintaining them. I have what I think is a pretty good record in adopting modules while maintaining backwards compatibility and the original author's intent. Examples include Alien::LibYAML, Mojolicious::Plugin::TtRenderer, PkgConfig, String::Template, Test::Fixme.
I have at various times over the past year or so attempted to contact each author in order to see if they would be willing to grant me co-maint or ownership. The author of Term::EditLine told me via email he would give me ownership but never followed up on it. The other authors have not responded to multiple attempts at communication. It is possible that they simply did not receive my messages.
If you are the author of one of these modules could you please contact me via email at email@example.com (please, if you reply to this blog entry also send me email as I do not always get the notifications for this blog). If you know the author of one of those modules, and do not mind cajoling them into contacting me I would be immensely grateful.
Please do not send me a link to the CPAN or PAUSE FAQ. I have already read them. I followed it in good faith with both Term::EditLine and Win32API::ProcessStatus, and my emails to the modules mailing list were ignored.
edit: PerlIO::gzip now works with Perl 5.20.
]]>We want your experiences and talent to influence our architecture and our team. We've got a wide variety of projects to keep work interesting and fun, ranging from the epitome of legacy apps to self-contained services running on the latest and greatest of Modern Perl. Having an appreciation for the evolution of the Perl web development community will be your greatest asset in modernizing and growing our stack together with us.
If any of the below practices or technologies make you excited, apply at http://jobs.assurant.com/dallas/information-technology/jobid7063768-lead-software-engineer-jobs and come aboard – let's have fun! :)
P.S. Like contributing to CPAN? We support open source!
]]>For a start, I'm running two public classes on Wednesday March 4 and Thursday March 5,
in conjunction with Oslo.pm and Redpill Linpro.
On Wednesday, I'll be teaching the follow-up to my Perl Best Practices class (which we ran in Oslo several years ago). In this new course, Perl Even-Better Practices, I'm revisiting the guidelines that I first devised nearly ten years ago now, updating my advice and suggestions to reflect the huge number of changes both in Perl itself, and in the CPAN ecosystem, during the intervening decade. I'll be demonstrating and explaining 50 new guidelines, designed to make your Perl code even cleaner, safer, and faster.
Then, on Thursday I'm presenting OO Design for Perl. I'm quite excited to be able to give that particular class in Oslo. I don't often get the opportunity to offer it to the general public, but it's a course that I feel is particularly valuable to Perl developers...many of whom have been taught the raw syntax and mechanics of writing OO code in Perl, but who are rarely given any formal training on how to actually design software that's clean, efficient, maintainable, and genuinely object-oriented. Which is exactly what Thursday's class is all about. It's the "missing manual" on OO design...and specifically on designing for Perl's unique approach to OO.
There are still places available for either day, so if you happen to be in or near Oslo, and would like the chance to improve your Perl coding skills (whether OO or general), I'd love to see you in one or other of the classes.
But even if you can't make it to either training day, you can still catch me at the two free public talks I'll be giving on the evenings of Tuesday March 3 and Wednesday March 4. And, since both my daytime classes this year are about Perl 5, it's only fair that both my nighttime talks will be about Perl 6.
On Tuesday night, I'll be speaking at the Scotsman pub about the Perl 6 design process: how we went about developing this new language, why we made the choices we did, and what important (and often painful) project management lessons we learned along the way. It's a serious topic, but it's also a fun talk, and it will be delivered in a venue where you can legally drink enough beer to adequately cushion the inevitable shock and awe. ;-)
Then, on Wednesday night, I'll be giving a slightly less raucous talk about Perl 6 itself: demonstrating the most practical, useful, and non-terrifying features of the language...by examining the source code of a real-world Perl 6 application that I use every day. If you've every wondered why you should bother learning Perl 6, when Perl 5 already suits you so well, then this is definitely the talk for you.
I always have a great time in Norway, and I'm very much looking forward to each of these events. So, if you're a local Perl hacker, or even just passing through on your way to Narvik or Borealis or the World Cod Fishing Championships, I will hope to see you next week in Oslo.
]]>So I wrote a Perl script for the party. We picked an event keyword starting with a # character, and listened Twitter for tweets including that word. Then, we had different keywords for each team. Anyone who wanted to cast their vote would just tweet with event keyword + team keyword, and that would be it.
Image: People asking their followers to vote for their teams
We could have performed a basic search on Twitter Web, and then count the votes one by one, but that wouldn't be a smart solution. Hence the script. It was run for 15 minutes, and we captured 275 tweets with event hashtag which is about one tweet per 3 seconds. However, only 179 tweets were counted as 'valid vote', which is 65% of total tweets. But why did we ignore 96 tweets?
We've developed precautive measurements in the script so that no team can abuse the automated vote counting process. We did not count forwarded tweets (that is, a retweet), and there were 22 many. We counted only the first vote of each person. There were 32 tweets that had a note saying "This person has voted before!". We also checked for age of each account. If the account the vote is casted from is newly created, we did not count the vote. If the tweet is sent from an unofficial application, we ignored. And 41 tweets did not contain any team keyword (or had typos in it).
Although tested heavily, I was scared that it simply wouldn't work for no obvious reason. But it did! And it did a good job. The script is on GitHub, you can use it as you wish.
]]>It's been a little while since we had a release. We took longer this time because this release provides a few major improvements we wanted to mature.
With 13 contributors and 23 tickets closed, I'd like to present Dancer2 0.159000.
]]> There are three major changes in this release:Dancer2 now supports full asynchronous and streaming responses while remaining event loop agnostic. You can use whichever event loop you want. An example for its usage can be found in our Manual.
We will provide more examples in the near future.
The Manual and Cookbook have been revamped, thanks to the work of Snigdha Dagar, our OPW (Outreach Program for Women) contributor. This results in cleaner, clearer, and accurate documentation.
The removal of MIME::Types allows us to maintain a smaller core at a low price. We're using the MIME support from Plack now, and if you have MIME::Types installed, we will use it as a fallback.
A special thanks to anyone involved in this commit, especially the following people (in order of appearance in the Changelog):
Russell Jenkins, Lennart Hengstmengel, Nikita K, pants, Daniel Muey, Dávid Kovács, Graham Knop, Sawyer X, Alberto Simões, Snigdha Dagar, Omar M. Othman, Nuno Carvalho, and Vince W.
The full changelog for this release:
* GH #762: Delay app cleanup until errors are rendered. (Russell Jenkins)
* GH #835: Correct Logic error in Logger if no request exists.
(Lennart Hengstmengel)
* GH #839: Correct "no_server_tokens" definition in production.yml.
(Nikita K)
* GH #853, #852: Handle malformed (contentless) cookies. (pants)
* GH #840, #842: Ensure session data available to template engines.
(Russell Jenkins)
* GH #565, #847, #849: Fix HTTP Status template logic and documentation.
(Daniel Muey, Russell Jenkins, Dávid Kovács)
* GH #843: Add missing attributes to Moo class used in tests. (Graham Knop)
* GH #836: Support delayed (asynchronous) responses!
("Delayed responses" in Dancer2::Manual for more information.)
(Sawyer X)
* GH #824: Use Plack::MIME by default, MIME::Types as failback if available.
(Alberto Simões)
* GH #792, #848: Keywords can now use prototypes.
(Russell Jenkins, Sawyer X)
* GH #837, #838, #841: Major documentation restructure. (Snigdha Dagar)
(Check eb9416e9 and a78e27d7 for more details.)
* GH #823: Cleanup Manual and Cookbook docs. (Omar M. Othman)
* GH #828: Provide README.mkdn. (Nuno Carvalho)
* GH #830: Fix typo in Session::YAML pod. (Vince W)
* GH #831,#832: Fix broken link in Session::YAML pod. (Vince W)
More details in Release Notes:
I would like to thank our sponsor Enlightened Perl Organisation for resources provided to our project.
]]>DaveM now introduced a new OP_SIGNATURE which assigns run-time args according to the compiled signature.
It basically speeds up these compiled checks
sub f ($a, $b = 0, $c = "foo") {};
sub f {
die sprintf("Too many arguments for subroutine at %s line %d.\n", (caller)[1, 2]) unless @_ <= 3;
die sprintf("Too few arguments for subroutine at %s line %d.\n", (caller)[1, 2]) unless @_ >= 1;
my $a = $_[0];
my $b = @_ >= 2 ? $_[1] : 0;
my $c = @_ >= 3 ? $_[2] : 'foo';
into one OP, which does the same, similar to the new MULTIDEREF. Moving op chains into C. DaveM is now the goto guy for the big DWIM ops, compressing previous op chains into a single one.
This is far too much for a single op, but previously it was all handled either in ENTERSUB or in user code.
The arity checks should be done in the call op (ENTERSUB), the local assignment should be separate ops, we still have no syntax support for types which could be used previously in user-code (my int $i = $_[0];
) and now we even need type hooks. These can also be added after the SIGNATURE op, but make not much sense there, as side effects will appear to early.
XS calls do not need the checks as they do by their own, but XS calls are easily detected in ENTERSUB.
The assignment to local lexicals is now buried in this single OP, which makes it's now impossible to change the currently only supported call by value to the faster call by reference. I.e. there's still no support to declare call by ref
sub myinc (\$a) { $a++ }; my $i=0; myinc($i); print $i; # => 1
so you still have to use $_[0]
directly, which means @_
still needs to be filled with all args, which makes every signature usage still twice as slow as normal calls without signature declaration. Once for @_
in ENTERSUB and a second time for the named args in SIGNATURE.
So this new OP basically just hides this new slowness by design (blame Zefram for this idea) by bypassing the normal ops which assigned the locals.
Any optimizing compiler now needs to replace this new SIGNATURE op and cannot work on the optree. Fine, it cannot be used as is anyway.
Compiled or run-time polymorphism (dispatch on argument types) now needs to replace SIGNATURE and not ENTERSUB. There's not much difference, both are horrible ops to work with. SIGNATURE is probably easier to replace, but replacing ENTERSUB had its advantages by leaving out all the unneeded recursion, @_ and debugger code. So basically you have now to replace both.
Of course there's still no type support, and still no return type declaration syntax, though it seems the post declaration attribute list can now be used, as :const
is now supported, just for anonsubs only.
So real subs can soon look like:
sub myinc (int \$a) :int { $a++ }
and you can use the faster i_ops
for the result, and since it's a reference, for the lifetime of the caller variable.
Just don't expect that from p5p in the next 5 years. Only all the other dynamic languages, python, ruby, php, javascript announce these features officially, and I have to implement it in private.
p5p still has no idea what they are doing, but probably will also announce it as great breakthrough, as they did with the Zefram signatures before. Which is somewhat funny, announcing the worst of all existing signature implementations as positive. People bought that, so it will work now too.
So far the biggest breakthrough lately was besides the new fast METHOD ops (THANKS!), to go for the :const
attribute for subs (THANKS!), so the other syntax possibilities => type
or perl6 like returns type
or is ro
are now very unlikely to appear. This was a great decision, even if it was done unconsciously, and I can finally go forward.
[From my blog.]
]]>There's a lot of confusion about the thin controller/fat model advice which gets passed around. In fact, I've seen some developers get upset about the idea, claiming that it's the model which should be as thin as possible. I'll explain what's really going on and give some real-world examples, using code from Veure.
]]> Here's a common thing I see in test suites:my $mech = $test->get_mechanize;
'I should be able to fetch my stuff'
And then the test fails with a 500, dumping $mech->content
is painful and doesn't show the actual error, and you break out the debugger or print statements. After 15 minutes of messing around you discover that your $self->user
wasn't returning anything because you forgot to have your $mech
object log in, but if you had just seen the error in the first place, you would have known instantly what was going on.
Yeah, having that full integration test is nice, but it can really add some overhead.
Plus, it's often slow. Very slow. But you don't really have a choice because someone has packed so much logic into the controller that there's no easy way to test it without Selenium, Mechanize, or something similar. Sucks to be you.
So what is in that controller?
In Veure, you can "save" your character by paying money to clone it. Later, you if you die, your clone is restored. Creating a new clone is called "gestating" (and reverting to one "spawns" it) and some of the code looks like this:
my $guard = $self->result_source->schema->txn_scope_guard;
my $clone = $self->find_or_create(
character_id => $character->character_id,
station_area_id => $character->station_area->station_area_id,
foreach my $attribute ($character->cloneable_attributes) {
$clone->$attribute( $character->$attribute );
$clone->clone_date( DateTime->now );
If you have that code in your controller class, you've now tightly coupled your controller to DBIx::Class
and to test cloning, you have to go through your Web interface. Not good. Instead, push that logic into the model, perhaps in a resultset class, and make sure that your controller only calls that method. You can then test that logic without the Web interface and your tests will be faster and the error will show up quicker.
This is important. There are a number of times I need to check for the existence of NPCs in the code. Imagine if I had this in my controllers:
return $characters->search(
{ station_area_id => $station_area->station_area_id },
{ order_by => 'name' },
That doesn't seem too strange, but I don't want to duplicate that logic all over the place, particularly since it's wrong. It quickly became apparent that I only wanted to show characters that:
Had I duplicated character search throughout my controllers, sooner or later, that logic would get out of synch. At the current count, I have at least 15 places in the code where I need to know who is in a given station area. Fortunately, they all look like this:
my $characters = $c->model('DB::Character')->who($station_area);
(Yes, I'm sort of cheating by using resultsets for my model, but I'll fix it when it becomes unwieldy).
Now when I'm purchasing a new clone, my controller method used to look like this:
sub purchase : Local : Args(0) Does('NeedsLogin') {
my ( $self, $c ) = @_;
my $character = $c->current_character;
my $price = $c->config->{clone_price_per_level} * $character->level;
if ( $character->bank >= $price ) {
$c->add_message("A red pustule rapidly swells from the wall, your new clone floating inside it in the fetal position.");
else {
$c->add_message("We're very sorry, but you don't have enough credits to gestate a new clone");
That's too much code in the controller (and let's pretend I was using a transaction there, which I wasn't ... oops). But why did I have too much logic there? Because of those damned messages. I reasoned that the messages are used by Catalyst and the result classes shouldn't know what's being done with them. In fact, sometimes my code would jump through terrible contortions to return data and messages at the same time and I had to track the message passing carefully through the dbic layer. It was frustrating.
It was a code smell.
Messages are for one thing and one thing only: to tell you, the player, something relevant to your character. If there's no character, there's no message. Duh! That's when I did something just a wee bit unusual. In fact, it's a touch problematic, but it's tremendously made my code simpler: I'm using my Veure::Schema::Result::Character
class to store those messages "out of band", if you will. My code in that class sort of looks like this:
sub add_message {
my ( $self, $message ) = @_;
return unless $message;
push @{ $self->_message_store } => $message;
# otherwise, discard_changes() will wipe out my messages
sub discard_changes {
my $self = shift;
my $messages = $self->messages;
my $response = $self->next::method;
return $response;
sub clear_messages {
my $self = shift;
$self->_message_store( [] );
return $self;
And now, whenever something happens that my character needs to know about, I can just call $character->add_message("You have refueled your ship for $cost credits")
. I can save this data at the exact place the information is available and don't have to track down where it's generated at or pass it around anywhere. Inside of the Catalyst end
action, I fetch those messages and then clear them. Later when I feel guilty about storing this extra information in a dbic result object, I've encapsulated the hack well enough that I can store those messages somewhere else ... if I ever need to.
And that purchase
method above? It now looks like this:
sub purchase : Local : Args(0) Does('NeedsLogin') {
my ( $self, $c ) = @_;
$c->model('DB::Clone')->gestate( $c->current_character );
A very thin controller method indeed! In fact, quite a bit of code shrunk down just as dramatically as a result of this one change.
There's an interesting side benefit of removing all of the logic from the controllers and pushing them into the model layer: the controller is only a thin dispatching layer and the model is becoming a full-featured application in its own right. That means that later, if I want to build a phone app, it can talk directly to the application. If I wanted to create a command-line version of Veure, it can also talk directly to the application.
In other words, Veure can become something which is no longer a Web application, but a stand-alone MMORPG for which the Web site is merely one of many possible front-ends. That's a whopping huge amount of business value right there and it justifies thin controllers even if nothing else did.
There are still a few obstacles to getting to this point, but they're rapidly going away. Thin controllers are the way to go (just be careful and don't turn your model classes into god objects).
]]>We grabbed an open source POS system and identified all of the features it was missing that our client would need. Then it was 21 days of overtime and no days off. Back in the days of use.perl.org, I blogged about this hell almost every day. It was also, interestingly, the first project I wrote software tests for. The other main dev on the project was teaching me how Perl's testing tools worked and as the days went on, I found myself incredibly proud of seeing all of those tests pass and catching bugs I would not have otherwise caught.
Then disaster struck: we tried to actually run the software instead of just testing it. The Tk panels would appear, and then instantly crash again. Adding some debugging code showed that we had a bit of a mess because we unit tested the code. The different parts of the software were isolated in our testing. The individual bits worked fine, but they had no idea of how to talk to one another.
Passing bad data around is an incredibly common source of bugs. In Perl 6, this is not only easy to avoid, but the tools to do so are also far more powerful than most mainstream languages.
What follows is drawn from my Perl 6 for Mere Mortals talk.
]]> Recursion is often taught with the Fibonacci series. Some people hate that because they don't use the Fibonacci series, but from a teaching standpoint, it's useful because it's dead-simple to understand. Here's the mathematical description:F0 = 0 F1 = 1 Fn = Fn-1 + Fn-2
The recursive version looks like the following Perl 6 code:
sub fib($nth) {
given $nth {
when 0 { 0 }
when 1 { 1 }
default { fib($nth-1) + fib($nth-2) }
Note that the body of the given
block effectively mirrors the mathematical description. Thus, recursion can be a great way to cleanly write a function. However, recursion has three very common failure modes:
In the above, you can say fib(3.7)
and it we have an infinite loop because n-1 and n-2 will never match our base cases (though you'll blow the stack quickly). How would we handle that in Perl 5? Well, there's more than one way to do it:
sub fib {
die unless $_[0] =~ /^\d+$/;
sub fib {
die unless $_[0] == int($_[0]);
use Regexp::Common;
sub fib {
die unless $_[0] =~ $RE{num}{int};
Each of the above has multiple bugs lurking in them. You can have fun seeing if you can identify all of them. What's worse, this is what we often find:
sub foo {
my ( $self, $this, $aref, $hashref ) = @_;
# lots and lots of skipped validation ...
Validating our data in most dynamic languages is done in a very ad-hoc manner. In fact, it's often not done at all and we just hope that things work. In practice, they do. At 2AM when you're frantically trying to chase down where the bad data came from, you might find yourself cursing and wishing you had a stricter type system so that the bad data can be caught as soon as it occurs.
Perl 6 has that stricter type system. It's completely optional and called gradual typing. Basically, it works like this:
sub fib(Int $nth) {
given $nth {
when 0 { 0 }
when 1 { 1 }
default { fib($nth-1) + fib($nth-2) }
You see that Int $nth
in the signature? It's nice and simple. It's there if you want it, but you don't need to use it. It's also more likely to be used because it's so simple.
(As an aside: in Perl 5, a scalar internally has multiple "slots" to store data in different representations. By declaring the type of a variable, we no longer need to have as many slots and there are plenty of performance optimizations available.)
But what if we ask for fib(-3)
? There is no -3rd fibonacci number, so let's toss on a constraint:
sub fib(Int $nth where * >= 0) {
given $nth {
when 0 { 0 }
when 1 { 1 }
default { fib($nth-1) + fib($nth-2) }
It's the where * >= 0
bit we care about here.
The asterisk is an example of the Whatever type. When I see it, I like to read it as "whatever I got". So the argument is "an integer called $nth where whatever I got is greater than or equal to zero".
That's actually pretty easy to read and understand and, more interestingly, most mainstream computer languages simply don't support something like that. This will make it very easy to ensure we don't get passed bad data.
But it gets even better! The above gets clumsy if we have several arguments and it's not reusable. So let's pull that out into a subset that we can reuse wherever we need to declare a type.
subset NonNegativeInt of Int where * >= 0;
sub fib(NonNegativeInt $nth) {
given $nth {
when 0 { 0 }
when 1 { 1 }
default { fib($nth-1) + fib($nth-2) }
That's right. Using subsets, you can easily declare your own types on the fly. Other languages tend to allow this but require you to create a class to define your type. When using Perl 6 subsets, you'll find that having a full-blown class for every type you need is rather clumsy (that being said, everything is an object in Perl 6, but the sugary frosting is awesome).
As an aside, I predict that one of the most common subsets is going to be this one:
subset NonEmptyString of Str where *.chars > 0;
No more checking to see if the string is empty! Now you can just assert it and Perl 6 will check for you.
Or here's something that will come in very handy with an advanced ORM. What do you do if you have an field declared as a VARCHAR(255)
? Assuming that you don't want to allow empty strings and the data must be less than 256 characters:
subset FirstName of Str where 0 < *.chars < 256;
We can now create our own types on the fly to mirror what we have in our database. Somebody forgot to configure MySQL in strict or traditional mode? Who cares! No more silent truncation of our data in the database! I'm looking forward to ORMs which take advantage of this.
Getting back to our Fibonacci function, that code will blow our stack with larger numbers, so what do we do?
All recursive functions can be rewritten as iterative, but the larger the function, the harder that is to do. Plus, we lose the elegant simplicity of mirroring the mathematical definition and have to walk carefully through the code to see if the behavior is the same.
We could rewrite the function to handle the caching, but that gets ugly, is prone to bugs (as I had in my slides), and also obscures the intent of the code:
sub fib(NonNegativeInt $nth) {
state %fib_for;
unless %fib_for{$nth}:exists {
given $nth {
when 0 { return 0 }
when 1 { return 1 }
default { %fib_for{$nth} = fib($nth-1) + fib($nth-2) }
return %fib_for{$nth};
There are plenty of ways to deal with this, but Perl 6 provides caching natively:
sub fib(NonNegativeInt $nth) is cached {
given $nth {
when 0 { 0 }
when 1 { 1 }
default { fib($nth-1) + fib($nth-2) }
Nice! We now have a fairly powerful type constraint, easy-to-read code, and caching. No rocket science here. It just works.
Getting back to the huge class of bugs I was first talking about: different functions talk to each other and it's important that they send and receive the correct data. So let's look at this:
sub will-it-blend (NotAnAnimal $something) returns Bool {
if $something.does('Blendable') {
return True;
else {
return blend-it($something);
What does blend-it()
return? If it doesn't return a boolean, this code will throw a runtime error rather than risk silently corrupting your code. Part of the reason why tests are more common (and more verbose) in dynamic languages is because it's so hard to test the data being passed around. Integration tests are particularly bad at this. Now, it becomes trivial, though still optional.
So our Fibonacci function now looks like this:
sub fib(NonNegativeInt $nth) is cached returns NonNegativeInt {
given $nth {
when 0 { 0 }
when 1 { 1 }
default { fib($nth-1) + fib($nth-2) }
That's powerful, expressive, and very, very easy to read. It's not nearly as difficult as people are worrying about.
Many people who are working on Perl 6 are pretty excited about what it can do, but when you read blog posts about using red-black trees in Perl 6, your eyes tend to glaze over the same way mine do when someone starts yammering on about football statistics.
Perl 6 is big and yes, there are complex corners of it, but those are often for the hard tasks. In your day-to-day code, it won't look any more difficult than any other language. In fact, just like any new language you learn, you'll start with "baby Perl 6" and gradually move on to more complicated code.
Grab rakudobrew and check out Perl 6 today.
]]>I found 'MetaCPAN Helper' on the Chrome Web Store however using it caused google to pop up a page about me being redirected whenever I clicked on a CPAN link costing me a few extra seconds to get where I wanted to go. Like many of you I thought this was unacceptable so a little while back I created my own extension that does not have this issue.
What the extension does is rewrite all search.cpan.org url's to search.mcpan.org without any tracking, annoying popups, or redirect pages.
Hopefully this will help some of you out. If you have any issues or features you would like to add you can do so at: https://github.com/bvierra/chrome-metacpanredirect/issues or send me a pull request.
Source Code is available at: https://github.com/bvierra/chrome-metacpanredirect
Extension is available at: https://chrome.google.com/webstore/detail/meta-cpan-redirect/blakeebdldmplhhegjofiaidnijmiphj
]]>I'll add what little knowledge I have on the topic:
]]>This optimization was added twenty years ago, it has little to no benefit now and makes the code difficult to deal with as well as falsifying test coverage metrics. It needs to go. Given the legacy sprawl of CGI.pm there may be bugs lurking; if you're using CGI.pm please test this release. The DEV release is available on CPAN:
I'm noting this here in the hopes that it will get out onto the blogosphere and then beyond for any users of CGI.pm that this may affect. If you do use it, test it, and it breaks somehow then please raise an issue on github.
I'm going to let the DEV release sit on CPAN for a while (a few weeks, a couple of months maybe) until it has made its way through cpantesters and long enough to allow people to test it. I will also be notifying bugzilla, twiki, et al.
More information can be found in the Changes file for the current DEV release, along with links to the relevant github issues.
]]>If the grant does not finish within three times of the proposed duration or within two years, the grant will be considered a failure.
First of all, it should be noted that it won't affect most grants (see the reason 2).
Reason 1: Budget structure & allocation to new grants
TPF does not allow over-allocation of the budget. If we have 3 x $3,000 grants running and our budget is $9,000, no more grants can be funded.
If a grant worth $3,000 is running for five years, this $3,000 is stuck in the TPF safe. Even if we get good proposal, we cannot fund it using this money.
The aim is to increase liquidity of the fund.
Reason 2: If a grant runs more than a year, chance of failure increases
During 2009-2013, we managed 17 grants. Here is the breakdown:
Grant | Result | Proposed | Actual |
A | Success | 4 | 4 |
B | Success | 6 | 7 |
C | Success | 4 | 12 |
D | Success | 3 | 5 |
E | Success | 6 | 9 |
F | Success | 2 | 5 |
G | Success | 3 | 3 |
H | Success | 4 | 2 |
I | Success | 1 | 11 |
J | Success | 3 | 8 |
K | Success | 2 | 5 |
L | Success | 4 | 9 |
M | Failure | 3 | 12 |
N | Failure | - | 13 |
O | Failure | 7 | 41 |
P | Failure | 3 | 26 |
Q | Failure | 3 | 32 |
(Proposed/Actual: Duration in months. The grant N did not estimate duration)
Statistically, all the grant failed if they ran for more than a year. And except for the grants C and I, all of them failed after running more than 2.5 times of the proposed duration.
Would like to have your feedback.
]]>Note: The CPAN.io Pulse also has a post about what follows.
]]> Yearly contestsI was always interested in seeing the "past yearly contests" (i.e. before 2012), mostly because I knew I fared well then... ;-) And just like the main contest pages show the currently active competitions, I thought it would be interesting to be able to see all past yearly games at once.
This is now available for all competitions.
While working on this, I also got interested into the "top periods" for CPAN uploads. And so CPAN.io now has some leaderboards that are not pitting authors against each others, but time periods instead.
These boards are part of the "gamification of CPAN" trend that NEILB is steering towards the betterment of CPAN. We have more ideas beyond the existing boards, all with a goal of friendly competition that encourages behaviours which improve CPAN.
Thanks to Plack and Wallflower, the CPAN.io web site is both a dynamic website (in development) and a static website (in production). So if you're more interested in playing with web sites than distributions, please fork the CPANio repository, take a look at (or submit) some issues and send us nice pull requests.
]]>In the second round of the Pull Request Challenge, I was assigned Olson::Abbreviations. At work, we've been bitten by the ambiguity of the EST timezone, so I liked the general idea of the module. Moreover, there were some test failures reported at CPAN Testers Reports, so the task was clear: Make all the tests pass!]]> FAIL or PASS
The module had only 5 failures in non-development versions of Perl, contrasting with more than 1500 good test results. Therefore, I was able to analyse the failure reports one by one easily.
The first error reported was usually a variation of
Odd number of elements in hash assignment at C:/strawberry163/perl/vendor/lib/MooseX/ClassAttribute.pm line 37.
What all the failed reports shared was the version of the dependent MooseX::ClassAttribute: 0.26. And indeed, when I checked its Changes, it said:
0.27 2013-03-28 - The latest Moose release (2.08) broke this module. This release fixes MooseX::ClassAttribute to work with both new and old Mooses. Reported by Jonathan Stowe. RT #84263.
At that point, I was almost sure the fix would be simple: just require version 0.27 of the dependency. However, I wanted to be sure I didn't miss something, so I decided to analyse the PASS reports as well.
How does one fetch 1500 reports from CPAN testers? I searched for some API, but the only advice I got was to download the whole 2GB database. So, I decided to scrape the site gently.
I used WWW::Mechanize to get the report list. From there, I extracted individual reports using HTML::TableExtract. I only downloaded reports for stable Perl versions.
After downloading the first few reports, I discovered they were coming in two flavours. In one of them, the dependencies are reported in the following way:
Module Name Have Want Moose 2.1403 0 MooseX::ClassAttribute 0.27 0.25
while, in the other, the order of the columns is different:
Module Need Have ---------------------- ---- -------- Moose 0 2.1403 MooseX::ClassAttribute 0.25 0.27
Also, I noticed the version 0.26 was present in one of the PASS reports. Therefore, I extracted Moose version from the reports, too, to verify Moose older than 2.08 could work with 0.26 without problems.
Here is the full code:
use warnings;
use strict;
use feature qw{ say };
use List::Util qw{ sum };
use WWW::Mechanize;
use HTML::TableExtract;
use Data::Dumper;
my $url = 'http://static.cpantesters.org/distro/O/Olson-Abbreviations.html';
my $mech = 'WWW::Mechanize'->new();
my $te = 'HTML::TableExtract'->new( keep_html => 1,
headers => [ 'Grade',
'Perl version',
'OS name',
'OS version',
my $table = ($te->tables)[0]; # Recent module verision only.
my %reports;
for my $row ($table->rows) {
my $perl_version = $row->[1];
my $major = (split /\./, $perl_version)[1];
next if $perl_version !~ /^5\.[0-9]+\.[0-9]+$/
or 1 == $major % 2; # Stable Perls only.
my $link = ($mech->links)[0];
push @{ $reports{ $link->text } }, $link->url;
my %version;
my $count = 0;
my $all = sum(map scalar @$_, values %reports);
for my $result (sort keys %reports) {
for my $url (@{ $reports{$result} }) {
my $report = $mech->content;
my $pos = $mech->content =~ /Module\s+Need\s+Have/ ? 1
: $mech->content =~ /Module Name\s+Have\s+Want/ ? 0
: undef;
unless (defined $pos) {
warn "Can't find module version for $url.\n";
my $mxca = ($mech->content =~
my $moose = ($mech->content =~ /Moose\s+(\S+)\s+(\S+)/)[$pos];
my $deps = "$mxca + $moose";
print STDERR ++$count, ' / ', $all,
" ($result $deps $version{$result}{$deps}) \r";
sleep 1; # Let the server breathe.
say STDERR q();
say "MooseX::ClassAttribute + Moose";
print Dumper \%version;
And here is the result I got after 45 minutes:
MooseX::ClassAttibute + Moose $VAR1 = { 'FAIL' => { '0.26 + 2.0800' => 2, '0.26 + 2.1005' => 2 '0.26 + 2.1204' => 1, }, 'PASS' => { '0.26 + 2.0402' => 1, '0.26 + 2.0602' => 1, '0.26 + 2.0603' => 3, '0.26 + 2.0604' => 309, '0.27 + 2.0604' => 4, '0.27 + 2.0801' => 70, '0.27 + 2.0802' => 16, '0.27 + 2.0900' => 2, '0.27 + 2.1001' => 2, '0.27 + 2.1004' => 2, '0.27 + 2.1005' => 231, '0.27 + 2.1100' => 4, '0.27 + 2.1101' => 5, '0.27 + 2.1102' => 7, '0.27 + 2.1103' => 5, '0.27 + 2.1105' => 1, '0.27 + 2.1106' => 2, '0.27 + 2.1107' => 2, '0.27 + 2.1201' => 3 '0.27 + 2.1202' => 191, '0.27 + 2.1203' => 2, '0.27 + 2.1204' => 148, '0.27 + 2.1205' => 33, '0.27 + 2.1206' => 84, '0.27 + 2.1209' => 2, '0.27 + 2.1210' => 1, '0.27 + 2.1211' => 3, '0.27 + 2.1213' => 234, '0.27 + 2.1303' => 1, '0.27 + 2.1304' => 8, '0.27 + 2.1400' => 6, '0.27 + 2.1401' => 13, '0.27 + 2.1402' => 28, '0.27 + 2.1403' => 18, } };
Only one report didn't contain the versions at all. As you can see, my assumption was correct: 0.27 works with any Moose version, but 0.26 need pre-2.08 Moose to work.
My pull request just changed the required version in Makefile.PL:
requires 'MooseX::ClassAttribute' => '0.27';
And the same in the module itself:
use MooseX::ClassAttribute 0.27;
I pondered the possibility to allow the old version of MooseX::ClassAttribute if Moose was old, but I decided against it. It would just duplicate the work introduced in 0.27.
is a must all your Moose classes. ( edit, ht ribusushi: never immutate your moo classes, it'll inflate them into Moose classes automatically thus defeating the point). Here's a stark reminder of why.
I was doing some benchmarks on a web application that I've been moving from mod_perl
to plack. Here's the performance of 350 requests forking off in batches of 7 before I remembered to make_immutable
$ time perl 002-hammer_lightly.t
# Total number of requests = 350
real 1m11.095s
user 0m3.003s
sys 0m1.336s
And after:
$ time perl 002-hammer_lightly.t
# Total number of requests = 350
real 0m17.075s
user 0m2.202s
sys 0m1.160s
One line of code, nearly 5-fold performance improvement. And despite the shim upon shim I had to make to move the thing off modperl, it seems to be two to three times faster than the modperl app (using an apples to pears comparison method anyway).
]]>Starting with the official channels:
The first and foremost way to find out what's happening with YAPC is yapcna.org. The home page of the conference site contains a news banner that will take you to recent announcements. It also has a list of links to places you might want to subscribe to receive information.
But wait, there's more...
]]>You may also want to keep an eye on The Perl Foundation blog. We do post information about YAPC::NA to TPF's blog, though usually only the most important news is posted there.
The Perl Foundation also has both Facebook and Twitter channels. If you frequently use either of those social media, you should consider subscribing yourself to The Perl Foundation to receive updates.
There are also less official channels. Here's an incomplete list of outlets that were used by organizers past to distribute news about YAPC. These should be considered unreliable ways of getting information about YAPC.
The YAPC discussion e-mail list held dual roles for several years as both an official announcement list and a forum for attendees to discuss and self-organize activities. But now, the list serves only as a forum for discussion. This was done in response to requests to get e-mail updates about the conference without needing to receive the higher volume discussions that sometimes follow.
There is also a #yapc channel on irc.perl.org. There are often organizers in the channel that can either answer questions for you, or point you at the right place to get answers. Other times, the channel is used for general discussion. Please note that the channel has its own Standards of Conduct policy maintained by the IRC server admins, which is different from the YAPC SOC.
There is a YAPC blog site that was used for a couple years. But since ACT (the conference website) also has its own built in blog, it was confusing to have two different news blogs for the same event. As a result, this is being deprecated in favor of the news entries on the YAPC::NA home page. Some entries about Salt Lake exist, but you shouldn't count on this as a reliable way to find out what's happening.
The is also a @yapcna twitter feed that you can subscribe to. However, this mostly just re-tweets the information being sent out by @perlfoundation.
Likewise, there is a yapcna facebook page. But, it was rarely used for anything. We are in the process of merging it in with the Perl Foundation page. So, you can expect this to go away soon.
There may be other channels that I don't even know about. YAPC has a rich history of reinventing itself. Sometimes this can be a strength. But when it comes to communications, it is usually a weakness. We're putting in a lot of effort to correct that now. By both consolidating communications channels as well as formalizing our communications process, we hope to build a more consistent communications experience going forward. Because as much as you hate it when you can't find out about Perl events, we hate it even more. :-)
I looked for several systems, but none suited me well, so I've written my own very simple solution with the name 'curry' (it is named after delicious indian dish, not after Haskell Curry =)
Here is the source code — https://github.com/bessarabov/curry
The system is a web server that is powered by Dancer and the system is bundled into an image with Docker.
I really like this way of creating web apps with Dancer & Docker. Every time there is a new commit in git report Docker Hub automatically builds new image.
Here is the power of Docker, to run curry you need to install Docker and when you have docker installed you need to enter just one (!!!) command to have curry up and running:
docker run --publish 15000:3000 bessarabov/curry:1.0.0
This command downloads image from Docker Hub and runs it. This will create
web server on port 15000 on your Docker (in case of linux the Docker usually
works on 127.0.0.1, is case of mac you can find our Docker ip with the command
boot2docker ip
and in case of windows read the docs).
This way of running is super simple and it works pretty well to play a bit with this project, but in production you should do several more things. First of all you need to create persistent storage for curry. Curry stores all its data in sqlite database stored in file. To make persistend storage you should store that file outside the docker container (more details in the docs). The other thing that you may like to do in prodoction environment is to add authorization and to run it on https.
So, we have curry up and running, I would like to show several real life examples.
Setting the object with the name 'zero_inbox' to 'ok':
curl -H "X-Requested-With: XMLHttpRequest" "http://curry:15000/api/1/set?path=zero_inbox&status=ok&expire=1d"
You can see that we also specified "expire=1d". You must specify this parameter with your first request. The "X-Requested-With" header is used to prevent CSRF attacks.
Let's set one more object:
curl -H "X-Requested-With: XMLHttpRequest" "http://curry:15000/api/1/set?path=jenkins&status=fail&expire=1d"
So now we have information about statuses of two object. Curry has several endpoints that allows get information about current situation.
With endpoint "get" you can get info about all objects with problems:
curl -H "X-Requested-With: XMLHttpRequest" "http://curry:15000/api/1/get"
It will return:
"success" : true,
"result" : {
"status" : "fail",
"objects" : [
"path" : "jenkins",
"status" : "fail"
True value for "success" tells us that endpoint worked fine and gave us answer that we can see in "result" value. "result.status" is "fail" that means that we have some objects with statues "fail" or "unknown". In the "result.objects" we have an array with the broken objects.
There is also an endpoint "get_all". It has the exact answer structure, but gives information about all objects:
curl -H "X-Requested-With: XMLHttpRequest" "http://curry:15000/api/1/get_all"
"success" : true,
"result" : {
"status" : "fail",
"objects" : [
"path" : "jenkins",
"status" : "fail"
"path" : "zero_inbox",
"status" : "ok"
Lets set that jenkins is fixed (as you can see for the second request we can not specify "expire"):
curl -H "X-Requested-With: XMLHttpRequest" "http://curry:15000/api/1/set?path=jenkins&status=ok"
Now we have two objects in curry and all of them have "ok" status. We can check that with "get" endpoint:
curl -H "X-Requested-With: XMLHttpRequest" "http://curry:15000/api/1/get"
"success" : true,
"result" : {
"status" : "ok",
"objects" : []
There is one more endpoint in curry that allow inspecting the current situation. It is endpoint "get_object" that returns all known info about the object:
curl -H "X-Requested-With: XMLHttpRequest" "http://curry:15000/api/1/get_object?path=jenkins"
"success" : true,
"result" : {
"path" : "jenkins",
"status" : "ok",
"expire" : "1d",
"history" : [
"status" : "fail",
"dt" : "2015-02-09 14:23:23"
"dt" : "2015-02-09 14:33:41",
"status" : "ok"
So this is all that curry can do. It is just a simple storage of the objects statuses. There is no webinterface — one can use JSON endpoint and add it to existing dashboards.
So, here is my tiny project and I would be extremely happy to hear from you what do you think. Please you the comments, or write GitHub Issue or email me.
]]>use 5.010;
package F;
sub new { bless {}, shift }
sub me { $_[0] = 'surprise!' }
my $f = F->new;
say $f;
say $f;
]]>DFW.pm challenged its members with the following exercise:
Pivot a multi-row/multi-column table, 4X4 in size for example, containing name-value pairs. Code should account for larger table sizes with any number of name-value pairs. Numbering the pairs is optional but encouraged for readability. An example would be as follows:
1. name | tommy | 5. pet | fish
2. lang | Perl | 6. kids | four
3. eyes | blue | 7. food | pizza
4. lbs | n/a | 8. hello | world
1. name | tommy | 2. lang | perl
3. eyes | blue | 4. lbs | n/a
5. pet | fish | 6. kids | four
7. food | pizza | 8. hello | world
If you happened to read my previous post, you'll know that I'm not one to seek the most terse solution to a problem. In fact, for this exercise I was most interested in specifications left unspoken:
It turns out (as usual) there are a plethora of modules dating back to the relatively far past to handle tabular data. There are an equally impressive number of modules to handle pagination. While I could (maybe should) have used any number of these solutions in conjunction with one another to write a script to solve the challenge, I had a very specific contract in mind for the way objects would be treated when the table was rendered; And thus, I decided to add yet another data-table-paginator-whatsit to an already crowded namespace.
The result of this effort is Data::PaginatedTable, and here is the script that uses this new fangled module to solve the DFW.pm exercise.
#!/usr/bin/env perl
use 5.18.2;
use Modern::Perl;
use Data::PaginatedTable;
use Moops;
class Tabifier {
use overload '""' => 'tabify';
has 'key' => ( is => 'ro', isa => Str, required => true );
has 'value' => ( is => 'ro', isa => Str, required => true );
method tabify {
"\t" . $self->key . "\t" . $self->value;
my $key_value_pairs = [
[qw( name tommy )], [qw( lang Perl )],
[qw( eyes blue )], [qw( lbs n/a )],
[qw( pet fish )], [qw( kids four )],
[qw( food pizza )], [qw( hello world )],
my @data =
map { Tabifier->new( key => $_->[0], value => $_->[1] ) } @$key_value_pairs;
my $pt = Data::PaginatedTable->new(
data => \@data,
columns => 2,
rows => 4,
string_mode => 'preformatted',
fill_direction => 'vertical'
say $pt;
# name tommy pet fish
# lang Perl kids four
# eyes blue food pizza
# lbs n/a hello world
say $pt;
# name tommy lang Perl
# eyes blue lbs n/a
# pet fish kids four
# food pizza hello world
I used overload to have the string context of a Data::PaginatedTable instance return the current page of the table, with each of the table's elements also stringified. As the script demonstrates above, table content objects may also employ string overload to dispatch a rendering method that is appropriate to themselves. This pattern can be applied to nested objects (turtles all the way down!), thereby making each object in the hierarchy responsible for its own display logic and creating a nice separation of concerns.
Using overload let's you extend Perl DWIMmery convenience to your own classes. If you've never seen what all it can do for you, have a look!


text:
community gardening; lacto-fermentation
Cooking vegan meals with local & organic ingredients for groups
through a friend in my community.
Resident of Medford MA, gardener, environmentalist, mostly vegan, and artist. I'm happiest in the kitchen, reading, and making mosaics.
Meetup members, Log in
By clicking "Sign up" or "Sign up using Facebook", you confirm that you accept our Terms of Service & Privacy Policy