text:
Good News for the Educated and Concerned Consumer
You can set your mind at ease about the products you purchase with a simple scan of the CERTENTIC QR Code on each product unit.
It looks like this:
Pirated products are flooding the consumer market in ever larger numbers. Just because a product bears the brand name you've come to know and trust, does not mean that it's the real article. It could be something that was made in a blacklisted factory with unknown ingredients that can potentially sicken you. Blacklisted factories have been identified as human rights abusers and users of child labor and dangerous working conditions.
How does it work?
You can simply scan the QR-Code on a package or an article using your mobile device. You can use your standard QR-code app. No special app needs to be installed.
You will then see details about the scanned article.
Here are some of the things you will see:
- That it is the genuine brand article and not a counterfeit product.
- Where it was made.
- Its ingredients.
- That it is not supporting blacklisted suppliers.
- That it is not supporting child labor.
- All of the manufacturer's certifications (organic and otherwise).
- Product reviews on social media.
- Links to blogs or vlogs discussing the product.
- Links to the manufacturer's Facebook and Twitter pages where you can ask any additional questions you may have and get answers quickly.
Do you still have a question? Then just click on the tweet-Button and send a Tweet using your Twitter account.
The brand owner or other consumers can instantly give an answer. And you can be confident in your buying decisions.
So from now on, when you are shopping and wondering about a product you are about to purchase, wonder no more. Look for the CERTENTIC QR-code and tell all your friends to do the same.
Of course, we respect your data privacy. To learn more about how we collect and use your data, visit our data privacy page.


text:
Will Michael Vick play this week despite a badly bruised hand?
The Eagles quarterback took the first step towards being in uniform Sunday when he participated in a walkthrough on Wednesday morning. He was also expected to fully practice with the team during the afternoon session.
Vick suffered a hand contusion (originally called a broken hand) in the Eagles' 29-16 loss to the New York Giants on Sunday. But Philadelphia coach Andy Reid says the swelling is down.
Vick's availability for Philadelphia's home game vs. San Francisco (2-1) is not yet decided, yet Wednesday's participation is a positive sign for him.
Vick himself seems more positive on his status for Sunday.
"I think there's a 100-percent chance I'll be out there this weekend," Vick told reporters.
Though still early, Vick and his "Dream Team" find themselves at 1-2 and in last place in the NFC East, as the Giants, Redskins and Cowboys are all 2-1.

subset: commoncrawl


text:
10 Fun Facts About Volvo
10 things you should know about Sweden's most famous automaker
Volvo means "I roll" in Latin, conjugated from "volvere", in reference to ball bearings. The brand name Volvo was originally registered as a trademark in May 1911 with the intention to be used for a new series of SKF ball bearings. This idea was only used for a short period and SKF decided to simply use "SKF" as the trademark for all its bearing products


text:
This is Part 1 of a five part series:
- Introduction (you are here)
- Encryption and Hashes
- Simple Hashes and Collisions
- Reduction Functions
- Rainbow Tables and Chains
In January, I took the SANS Security Essentials (401) class at SANS West. In the class, we briefly covered the concept of rainbow tables. Rainbow tables are (superficially) just password lookup tables: if you know the encrypted password, you can look it up in the table and get the unencrypted password. (The word 'superficially' there is critical – rainbow tables are far more interesting than simple lookup tables.)
One of the evening sessions (after the boot camp session) featured Ed Skoudis talking about penetration testing. He also talked about rainbow tables. What really caught my attention was his discussion of chains to vastly reduce the size of the tables. The chains provide a clever way to trade off table size at the cost of some processing time. I just had to understand the details, and I didn't have the patience to wait until some day in the future when I might take Ed's Pen Testing class. I cornered Ed at the bar on the last night, asked how he would recommend learning them, and he pointed me to Wikipedia.
The wikipedia article is great, but a bit tough to read for someone new to the concept. Fortunately, the article refers to another article, How Rainbow Tables Work, which is a bit easier. It also is a good article, and the two were all I needed to help me build some samples of my own in order to really understand the concepts.
In this series of posts, I will attempt to provide an even easier introduction to rainbow tables. I hope that the posts will help you understand the other articles, and appreciate the beauty of the approach.
I've broken the discussion into six parts, so that you can skip any bits that are already familiar to you. This introduction is Part 1. Part 2 briefly talks about encryption and introduces the concept of hashes. Part 3 looks at some really simple hashing algorithms, including the one used for the examples here. Part 4 goes into reduction functions. Finally, Part 5 explains rainbow tables and chains. If you understand that password encryption uses hashes and are familar with common hashes like MD5 and SHA-1, you can probably jump right to Part 5, and then read the other parts if you want to fill in any gaps.
These posts contain simple examples that you can work through yourself with a spreadsheet. I have built one for you, which you can view using Google Docs or download to Excel. I encourage you to play with the values in the spreadsheet if you really want to get a deep understanding of how each part works.
If you've never used Google Docs before, it has the equivalent of Excel's tabs. At the bottom, you'll see links that will take you to the different pages. You also can select File – Export – .xls to export it into an Excel Spreadsheet, and you'll find all the tabs there.
- Introduction
- Encryption and Hashes (next)
- Simple Hashes and Collisions
- Reduction Functions
- Rainbow Tables and Chains


text:
With the recent opening of the summer transfer window for English clubs, Wessex Scene provide you with a mini series of who we think will be coming and going for all the Premier League teams from A-Z. The first of this series covers Arsenal to Chelsea, with Sean O'Brien giving his thoughts on who will be in and out the door this summer.
Arsenal are currently putting the final touches on the big move that is on everyone's lips: Petr Cech. At 33 years old, Cech is and will be a wonderful signing for the Gunners who have struggled to find a world class keeper since the days of Jens Lehmann. Cech has proved when called upon this season that he is still more than capable of performing at the highest level, and for me he is almost certainly in the top five goalkeepers in the league.
Another rumour is that Wenger is lining up a £13 million move for Argentinean defender Ezequiel Garay. The former Real Madrid man would be an ideal replacement for Per Mertesacker. The German's experience has been crucial to Arsenal's back line; stabilizing what became known as Arsenal's main area of vulnerability. Garay's pace and skill will allow him to merge into Arsenal's traditionally silky style of play, whilst bringing the experience to guide young players such as Hector Bellerin.
Many pundits, like Thierry Henry, have discussed the Gunners' need to bring in a top class striker. I would disagree. On his day, Olivier Giroud is up there with the top strikers in the Premier League. His goal scoring record despite missing a significant part of the season through injury is outstanding, and his hold up play works to bring Arsenal's flair players into the game, thus making them all the more effective. If Wenger can keep him fit, he's Arsenal's man up top.
Aston Villa
As far as Villa are concerned, it looks as though they might be staring a Southampton-style exodus in the face, as the entire spine of their starting eleven might be on the move. City look keen to activate a release clause in Fabian Delph's contract which would see the England International leave Villa Park for only £10 million. Delph has arguably been Villa's outstanding player this season and played a crucial role in keeping the Midlands club in the league, he would be a huge loss.
Christian Benteke, who couldn't stop scoring towards the end of the campaign under Sherwood, also has a release clause in his contract. His goals were arguably the difference between Villa and the likes of Hull, and they would be incredibly difficult to replace. Liverpool are rumoured to be interested, however the asking price of £30 million might deter Rodgers. Personally I think £30 million for a proven Premier League goal scorer is good value in this day and age.
The end also appears to be nigh for Villa captain Ron Vlaar, with several clubs circling the Dutch International. Another huge loss, Villa's defence looks shaky at the best of times and could become even more unstable with his departure. If Sherwood does let him go, bringing in two centre backs must be made his main priority.
Potentially coming into Villa Park is Spurs winger Andros Townsend, who appears to have played for almost everyone in his time at White Hart Lane. It was clear in the FA Cup final that Villa lacked flair on the wings, with Charles N'Zogbia having a particularly dreadful day.
Bournemouth have been doing some fantastic business recently, bringing in real talent and strengthening their starting eleven at relatively little cost. The loan signing of Christian Atsu will bring International class to the squad, only adding to their selection of exciting young players players that performed so glitteringly in the Championship last season.
The club also secured the £8 million signature of Ipswich defender Tyrone Mings, a club record transfer fee. At 22 years old and after a very impressive start to life in the football league, this could prove to potentially be one of the bargains of the summer. While it may have been wiser to splash the cash on a defender who has proven themselves in the Premier League, it is refreshing to see young players rewarded with big moves to Premier League clubs after performing so well in the lower leagues. All the best to him and Bournemouth in their first season at the top!
It appears as though even when your squad is youthful and title worthy, Mourinho still finds himself at the centre of transfer speculation. We have already discussed the potential departure of Petr Cech and it is rumoured that the Portuguese manager is looking into bringing in Rob Green to replace him.
Cech will be sorely missed, as both a first and second choice keeper. If Courtois was injured for a Champions League final, Chelsea fans could rest assured that Cech would almost certainly not put a glove wrong. I'm not sure how similar the feeling would be were Rob Green to go between the posts. He is a very talented keeper, but you do get the impression there is a mistake in him. QPR vs Chelsea last season for example, giving the ball away to Hazard in the dying minutes.
Radamel Falcao of course is the final topic of discussion. Spare a thought for Loic Remy. Absolutely outstanding when called upon, giving PFA Player of the Year nominee Diego Costa a run for his money at times, yet he faces being replaced as second choice by a striker who has had a truly woeful time over the past year. That being said, none of us need reminding of what Falcao can do, and few would argue with Mourinho's tact in the transfer window.


text:
Compact fluorescent light bulbs (CFLs) are poised to replace those familiar incandescent bulbs we've been using since electricity became a household necessity.
Among their benefits:
The quality of CFLs continues to improve. Early versions of fluorescent light bulbs were an odd white color, took a long time to light up when you flicked the light switch and gave off a buzzing sound. Today's CFLs are smaller, come on almost instantly, appear close in color to the traditional incandescent bulb and are silent.
A few drawbacks:
Rosie's recommendation: Replace at least one incandescent bulb in your home with a CFL today. Once you get used to it, you'll probably appreciate the cool-to-the-touch bulbs, which are more energy efficient so they allow you to be kinder to the earth.


text:
Results Based Digital Marketing
We are the specialists of digital marketing in Scandinavia/Nordic. Through proven digital marketing strategies we give our clients maximum exposure in the Scandinavian / Nordic market.
SearchOur SEO services are aimed at enhancing your website visibility across the search engines using ethical techniques.
PPCOur quality PPC campaigns guarantee relevant traffic, high conversions and low cost.
CreativeWe design & develop websites that engage your visitors, reduce bounce rate and increase conversion rate.
Our Services
Nordic / Scandinavia SEO
We are amongst the very few agencies fully specialized in Scandinavian / Nordic SEO. We help our clients achieve high visibility and targeted traffic from Scandinavian searches.
Scandinavia Link Building
We can carry out quality content marketing campaigns for all major Scandinavian regions that can help you earn natural links
Scandinavia PPC Services
We are offering PPC campaign management for Sweden, Norway, Denmark, and Finland. All the campaigns are managed by Google qualified native PPC experts
Social Media Management
We help you strategize, set up and implement results driven social media campaigns across the Scandinavian / Nordic region.
Interactive Web Design
We design and develop fresh, modern, responsive and user centered websites, that give an enormous boost to your business.
Translation Services
We provide professional translation services in all major Nordic languages including Swedish, Danish, Norsk and Finnish.
Our Blog
February 5 likes
New Ad Label from GoogleBy Martina Allen | PragoMedia Blog
Google has rolled out a new Ad label globally by replacing the previous solid green version. The new ad label comes with a green outline and white background.
February 5 likes
Catch up your favorite recipe easily with enhanced Google recipe AppBy Martina Allen | PragoMedia Blog
With Google latest version of recipe search on the Google App you can now easily search for your favorite receipe with a carousel of tappable suggestions.


text:
"Steve Newman's perspective as a Green Beret combat veteran brings truth and realism to his characters in ways that non-fiction simply cannot. As reflected in his writing, serving on a Special Forces team begins as an assignment, but the crucible of combat elevates teammates to brothers."
John L. Plaster, Author – SOG: The Secret Wars of America's Commandos in Vietnam
Burnt Yellow and Red is more than a terrific story of the unsung heroes of the Global War on Terror – the warriors of the United States Special Operations Forces. It tells the story of the heart of these warriors, something that few people outside the brothers on their team ever get to know. While these truly Special warriors are "larger than life", they also have a love and caring for their families and each other that only those who have gone into battle can ever achieve. Steve Newman has captured this love and the heart and spirit of these warriors in Burnt Yellow and Red – it is a MUST read for ALL Americans!
Jeff Falkel Gold Star Father, Author of "The Making of Our Warrior
Congratulations to the author who continues to tell "more than a war story", by revealing the hearts, lives and dreams of the men and women who serve us. No frills, no fuss, just the "real thing".
Joyce Godwin Grubbs author, The Greyhound Lady Walking Series
Steve Newman's latest novel, "Burnt Yellow and Red," is a real break through in stories about the U.S. Army Special Forces (SF), The Green Berets. He shows who they are and how they work through the eyes of a Air Force Special Operations Command airman who understands the mission but has to gain an understanding of the SF operational detachment. This distinctive point of view shows a side of SF that is seldom seen – the view of the outsider. Newman crafts a tale, based on his own SF career as a Green Beret. This unique novel shows Special Forces soldiers and Special Operations airmen for who they really are: the guys who grew up next door and went on to become something extraordinary. I recommend this book to the long-time veteran, the guy who is looking to go to Special Forces School, or any American who wants to understand the greatest soldiers who ever walked the face of the earth.
CWO3 Tom Merrill, Special Forces (Retired)


text: Quad-Wire Label Holder Quad-Wire Label Holders Quad-Wire Label HoldersDoes your store display merchandise using multiple wire hook diameters? Then you need the Quad-Wire Label Holder -- designed to fit just about every style scan hook! The back of the quad-wire label holder has four slots to handle several wire diameters. The smooth front label surface provides superior adhesion for adhesive price tags. The quad-wire label holders are 1.25" tall and available in 2" or 3" widths.Quad-Wire Label Holders lock securely on the following wire diameters: .126.96.36.199.250Sold in boxes of 100 ProductPriceQuantity SPECIAL Quad Wire Label Holder,2"W x 1.25"H (RQ-2) $12.28 Quad Wire Label Holder,3"W x 1.25"H (RQ-3) $17.36 Your Cart Related Products Anti-Sweep Scan Hooks Fastback Scan Hook - Heavy Duty Single Arm Scan Hook - Heavy Duty


text:
Moorhuhn Knights & CastlesNintendo Switch
when you buy this game digitally.
You may also use Gold Points toward this purchase. Close x
points Learn more
Action-packed artillery game featuring Moorhuhn (Crazy Chicken) at its best!
Finally, Moorhuhn strikes back! Get set, aim, fire ... and never neglect your own cover. Fight against the AI, your friends ... or your enemies! Pure Moorhuhn action!
• Action: Aim and hit with a variety of weapons and magic!
• Construction: Build your own castle complete with walls, shields, towers, cannons, catapults or mighty mages!
• Defense: Turn your Scottish Moorhuhn clan's residence into the most impregnable fortress in the Highlands!
• Progression: Upgrade your castle and weapons by up to 18 levels!
• Single-player: Pursue the evil Clan Chief and defeat him in epic battles!
• Multiplayer*: Compete against players from around the world and win gold and trophies.
• Live duels*: Challenge your friends directly and fight for glory ... and gold!
• Looting*: Try to secretly rob other players.
• Recognition*: Let everyone see what you've got in the high-score table.
Single-player: The game features an extensive 36-part campaign with challenging battles taking place in the Scottish Highlands, in an icy landscape and near lava-spewing volcanoes. Fit out the seat of your clan to build a mighty and prestigious fortress, and upgrade it continuously with better weapons and defense facilities. Pursue the evil Clan Chief from one battle to another, and grow stronger and more powerful. You start out with a small shack, but you will soon be able to improve and expand each element of your residence. Eventually, you will become the lord of an extensive castle, able to withstand heavier attacks. You can play the campaign battles as often as you wish, for an unlimited time.
*Multiplayer: COMING SOON! Join the battlefield now, start building up your castle and developing the best strategy, and you will get a FREE Feature Pack with several multiplayer options in Spring 2019.
Looting: Catch random opponents all around the world off-guard by attacking and stealing from them whenever you want. This feature is a real challenge for gamers who enjoy competing with real-life opponents as well.
Live multiplayer: Play fast, action-packed duels against your friends in real time. Just agree on a password, and you are ready to play. Fight for gold and collect as many crowns as possible. The crowns are the multiplayer reward, determining how high you climb up the leaderboard. Weekly and all-time rankings show who is the No. 1 king in the Highlands.
The multiplayer mode requires a network connection, while single-player campaigns can be played offline.
Community: With more than 15 million games sold, Moorhuhn is the best-known and most successful German game character. With "Moorhuhn Knights & Castles," developed specially for the Nintendo Switch, the Chicken opens a new chapter and hits the charts once again. Join the large Moorhuhn community!
Ready to accept the challenge? Then download "Moorhuhn Knights & Castles" NOW! Start building your castle, choose the right weapons and defeat your enemies in this ultimate artillery strategy simulation to become the strongest of all kings!
Moorhuhn speaks English, Dutch, French, German, Italian, Japanese, Portuguese, Spanish and Russian.
- Platform
- Nintendo Switch
- Release Date
- Jan 11, 2018
- No. of Players
- 1 player
- File Size
- Category
- Strategy, Action, First-Person, Multiplayer
- Publisher
- Young Fun Studio
- Developer
- Young Fun Studio
- Supported Play Modes:
TV mode
Tabletop mode
Handheld mode
*If eligible for a Just for You offer, the final price reflects the combined Sale and Just for You offers. The Just for You offer is discounted from the sale price.
© 2017 Young Fun Studio. Moorhuhn and Crazy Chicken are registered trademarks of ak tronic Software & Services GmbH. The character of the Moorhuhn is based on a graphical work of Ingo Mesche from the year 1998.
Questions about buying digital games?
To purchase digital games directly from Nintendo.com and send them to your Nintendo system, you'll need a Nintendo Account. For Nintendo 3DS and Wii U systems, you'll also need to link your Nintendo Account with your Nintendo Network ID.
For step-by-step instructions by system, please click here.
You'll need a Nintendo Switch, Wii U, or Nintendo 3DS family system, a Nintendo Account (registered for use in the U.S. or Canada), Internet connection, and Nintendo eShop access to download the game once you've purchased it.
For help downloading a game, click here.
Yes. As long as you have signed up for My Nintendo before you purchase the game, your game will qualify for My Nintendo Points. My Nintendo Points are automatically awarded to the Nintendo Account that was used to purchase the game. (Please note that DLC items, passes, and themes do not qualify for My Nintendo Points.)
To see your My Nintendo points balance:
- Visit http://my.nintendo.com
- Select "Sign in."
- Sign in to your Nintendo Account.
Once you're signed in, you can review your My Nintendo points balance and history, check out the latest My Nintendo rewards, and view active missions you can complete to earn My Nintendo points.
You may also use My Nintendo Gold Points to purchase games for Nintendo Switch. Learn more about Gold Points.
For additional help with My Nintendo, please visit our support site.
All sales are final. Please be sure that you meet all of these download requirements for your game before you place your order.
For additional information, please see the Purchase Terms.
Download codes are codes for specific digital games or content for Nintendo Switch™, Wii U™ or the Nintendo 3DS™ family of systems.
You can redeem your code here and send the content directly to your system.
You may also redeem your code via the Nintendo eShop on your system. For step-by-step instructions, select your system: Nintendo Switch, Wii U or Nintendo 3DS.


text:
I've been trying to use an example that appears in the following link: http://www.mysticcoders.com/blog/autocomplete-with-an-object/
the trouble is nothing happens... when start typing something in the text field nothing happens. i debugged and it seems that the builder & renderer are not fired.
can someone please tell me why nothing happens?
I'm using Wicket 6.2.0 version.


text:
Walk a Mile in Her Shoes 2010
April 15, 2010
Fifty-five pairs of red shoes were worn by men at Washington College for "Walk a Mile in Her Shoes," the international men's march to stop rape, sexual assault, and gender violence.
The men walked from Martha Washington Square to Fountain Park in Chestertown, MD. Alisha DiGiandomenico '10 was the principal organizer of the event.
Last modified on Nov. 5th, 2012 at 4:11pm by .


text:
Stop in at M & J Marine and you will instantly surround yourself with Quality, Professionalism, Pride & Excellent Customer Service……the way it should be. We have been building great customer relationships for over over 101 years now and that's how we became Central Wisconsin's Volume Boat Dealer. No matter how you like to enjoy your time on the water, we are here for you with our wide variety of premier product lines for all passions. Customer satisfaction is easy to achieve when you love what you do, hope to see you soon 🙂
We all enjoy our time on the water in our own way, plenty of waterways in this beautiful state to share. Most of our staff are fisherman but there are a select few that love to spend their days Wakeskating, Wakesurfing, Watersking, Tubing, or just crusin around enjoying the sweet sunshine. No matter how you like to soak up the sun we have you covered with our premier line of Yamaha Sport Boats. We also offer a line of tubes, ropes, PFD's, pumps, and anything else you need to have a fun filled family day on the water.
Did someone say Fishing? We are lucky to be living where some of the best fishing spots are in our own back yard. Add 2 of the best Aluminum fishing boats known to exist…Alumacraft & Lund and invite a few of your closest friends & family and you have whipped up the perfect recipe to relax the day away…in style!
If you are into duck hunting make sure to stop in and say hi. With modified V's from Alumacraft we can get you into the boat that will get you way back into the marshes. Let us know if the ducks are flying.
Serious fisherman? Yep, you heard that correct. We have some of the most talented and focused fisherman in the country right here in Central Wi. Some of our customers make their living fishing and we provide the best tools for a hard days work! Lund and Alumacraft boats are proven tournament winners and we are proud to be able to offer them here at M & J Marine. Whether your a small guide service going out 4-5 times a month or you fish tournaments non-stop from spring to fall we are proud to keep you on the water with our Factory Trained Techs & State of the Art Service Facility, we are ready when you need us.


text:
Munnu Bhai is a very informative and talented personality. He discussed a beautiful topic of our politics. I was afraid to read huge poems. It was happened before when I didn't read a book of a Great Turkey Poet "Human Landscape". Sohail Warraich wrote a wonderful book on the life and martyr of Benazir Bhutto. Name of this book is Qatil Kon Hai. We have known about them. Both Sir Bhutto and his daughter earns huge fame. They were much familiar not only in home state but all over the world. Zulfiqar and his daughter not only our past leaders. But they arranged a new way of politics for the future prospects. In this book, you can read very dangerous aspect of Qatil Kon Hai. It realized that our secret agencies and investigating authorities were left plenty of department to be holy. Benazir reputation is world recognized. At the time of her death, it was difficult to acknowledge that, it happens. Complete column related to this topic is given below in Urdu. You can read it here and can know what writer wanted to say.
Munno Bhai's Urdu Column Sohail Waraich Ki Book Qatil Kon
May 27, 2011 Munno Bhai No Comments


text:
Catch Patagonia Ambassador Timmy O'Neil at the MBC
If you're headed to Chamonix this weekend, there's a rare treat waiting for all of our Patagonia Europe brethren and sistren: globe-trotting, big-wall sending, down-town first-ascent bagging funnyman, Timmy O'Neil will be at the world-famous MBC (micro brasserie de chamonix) this Saturday 17 january at 9 p.m.
What will he be talking about? Who knows!? That's part of the fun of a Timmy show. Past shows have included everything from first-ascent attempts in the far reaches of Baffin Island to unroped "buildering" ascents of towers of the more urban kind (think college dormitories). What is certain is how difficult it is to watch Timmy's classic presentations without big laughs and good times.
With snow returning to the valley's forecast, this weekend's a great time to head for the mountains. Safe travels, and enjoy the snow and show!


text:
Creamy Baked Leeks with Garlic, Thyme, and Parmigiano
Photo by Scott Phillips
- 2 tsp. lightly chopped fresh thyme
- 1 cup heavy cream
- 1/3 cup finely grated Parmigiano-Reggiano
- Kosher salt
- 2 large cloves garlic, smashed and peeled
- 8 medium-large leeks (ideally with several inches of white)
- 1 tsp. unsalted butter
Heat the oven to 350°F. Rub the bottom of a shallow 10x15-inch (or similar) rectangular baking dish with the butter. Sprinkle 1/4 tsp. salt over the bottom of the pan. Cut the dark-green portion and all but about 1 inch of the light green off the top of the leeks. Peel away any tough or damaged ...
You also might like
Baked Grits with Country Ham, Wild Mushrooms, Fresh Thyme, and Parmesan Recipe
Tuscan Bean Soup with Prosciutto and Grated Parmigiano-Reggiano Recipe
Orzo with Lemon, Garlic, Parmigiano & Herbs Recipe
Roast Chicken with Olives, Garlic, and Thyme Recipe
Garlic Crostini with Spinach, Mushroom & Parmigiano Salad Recipe
Herb & Parmigiano Crusted Tilapia with Quick Tomato Sauce Recipe
Rigatoni with Red Pepper & Parmigiano Cream Sauce Recipe
Fricassee of Game Hen with Creamy Leeks and Vadoum Recipe
Baked Pasta with Cream & Parmigiano Reggiano Recipe
Spaghetti with Creamy Braised Garlic and Leeks Recipe
Best Wine Deals
$16.9615% offInama Colli Berici Carmenere Piu 2010
$17.9528% offClos du Bois Chardonnay Calcaire 2012


text:
Building Eclipse plugins and RCP applications with Tycho
This tutorial provides an introduction to Tycho and first hand experience in how to use Tycho
to build Eclipse plugins and RCP applications.
Tycho provides Maven plugins and tools for building OSGi bundles and other Eclipse artifacts.
In this tutorial, developers will learn how Tycho provides seamless integration with Eclipse PDE tools and allows them to reuse project metadata created with Eclipse PDE
tools in automated headless builds.
After a short introduction and demo, we will do step-by-step hands-on exercises starting from a Hello-World RCP plug-in up to packaging an installable RCP application archive
with custom branding and for multiple platforms.
After this tutorial, you will be able to integrate Eclipse plugin and RCP application builds into an existing Maven-based build infrastructure,
and you will be able to build, release, and provision OSGi bundles and Eclipse artifacts using familiar Maven development strategies.
- Attendees are expected to be familiar with PDE tools and eclipse plugin / RCP development in general
- We will hand out USB sticks with exercises and required software
This tutorial is an updated and improved version of the one given at EclipseCon 2012.
Slides are on slideshare, tutorial instructions and solutions are on github
Schedule info
Copyright © 2012 The Eclipse Foundation. All Rights Reserved.


text:
Advanced Search |
Search Tips
Get the Latest Window Film Deals sent to your inbox!
Below are the available bulk discount rates for each individual item when you purchase a certain amount
Ideal for removing decals, film or adhesive from sensitive surfaces. Use for pressing down small film creases or air bubbles.
We promise to never spam you, and just use your email address to identify you as a valid customer.
This product hasn't received any reviews yet. Be the first to review this product!
All prices are in USD
Copyright 2019 Tinter's Depot.
Sitemap |


text:
For an outstanding patient experience for all types of bone, joint and musculoskeletal conditions, trust your care to the Minnesota Center for Orthopaedics team with three fellowship-trained surgeons.
For smooth access to comprehensive treatment of gastroesophageal disease, choose a trusted team of reflux specialists at the Minnesota Reflux and Heartburn Center at Riverwood in Aitkin.
For personalized healthcare for your entire family, from birth through senior years, trust our Riverwood team of experienced family practitioners.
For an awesome obstetric care experience from prenatal care through birth and delivery, choose Riverwood as a trusted leader for mothers-to-be.


text:
Did you know that the NHS is one of the largest employers in the world? And, with 1.5 million staff, it is the biggest in Europe.
UHMBT offers a huge range of exciting and challenging opportunities for people who are passionate about making a difference. With more than 350 different career options across the health and social care system, there is a job for you at Morecambe Bay!
You can enter the NHS whatever your background, previous work experience and qualifications. And once you join UHMBT, we have links with local education and training providers so can work with you to develop your career, and fulfil your potential.
There are lots of ways to get into an NHS role, whether it's joining direct from school, as an apprentice or after higher education. Or you can make the move from another sector.
Take a look at the information within the 'Work with us' section of our website to find out more.
Updated November 2018


text:
Crypto-API Released
September 7, 2010
Crypto-API (hackage, haddock) 0.0.0.1 is now on Hackage.
Crypto-API is a generic interface for cryptographic operations, platform independent quality Entropy, property tests and known-answer tests (KATs) for common algorithms, and a basic benchmark infrastructure. Maintainers of hash and cipher implementations are encouraged to add instances for the classes defined in Crypto.Classes. Crypto users are similarly encouraged to use the interfaces defined in the Classes module.
Previous blogs on crypto-api have discussed its design and the RNG interface. These were to aid design discussion, so note the code there won't work without minor changes.
Example: Hashes
An example class instance:
instance Hash MD5Context MD5Digest where outputLength = Tagged 128 blockLength = Tagged 512 initialCtx = md5InitialContext updateCtx = md5Update finalize = md5Finalize
The hash user can remain agnostic about which type of hash is used:
authMessage :: Hash ctx dgst => B.ByteString -> MacKey -> dgst -> Bool authMessage msg k = (==) (hmac' k msg) hashFile :: Hash c d => FilePath -> IO d hashFile = liftM hash L.readFile
Example: Block Cipher
Users of block cipher instances probably want to use Crypto.Modes:
import Crypto.Classes import Crypto.Modes (cbc) import Data.Serialize (encode) cipherMsgAppendIV :: (BlockCipher k) => k -> B.ByteString -> IO B.ByteString, cipherMsgAppendIV msg = do iv <- getIVIO return $ B.append (encode iv) (cbc k iv msg)
Example RNG
Its easy to get a DRBG (aka PRNG) that can be used for generating seed material for keys, building asymmetric keys, obtaining initialization vectors, nonces, or many other uses. See Crypto.Random (which users System.Crypto.Random for entropy):
newGenIO :: CryptoRandomGen g => IO g genBytes :: (CryptoRandomGen g) => g -> ByteLength -> Either GenError (ByteString, g) getIV :: (CryptoRandomGen g, BlockCipher k) => g -> Either GenError (IV k, g) buildKeyPair :: CryptoRandomGen g => g -> BitLength -> Maybe ((p, p), g)
A quick peek in the Test.Crypto module will show you that testing is decent (particularly for AES) and getting better all the time.
Given a BlockCipher instance the entire test code for an AES implementation is:
-- Omitting hack-job instances for SimpleAES in this snippet main = do ts <- makeAESTests (AESKey $ B.replicate 16 0) runTests ts
This automatically reads in hundreds of NIST Known Answer Tests (KATs) and checks the implementation. A lesser infrastructure exists for testing Hashes. Cipher property tests are still needed.
Example: Benchmarking
As with tests, benchmarking is quite simple:
import Data.Digest.Pure.MD5 import Benchmark.Crypto import Criterion.Main main = defaultMain [benchmarkHash (undefined :: MD5Digest) "pureMD5"]
So please, if you maintain a hash, cipher, or other cryptographic primitive please add instances for the crypto-api classes. If you need these primitives then consider using the crypto-api interfaces, allowing you to remain algorithm and implementation agnostic in all your low level code.
A Better Foundation for Random Values in Haskell
September 2, 2010
RandomGen – The Old Solution
Mathematicians talk about random bits and many programmers talk about streams of random bytes (ex: /dev/urandom, block cipher counter RNGs), so its a bit odd that Haskell adopted the RandomGen class, which only generates random Ints. Several aspects of RandomGen that are non-ideal include:
- Only generates Ints (Ints need to be coerced to obtain other types)
- By virtue of packaging it is often paired with StdGen, a sub-par generator
- Mandates a 'split' operation, which is non-sense or unsafe for some generators (as BOS pointed out in a comment on my last post)
- Doesn't allow for generator failure (too much output without a reseed) – this is important for cryptographically secure RNGs
- Doesn't allow any method for additional entropy to be included upon request for new data (used at least in NIST SP 800-90 and there are obvious default implementations for all other generators)
Building Something Better
For these reasons I have been convinced that building the new crypto-api package on RandomGen would be a mistake. I've thus expanded the scope of crypto-api to include a decent RandomGenerator class. The proposal below is slightly more complex than the old RandomGen, but I consider it more honest (doesn't hide error conditions / necessitate exceptions).
class RandomGenerator g where -- |Instantiate a new random bit generator newGen :: B.ByteString -> Either GenError g -- |Length of input entropy necessary to instantiate or reseed a generator genSeedLen :: Tagged g Int -- |Obtain random data using a generator genBytes :: g -> Int -> Either GenError (B.ByteString, g) -- |'genBytesAI g i entropy' generates 'i' random bytes and use the -- additional input 'entropy' in the generation of the requested data. genBytesAI :: g -> Int -> B.ByteString -> Either GenError (B.ByteString, g) genBytesAI g len entropy = ... default implementation ... -- |reseed a random number generator reseed :: g -> B.ByteString -> Either GenError g
Compared to the old RandomGen class we have:
- Random data comes in Bytestrings. RandomGen only gave Ints (what is that? 29 bits? 32 bits? 64? argh!), and depended on another class (Random) to build other values. We can still have a 'Random' class built for RandomGenerator – should we have that in this module?
- Constructing and reseeding generators is now part of the class.
- Splitting the PRNG is now a separate class (not shown)
- Generators can accept additional input (genBytesAI). Most generators probably won't use this, so there is a reasonable default implementation (fmap (xor additionalInput) genBytes).
- The possibility to fail – this is not new! Even in the old RandomGen class the underlying PRNGs can fail (the PRNG has hit its period and needs a reseed to avoid repeating the sequence), but RandomGen gave no failure mechanism. I feel justified in forcing all PRNGs to use the same set of error messages because many errors are common to all generators (ex: ReseedRequred) and the action necessary to fix such errors is generalized too.
In Closing
The full Data.Crypto.Random module is online and I welcome comments, complaints and patches. This is the class I intend to force users of the Crypto API block cipher modes and Asymmetric Cipher instances to use, so it's important to get right!
GHC on ARM
January 19, 2010
During my "Linux Kernel Modules with Haskell" tech talk I mentioned my next personal project (on my already over-full plate) would be to play with Haskell on ARM. I'm finally getting around to a little bit of playing! Step zero was to get hardware so I acquired a touchbook – feel free to ignore all the marketing on that site (though I am quite happy with it) and just understand it is the equivalent of a beagleboard with keyboard, touch-pad, touch screen, speakers, wifi, bluetooth, two batteries, more USB ports, and a custom Linux distribution.
Step 1: Get an Unregistered Build
To start its best to bypass the porting GHC instructions and steal someone elses porting effort in the form of a Debian package (actually, three debian packages). Convert them to a .tar.gz (unless you have a debian OS on your ARM system) using a handy deb2targz script. Now untar them onto your ARM system via "sudo tar xzf oneOfThePackages.tar.gz -C /" . Be sure to copy the package.conf as it seems to be missing from the .debs "sudo cp /usr/lib/ghc-6.10.4/package.conf.shipped /var/lib/ghc-6.10.4/package.conf". After all this you should have a working copy of GHC 6.10.4 – confirm that assertion by compiling some simple test programs.
I now have my copy of 6.10.4 building GHC 6.12.1. The only hitch thus far was needing to add -mlong-calls to the C options when running ./configure. With luck I will soon have an unregistered GHC 6.12.1 on my ARM netbook. I'll edit this post tomorrow with results (yes, I'm actually compiling on the ARM and not in an x86 + QEMU environment).
Step 2: Get a registered build – upstream patches
This is where things become more black-box to me. I want to make a native code generator (NCG) for GHC/ARM. There are some decent notes about the RTS at the end of the previously mentioned porting guide and there is also a (up-to-date?) page on the NCG. Hopefully this, combined with the GHC source, will be enough but I'll probably be poking my head into #ghc more often.
Step 3: Write more Haskell
The purpose of all of this was to use Haskell on my ARM system. Hopefully I'll find time to tackle some problems that non-developers will care about!
Lightweight USB Framework for AVRs (LUFA)
December 8, 2009
Lately I've been killing off course requirements by taking project based courses. Happily, Bart Massey offered a Linux device driver course that gave me an opportunity to get my hands dirty in the embedded world again. The project was to make an AVR based USB gadget do something… anything. Most prior experience with µCs was with Rabbits – a fitting name seeing as the useful and higher level libraries seemed to multiply like rabbits. Unfortunately, the AVRs didn't have any apparent high level library for USB; many of the examples used commented byte arrays as USB descriptors. While understandable, this feels harder to debug, ugly, and just generally wrong. Enter LUFA.
LUFA is a high-level USB library for AVRs generously released under MIT. It has considerable documentation, but no real guide stating what the bare-minimum functions are for any new/custom gadget – this is my attempt at providing such a guide. After you verify your AVR is supported by LUFA go ahead and download LUFA to an includes directory for your project. All code here is made possible by LUFA and its included examples – I'll only claim to being the original author of any and all bugs.
My Device
Before going any further you should have an understanding of what your device will do, how many and what type of USB endpoints it will use (BULK, INTERRUPT, CONTROL, ISOCRONOUS), and what driver will support it. If you are making something that will use a generic driver, such as a HID, then you probably can stop here as there is plenty of code for you to use – this post is aimed at people making custom devices.
I'm using a Teensy 2.0 with three bulk interfaces (two OUT one IN). One OUT provides commands to the gadget, which will change its state. Another OUT will send jobs to the gadget and the final IN will read the results of those jobs. This requires a custom driver which I and several other folks developed for course work.
The Makefile
Its probably safe for you to rip-off one of the makefiles from an example in LUFA/Demo/Devices/LowLevel/. Noitice several of the defines change the API, defines I used for this post/project include:
-DUSB_DEVICE_ONLY # Saves space if you only need gadget-side code -DNO_STREAM_CALLBACKS # Changes the API to exclude any callbacks on streams -DINTERRUPT_CONTROL_ENDPOINT # So you don't have to call USB_USBTask() manually on a regular basis -DUSE_FLASH_DESCRIPTORS # Save RAM, leave these in the Flash -DUSE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_AUTO_PLL)"
EDIT: All the makefiles I've seen are broken, they don't properly track dependencies, so either fix that or be sure to 'make clean' prior to each build.
When your gadget is plugged in its going to have to enumerate its interfaces by sending descriptors to the host. Start by declaring a global USB_Descriptor_Device_t along with Language, Manufacturer and Product structures:
USB_Descriptor_Device_t PROGMEM DeviceDescriptor = { .Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device}, .USBSpecification = VERSION_BCD(01.10), .Class = 0xff, .SubClass = 0xaa, .Protocol = 0x00, .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE, .VendorID = 0x16c0, .ProductID = 0x0478, .ReleaseNumber = 0x0000, .ManufacturerStrIndex = 0x01, .ProductStrIndex = 0x02, .SerialNumStrIndex = USE_INTERNAL_SERIAL, .NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS }; USB_Descriptor_String_t PROGMEM LanguageString = { .Header = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String}, .UnicodeString = {LANGUAGE_ID_ENG} }; USB_Descriptor_String_t PROGMEM ManufacturerString = { .Header = {.Size = USB_STRING_LEN(3), .Type = DTYPE_String}, .UnicodeString = L"JRT" }; USB_Descriptor_String_t PROGMEM ProductString = { .Header = {.Size = USB_STRING_LEN(13), .Type = DTYPE_String}, .UnicodeString = L"Micro Storage" };
You'll also need a descriptor that enumerates your interfaces and endpoints. Seeing as this is specific to your project, and C is a significantly limited language, you'll need to make a quick structure declaration then fill that structure:
typedef struct { USB_Descriptor_Configuration_Header_t Config; USB_Descriptor_Interface_t Interface; USB_Descriptor_Endpoint_t DataInEndpoint; USB_Descriptor_Endpoint_t DataOutEndpoint; USB_Descriptor_Endpoint_t CommandEndpoint; } USB_Descriptor_Configuration_t; USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = { .Config = { .Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration}, .TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t), .TotalInterfaces = 1, .ConfigurationNumber = 1, .ConfigurationStrIndex = NO_DESCRIPTOR, .ConfigAttributes = USB_CONFIG_ATTR_BUSPOWERED, .MaxPowerConsumption = USB_CONFIG_POWER_MA(100) }, .Interface = { .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, .InterfaceNumber = 0, .AlternateSetting = 0, .TotalEndpoints = 3, .Class = 0xff, .SubClass = 0xaa, .Protocol = 0x0, .InterfaceStrIndex = NO_DESCRIPTOR }, .DataInEndpoint = { .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | BULK_IN_EPNUM), .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), .EndpointSize = BULK_IN_EPSIZE, .PollingIntervalMS = 0x00 }, .DataOutEndpoint = { .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_OUT | BULK_OUT_EPNUM), .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), .EndpointSize = BULK_OUT_EPSIZE, .PollingIntervalMS = 0x00 }, .CommandEndpoint = { .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_OUT | COMMAND_EPNUM), .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), .EndpointSize = COMMAND_EPSIZE, .PollingIntervalMS = 0x00 } };
So now you see I have a device with a single interface and three bulk endpoints (two OUT and one IN). Remember, in USB terminology OUT means from the HOST to the GADGET while IN means from the GADGET to the HOST. While there is a direction to these channels, USB 1.0 and 2.0 BULK communications start with the host sending a message to the device (i.e. IN endpoints are polled) and the device should always respond. Now that we have descriptors lets be sure to send them when the host tries to enumerate the device.
uint16_t CALLBACK_USB_GetDescriptor (const uint16_t wValue, const uint8_t wIndex, void **const DescriptorAddress) { const uint8_t DescriptorType = (wValue >> 8); const uint8_t DescriptorNumber = (wValue & 0xFF); void* Address = NULL; uint16_t Size = NO_DESCRIPTOR; switch (DescriptorType) { case DTYPE_Device: Address = (void*)&DeviceDescriptor; Size = sizeof(USB_Descriptor_Device_t); break; case DTYPE_Configuration: Address = (void*)&ConfigurationDescriptor; Size = sizeof(USB_Descriptor_Configuration_t); break; case DTYPE_String: switch (DescriptorNumber) { case 0x00: Address = (void*)&LanguageString; Size = pgm_read_byte(&LanguageString.Header.Size); break; case 0x01: Address = (void*)&ManufacturerString; Size = pgm_read_byte(&ManufacturerString.Header.Size); break; case 0x02: Address = (void*)&ProductString; Size = pgm_read_byte(&ProductString.Header.Size); break; } break; } *DescriptorAddress = Address; return Size; }
With this, and calling USB_Init() when your device starts up, you should have a gadget that is properly enumerated by the matching driver. Once a configuration is selected we need to configure the endpoints, but after that we can finally send and receive data!
void EVENT_USB_Device_ConfigurationChanged(void) { int i,succ=1; succ &= Endpoint_ConfigureEndpoint(BULK_IN_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_IN, BULK_IN_EPSIZE, ENDPOINT_BANK_SINGLE); succ &= Endpoint_ConfigureEndpoint(BULK_OUT_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_OUT, BULK_OUT_EPSIZE, ENDPOINT_BANK_SINGLE); succ &= Endpoint_ConfigureEndpoint(COMMAND_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_OUT, COMMAND_EPSIZE, ENDPOINT_BANK_SINGLE); LED_CONFIG; while(!succ) { LED_ON; _delay_ms(1000); LED_OFF; _delay_ms(1000); } for(i = 0; i < 5; i ++) { LED_ON; _delay_ms(50); LED_OFF; _delay_ms(50); } }
Now to handle any data on the endpoints, you'll probably want to tight loop around code that checks each endpoint, reads data, and performs some action:
if (USB_DeviceState != DEVICE_STATE_Configured) return; Endpoint_SelectEndpoint(BULK_IN_EPNUM); if (Endpoint_IsConfigured() && Endpoint_IsINReady() && Endpoint_IsReadWriteAllowed()) { do_something(state, data, &len); err = Endpoint_Write_Stream_LE((void *)data, len); // FIXME handle err Endpoint_ClearIN(); } Endpoint_SelectEndpoint(BULK_OUT_EPNUM); if (Endpoint_IsConfigured() && Endpoint_IsOUTReceived() && Endpoint_IsReadWriteAllowed()) { err = Endpoint_Read_Stream_LE(data, len); do_other_thing(data, len); Endpoint_ClearOUT(); } Endpoint_SelectEndpoint(COMMAND_EPNUM); if (Endpoint_IsConfigured() && Endpoint_IsOUTReceived() && Endpoint_IsReadWriteAllowed()) { usb_cmd_t cmd; err = Endpoint_Read_Stream_LE(&cmd, sizeof(usb_cmd_t)); update_state(cmd); Endpoint_ResetFIFO(BULK_IN_EPNUM); Endpoint_ResetFIFO(BULK_OUT_EPNUM); Endpoint_ClearOUT(); }
And that's the whole deal. Some things to take note of:
1) I don't know why I needed Endpoint_ResetFIFO() – my results lagged by one message without them but I feel certain this is not the correct way to fix the issue. Perhaps I need to reset the endpoints some time after configuration and before use, but I'm not sure which callback to use for that, if that's the case.
2) C needs phantom types. Many of these functions aren't intended for use with CONTROL endpoints. See the LUFA documentation for which functions to use if you have non-BULK endpoints.
3) Be sure to number your ENDPOINTS starting at 1 (the *_EPNUM values). I've seen unusual behavior when numbering started higher – not sure if that was against standards or not.
At a minimum, you must declare a "USB_Descriptor_Device_t" variable, three "USB_Descriptor_String_t" variables (Language, Manufacturer, Product), a custom "USB_Descriptor_Configuration_t" structure and variable. Also declare a function named "CALLBACK_USB_GetDescriptor" and one called "EVENT_USB_Device_ConfigurationChanged(void)" which calls
"Endpoint_ConfigureEndpoint(*_EPNUM, EP_TYPE_{BULK, INT, CONTROL, ISOC}, ENDPOINT_DIR_{IN,OUT}, *_EPSIZE, ENDPOINT_BANK_{DOUBLE,SINGLE});" for each endpoint in the configuration. Finally use "Endpoint_SelectEndpoint(*_EPNUM)" followed by "Endpoint_Is{INReady,OutReceived}() && Endpoint_IsReadWriteAllowed()" to select an endpoint and check for data. Finish all this by reading your stream "Endpoint_Read_Stream_LE(buf, len)" and issue a call to "Endpoint_Clear{IN,OUT}()" when done.
HacPDX is Coming
September 19, 2009
That's right – HacPDX is less than a week away so REGISTER if you haven't. Failure to register means you might not have network access or even a chair!
I've planned to work on networking but I'll be happy to work on anything that interests people and makes progress including networking, crypto, kernel modules, hackage-server, even ARM (assuming an expert attends).
I've also heard a number of people mention working on various C Bindings – which is awesome because I suck at marshalling so maybe they can help. Can't wait to see everyone there and hacking away!
Explicit Parallelism via Thread Pools
March 13, 2009
I'm happy to say that this post is being finished up from my new home in Portland, Oregon! After many years of searching around I've finally decided to study at Portland State. Its probably optimisitic of me to think I'll have more time as a graduate student, but I hope this is the beginning of much more involvement for me in the Haskell community.
Thread Pools from the Control-Engine Package
Control.Engine was recently released on hackage, providing a simple way to instantiate worker threads to split-up the processing of streaming data. Its was originally developed as a spin-off library from my DHT and I've since generalized it to cover numerous cases.
Trivial Thread Pools
The trivial module Control.ThreadPool can cover static examples such as a recent question asked on the haskell-cafe:
I have a function that does some IO (takes a file path, read the file, parse, and return some data), and I would like to parallelize it, so that multiple files can be parsed in parallel.
'Control.ThreadPool' gives us an easy answer (but not as slick as the map reduce answer the person was asking for on cafe). First we have our typical fluff.
import Control.ThreadPool (threadPoolIO) import System.IO (openFile, IOMode(..)) import System.Environment (getArgs) import Control.Concurrent.Chan import Control.Monad (forM_) import qualified Data.ByteString.Lazy.Char8 as L main = do as <- getArgs
As you can see below, we simply say how many threads we want in our thread pool and what action (or pure computation, using 'threadPool') we wish to perform. After that its just channels – send input in and read results out!
(input,output) <- threadPoolIO nrCPU op mapM_ (writeChan input) as -- input stream forM_ [1..length as] (\_ -> readChan output >>= print) where nrCPU = 4 op f = do h <- openFile f ReadMode c <- L.hGetContents h let !x = length . L.words $ c hClose h return (f,x)
And while this does nothing to demonstrate paralellism, it does work:
[tom@Mavlo Test]$ ghc -O2 parLines.hs --make -threaded -fforce-recomp [1 of 1] Compiling Main ( web.hs, web.o ) Linking web ... [tom@Mavlo Test]$ find ~/dev/Pastry -name *lhs | xargs ./parLines +RTS -N4 -RTS ("/home/tom/dev/Pastry/Network/Pastry/Module/Joiner.lhs",107) ("/home/tom/dev/Pastry/Network/Pastry/Config.lhs",14) ("/home/tom/dev/Pastry/Network/Pastry/Data/LeafSet.lhs",120) ("/home/tom/dev/Pastry/Network/Pastry/Data/Router.lhs",87) ("/home/tom/dev/Pastry/Network/Pastry/Data/RouteTable.lhs",75) ("/home/tom/dev/Pastry/Network/Pastry/Data/Address.lhs",152)
Control Engine Setup
The thread pools are simple, but what if you need more flexibility or power? What happens if you want to have an up-to-date state shared amoung the threads, or there's a non-paralizable cheap computation you need to perform before the main operation? The answer is to use Control.Engine instead of Control.ThreadPool. The engine provides managed state, numerous hook location, and an abilty to inject information to mid-engine locations.
The inject* calls can bypass the input hooks (injectPreMutator) or bypass everything besides the output hooks (injectPostMutator) – thus creating a 'result' that had no corrosponding 'job'.
Hooks are capable of modifying or filtering jobs or results. All hooks are of type state -> a -> IO (Maybe a); its important to note the type can not change and if a hook returns Nothing then the job or result stops there.
Hooks can either be input, pre-mutate, post-mutate, or output. Input and output hooks are ran in series on all jobs or results respectivly; this is intended for low computation tasks that shouldn't be done in parallel later. Pre and post mutate hooks happen on the (parallel) worker threads before an after the main task, called the mutator.
The engine consists of N mutator threads, which is the only operation capable of transforming the jobs into a different (result) type.
State Management
Control.Engine was built with the idea that jobs and state reads were frequent while alterations to the state were rare. A design decision was made to use STM to resolve all contention on state alterations and have a manager watch the TVar for change then bundle those changes in a quicker to read fashion (MVar) for the input, output, and worker threads.
The state provided to the hooks and mutator is always consistent but not guarenteed up-to-date. When modifications to the state occur a transactional variable is modified, which wakes the stateManager; in turn, the state manager updates the state MVar which is read by each thread before processing the next job. In the future IORefs might be used instead of the MVar – all contention is handled by the STM and the only writer for the MVar (future IORef) should be the State Manager.
Web Crawling
Now lets figure out how to help users who need more flexibility using Control.Engine instead of Control.ThreadPool.
MyCatVerbs, from #haskell, suggested a web crawler that uses URls as the job and the mutator (worker) can add all the links of the current page as new jobs while ignoring any URL that was already visited. Lets start!
The imports aren't too surprising – tagsoup, concurrent, bloomfilter and Control-Engine are the packages I draw on.
module Main where import Control.Concurrent (forkIO, threadDelay) import Control.Concurrent.Chan import Control.Monad (forever, when) import Control.Engine -- Control-Engine import Control.Exception as X import Data.BloomFilter -- bloomfilter import Data.BloomFilter.Hash -- bloomfilter import Data.BloomFilter.Easy -- bloomfilter import Data.IORef import System.Environment (getArgs) import Text.HTML.Download -- tagsoup import Text.HTML.TagSoup -- tagsoup type URL = String data Job = GetURL URL | ParseHTML URL String deriving (Eq, Ord, Show) main = do (nrCPU:url:_) <- getArgs
The library tries to remain flexible which makes you do a little more work but don't let that scare you! It needs an IO action to get tasks and an IO action that delivers the results. Most people will probably just want a channel, but sockets or files would do just as well.
input <- newChan output <- newChan
Starting the engine is a one line affair. You provide the number of threads, input, output, a mutator function and initial state. In return you are provided with an 'Engine' with which you can modify the hooks and use the injection points.
For this web crawler my 'state' is just a bloom filter of all visited URLs so I'll keep that in the one hook its needed and declare the engine-wide state as a null – (). For the chosen task the mutator needs a way to add more jobs (more URLs) so as pages are parsed any new URLs can be queued for future crawling; this is handled via partial application of mutator funciton.
eng <- initEngine (read nrCPU) (readChan input) (writeChan output) (mutator (writeChan input)) ()
As mentioned, I'll use a bloom filter to keep the web crawler from re-visiting the same site many times. This should happen exactly once for each URL and is fairly fast so I'll insert it as an 'Input Hook' which means a single thread will process all jobs before they get parsed out to the parallel thread pool.
let initialBF = fromListB (cheapHashes nrHashes) nrBits [] (nrBits, nrHashes) = suggestSizing 100000 (10 ** (-6)) bf <- newIORef (initialBF,0) let bfHook = Hk (uniqueURL bf) 1 "Ensure URLs have not already been crawled" addInputHook eng bfHook
Finishing up main, we print all results then provide an initial URL. Notice we run forever – there's no clean shutdown in this toy example.
forkIO $ forever $ printResult output writeChan input (GetURL url) neverStop eng where neverStop eng = forever $ threadDelay maxBound
And from here on we're just providing the worker routine that will run across all the threads and we'll define the input hook. TagSoup performs all the hard work of downloading the page and parsing HTML. Just pull out the <a href="…"> tags to add the new URLs as jobs before returning any results. In this example I decided to avoid any sort of error checking (ex: making sure this is an HTML document) and simply returning the number of words as a result.
mutator :: (Job -> IO ()) -> st -> Job -> IO (Maybe (URL,Int)) mutator addJob _ (GetURL url) = forkIO (do e <- X.try (openURL url) :: IO (Either X.SomeException String) case e of Right dat -> addJob (ParseHTML url dat) _ -> return () ) >> return Nothing mutator addJob _ (ParseHTML url dat) = do let !urls = getURLs dat !len = length urls fixed = map (\u -> if take 4 u /= "http" then url ++ '/' : u else u) urls mapM_ (addJob . GetURL) fixed return $ Just (url,len) where getURLs :: String -> [URL] getURLs s = let tags = parseTags s in map snd (concatMap hrefs tags) hrefs :: Tag -> [(String,String)] hrefs (TagOpen "a" xs) = filter ( (== "href") . fst) xs hrefs _ = [] printResult :: (Show result) => Chan result -> IO () printResult c = readChan c >>= print
Filtering out non-unique URLs is just the bloom filter in action.
uniqueURL :: IORef (Bloom URL, Int) -> st -> Job -> IO (Maybe Job) uniqueURL _ _ j@(ParseHTML _ _) = return $ Just j uniqueURL bf _ j@(GetURL url) = do (b,i) <- readIORef bf if elemB url b then putStrLn ("Reject: " ++ url) >> return Nothing else do writeIORef bf (insertB url b, i + 1) when (i `rem` 100 == 0) (print i) return $ Just j
P.S. No serious performance measurements have been made beyond extremely expensive (and trivially parallel) problems, so those don't count.
14Mar2009 EDIT: Said something about Control.Engine before showing the diagram to make reading smoother.
EDIT2: ThreadPool example shown was a version using MD5, not length – oops! Fixed now.
hsXenCtrl and pureMD5
August 7, 2008
On vacation I found some time to upload the new hsXenCtrl library (0.0.7) and pureMD5 (0.2.4)
The new hsXenCtrl includes the System.Xen module, which is a WriterT ErrorT transformer stack and a brief attempt at 'Haskellifying' the xen control library. I find it much more useful for simple tasks like pausing, unpasing, creating and destroying domains. The API is still subject to change without notice as plenty of function are still very 'C' like (ex: scheduler / sedf functions).
pureMD5 received a much smaller change – some users noticed the -fvia-c caused compilation headaches on OS X. After removing the offending flag, some benchmarks revealed no measureable difference in speed, so this is an over-due change. OS X users rejoice!


text:
AutoMedic crew and Omar personally doing a great job! They are professionals, friendly and always ready to help and assist if you have any issues with your vehicle. Prices are affordable, job done quickly and professionally. I'm using their services more than a year and a half from now and I can definitely recommend them. If my friends or colleagues have any problems with the car, the first place I recommend them to go is AutoMedic Thank you guys You are awesome!
Omar (the owner) is an honest man of his word, work will be done when he's says it will be done and he won't hit you with 10 other things you "need" fixed just to make a quick buck off of you. I had a few things done here and the work was quick, professional, and reasonably priced. I would highly recommend going here and i will continue to do so.
Omar (owner) does a great job taking care of repairing your vehicle. He goes above and beyond basic expectations. I would recommend him over any other auto repair shops!!!
Best place, best prices, best service....people here are passionate about their jobs....knowledgeable on what they do....they work on my 2000 Trans Am Firebird....if i can help it, nobody by Omar and his people at automedic will work on my car.
Far exceeds my expectations..Omar goes above and beyond to make the customer happy. Quick service too!! I would recommend to anyone and will continue to take my car there for any service. Finally, a place you can trust!!
A friend highly recommended me to Omar and his shop. They do great work and are on time with the time frame they give you. We won't go anywhere else. Their customer service is outstanding!
Even after relocating from Bradenton to Riverview we continue to take our car to be serviced here. It can be difficult to trust you are getting quality work for a good value. Omar never fails to be honest and most importantly fair. We highly recommend Automedic
Second time in two years had to have work done I couldn't do myself (I usually do everything short of engine work...no cherry picker or specialized tools) so I'm no greenhorn with cars (also worked at Anderson Automotive years ago...even turned rotors) This is by far the best automotive shop I have found in years...in which I am now cutting my own throat if I ever need bring my car back in, as the secret will be out! lol ...but these guys deserve the recognition. They are young, yet knowledgeable, eager and rambunctious...but I wouldn't call them "Millennials" because they aren't in it solely to turn a buck! They seem to actually like what they do, as opposed to simply a means to make profit. I tell Omar when I drop my car off "whatever you all find under there that has to be done, go ahead and replace/repair it", because theirs is a judgement based on need, not frivolous add-ons. If it is something that might even remotely be considered "optional" I have always been given a call and asked. I highly recommend this business, and hope they will be blessed in their livelihood.
Omar has been a angel in disguise our car broke down across the street from his shop he towed our car to his shop and fixed our car perfectly at at a great price he also worked with us on the final payment he has gave us a blessing during this trying time in the holiday season him and his shop are so awesome I would recommend anyone with car trouble or just in need for a touch up place check him out!!!! I'm so very thankful to have met him thanks again Omar.
Great Service!! Completely explain problem and solution. Good pricing.
Omar and his crew take care of all of my car needs! I love them. lol I've never felt ripped off, I've never felt out of place. If I can't get something done at the time I need it done, he comes up with different solutions to get me by. He explains everything to me. If something goes wrong with anything he's fixed on my car, he makes sure he fixes the problem. I won't even get mad (aggravated maybe lol), because I know my car will get fixed. He's my go to. I don't think I'll ever go anywhere else because I've been treated so great here. I just left from getting an oil change. Thank you guys so much for everything!!!! I'm grateful.
Omar and his team are great
Words like Honesty, Quality and Professionalism come to mind when I think back on the best experiences I've ever had at a mechanic's shop and that's exactly what you and I get when we come to AutoMedic. I have a foreign made car and they've never said that was/is a problem or that it would cost more. As a matter of fact, they've only said "Yes, we can do that" to me.....the work is top shelf, the staff are fast and the management is more than helpful... and also willing to tell you what you need now and what you can wait on. Glad I found someone I can trust with my car. God bless you guys!!!!
Omar and his crew are great! Their work is very professional. They stand behind their product and Omar is a man of his word. It's hard to find a reputable mechanic, nowadays, but I recommend them highly. I'm grateful to have had my car serviced by these guys...
Omar and his employees are very professional They take they time and if anything was not up to par they fixed it and I will go back
My father was an auto mechanic when I was young. Throughout the years, I have had many automobiles. Not many mechanics. It has always been very hard for me to find an affordable, and honest mechanic. Recently, the clutch on my everyday driver started to make noise. I am new to the Bradenton area, I could not drive over an hour to my current auto tech. I called around, read reviews, and after much quick consideration, I called AutoMedic. I spoke with Omar (ASE certified owner). He was able to take my vehicle in right away, he is knowledgeable, affordable, and honest. He got me up and running with in a single day, for a price that I could afford. He also provided me with all of the old and faulty parts. Omar has made me a lifetime customer. I love this place, and am glad I took a chance.
This is way more than a repair shop, they treat you, your vehicle and your wallet with respect, which is very important to me as a single mom. The owner Omar is a car God, and his guys are little car angles, there is nothing they can't do or fix,they will fix your vehicle at the best possible price and Omar guarantees all his work. As a female when you go to a repair shop you're never sure if they are being honest with you or taking advantage of you, but not with the Auto Medic crew these guys are honest God fearing people and if your car is unsafe for the road they will tell you. I have taken my car there about 3 or 4 times for various issues and I ALWAYS leave satisfied. All together a SPECTACULAR bunch of guys that are always ready to go the extra mile to ensure OUTSTANDING, COST EFFICIENT, customer service.
Great service at a great price done quickly. Very happy with the work and will return if I have anymore car repairs needed! Thanks for all your help Omar and staff!
Excellent service, friendly faces, fair prices. My garage of choice!
Bought a used 2013 Jeep and needed help overall. Antonio was professional and very resourceful. Im picky and very cautious !! This shop and its current employees get 5 stars. Thank you
Automedic is fantastic. I have an unhealthy relationship with my car, so finding a trustworthy shop is of the utmost importance. Not only did they have competitive rates to do my brakes vs a national chain, Omar and the guys there worked around my insane no time off work schedule. I know where I'm going to take my car next time it needs service. (Or any additional bolt on parts)
I looked and called many places and I am happy I found this auto repair shop. I have a 2001 Honda Accord, and while everyone wanted an arm and a leg to repair my transmission Art helped me replaced just the sensor my car needed. I have experienced that everyone wants you to leave the car and take the transmission apart to give you a diagnostic and well what happens if you don't want it repaired or if its too expensive or if its not the problem???? No other option but to fix it at what they want or lose your car. Anyway, I am happy I spent 365 dollars and its been three months and my car is driving awesome. I give them three dumbs up!!! Check them out I am sure they will help you as they have helped me. :)
Its a great service i like this place
Worked out great...did awonderful job for a very reasonable price and finished ahead of his estimate.
Best customer service and inexpensive repairs. I highly recommend this shop. Love them!!
This is a honest company, very friendly, they throughly explain what is your car's problem. They fixed my car in a timely matter, and a great price. Thanks so much.
Very efficient, professional and experienced Crew. They took care of my car and fixed it on time.
Automedic has done a great job in handling all my auto repairs. They are very honest and quite affordable. I would recommend them to everyone. Thanks Automedic
My husband and i bought a new/older vehical last year. We were recommended to Auto Medic by the seller. Not only do we bring both of our cars to him,we have sent other people to him. Auto Medic is now our one and only place we will take our cars. We recommend anyone looking for a great mechanic go to Auto Medic on 14th St in Bradenton


text:
by Angela
(East Texas)
I made a 5lb soap batch that was supposed to be a pale yellow lemon poppy seed.
Some of the links on this site are affiliate links. If you buy a product through them, I receive a small commission which helps me provide the free information you find on this site. Thank you for your support!


text:
You are here:
Remediation of Heavy Metal(loid)s Contaminated Soils – To Mobilize or To Immobilize?
Bolan, N., A. Kunhikrishnan, R. Thangarajan, J. Kumpiene, J. Park, T. Makino, M. Kirkham, AND K. Scheckel. Remediation of Heavy Metal(loid)s Contaminated Soils – To Mobilize or To Immobilize? D. Aga, W. Choi, A. Daugulis, G. Li Puma, G. Lyberatos, and J. Hwa Tay (ed.), JOURNAL OF HAZARDOUS MATERIALS. Elsevier B.V., Amsterdam, Netherlands, 266:141-166, (2014).
With greater public awareness of the implications of contaminated soils on human and animal health there has been increasing interest among the scientific community in the development of technologies to remediate contaminated sites. This is especially necessary since traditional methods of soil removal and replacement of clean soil is often cost prohibitive. For diffuse distribution of metal(loid)s, remediation options generally include amelioration of soils to minimise the metal(loid) bioavailability. Bioavailability can be minimised through chemical and biological immobilization of metal(loid)s using a range of inorganic compounds, such as lime and phosphate (P) compounds , and organic compounds, such as 'exceptional quality' biosolids. The more localized metal(loid) contamination found in urban environments is remediated by metal(loid) mobilization processes that include bioremediation (including phytoremediation) and chemical washing. Removal of metal(loid)s through phytoextraction (i.e., phytoremediation) techniques and the subsequent recovery of the metal(loid)s or their safe disposal are attracting research and commercial interests. However, when it is not possible to remove the metal(loid)s from the contaminated sites by phytoextraction, other viable options, such as in-situ immobilization should be considered as an integral part of risk management. An overview of the sources of some of the common heavy metal(loid)s input to soils, their interactions and bioavailability in soils, and the remediation of metal(loid) contaminated soils through manipulating their bioavailability using a range of conventional and advanced soil amendments will be presented in this review.
Unlike organic contaminants, metal(loid)s do not undergo microbial or chemical degradation and persist for a long time after their introduction. Bioavailability of metal(loid)s plays a vital role in the remediation of contaminated soils. In this review, the remediation of heavy metal(loid)s contaminated soils through manipulating their bioavailability using a range of soil amendments will be presented. Mobilizing amendments such as chelating and desorbing agents increase the bioavailability and mobility of metal(loid)s. Immobilizing amendments such as precipitating agents and sorbent materials decrease the bioavailabilty and mobility of metal(loid)s. Mobilizing agents can be used to enhance the removal of heavy metal(loid)s through plant uptake and soil washing. Immobilizing agents can be used to reduce the transfer to metal(loid)s to food chain via plant uptake and leaching to groundwater. One of the major limitations of mobilizing technique is susceptibility to leaching of the mobilized heavy metal(loid)s in the absence of active plant uptake. Similarly, in the case of the immobilization technique the long-term stability of the immobilized heavy metal(loid)s needs to be monitored.
URLs/Downloads:http://dx.doi.org/10.1016/j.jhazmat.2013.12.018 Exit
Website Exit


text:
Visiting Croatia there are so many amazing islands to choose from – over 1000 to be precise – but it is Dubrovnik that stole my heart. Not to sound too cheesy, I can't imagine anyone not being in awe when they first glimpse the Old Town glistening across the Adriatic. When in Dubrovnik, there are a lot of different hotels, B&Bs and family homes you can stay in but, more of that later in this guide. For unabashed 5-star luxury, the Dubrovnik Palace has over 200 rooms and suites, 5 restaurants, including fine dining, 4 bars, a huge outdoor pool, diving centre and spa.
While I was in the city, I was lucky enough to stay in one of the hotel's fabulous suites, overlooking the sea and complete with living room, two bathrooms and a fabulous terrace. Slick and modern, the breathtaking views from the balcony meant leaving the room wasn't necessary, except for how much there is to do.
As far as eating goes in the hotel, there is huge choice. Of the five restauratns, including a new sushi restaurant on the upper terrace of the hotel, all use amazing fresh produce – obviously the fish and seafood are the best choices. On the menu are local, national and international cuisine so you won't be disappointed. Don't miss a candelit dinner at the Maslina Tavern (pictured below), it is very romantic.
Chosen by celebrities, those getting married or functions (we were privy to an operatic spectacular on the bluff of the private club in the hotel's grounds). There is a private boat to take you over to the Lighthouse in the distance or to hire to island hop to your heart's content or the scuba diving school ensures you catch up with marine life. It does look a little imposing so if a little rustic glamour is your choice, this isn't the place for you but perfect for all the family or a romantic break.
E-mail: firstname.lastname@example.com


text:
School Profile
Kennett Middle School
195 Sunny Dell Road
Landenberg, Pennsylvania 19350
Phone: 610-268-5800
School Profile
Home of the Blue Demons and located in Landenberg, Pennsylvania, Kennett Middle School is the sole middle school in the Kennett Consolidated School District. The impressive building was built in 2002 and continues to be a hub of academia and activities in the Kennett community. Kennett Middle School was proud to be recognized as a Pennsylvania Don Eichhorn School to Watch in both 2012, 2015, and 2018. Upon entering the Kennett Middle School building, our Kennett PRIDE is evident and can be seen and heard throughout all five wings and in common areas. The safety, well-being, and academic, social, and emotional growth of our adolescent students is the priority of our dedicated staff members.
Dr. Lorenzo G. DeAngelis, Jr., Principal
Mrs. Brenna L. Austin, Assistant Principal
Mr. Jake D. Moore, Assistant Principal
Grade Principals and School Counselors
Principals and counselors "loop" and follow their grade every year.
Our 2019-2020 Grade Principals and Counselors are:
Eighth Grade: Mrs. Austin & Mrs. Kori Barley-Stoudemire
Seventh Grade: Mr. Moore & Mrs. Jenna Reinheimer
Sixth Grade: Dr. DeAngelis & Ms. Lauren Boder
Just over 1000 students in the 2019-2020 school year
The Kennett Middle School curriculum challenges a student's intellectual potential, serves as preparation for high school, and provides an opportunity for growth and success for each student.
Core curriculum offerings include Mathematics, Language Arts, Science, and Social Studies.
Advanced, honors, and support classes are offered to those who qualify. Advanced math course topics include Algebra I and Honors Geometry. World language offerings in Latin I, German I, French I, and Spanish I are available in eighth grade in place of the WIN classes.
Cycles courses are available in all grade levels and include Physical Education, Health, Music, Chorus, Computers, Art, Sewing, Cooking, and STEM (Science, Technology, Engineering, and Math.)
All About KMS
Student Council, Live on 5 TV Morning Announcements, After-The-Bell (www.afterthebell.org), Band, Orchestra, Chorus, Choral Ensemble, Jazz Band, Spring Musical, Yearbook, 7th Grade Girls Leadership, Chester County Futures Ahead, Reading Olympics, LEGO Robotics Team, Chester County Spelling Bee, Sixth Grade Quiz Bowl
Adopt-a-Family Program
Every year near Thanksgiving, Kennett Middle School celebrates the spirit of giving and of the holidays with three events that raise at least $3000 each year! The proceeds from the events go to 10-15 families in our community who are in need. Events in years past have included the Sixth Grade Glow Dance, Seventh Grade's Got Talent, Are You Smarter Than a Seventh Grade Teacher?, the Eighth Grade Faculty vs. Students Volleyball Game, and the Eighth Grade Teacher Turkey Costume Contest.
Athletics (for students in grades 7 and 8)
Girls Basketball, Boys Basketball, Cheerleading, Cross Country, Boys Soccer, Girls Soccer, Field Hockey, Football, Girls Volleyball, Softball, Baseball, Girls Lacrosse, Boys Lacrosse, Track, Wrestling
Need something to do after school? After-The-Bell is for you! This community-based program combines the expertise of community members and the interests of middle school students. After-The-Bell is free and transportation home is provided.
Fall, winter, and spring sessions meet Tuesday, Wednesday, and Thursday afternoon for six weeks. Sessions begin with a snack at 3:00 P.M., and end at 5:00 P.M. For more information visit www.afterthebell.org or visit the After-The-Bell office located in room C106 at Kennett Middle School.
Cycles Classes (Year-long)
Computer Applications
Computer Application courses are designed to build a foundation for students to successfully navigate 21st Century skills for academic, social and professional purpose. Skills and topics include keyboarding, cyber safety, productivity applications, academic and professional formatting, digital collaboration, and communication.
Choral Music
Singers will learn singing techniques through music selected from a variety of styles, time periods and languages. Choirs perform in December and June. Concert attendance is a required component of the course. Info with specific dates will be sent home through your student. Student grades are based on daily participation, written assessments, performing assessments and concert attendance.
General Music 6-7
Students sing, dance, and play Orff instruments, drums, and recorders. They read musical notation, listen to, and analyze the music of various cultures, time periods and styles. Assessment consists of class participation, musical skill competencies, group work, and quick quizzes.
General Music 8
One semester is "Intro to Guitar" and one semester is "Intro to Group Percussion." Grades are based on participation, written assessments, performing assessments.
Physical Education
Our goal is to educate minds, develop healthy bodies, and promote positive attitudes towards lifetime physical activity, fitness, and sports skills. Each student will be empowered with the knowledge and skills necessary to make responsible lifestyle choices that directly impact his/her health and well-being. We expect students to dress appropriately for fitness activities. This includes changing from school clothes into a t-shirt, shorts/sweatpants, and sneakers. The grading rubric is based on preparation – (appropriate clothing) and active participation (on task, attentive, positive attitude, best effort.)
Instrumental Music
Band and Orchestra are the two instrumental music classes. Instrumental music students sign up for one instrument and focus on the ins and outs that specific instrument. Instrumental music students are required to attend lessons, practice at home, complete quarterly playing assessments, and participate in concerts that are outside of the regular school day. The Orchestra focuses primarily on Violin, Viola, Cello, and Bass. The Band focuses on Flute, Oboe, Clarinet, Bass Clarinet, Bassoon, Alto Saxophone, Tenor Saxophone, Baritone Saxophone, Trumpet, French Horn, Trombone, Euphonium, Tuba, Mallet Percussion, and Battery Percussion. New students are welcome to begin in 6th grade. In 8th Grade selected band students participate in Full Orchestra. Students are permitted to focus on two instruments but they must be approved by one of the instrumental music teachers.
Extracurricular Ensembles
Jazz Band, Pep Band, String Ensemble
Cycles Classes (Marking Period)
Family Consumer Science-Food Lab
Family and Consumer Science Food Lab provides an opportunity for students to learn about healthy eating, nutrition, portion sizes and further exploring foods through a variety of hands on learning activities including food labs.
Family Consumer Science-Sewing Lab
In the Family and Consumer Sciences Sewing Lab, students will have the opportunity to practice and improve skills needed to grow in independence and in their abilities to contribute toward family and social well-being. They will be encouraged to practice effective management skills, and show responsibility while completing both individual and group projects including sewing, consumerism, and time management.
Health Education provides the opportunity for students to develop skills necessary to become health advocates. Students learn cognitive and social skills that help promote positive living through the study of nutrition, fitness, personal health, HIV/AIDS intentional/unintentional injuries and drugs.
In 6th, 7th and 8th grades, the basic elements and principles of Art and Design are introduced in a way that builds upon skills learned in each previous year. Students work with a variety of materials in both 2D and 3D formats (drawing, painting, ceramics, etc.) and are instructed in proper usage of the tools and materials.
Sketchbooks are used each year to build a portfolio of student work as well as for observational drawing labs which allow students to practice observational drawing and to gain an understanding of proportion, visual measurement, drawing the human figure and drawing from real life.
STEM at Kennett Middle School is meant to provide our students with a unique approach to better understanding engineering concepts. The content used for these classes are provided by one of the nation's leading STEM curriculum programs, Project Lead the Way. This curriculum is focused on providing activity-, project-, and problem-based learning.
Throughout their three years at KMS, our students will work through a different course each year. Sixth graders will take Design and Modeling, using industry standard 3D modeling software to create a virtual image of their designs, and producing a portfolio to showcase their creative solutions. Seventh graders will take Flight and Space, creating dragsters, hot air balloons, gliders, and rockets, all with basic materials, further enhancing their problem-solving skills as well as giving them a look into the science concepts behind aerodynamics and physics.
In their final year at the middle school, the eighth grade students will take Automation and Robotics where they will trace the history, development, and influence of automation and robotics. They learn about mechanical systems, energy transfer, machine automation and computer control systems. Students use a robust robotics platform to design, build, and program a solution to solve an existing problem.
Honors Program (For those students who qualify)
- Sixth Grade – Language Arts, Math, Social Studies
- Seventh Grade – Language Arts, Algebra I, Science
- Eighth Grade – Language Arts, Science, Algebra I, Honors Geometry, World Language I
KMS Musicals
In the years that KMS has been at the new school, there have been outstanding musicals (from the Broadway Jr. Series.) Annie, The Wizard of Oz, Guys and Dolls, and Charlie and the Chocolate Factory have all been performed on the Middle School stage. These student productions are assisted by enthusiastic and experienced staff directors.
Our directors begin with the belief that all students should have the opportunity to participate in the musical. Everyone who tries out for a part is involved in the show in some way. Student participation is tremendous. There are roles for singers, dancers, actors, extras, and those most important folks, the stage, light and sound crew.
Kennett PRIDE
In 2015, KMS initiated a Positive Behavior Intervention and Support program. Our PBIS Program is called Kennett PRIDE. For more information, please view our Kennett PRIDE website.
LEAD is a mentoring program that began in 2013 at Kennett Middle School. LEAD stands for Listen, Encourage, Advise, and Discuss. The two goals of LEAD are to build positive relationships and foster academic success. All students at KMS are assigned to a LEAD teacher. This teacher has regular contact with the student and his or her parents about the student's academic, social, and emotional progress throughout the year. The LEAD teacher may facilitate conferences with students and parents informally but will meet formally twice a year during Fall and Spring Parent Conferences. LEAD is an advisory period that occurs twice a month during the school day. For more information, please view our LEAD website.
Student Council
Students in sixth, seventh, and eighth grade can join the Student Council. Students who are involved in Student Council volunteer as guides for Back to School Night, Fall and Spring Parent Conferences, and Spring Open House. They also sponsor various events such as "We Wear Pink on Wednesdays" in October for the Breast Cancer Foundation, the "Give As Much As You Can" canned food drive in November to benefit the Kennett Food Cupboard, and the school-wide holiday card writing campaign for area nursing homes and senior centers. Student Council meets after school once a month and sometimes during lunches.
Computer labs are located in each classroom wing, and in the library classroom. Additionally, laptop carts, iPads, and MacBooks are available to enhance classroom instruction. In addition to the hardware, technology is supported by a high capacity fiber-optic Internet connection. For student safety, the Internet connection is protected by a firewall.
Students also have the opportunity to bring their own technology (in the form of tablets, iPads, or laptops) by participating in our building BYOT program. New in 2015, our loaner laptop and Kindle program in the Library allows students to rent technology.


text:
Marion, AL. - In a rain soaked four hour game Thursday evening, the MMI Tigers captured game one of the four game series against ACCC North foe Shelton State Community College, 8-7. The second game was postponed due to poor field conditions and will be made up Monday at 4:00 p.m. on the campus of Shelton State in Tuscaloosa.
Game 1 Saturday - In game one of Saturday's doubleheader the Marion bats came alive as they captured another victory 9-7 against the visiting Buccaneers.
Blaine Milam earned the start for the Tigers and worked 4 1/3 innings, surrendering six hits and four runs. Shelton State scored first in the first inning but Marion rallied in their at-bat to tie the game 2-2. Jonah Todd reached on an error to start the inning and was moved to second by Zachary Neumann. With two outs Carson McGregory walked and Jackson Cofer doubled to score Todd. Mason Gilliland singled which brought McGregory across the plate.
Milam shut down the Buccaneer bats in the second inning while Marion's stayed active. Landon Sartain reached on an error and Logan Nix was called safe after bunting Sartain to second. Neumann took his pitch over left center field fence for a three-run homerun, giving the home squad a 5-2 lead. Shelton State scored one in the top of the third to cut into the lead, 5-3.
In the bottom of the fourth inning, McGregory hit a solo homerun to right field, bringing the lead back to three. The Bucs rallied with two runs in the fifth to make it a one-run game. Sartain answered with another dinger in the bottom half of the fifth inning to give Marion a two run lead.
James Mills took the mound in relief in the sixth inning and got two quick outs before a Shelton State batter doubled to get a runner into scoring position. Jesse Wheeler relieved Mills and got the third out, keeping the runner stranded.
Marion added two more runs in the seventh inning as Justin Bisharat singled to start the inning. Sartain bunted Bisharat over and was called safe on the play. Nix popped up a bunt in the next at-bat but Shelton State misplayed the ball to load the bases for MMI. With a new pitcher for the Bucs, Neumann singled to score Bisharat and Taylor followed with a outfield pop fly to bring in Sartain.
Shelton State added two runs in the eighth inning off freshman hurler Justin Orr who came in relief in the seventh inning. Sophomore Chad Robinson relieved Orr in the eighth inning as Shelton State tried to start a rally. Robinson got a quick strikeout to end the inning. He also worked a one-two-three inning in the ninth inning to secure the win.
Game 2 - Marion's bats went silent in game two on Saturday as Shelton plated six runs in the first two innings. They would eventually add three more runs to take the 9-0 victory.


text:
Democratic Challenger Irv Halter has issued a statement regarding Rep. Lamborn's unwillingness to debate him.
Republican incumbent Rep. Doug Lamborn is refusing to debate Democratic challenger Irv Halter in the 5th Congressional District race.
Halter, a retired Air Force major general and former Republican turned Democrat, challenged Lamborn to a debate soon after the congressman beat Bentley Rayburn in the June 24 GOP primary. Jarred Rego, Lamborn's campaign spokesman, said Lamborn does not want to give Halter a platform from which he could spread his rhetoric.
"The congressman will not be providing Mr. Halter with a platform to spread his deceptive rhetoric and uncivil tone," Rego told The Gazette.
"People know where Congressman Lamborn stands on the issues. The only person in this race whose positions are unknown is Mr. Halter, who keeps masquerading as a moderate, all while disguising his liberal views."
In response, El Paso County Democratic Party Chair Kathleen Ricker called Lamborn a "coward."


text:
Colorama Colorgrad 100 x 170 cm White / Aquamarine
This product is not currently in stock, but is usually available from our supplier within 5-7 days of your order being placed.
Free delivery also available - more info
PVC Graduated backgrounds from Colorama add an extra colour and depth to table top photography. It's easy to repeat the same effect time after time as the Colorgrads are made from durable wipe down PVC. More
1x Colorama Colorgrad 100 x 170 cm White / Aquamarine Sorry, there are no more available.
Product Specification
|110 x 170
|Product Background


text:
Intelligence identifies and helps navigate the future of public entity pooling through in-depth commentary and thought leadership on important and unique pooling issues.
AGRiP's compensation and benefits analysis for top pool executives is conducted every two years. The 2018 report is based upon data from 97 public entity pool respondents.
In 2019, Robin Stacia will work with members to deliver insightful and thought-provoking content addressing issues of inclusion in relation to public entity pooling.
Throughout 2018, AGRiP Generational Resident Kim Lear shared generational theory and research with members to help pools prepare for a workplace and membership environment encompassing multiple generations.
In 2016 and 2017, AGRiP Resident Futurist Rebecca Ryan worked with a cohort of member pools to "identify and imagine our possible futures, so that we can be future ready."
Financial Benchmarking
Cybrary (Member Login Required)