text:
Checking in on… the Big EastPosted by jstevrtc on January 23rd, 2010
Rob Dauster of Ballin Is a Habit is the RTC correspondent for the Big East Conference.
Jeremy Hazell can score.
No one has questioned that. Ever.
He's averaging 22.9 PPG. He put 41 on West Virginia. He's hit 30 four times.
No, the issue for Hazell isn't putting up points. Its how he gets his points.
Prior to Thursday night's game against Louisville, an argument could have been made that Hazell was the most selfish player in the Big East, if not the entire country. Yes, Hazell is an outstanding three-point shooter, but he only makes 32.5% of his attempts from deep.
Because Hazell has a bit of a problem with shot selection. He has a knack for hitting some incredibly tough shots, but far too often he forces quick shots, challenged shots, early in a possession. There is nothing wrong with taking a tough shot at the end of a shot clock, or the end of the game, or even when you've knocked down three or four jumpers in a row – your proverbial heat check.
But there is something wrong with taking the number of forced jumpers that Hazell was taking early in the season. Take a look at some of the shooting performances Hazell has had this season:
- In a win over Monmouth, Hazell scored 26 points, but was 9-23 from the floor and 5-14 from three.
- In a loss at Temple, Hazell finished with just 11 points while shooting 4-17 from the field and 1-11 from three.
- Hazell's two best scoring outputs of the season came in back-to-back losses against West Virginia and Syracuse, when he went for 41 and 38 points, respectively. But in those two games combined, Hazell was just 26-64 from the floor and 10-34 from three.
- Hazell scored just 13 points on 5-20 shooting, 2-8 from three, in a loss at UConn.
And while he has had his economic scoring performances, those are, for the most part, few and far between.
Now fast forward to Thursday's game against Louisville. Seton Hall picked up a win in a do-or-die game for the Pirates at-large hopes as they played arguably their best basketball of the season.
While there were some line-up changes – most notably using Keon Lawrence strictly off of the ball – the biggest difference was Hazell and his shot selection. The 6'5 junior finished the game with 25 points, but he only needed 12 shots to do so, hitting nine and making 3-6 from deep. He played 39 minutes, and in those 39 minutes, Hazell took just a single bad shot.
And it was an awful shot. With just four minutes left on the clock and the Hall up 12, Hazell airballed a deep three with a good 30 seconds on the shot clock after the Pirates had broken the Louisville press.
Doris Burke, who was doing the color for the game, ripped him. The twitterati ripped him. No doubt Bobby Gonzalez ripped him.
(Side note: Burke is a very underrated commentator. She really knows the game, she breaks it down in an insightful manner, and she does it in a way that makes what she is explaining seem very basic. Bill Simmons may disagree, but Burke should be spending more time away from the sideline.)
But while ripping him for taking a poor shot with a big lead late in the game, you must also commend him. Hazell's mindset is "shoot, shoot, shoot, score, score, score". He has always looked for his best shot first, and the best shot for the team second. But tonight, it was different. Louisville chased Hazell around all night, for the most part having a defender in his jock everytime he caught the ball.
What happened as a result is that driving lanes opened up. Post up opportunites became available. And for maybe the first time in a game I've seen Hazell play, he didn't take it as a personal challenge. He didn't try to prove that he could score despite an opponent's game plan centering around slowing him down. If he didn't have a shot or a lane to drive on the catch, he moved the ball. This meant that guys like Jordan Theodore, who played a fantastic game, going for 17 points and 4 assists on a season-high 11 shots, and Keon Lawrence and Eugene Harvey had an opportunity to take advantage of those driving lanes.
Seton Hall has a lot of talent on their roster. How much? Well, that's tough to say, but I think I'm far from the only person that believes this team is much better than their 11-6 (2-4 in the Big East) record would indicate.
Tonight, the Hall played their best game of the season and picked up arguably their biggest win of the season. The reason why is that Jeremy Hazell, the most talented player on a talented roster, gave his teammates the opportunity to show how good they are.
Hopefully, he will learn from that.
Other news and notes:
- Believe it or not, but Greg Monroe is currently the third leading scorer for Georgetown. Why? Because Austin Freeman is averaging 19.6 PPG over the last eight games while Chris Wright is posting 18.8 PPG over that stretch. That's not to say Monroe isn't important. In fact, it is pretty tough to argue against Monroe being their most valuable player. He's their best rebounder, their best post defender, and without a doubt the player that the Hoyas run their offense through. Watching him work out of the high post – find cutters, putting the ball on the floor and getting to the rim – is a thing of beauty. But what Georgetown didn't have last season was potency on the offensive end, and both Freeman and Wright and developed into guys that can go for 20 on a given night. More importantly, they have become players that can create their own shots in the half court. Hell, Pitt is one of the best defensive teams in the country, and Wright was getting to the rim at will on Wednesday night. I know Georgetown runs a system, and I know JT3's goal is to get the best shot for the team, but there are times when, as a coach, you need to say "f*** it, here's the ball, go get me a basket". Right now, the Hoyas have two guys that can do that.
- The Big East is being touted as a very good conference again this season, but the teams in the middle of the pack have quite a bit of work to do to guarantee themselves a bid to the tournament. The top five – Villanova, Syracuse, Pitt, West Virginia, and Georgetown – can be considered all but locks at this points. But after that, who is a tournament team? Notre Dame? Cincinnati? UConn? Louisville? Seton Hall? Marquette? Granted, .500 in the Big East, as long as there are a couple of good wins sprinkled in, should be enough to garner a bid this season with the Pac-10 down, and outside of Seton Hall and Marquette, every team listed is at least .500 in the league. But for the fans of the teams on the bubble, don't sleep easy just yet. Combined, those six teams have amassed just four tournament quality wins (excluding games between two of the listed teams): Cincinnati's win over Maryland, UConn's win over William & Mary, and Marquette's wins over Xavier and Georgetown. That's shaky ground to stand on.
- Congratulations must be given to DePaul, who got five points from Mike Stovall in the final 9.7 seconds of the game, including a fadeaway jumper with 0.7 seconds left for the win, as they picked up their first regular season Big East win since the 2008 season. As for Marquette, this is just another in a season's worth of tough losses. Their four losses in Big East play have come by a total of six points, and their three losses in the non-conference were by a total of 14 points.
- "I feel like during the game, we gave up. And we can't get better, we can't improve, if we give up on games. The high school I went to, no matter what the score is you gotta play till the game's over and I felt like we just gave up at the end." That quote is from Rutgers freshman Dane Miller, who had 26 points, 8 boards, and 6 assists in a 94-68 loss to Villanova. That's not a good thing to hear.
TEAM OF THE WEEK: Syracuse Orange
The Orange solidified their status as one of the Big East elite as they beat both West Virginia and Notre Dame on the road this week, improving to 5-1 in the conference and 18-1 on the season, with their only loss coming to Pitt. The guy that impressed me the most this week was Brandon Triche. Triche had a terrible start to the game against West Virginia, but made a number of crucial plays during the game-deciding run. For a player that wasn't ranked in many top 100 lists coming out of high school, Triche is now averaging 10.4 PPG and 3.2 APG, starting at the point for the #5 team in the country.
PLAYER OF THE WEEK: Scottie Reynolds, Villanova
Is there a conference that has more player of the year candidates? Wes Johnson, Luke Harangody, Jerome Dyson, Da'Sean Butler, Ashton Gibbs, Lazar Hayward, Greg Monroe. But the favorite right now hasto be Scottie Reynolds. If the numbers he's posted this season – 18.7 PPG, 2.9 RPG, 3.4 APG – aren't enough, the plays he made down the stretch at Marquette, against Louisville, and against Georgetown (among other) may change your mind. For the week, Reynolds averaged 18.0 PPG, but it was his 27 point performance, on 8-15 shooting, and tiebreaking basket against a Georgetown team that had overcome a 17 point lead that earned him the nod.
(Side note about the power rankings: Yes, I know that Pitt beat Syracuse, and I know that Georgetown beat Pitt, which should mean that Georgetown is ranked above Pitt and Pitt above Syracuse. But, for that to happen, Syracuse would then be the fourth best team in the Big East. They aren't the fourth best team in the Big East, in fact I think they are the best team in the Big East. So instead of ranking the teams – at least 2-4 – based on head-to-head wins, I'm sticking with putting them in order of who I think is the best.)
1. Villanova: 17-1, 6-0
Last Week: 1/17 vs. Georgetown 82-77, 1/20 vs. Rutgers 94-68
Next Week: 1/23 @ St. John's, 1/27 vs. Notre Dame
2. Syracuse: 18-1, 5-1
Last Week: 1/16 @ West Virginia 72-71, 1/18 @ Notre Dame 84-71
Next Week: 1/23 vs. Marquette, 1/25 vs. Georgetown
3. Georgetown: 14-3, 5-2
Last Week: 1/17 @ Villanova 77-82, 1/20 @ Pitt 74-66
Next Week: 1/23 vs Rutgers, 1/25 @ Syracuse
4. Pitt: 15-3, 5-1
Last Week: 1/16 vs. Louisville 82-77 OT, 1/20 vs. Georgetown 66-74
Next Week: 1/24 @ Seton Hall, 1/28 vs. St. John's
5. West Virginia: 14-3, 5-2
Last Week: 1/16 vs. Syracuse 71-72, 1/20 @ Marshall 68-60
Next Week: 1/23 vs. Ohio State, 1/26 @ DePaul
6. Cincinnati: 13-6, 4-3
Last Week: 1/16 vs. Notre Dame 60-58, 1/20 vs. South Florida 78-70
Next Week: 1/24 @ Louisville
7. Connecticut: 12-6, 3-3
Last Week: 1/17 @ Michigan 63-68, 1/20 @ St. John's 75-59
Next Week: 1/23 vs. Texas
8. Notre Dame: 14-5, 3-3
Last Week: 1/16 @ Cincinnati 58-60, 1/18 vs. Syracuse 71-84
Next Week: 1/23 vs. DePaul
9. Louisville: 12-7, 3-3
Last Week: 1/16 @ Pitt 77-82 OT, 1/21 @ Seton Hall 77-80
Next Week: 1/24 vs. Cincinnati
10. Marquette: 11-7, 2-4
Last Week: 1/17 vs. Providence 93-63, 1/20 @ DePaul 50-51
Next Week: 1/23 @ Syracuse, 1/26 vs. Rutgers
11. Seton Hall: 11-6, 2-4
Last Week: 1/21 vs. Louisville 80-77
Next Week: 1/24 vs. Pitt
12. Providence: 11-7, 3-3
Last Week: 1/17 @ Marquette 93-63
Next Week: 1/23 vs. South Florida
13. St. John's: 12-6, 2-4
Last Week: 1/17 vs. DePaul 67-47, 1/20 @ UConn 59-75
Next Week: 1/23 vs. Villanova
14. South Florida: 11-7, 1-5
Last Week: 1/16 vs. Rutgers 73-64, 1/20 @ Cincinnati 70-78
Next Week: 1/23 @ Providence
15. DePaul: 8-10, 1-5
Last Week: 1/17 @ St. John's 47-67, 1/20 vs. Marquette 51-50
Next Week: 1/23 @ Notre Dame, 1/26 vs. West Virginia
16. Rutgers: 9-9, 0-6
Last Week: 1/16 @ South Florida 64-73, 1/20 vs. Villanova 68-94
Next Week: 1/23 @ Georgetown, 1/26 @ Marquette

subset: commoncrawl


text:
Evana Roth said she was in the process of planning a funeral for her husband Raymond Roth, who went missing at a New York-area beach on Saturday, when she found e-mails on her step-son's computer indicating her husband was alive.
One of those e-mails provided to the press Friday read: "There needs to be a way for me to find out how things are going. You cannot call from your phone. Go to a pay phone or borrow your friend's phone."
Another said: "I need to get to the bank for cash for the trip. DO NOT allow that a--hole to give the house away."
U.S. & World
Evana Roth claims her husband took $10,000 from their bank account, changed his will, had the house transferred to his name and then put it up for sale. She also claims he tripled his life insurance policy before he was reported missing.
Her husband's intent, Roth said, was to "defraud" her. Her lawyer Leonard Leeds speculated that Roth planned to fake his own drowning death, then have his son and brother collect on his estate and funnel the money to him.
She told reporters she knew nothing about the scheme until she found the e-mails, at which point she went to authorities.
"I had no knowledge that he would do anything of this sort," said Roth, who described her relationship with her husband of 12 years as being like having a roommate with whom she had little communication.
Police seized computers from their home after getting a warrant Thursday, Roth said.
She believes that while rescue workers were looking for her husband near Jones Beach on Long Island, he was at a four-bedroom time share in Florida. She said there was no doubt in her mind her step-son Jon was involved in this scheme.
Roth said her husband lost his job earlier this month and had to turn over a licensed handgun to Nassau County, N.Y., police after threatening former co-workers. She added that her husband had gotten rid of his suits and given up his car
"A man who got fired, got desperate perhaps," said Roth of her husband. "No way out, but crime is not a path to follow."
Her husband has been texting and calling her since word surfaced that he was alive, Roth said, sharing a number of the texts with reporters.
A text she recieved Thursday night read: "It didn't work out the way I thought it would. I did it for you."
Friday morning he texted her: "What is going on? Heard you are having a press conference. Be Nice. Almost 15 years together."
After the press conference, Roth said she received another text from her husband: "Now you're not ever speaking to me again."
Roth's lawyer said they will seek an order of protection against her husband.


text:
Saturday, December 27, 2008
The Bitter From The Sweet
At the step I get out of my wheelchair, brace myself against both walls with arms outstretched and then lift one foot and them pull myself up. It doesn't sound arduous but it is. Not so much the energy but the panic that comes from a fear of falling is almost overwhelming. I feel a sense of real accomplishment when I get back into the chair and roll over to the car.
But they've cleared out the front of the building during the holidays and our driveway is now in full working order. I pulled off the elevator into the lobby to wait while Joe went down to get the car and pull round. I chatted with several people who came into the building. It almost seemed like all the youngsters in the building were away somewhere as everyone seemed quite elderly and many used canes or walkers themselves.
Everyone enquired about holidays and exchanged delighted remarks about how wonderful they had been and continue to be. One woman stopped to talk to me, I think she was both chatty and pleased to be able to stop and catch her breath for a moment. She suggested that going out in the wheelchair was 'folly' until I explained to her that I was waiting for a car. When the elevator came she bid me farewell and thanked me for a pleasant chat.
When she got on the elevator I heard her saying hello to a woman who was coming up from doing laundry in the basement. As the door closed she said, 'That big man in the wheelchair, you know he's not at all bitter!'
I think it's odd that people are surprised at the lack of bitterness in a person with a disability. It is my experience, and I know that this is perhaps biased by the fact that it is my experience, that people with disabilities tend not to be very bitter people at all. I find bitterness more often in a certain type of soul not a in a different type of body.
Years ago I had a friend who became increasingly bitter as my career started to take off and I was being invited to speak and to publish more and more often. He couldn't understand why he, a handsome thin man, was being passed over in his work while I was flourishing in mine. He felt, somehow, that I needed to be 'punished' for my weight and for my decidedly unfashionable sense of fashion.
Then too, I met a woman who was very successful - in the eyes of the world. Yet privately she was bitter and angry. She felt every possible slight. Looked for ill will behind every compliment. Looked for mockery in every welcoming smile. She could look at beauty and see only competition. She could not bite into her life for fear of poison.
Bitterness and regret are disabling conditions, much more so than the necessity of a wheelchair or the use of a communication board. Bitterness and regret wash colour out of the world, taste out of your mouth and pleasure out of your skin. Bitterness and regret are habitual disabilities that reinforce themselves, they take moments and twist them into horrible shapes, they take expectations and form them into threats, they feed on fear and feast on terror.
I don't know what the old woman expected to find buried in her conversation with me, but I'm glad that when she expected bitter - she tasted sweet. It means that I've lived, successfully, through another year.
7 comments:
- Belinda said...
May all of our hearts be sweet pillows of purity, unfettered by bitterness, envy or easy offence.
What a wonderful start to preparin for a whole new year. It's not here yet, but this is when I start thinking of these things. Thank you.
- 27 December 2008 at 08:52
First, a side note to Andrew, if he is reading this: I left a response to the comment you left in Dave's recent post, Survey Says (where you wished there were no labels).
Second: I've never quite understood where the "bitter" stereotype comes from. Fortunately I haven't really run into it myself as a Deaf person. (Except maybe indirectly, where people express surprise that I, as a Deaf person, can still be cheerful "despite everything I have to deal with" or surprise at my patience with people who don't immediately "get" my deafness or what I need because of it)
I suppose this stereotype is partly rooted in the assumption that anyone with a disability must feel their supposed "loss" very keenly at every moment of every day for the rest of their lives. I think this might be a reaction to people's limited imaginations: they try to imagine themselves as a disabled person and can only see the perceived loss. They don't know enough to realize that many of the things they *think* they would lose don't actually got lost, they just get done differently (for example, a deaf person doesn't lose the experience of watching television, they just start watching it with captions). They also forget that people who are born with a disability have learned all along all the skills they need to build a life around the fact that they can't do a certain, very narrow set of things--but that they CAN do a great many OTHER things. And they forget that even people who acquire a disability much later in life (who might, indeed, suffer a great deal of grief in the first few years while they're still learning new ways of doing things, and learning to accept that they will now need to do certain things differently) do usually adjust and learn to cope over time. So why assume that grief will neccesarily turn to bitterness, or that bitterness is automatically going to entrench itself?
- 27 December 2008 at 11:24
- Andrew said...
Just goes to show how we can change others opinions without even realising it! Purely just 'being' is truly effective!
p.s. to Andrea Shettle, - I've responded on the original post you referred to.
- 27 December 2008 at 14:39
- rickismom said...
Bitterness and anger are the worst disability of all....
- 27 December 2008 at 16:00
- Becca said...
I've found that sometimes that bitterness comes from a serious lack of self esteem, and you have to wonder at what point their lives took that turn--sometimes it can be ingrained from an unfulfilling childhood. Very sad.
- 27 December 2008 at 16:47
- Kim said...
I know just what you mean! I've been blind since birth and a quadriplegic since 2004. I've had people ask me why I'm not bitter and mad at the world. I don't understand why I should be at all!
I've even had people accuse me of not accepting that I'm disabled because I'm happy and they wouldn't be with one disability, let alone three.
I guess the problem is they only see things in a negative way. They don't see that I have a great guide dog, a puppy I'm training to become my next guide/service dog, a very loving and wonderful boyfriend and some really good friends. I've gotten to meet so many people and go so many places because of my "disabilities". Experiences I wouldn't have had otherwise. I would not be the person I am today if I wasn't "disabled".
I'd rather be "disabled" than bitter any day! I really think bitter people are more disabled than anyone just because of their attitudes!
I also have to get over a step to get to the parking garage, but my boyfriend just lifts up the front of my wheelchair on the way down the step and pulls me over it by the front on the way back. I still don't know why they couldn't have put a small ramp there!
- 27 December 2008 at 19:57
- Terri said...
Amen! Type of soul, not body--Amen.
- 28 December 2008 at 13:39


text:
Chamillionaire: Who Am I? XXL Interview "Houston Is Dead"
Cham plugs his new mixtape, declares, "Houstone is dead" and plots the citys resurrection
Please click the "Report" button below if the video on this page is not working properly.
Comments will only be displayed by verified emails. No Spamming or Racism.


text:
Four Days in January
Once a year, I like to ride my bike outside of the District of Columbia and for purposes that aren't going to work or the grocery store. Also, once a year I like to ride my bike "a long distance." So, I glommed on to a ride with Ed, Mary, Alex, Ryan and Kevin and we rode to Leesburg and then took a boat trip and then rode back in Maryland and all the while I had a great time and it was a good route and ride, though one in which I had to make greater haste than I would've normally because I had some weekend errands that I needed to accomplish before the weekend went errant. My errands involved a certain big box wholesale retailer where I bought conspicuously large sizes of items including chocolate cake, tequila, coffee and canola oil. You might not want to go shopping at a place that sells giant chocolate cakes immediately after an 80 mile, or conversely, you might really want to do exactly that. Anyway, to sum up and reiterate, it was a really fun and I'd certainly go bicycling with that lot again some time.
Etymologically, the word "spirit" is derived (probably) from the Latin spiritus meaning "breath" and breaths mean inhalation and exhalation. Bicycling to work is, for me, a source of exultation and that's why these nothing more dispiriting than finding one's tire flat after returning from walking the dogs after having inflated that tire. This was the Brompton and I daren't'd ride the Surly as I discovered along the ride the day before (or maybe Ed discovered. It's like a Leif Ericson/Christopher Columbus situation) that one of my brake pads had nearly worn away to nothingness. I took Bikeshare to the Metro and then found a way to break my light in a closing train door. I decided to also take the train home and I don't remember that as being terrible, but it was slow. I like that DC is taking steps to facilitate bicycle use, but if it aspires to be a much better city, it needs more frequent (and faster) public transportation.
I fixed the Brompton Tuesday morning. I saw in addressing the flat (hello, flat) that the tube had been previously patched and in seeing this, I then agreed that, yes, I had previously patched this tube. The tube, apparently, could not abide one more inflation and so died. That tube was a total drama queen. The new tube, itself intact, seems more comfortable holding onto air than its predecessor. I think it rained in the morning. At some point, the bike stopped being able to shift gears. It only has two gears. If shifting were a yes/no question, my bike's answer was to go "uhh" and look down at its sneakers.
On the way home is when the fun happened and by fun, I mean my falling down. There's recently been some utility work on Pennsylvania Avenue where it intersects 3rd Street and as part of the utility work there's a gash in the pavement. I tried to jump over this gash, but maybe a little too late and with far too little finesse. My left hand, right knee, left thigh and left pectoral muscle all the hit ground at around the same time as my overturned bike. It was peachy that the assembled mass of motorists at the intersection had the chance to rate my tumble. On technique, I would score low, but the artistry was fairly impressive. I ripped one of my gloves and also destroyed one of my cork grips. For awhile, I was having a problem extricating my chain from some other part of the mostly folded bike. I eventually sorted it out and the bike is fine and I'm fine. It was very silly.
I put new brake pads on the Surly and on that bike found my way to work this morning. So far, I've yet to fall down or break anything. I took Q Street and drank some free-for-bike-commuters coffee outside of The Bike Rack and that was nice. I rode R Street and it's been maybe a month or two since I've last taken that route and while there is putatively a bike lane on that street, it seemed more harrowing that I remembered it. Also, Massachusetts Avenue seemed longer than I remembered it. I guess in my memories, all roads are sedate and all hills are short. My memory is applying to be a Bicycle Friendly Community.
4 comments:
Oof. I'm glad you're OK. Utility cuts are dangerous things--I still have a scar on my hip from where the road leapt up and bit me during an alleycat in November. And hooray for free coffee!ReplyDelete
Tough week. Apply coffee. Tomorrow morning. And cake. If you haven't had enough cake yet this week, that is.ReplyDelete
- AnonymousJanuary 16, 2014 11:24 AM
I once tried to hop two stairs near a Metro station but clipped the second. My rear wheel described a near-perfect circle over my tumbling body, right in front of a mass of subway commuters. As a I rolled to a stop, I called out, "Did you get the shot? I really don't want to have to do that again."ReplyDelete
- AnonymousJanuary 19, 2014 8:13 PM
I lived on a cobbled laneway for about 3 years. After falling there one day in the rain I had the heebie jeebies every time I turned into that laneway to come home. The mental scars outlasted the physical by a long way. At least your crash was on a temporary feature - should help with recovering confidence...ReplyDelete


text:
Knowledge Analyst, Shanghai
At BCG, Explorers are unafraid to embark on new journeys. They try new solutions to untangle complex problems and drive transformational change. Curtis has the courage to take action.
The best part of working at BCG is you never know what and who you will work with the next day. The uncertainty keeps the fun, and challenge!
Prior to joining BCG, I studied international relations and economics in undergraduate and graduate school. After a brief working experience in the nonprofit/policy research sector, BCG introduced me to the business world.
I joined the firm as a knowledge analyst with the Global Advantage practice, focusing primarily on emerging markets and related topics, such as global operations and outbound M&A. In the past year and a half, working in my KA role, I have constantly experienced new opportunities and challenges in my day-to-day work. Here at BCG, I am put on a steep learning curve where I am encouraged to accumulate knowledge and form insights on emerging markets via a variety of approaches: handling daily requests from case teams, supporting proposal and case work, or driving targeted research work.
My involvement in an outbound M&A report really sums up my BCG experience. From drafting company surveys to conducting expert interviews, developing report content, and following up on the market launch, the nine-month ongoing effort exposed me to some of the most brilliant minds and sparkling thoughts in the business world.
Curtis holds an economics and international studies degree from Indiana University and a master's degree from Johns Hopkins School of Advanced International Studies.
Q: When did you know you belonged at BCG?
A: When I saw the print copy of my first BCG report.
Q: How has BCG helped you grow and succeed?
A: Transitioning from nonprofit sector to the business world is not an easy task. BCG helped me in that transition, which is fun and challenging in hindsight.
Q: How do you maintain a sustainable career balance at BCG?
A: First, learn to love what you do. Balance comes with passion.


text:
In his inaugural address, President Obama spoke of ours as "a moment that will define a generation." He pointed specifically to the men and women in the armed forces as those who "embody the spirit of service; a willingness to find meaning in something greater than themselves." "Precisely this spirit of generosity," the president explained, "must inhabit us all." His is a clear call to service, quite the opposite of so much we have witnessed during the past year, which might be called the year of Generation G, for greed.
Consumerism, greed and self-centeredness have surely contributed to the economic morass in which we find ourselves. Is it time now to move to a new spirit? Can we foster a culture or civilization of service, a civic generation? Generation X produced the pop culture of the 80's and 90's. Then came the millennials of Generation Y, born between 1980 and 2000. What might we call the new generation? Instead of C for cellphone, I for Internet, V for virtual or D for digital, how about Generation S—for service?
This spirit is already in the air. The Peace Corps (founded in 1961), which enlists college graduates and retirees, continues to labor in 76 countries, working in education, development and care for the environment. Habitat for Humanity, begun in 1976, has built more than a million homes for the poor. Campus Compact, begun in 1985 with four universities (Georgetown among them), now includes 1,200 colleges committed to involving college students in tutoring, home building and caring for the sick and elderly. Princeton University now encourages its incoming freshmen to spend a precollegiate year in social service in a foreign country.
A number of educational institutions at the high school and college level encourage or even require students to dedicate a designated number of hours to community service as a prerequisite for receiving a diploma. Faculty members are encouraged to accompany and guide students on overseas visits and volunteer projects. Fraternities and sororities may take up a specific charity or need in their community. In classrooms, the concept of service-learning is growing. Staff members and students integrate community service with reflection on the experience and instruction. Students, to give just one example, assist in collecting trash and cleaning rivers and lots, and then examine what makes up the trash and study better ways to reduce waste and pollution.
Such organizations as the Jesuit and Ignatian Volunteer Corps and the Lutheran, Franciscan and Mercy Volunteer Corps are only a few of the religious-based programs that are leading the way, inspiring and enabling persons of every age to give time and energy to projects at home and abroad.
The new administration, in addition to the creation of five new service corps in the fields of teaching, health care, clean energy, veterans' assistance and emergency preparedness, also plans a major increase in AmeriCorps to 250,000 from its current level of 75,000. This will enable adults of all ages to meet critical needs in communities by engaging with nonprofit groups in teaching, mentoring, improving health service and building housing. Those who complete a year of service are eligible to receive an education award of $4,725 toward college tuition. Teach for America places approximately 4,000 graduating college seniors in teaching positions in needy schools. Large corporations and small businesses are also joining in. A growing sense of corporate social responsibility leads an increasing number of companies to encourage and even reward employees for community service beyond the workplace.
In the face of the economic downturn and hardships, with cutbacks in programs for the needy and for teachers, the need for Generation S becomes all the greater. Part of the economic stimulus, in addition to adequate salaries for teachers, might be to legislate tax benefits for them and for other employees who can demonstrate hours given to community service.
Some years ago, the Nobel Prize-winner Albert Schweitzer, already famous as a Scripture scholar and musician, became a medical doctor and served in Gabon, West Africa. He once addressed a group of students in the United States: "I do not know what your destiny will be, but one thing I know; the only ones among you who will really be happy are those who have sought and found how to serve."
A revolution is taking place with a new set of values. This is our hope: that schools, corporations, businesses, churches and faith-based groups will take up the torch and encourage, empower and shape Generation S. In 1994 Congress declared Martin Luther King Jr. Day a National Day of Service. Such a day could lead to years of service. The label Generation S should not be reserved to persons grouped by age, but should designate multitudes of young and old Americans who are civic-minded and dedicated to serving the common good.


text:
The National Science Foundation (NSF) has offered its most prestigious award for young scientists, the CAREER Award, to two University of Rochester researchers: Paul Ampadu and Justin Ramsey. The NSF CAREER award is given to promising scientists early in their careers and is selected on the basis of creative proposals that effectively integrate research and education.
Paul Ampadu, assistant professor of electrical and computer engineering, won his CAREER award for research to efficiently and reliably create networks of heterogeneous technologies on a single chip. He will receive $400,000 over five years.
Ampadu is working to address the critical reliability problem of integrating deep nanometer CMOS and emerging nanoelectronics processors and memories on a chip. These dissimilar blocks communicate with one another over closely spaced, unreliable links, requiring effective error control to improve link reliability at reduced energy and performance costs.
"Paul's research in networks-on-chip is an exciting area at the frontiers of electrical and computer engineering that surely will be important in future integrated circuits, especially those that combine a lot of different functions such as computing, communications, memory, signal processing and others," said Mark Bocko, chair of the Department of Electrical and Computer Engineering. "As more functionality is packed onto a single integrated circuit the possibilities are endless, such as an iPhone on a single chip; however, the challenges are huge."
Ampadu was born in Ghana and educated in China and Taiwan before coming to the United States. He earned his doctorate in Electrical and Computer Engineering from Cornell University in 2004, and was appointed an assistant professor at the University of Rochester that same year.
In addition to his research, he is deeply involved in several community outreach efforts that seek to mentor underrepresented students in order to inspire, recruit, and retain them in the field of engineering. For his contributions to mentoring students, Ampadu recently received a national Black Engineer of the Year Special Recognition Award and has been selected to receive a University of Rochester Charles Drew Professors Choice Award.
Justin Ramsey, assistant professor of biology, won his CAREER award for combining basic research of plant evolution with educational and community outreach efforts related to Rochester-area forest habitats. He will receive $800,000 over five years.
Ramsey's research combines molecular analysis, greenhouse studies, and field experiments to understand how plants diverge into new species. He plans to use the funding to study the contributions of whole genome duplication (polyploidy) to the evolution of reproductive barriers in plants. Ramsey's education and outreach efforts are focused on natural areas on and adjacent to the University's South Campus. These habitats— which include old-growth forests, meadows, and wetlands— provide students with excellent educational opportunities within walking distance of campus.
"Justin is one of our young leaders in ecology. This area and the related area of sustainability are becoming increasingly important for our students," says Thomas Eickbush, chair of the Department of Biology. "Many students already gravitate to his laboratory to conduct independent studies. He discovered this priceless gem of a mature woodland in our backyard with a stunning diversity of plant and animal fauna. He is leading the way to making these woods a valuable preserve for future generations of students."
Ramsey completed his doctorate in botany at the University of Washington in 2003, and was a National Science Foundation Postdoctoral Fellow at the University of Guelph from 2004 to 2005. He joined the University of Rochester in 2006.


text:
Structure Fire at Futura Trailer Park in Missoula
Missoula Rural Fire crews are on the scene of a structure fire at the Futura Trailer Park at 6485 Highway 10 West in Missoula.
Assistant Chief Brent Christofferson said in a press release that the call came in to 9-1-1 at about 5:08 p.m.
First responding units reported fire and smoke billowing out of the trailer with the occupants confirmed to be out of the building. As of 6:10 p.m. firefighters were actively involved in suppression efforts and had the fire initially knocked down. There were no injuries reported at the time the press release was issued, and Missoula Rural Fire investigators were on the way to determine the cause of the fire.


text:
U.S. Senate Passes Animal Fighting Amendment
by Michael Markarian
— Our thanks to Michael Markarian, president of the Humane Society Legislative Fund, for permission to republish this post, which originally appeared on his blog Animals & Politics on June 20, 2012.
The U.S. Senate [on June 20, 2012] voted in favor of an amendment to the Farm Bill, introduced by Sen. David Vitter, R-La., to make it a federal crime to attend a dogfight or cockfight, and a felony to bring a child to an animal fight. The vote was an overwhelming 88 to 11.
This is a great turn of events, as the original animal fighting amendment was not among the list of 73 amendments allowed to be considered during the Senate debate on the Farm Bill. But thankfully, because Sen. Vitter had a previously approved amendment relating to the Animal Welfare Act, it was allowed to be modified to include the animal fighting language as well.
Forty-nine states (all but Montana) have penalties for animal fighting spectators, who finance the criminal activity with their admission fees and gambling wagers, and provide cover for animal fighters who blend into the crowds during law enforcement raids. It's time to sync up the federal law with the state laws, and close this remaining gap so that law enforcement agencies have the tools they need to crack down on the entire cast of characters involved in animal fighting.
We are grateful to Sen. Vitter for offering this amendment, and to Sens. Richard Blumenthal, D-Conn., and Maria Cantwell, D-Wash., who simply would not take no for an answer on this issue. They received tremendous support and cooperation from Senate Agriculture Committee Chairwoman Debbie Stabenow, D-Mich., in getting this done. Special thanks also to Sens. Mark Kirk, R-Ill., and Scott Brown, R-Mass., who were co-authors of the original legislation, S. 1947, the Animal Fighting Spectator Prohibition Act. Kudos to all 88 senators who voted in favor of the measure, including Ranking Member Pat Roberts, R-Kan., who had a big part in letting the amendment proceed.
And thanks go to all the animal advocates who contacted their lawmakers and urged them to support this important anti-cruelty legislation. Read the press release from HSLF and The HSUS for more information.


text:
| 17°C Belfast
Mark Wright has said his fame has spread across the Atlantic and he has been recognised a few times while filming in Hollywood.
The former star of The Only Way Is Essex has been filming his own ITV2 show, Mark Wright's Hollywood Nights, out in LA, with the reality TV star and a gang of best mates creating some Essex-style mayhem in the sun.
He's thrilled to have been recognised by a few people over in the States: "The UK people over here know us, and even some Americans as they get The Only Way Is Essex on one of their websites. We was in a bar one night and some girls said, 'Oh, it's Mark!'."
As for his own celebrity-spotting, Mark's not done too badly considering he's not been there long.
"I had lunch next to Pink the other day," he said proudly. "And we saw Arnold Schwarzenegger on a bike next to us with his son and bodyguard. It's been amazing."
He's also been to see fellow Brit Vinnie Jones, the footballer-turned-actor who has a mansion in LA's famous Mulholland Drive and runs a local football team.
Mark, who used to play semi-professionally for Tottenham Hotspur, joined in one of Vinnie's matches.
"Vinnie is an absolute gent, he was so polite and lovely to me," he said.
"He had a chat with me, telling me about his Hollywood lifestyle, and gave me man of the match. I didn't go to his house but he said next time I should go over and play poker."
Mark Wright's Hollywood Nights continues on ITV2 on Sundays.


text:
Students face a changing work place with increased international
competition and new technologies. They need current information,
rigorous academics and training. The Career & Technical Education
Department assist students with that process!
"Preparing for the Future"
The Klein ISD Career & Technical Education Programs complement and enhance academic preparation by enabling students to apply academic principles and technical skills essential to career success. CTE allows students to see the relevance of their academic preparation to their future career goals. Our programs of study include coherent and rigorous content aligned with challenging academic standards and relevant career technical content.
Our Career and Technical Education Programs include:


text:
Ever wanted to know exactly what goes on while you sleep? I mean other than what you remember in your dreams? I certainly have. Right, then prepare for the ubiquitous preamble: "there's an app for that". There is. Let it Sleep, by Kayac Inc. exists for the purpose of extracting those good ideas which often come out of your nocturnal neverland.
Kayac, Let it Sleep, 0.99$, 0.4 MB


text:
Posts Tagged Language Integrated Query
LINQ Pivot, or Crosstab, Extension Method
Posted by aussiecraig in CSharp, LINQ, Programming on March 7, 2012
This blog post is a continuation of the series of LINQ Short takes. In this blog post, I present an implementation of a pivot, or crosstab, transformation in Linq. I have used an implementation as a Linq extension method (specifically an extension method to IEnumerable(Of T) Interface).
This blog post builds on a number of preceding posts:
- Enumerable Range: LINQ Short Takes – Number 1 – Enumerable.Range()
- SelectMany: Linq SelectMany and IGrouping
The Problem
The pivot, or crosstab, transformation is notoriously difficult to achieve in SQL. The original definition of SQL used as foundations concepts from relational algebra and tuple relational calculus. Linq having some of its root in SQL, shares the difficulty with SQL formulation of a pivot, or crosstab, transformation. Fortunately, there are enough of the procedural, and functional, programming aspects of C# that are included into the Linq design and implementation. The aspects of functional and procedural, programming present in Linq make expressing a generic solution to the pivot, or crosstab, transformation possible.
The following diagram attempts to show what the pivot transformation does to the data. At its core, the pivot transformation is just the swapping of the columns to rows, with the data following the transposition of the row and column vector. The difficulty comes in expressing this in a generic way.
The Solution – Design
The following are the design considerations and design criteria. These design criterions, then informed the implementation of the pivot transformation. These were the mandatory criteria.
- The implementation must be an extension method (see MSDN documentation: Extension Methods (C# Programming Guide)for further details). This allows the implementation of Pivot to be applied to the just like any other Linq transformation.
- The extension method must use a generic type parameter (see MSDN documentation: Generics (C# Programming Guide)) for the object type being manipulated. This allows the broadest range of objects as inputs to the pivot transform.
- The extension method must be an extension to IEnumerable(Of T) Interface. This is the other half, to a broadest application criterion, for the pivot transformation. This criterion allows application of the pivot transformation to the broadest range of collections.
- The return type of the pivot transformation must be as generic as possible. This implies using the IEnumerable(Of T) Interface and a generic type parameter.
- The return type should preserve the type of object from the input sequence to the transformation. Failure to do this would mean that the pivot transformation is arbitrarily changing the input data. It is my belief that this would break the Linq transformation model the .Net Framework provides. Failure to adhere to this criterion would make the transformation far less usable in general.
- The implementation must be correct. I define correctness, as the pivot transformation should result in the generally accepted output of a pivot transformation.
- The implantation of the pivot transformation should be efficient. Here I mean that it should be relatively quick for reasonable volumes of data. I did not want an implementation that showed up as a performance hot spot in any program that used the function.
The following were the desirable design criteria:
- The implementation should be reasonable robust in dealing with ragged data. What I mean by ragged, or jagged, data is that not all rows of data have the same number of columns. This may be potentially difficult, and expensive, design criterion to address.
- The implementation should be able to cater for null objects in the input, transferring the null into the output.
The Solution – Implementation
The following is the method signature of the implementation.
public static IEnumerable<IEnumerable<TSource>> Pivot( this IEnumerable<IEnumerable<TSource>> pivotSource)
The Pivot<TSource> element of the function signature addresses the following design criteria:
- This introduces the generic type argument to the method. This then addresses ability to process any type of object with the transformation.
- The return type of IEnumerable<ienumerable<TSource>> addresses the following elements of the design criteria:
- The type argument TSource to the IEnumerable<IEnumerable<>> addresses the requirement to return a generic output.
- The use of the IEnumerable(Of T) Interface addresses the requirement to support the broadest range of collections.
The signature element this IEnumerable<ienumerable> pivotSource argument to the method addresses a number of the design criteria. These design criteria are:
- The use of this as the preface to the first argument in the argument list addresses, in part, the requirement for the implementation to be an extension method.
- The use of the IEnumerable(Of T) Interface address the requirement for the implementation to process the broadest range of collections.
- The use of the TSource type parameter enables the use of the method against the broadest range of objects possible.
In combination, the complete function signature addresses the following design criterion:
- The function signature addresses the requirement for type stability, or not arbitrarily change the type of the object processed, implemented through the usage of the same type argument TSource as part of the definition of the input and return types.
The Source Code For The Pivot Implementation
Below is the source code for the implementation of the pivot extension method.
The bulk of the code is devoted to the checking of the argument. These argument checks protect the implementation from invalid argument that could cause exceptions from the underlying Linq implementation.
In the following
public static IEnumerable<IEnumerable<TSource>> Pivot<TSource>( this IEnumerable<IEnumerable> pivotSource) { // Validation of the input arguments, and structure of those arguments. if (Object.ReferenceEquals(pivotSource, null)) throw new ArgumentNullException("pivotSource", "The source IEnumerable cannot be null."); if (pivotSource.Count( ) == 0) throw new ArgumentOutOfRangeException("pivotSource", "The outer IEnumerable cannot be an empty sequence"); if (pivotSource.Any(A => Object.Equals(A, null))) throw new ArgumentOutOfRangeException("pivotSource", "None of any inner IEnumerables in pivotSource can be null"); if (pivotSource.All(A => A.Count( ) == 0)) throw new ArgumentOutOfRangeException("pivotSource", "All of the input inner sequences have no columns of data."); // Get the row lengths to check if the data needs squaring out int maxRowLen = pivotSource.Select(a => a.Count( )).Max( ); int minRowLen = pivotSource.Select(a => a.Count( )).Min( ); // Set up the input to the Pivot IEnumerable<IEnumerable> squared = pivotSource; // If a square out is required if (maxRowLen != minRowLen) // Fill the tail of short rows with the default value for the type squared = pivotSource.Select(row => row.Concat( Enumerable.Repeat(default(TSource), maxRowLen - row.Count( )))); // Perform the Pivot operation on squared out data var result = Enumerable.Range(0, maxRowLen) .Select((ColumnNumber) => { return squared.SelectMany (row => row .Where((Column, ColumnPosition) => ColumnPosition == ColumnNumber) ); }); return result; }
Key Features in the Implementation
The following features of the implementation are worthwhile highlighting. These include:
- To manage ragged data the extension method makes all of the rows the same length (squares out the data). The square out process is done by the following method logic. The Concat Linq Extension Method appends the data required to fill out the input rows. The call to the Enumerable Repeat Method, builds the sequence that contains the number of elements required to fill out the row. The default(TSource) obtains the default value for the type of object in the sequence.
- The implementation uses the Enumerable.Range Method to generate the sequence of column numbers. The sequence of column numbers is then used to drive the transformation of each of the columns in the pivotSource argument inner IEnumerable into rows. I have written blog posts previously that describe using the Enumerable.Range Method (see: BLOG LINQ Short Takes – Number 1 – Enumerable.Range() )
- The implementation uses an upper bound for the Enumerable.Range Method that is the longest row in the inner IEnumerable of the pivotSource argument. The code fragment which achieves the determination of the longest row is: 'pivotSource.Select(a => a.Count( )).Max( )'. The use of the longest row in the pivotSource, in part, addresses the design criterion requirement for the pivot implementation to deal appropriately with ragged data.
- The implementation uses the Linq SelectMany extension method to flatten sequence of column values from each row of the input rows into a single IEnumerable for each output row.
Downloadable Versions of the code
The following URLs contain the source code, including the XML Documentation Comments, for the implementation of the Pivot Linq extension method. There are pdf and docx versions of the code. These are the only types of text (rich text) files that Word Press allows to be loaded to the web site.
- https://craigwatson1962.files.wordpress.com/2012/03/pivot_extension_method.docx
- https://craigwatson1962.files.wordpress.com/2012/03/pivot_extension_method.pdf
How and Why the Pivot Transformation Works
The following sections describe the logical operations, and implementation details, of the pivot transformation. I have broken this into three segments, and Overview, The Square Out Process, and The Data Pivot Process.
The following diagram describes the broad logical flow of the implementation of the pivot extension method.
The validate arguments phase of the implementation is a relatively simply trying set of checks. The checks protect the remained of the implementation from inputs that would cause an exception to thrown. Since the implementation uses many Linq extension methods, these exceptions may originate from deep within the .Net Framework (see MSDN article: .NET Framework Conceptual Overview). Diagnosis of the reason why an exception was thrown, when thrown from within the .Net Framework can prove to be very difficult process. This would be even harder if the developer is using the pivot extension method supplied as of a class library (see MSDN article: Assemblies and the Global Assembly Cache (C# and Visual Basic)).
There are a couple of feature of the implementation of the input validation phase of the pivot transformation worthwhile noting. These features include:
- Many of the validation tests use the Object.ReferenceEquals method. Using the ReferenceEquals avoids possibility that Object.Equals method and the == operator could have been overridden. What the overridden versions implement could be inappropriate for the argument testing implementation.
- The argument validations use a Linq extension method worth mentioning. This is the check validates that there are no rows in the input that are object with a value of null. This check employs the Linq extension method 'Any' (see: Enumerable.Any(Of TSource) Method ). The Any Linq extension method is one of the Linq extension methods that I have overlooked in the past. Therefore, I make note of it, just in case the reader has not seen the 'Any' extension in action previously.
- There is another argument validation that uses a Linq extension method that is worthy of mentioning. This is the argument validation that all of the rows in the input that are not zero elements in length. This check employs the Linq extension method 'All' (see: Enumerable.All(Of TSource) Method). The 'All' Linq extension method is another Linq extension methods that I have overlooked in the past. Therefore, I make note of 'All' Linq extension method here, just in case the reader has not seen it in action previously.
Pivot Transform Top Level Processes
There are two processes in the implementation that will describe in further depth. These are:
- I will describe in more detail the Linq process of squaring out the input data. The square out process makes all of the rows in the inner IEnumerable the same length. Only ragged input data has this transformation applied.
- I will also describe in more detail the Linq process of performing the pivot transformation. The only input to the pivot transformation is the squared out data. The output from the pivot transform is then the return value of the extension method.
The Square Out Process
The following diagram illustrates the transformation to the row from the input to form the squared output. The transformation actually uses the default keyword (see the MSDN article: default Keyword in Generic Code (C# Programming Guide) for further details) to obtain the fill value used in the square out process.
The flowing diagram describes (attempts to) the logical process flow of the Square Out process.
The Components of the Square Out Process
The Code for the Square Out Process
The following is the code used in the pivot transform to generate the squared out data.
// Get the row lengths to check if the data needs squaring out int maxRowLen = pivotSource.Select(a => a.Count( )).Max( ); int minRowLen = pivotSource.Select(a => a.Count( )).Min( ); // Set up the input to the Pivot IEnumerable<IEnumerable<TSource>> squared = pivotSource; // If a square out is required if (maxRowLen != minRowLen) // Fill the tail of short rows with the default value for the type squared = pivotSource.Select(row => row.Concat( Enumerable.Repeat(default(TSource), maxRowLen - row.Count( ))));
The Square Out Process in Prose
There are only a couple of steps it the square out process. These steps are:
- Get the minimum and maximum column count from the input sequence. These are the Count().Min() and Count().Max().
- If the column count minimum value and column count maximum value, are not the same. Then data needs squaring out, and proceeds into the square out process. Otherwise, the data is already square and the data proceeds to the pivot transformation.
- For each row in the input sequence. The code: pivotSource.Select(row =>
- Concatenate onto the row, for output, the required filler. The Enumerable.Concat() call for each of the rows, does this.
- Generate the correct number, and correct type, of filler elements. The code:Enumerable.Repeat(default(TSource), maxRowLen – row.Count( )).
The Data Pivot Process
The diagram Linq Pivot Transformation (blow) tries to express visually what the Linq statement that implements the Pivot does. I hope that the readers of this blog post find the diagram helps understand how the pivot transformation works.
The Code For the Pivot Transformation
// Perform the Pivot operation on squared out data var result = Enumerable.Range(0, maxRowLen) .Select((ColumnNumber) => { return squared.SelectMany (row => row .Where((Column, ColumnPosition) => ColumnPosition == ColumnNumber) ); }); return result;
The Pivot Process Logical Process
The keys to the operation of the pivot process are the way use of the following:
- The use of the Enumerable.Range() that is used to generate the sequence of columns numbers. The pivot transformation is one that takes each of the columns of the input sequence. Then the transformation makes a row from that set of values that then forms the result.
- The SelectMany() which squashes the set of values from each column, into a row for the output.
- The Where(value, column) variant that exposed the column number. This allows the selection of the correct column in the row.
Future Versions or Enhancements
The following are the potential enhancements I may make to the Pivot Linq Extension method.
- As I describe below, the question 'Should the square out process be optional within the pivot?', I have yet to satisfactorily resolve. The enhancement to enable this would be to include a Boolean argument to the Pivot method, with a default value of true. It is my belief that most of the use cases for the pivot transformation would require squared out data. Nevertheless, I cannot completely dismiss the possibility that there could be use cases where the output of a pivot without squared out data is required.
- In addition, as described below, I still have the question 'Should the square out process be a separate Linq extension method?" unresolved. Refactoring the pivot method to make the square out process a separate Linq extension method, or a private support method within the library, I will leave until sometime in the future.
Making an IEnumerable<IEnumerable<of Source Type>>
It has become a concern to me that I have been using the generic data structure IEnumerable<ienumerable>, but have omitted any hints, or code examples, on how to build such a structure. This section will address that concern and present some of the ways I have used to create this type of data structure. Much of what I will present is from my testing unit of the pivot transformation. Although these will be short code snippets, I trust that they will give the reader, some clues for creating this type of data structure.
Code Examples
I have decided to include a link to the code examples in pdf, and docx format. The pasting of the code for the examples in here would only increase the size of this post, which I believe is getting too big anyway.
- https://craigwatson1962.files.wordpress.com/2012/03/ienumerable-examples.docx
- https://craigwatson1962.files.wordpress.com/2012/03/ienumerable-examples.pdf
Summary and Conclusions
There are many different ways to achieve the formation of an IEnumerable<ienumerable> structure. The above links present two of the basic strategies:
- The first set of examples shows an approach to achieve the structure that centre around using an array, and the IEnumerable interface that the System.Array class presents.
- There is a second set of examples included above. These links show the approach of implementing the IEnumerable interface on a user defined class. Object instances, within an array definition, achieve the required structure.
As an aside, these objects also build random test data for a variety of data types. These classes built the test data for the pivot process. The inheritance hierarchy allowed creation of ragged data.
Conclusions and Observations
There are a number of areas which are worthy of noting in my final remarks.
The Pivot and Square Out Processes
I am still to reach satisfactory conclusions to the following questions:
- Should the square out operation within the Pivot process be optional? As I note below, the Pivot on ragged data without the square out process, gives a results that, I would describe as unacceptable (or plain 'wrong'). This conclusion is strictly a matter of one man's, that man being I, opinion. There may be use cases where the type of results of a pivot transformation on unpadded (squared out) data is what the caller of the method requires. This is one of the many eternal dilemmas that library designer consistently wrestle with, and ruminate upon. The question, put succinctly, for the library designer to resolve is, 'Does this design decision precluding some real use cases?' The normal response to this dilemma is to make the option an argument option in the method signature and allow the user to make the choice between the behaviours. Fortunately, C# provides optional arguments with a default value, which provides one resolution to the dilemma. The library designer can provide the library user with the option in the method signature, and provide some guidance by using an optional argument, with the default value that satisfies the expected normal, and most common, use case. Before I publish this blog post, I may yet, make switching on the square out process an optional Boolean argument, with a default value of true.
- Is the square out transformation useful as a standalone Linq extension method? Here again I am uncertain that there are use cases where this would be needed. In this case, I doubt that I will refactor out the square out process into a new extension method any time soon. I will wait and see if I find a need for the square out process as separate Linq extension method.
Conclusions, and Observations, from the Design and Development Process
During the writing of this blog post, I have modified the code for the Pivot extension method a number of times. There have been two major sources for the modifications.
- One source of modifications was the building a set of unit tests (see MSDN article: Verifying Code by Using Unit Tests) for Pivot extension method. The process of designing, and implementing, the unit tests made me think more clearly on the validation of input arguments.
- Another source of modifications was writing this blog post. Writing this article made me think more clearly about ragged data as an input.
The most notable modifications were:
- The tightening up, and greater clarity, in the validation checks performed on the input data sequence.
- The addition of the square out process came from the thinking more clearly, and deeply, on the processing of ragged input data. Specifically, I realised that what the transformation resulted in when processing ragged data was unacceptable. The output from a ragged input would have broken the rows swapped to columns conceptual model of the transform. The pivot transformation applied to input data without the square out resulted in data from row ending up in the wrong columns. This realisation resulted in the implementation of the square out process.
The result of these modifications is a 'better' implementation of the pivot transformation. The formulation of the input argument is clearer. The output from the extension method is significantly more robust. This increase in robustness comes from the introduction of the square out process that addresses the problems that ragged input data brought.
Observations from the Implementation
There were a number of 'discoveries' (they were always there, but I found them and had a use for them) in the standard Linq extension methods. These Linq extension methods included:
- The Enumerable.Any(Of TSource) Method is a method is a method that is very useful for argument validation. I would expect the Any Linq extension method would make more appearances in my code.
- The Enumerable.All(Of TSource) Method is another method that is very useful for argument validation. Again, I will be using it more frequently.
- The Enumerable Repeat Method is another very handy Linq extension method. For a simple, and built-in to the .Net Framework, way to build an IEnumerable, this would appear to be the method to use.
- The Enumerable.Concat Method is yet another discovery. I previously developed a UnionAll extension method (see: LINQ Short Takes – Number 4 –Make Union into a UnionAll). The Enumerable Concat method does exactly the same thing that the UnionAll implementation achieved.
The conclusion and observation I would draw, is that no matter how well you think you know the .Net Framework library, there is still more to useful classes and methods to find. Microsoft unremittingly is adding to my 'voyage of discovery' through the .Net Framework. Microsoft keeps C# .Net environment relevant to the emerging challenges in the IT industry, by adding new features to the .Net Framework library, and the C# language, with every new version of the C# .Net environment. For me, this only adds to the 'fun' of using C# .Net, there seems that there is always something new to learn how to use effectively.
Related articles
- LINQ Short Takes – Number 4 – Make Union into a UnionAll (craigwatson1962.wordpress.com)
- LINQ Extension Method to Generate n-way Cartesian Product (craigwatson1962.wordpress.com)
- C# Short Takes – 2 – String from IEnumerable (craigwatson1962.wordpress.com)
- Dumping a formatted IEnumerable to Output (craigwatson1962.wordpress.com)
- LINQ Extension Method To Dump any IEnumerable (craigwatson1962.wordpress.com)
- LINQ Short Takes – Number 2 – Using Method Syntax to Create a Cartesian Product (craigwatson1962.wordpress.com)
- LINQ Short Takes – Number 3 – LINQ over Multiple Dimension Arrays and Lists (craigwatson1962.wordpress.com)
- C# Short Takes – 1 – XML Comments syntax for the cref attribute to a Generic Type Method (craigwatson1962.wordpress.com)
- Get previous and next item in a IEnumerable using LINQ (stackoverflow.com)
- LINQ to DataGridViewRowCollection (stackoverflow.com)
C# Short Takes – 2 – String from IEnumerable
I am posting this quick tip in response to a question, which seems to on some people's minds who are reading my blog. The search terms 'create string from ienumerable' appear as hits on my blog statistics quite frequently. The way I create a string from an IEnumerable is in the Example Code section below.
The Method
The method I use to create a string from an IEnumerableis to use the string constructor that accepts a char[] (see the MSDN documentation: String Constructor (Char()) ). To get the IEnumerable into a char[] I use the Linq Extension Method ToArray() (see the MSDN documentation: Enumerable.ToArray(Of TSource) Method).
These Linq method call and string constructor results in the code in the 'Example Code' section.
The Example Code
The following shows a number of ways to create an IEnumerableobject. These IEnumerableobjects are then converted into char[] object. The char [] objects are then used in the string constructor.
private void String_Create_From_IEnumerable_char( ) { string TestString = "The quick red fox jumped over the lazy brown cow"; IEnumerable<char> EnumerableChar= TestString.AsEnumerable(); string Result1 = new string(EnumerableChar.ToArray( )); char[] TestCharArray = new char[] { 'T', 'h', 'e', ' ', 't', 'e', 's', 't', ',', 'v', 'a', 'l', 'u', 'e', '.' }; string Result2 = new string(TestCharArray); IEnumerable<char> EnumerableChar1 = TestCharArray.AsEnumerable( ); string Result3 = new string(EnumerableChar1.ToArray()); IEnumerable<char> EnumerableChar2 = LINQ_Extension_Methods.LINQ_Extension_Methods.ToIEnumerable('A') .UnionAll(LINQ_Extension_Methods.LINQ_Extension_Methods.ToIEnumerable('B')) .UnionAll(LINQ_Extension_Methods.LINQ_Extension_Methods.ToIEnumerable('C')) .UnionAll(LINQ_Extension_Methods.LINQ_Extension_Methods.ToIEnumerable('D')) .UnionAll(LINQ_Extension_Methods.LINQ_Extension_Methods.ToIEnumerable('E')); string Result4 = new string(EnumerableChar2.ToArray( )); Func<char, IEnumerable<char>> LocalToIEnumerable1 = LINQ_Extension_Methods.LINQ_Extension_Methods.ToIEnumerable<char>; IEnumerable<char> EnumerableChar3 = LocalToIEnumerable1('Z') .UnionAll(LocalToIEnumerable1('Y')).UnionAll(LocalToIEnumerable1('X')).UnionAll(LocalToIEnumerable1('W')) .UnionAll(LocalToIEnumerable1('V')).UnionAll(LocalToIEnumerable1('U')).UnionAll(LocalToIEnumerable1('T')); string Result5 = new string(EnumerableChar3.ToArray( )); Func<char, char, IEnumerable<char>> LocalToIEnumerable2 = LINQ_Extension_Methods.LINQ_Extension_Methods.ToIEnumerable<char>; IEnumerable<char> EnumerableChar4 = LocalToIEnumerable2('A', ' ') .UnionAll(LocalToIEnumerable2('B', ' ')).UnionAll(LocalToIEnumerable2('C', ' ')) .UnionAll(LocalToIEnumerable2('D', ' ')).UnionAll(LocalToIEnumerable2('E', ' ')) .UnionAll(LocalToIEnumerable2('F', ' ')).UnionAll(LocalToIEnumerable2('G', ' ')) .UnionAll(LocalToIEnumerable2('H', ' ')).UnionAll(LocalToIEnumerable2('I', ' ')); string Result6 = new string(EnumerableChar4.ToArray( )); return; }
Methods Referenced That Are Not In The.Net Framework
|Blog Post That Describes The Method
|LINQ Extension Method to Generate n-way Cartesian Product
|LINQ Short Takes – Number 4 –Make Union into a UnionAll
I trust that those readers who have been looking for a solution to this transformation find this blog post helpful answers the question you had.
Related articles
- Dumping a formatted IEnumerable to Output (craigwatson1962.wordpress.com)
- LINQ Short Takes – Number 2 – Using Method Syntax to Create a Cartesian Product (craigwatson1962.wordpress.com)
- LINQ Short Takes – Number 3 – LINQ over Multiple Dimension Arrays and Lists (craigwatson1962.wordpress.com)
- LINQ Extension Method To Dump any IEnumerable (craigwatson1962.wordpress.com)
- C# Short Takes – 1 – XML Comments syntax for the cref attribute to a Generic Type Method (craigwatson1962.wordpress.com)
LINQ Extension Method to Generate n-way Cartesian Product
This blog post presents a LINQ extension method that implements the generation of Cartesian productfor any number of input sequences.
This implementation builds on the approach that I posted in LINQ Short Takes – Number 2 – Using Method Syntax to Create a Cartesian Product. Specifically, it uses the Enumerable Join Method to join the input IEnumerable sequences into the resulting Cartesian product.
Special Votes of Thanks and Referenced Articles:
Eric Lippert for Computing a Cartesian Product with LINQ, and
Ian Griffiths for LINQ and N-ary Cartesian Products
Whilst, the solution to the problem I present here is not the same as these articles present, these articles did push me down some of the correct paths. One thing that these articles helped me with was getting the 'shape' of the returned Cartesian product 'right' (correct by my judgement). The 'shape' I settled on was an IEnumerable, or a sequence of elements, each element being an IEnumerable with on element from each of the input IEnumerable objects.
The CartesianProduct Extension Method
In the following sections, I present the design, implementation, and some sample code, that describes the development process resulting in the CartesianProduct extension method.
CartesianProduct – Design Goals
There were numerous of design features that I wished to include in the implementation of CartesianProduct method. These features included:
- The method must create a Cartesian product. This is a mandatory design criterion.
- The order of the resulting Cartesian product elements must be in the same order as the input sequences. This may well be a defining attribute of a Cartesian product, but I include this characteristic as a design goal anyway. This is a mandatory design criterion.
- The returned set of Cartesian product elements should be as generic as possible. This is a mandatory design criterion.
- The returned set of Cartesian product elements should be easily processed using Linq. This is a mandatory design criterion.
- The method's implementation must be as an extension method. This is a mandatory design criterion.
- The method's implementation must be an extension method that operates like any other Linq extension method (see: IEnumerable(Of T) Interface). This allows the users of the extension method to chain it within a set of other calls to Linq extension methods calls. This allows the user to assemble Linq transformations that they require. This is a mandatory design criterion.
- The method should accept, as generically as possible, the set of sequences that used to generate the Cartesian product. This is a mandatory design criterion.
- The method should use the Linq Join extension method to build the Cartesian product. If had to resort to the Linq Aggregate extension method, then the two articles I have referenced above demonstrate that approach. Plagiarising those works, and representing there content here, was not an acceptable outcome. This was a highly desirable, leaning heavily to mandatory, design criterion.
CartesianProduct – Function Signature
The following is the function signature for the CartesianProduct extension method. Many features of the function signature directly address the design goals.
public static IEnumerable<IEnumerable<TSource>> CartesianProduct<TSource> (this IEnumerable<TSource> source, IEnumerable<IEnumerable<TSource>> inputs)
- The return type IEnumerable<IEnumerable<TSource>> addresses the design goals for a generic return type, and a return type which can be processed with Linq. If it makes it easier to understand, you can interpret this type as an outer list of inner lists, each inner list being list made up of type the TSource objects. The following diagram attempts to show graphically what this 'looks like'.
Figure 1 – IEnumerable of IEnumerable of T
- The CartesianProduct<TSource> part of the method signature identifies this method as a parameterised type method (see MSDN article: Generic Methods (C# Programming Guide) for further information).declaration serves the design goal of requiring the method to accept as generically as possible inputs, and produce a generic output.
- The argument this IEnumerable<TSource> source serves a couple of the design goals. Primarily, it flags this method as an extension method that should be attached, or associated, with any object that implements the IEnumerable(of T) Interface. Secondly, this argument identifies the first sequence used to assemble the Cartesian product.
- The argument IEnumerable<IEnumerable<TSource>> inputs identifies the set of sequences to be processed to form the output Cartesian product. As with the return type, a loose interpretation is an outer list that contains inner list of objects. This satisfies the any number of input sequences design goal.
CartesianProduct – Implementation
The following is the implementation of the CartesianProduct extension method. I will detail many of the significant features after the source code.
public static IEnumerable<IEnumerable<TSource>> CartesianProduct<TSource> (this IEnumerable<TSource> source, IEnumerable<IEnumerable<TSource>> inputs) { // Build the remaining work to be done var RemaimingJoinTarget = inputs.Skip(1); // Recursion end condition, no more to be done. if (RemaimingJoinTarget.Count( ) == 0) { // At the end of the inputs, return the Cartesian of two elements return source.Join(inputs.First( ), (outer) => 1, (inner) => 1, (outer, inner) => ToIEnumerable(outer).UnionAll(ToIEnumerable(inner)) //(new TSource[2] {outer, inner}).AsEnumerable<TSource>() ); } else { // Recursive call down the list of inputs. // When coming back up add the source to the results already built. return source.Join( inputs.First( ).CartesianProduct(RemaimingJoinTarget), (outer) => 1, (inner) => 1, (outer, inner) => ToIEnumerable(outer).UnionAll(inner)); } }
The following are some of the significant features of the implementation:
- Firstly, let me say that I find this implementation aesthetically pleasing. It is short, and concise, deceptively simple.
- This implementation satisfies the design gaol of using the Linq Join extension method to form the Cartesian product.
- This implementation satisfies the design gaol of does preserve of the order of the input sequences and reproduces that order in output Cartesian product.
- This implementation satisfies the design gaol of being generic and catering for any input type. There are some nasty hoops the caller needs to jump through when mixing objects a with C# value types. Although, it may be nasty it does work. I have an example that shows what is required.
- This is an implementation uses recursion, see the call to CartesianProduct in the Join contained in the else case. The version of recursion that is utilised here is tail recursion. The removal an element from the inputs parameter at each level of recursion controls the recursion. This technique of removing an element from a control sequence until nothing is left is an approach to controlling recursion I have used frequently.
- There are two overloads of the helper function ToIEnumerable. These simply wrap an IEnumerable around the objects passed in. Using these functions allows the simple assembly of the result IEnumerable of objects with the Linq Union extension method.
- The Cartesian product is formed within the Linq Join extension method. The same technique as described in LINQ Short Takes – Number 2 – Using Method Syntax to Create a Cartesian Product of setting the inner and outer join keys to 1.
- The UnionAll LINQ extension method is described in LINQ Short Takes – Number 4 –Make Union into a UnionAll. The source code for the UnionAll extension method is in this blog post as well.
CartesianProduct – Helper Methods
There are two helper methods used in the implementation. These helper methods support the implementation of the CartesianProduct extension method. The source code for the helper methods is below.
public static IEnumerable<TSource> ToIEnumerable<TSource>(TSource val) { yield return val; }
public static IEnumerable<TSource> ToIEnumerable<TSource>(TSource val1, TSource val2) { yield return val1; yield return val2; }
There is one point worth noting about these methods. The implementation may not be the most efficient way to achieve the goal. The use of the yield return results in C# compiler implementing a 'bunch of code' under the covers. My justification for the implementation using yield return is simple. It results in very simple code for anyone who needs to maintain, or modify, the code.
CartesianProduct – Source Code
The following URL's have the full source code, including XML Comments, for CartesianProduct and the two overloads of IEnumerable.
Referenced LINQ Methods
The following are the Linq extension methods that are utilised in the implementation of the CartesianProduct extension method.
Join<(Of <<'(TOuter, TInner, TKey, TResult>)>>)(IEnumerable<(Of <<'(TOuter>)>>), IEnumerable<(Of <<'(TInner>)>>), Func<(Of <<'(TOuter, TKey>)>>), Func<(Of <<'(TInner, TKey>)>>), Func<(Of <<'(TOuter, TInner, TResult>)>>))
Skip<(Of <<'(TSource>)>>)(IEnumerable<(Of <<'(TSource>)>>), Int32)
Union<(Of <<'(TSource>)>>)(IEnumerable<(Of <<'(TSource>)>>), IEnumerable<(Of <<'(TSource>)>>))
First<(Of <<'(TSource>)>>)(IEnumerable<(Of <<'(TSource>)>>))
CartesianProduct – Example Code
The following code assembles a range of different Cartesian products, and dumps them to the debug output window.
private void CartesianProducts_Extensions( ) { IEnumerable<int>[] SequsInt1 = new IEnumerable<int>[] { Enumerable.Range(0,5) }; IEnumerable<int>[] SequsInt2 = new IEnumerable<int>[] { Enumerable.Range(0,5), Enumerable.Range(0,3) }; IEnumerable<int>[] SequsInt3 = new IEnumerable<int>[] { Enumerable.Range(0,10), Enumerable.Range(0,5), Enumerable.Range(0,3) }; //IEnumerable<IEnumerable<object>> ExpandedSequs1 = // LINQ_Extensions.ToIEnumerable(Enumerable.Range(0, 10).Cast<IEnumerable<object>>()); string[] SampleStrings = new string[] { "The", "quick", "red", "fox", "jumped", "over", "the", "lazy", "brown", "cow" }; Action<IEnumerable<int>> IntDumper = (InnerSequence) => { int column = 0; foreach (int innerVal in InnerSequence) { Debug.Write(string.Format("[{0}]={1}, ", column, innerVal)); ++column; } Debug.WriteLine(""); }; var OuterInSource = Enumerable.Range(0, 10); var IntProd1 = Enumerable.Range(0, 10).CartesianProduct(SequsInt1); DumpCartesianProduct(IntProd1, (InnerSequence) => { int column = 0; foreach (int innerVal in InnerSequence) { Debug.Write(string.Format("[{0}]={1}, ", column, innerVal)); ++column; } Debug.WriteLine(""); } ); var IntProd1Vers2 = OuterInSource.CartesianProduct(SequsInt1); DumpCartesianProduct(IntProd1Vers2, IntDumper); var IntProd2 = Enumerable.Range(0, 10).CartesianProduct(SequsInt2); DumpCartesianProduct(IntProd2, IntDumper); var IntProd2Vers2 = OuterInSource.CartesianProduct(SequsInt2); DumpCartesianProduct(IntProd2Vers2, IntDumper); var IntProd3 = Enumerable.Range(0, 10).CartesianProduct(SequsInt3); DumpCartesianProduct(IntProd3, IntDumper); var IntProd3Vers2 = OuterInSource.CartesianProduct(SequsInt3); DumpCartesianProduct(IntProd3Vers2, IntDumper); // <IEnumerable<object>> Action<IEnumerable<object>> objDumper = (InnerSequence) => { int column = 0; foreach (object innerVal in InnerSequence) { Debug.Write(string.Format("[{0}]={1}, ", column, innerVal)); ++column; } Debug.WriteLine(""); }; var objStrings = SampleStrings.Cast<object>( ); var objTransSequs1 = SequsInt1.ToList( ).Select(a => a.Select(b => (object) b)); var MixedObjectProduct = objStrings.CartesianProduct(objTransSequs1); DumpCartesianProduct<object>(MixedObjectProduct, objDumper); var MixedObjectProduct2 = SampleStrings.CartesianProduct(objTransSequs1); DumpCartesianProduct<object>(MixedObjectProduct2, objDumper); IEnumerable<IEnumerable<object>> MixedSource = new IEnumerable<object>[] { from intVal in Enumerable.Range(0,5) select (object) intVal, from intVal in Enumerable.Range(0,5) select (object) new DateTime(2012, 1, 1).AddDays(intVal) }; var MixedObjectProduct3 = SampleStrings.CartesianProduct(MixedSource); DumpCartesianProduct<object>(MixedObjectProduct3, objDumper); return; } private void DumpCartesianProduct<TSource>( IEnumerable<IEnumerable<TSource>> ResultSequence, Action<IEnumerable<TSource>> DumpLogic = null) { if (DumpLogic != null) { foreach (IEnumerable<TSource> outputSeq in ResultSequence) { DumpLogic(outputSeq); } } return; }
Possible Changes, Enhancements, Additional Overloads, Or Extra Features
I believe that additional versions of the CartesianProduct could be useful. These additional versions include:
· The creation of a variant of the Cartesian product method that accepts a variable number of arguments, as opposed to IEnumerable<IEnumerable<TSource> argument, could be useful.
For an implementation which started out as a 'is it possible to do?' question, the resulting implementation is quite effective and usable.
Related articles
- LINQ Short Takes – Number 2 – Using Method Syntax to Create a Cartesian Product (craigwatson1962.wordpress.com)
- LINQ Short Takes – Number 3 – LINQ over Multiple Dimension Arrays and Lists (craigwatson1962.wordpress.com)
- Dumping a formatted IEnumerable to Output (craigwatson1962.wordpress.com)
- LINQ Extension Method To Dump any IEnumerable (craigwatson1962.wordpress.com)
- C# Short Takes – 1 – XML Comments syntax for the cref attribute to a Generic Type Method (craigwatson1962.wordpress.com)


text:
- Tools
- Accessories
- Knowledge
- Service
- Current news
- You have not yet added any products to your wish list.This function can be used only with cookies activated.
Here you will find project guides and information about tools, numerous technical terms, frequently asked questions and much more!
Design, build and style your own home. Individually – however you like. Here you will find many projects, guides and valuable tips.
Do you want to drill in concrete with your rotary hammer? Or fine-sand wood with the random orbit sander? Here you will find valuable application tips about the power tools from Bosch.
Here you will receive answers to the most frequently asked questions.


text:
Safety Pilot
Zain Aviation offer safety pilots for all type of flights worldwide.
It is FAR 91.109(c) that specifically imposes the requirement that a safety pilot be on board an aircraft being operated in simulated instrument flight. This regulation is really a supplement to the see-and-avoid responsibility imposed by FAR 91.113(b). "When weather conditions permit, regardless of whether an operation is conducted under instrument flight rules or visual flight rules, vigilance shall be maintained by each person operating the aircraft so as to see and avoid other aircraft." So, in discharge of this responsibility, it makes sense that if a pilot's vision is restricted, as in simulated instrument flight, there must be another qualified pilot on board primarily to help see and avoid other aircraft.
What qualifications are necessary for a safety pilot to be able to properly discharge this responsibility? FAR 91.109(c), itself, tells us some of the qualifications, but there are other qualifications imposed by other regulations. FAR 91.109(c)(1) requires that the safety pilot must hold at least a private pilot certificate. The pilot certificate must have category and class ratings that are appropriate to the aircraft being flown.
FAR 91.109 does not address a safety pilot's need for a medical certificate, or instrument rating, or recent experience. We need to look elsewhere in the regulations. The FAA interprets other regulations to require a medical certificate. Here is the FAA's analysis. FAR 61.3(c) provides, with certain exceptions not relevant here, that no person may act in any capacity as a required pilot flight crewmember under an FAA-issued pilot certificate unless he or she holds a current appropriate airman medical certificate. FAR 1.1 defines a "flight crewmember" as a pilot assigned to perform a duty in an aircraft during flight time. Since a safety pilot is required by regulation to be on board to perform see-and-avoid duties, and since the safety pilot must hold a pilot certificate, under this analysis the safety pilot must hold a current, appropriate airman medical certificate.
A safety pilot does not have to have an instrument rating if the flight is being conducted under the visual flight rules. However, if the aircraft is operated under instrument flight rules, even in VFR conditions, whoever is acting as pilot in command of the flight must hold an instrument rating appropriate to the aircraft being operated. So, if a pilot who is not instrument rated is flying an aircraft IFR under a hood simulating instrument conditions, the safety pilot must necessarily be acting as pilot in command of an aircraft operating IFR, and therefore must hold an instrument rating. If the pilot under the hood is instrument rated and acting as pilot in command, even though the flight is IFR, the safety pilot is not required to have an instrument rating or be instrument current.
What about recent experience and flight review requirements? Certainly, whoever is pilot in command must meet these requirements. But what about a safety pilot who is not pilot in command? Notice that the requirements of FAR 61.57(b) and (c), for three takeoffs and three landings in the past 90 days, apply only to a person who serves as pilot in command on a flight on which passengers are carried. So, since the safety pilot is not pilot in command, the safety pilot does not have to have this recent experience.
What about the flight review requirements of FAR 61.56 (commonly but incorrectly called the "biennial flight review" or BFR)? This requirement applies only to a person who serves as pilot in command. So long as the safety pilot does not act as pilot in command, this requirement does not apply to the safety pilot.
So much for the qualifications of a safety pilot. There are a few other requirements that relate to the safety pilot that I should mention. Most important, and for obvious reasons, the aircraft must be equipped with fully functioning dual controls (there is a special exception in FAR 91.109[b] for single-engine airplanes, which allows for the use of a single, functioning, throw-over control wheel), and the safety pilot must occupy a control position so as to be able to manipulate the controls if necessary. And, companion to this requirement, the safety pilot must have adequate vision forward and to each side of the aircraft. If there are any restrictions to the safety pilot's view, the restrictions must be compensated by "a competent observer in the aircraft [who] adequately supplements the vision of the safety pilot."
If the pilot under the hood is logging time to meet any aeronautical experience or training requirements, which usually is the case, the name of the safety pilot must be entered into the pilot's logbook along with the usual logged information such as the date, flight time, location, aircraft, and the type of each instrument approach accomplished. No other identification of the safety pilot is needed other than his or her name. The safety pilot has no similar logging requirement.
Commercial Pilots
We are able to provide crews or single pilots for any Pilot looking to make a trip further afield then their local area. We can assit with flight planning whether VFR or IFR. Our pilots are licensed by the FAA, Transport Canada and EASA.


text:
Context: I have lots of music stored on my PC. I normally just want a small selection of that music on my phone.
On previous phones I did the usual thing... drag and drop music across to the device or sync playlists from Media Player.
On my first WP7 device I started using Zune, but found it too slow and clunky and difficult to use. I wanted a Zune Pass so I could just get whatever music I wanted for a monthly fee, but this was not available in NZ.
I was also disappointed that Nokia Music never arrived here. I looked at 7Digital and a bunch of other music services, but most are either just for streaming music or are per-song purchasing stores... and none integrated properly into the WP Music hub.
Then Spotify was made available in NZ earlier this year and so I used that. The Spotify/Zune Pass idea suits me very well, but the WP Spotify app is incredibly buggy and from their own forums it is clear the devs couldn't care less about it.
Enter the Lumia 920 with Windows Phone 8 and the Xbox Music Pass. This service combines iMatch cloud matching/streaming, Spotify all-you-can-eat for a fee, iTunes per-song purchasing, and Pandora/Nokia Music streaming in one, and all in the Music hub... just what I wanted.
Best of all, the Xbox Pass is available in NZ... though oddly, Nokia Music is still dead on these phones.
So.. plugged it all into my Win8 PC and found that my phone started filling up with thousands of tracks from my PC library. Couldn't get rid of them so I wiped the phone and started over after disabling an option in the PC Music app to "sync music from my pc to all devices". That stopped the sync, but the phone still filled up with a large and seemingly random selection of music from my PC. I couldn't tell where it was coming from.
Then I downloaded the beta of the desktop WP sync app. This is basically like Zune, but fast and all done in lists instead of thumbnails. I still could not find way to get rid of track listings off the phone though.
Then I found an option in the phone's music and video settings to disable the Xbox cloud collection, and that was the solution.
Now the phone only shows tracks that are actually on the phone. I can find, stream and download (or purchase) music from the music store directly on the phone, and those tracks are also synced back to the PC... success.
I have since re-enabled the cloud sync option in the Win8 app so that all my music is matched and in the cloud, and this lets me access it on the phone or any other device at any time if I really want it.
It was a minor drama to figure it all out, but the result is exactly what I wanted. It keeps the phone clean and lets me have pretty much anything at any time in one place, and without any 3rd party apps or hacks.
FYI, here's the desktop sync app. It isn't necessary, but former Zune users might find it handy.
The Metro sync app has similar functionality, but is more visual and not as fast to use as a result.


text:
With the launch of the Taycan Turbo and the Taycan Turbo S, we have ushered in a new era at Porsche. We are simultaneously establishing a modern ecosystem for Porsche Connect services and establishing a charging infrastructure. As the first purely electric sports car, the Taycan represents the future of e-mobility.
We are now extending the Taycan model series with an attractive S-derivative. The Taycan 4S delivers up to 420 kW (571 PS) via Overboost Power with Launch Control. It features a Performance Battery as standard, with an energy content of 79.2 kWh. With the optional Performance Battery Plus, the Taycan 4S has an electrical range of up to 463 kilometres (WLTP) – the highest value of all models currently available.
The aerodynamically optimised 19-inch Taycan S Aero Wheels and the brake calipers with red paint finish mean the Taycan 4S is immediately recognisable. The lower valance with new geometry, the sideskirts and the rear diffusor in Black help to make it even more visually distinctive. The Taycan 4S is equipped with a partial Leather Interior as standard, as well as comfort seats in the front with electric eight-way adjustment.
If you would like to find out more about the new Taycan 4S click here .
Taycan 4S – Electrical consumption (WLTP) combined: 26.2 – 21.1 kWh/100 km. CO2 emissions (NEDC equivalent) combined: 0 g/km.
© 2020 All rights reserved to Porsche Centre Bournemouth and its licensors.
*Data determined in accordance with the measurement method required by law. Since 01 September 2018 all new cars are approved in accordance with the Worldwide Harmonized Light Vehicles Test Procedure (WLTP). You can find more information on WLTP at
. From 01 January 2019, all fuel consumption figures are shown as determined in accordance with WLTP. CO₂ figures will be shown as NEDC-equivalent values, as CO₂ based taxation will continue to be based on an NEDC value (derived from WLTP) until 06 April 2020. For Plug-in Hybrid Electric Vehicle (PHEV) range and Equivalent All Electric Range (EAER) figures are determined with the battery fully charged, using a combination of both battery power and fuel.
Values are provided for comparison only. To the extent that fuel and energy consumption or CO₂ values are given as ranges, these do not relate to a single, individual car and do not constitute part of the offer. Optional features and accessories can change relevant vehicle parameters such as weight, rolling resistance and aerodynamics which may result in a change in fuel or energy consumption and CO₂ values. Vehicle loading, topography, weather and traffic conditions, as well as individual driving styles, can all affect the actual fuel consumption, energy consumption, electrical range, and CO₂ emissions of a car.
**Important information about the all-electric Porsche models can be found here.


text:
Real Talk: Bow Wow Speaks About Visiting Lil Wayne In Prison, Advice He Received From Weezy & Tells Black Men To Step It Up And Stop Giving Police Power!
Please click the "Report" button below if the video on this page is not working properly.
Comments will only be displayed by verified emails. No Spamming or Racism.


text:
Dumb Celebrity Quotes – Who Said This?
War. Famine. Death. None of these things compare to the horrors of a woman wearing makeup that doesn't match her skin tone. Who once said, "I hate when women wear the wrong foundation color, it might be the worst thing on the planet."


text:
Variety is bringing back PURPOSE: The Family Entertainment & Faith-Based Summit. On July 29th, 2016, innovative and pioneering leaders, directors, actors, and producers who are successfully filling the demand for family and faith-based entertainment at studios, networks, digital media, and brands will be meeting at Four Seasons Hotel Los Angeles at Beverly Hills. …Read more »
- Home Dan Rupple