text:
June 24 in Pats History: Lin Dawson
Thread starter jmt57
Today in Patriots History
Lin Dawson
Happy 62nd birthday to Lin Dawson
Born June 24, 1959 in Norfolk, Virginia
Patriot TE, 1981-1990; uniform #87
Pats 8th round (212th overall) pick of the 1981 draft, from North Carolina State
James Linwood Dawson was drafted after Russ Francis abruptly retired following the 1980 season. He saw little playing time as a rookie when Don Hasselbeck became the starter, but had an equal share of playing time and receptions along with Hasselbeck in the strike-shortened '82 season. At that point Ron Meyer felt confident enough in Dawson's performance to make him the starter in 1983, trading Hasselbeck to the Raiders.
Dawson's best year from an offensive production standpoint was in 1984 when he was third on the team with 39 receptions, with four touchdowns and 427 receiving yards. Unfortunately Dawson sustained a ruptured tendon in his left knee on the first play of Super Bowl 20; the freak non-contact injury caused him to miss the entire 1986 season. He also missed the first month of the 1988 season due to a hamstring injury. Once the hammy was fully healed Lin seemed to be back on track with a two-touchdown game against the Bears in week nine, but Dawson suffered a season ending broken ankle the following week against Miami.
Over the course of his career Dawson played in 105 games with 75 starts, with eight touchdowns. He also appeared in five playoff games for the Pats and had a 13-yard touchdown against the Raiders in the '85-86 playoffs. Lin Dawson is the tight end on the Patriots all-decade team for the eighties. He is now the athletic director at Clark University in Atlanta.
Dick Steinberg post-draft assessment
Dick Steinberg, the New England Patriots' designated draft czar,...
Dick Steinberg, the New England Patriots' designated draft czar, thinks at least two teams in the AFC East have improved themselves considerably for the 1981...
www.upi.com
Steinberg, who ran the draft show at Schaefer Stadium Tuesday and Wednesday, labeled the Patriots' draft as a '7' on a scale of 1-to-10. New England failed to get a blue chip defensive lineman but did upgrade their team at several positions, most noticeably on the offensive line.
The Patriots spent the second day doing what most teams do -- picking players who can add some backup support. They chose a punter for the third straight year -- Ken Naber of Stanford -- who promises to give Mike Hubach a battle for his job.
Their other Wednesday picks were wide receiver Ken Toler of Mississippi, tight end Lin Dawson of North Carolina State, quarterback Brian Buckley of Harvard, and Cris Crissy of Princeton, a receiver-slotback projected as a safety.
'Every player we drafted should play in the NFL, but not necessarily with the Patriots,' Steinberg said. 'The thing that really hurt us was not having a third-round choice. We filled a glaring need in the offensive line, added a running back and depth in special teams, and we strengthened our linebacking and defensive-line corps even though we didn't get a good pass-rusher.'
Coach Ron Erhardt said that he thought the team he takes to camp this summer will be better than last year's -- if all the un-signed players (Horace Ivory, Rod Shoate, Don Hasselbeck are the biggies) have come to terms.
When asked about the team's prospects, Erhardt cracked, 'Anything over .500 is a super job of coaching.'
Aug 25, 1981:
Training Camp Notes
OILERS KEEP STABLER ON ROSTER (Published 1981)
Terry Nelson, a former star with the Los Angeles Rams, was among 10 players dropped by the New England Patriots. Nelson, a tight end who was released by the Rams before training camp, was signed by the Patriots shortly after Russ Francis, one of the league's best tight ends, decided to retire. But last year's backup, Don Hasselbeck, recently ended a contract holdout and reported to the team, and Lin Dawson, a 1981 draft choice, has apparently won a roster spot.
New England Patriots tight end Lin Dawson...
New England Patriots tight end Lin Dawson sustained a ruptured tendon in his left knee on the first play and was lost for the rest of the game. He was carried from the field on a stretcher. The Patriots went to reserve tight end Derrick Ramsey.
J Lin Dawson - Staff Directory - Clark Atlanta University Athletics
Lin Dawson brings 30 years of athletic administration, corporate training and program oversight, civic leadership, innovative diversity, inclusion, and equity deliverables,
clarkatlantasports.com
J Lin Dawson was appointed Director of Athletics by Clark Atlanta University President Ronald A. Johnson on November 18, 2015 to provide visionary leadership for the Department of Athletics. In two short years, the Department is well on its way to becoming a stellar program.
"Our goals are driven by the simple philosophy of winning championships, graduating student-athletes, and developing leaders," he said. "These three pillars set the tone for all we do and think."
A former professional football player, Dawson brings more than 20 years of administrative, academic and entrepreneurial experience to CAU. Prior to his arrival at CAU, Dawson served as Director of Athletics at North Carolina Central University, Grambling State University, Elizabeth City State University, and as Chief Operating Officer for the National Consortium for Academics and Sports at Disney's Wide World of Sports. In addition, Dawson gained senior-level administrative experience as an Associate Athletic Director at North Carolina State University and Virginia Commonwealth University.
At Clark Atlanta University, he oversees the University's NCAA Division II athletic program, including, but not limited to, compliance, budgeting, operations, advancement, student-athlete recruitment and professional staffing and development.
Reactions: Pape, jlu52, captain stone and 1 other person
Shaun Ellis
Happy 44th birthday to Shaun Ellis
Born June 24, 1977 in Anderson, SC
Patriot DE, 2011; uniform #94
Signed as an unrestricted free agent on August 7, 2011
After 11 seasons with the Jets that included two Pro Bowls, the Pats signed 34 year old MeShaunda Pizarrur Ellis just after the start of the 2011 training camp, on the same day they signed Andre Carter and re-signed Gerard Warren. While the latter two were productive, Ellis never lived up to his $4 million contract, with his age catching up to him. Over the season he played in 14 games with ten starts, recording just one sack, seven tackles and seven assists.
Patriots sign veteran DE Andre Carter and DE Shaun Ellis
The New England Patriots signed veteran free agents DE Andre Carter and DE Shaun Ellis today.
www.patriots.com
Pats add DEs Ellis, Carter, re-sign Warren
The Patriots signed defensive ends Shaun Ellis and Andre Carter and re-signed Gerard Warren on Monday.
tv5.espn.com
Pats announce Ellis, Carter signings
New England makes it official on two reported deals.
www.boston.com
More on Ellis, Carter, Light deals
Catching up on some recent contracts signed by Patriots players:Andre Carter -- The veteran defensive end received a one-year deal worth $2.25 million.
www.espn.com
Shaun Ellis chose Patriots' lucrative one-year deal over multi-year offers elsewhere
Former teammate Bart Scott wishes salary-cap casualty Ellis well, but not Patriots
www.nj.com
Patriots Coach Bill Belichick Sticks It to Jets by Signing Shaun Ellis
It's all come full circle for Bill Belichick, and he got to stick it to the Jets in the process. The Patriots have reportedly agreed to sign free-agent defensive end Shaun Ellis, who has been a staple of the Jets' defense for the last decade. And when Belichick burned the Jets to take the...
nesn.com
And when Belichick burned the Jets to take the Patriots' job in 2000, New England was forced to fork over a first-round draft pick, which the Jets used to select Ellis.
Now, Belichick and Ellis get a crack at their own payback. Last season, Ellis apparently wanted a long-term deal to stay in New York, but the Jets weren't willing to extend him. Ellis, who turned 34 in June, had 4.5 sacks in 2010, which was his lowest total since 2005, but he might have been their best defensive player in the playoff victory over the Patriots. With some added motivation, the Patriots are hoping he can return the favor.
Ellis will join a rotation along the defensive line with Vince Wilfork, Albert Haynesworth, Mike Wright, Ron Brace, Myron Pryor, Brandon Deaderick, Mark Anderson, Kyle Love and several others who are attempting to make the team. Jermaine Cunningham and Eric Moore have also played on the line in 4-3 fronts.
Ellis can play at end in the 4-3 and 3-4, and that versatility should give him ample playing time in the Patriots' ever-changing defensive system.
He's a solid player, and there's little doubt that he can help New England. By sticking it to the Jets in the process, it will be an added bonus.
Football journey: Shaun Ellis
FOXBOROUGH, Mass. – Shaun Ellis' football journey has taken him somewhere he didn't anticipate. After 11 seasons with the New York Jets, the veteran defensive lineman signed a one-year contract with the rival Patriots on Aug.
Patriots' best, worst at the midway point - The Boston Globe
The best and worst of the first half for the Patriots.
www.bostonglobe.com
Worst offseason decision: Not drafting or signing a bona fide pass rusher.
Three of the four positions on the line have been fine, but the left defensive end spot in both base and sub packages is a big reason why this team can't rush the passer consistently, and that's killing the defense. Shaun Ellis has played like he's 45. Mark Anderson is limited. Rob Ninkovich has played too many snaps between linebacker and rush end. Cunningham has been MIA. Mike Wright couldn't have been counted on because of his unfortunate concussion history.
Still hard to believe the team didn't take a swing at a pass rusher early in the draft (hello, Jabaal Sheard or Brooks Reed). It has gotten so bad that when the Giants were driving, down, 13-10, Brandon Deaderick was the left end. Seriously?
More June 24 Birthdays
Happy 75th birthday to Randy Edmunds
Born June 24, 1946 in Washington, Georgia
Patriot OLB, 1971; uniform #51
Signed as a free agent on August 25, 1971
George Randall Edmunds was drafted in the eighth round by the Dolphins in 1968 and started at outside linebacker for two seasons in Miami. Edmunds played in all 14 games with the Patriots in 1971, almost exclusively on special teams. The Georgia Tech grad finished up his NFL career in '72 with three games for the Baltimore Colts.
Happy 51st birthday to Carlos Yancy
Born June 24, 1970 in Sarasota, FL
Patriot safety, 1995; uniform #40
Pats 7th round (234th overall) pick of the 1995 draft, from Georgia
Carlos Yancy appeared in four games for the Pats in '95. Professional sports is part of his family history; his father Hugh was an infielder for the Chicago White Sox in the seventies.
Since 2003 Carlos has been giving back to society, working at the Goodwill in his hometown of Sarasota Florida, where he assists people with some roadblocks to finding jobs and careers.
Longtime Goodwill team member connects community members to better lives | Goodwill Manasota
Goodwill in Sarasota, Manatee, Hardee and DeSoto counties, a local nonprofit organization that changes lives through the power of work.
experiencegoodwill.org
He went to school and played football at Riverview High School and the University of Georgia, before enjoying a brief period playing for the New England Patriots under Coach Parcells. Upon his return to Sarasota, he worked with the Family Counseling Center under a pilot program of then-Governor Jeb Bush; this program privatized services for children and families. His next job was as an ESE (English as a Second Language) teacher at Booker Middle School.
He had dreams of starting his own nonprofit program and decided to stop into the Goodwill Selby Newtown Job Connection office to see about a job and getting his "nonprofit feet" wet. During his orientation, he scrapped the plans to start his own organization realizing that, with Goodwill, he would have instant credibility and be working to help community members with jobs and housing, which he agreed were critical needs.
The job-seekers Yancy works with typically have some kind of barrier to employment, whether it's a shortage of education or job skills training, a past criminal record, or a disability. He also serves older adults seeking to enter or re-enter the workforce, and veterans, who face many challenges to reintegrating into the community. His job involves resume assistance, arranging transportation for people who are without their own, securing resources - perhaps clothes or prescription glasses - necessary for success, and job and life coaching to help job-seekers set and reach their goals. And he loves all of it.
"One of the things that I love about Goodwill is that it gives me the opportunity to assist the neediest in our community," he said. "I encourage others in leadership roles to have patience and compassion, and to treat others like you would like to be treated if the shoe was on the other foot."
Longtime Goodwill team member connects community members to better lives
One of your neighbors posted in Neighbor News. Click through to read what they have to say. (The views expressed in this post are the author's own.)
You might think that playing professional football under a coach who is reportedly as tough and skilled as Bill Parcells would be simultaneously the most challenging and best job one could have but, for Carlos Yancy, his current post takes the prize. The 14-year employee of Goodwill Manasota takes great pride in his work as a career development facilitator – each community member seeking assistance offers a new opportunity for a touchdown dance.
Happy 33rd birthday to Ishmaa'ily Kitchen
Born June 29, 1988 in Youngstown, Ohio
Patriot NT, 2015; uniform #70
Signed as a free agent on December 16, 2015
Ishmaa'ily Yuwsha Kitchen was originally signed by Baltimore as an undrafted rookie out of Kent State in 2012, and appeared in 40 games with the Browns from 2012-2014. The Patriots signed the 6-1, 334lb nose tackle after their week 14 victory at Houston when Dominique Easley was placed on injured reserve. Kitchen was a healthy scratch for the next game versus Tennessee, then released to make room for RB Steven Jackson. In the following game the Patriot defense surrendered 143 rushing yards and 428 total yards in an overtime loss to the Jets, and Kitchen was re-signed. He appeared in the week 17 loss at Miami, then was again a healthy scratch in both playoff games. Defensive linemen Kitchen, Easley and Chris Jones were all released by New England two weeks prior to the 2016 draft.
Patriots Sign Defensive Tackle Ishmaa'ily Kitchen To 53-Man Roster
FOXBORO, Mass. — The New England Patriots boosted their defensive tackle depth one day after placing Dominique Easley on injured reserve. The Patriots signed veteran defensive tackle Ishmaa'ily Kitchen to their 53-man roster. Kitchen spent three seasons with the Cleveland Browns before being...
Patriots cut a pair of defensive tackles
The New England Patriots released defensive tackle Chris Jones Friday.
www.masslive.com
Two days after releasing former first-round pick Dominique Easley, the New England Patriots have parted ways with two other defensive tackles.
Chris Jones and Ishmaa'ily Kitchen, both projected to be on the roster bubble, were cut Friday.
Kitchen, a wide body in the middle, was brought on late last year for depth.
Currently, the Patriots have Malcom Brown, Terrrance Knighton, Alan Branch, Markus Kuhn, Frank Kearse and Joe Vellano at defensive tackle. The team may look to add an interior defensive lineman in the draft. The position ranks among the Pats' top draft needs.
Happy 31st birthday to Earl Watford
Born June 24, 1990 in Philadelphia
Patriot guard, 2020 practice squad; uniform #77
Signed to the practice squad on December 15, 2020
Patriots Sign Offensive Lineman Earl Watford To The Practice Squad; Release Defensive Back Dayan Lake From The Practice Squad
Patriots announced today that they have signed offensive lineman Earl Watford to the practice squad and have released defensive back Dayan Lake from the practice squad.
Watford, 30, is a veteran of seven NFL seasons with the Arizona Cardinals (2013-17), Cleveland Browns (2018) and Tampa Bay Buccaneers (2019). He originally entered the NFL as a fourth-round draft pick (116th overall) by the Arizona Cardinals out of James Madison in the 2013 NFL Draft. The 6-foot-4, 295-pounder has played in 71 career regular season games with 25 starts and one postseason contest as a reserve. Last year with Tampa Bay, Watford played in 15 games with four starts – three at guard and one at tackle-eligible tight end.
The Patriots released Watford two weeks later, with defensive tackle Nick Thurman and inside linebacker Cassh Maluia reverting to the practice squad after the 38-9 loss to the Buffalo Bills at Gillette Stadium on Monday Night Football.
June 27, 1973: Pats sign free agent John Tanner
The Cocoa, Florida native had an atypical path to the NFL. He joined the army and fought in Viet Nam after being expelled from his high school due to an altercation with a teacher. After returning he spent two years in a junior college, then transferred to Tennessee Tech, where he played basketball. It was not until his senior year that he played organized football for the first time in his life as a senior - becoming a two-way starter at defensive end and tight end, and was named the team's MVP. Tanner played defensive end for two seasons with the Pats, where he became the franchise's original Mike Vrabel: the first primarily defensive player to score a touchdown on offense in Patriots history, and the only player in team history to do so until Vrabel perfected that versatility in 2002.
Other pro football players born on this date with New England area connections:
- Dave Lapham, 69 (June 24, 1952); the Wakefield MA native played guard for Cincinnati from 1974-83, then signed a 10-year personal services contract with The Donald to jump to the USFL. Since 1985 Lapham has been the color analyst for Bengals radio broadcasts, with his style described as "a combination of Tommy Heinsohn with the Celtics and Jerry Remy with the Red Sox in Boston".
WAKEFIELD WARRIOR FOOTBALL
www.wakefieldathletics.com
www.bengals.com
- Bill Rogers (6/24/1913-4/30/1977); this Westborough High School and Bridgton Academy alum was not a long distance runner, but was a tackle with the Lions between 1938 and 1944.
GAMECOCK ATHLETICS HALL OF FAME
gamecocksonline.com
- Erik Storz, 46 (June 24, 1975); the linebacker from Boston College spent three years with the Jaguars, and is now a senior mortgage broker for KeyBank Real Estate in New York City.
Erik Storz (2017) - Varsity Club Hall of Fame - Boston College Athletics
Erik Storz, Class: 1998 Induction: 2017 Sport(s): Football - Erik Storz '98 (Football): A native of Rockaway, New Jersey, Erik Storz led the Eagles with 13 sacks
bceagles.com
Some pro football notables born on this date:
- Antoine Winfield (1977, 44); CB had 27 interceptions with the Bills and Vikings.
Antoine Winfield
Ohio State Buckeyes - Football...
ohiostatebuckeyes.com
- Mitch Berger (1972, 49) two-time Pro Bowler averaged 43 yards on his 847 career punts.
Former NFLer Mitch Berger forever grateful for late father's influence
The 48-year-old, who played 16 NFL seasons as a punter with 11 teams, was twice named an all-pro and captured a Super Bowl in 2009 with the Pittsburgh Steelers, says he owes it all to his late father, Donald.
www.thestar.com
- Curtis Painter (1985, 36); went 0-8 with 50% more interceptions than touchdowns in Indy's 2011 'Suck for Luck' tanked season.
Colts Sticking With Painter, In Full 'Suck 4 Luck' Mode
Colts opt to keep Curtis Painter as the starting QB.
www.stampedeblue.com
Reactions: jlu52 and Zuma
captain stone
"Patriots' best, worst at the midway point - The Boston Globe
Still hard to believe the team didn't take a swing at a pass rusher early in the draft (hello, Jabaal Sheard or Brooks Reed). It has gotten so bad that when the Giants were driving, down, 13-10, Brandon Deaderick was the left end. Seriously?"
Greg Bedard absolutely nails it...Shaun Ellis ****ing sucked here.
Reactions: jmt57
Experienced Starter w/First Big Contract
jmt57 said:
I have always wondered if XX could have turned out differently (maybe the Pate Win, or more likely we lose instead of getting humiliated) if Lin Dawson wasn't injured on the very first play ... He wasn't a game changer offensively but iirc he was a very good to great blocking TE ... and lord knows the offense needed better blocking that day... With Berry abandoning the run from the get go, every fraction of a second was needed...
Reactions: jlu52, captain stone and jmt57
Pape said:
Yeah, I feel as though the Bears still would have won - the NFL as a whole had yet to figure out the kryptonite to the 46 defense - but I agree that his presence would have made the team much more competitive. Grogan would have been a better choice than Eason against their pass rush as well.
By the same vein I firmly believe that the loss of Stephen Neal to a knee injury in the second quarter of the super bowl against the Giants had a huge negative impact, overlooked by most people. Had he been healthy (he was already dealing with a shoulder injury) that could have been enough to change the outcome, in my opinion.
Reactions: jlu52, Pape and captain stone
I've also thought about that...And if Eason hits Morgan/Morgan doesn't drop the EZ pass on the very next play...Or if Don Blackmon doesn't drop an EASY Pick-6 on the next series...Thank Ganja that the 49ers destroyed Horse Mouth & the Donkeys by an even worse score a couple of years later...
Reactions: jlu52, jmt57 and Pape
By the same vein I firmly believe that the loss of Stephen Neal to a knee injury in the second quarter of the super bowl against the Giants had a huge negative impact, overlooked by most people. Had he been healthy (he was already dealing with a shoulder injury) in my opinion that could have been enough to change the outcome, in my opinion.
Yep...The right side of the OL - Hochstein & OxyKaczur - were a ****ing abomination for the rest of the game.
Reactions: jmt57 and Pape
Duke Dawson
NG Pats Fan
NEW ARTICLE: Patriots Week 4 Report Card In 27-24 OT Loss To Green Bay
PATRIOTS WILDCARD WEEKEND 12/24: BENGALS @ PATRIOTS
A Defiant Goose
PATSYLICIOUS
NEW ARTICLE: Patriots Fourth And Two Podcast: The Greatest Tight Ends In Patriots History
Actual Pats Fan
Hunter Henry and Jonnu Smith
PatsFan2


April Qian was booked on 2018-01-05 14:15. Qian was arrested by in Centre, Alabama. Qian was 37 years old at the time of the arrest.
April Qian may not have been convicted of the charges or crimes listed and are presumed innocent until proven guilty. Please contact the for more information regarding arrest records.
All of our arrest records come from the Cherokee County Sheriff's Website and are publicly available. We provide this information as a service to the citizens of Centre, Alabama, but it should not be relied upon for any type of legal action.


text:
Login Links:
John P. Parker School
Preparing Students for Life
Global Environmental Literacy
Current School Year News
Previous School Year News
Western & Southern Names Meggan Johnson 2021 Dr. Lawrence C. Hawkins Educator of the Year
Western & Southern Financial Group recently announced that Meggan Johnson, intervention specialist at Woodward Career Technical High School, has been named the 2021 Dr. Lawrence C. Hawkins Educator of the Year.
Johnson was chosen by Western & Southern from finalists who were nominated by their peers in Cincinnati Public Schools (CPS) for the award. Due to the COVID-19 pandemic, Western & Southern could not hold its usual in-person event. However, a virtual ceremony was held to honor the finalists and announce Johnson as the award recipient. WLWT-TV anchor Courtis Fuller served as emcee, and John F. Barrett, Western & Southern's chairman, president and chief executive officer, and Laura Mitchell, superintendent of CPS, congratulated the finalists. Johnson will receive a plaque and a personal check for $10,000.
"We are very pleased to recognize Meggan for her dedication to creating a love for learning in her students and serving as an exemplary role model," Barrett said. "Recognizing educators like Meggan and preparing young people for the future is a focus of Western & Southern in its efforts to help make Cincinnati the best place to live, work and celebrate life."
"Meggan's leadership at her school and impact on student achievement is truly impressive," Mitchell said. "We thank Western & Southern for honoring Meggan and commend all of the educators who were nominated."
Western & Southern established the Dr. Lawrence C. Hawkins Educator of the Year Award in 2007 to inspire and reward excellence among CPS educators. This distinguished award honors one educator each year who has elevated the educational process in public schools to an exceptional level through personal commitment, dedicated focus and outstanding results. The namesake of the award, Dr. Lawrence C. Hawkins, was a member of the elite Tuskegee Airmen, a well-respected Cincinnati educator, former executive vice president of administration at the University of Cincinnati and former Western & Southern board member. He passed away in 2009.
More information on the Dr. Lawrence C. Hawkins Educator of the Year Award.
CPS Athletics Updates
Remote Device Support and Break/Fix Services for Students
Remote Meals for January
CPS to Temporarily Return to Distance-Learning Model
Media Statement Regarding Individual CPS School Closures Due to Staffing Shortages
CPS Recent News
Reminder: CPS Returning to In-Person Learning January 24
Join CPS' College and Career Beyond The Tassel Series
Free COVID-19 Vaccines and Boosters
CPS Super 60 — January 2022
YMCA Offering Scholastic Child Care Centers
Menu - News
Connect with us and see how students are prepared for life!
Tweets by @IamCPS
Cincinnati Public School District Services
(These links take you to the CPS District Website)
Families & Students - What You Need to Know
Weather and Emergency Procedures
Central Office Departments
CPS District Website
© 2003 - 2022 Cincinnati Public Schools
Notice of Non-Discrimination | Site Map
Accessible Website Initiative

redpajama_set_name: RedPajamaCommonCrawl


With millions of people performing millions of searches each day to find content on the Internet, it makes sense that marketers want their products to be found by potential consumers. Search engines use closely guarded algorithms to determine the results that are displayed. However, determining what factors these algorithms take into account has led to the ability to get websites ranked on top of the search engines that previously wouldn't have.
1.) On page optimization: The process of fulfilling the on page requirements the search engines are looking for.
We make sure that your site is performing as efficiently as it can; that means attention to detail. Our job is to make your site a money-making machine.
Access to your SEO campaign, you can see exactly what has been done with yours.


Our multi-award winning, organic, gluten free, soya free, dairy free and vegan advent calendars will make a real treat for children of any age with or without milk allergies, dairy intolerances or who follow a gluten free or vegan diet this Christmas. Each dairy free and vegan advent calendar is filled with 100g of our quality dairy free chocolate. The fun packed, full size (A4) dairy free chocolate advent calendar box features several of the Moo Free animals and Santa enjoying a dairy free chocolate Christmas together at Santa's tree house workshop.
These vegan and dairy free chocolate advent calendars are unique. We don't believe that you will find a better tasting organic, milk chocolate tasting dairy free advent calendar manufactured anywhere else in the world.
Product description Made from a blend of cocoa, sugar & rice.
Ingredient list Cocoa* [45%] (cocoa butter, cocoa mass), sugar* [35%], rice powder* [20%], emulsifier (sunflower lecithin) & natural flavouring. *Organic ingredients.
Allergy advice May contain traces of hazelnuts. Dairy free, lactose free, gluten free, wheat free, casein free, soya free, vegetarian & vegan.


text:
Peter Green Splinter Group - HotFoot Powder (2000)
Blues Rock, Blues | Author: MorPeh | 23-05-2018, 21:27
Hot Foot Powder is an album by the British blues band the Peter Green Splinter Group, led by Peter Green. Released in 2000, this was their fifth album. Green was the founder of Fleetwood Mac and a member of that group from 1967–70, before a sporadic solo career during the late 1970s and early 1980s. Like one of the group's previous albums, The Robert Johnson Songbook, Hot Foot Powder consisted of songs written by Robert Johnson, and included contributions by a number of notable blues musicians, including Buddy Guy, Hubert Sumlin, Otis Rush, David Honeyboy Edwards, Joe Louis Walker and Dr. John. It was re-released in 2004 by Snapper Music with bonus tracks.
Artist: Peter Green Splinter Group
Title Of Album: HotFoot Powder
Label (Catalog#): Snapper Music (SMACD828)
Genre: Blues-Rock, Delta Blues
Quality: FLAC (image + .cue,log,scans)
Time: 42:54 min
Full Size: 325 MB
01. I'm A Steady Rollin' Man [03:34]
02. From Four Until Late [03:02]
03. Dead Shrimp Blues [02:49]
04. Little Queen Of Spades [03:01]
05. They're Red Hot [03:51]
06. Preachin' Blues [02:44]
07. Hell Hound On My Trail [03:31]
08. Traveling Riverside Blues [04:08]
09. Malted Milk [03:12]
10. Milkcow's Calf Blues [03:32]
11. Drunken Hearted Man [03:22]
12. Cross Road Blues [02:56]
13. Come On In My Kitchen [03:08]
Password / Пароль: MorPeh
Download / Скачать
Peter Green Splinter Group - Soho Live at Ronnie Scott's (2012)
Peter Green Splinter Group - Me and the Devil (2005)
Peter Green Splinter Group - The Best Of (2002)
Peter Green Splinter Group - Peter Green Splinter Group (1997)
Peter Green Splinter Group With Nigel Watson - The Robert Johnson Songbook ...


Our estimates and damage inspections are free and we will work around your schedule - morning, day, or night. We pride ourselves on simply doing what we say we'll do - so if we schedule your free estimate at 12:00, we'll be there at 12:00.
Our Project Coordinators are trained to listen, investigate, and figure out the best options available to you - no obligation AND ABSOLUTELY NO PRESSURE…you decide if and when you are ready…we refer to this entire process as "the customer experience" and we hold that sacred.
Our estimators carry all the popular colors and samples to help you make a good choice.
Roofing is only part of the story at Sutherlands Exteriors. We do a lot more than just roofing including siding, windows and gutters.
Regardless of the project, you will be assigned your very own Project Coordinator whose sole purpose is to make you happy. Our Project Coordinators are accessible by cell phone at any time, so you can communicate with your Project Coordinators instantly and efficiently.
has been a member of the Better Business Bureau since 2008 & is proudly listed on Angie's List.


text:
/******************************************************************************
 *  Compilation:  javac Draw.java
 *  Execution:    java Draw
 *  Dependencies: none
 *
 *  Drawing library. This class provides a basic capability for creating
 *  drawings with your programs. It uses a simple graphics model that
 *  allows you to create drawings consisting of points, lines, and curves
 *  in a window on your computer and to save the drawings to a file.
 *  This is the object-oriented version of standard draw; it supports
 *  multiple indepedent drawing windows.
 *
 *  Todo
 *  ----
 *    -  Add support for gradient fill, etc.
 *
 *  Remarks
 *  -------
 *    -  don't use AffineTransform for rescaling since it inverts
 *       images and strings
 *    -  careful using setFont in inner loop within an animation -
 *       it can cause flicker
 *
 ******************************************************************************/

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.FileDialog;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.Toolkit;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import java.awt.geom.Arc2D;
import java.awt.geom.Ellipse2D;
import java.awt.geom.GeneralPath;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;

import java.awt.image.BufferedImage;
import java.awt.image.DirectColorModel;
import java.awt.image.WritableRaster;

import java.io.File;
import java.io.IOException;

import java.net.URL;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.TreeSet;

import javax.imageio.ImageIO;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;

/**
 *  Draw. This class provides a basic capability for
 *  creating drawings with your programs. It uses a simple graphics model that
 *  allows you to create drawings consisting of points, lines, and curves
 *  in a window on your computer and to save the drawings to a file.
 *  This is the object-oriented version of standard draw; it supports
 *  multiple indepedent drawing windows.
 *

 *  For additional documentation, see Section 3.1 of
 *  Computer Science: An Interdisciplinary Approach by Robert Sedgewick and Kevin Wayne.
 *
 *  @author Robert Sedgewick
 *  @author Kevin Wayne
 */
public final class Draw implements ActionListener, MouseListener, MouseMotionListener, KeyListener {

    /**
     *  The color black.
     */
    public static final Color BLACK = Color.BLACK;

    /**
     *  The color blue.
     */
    public static final Color BLUE = Color.BLUE;

    /**
     *  The color cyan.
     */
    public static final Color CYAN = Color.CYAN;

    /**
     *  The color dark gray.
     */
    public static final Color DARK_GRAY = Color.DARK_GRAY;

    /**
     *  The color gray.
     */
    public static final Color GRAY = Color.GRAY;

    /**
     *  The color green.
     */
    public static final Color GREEN  = Color.GREEN;

    /**
     *  The color light gray.
     */
    public static final Color LIGHT_GRAY = Color.LIGHT_GRAY;

    /**
     *  The color magenta.
     */
    public static final Color MAGENTA = Color.MAGENTA;

    /**
     *  The color orange.
     */
    public static final Color ORANGE = Color.ORANGE;

    /**
     *  The color pink.
     */
    public static final Color PINK = Color.PINK;

    /**
     *  The color red.
     */
    public static final Color RED = Color.RED;

    /**
     *  The color white.
     */
    public static final Color WHITE = Color.WHITE;

    /**
     *  The color yellow.
     */
    public static final Color YELLOW = Color.YELLOW;

    /**
     * Shade of blue used in Introduction to Programming in Java.
     * It is Pantone 300U. The RGB values are approximately (9, 90, 166).
     */
    public static final Color BOOK_BLUE = new Color(9, 90, 166);

    /**
     * Shade of light blue used in Introduction to Programming in Java.
     * The RGB values are approximately (103, 198, 243).
     */
    public static final Color BOOK_LIGHT_BLUE = new Color(103, 198, 243);

    /**
     * Shade of red used in Algorithms, 4th edition.
     * It is Pantone 1805U. The RGB values are approximately (150, 35, 31).
     */
    public static final Color BOOK_RED = new Color(150, 35, 31);

    /**
     * Shade of orange used in Princeton's identity.
     * It is PMS 158. The RGB values are approximately (245, 128, 37).
     */
    public static final Color PRINCETON_ORANGE = new Color(245, 128, 37);

    // default colors
    private static final Color DEFAULT_PEN_COLOR   = BLACK;
    private static final Color DEFAULT_CLEAR_COLOR = WHITE;

    // boundary of drawing canvas, 0% border
    private static final double BORDER = 0.0;
    private static final double DEFAULT_XMIN = 0.0;
    private static final double DEFAULT_XMAX = 1.0;
    private static final double DEFAULT_YMIN = 0.0;
    private static final double DEFAULT_YMAX = 1.0;

    // default canvas size is SIZE-by-SIZE
    private static final int DEFAULT_SIZE = 512;

    // default pen radius
    private static final double DEFAULT_PEN_RADIUS = 0.002;

    // default font
    private static final Font DEFAULT_FONT = new Font("SansSerif", Font.PLAIN, 16);

    // current pen color
    private Color penColor;

    // canvas size
    private int width  = DEFAULT_SIZE;
    private int height = DEFAULT_SIZE;

    // current pen radius
    private double penRadius;

    // show we draw immediately or wait until next show?
    private boolean defer = false;

    private double xmin, ymin, xmax, ymax;

    // name of window
    private String name = "Draw";

    // for synchronization
    private final Object mouseLock = new Object();
    private final Object keyLock = new Object();

    // current font
    private Font font;

    // the JLabel for drawing
    private JLabel draw;

    // double buffered graphics
    private BufferedImage offscreenImage, onscreenImage;
    private Graphics2D offscreen, onscreen;

    // the frame for drawing to the screen
    private JFrame frame = new JFrame();

    // mouse state
    private boolean mousePressed = false;
    private double mouseX = 0;
    private double mouseY = 0;

    // keyboard state
    private final LinkedList<Character> keysTyped = new LinkedList<Character>();
    private final TreeSet<Integer> keysDown = new TreeSet<Integer>();

    // event-based listeners
    private final ArrayList<DrawListener> listeners = new ArrayList<DrawListener>();

    /**
     * Initializes an empty drawing object with the given name.
     *
     * @param name the title of the drawing window.
     */
    public Draw(String name) {
        this.name = name;
        init();
    }

    /**
     * Initializes an empty drawing object.
     */
    public Draw() {
        init();
    }

    private void init() {
        if (frame != null) frame.setVisible(false);
        frame = new JFrame();
        offscreenImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
        onscreenImage  = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
        offscreen = offscreenImage.createGraphics();
        onscreen  = onscreenImage.createGraphics();
        setXscale();
        setYscale();
        offscreen.setColor(DEFAULT_CLEAR_COLOR);
        offscreen.fillRect(0, 0, width, height);
        setPenColor();
        setPenRadius();
        setFont();
        clear();

        // add antialiasing
        RenderingHints hints = new RenderingHints(RenderingHints.KEY_ANTIALIASING,
                                                  RenderingHints.VALUE_ANTIALIAS_ON);
        hints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
        offscreen.addRenderingHints(hints);

        // frame stuff
        ImageIcon icon = new ImageIcon(onscreenImage);
        draw = new JLabel(icon);

        draw.addMouseListener(this);
        draw.addMouseMotionListener(this);

        frame.setContentPane(draw);
        frame.addKeyListener(this);    // JLabel cannot get keyboard focus
        frame.setResizable(false);
        // frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);            // closes all windows
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);      // closes only current window
        frame.setTitle(name);
        frame.setJMenuBar(createMenuBar());
        frame.pack();
        frame.requestFocusInWindow();
        frame.setVisible(true);
    }

    /**
     * Sets the upper-left hand corner of the drawing window to be (x, y), where (0, 0) is upper left.
     *
     * @param  x the number of pixels from the left
     * @param  y the number of pixels from the top
     * @throws IllegalArgumentException if the width or height is 0 or negative
     */
    public void setLocationOnScreen(int x, int y) {
        if (x <= 0 || y <= 0) throw new IllegalArgumentException();
        frame.setLocation(x, y);
    }

    /**
     * Sets the default close operation.
     *
     * @param  value the value, typically {@code JFrame.EXIT_ON_CLOSE}
     *         (close all windows) or {@code JFrame.DISPOSE_ON_CLOSE}
     *         (close current window)
     */
    public void setDefaultCloseOperation(int value) {
        frame.setDefaultCloseOperation(value);
    }

    /**
     * Sets the canvas (drawing area) to be width-by-height pixels.
     * This also erases the current drawing and resets the coordinate system, pen radius,
     * pen color, and font back to their default values.
     * Ordinarly, this method is called once, at the very beginning of a program.
     *
     * @param  canvasWidth the width as a number of pixels
     * @param  canvasHeight the height as a number of pixels
     * @throws IllegalArgumentException unless both {@code canvasWidth}
     *         and {@code canvasHeight} are positive
     */
    public void setCanvasSize(int canvasWidth, int canvasHeight) {
        if (canvasWidth < 1 || canvasHeight < 1) {
            throw new IllegalArgumentException("width and height must be positive");
        }
        width = canvasWidth;
        height = canvasHeight;
        init();
    }

    // create the menu bar (changed to private)
    private JMenuBar createMenuBar() {
        JMenuBar menuBar = new JMenuBar();
        JMenu menu = new JMenu("File");
        menuBar.add(menu);
        JMenuItem menuItem1 = new JMenuItem(" Save...   ");
        menuItem1.addActionListener(this);
        menuItem1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
                                Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
        menu.add(menuItem1);
        return menuBar;
    }

   /***************************************************************************
    *  User and screen coordinate systems.
    ***************************************************************************/

    /**
     * Sets the x-scale to be the default (between 0.0 and 1.0).
     */
    public void setXscale() {
        setXscale(DEFAULT_XMIN, DEFAULT_XMAX);
    }

    /**
     * Sets the y-scale to be the default (between 0.0 and 1.0).
     */
    public void setYscale() {
        setYscale(DEFAULT_YMIN, DEFAULT_YMAX);
    }

    /**
     * Sets the x-scale.
     *
     * @param min the minimum value of the x-scale
     * @param max the maximum value of the x-scale
     */
    public void setXscale(double min, double max) {
        double size = max - min;
        xmin = min - BORDER * size;
        xmax = max + BORDER * size;
    }

    /**
     * Sets the y-scale.
     *
     * @param min the minimum value of the y-scale
     * @param max the maximum value of the y-scale
     */
    public void setYscale(double min, double max) {
        double size = max - min;
        ymin = min - BORDER * size;
        ymax = max + BORDER * size;
    }

    // helper functions that scale from user coordinates to screen coordinates and back
    private double  scaleX(double x) { return width  * (x - xmin) / (xmax - xmin); }
    private double  scaleY(double y) { return height * (ymax - y) / (ymax - ymin); }
    private double factorX(double w) { return w * width  / Math.abs(xmax - xmin);  }
    private double factorY(double h) { return h * height / Math.abs(ymax - ymin);  }
    private double   userX(double x) { return xmin + x * (xmax - xmin) / width;    }
    private double   userY(double y) { return ymax - y * (ymax - ymin) / height;   }

    /**
     * Clears the screen to the default color (white).
     */
    public void clear() {
        clear(DEFAULT_CLEAR_COLOR);
    }

    /**
     * Clears the screen to the given color.
     *
     * @param color the color to make the background
     */
    public void clear(Color color) {
        offscreen.setColor(color);
        offscreen.fillRect(0, 0, width, height);
        offscreen.setColor(penColor);
        draw();
    }

    /**
     * Gets the current pen radius.
     *
     * @return the current pen radius
     */
    public double getPenRadius() {
        return penRadius;
    }

    /**
     * Sets the pen size to the default (.002).
     */
    public void setPenRadius() {
        setPenRadius(DEFAULT_PEN_RADIUS);
    }

    /**
     * Sets the radius of the pen to the given size.
     *
     * @param  r the radius of the pen
     * @throws IllegalArgumentException if r is negative
     */
    public void setPenRadius(double r) {
        if (r < 0) throw new IllegalArgumentException("pen radius must be positive");
        penRadius = r * DEFAULT_SIZE;
        BasicStroke stroke = new BasicStroke((float) penRadius, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
        // BasicStroke stroke = new BasicStroke((float) penRadius);
        offscreen.setStroke(stroke);
    }

    /**
     * Gets the current pen color.
     *
     * @return the current pen color
     */
    public Color getPenColor() {
        return penColor;
    }

    /**
     * Sets the pen color to the default color (black).
     */
    public void setPenColor() {
        setPenColor(DEFAULT_PEN_COLOR);
    }

    /**
     * Sets the pen color to the given color.
     *
     * @param color the color to make the pen
     */
    public void setPenColor(Color color) {
        penColor = color;
        offscreen.setColor(penColor);
    }

    /**
     * Sets the pen color to the given RGB color.
     *
     * @param  red the amount of red (between 0 and 255)
     * @param  green the amount of green (between 0 and 255)
     * @param  blue the amount of blue (between 0 and 255)
     * @throws IllegalArgumentException if the amount of red, green, or blue are outside prescribed range
     */
    public void setPenColor(int red, int green, int blue) {
        if (red   < 0 || red   >= 256) throw new IllegalArgumentException("amount of red must be between 0 and 255");
        if (green < 0 || green >= 256) throw new IllegalArgumentException("amount of red must be between 0 and 255");
        if (blue  < 0 || blue  >= 256) throw new IllegalArgumentException("amount of red must be between 0 and 255");
        setPenColor(new Color(red, green, blue));
    }

    /**
     * Turns on xor mode.
     */
    public void xorOn() {
        offscreen.setXORMode(DEFAULT_CLEAR_COLOR);
    }

    /**
     * Turns off xor mode.
     */
    public void xorOff() {
        offscreen.setPaintMode();
    }

    /**
     * Gets the current {@code JLabel} for use in some other GUI.
     *
     * @return the current {@code JLabel}
     */
    public JLabel getJLabel() {
        return draw;
    }

    /**
     * Gets the current font.
     *
     * @return the current font
     */
    public Font getFont() {
        return font;
    }

    /**
     * Sets the font to the default font (sans serif, 16 point).
     */
    public void setFont() {
        setFont(DEFAULT_FONT);
    }

    /**
     * Sets the font to the given value.
     *
     * @param font the font
     */
    public void setFont(Font font) {
        this.font = font;
    }

   /***************************************************************************
    *  Drawing geometric shapes.
    ***************************************************************************/

    /**
     * Draws a line from (x0, y0) to (x1, y1).
     *
     * @param x0 the x-coordinate of the starting point
     * @param y0 the y-coordinate of the starting point
     * @param x1 the x-coordinate of the destination point
     * @param y1 the y-coordinate of the destination point
     */
    public void line(double x0, double y0, double x1, double y1) {
        offscreen.draw(new Line2D.Double(scaleX(x0), scaleY(y0), scaleX(x1), scaleY(y1)));
        draw();
    }

    /**
     * Draws one pixel at (x, y).
     *
     * @param x the x-coordinate of the pixel
     * @param y the y-coordinate of the pixel
     */
    private void pixel(double x, double y) {
        offscreen.fillRect((int) Math.round(scaleX(x)), (int) Math.round(scaleY(y)), 1, 1);
    }

    /**
     * Draws a point at (x, y).
     *
     * @param x the x-coordinate of the point
     * @param y the y-coordinate of the point
     */
    public void point(double x, double y) {
        double xs = scaleX(x);
        double ys = scaleY(y);
        double r = penRadius;
        // double ws = factorX(2*r);
        // double hs = factorY(2*r);
        // if (ws <= 1 && hs <= 1) pixel(x, y);
        if (r <= 1) pixel(x, y);
        else offscreen.fill(new Ellipse2D.Double(xs - r/2, ys - r/2, r, r));
        draw();
    }

    /**
     * Draws a circle of radius r, centered on (x, y).
     *
     * @param  x the x-coordinate of the center of the circle
     * @param  y the y-coordinate of the center of the circle
     * @param  r the radius of the circle
     * @throws IllegalArgumentException if the radius of the circle is negative
     */
    public void circle(double x, double y, double r) {
        if (r < 0) throw new IllegalArgumentException("circle radius can't be negative");
        double xs = scaleX(x);
        double ys = scaleY(y);
        double ws = factorX(2*r);
        double hs = factorY(2*r);
        if (ws <= 1 && hs <= 1) pixel(x, y);
        else offscreen.draw(new Ellipse2D.Double(xs - ws/2, ys - hs/2, ws, hs));
        draw();
    }

    /**
     * Draws a filled circle of radius r, centered on (x, y).
     *
     * @param  x the x-coordinate of the center of the circle
     * @param  y the y-coordinate of the center of the circle
     * @param  r the radius of the circle
     * @throws IllegalArgumentException if the radius of the circle is negative
     */
    public void filledCircle(double x, double y, double r) {
        if (r < 0) throw new IllegalArgumentException("circle radius can't be negative");
        double xs = scaleX(x);
        double ys = scaleY(y);
        double ws = factorX(2*r);
        double hs = factorY(2*r);
        if (ws <= 1 && hs <= 1) pixel(x, y);
        else offscreen.fill(new Ellipse2D.Double(xs - ws/2, ys - hs/2, ws, hs));
        draw();
    }

    /**
     * Draws an ellipse with given semimajor and semiminor axes, centered on (x, y).
     *
     * @param  x the x-coordinate of the center of the ellipse
     * @param  y the y-coordinate of the center of the ellipse
     * @param  semiMajorAxis is the semimajor axis of the ellipse
     * @param  semiMinorAxis is the semiminor axis of the ellipse
     * @throws IllegalArgumentException if either of the axes are negative
     */
    public void ellipse(double x, double y, double semiMajorAxis, double semiMinorAxis) {
        if (semiMajorAxis < 0) throw new IllegalArgumentException("ellipse semimajor axis can't be negative");
        if (semiMinorAxis < 0) throw new IllegalArgumentException("ellipse semiminor axis can't be negative");
        double xs = scaleX(x);
        double ys = scaleY(y);
        double ws = factorX(2*semiMajorAxis);
        double hs = factorY(2*semiMinorAxis);
        if (ws <= 1 && hs <= 1) pixel(x, y);
        else offscreen.draw(new Ellipse2D.Double(xs - ws/2, ys - hs/2, ws, hs));
        draw();
    }

    /**
     * Draws an ellipse with given semimajor and semiminor axes, centered on (x, y).
     * @param  x the x-coordinate of the center of the ellipse
     * @param  y the y-coordinate of the center of the ellipse
     * @param  semiMajorAxis is the semimajor axis of the ellipse
     * @param  semiMinorAxis is the semiminor axis of the ellipse
     * @throws IllegalArgumentException if either of the axes are negative
     */
    public void filledEllipse(double x, double y, double semiMajorAxis, double semiMinorAxis) {
        if (semiMajorAxis < 0) throw new IllegalArgumentException("ellipse semimajor axis can't be negative");
        if (semiMinorAxis < 0) throw new IllegalArgumentException("ellipse semiminor axis can't be negative");
        double xs = scaleX(x);
        double ys = scaleY(y);
        double ws = factorX(2*semiMajorAxis);
        double hs = factorY(2*semiMinorAxis);
        if (ws <= 1 && hs <= 1) pixel(x, y);
        else offscreen.fill(new Ellipse2D.Double(xs - ws/2, ys - hs/2, ws, hs));
        draw();
    }

    /**
     * Draws an arc of radius r, centered on (x, y), from angle1 to angle2 (in degrees).
     *
     * @param  x the x-coordinate of the center of the circle
     * @param  y the y-coordinate of the center of the circle
     * @param  r the radius of the circle
     * @param  angle1 the starting angle. 0 would mean an arc beginning at 3 o'clock.
     * @param  angle2 the angle at the end of the arc. For example, if
     *         you want a 90 degree arc, then angle2 should be angle1 + 90.
     * @throws IllegalArgumentException if the radius of the circle is negative
     */
    public void arc(double x, double y, double r, double angle1, double angle2) {
        if (r < 0) throw new IllegalArgumentException("arc radius can't be negative");
        while (angle2 < angle1) angle2 += 360;
        double xs = scaleX(x);
        double ys = scaleY(y);
        double ws = factorX(2*r);
        double hs = factorY(2*r);
        if (ws <= 1 && hs <= 1) pixel(x, y);
        else offscreen.draw(new Arc2D.Double(xs - ws/2, ys - hs/2, ws, hs, angle1, angle2 - angle1, Arc2D.OPEN));
        draw();
    }

    /**
     * Draws a square of side length 2r, centered on (x, y).
     *
     * @param  x the x-coordinate of the center of the square
     * @param  y the y-coordinate of the center of the square
     * @param  r radius is half the length of any side of the square
     * @throws IllegalArgumentException if r is negative
     */
    public void square(double x, double y, double r) {
        if (r < 0) throw new IllegalArgumentException("square side length can't be negative");
        double xs = scaleX(x);
        double ys = scaleY(y);
        double ws = factorX(2*r);
        double hs = factorY(2*r);
        if (ws <= 1 && hs <= 1) pixel(x, y);
        else offscreen.draw(new Rectangle2D.Double(xs - ws/2, ys - hs/2, ws, hs));
        draw();
    }

    /**
     * Draws a filled square of side length 2r, centered on (x, y).
     *
     * @param  x the x-coordinate of the center of the square
     * @param  y the y-coordinate of the center of the square
     * @param  r radius is half the length of any side of the square
     * @throws IllegalArgumentException if r is negative
     */
    public void filledSquare(double x, double y, double r) {
        if (r < 0) throw new IllegalArgumentException("square side length can't be negative");
        double xs = scaleX(x);
        double ys = scaleY(y);
        double ws = factorX(2*r);
        double hs = factorY(2*r);
        if (ws <= 1 && hs <= 1) pixel(x, y);
        else offscreen.fill(new Rectangle2D.Double(xs - ws/2, ys - hs/2, ws, hs));
        draw();
    }

    /**
     * Draws a rectangle of given half width and half height, centered on (x, y).
     *
     * @param  x the x-coordinate of the center of the rectangle
     * @param  y the y-coordinate of the center of the rectangle
     * @param  halfWidth is half the width of the rectangle
     * @param  halfHeight is half the height of the rectangle
     * @throws IllegalArgumentException if halfWidth or halfHeight is negative
     */
    public void rectangle(double x, double y, double halfWidth, double halfHeight) {
        if (halfWidth  < 0) throw new IllegalArgumentException("half width can't be negative");
        if (halfHeight < 0) throw new IllegalArgumentException("half height can't be negative");
        double xs = scaleX(x);
        double ys = scaleY(y);
        double ws = factorX(2*halfWidth);
        double hs = factorY(2*halfHeight);
        if (ws <= 1 && hs <= 1) pixel(x, y);
        else offscreen.draw(new Rectangle2D.Double(xs - ws/2, ys - hs/2, ws, hs));
        draw();
    }

    /**
     * Draws a filled rectangle of given half width and half height, centered on (x, y).
     *
     * @param  x the x-coordinate of the center of the rectangle
     * @param  y the y-coordinate of the center of the rectangle
     * @param  halfWidth is half the width of the rectangle
     * @param  halfHeight is half the height of the rectangle
     * @throws IllegalArgumentException if halfWidth or halfHeight is negative
     */
    public void filledRectangle(double x, double y, double halfWidth, double halfHeight) {
        if (halfWidth  < 0) throw new IllegalArgumentException("half width can't be negative");
        if (halfHeight < 0) throw new IllegalArgumentException("half height can't be negative");
        double xs = scaleX(x);
        double ys = scaleY(y);
        double ws = factorX(2*halfWidth);
        double hs = factorY(2*halfHeight);
        if (ws <= 1 && hs <= 1) pixel(x, y);
        else offscreen.fill(new Rectangle2D.Double(xs - ws/2, ys - hs/2, ws, hs));
        draw();
    }

    /**
     * Draws a polygon with the given (x[i], y[i]) coordinates.
     *
     * @param x an array of all the x-coordindates of the polygon
     * @param y an array of all the y-coordindates of the polygon
     */
    public void polygon(double[] x, double[] y) {
        int n = x.length;
        GeneralPath path = new GeneralPath();
        path.moveTo((float) scaleX(x[0]), (float) scaleY(y[0]));
        for (int i = 0; i < n; i++)
            path.lineTo((float) scaleX(x[i]), (float) scaleY(y[i]));
        path.closePath();
        offscreen.draw(path);
        draw();
    }

    /**
     * Draws a filled polygon with the given (x[i], y[i]) coordinates.
     *
     * @param x an array of all the x-coordindates of the polygon
     * @param y an array of all the y-coordindates of the polygon
     */
    public void filledPolygon(double[] x, double[] y) {
        int n = x.length;
        GeneralPath path = new GeneralPath();
        path.moveTo((float) scaleX(x[0]), (float) scaleY(y[0]));
        for (int i = 0; i < n; i++)
            path.lineTo((float) scaleX(x[i]), (float) scaleY(y[i]));
        path.closePath();
        offscreen.fill(path);
        draw();
    }

   /***************************************************************************
    *  Drawing images.
    ***************************************************************************/

    private static BufferedImage getImage(String filename) {

        // from a file or URL
        try {
            URL url = new URL(filename);
            return ImageIO.read(url);
        }
        catch (IOException e) {
            // ignore
        }

        // in case file is inside a .jar (classpath relative to StdDraw)
        try {
            URL url = StdDraw.class.getResource(filename);
            return ImageIO.read(url);
        }
        catch (IOException e) {
            // ignore
        }

        // in case file is inside a .jar (classpath relative to root of jar)
        try {
            URL url = StdDraw.class.getResource("/" + filename);
            return ImageIO.read(url);
        }
        catch (IOException e) {
            // ignore
        }
        throw new IllegalArgumentException("image " + filename + " not found");
    }

    /**
     * Draws picture (gif, jpg, or png) centered on (x, y).
     *
     * @param  x the center x-coordinate of the image
     * @param  y the center y-coordinate of the image
     * @param  filename the name of the image/picture, e.g., "ball.gif"
     * @throws IllegalArgumentException if the image is corrupt
     * @throws IllegalArgumentException if {@code filename} is {@code null}
     */
    public void picture(double x, double y, String filename) {
        if (filename == null) throw new IllegalArgumentException("filename argument is null");
        BufferedImage image = getImage(filename);
        double xs = scaleX(x);
        double ys = scaleY(y);
        int ws = image.getWidth();
        int hs = image.getHeight();
        if (ws < 0 || hs < 0) throw new IllegalArgumentException("image " + filename + " is corrupt");

        offscreen.drawImage(image, (int) Math.round(xs - ws/2.0), (int) Math.round(ys - hs/2.0), null);
        draw();
    }

    /**
     * Draws picture (gif, jpg, or png) centered on (x, y),
     * rotated given number of degrees.
     *
     * @param  x the center x-coordinate of the image
     * @param  y the center y-coordinate of the image
     * @param  filename the name of the image/picture, e.g., "ball.gif"
     * @param  degrees is the number of degrees to rotate counterclockwise
     * @throws IllegalArgumentException if the image is corrupt
     * @throws IllegalArgumentException if {@code filename} is {@code null}
     */
    public void picture(double x, double y, String filename, double degrees) {
        if (filename == null) throw new IllegalArgumentException("filename argument is null");
        BufferedImage image = getImage(filename);
        double xs = scaleX(x);
        double ys = scaleY(y);
        int ws = image.getWidth();
        int hs = image.getHeight();
        if (ws < 0 || hs < 0) throw new IllegalArgumentException("image " + filename + " is corrupt");

        offscreen.rotate(Math.toRadians(-degrees), xs, ys);
        offscreen.drawImage(image, (int) Math.round(xs - ws/2.0), (int) Math.round(ys - hs/2.0), null);
        offscreen.rotate(Math.toRadians(+degrees), xs, ys);

        draw();
    }

    /**
     * Draws picture (gif, jpg, or png) centered on (x, y), rescaled to w-by-h.
     *
     * @param  x the center x coordinate of the image
     * @param  y the center y coordinate of the image
     * @param  filename the name of the image/picture, e.g., "ball.gif"
     * @param  w the width of the image
     * @param  h the height of the image
     * @throws IllegalArgumentException if the image is corrupt
     * @throws IllegalArgumentException if {@code filename} is {@code null}
     */
    public void picture(double x, double y, String filename, double w, double h) {
        if (filename == null) throw new IllegalArgumentException("filename argument is null");
        Image image = getImage(filename);
        double xs = scaleX(x);
        double ys = scaleY(y);
        double ws = factorX(w);
        double hs = factorY(h);
        if (ws < 0 || hs < 0) throw new IllegalArgumentException("image " + filename + " is corrupt");
        if (ws <= 1 && hs <= 1) pixel(x, y);
        else {
            offscreen.drawImage(image, (int) Math.round(xs - ws/2.0),
                                       (int) Math.round(ys - hs/2.0),
                                       (int) Math.round(ws),
                                       (int) Math.round(hs), null);
        }
        draw();
    }

    /**
     * Draws picture (gif, jpg, or png) centered on (x, y), rotated
     * given number of degrees, rescaled to w-by-h.
     *
     * @param  x the center x-coordinate of the image
     * @param  y the center y-coordinate of the image
     * @param  filename the name of the image/picture, e.g., "ball.gif"
     * @param  w the width of the image
     * @param  h the height of the image
     * @param  degrees is the number of degrees to rotate counterclockwise
     * @throws IllegalArgumentException if the image is corrupt
     * @throws IllegalArgumentException if {@code filename} is {@code null}
     */
    public void picture(double x, double y, String filename, double w, double h, double degrees) {
        if (filename == null) throw new IllegalArgumentException("filename argument is null");
        Image image = getImage(filename);
        double xs = scaleX(x);
        double ys = scaleY(y);
        double ws = factorX(w);
        double hs = factorY(h);
        if (ws < 0 || hs < 0) throw new IllegalArgumentException("image " + filename + " is corrupt");
        if (ws <= 1 && hs <= 1) pixel(x, y);

        offscreen.rotate(Math.toRadians(-degrees), xs, ys);
        offscreen.drawImage(image, (int) Math.round(xs - ws/2.0),
                                   (int) Math.round(ys - hs/2.0),
                                   (int) Math.round(ws),
                                   (int) Math.round(hs), null);
        offscreen.rotate(Math.toRadians(+degrees), xs, ys);

        draw();
    }

   /***************************************************************************
    *  Drawing text.
    ***************************************************************************/

    /**
     * Writes the given text string in the current font, centered on (x, y).
     *
     * @param x the center x-coordinate of the text
     * @param y the center y-coordinate of the text
     * @param s the text
     */
    public void text(double x, double y, String s) {
        offscreen.setFont(font);
        FontMetrics metrics = offscreen.getFontMetrics();
        double xs = scaleX(x);
        double ys = scaleY(y);
        int ws = metrics.stringWidth(s);
        int hs = metrics.getDescent();
        offscreen.drawString(s, (float) (xs - ws/2.0), (float) (ys + hs));
        draw();
    }

    /**
     * Writes the given text string in the current font, centered on (x, y) and
     * rotated by the specified number of degrees.
     *
     * @param x the center x-coordinate of the text
     * @param y the center y-coordinate of the text
     * @param s the text
     * @param degrees is the number of degrees to rotate counterclockwise
     */
    public void text(double x, double y, String s, double degrees) {
        double xs = scaleX(x);
        double ys = scaleY(y);
        offscreen.rotate(Math.toRadians(-degrees), xs, ys);
        text(x, y, s);
        offscreen.rotate(Math.toRadians(+degrees), xs, ys);
    }

    /**
     * Writes the given text string in the current font, left-aligned at (x, y).
     *
     * @param x the x-coordinate of the text
     * @param y the y-coordinate of the text
     * @param s the text
     */
    public void textLeft(double x, double y, String s) {
        offscreen.setFont(font);
        FontMetrics metrics = offscreen.getFontMetrics();
        double xs = scaleX(x);
        double ys = scaleY(y);
        // int ws = metrics.stringWidth(s);
        int hs = metrics.getDescent();
        offscreen.drawString(s, (float) xs, (float) (ys + hs));
        draw();
    }

    /**
     * Copies the offscreen buffer to the onscreen buffer, pauses for t milliseconds
     * and enables double buffering.
     * @param t number of milliseconds
     * @deprecated replaced by {@link #enableDoubleBuffering()}, {@link #show()}, and {@link #pause(int t)}
     */
    @Deprecated
    public void show(int t) {
        show();
        pause(t);
        enableDoubleBuffering();
    }

    /**
     * Pause for t milliseconds. This method is intended to support computer animations.
     * @param t number of milliseconds
     */
    public void pause(int t) {
        try {
            Thread.sleep(t);
        }
        catch (InterruptedException e) {
            System.out.println("Error sleeping");
        }
    }

    /**
     * Copies offscreen buffer to onscreen buffer. There is no reason to call
     * this method unless double buffering is enabled.
     */
    public void show() {
        onscreen.drawImage(offscreenImage, 0, 0, null);
        frame.repaint();
    }

    // draw onscreen if defer is false
    private void draw() {
        if (!defer) show();
    }

    /**
     * Enable double buffering. All subsequent calls to
     * drawing methods such as {@code line()}, {@code circle()},
     * and {@code square()} will be deffered until the next call
     * to show(). Useful for animations.
     */
    public void enableDoubleBuffering() {
        defer = true;
    }

    /**
     * Disable double buffering. All subsequent calls to
     * drawing methods such as {@code line()}, {@code circle()},
     * and {@code square()} will be displayed on screen when called.
     * This is the default.
     */
    public void disableDoubleBuffering() {
        defer = false;
    }

    /**
     * Saves this drawing to a file.
     *
     * @param  filename the name of the file (with suffix png, jpg, or gif)
     */
    public void save(String filename) {
        File file = new File(filename);
        String suffix = filename.substring(filename.lastIndexOf('.') + 1);

        // png files
        if ("png".equalsIgnoreCase(suffix)) {
            try {
                ImageIO.write(offscreenImage, suffix, file);
            }
            catch (IOException e) {
                e.printStackTrace();
            }
        }

        // need to change from ARGB to RGB for jpeg
        // reference: http://archives.java.sun.com/cgi-bin/wa?A2=ind0404&L=java2d-interest&D=0&P=2727
        else if ("jpg".equalsIgnoreCase(suffix)) {
            WritableRaster raster = offscreenImage.getRaster();
            WritableRaster newRaster;
            newRaster = raster.createWritableChild(0, 0, width, height, 0, 0, new int[] {0, 1, 2});
            DirectColorModel cm = (DirectColorModel) offscreenImage.getColorModel();
            DirectColorModel newCM = new DirectColorModel(cm.getPixelSize(),
                                                          cm.getRedMask(),
                                                          cm.getGreenMask(),
                                                          cm.getBlueMask());
            BufferedImage rgbBuffer = new BufferedImage(newCM, newRaster, false,  null);
            try {
                ImageIO.write(rgbBuffer, suffix, file);
            }
            catch (IOException e) {
                e.printStackTrace();
            }
        }

        else {
            System.out.println("Invalid image file type: " + suffix);
        }
    }

    /**
     * This method cannot be called directly.
     */
    @Override
    public void actionPerformed(ActionEvent e) {
        FileDialog chooser = new FileDialog(frame, "Use a .png or .jpg extension", FileDialog.SAVE);
        chooser.setVisible(true);
        String filename = chooser.getFile();
        if (filename != null) {
            save(chooser.getDirectory() + File.separator + chooser.getFile());
        }
    }

   /***************************************************************************
    *  Event-based interactions.
    ***************************************************************************/

    /**
     * Adds a {@link DrawListener} to listen to keyboard and mouse events.
     *
     * @param listener the {\tt DrawListener} argument
     */
    public void addListener(DrawListener listener) {
        // ensure there is a window for listenting to events
        show();
        listeners.add(listener);
        frame.addKeyListener(this);
        frame.addMouseListener(this);
        frame.addMouseMotionListener(this);
        frame.setFocusable(true);
    }

   /***************************************************************************
    *  Mouse interactions.
    ***************************************************************************/

    /**
     * Returns true if the mouse is being pressed.
     *
     * @return {@code true} if the mouse is being pressed;
     *         {@code false} otherwise
     */
    public boolean mousePressed() {
        synchronized (mouseLock) {
            return mousePressed;
        }
    }

    /**
     * Returns the x-coordinate of the mouse.
     * @return the x-coordinate of the mouse
     */
    public double mouseX() {
        synchronized (mouseLock) {
            return mouseX;
        }
    }

    /**
     * Returns the y-coordinate of the mouse.
     *
     * @return the y-coordinate of the mouse
     */
    public double mouseY() {
        synchronized (mouseLock) {
            return mouseY;
        }
    }

    /**
     * This method cannot be called directly.
     */
    @Override
    public void mouseClicked(MouseEvent e) {
        // this body is intentionally left empty
    }

    /**
     * This method cannot be called directly.
     */
    @Override
    public void mouseEntered(MouseEvent e) {
        // this body is intentionally left empty
    }

    /**
     * This method cannot be called directly.
     */
    @Override
    public void mouseExited(MouseEvent e) {
        // this body is intentionally left empty
    }

    /**
     * This method cannot be called directly.
     */
    @Override
    public void mousePressed(MouseEvent e) {
        synchronized (mouseLock) {
            mouseX = userX(e.getX());
            mouseY = userY(e.getY());
            mousePressed = true;
        }
        if (e.getButton() == MouseEvent.BUTTON1) {
            for (DrawListener listener : listeners)
                listener.mousePressed(userX(e.getX()), userY(e.getY()));
        }

    }

    /**
     * This method cannot be called directly.
     */
    @Override
    public void mouseReleased(MouseEvent e) {
        synchronized (mouseLock) {
            mousePressed = false;
        }
        if (e.getButton() == MouseEvent.BUTTON1) {
            for (DrawListener listener : listeners)
                listener.mouseReleased(userX(e.getX()), userY(e.getY()));
        }
    }

    /**
     * This method cannot be called directly.
     */
    @Override
    public void mouseDragged(MouseEvent e)  {
        synchronized (mouseLock) {
            mouseX = userX(e.getX());
            mouseY = userY(e.getY());
        }
        // doesn't seem to work if a button is specified
        for (DrawListener listener : listeners)
            listener.mouseDragged(userX(e.getX()), userY(e.getY()));
    }

    /**
     * This method cannot be called directly.
     */
    @Override
    public void mouseMoved(MouseEvent e) {
        synchronized (mouseLock) {
            mouseX = userX(e.getX());
            mouseY = userY(e.getY());
        }
    }

   /***************************************************************************
    *  Keyboard interactions.
    ***************************************************************************/

    /**
     * Returns true if the user has typed a key.
     *
     * @return {@code true} if the user has typed a key; {@code false} otherwise
     */
    public boolean hasNextKeyTyped() {
        synchronized (keyLock) {
            return !keysTyped.isEmpty();
        }
    }

    /**
     * The next key typed by the user.
     *
     * @return the next key typed by the user
     */
    public char nextKeyTyped() {
        synchronized (keyLock) {
            return keysTyped.removeLast();
        }
    }

   /**
     * Returns true if the keycode is being pressed.
     *

     * This method takes as an argument the keycode (corresponding to a physical key).
     * It can handle action keys (such as F1 and arrow keys) and modifier keys
     * (such as shift and control).
     * See {@link KeyEvent} for a description of key codes.
     *
     * @param  keycode the keycode to check
     * @return {@code true} if {@code keycode} is currently being pressed;
     *         {@code false} otherwise
     */
    public boolean isKeyPressed(int keycode) {
        synchronized (keyLock) {
            return keysDown.contains(keycode);
        }
    }

    /**
     * This method cannot be called directly.
     */
    @Override
    public void keyTyped(KeyEvent e) {
        synchronized (keyLock) {
            keysTyped.addFirst(e.getKeyChar());
        }

        // notify all listeners
        for (DrawListener listener : listeners)
            listener.keyTyped(e.getKeyChar());
    }

    /**
     * This method cannot be called directly.
     */
    @Override
    public void keyPressed(KeyEvent e) {
        synchronized (keyLock) {
            keysDown.add(e.getKeyCode());
        }

        // notify all listeners
        for (DrawListener listener : listeners)
            listener.keyPressed(e.getKeyCode());
    }

    /**
     * This method cannot be called directly.
     */
    @Override
    public void keyReleased(KeyEvent e) {
        synchronized (keyLock) {
            keysDown.remove(e.getKeyCode());
        }

        // notify all listeners
        for (DrawListener listener : listeners)
            listener.keyPressed(e.getKeyCode());
    }

    /**
     * Test client.
     *
     * @param args the command-line arguments
     */
    public static void main(String[] args) {

        // create one drawing window
        Draw draw1 = new Draw("Test client 1");
        draw1.square(.2, .8, .1);
        draw1.filledSquare(.8, .8, .2);
        draw1.circle(.8, .2, .2);
        draw1.setPenColor(Draw.MAGENTA);
        draw1.setPenRadius(.02);
        draw1.arc(.8, .2, .1, 200, 45);

        // create another one
        Draw draw2 = new Draw("Test client 2");
        draw2.setCanvasSize(900, 200);
        // draw a blue diamond
        draw2.setPenRadius();
        draw2.setPenColor(Draw.BLUE);
        double[] x = { .1, .2, .3, .2 };
        double[] y = { .2, .3, .2, .1 };
        draw2.filledPolygon(x, y);

        // text
        draw2.setPenColor(Draw.BLACK);
        draw2.text(0.2, 0.5, "bdfdfdfdlack text");
        draw2.setPenColor(Draw.WHITE);
        draw2.text(0.8, 0.8, "white text");
    }

}

redpajama_set_name: RedPajamaGithub


text:
Jonathan Maaninga
By Editor | March 17, 2022 | 0
Jonathan William Maaninga, age 53 of rural Menahga, Minnesota, passed over to be with his Savior Jesus Christ; and as the Holy Spirit of Jesus Christ has been left with us, our separation is merely physical… and merely temporary. Jon's soul departed his human vessel on Wednesday, March 9, 2022 following a blood clot caused by an injury from a snowmobile accident on Saturday, March 5.
Jonathan was born on April 2, 1968, to Judy Madelyn (Paurus) and Harlin Evert Maaninga in Park Rapids. He was Baptized and Confirmed at Redeemer Lutheran Church in Menahga. Jon spent his youth being dedicated to the family dairy farm, attending school at Menahga Public School, graduating in 1986.
Jon's childhood was filled with memories of the love of his parents, siblings, aunts, uncles, cousins, neighbors and friends; riding his pedal bike to the beach; dirt biking, hunting, snowmobiling, ice fishing and enjoying life on the farm. He loved to just walk through the woods with his gun and enjoy nature, and he was blessed with an undeniable God-given talent to drive anything with a motor – especially dirt bikes!
The farm life taught him the value of hard work, family dependence and dedication, and a drive to repair, create and build anything that was needed to keep the farm going. This transferred over to nearly every aspect of his life, and is an invaluable trait he passed to his children.
After graduation, Jon worked a short time at a dairy farm before venturing off to the cities to learn the drywall finishing trade, going into business with his older brother Scott (Maaninga Brothers Drywall Services). Jon enjoyed not just working with his brother, but the guidance and support that Scott always shared.
It was also around this time that his oldest brother Greg urged Jon to take his "love for speed" on his motorcycle to the drag strip, where he would be "legal and safe." Jon took that hobby up with a passion, and enjoyed weekends at the drag races for many years. He loved being with his brother and all the other "motorheads." Greg and Jon also enjoyed snowmobile radar runs, which would become an adventurous family activity in the years to come.
In the autumn of 1992, while Jon was living in Anoka, he became acquainted with Rhonda Jean Hughes. He stole her heart when he humbly came to tell her that he caught his coat on a jar of salsa, causing it to fall and break in an aisle of the gas station where she worked. His unique sincerity, genuine kindness and soft heartedness instantly stole her heart. On New Year's Eve 1992-93, after Rhonda experienced a strong Holy Spirit moment for her and her roommate Juanita Brown to go out that night, Jon and Rhonda came together at Blueberry Pines, and later that evening at the home of Kim Wuollet. Soulmates joined for life!
Jon and Rhonda's intense connection caused a desire and determination to constantly be together. They moved to Elk River in May 1993 while Jon continued to work with Scott, and Rhonda attended technical college. Jon always desired to return to the "Up North country life" fearing he never could, but God had a miraculous plan to fulfill the desires of his heart. The week after her graduation in 1995, Rhonda gained employment at the Sebeka Menahga Review Messenger. Rhonda and her good friend Lisa Murphy searched for a place for Jon and Rhonda to rent, and found a mobile home in the country east of Menahga.
When Jon came to see the property, he was ecstatic to see that it adjoined acreage owned by his father that had been in the Maaninga name for some 100 years! Within a month, Jon felt completely blessed to return home to live on that property. After living in the cities for about nine years, he finally started his own business up north, Jonathan Maaninga Drywall Services, and continued successfully in that venture for over 26 years until his passing.
On January 20, 1996, Jonathan and Rhonda were joined together in Holy Matrimony at Redeemer Lutheran Church, followed by a honeymoon at Lutsen where they enjoyed their best downhill skiing together!
They rented for a year, and Jon was persistent about asking landlord Jeff Schindeldecker to consider selling the property to them. Jeff finally relented, and in 1999 Jonathan and Rhonda moved the mobile home out of the yard after building their first home together. That home, where they originally planned to remain for the rest of their lives, was built with tremendous guidance from local builder Jim Kangas and many other skilled subcontractors. It laid a foundation of experience for Rhonda's floor-plan designing and Jon's step-by-step building experience. Jon was never afraid to dive into a project, and housebuilding was no exception. He hired out the aspects that he felt were beyond his capabilities, and searched for ways to finish any and every other aspect himself.
Then came a determination to one day be debt-free, so Jonathan and Rhonda came up with a plan to sell that house, split the property, build another house, stay a few years, sell it, and finally build a home where their hearts truly ached to be – on a 40 acre field on the attached property, cleared by Jon's dad Harlin in 1971, surrounded by woodlands and with a beautiful panoramic view of Jim Cook Lake.
Jon and Rhonda moved into their "stepping stone" second house with their two sons in 2006. Their plan to stay just a few years was delayed by a downturn in the economy and other life events. But God was good to them, and in 2016 they moved onto their dream property at Jim Cook Lake. That property was graciously gifted by Harlin and Judy Maaninga, and received with a wholehearted gratitude by Jonathan, Rhonda and their children. This was truly a priceless gift to them!
Their humble, perfect-for-them, dream home was finished in 2017, and they moved in with their youngest son and their daughter. This build was by far Jon's most treasured, as he and his boys did a great majority of the work. Lumber was harvested from the property and cut on Jon's second homemade sawmill for the inside trim work, and the bat and board siding. Also using resources from the property, Jon created beautiful rock fireplace surrounds at each of their last two homes. He undoubtedly left many of his fingerprints along the way with his amazing abilities. They will be a comfort and cherished.
From 2015 until 2021, it was a great joy for Jonathan and Rhonda that their oldest son Jorah, an adult at this time, lived just a short distance away, in the house where Harlin grew up. This had been Jon's great-grandparents' (Lars and Maria Pulju), home place, and also where his grandparents, Evert and Saima Maaninga, had homesteaded.
In the spring of 2021, Jon and Rhonda felt honored to pay-it-forward and continue the tradition by gifting a piece of the property to son Jorah and his fiancee. After the two were wed in late summer, they moved into their home just down the driveway from Jon and Rhonda in the fall of 2021.
As with so many things, Jon would get an idea, research and create. He loved to metal fab and work with lumber from the property. He made everything from trailers, sawmills, wood processors, sauna stoves, wood boiler stoves, picnic tables, saunas, fish houses, benches for bonfires, and too many others to say!
Among his craziest of ideas, Jon would refurbish old vehicles – cut the roof off, take the glass out, build a roll bar, and spray paint it. Whoever came to visit, no matter who they were, could rarely leave without a joy-filled tour through the property's woods and trails in Jon's unique open-air vehicle. Many vehicles came and went over the years, each with a fun nickname given by Jon, including the Sunbuggy, the Buksu, and the "Maaninga Stranger" (instead of the Polaris Ranger).
Jonathan had a perfect philosophy of working hard to get to the point of having the absolute most fun possible! When the work was done, the fun began, and he laughed loud and loved openly. He was always ready to provoke a smile, and to wear his heart on his sleeve and let everyone know how much he loved them! His greatest joy was spending time with family, and new and old friends, especially over a meal, at a bonfire, or giving tractor-pulled hayrides or bobsled rides. He loved the continuity and history of his "Maaninga" property, which adjoined the Jim Cook Cemetery where many of his ancestors were laid, and he loved hearing the stories of their lives from his dad.
Above all earthly blessings, without doubt, Jonathan loved his family! He did everything he could to make sure they were taken care of, shared his opinion of their best qualities, and told them every day, over and over, "I love you!" He treated his wife with continual gratitude, and lovingly and consistently had his hand on her or his arm around her, even during church services.
He taught his children to live in his ways: Take care of each other, express your appreciation and love, build the things you need if you can, give generously, work hard (but always take time out to chat!), seek the Lord, and always – always – do what you think is right.
Jonathan adored his son Jorah's shared (and even-more-than-his) love for dirt bikes! This was a bond that brought them countless hours of enjoyment together, from riding at home, building tracks, teaching and learning riding styles, watching motocross and supercross, going to Jorah's races, buying and selling bikes, ordering parts, and even breaking and repairing them! Jon was a great "race dad" for many years, and thoroughly embraced that role, and everyone at the track knew it! He loved his and Jorah's similarities, yet he was quick to say how much more talented and creative Jorah was in his many accomplishments.
Every chance he had, Jon told of his son Jadon's dedication, knowledge and abilities for hunting, trapping and fishing. From Jadon's seventh through twelfth grade years, Jon was the pleased father of Jadon, who was often the top shooter on the trap shooting team. Jon was also impressed by Jadon's ability to refurbish and repair boats and other vehicles, as well as build duck blinds and accessorize bow-fishing boats. He was beaming every time Jadon or his new wife would send him pictures of them with the fish they caught, and he loved to tell everyone about Jadon's trip to Alaska with the Haataja family!
Jonathan found joy in his two sons' natural ability for riding dirt bikes, four wheelers and snowmobiles, and was especially pleased with their love for our Lord and their love for their wives, always encouraging them to be as good to them as they could. Jonathan loved his two daughter-in-laws as much as his own! It was a tremendous blessing to all of us that he was here to attend both weddings within the past year.
Back when Jon and Rhonda's two boys were getting older and the years began to pass, he confessed later that he was feeling a bit saddened at the idea that he may never get a baby girl. When his daughter Jyrni was born, he was filled with a joy that completed him, stating often how happy it made him to finally have her. And as she grew, she too gained a tighter and tighter grasp on his heart. He loved to chat with her about her knowledge of reptiles and amphibians, birds and chickens, etc, etc, etc! He lovingly called her "our walking encyclopedia."
This past deer hunting season, Jon was prayfully determined to get Jyrni an opportunity to shoot a deer. That mission resulted in the truly blessed memory of her being with her dad when she shot her first deer! The light in Jon's eyes when Jyrni did her baking and brought a treat to him could light up a room! He really knew her worth, and thoroughly enjoyed her presence. Thankfully, and just as Jon would have insisted, his two boys remain to carry on his love and be father figures for her.
In every turn of their lives, Jon and Rhonda were miraculously on the same page. In all their ventures of work or being stay-at-homes, having and raising children, moving and building houses, even when to give up alcohol, their motives were in alignment. They were opposite in little things in more ways than we could list, but each opposite perfectly balanced out each other. They often returned to the "traditional family" lifestyle, where Rhonda enjoyed nurturing Jon, receiving in return a beautiful life beyond her dreams. He always encouraged her to write and create, and offered to help her fill the desires of her heart. He was a kinder man than she could ever dream to have. He always – always – took care of her, and never, ever once made her feel unloved.
Jonathan was giddy every time his family or friends all got together, and his joy was infectious. There was never a quiet or uncomfortable moment when Jon was present, but mostly filled with eager-talking of fun stories with lots of joking around, yet he'd often mix in some good moral guidance. His body was wearing down from the years of diligent hard work, and his spirit was willing to accept the Lord's call in His timing, as he had mentioned to many in the past several months. His days were numbered before he was born.
The time has come for us to cherish and honor our amazing earthly memories of Jonathan Maaninga and the delight that he was, and time to release him unto his Savior. His earthly absence will certainly leave us with a hole to fill larger than we can yet imagine, yet it's also hard to imagine that by God's amazing grace, that the great gift that Jon was to us, won't overshadow our sorrow.
Jonathan was welcomed home by grandparents William and Hilda Paurus and Evert and Saima Maaninga, niece Rachael Huotari, nephew Cody Maaninga, and several of his and Rhonda's aunts, uncles and cousins. Waiting to join him are his loving wife Rhonda Hughes Maaninga; children Jorah and Madison Maaninga, Jadon and Emma Maaninga, and Jyrni Maaninga; parents Judy and Harlin Maaninga; siblings Greg (Tammy) Maaninga, Scott Maaninga, Heidi (Michael) Huotari; parents-in-law Ronald (Tammy) Hughes and Ellen (Randy) Graves; sister-in-laws Sharon (Gary) Weber and Tina Heim; nieces and nephews Carly (Scott) Klicker, Sara Maaninga (Jesse Swartz), Matthew Maaninga, Zachary Maaninga, Maija Maaninga, Derek Huotari, Emily Huotari, Tyler Weber, and Jonathan, Ishariah, Damyon and Miah Heim; and many aunts, uncles, cousins and friends.
Per Jon's comforting request, funeral arrangements are entrusted to Karvonen Funeral & Cremation Services (karvonenfuneralhome.com). Services will be held at Redeemer Lutheran Church in Menahga. Burial will be at Jim Cook Cemetery. Officiant is Pastor David Walsh. Organist will be Ruth Ann Kinnunen and Soloist will be Annette Haas.
Visitation will be held on Friday, March 18 from 4-7 p.m. with prayer service at 6 p.m. followed by a chance to speak and share memories. Visitation will continue on Saturday, March 19, from 10-11 a.m., with the Funeral Service at 11 a.m. Christian burial will follow the Service, with lunch after back at the church.
Pallbearers will be Bruce Kako, Scott Klicker, Jesse Swartz, Daric Kako, Zach Brosdahl and Kody Kocurek. Honorary Pallbearers are: Matthew Malin, Jeff Clark, Brandon Butler, Bill Alden, David Hanson, Justin Decker and Gordy Kussatz. The family requests memorial donations in lieu of flowers.
Arrangements were entrusted to Karvonen Funeral Home of Wadena. Online condolences may be left at www.karvonenfuneralhome.com .


text:
Ioanna Sakellaraki
Nyx (the night) 2019
The series started evolving four years ago, when the death of my father sparked a journey back home and the exploration of traditional Greek funerary rituals. Endeavouring to further understand my roots, I aimed to look at how the work of mourning contextualises our modern regimes of looking, reading and feeling with regards to the subject of death in Greece today. Inspired by the origins of ancient Greek laments, I dwelled within traditional communities of the last female mourners inhabiting the Mani peninsula of Greece looking for traces of bereavement and grief. The series triggers the memory while embracing transformation. It develops like a Greek myth about life and death contextualising the idea of cultural loss and mourning today.
analogue medium format film negative, scanned and post-edited digitally
*The image titles are inspired by Greek mythological symbols and female spirits who personified death in ancient tales.
Stygere (hateful) 2019
While most know the Mani peninsula in Greece for its breathtaking cliffs and quaint coastal villages, it is also home to a tradition of ritual lament that dates back to ancient times. Considered an art, ''moirologia'' (Fate Songs) can be traced to the choirs of the Greek tragedies and over the centuries, it became a profession exclusive to women. Those who were especially adept at this improvisation and could endure the physical and emotional traumas of the work, were hired by families to lead in the ritual lament. Today in the Mani peninsula live some of the last professional mourners of Greece. The aging of the villages in the region and the difficulties during the current economic woes besetting the country seem to be part of the reasons for the disappearance of the dying art of professional mourning.
analogue medium format film negative, scanned and post-edit
*The image titles are inspired by Greek mythological symbols and female spirits who personified death in ancient t
Apate (deceit) 2019
Making a work about grief requires a journey through memory and memory loss. In a way, these images work as vehicles for mourning perished ideals of vitality, prosperity and belonging, attempting to tell something further than their subjects by creating a space where death can exist. During my making process, the distinction between the real and the imaginary and the disturbance between represented space and personality lead to a tangible experience of separation. Through my images, this separation becomes an encounter. The human figure becomes a space opening into the outside where the image finds its condition and disappears into it, functioning as a passage between sheltering something from death and establishing with death a relation of freedom.
Note: The text above was written by the Artist. No modification was made by COCA.
https://ioannasakellaraki.com/
Ioanna Sakellaraki (b.1989) is a graduate of journalism, photography and culture. She was recently awarded with The Royal Photographic Society Postgraduate Bursary Award and nominated for the Inge Morath Award by Magnum Foundation, the Prix HSBC, the Prix Levallois and the Prix Voies Off. After obtaining an MA in European Urban and Cultural Studies, Ioanna currently completes an MA in Photography at the Royal College of Art in London. Recent shows include: International Photography Exhibition, Royal Photographic Society, Bristol (2020), Festival Circulations, 104, Paris (2020), Les Recontres de la Photographie, Palais El Badi, Marrakech (2019), The Truth in Disguise, GESTE Paris (2019), La nouvelle génération documente, Galerie Le Réverbère, Lyon (2019), The Photography Prize, Argentea Gallery, Birmingham (2019), Photo Israel, Azrieli Sarona, Tel Aviv (2019), Athens Photo Festival, Benaki Museum, Athens (2018), Kolga Tbilisi Photo, Artarea Gallery, Tbilisi (2018).
ABILITY OF THE ARTIST
Share this Artist
PARTNER OF COCA PROJECT
COCA | CENTER OF CONTEMPORARY ARTISTS
BARCELONA - ROME - GROTTAGLIE | CF: 97965020585 | artist@cocaproject.art


text:
Another tough extra innings loss with the Jays losing in 12 innings by a score of 2-1.Two picks for Sunday plus a system pick:
(8:05 ET) Boston Red Sox @ New York Yankees: OVER 9 Runs 1.94
(Doubront vs Nova)
Felix Doubront (L) will head to the mound to take on the Yankees in an attempt to even the four game series at two games. Felix is 1-1 on the season and currently has a 9.00 ERA, a .410 OPB and a 2.00 WHIP. Felix gave up 5 earned runs and 6 hits in 2.2 innings against Texas on April.8th, and in his start prior to that on April 3rd against Baltimore, Doubront gave up 6 hits and 3 earned runs in 5.1 innings pitched. Ivan Nova is expected to take the mound for the Yankees. Ivan has also made two appearances this season, and currently maintains an 8.68 ERA, and a 2.25 WHIP. Ivan was pummeled by Baltimore on Tuesday making it through just 3.2 innings while allowing 10 hits, 7 earned runs which contributed to a final score of 14-5 for the Orioles. We should expect to see plenty of runs on Sunday in New York, take the over in this one.
(Buehrle vs Jimenez)
It took 12 innings for the Orioles to get past the Jays on Sunday by a final score of 2-1. Mark Buehrle (L) will take the mound and has had two incredible performances under his belt this season, allowing just 1 earned run in 2 starts, for a combined total of 14 innings pitched. Buehrle currently has a 0.64 ERA, a 1.00 WHIP and a .259 OBP. Ubaldo Jimenez hasn't experienced similar results, having gone 0-2 season to date with a 6.75 ERA, a .431 OBP and a 1.97 WHIP. Jimenez has pitched 10.2 innings this season and allowed 13 hits, 8 earned runs, 8 BB and 2 home runs. If Buehrle continues with his strong performance on the mound we can expect to see the Jays get by the Orioles just as they did on Friday evening.
LA Dodgers @ Arizona Diamondbacks: DODGERS 1.85