text:
contact us
recent interviews
FastScripts archive
about ASAP Sports
Our Clients:
Browse by Sport
Find us on
Subscribe to RSS
Click to go to
View our
May 30, 2012
Jack Nicklaus
LAURA HILL: We'd like to welcome Jack Nicklaus, our host this week, once again, for the Memorial Tournament presented by Nationwide Insurance. If you'd like to make a couple opening remarks.
JACK NICKLAUS: Well, opening remarks, opening remarks. Anything else? (Laughter.)
No, I think, first of all, welcome. Nice to have you all here again. Secondly, when they talk about the golf tournament, the golf tournament is‑‑ the golf course is good, as it always is. Paul Latshaw and his crew have done a good job, as usual. We all had an early spring, as you know, and we popped a little poa annua out there, but that's‑‑ outside of having to look a little bit at it, it doesn't affect anything as it relates to golf. But the golf is really good.
I think we've got an opportunity for the first time in a long time, and I think we'll probably have for the next two days anyway, pretty fast conditions. Right, Paul? Which is one out of every 20 years we get fast conditions this time of year. But I think that's good for the golf course. It's good for the tournament. It's good to see these guys play the golf course rather than in a soft fashion.
But there's another reason why the golf course is fast. Paul has put, what, nine miles of drainage in it? About nine miles of drainage into the golf course over the last four years. Even when we have rain now the golf course drains very, very rapidly.
The 16th hole, which we did a year ago, has matured nicely. It plays well. The green obviously last year was a new green, so it's probably a little firmer than what the others are now. It'll still play quick because it was designed to have the green run away from you, so the guys will say maybe it doesn't hold as well. Well, it does hold as well, it's just my sight that gets in there, having the green designed away.
But anyway, and then the driving range, which I don't know whether you've seen it or not, but the driving range, if it isn't state of the art now, I don't think it's ever going to get state of the art. It's pretty good. They spent a lot of time on it last fall. We changed our east chipping green, took that out and put it over‑‑ put two greens over on the west side, and we took the tees all around. We reoriented the practice tee.
The biggest problem we worried about over time was‑‑ first of all, the thing that started us to do the driving range was the drainage. If you went out there, and when they did it, Paul has got a little book, I'm sure he'll be happy to show it to you if you want to see it, of the balls he found out there, Ryder Cup matches, Solheim Cup matches. You wouldn't believe what was buried out there under the soil where it was wet.
Anyway, the drainage started it, and then we decided we wanted to make sure we contain the ball. Our driving range before was 286 yards straight ahead down from where the master tee was, so we moved it around to the left and now we're 318 yards going up from that tee to the end, and we raised the east tee up high and put a barrier behind it for people walking in. Bubba may hit it over it, but he's got to pop it pretty good.
But anyway, it's really nice, got some great target greens, some bunkers. It's really nice.
We're getting ready to do after‑‑ you've seen the hole over here at the outside of the players' entrance. There's a hole over there which is the start of a cart barn fitness center, and we're changing‑‑ and then we start the week after the tournament, doing a total renovation of the clubhouse and the clubhouse will be ready for next year.
We're doing a lot of different things here that we think are interesting. The hospitality has changed here. The hospitality has moved from‑‑ not moved, but we used to have the CBS compound between 10, 18 and 14, and that compound has been moved out over to the Country Club, and we ended up creating hospitality in that area over there.
It was kind of funny, I went down to Augusta this year, and I went over and saw how nice the Berckmans Place thing they did behind No.5. I thought, that is really neat. They've really done a great job with that. What a great way to utilize an area and create some hospitality. I came back here and told our guys, Guys, we need to do something like that. They said, Jack, you approved it at the last board meeting. I said, What? Yeah, we went through it last board meeting. Before you knew about Augusta we approved it. I said, Aha, I knew we had good ideas here. (Laughter.)
Anyway, we did that, and that'll actually be a nice addition to it.
The field is excellent, as you know. We always have a good field.
I guess that's enough opening remarks. I'll just leave it up to you guys and gals.
Q. You mentioned Bubba in passing. What do you make of that guy, and does he remind you of anybody you played with in your 25‑year era?
JACK NICKLAUS:Â Nope.
Q. I didn't think so.
JACK NICKLAUS: No. He's got‑‑ to put it mildly, a rather unique golf swing, and I think that's‑‑ to his credit, which is to me what the game is all about, is learning who you are and what you are and what you do. You know, people criticize Furyk for his golf swing, but Jim knows what he does and how he does it. You look at some other golf swings and you see what you think is a perfect golf swing, but sometimes they don't know what they're doing with it.
Bubba knows what he's doing with his golf club. He had to learn that. He had to learn how to do that. I think that's what's so unique about it and what's so good about it.
And he's‑‑ that's the first time he's played since Augusta, isn't it?
Q. He played New Orleans.
JACK NICKLAUS: Oh, did he play New Orleans? But he's a unique individual. I'm trying to visualize how much he hooked the ball at 10 at Augusta. I don't know how much he hooked it, but he obviously hooked it a lot. But what amazed me was when the ball came down on the green with a hook as hard as he hit it, it backed up. It backed up the hill, and I said, How do you make a golf ball do that? That was kind of interesting I thought.
But he's a unique individual that's really bringing some new life and new fun into the game.
Q. Tiger has mentioned wanting to own his own swing like Moe Norman. That's his phrasing of it. He mentioned Moe Norman and Ben Hogan as guys who did that. You just were talking about Bubba who's never had a lesson. Is it possible to really own your own swing, whatever that is, if you keep outsourcing it?
JACK NICKLAUS: You explain to me what that means and I can answer your question. I don't know what you're talking about.
Q. What he means by that is to understand when something is a little bit off and to be able to fix it yourself. Can you ever reach that point if you keep outsourcing your swing to the experts?
JACK NICKLAUS: Well, you know, when I was 19, Bobby Jones invited me down to his cabin at the Masters. My father and I went down. And he talked to me then. He said, You know, I had my seven lean years, and he said, Every time I'd play, I'd run back to Stewart Maiden, who was his teacher, and get a lesson for the problems I was having, and so forth and so on. He said, It wasn't until I learned that I didn't need to run back to Sterling or didn't want to run back to Sterling that I became a golfer.
So he said‑‑ if you're talking about owning your own swing, if that's what it is, and so Jack Grout taught me from the start. He said I need to be responsible for my own swing and understand when I have problems on the golf course how I can correct those problems on the golf course myself without having to run back to somebody.
And during the years that I was playing most of my competitive golf, I saw Jack Grout maybe once or twice a year for maybe an hour. If I was in the Miami area or something, I'd run down and see Jack and we'd spend about an hour and we'd spend five minutes on the golf swing and an hour catching up.
But he taught me young the fundamentals of the game. He taught me how to assess what I was doing. When I made a mistake, when I was doing things, how do you on the golf course fix that without putting yourself out of a golf tournament and then teaching yourself.
You've heard me say in many press conferences, I'm not hesitant to change my golf swing in the fourth round of the U.S. Open or the Masters midway in the round if I didn't like what I was doing, because I felt like if I didn't like what I was doing, pretty soon it was going to get me.
So I would work hard, pick a hole‑‑ I wouldn't pick the second shot at 11 at Augusta to be working on my new swing, I'd play it out to the right like I do anyway. But I might pick the tee shot at 14 or the tee shot at 15 or the tee shot at‑‑ the second shot at 14 to do things with my golf swing that I thought I needed to do to get myself back to where‑‑ try to work myself in without putting myself out of the golf tournament. Maybe that's what Tiger is talking about.
But I think it's very important for any golfer to understand who they are and what they can do and how they swing and how they can best be their own teacher. I sat next to Tiger at the‑‑ I sat with Arnold over here and I had Tiger over here at the Masters dinner this year, and Arnold and I, I can't remember what we were talking about because Arnold couldn't hear me, I guess (laughter), but we had a great time. We kid each other constantly, so we have a good time.
And then Tiger over here, we were talking about‑‑ I was asking him, Why do you need somebody to watch you all the time? He said, I really don't. He said, I really have‑‑ I go to Sean and I get some ideas, but then I really go work on it myself and try to learn what I want to do and how I want to do it, which I think is the right way. I said, If you're doing that, you're on the right track, but all I read in the papers is how Sean is making a swing change on you. He said, That's not what I'm doing. I said, Okay, that's fine then, because he's trying to be responsible for himself, which I think is what the question you're asking me, if that's a long answer to a short question. I don't think there is a short answer to that. But I think he's trying to do that.
And you're talking about Bubba; Bubba understands what he does. You tell me that Bubba didn't have anybody tell him anything? I don't believe that. But did he have formalized lessons, maybe not. But did he have somebody that would say something here, give him an idea or a thought, I'm sure that's happened through time. You just can't possibly‑‑ pretty soon you get enough of those thoughts to put in your head, then they stay there and you're able to fix yourself when you have problems during a round.
Q. There's the oft‑repeated quote that Tom Watson made to you on the last few holes at Turnberry in '77 when he said to you, This is what it's all about, isn't it? And I know taking you back to, this is the 50th anniversary obviously of the '62 Open, you always say that playing Arnold you were just a 22‑year‑old kid trying to win a golf tournament, but did you ever during that final round or whenever have a sense of what was happening there with you going head‑to‑head with the guy that was considered, I guess‑‑
JACK NICKLAUS: Why would you? 22 years old, you're not smart enough to do that.
Q. What were you feeling?
JACK NICKLAUS: Bob, it's 50 years ago, and I've answered the question 1,000 times. I doubt I can come up with anything different.
I was a kid that‑‑ Barbara was talking to me a little while ago. She said, I've had people come up to me, how is it with you being in the gallery? Huh? She was walking with Winnie. Winnie was her friend, she was walking with Winnie. They weren't paying attention to what was going on in the golf tournament. They were talking. They were talking about what they got the kids for Halloween or something, I don't know.
But you know what I mean. And the same with me. All I was doing was playing golf. And in those days, when you're 22 years old, you've got your blinders on. I always looked at Watson, who I always thought reminded me a lot of me when I was younger because Tom always‑‑ I always thought he had a set of blinders on. He had no idea what was going on around him. He had one goal, he was going down this channel to win this golf tournament, and that's basically what I was doing when I was that age, too.
It served him very well. I think it probably served me well, too. I think you have to do that, and more so today than ever. You have more fans, you have more media, you have more of everything that you've got to just blank out and go play.
Do we try to blank it out? Not really, because you just don't pay any attention to it, you just go do what you have to do.
Q. But Tom said that he knew you were the best player in the game, and he felt after he beat you that he could finally play with the big boys. Did you have that sense when you were playing against Arnold at that point?
JACK NICKLAUS: Well, you know, see, I had a funny feeling going into Oakmont. I had finished‑‑ I had won the National Amateur twice, I had played seven or eight tournaments each summer from maybe '60 and '61 on the TOUR during the summer while I was playing. So I was playing a fair amount of golf. I almost won in '60 at Cherry Hills, and I really look back, it's one that I gave away. But I was 20 years old. I gave it away because I didn't know how to win.
And then the next year I didn't really give it away, but I had a good chance to win, and I finished fourth. I felt going into Oakmont that, man, I'm not letting this one get away. Going to Oakmont‑‑ it sounds funny, may sound ridiculous to all of you, but I didn't know who Arnold Palmer was for all intents and purposes. I didn't mean it that way, but what I mean is that all I had to do was worry about myself. I wasn't worried about Arnold or Gary or whoever might be there.
I was interested because I felt like I really had the chance to win those two previous wins, and I had just finished second the week before to Littler at Thunderbird and I was really playing well and I was charged up to play, and that was my sole thought was that this was my week.
All of a sudden I found out I was in Arnold Palmer's backyard, but I found that out a couple weeks later after the tournament was over because I didn't pay attention to it while I was there.
I don't know if you understand that, but that's what a 22‑year‑old kid thinks like. Maybe even a 16‑year‑old kid.
Q. How much did you enjoy your visit with Arnold recently at Oakmont?
JACK NICKLAUS:Â We had a great time.
Q. What memories did it bring back?
JACK NICKLAUS: Well, neither one of us could remember the course (laughter), but I went to Merion that morning, and I went and spent the day at Merion with Mike Davis, and then that evening we went to Latrobe. Barbara met me in Latrobe and we spent the night with Kit and Arnie, and we had a nice evening and went to Latrobe Country Club and had a nice dinner, looked around, saw all the pictures of the two of us and obviously more in particular Arnie. But we had a very nice evening.
Next morning we got up, went over to Oakmont, and the purpose of the visit to Oakmont was to try to get a couple of shots for a special they're doing for‑‑ USGA is doing on the '62 Open, 50 years since then. And Arnold says, Why do I have to do that? They want me to do the one with Casper in '67. I lost them both. (Laughter.)
I said, You won enough. We'll get to yours that they won. I said, Did they do one at Cherry Hills, Arnold? Yeah. Okay, I lost there. We were kidding each other about it.
We had a good time and we just sort of basically talked about what jogged our memory from stuff, and unfortunately neither one of us got jogged real hard. But we took some pictures. Where did we start? We took some pictures‑‑ I think we started over on maybe 10 tee, and we first looked at the golf course, and I hadn't seen it since the trees have been taken out, and I looked out across 10 and 11, 12, 13, 14, 15, 16, 18, whatever those holes‑‑ not 16, but whatever holes you see from there, and I'm saying, Wow, boy, is that a difference, looking out at the grass blowing and little ditches running through the property, little ditches you'd never see if you were playing. But they were down there years and years ago.
But we talked about Arnie‑‑ first thing we looked at on 10, he said, That's where I was at 9 and it took four to get up‑and‑down. I said, What did you do? He said, I fluffed my chip shot and then chipped it up and missed the putt. He said, That's what cost me the tournament right there.
And we talked about that, and then we talked about‑‑ we took a picture with our old drivers. You ever see a picture of Arnold and me holding our drivers out like this? We redid that picture, my driver that I broke in South Africa had three screws in it. It's painted black. The name is even off the bottom plate of it. And Arnold's was an old Hogan driver. So we put the two drivers out, took that picture again.
We went over to the first tee and we talked about some opening tee shots and things there. We went over to the putting green, and I hit a putt that they tried to replicate the putt I hit at 15‑‑ or 17, I'm sorry, hit a putt at 17 where Jones wrote me a letter, and he said, When you hit that putt I came right out of my chair. Obviously that was his way of saying that was a pretty exciting putt. For those of you who weren't there (laughter), it was a left to right downhill putt that if I missed was going to go right off the green, and I just took it and put it right in the back of the cup. And if I would have missed it I would have lost the Open, but I made the putt.
Let's see, and we talked about where we were at 18th green and what happened at the‑‑ little things. But it was kind of a nice day. We only spent a morning, but it was kind of nice to be able to do that.
Q. You spoke of the need to play with blinders on. Do you think in today's game where you have more money, more travel, a longer season, it's easier or harder to do that, especially when you're not just 22 but maybe late 20s, 30s with a family?
JACK NICKLAUS: Well, I was 22 with a family. Jackie was about eight months old when I played the Open at Oakmont. But we used to travel. We used to travel. We talked about traveling in the car, back in the day when we didn't have disposable diapers and we had a diaper pail in the backseat with a port‑a‑crib and off we went. Let me tell you, you'd better keep the windows open. I'll tell you what, it didn't smell very good.
And all the players, we'd all try to figure out and go to the same motel so we could have cookouts, and then the wives would have‑‑ they'd take turns watching other people's kids. If one of the guys was in contention, the other wives would take care of their kids and they'd go watch their husband play golf. We did a lot of that kind of stuff in the days when we were playing.
I think that we were pretty close as a group back in those days even though we were still playing on the golf course with blinders. I think we all went to the golf course with the idea to play the best we could and try to win, but when the round was over, as soon as we shook hands, we said, Where are you having dinner? That's sort of the way we did it in those days. I don't know how the guys do it today. I'm not 22 anymore or 25 or 30 or even close, but I don't know what the guys do today.
I'm sure there's a lot of guys that spend time and go have dinner and do things and there are guys that are close friends and so forth and their wives. That's got to continue to happen, and if it doesn't I'd be very surprised. Everything is just magnified. The attention is magnified. The press is magnified. The prizes are magnified.
I don't know that the pressure or tension is magnified because the guys today can make a living playing golf. We couldn't make a living playing golf. We had to go play golf tournaments and win golf tournaments so we had the opportunity to make a name to go make a living, and that was a little different position to be in.
Did I answer what you're talking about?
Q. I guess like Rory at 23 already talking about limiting his schedule because he doesn't want to get burned out at 30, you have Bubba taking a month off because he wants to bond with his child, and so it's becoming harder to get all the top players in tournaments week after week‑‑
JACK NICKLAUS: It's always been hard to get the top players. I mean, how many times do you think that I got yelled at by sponsors and everything? I started doing that when‑‑ we had it a little different. When we first started, we had to play 25 tournaments a year to get our PGA card, and I had to do that for four years. And I played, I think, 27 or 28 my first year plus a little international golf, and I think I did about the same for the first four years.
And then after that I started playing about 21 or 22 tournaments a year, and I think that's about what the guys are going to play, and the guys today, I think I would imagine when Rory ends up at the end of the year that's probably about what he ends up with.
I would assume‑‑ I don't know what Tiger plays. What does he play? Anybody know the number Tiger plays?
Q. It's under 20.
JACK NICKLAUS: Right around 20, isn't it, around the world? Yeah, that's about‑‑ I played maybe 20, 22. So it's not that much different.
We all want‑‑ and I think that what Rory is saying to you is the same thing I always said, and I always wanted to really do this ‑‑ I wanted to be just as fresh at the end of the year as I was at the start of the year. I mean, the start of the year‑‑ these guys played all year‑round. We didn't play all year‑round in the first few years I played. So I was very eager to start out in the winter, so we'd start out at Pebble Beach or wherever it might be, San Diego or someplace.
I wanted to get a little golf under my feet. And then the opportunity to start preparing myself for the Masters was starting to fall in around that time. But I always made sure that I never played more than‑‑ I did occasionally play three weeks in a row, but very, very, very rarely. I'd play a couple weeks in a row and take a week off and sometimes I'd take two weeks off depending on what I was trying to prepare for, and I started doing that at the same age that Rory is doing that. Well, I wouldn't say that. At 22 I played every tournament up to the Open. I skipped one tournament, I skipped Tucson, and I played the first six, skipped Tucson. But in those days I had to play. I wasn't exempt.
So I got an exemption at LA, because I made $33, they let me play the next week.
Anyway, we played at‑‑ I played the first six tournaments on the West Coast, made the cut in all six tournaments, finished second at Phoenix, went to Doral, and it was the first year of Doral, and Doral‑‑ we had 144 players eligible to play, and they could only get 131 to enter. They couldn't get a full field at Doral. Now they've got 20 qualifying spots to get into it‑‑ not Doral because it's a world championship, but let's say Honda or one of the other ones.
So I got in there because they didn't have a full field, and I knew that. That's why I took off the one week. And then I played from Doral all the way through the U.S. Open, and then when I won the U.S. Open, that made me exempt for life. And then I could start to skip a week here and there.
But I played my 25 tournaments, I finished them, I think, with Seattle and Portland, which I actually won both of those, and then my first year won the World Series and won Seattle and Portland three weeks in a row, and then I took the fall off and went back to college actually.
And then I went to Australia for two weeks in the fall and then I played the West Palm Beach Open at the end of November, and I think that was it for that year. And then I started back in the spring.
I started that at a very early age, and I think we all started at an early age. And they kept yelling at Arnold and kept yelling at me and Gary, you need to play more golf. Well, they're still doing the same yelling. It's 50 years later. The guys are going to play as much as they can. In my later part of my career after I played 10 or 15 years, I decided what I would try to do to accommodate that was try to pick one or two tournaments each year that I hadn't played in‑‑ say I had 18 tournaments, the other two I would pick tournaments that I hadn't played in and try to rotate that around.
I laugh at this because it's a different golf course now I can tell the story, but I never wanted to go to Hartford. It had nothing to do with Hartford, it was just an easy golf course and I never played easy golf courses well. Finally one year, Wethersfield, I thought, Okay, I'll go play. Went up and shot 68 the first round, and I think I was in 25th place after shooting a 68. Well, I shot 67 the second round and I was in 32nd place, and I shot 67 the third round and I went to 42nd place, then I shot 67 the fourth round and finished about 37th or 38th. I thought, there's a reason why I haven't come here.
I always wanted to play golf courses that were a challenge and difficult. I thought it would create interest to me and would challenge me and make me‑‑ stimulate me to want to play. So that's basically how I made my schedule.
And then I went back‑‑ when I turned 50 and went to the Senior Tour, we went right back to those golf courses, those same type of golf courses, and that's why I never played much on the Senior Tour. I would play the four majors and I'd play maybe two or three others at the most every year, because I still wanted to be stimulated about playing. To me, golf is‑‑ it's hard to play golf and play tournament golf if you're not excited about playing, and that's why I always wanted to be as fresh at the end of the year as I was at the beginning of the year, so I was excited about playing, because I love to play. I love competition, and I always got so mad at myself if I just went at it sort of lackadaisically.
Q. Two things related to the Presidents Cup: First of all, I think after you obviously redid the 16th, the finishing stretch, maybe even starting at the 12th is really pretty cool for match play and so forth. I wonder if you could enumerate some holes on the front side that you like and maybe key holes for match play.
JACK NICKLAUS: Well, you know my old story, and I'll repeat it quickly. You've all heard it. The first year here I asked the members what their favorite hole was, and I had 14 different responses, so I knew I had four holes to work on. So I think I worked on most of those holes, so we should have 18 holes. So to pick a key spot on the front nine I don't think is very easy to do.
When you start to look at the back nine, and the 16th hole I never really thought was an exciting way to be at that point in the round. I thought the hole was okay. There was nothing wrong with the hole. It was a nice golf hole. But I thought that 14 and 15 were really‑‑ a lot of excitement happens at 14. That's a pretty exciting hole. And a lot of things happen at 15, and then 16 not much happened. Guys decide to get a par and move on. But 17 and 18 were strong golf holes.
So I thought 16, and particularly with the space at 16, and with the Presidents Cup, with match play, I thought that was a pretty good place to try to create a situation where 15, 16, and you can see all of 17 from most of the mounds at 16, so we created a central area where people really for the Presidents Cup will be kind of exciting. But also it's pretty darned good for the Memorial Tournament. Not everybody can get to the 18th hole, but we can probably get 20,000 people around 18, or close to it.
So you've got a situation where you've got the whole back nine that's pretty exciting. I think that's the beauty of Augusta. Augusta's back nine, you want to pick the front nine to the back nine at Augusta? You're obviously going to pick the back nine. And I think you'd pick the back nine here. I think our front nine is a good nine. I think the front nine at Augusta is a good nine. But I think our back nine is better in both cases. I think you can shoot higher or lower on either one, same as you can at Augusta.
Q. Will you have any say in the setup of the golf course next fall or anything?
JACK NICKLAUS: Well, I'll have a say with Paul. Paul Latshaw is in the back in case you want to interview Paul afterwards. He's a man of many words, right, Paul?
But Paul and I will talk about how we'd like to make sure this golf course plays during the Presidents Cup. We'll definitely talk about it. And will it be different than the Memorial Tournament? Maybe not, maybe so. We might change the Memorial Tournament if we want to change anything, we'll talk to the TOUR this year, and we'll probably try to get it that way for the Memorial Tournament next year.
I don't really see anything we'd change. We haven't changed anything on the golf course other than rebuilding the 16th hole for four or five years. Nothing that I can think of.
Only biggest issues that I have are traffic movement, particularly around the clubhouse area. As I said, we're doing a new clubhouse, so I've got to make sure what we're working on, if we're going to do something, let's do it all at the same time and get it done right.
I'd like to get the players to where they can walk freely from the clubhouse to the putting green and back and forth without having to be stopped for half an hour every time they move. If that takes adjusting the putting green and maybe adjusting 10 tee, maybe doing some things to create a better circulation, then we're going to work on‑‑ that's one thing, that's more my‑‑ while we're doing the clubhouse that's one of the things I want to work on because we will be tearing that area up a little bit, so I may as well do it while we're there.
But outside of that, I don't see anything really with the golf course. I think the golf course plays pretty nicely.
The next two days, and I don't know if we get any rain after that, but the next two days this golf course will play very similar to what it's going to play for the Presidents Cup in October.
Q. Like the Ryder Cup in '87?
JACK NICKLAUS: Ryder Cup in '87 was very fast. We moved that creek in ten yards on 18, but they found it pretty easy. I mean, they just kept knocking it in all the time, and we moved it in. But it's because the golf course was fast. The ball hit that fairway‑‑ you don't realize this golf course, the pitch on these fairways, we've got a lot of pitch on these fairways which doesn't come into play until the golf course gets fast. We do have relatively wide fairways, but when you start getting a hard fairway with that much pitch in it, they don't stay wide very long.
Q. Slow play has been a hot button topic both on the professional level and amateur level recently. What would you do to combat it and how important is fixing the problem to growing the game?
JACK NICKLAUS: I think there are two different things. I don't think there's a huge problem on the TOUR. I don't think the TOUR has a big problem with it. They have an individual every once in a while. I used to be that individual sometimes. The guys have to learn, I learned how to not be a slow player. It took me a few years, but I learned, as the other guys will, too.
But I think in general, the TOUR is pretty good.
The one thing that if you wanted the TOUR to move a little bit quicker would be instead of monetary fines, stroke fines, and I think they're starting to do that now, aren't they?
Q. Not on the men's Tour.
JACK NICKLAUS: Not yet? They haven't done it. They say they're going to do it but they haven't done it. I'm not out here all the time so I don't really know what they're doing.
I got a two‑stroke penalty at Portland and I got a two‑stroke penalty at Houston playing with Cary Middlecoff, and he didn't get a penalty, so then I knew I was really slow. You don't know Cary Middlecoff, but he was the slowest.
So it's a matter of learning how to do it.
Now, as it relates to the everyday game, I think the everyday game, they try to imitate what happens on the TOUR, and the kids try to copy the players. Well, the players, these guys are not only taking 65 shots, and there's not a lot of time between their shots. They take their time over their shot, but they play a 7,500‑yard golf course and they play it in four and a half hours and they play it in a threesome that moves along pretty good. It's not that bad. Should it be faster? Yeah, it could be a little bit faster, but I don't think that's a major problem.
But the major problem is becoming for the average recreational golfer because they can't‑‑ today is not a four and a half, four‑hour time to play golf. This is in the computer age, kids want to do things in two and a half, three hours at dead max. No other sport is played in any more than that except a five‑set tennis match maybe might get there, and how much of that do you watch? You watch the fourth and fifth set maybe by the time they get to it.
But the game for the average golfer needs to be faster, take less time, needs to be cheaper, and needs to be easier. Those are contradictory to the TOUR. So to solve that problem, I'm not sure how we solve that problem. I know that the USGA is doing a study on the golf ball and play to try to help it, and I think the PGA of America is working on it and I think the TOUR will be, too, because I think they're going to get their statistics from it. And what they do, I don't know.
But I think they're addressing those issues because they realize that the expense of the game‑‑ let's use as a number 10 percent or 20 percent, whatever percentage you would utilize shortening the game is how much maintenance are you going to save, how much money do you save there.
I'm probably as much a culprit as anybody. We do a golf course, and most people will say, Jack, we want to have a chance to maybe some day play a PGA or a U.S. Open on this golf course. Well, I've got to do a golf course that's going to fit that level. Well, the average golfer can't play that golf course because it's just too darned difficult. But if we play the golf course at a length they can play it, then maybe it's not so bad.
I don't think the average golfer minds having a challenge similar to my challenge, but that challenge would be‑‑ let's say I hit a driver and a 7‑iron to a par‑4. If they hit a driver and a 7‑iron to the par‑4, I think they would accept that challenge quite well. Which means I might hit my 7‑iron from 155 or 160, whatever it might be, and they would hit their 7‑iron from 135 or 140 yards.
Now, to do that, you've got to separate the back tee and the forward tee by probably over 100 yards, but that's what's happening. That's why the USGA is doing this study. So if they brought things back to condense things, could we make that a little bit more together and try to accomplish those things.
So there's a lot of things that can be done to try to speed up the game, make it a little bit easier. Playing shorter is the biggest thing. We can do a 7,500 golf course. We're redoing the Australian golf club right now. I redid it in 1977, '78, I did the Australian‑‑ MacKenzie had done some work on it. I don't know who did the original work on it.
But when I did that work, we did it for that golf course back then. We're going down and redoing the golf course, and they want to add some yardage and they want to get it to 7,300 or 7,400 yards, and the members want to play the golf course at 6,900 or 7,000. I said, you guys can't play the golf course at that yardage. What are you trying to do to the membership, run them out? You've got the wrong guy to help you do your members' tees then. Because I don't do a golf course for members longer than about 6,500 yards because I just don't think they can play it. I think it's the wrong thing to do. If I do a course that's 7,500 for these guys, you'll still get 65 for the average golfer because, as I said, I just don't think they can play it.
The whole issue is to get people to swallow their ego a little bit to move forward, not look back at 100 yards back. Every time I go to Augusta I play on the members' tees now, I look back 100 yards to see the tees back there and I say, I used to play back there? You understand where I'm coming from.
We've got to swallow our pride a little bit and figure out how do we take the game to make it faster, cheaper and easier.
Q. Who was your biggest influence growing up?
JACK NICKLAUS: My biggest influence was my father. Now, my dad played a lot of sports, and he loves sports, and he introduced me to everything. He played it with me. When we got to golf, it was another sport that he introduced me to. I used an interlocking grip because my father used an interlocking grip, but then he turned me over to Jack Grout who was a pro at Scioto Country Club when I was growing up. And Jack Grout, he taught me the fundamentals of the game, but he didn't change my grip.
But my father was my best friend and my role model, and I always wanted to be able to do the things my dad could do. I see your dad smiling over there. (Laughter.)
LAURA HILL:Â Jack, thanks for spending time with us today.
FastScripts Transcript by ASAP Sports
About ASAP Sports
FastScripts Archive
Recent Interviews
Upcoming Events
Contact Us
Events Covered
Our Clients
Other Services
ASAP in the News
Site Map
Job Opportunities
ASAP Sports, Inc.


text:
This blog features observations from Randy Turner, a former teacher, newspaper reporter and editor. Send news items or comments to email@example.com
Monday, May 30, 2005
Obviously, at one time they had them and they served as a training ground for Tiffany Alaniz at KSNF and Malorie Maddox at KODE. But the no-nonsense professional attitude that KOAM has with its morning show is a breath of fresh air. Yes, the news is important to people in the morning and I don't want to hear it over several hundred screaming kids at some artificial Friday high school pep rally (even though somehow Ms. Alaniz and Gary Bandy were able to make that work).
I like the work that Sarah Pierik and Dave Pylant do on KOAM and Ms. Pierik replaced another solid news reporter in Lori Prichard at that post.
Ms. Prichard, like former KSN morning host Sheradee Hurst (another one who did a good job in a tough position, though she never seemed quite as comfortable in those pep rallies) is a reporter for KJRH, Channel 2, in Tulsa, Okla., where she has been since January 2004. She serves as the weekend morning news anchor and a general assignment reporter.
Ms. Prichard originally comes from Joplin and is working on her masters degree from the University of Missouri School of Journalism. Her work at KOAM landed her the position at KJRH. She received an award from the Missouri Broadcasters Association for investigative reporting in 2003. In her bio at the KJRH web site, she calls herself a political junkie and says she reads almost anything she can get her hands on.
We could use more people like that in both broadcasting and print journalism.
6 comments:
I'm curious what you think about the new Tiffany and Gary show that has been on KSN now for a couple of weeks? They have turned the 5 pm news into one big commercial. Ms. Alaniz is attempting to grab male viewers while turning off the female population in her scantily clad outfits. While Mr. Bandy made a disgusting display of himself by rubbing self tanning lotion on his legs. Give me a break KSN. If I wanted to watch infomercials I'd tune in to your station in the morning and now afternoon since you have pushed your daytime soaps back by an hour to show one. Let's have some dignity people. Put on some clothes Ms. Alaniz and Mr. Bandy. Bring us real news not some lame excuse to sell advertising to those who supply your Cinco De Mayo attire or your ballgowns.
- cameracowboy said...
- This comment has been removed by a blog administrator.
I miss Stacey King!!! It's safe to say Stacey set the standard for the female spot on Hometown Today. Seems like it started going downhill after... Goes to show the talent moves up in the world.
As for G&T on the 5.. it does seem a lot like a morning show now.. and like you said.. even more commercialized. I bet the bump in the ratings race was in the wrong direction for KSN. Then again Darlee and Stacey Stidham really set a good tone for the 5 show back in the good ole days! Too bad it has turned into a big commercial. Eh well.. I watch KY3 for the most part.. it's good to live in between! ;)
- Randy said...
I haven't said anything about Gary and Tiffany's show because I haven't been able to get myself to watch much of it. I hated that kind of nonsense on the morning shows and I don't care whether it brings in the ratings or not, from what little I have seen, it appears to be an insult to the viewers' intelligence. Put some money into the news operation and do some stories we care about and we'll watch your program. It works for KOAM and it has always worked for KYTV in Springfield. I loved to watch that station when I was growing up in Newtonia.
Sarah Pierik is absolutely incredible on her morning KOAM show; she is the epitomy of excellence! I love her awesome smile, but at the same time she knows how to report seriously when the need arises. Her interactions with Dave are witty and her timing is superb!
- sam said...
Remember Bob Phillips? Compare then and now.KSNF and KODE are a joke. The only time I watch them is by accident when im looking for 7.

subset: commoncrawl


text:
Sedang Disiapkan
SEO Writer wanted for 50 articles
Bajet $20-100 USD
We need 50 articles (250 – 300 words each) written on Credit Cards. The articles have to be written with Search Engines in mind thus keyword placing is crucial. The articles will be used to create content rich webpage's.
We want all articles to be supplied within 21 days. We do not accept "copy-and-paste". All content must be 100% original. You may look for ideas by browsing other web sites on the net, but may not just copy them. Final articles must be free of typos, spelling and grammatical errors
We are paying $2 per article due to the size (250 – 300 words) of the article.
Please do not bid if you cannot supply these articles at this price or in the timeframe.


text:
I have raster in .bil format which I want to save in GRASS GIS with r.out.ascii. I get this result in .txt file:
north: 1N
south: 0
east: 1E
west: 0
rows: 1
cols: 1
I suppose it is something wrong, because of dimensions of this .txt file. I didn't change any options in r.out.ascii window.
Thank you for your help.


text:
At the company I work, we are really wanting to get into the agile methodology for developing software. One thing that I'm not excited about is the fact that management wants us to build a custom project management feature inside the company's Intranet.
I think this is a total waste of time. There are many great third party tools available (e.g. Axosoft OnTime) that can do everything we need, and more. For how much development time it would cost us to build our own project management module, we could buy numerous licenses for a third party product.
One concern is that, whilst we are writing code for a client, and using our custom Intranet project management module, we find bugs in the module that need fixing ASAP. That means having to stop work on the client code to fix the Intranet. That just puts shivers down my spine.
Another worry I have is lack of functionality. This custom module is going to be so basic, that it will just feel really crap to use. That might sound a bit snooty, but for goodness sake, many third party tools are so feature rich, that the idea of having to write our own tool makes feel very uneasy. In fact, I can't be bothered.
What do you guys think?
I'm going to raise this issue with my boss, since I feel it's such an important topic to talk about.
Thanks for the great responses, much appreciated. To summarize some of them:
Naturally my boss does want to save money, by not forking out a few hundred £'s for licenses. However, for us to write a custom tool, it will take x number of days, multiplied by approx £500, which is our costs. I don't see the business value in this.
Management have mentioned that they want to sell the Intranet as a product in the future, but it's so custom to our needs (and downright basic), that in order to give it to another client, I can see us having to fork a version of the code and rebuild the majority of it anyway. So it's not like we're gaining anything there in reuse.
Having our own custom module means not feature bloat - only the functionality we require will be in the product. My issue is that there are plenty of free, open-source project management tools out there with minimal features already. So even if cost is an issue, we could look into open-source. Again it all boils down to the fact that I don't see the point in writing a project management tool in this day and age. It's a bit like writing your own web browser - why?, what's the point?
Although management are asking for this tool, just because they are, it does not mean I'm going to please them and do it just because they asked for it. If something does not make sense, then I will raise it as a concern.
At the end of the day, it's the developers who write the code, it's the developers who make money for a business. Thus, as far I'm concerned, the devs have a very big role in deciding how a company should manage projects and what tools are used. "I am Spartan, argh!" :)
Hmm, I've not been able to make this question a wiki for some reason, thus I'm going to have to pick an answer to accept.
I had a meeting with my boss today. I told about my concerns on us writing a custom tool from scratch. I even showed him OnTime 2010, plus I ran an OnTime SDK example project which showed we could write our own custom code to interact with the data and do whatever we want. I showed all the lists, features, I could think of.
But he wasn't convinced. Un-f@king-believable! :(
So we will have to write everything from scratch, knowing full well that we could just buy a tool of the shelf to do the job. There's a lot of swear words I could use right now to describe how I'm feeling!
Responding to recent comments:
1) A developer who says he "can't be bothered".
There were three devs in the team, including myself. One dev was full time on a client project, myself and the remaining dev were working on a big client project. That means myself and the other dev would have to work on the client project, as well as the custom management module - at the same time.
The end result was that we ended up a management module, written in ASP.NET MVC by a dev with minimal MVC experience (I was only able to provide a small chunk of time to this module, as I was full time on the big client project). It wouldn't be unfair to say it was pretty crap (no fault of the dev). So yeah, I've no shame in saying I couldn't be bothered to split my time writing a pointless management module, whilst trying to also write a system for a client that were actually going to pay us.
2) A developer who doesn't have confidence in his team to build even a simple application to be relatively polished and free of significant bugs (and this is a shop that accepts contract work?
The company did great work, we delivered good software to clients - the devs were capable, as a team, to deliver good work. You've put words in my mouth there. I did have confidence in the team, but I wasn't confident they could build client systems on time, and to quality, whilst being distracted with this custom waste of time.
3) The one everyone picked up on already, dictatorial management.
Our director was pretty set in ways - he wanted the custom module regardless of the fact there were better options. It felt like a lost situation for us. Didn't feel great knowing that he didn't care what alternatives were available.
To put more context on the situation at the time - our boss wanted us to write the client app and the management module at the same time. They also wanted us to actually use the management module (user stories, tasks, etc) whilst it was being built i.e. dog fooding, with tasks related to the client project.
So imagine building TFS, and developing a new version of Visual Studio, but using the in-development TFS to store your work items, user stories, notes, etc relating to the Visual Studio development project. Not cool.


text:
My wife says I'm the most clueless person in America.
I never anticipated the extramarital affair between David Petraeus and Paula Broadwell, the woman I'd worked with for 16 months on a book about Petraeus's year commanding the war in Afghanistan. On rare occasions, her good looks and close access would prompt a colleague to raise an eyebrow about their relationship, but I never took it seriously.
I certainly wasn't alone. The unusually close relationship between subject and biographer was no secret by the time President Obama nominated Petraeus as CIA director in the summer of 2011 following his command year in Kabul. America's most famous and heralded general had granted Broadwell extraordinary access for her book, "All In: The Education of General David Petraeus." Nor has Broadwell done anything to hide this access or her great admiration of Petraeus since the book was published in January, describing him in terms that are, well, effusive.
So when the news broke Friday that Petraeus was resigning in disgrace because of an adulterous affair, I was dumbfounded. "Could it be Paula?" my friends and colleagues asked immediately. Even then, I said I would give her the benefit of the doubt — until the doubt evaporated a few hours later.


text:
Oh yes, it's that time again. In theory, I need to grade 8 papers for conferences tomorrow. Well, actually that's not in theory. The conferences are scheduled, and I have to have those 8 papers graded for those conferences. I've graded two. But do I need to grade the rest of those papers tonight?
Devil on Crazy's Shoulder: Oh, Crazy, don't grade those papers tonight. You will be more efficient if you put it off until tomorrow morning.
Angel on Crazy's Shoulder: Don't listen to that Devil, Crazy! He lies! He lies!
DCS: No, Crazy, listen to me. Grading expands to fill the time available. If you wait until tomorrow morning, you will whizz - I say, whizz - through those papers!
ACS: No! You will oversleep and then you will freak out and then you won't really read the papers carefully and you'll inflate the grades because you won't feel comfortable giving them the grades they deserve!
DCS: Wow, ACS, you don't really have any faith in Crazy, do you? I know that I believe that Crazy would never be such a slacker. She will wake up at 5 AM!
ACS: Do you even know Crazy?
Crazy: Hey, ACS, I resent that!
ACS: I'm just telling it like it is. I know the truth hurts, but just because I'm an angel doesn't mean that I'm here to make you feel all warm and fuzzy and loved.
DCS: I love you, Crazy. And I believe in you. I think that the negativity of ACS is really bringing you down. And in the frame of mind you're in, how can you really be objective and assign students the grades that they've earned on their papers? I mean, won't you in your current cranky mood punish them unfairly with your poison red pen?
ACS: Are you kidding, DCS? Haven't you even glanced at those papers? I mean, the assignment required abstract thinking. They deserve a reality check about what that means!
Crazy: God, you two are exhausting.
DCS: See, that's why you should call it a night!
ACS: See, that's why you should stop procrastinating and get busy grading!
DCS: You're such a kill-joy, ACS. How about a compromise?
ACS: There are no acceptable compromises!
Crazy: But what about -
ACS: Don't you try to smoothe-talk me, Crazy! I know what you're going to say! You're going to say that you can finish up two more and then do the rest in the morning! Not acceptable!
Crazy: Why, ACS, that's a great idea! I'd never have thought of that!
ACS: But I didn't mean -
DCS: I like the way you think, ACS. You may not be so bad after all.
Crazy: Well, if everybody's in agreement.
ACS: I really -
Crazy: Shut up, ACS.
8 years ago


text:
The Schedule Change Request - Change Course Section Information WebForm is used by departmental schedulers to change section information for a course in the Schedule of Classes.
Note. A red asterisk is a required field. If it is left blank, the form cannot be submitted to our office for processing.
This form is NOT for students who are trying to make changes to their schedule.


text:
for the beans:
1 tablespoon canola oil
1/2 onion, minced
leave of 2 springs thyme
1 clove garlic, minced
for the chicken:
2 cups shredded poached or roasted chicken
15 oz canned diced tomatoes
1 tablespoon chipotle hot sauce
1 tablespoon canola oil
1 jalapeno pepper, seeded, minced
1/2 onion, minced
1 garlic cloved, minced
for the mango salsa:
1 large mango, cubed
1/2 cup fire roasted corn*
1/3 cup diced red onion or shallot
1 jalapeno pepper, seeded, minced
1/4 teaspoon ground chipotle
juice of one lime
the extras:
cooked white rice tossed with the juice of 1 lime
sour cream
burrito sized tortillas
For the mango salsa: toss all ingredients together in a small bowl. Set aside.
For the chicken: Heat oil in a small saucepan. Saute the onion, pepper and garlic until fragernt. Add the tomato and hot sauce. Simmer until the liquid as evaporated. If there are very large chunks, mash them with a potato masher. Toss with shredded chicken. Set aside.
For the beans: Heat oil in a small saucepan. Saute the onion and garlic until fragernt. Add the beans and thyme. Simmer unitl the beans are heated through.
To assemble: Place a small portion of rice middle of a warm tortilla. Top with beans, chicken, sour cream and salsa. Fold the top and bottom towards the center, then wrap the sides towards the middle to close.
*Available frozen at Trader Joe's (thaw before use) or roast your own! Brush one cob with olive oil, salt and pepper. Place a skewer in one end and hold over the stove burner for 1 to 2 minutes rotating so all sides are toasty. Remove the kernels from the cob.


text:
Couple arrested in Suntrust bank robbery in Walkertown
A husband and wife from Winston-Salem have been arrested in connection with an armed robbery Friday at a Suntrust bank in Walkertown.
David Victor Salter, 37, and Cathy Pamell Salter, 35, were taken into custody Tuesday. David was charged with felony robbery with a dangerous weapon, while Cathy was charged with aiding and abetting robbery with a dangerous weapon.
The robbery happened around 10:05 a.m. Friday at 2820 Old Hollow Road east of the intersection with New Walkertown Road.
David robbed the bank while armed with a handgun, and Cathy was an accomplice, Forsyth County deputies said. Both live in the same home on Lyman Road in Winston-Salem, and both were arrested without incident on Popular Branch Lane in Walkertown.
David also was charged in connection with a Sunday robbery at the One Stop store at 7190 Vance Road in Kernersville.
David was held under a $130,000 secured bond in the Forsyth County Detention Center, while Cathy was held under a $30,000 secured bond. Both were scheduled to appear in court April 4.


text:
Click thumbnail to enlarge image
Call us now on 0343 289 7581
Quoting reference DBCHC-611595007
Click here to view other deals for this vehicle
** Prices are displayed exclusive of VAT
Direct Car Leasing is happy to act as your intermediary, credit broker who will introduce you or your business to lenders that specialise in the area of vehicle funding. We will not charge you any fees in advance, prior to any order being placed. We will receive a commission for acting as an intermediary on behalf of these specialist vehicle lenders once an order has been placed. All offers are subject to change at any time, you must be 18 or over and finance is subject to status, vehicle availability and terms and conditions apply. Failure to maintain payments may result in termination of your agreement and the vehicle being returned, this could affect your credit rating and make it more difficult to obtain credit in the future. All prices correct at time of publication.
All vehicle images and car descriptions on this site are for illustration and reference purposes only and are not necessarily an accurate representation of the vehicle on offer.
VAT at 20% may be payable.
You should try and estimate the distance you will travel as accurately as possible to try and avoid excess mileage charges at the end of your contract.
* All vehicle images and car descriptions on this site are for illustration and reference purposes only and are not necessarily an accurate representation of the vehicle on offer.
E: email@example.com
Direct Car Leasing
23 Oak Lane
Direct Car Leasing are a credit broker and not a lender, we are authorised and regulated by the Financial Conduct Authority. Registered No : FRN 728617
Data Protection No : Z9006575 | VAT No : .865 0123 42
Registered Office : 23 Oak Lane Figheldean, Amesbury SP4 8JS
Copyright © 2020 Direct Car Leasing, All rights reserved.


text:
It brings me great joy to announce that I have completed all milestones for my TPF grant regarding the Parrot Embed/Extend subsystems! Not only that, but all of my grant work was included in the most recent release of Parrot, 3.5.0 "Menelaus".
The actual TLDR of this update is "many tests were written, code coverage is above 95% for all systems described in the grant, docs were improved, many Parrot Trac tickets were created and many a blarg toast was cooked.
For those of you that have a thirst for knowledge unquenched (I know who you are), you are welcome to pondiferously peruse the Impending Technical Details.
The last portion of this grant definitiely challenged me to think in new ways about testing and I am now only beginning to reap the benefits. I was charged with adding code coverage a few rarely-if-ever-used C functions in Parrot's embed/exted subsystem, which allows you embed Parrot into other applications and other funky stuff.
Whiteknight++ greatly helped me write a test for Parrot_sub_new_from_c_func which takes a C function and a string that describes the function signature of the C function and returns a NCI PMC, which can be invoked.
I also learned many lessons about code coverage during the final stage of this grant, even though I thought I was at such a level of expertness that it would be hard to learn drastically new and important perspectives on testing. This pattern of thinking is always wrong.
Sometimes you are the underdog and you have to interpret the rules in a new way in order to have a chance at winning. You need to be Ender Wiggins from Ender's Game: continually inventing new tactics to keep a winning edge over the competition.
I noticed that a large portion (about 80%) of the uncovered code in one file was a macro that was copy-and-pasted into two places. I refactored this into a single macro called POP_CONTEXT, which reduced the total number of lines in the file by roughly 10, while simultaneously decreased the number of uncoverd lines in the file by ~20 lines, which had a combined effect of pushing the code coverage over the necessary 95% mark.
This change definitely increases the maintainability and modularity of the code, but it feels a bit like gaming the system. Nonetheless, it saved the day.
The simplest useful test that you are avoiding is the most valuable next test to write, because it has the best ROI (Return on Investment, where investment is the time it takes to write the test, and the return is having an automated way of verifying that the feature works.
Software developers are very optimistic about time estimates. We forget about all the possible things that could go wrong and often quote estimates on something approaching "base case scenario". As a rule of thumb, I think all software developers should think long and hard about a time estimate for a given project, write down the estimate, then multiply that time estimate by pi for a REAL estimate.
I theorize that pi is the factor of time it takes to debug and write tests for behavior of hard-to-recreate edge cases.
I originally thought my grant would take about 3 months, but it ended up taking about 9 or ten. QED.
Finally, I would like to thank my grant manager Makoto Nozaki for providing lots of feedback, support and encouragement, as well as everyone else at the The Perl Foundation for funding this grant.]]>
I went through a test coverage report and wrote down, on an actual piece of paper, every function that had no test coverage. This allowed me to circle the functions that I thought would be easiest to write tests for, and quickly got those out of the way. I then went for uncovered functions that were similar to already covered functions, and then finally I got to the hard functions.
This was a fruitful exercise, because it was decided by Parrot developers that some VTABLE functions escaped accidentally and that they should be removed from the public API. Whiteknight++ removed Parrot_PMC_destroy (extra points for humor), which I was using incorrectly in the extend_vtable tests and which was actually coredumping Parrot, but only on certain platforms. I then removed Parrot_PMC_mark and Parrot_PMC_invoke, the first being an implementation detail of the garbage collector, and Parrot_PMC_invoke because it was the only function that returned a '''Parrot_Opcode_t*''' and basically not fit for public consumption.
I also created a ticket (TT#2126) for a bug in the Parrot_PMC_morph function, which has some possibly buggy but definitely unspecified behavior.
The remaining, untested functions in extend_vtable are clone_pmc, cmp_pmc, get_pointer_keyed_int, get_pointer_keyed_str, remove_vtable_override, set_pointer_keyed and set_pointer_keyed_str. I leave the testing of these functions as an exercise to the interested reader :)
This reminds me of a saying, I can't remember it exactly, but it is something about the best laid plans of camels and butterflies often taste like onions. Anyway, since I wrote my grant, the Parrot Embed API was deprecated and replaced with a shinier and better documented system. After talking with cotto++ and whiteknight++ on IRC, it was decided that working on test coverage for the new embed API was a better use of resources than writing tests for the old embed API that my original grant referred to, which will most likely be removed from Parrot soon.
The new embed API is called src/embed/api.c and the plan is to replace my grant milestone of 95% coverage of embed.c with 95% coverage of embed/api.c, which is currently at 72% coverage.
To summarize, I have two grant milestones left, increasing extend.c (currently at 61% ) and embed/api.c to 95% coverage.
Given the lessons learned from testing extend_vtable and based on the fact that I have already made some headway, my new estimate for these milestones is three weeks each. To make this more definite, I plan to be done with this grant work by July 15th.
This is the home stretch! I can feel it in my bones.]]>
cotto++ and I have been hacking on a detailed spec (over 35 pages now!) and a "final prototype" in Perl 5 in the last few weeks. M0 is as "magic level 0", which means it consists of the most basic building blocks of a virtual machine, which the rest of the VM can be built with. The term "magic" means high-level constructs and conveniences, such as objects, lexical variables, classes and their associated syntax sugar. M0 is not meant to be written by humans, except during bootstrapping. In the future, M0 will be probably be generated from Parrot Intermediate Representation (PIR), Not Quite Perl 6 (NQP) or other High Level Languages (HLLs).
The most important reason for M0 is to correct the fact that too much of Parrot internals are written in C. Parrot internals is constantly switching between code written in PIR, other HLL's such as NQP and C. Many types of optimizations go right out the window when you cross a language boundary. It is best for a virtual machine to minimize crossing language boundaries if an efficient JIT compiler is wanted, which we definitely desire. Since many hotpaths in Parrot internals cross between PIR and C, they can't be inlined or optimized as much as we would like.
A few years back, Parrot had a JIT compiler, from which many lessons were learned. I am sure some people were frustrated when we removed it in 1.7.0 but sometimes, it is best to start from a clean slate with many more lessons learned under your belt. Our old JIT did support multiple architectures but required maintaining a "JIT version" of every opcode on each architecture supported. Clearly, this method was not going to scale or be maintainable.
I will venture to say that M0 is the culmination of the lessons learned from our failed JIT. I should note that "failure" does not have a negative connotation in my mind. Indeed, only through failure are we truly learning. If you do something absolutely perfectly, you aren't learning.
We are at an exciting time in Parrot's history, in that for a long time, we wanted an elegant JIT, using all the latest spiffy techniques, but it was always an abstract idea, "just over there", but not enough to grab a-hold of. A new JIT that meets these goals absolutely requires something like M0, and is the driving force for its design. M0 will pave the way for an efficient JIT to be implemented on Parrot.
M0 currently consists of under 40 opcodes from which (we wager) all the rest of Parrot can be built upon. This is radically different from how Parrot currently works, where all of the deepest internals of Parrot are written in heavily macroized ANSI 89 C.
M0 has a source code, i.e. textual form and a bytecode form. chromatic++ brought up a good point at the beginning of the meeting about the bytecode file containing a cryptographic hash of the bytecode. This will allow one to distribute bytecode which can then be cryptographically verified by whoever eventually runs the bytecode. This is a very "fun" application of cryptography that I will be looking into further.
allison++ brought up some good questions about how merging bytecode files would be done. We hadn't really thought about that, so it lead to some fruitful conversation about how Parrot Bytecode (PBC) is currently merged, what it does wrong, and how M0 can do it less wronger.
We then talked about what exactly a "Continuation" in M0 means, and tried to clear up some definitions between what is actually meant by Context, State and Continuation.
chromatic++ also mentioned that an optional optimization for the garbage collector (GC) would be for it to create a memory pool solely to store Continuations, since they will be heavily used and many of them will be short-lived and reference each other, so having them in a small confined memory region will reduce cache misses. We are filing this under "good to know and we will do that when we get there."
Next we turned to concurrency, including how we would emulate the various concurrency models of the languages we want to support, such as Python's Global Interpreter Lock (GIL). We decided that M0 will totally ignorant of concurrency concepts, since it is a "magical" concept that will be implemented at a higher level. We have started to refer to the level above M0 as M1 and everything above M0 as M1+.
allison++ also mentioned that many innovations and optimizations are possible in storing isolated register sets for each Continuation (a.k.a call frame). This area of Parrot may yield some interesting surprises and perhaps some publishable findings.
We all agreed that M0 should be as ignorant about the GC as possible, but the GC will most likely learn about M0 as optimizations are implemented. The pluggability of our GC's were also talked about. allison++ raised the question "Are pluggable GC's easier to maintain/implement if they are only pluggable at compile-time?" Indeed, they probably are, but then we run into the issue that our current "make fulltest" runs our test suite under different GC's, which would require multiple compiles for a single test suite run. chromatic++ made a suggestion that we could instead make GC's pluggable at link-time (which would require a decent amount of reorganization) which would still allow developers to easily test different GC's without recompiling all of Parrot. chromatic++'s estimate is that removing runtime pluggability of GC's would result in an across the board speed improvement of 5%.
This conversation then turned toward the fact that M0 bytecode might depend on what GC was used when it was generated, i.e. the same M0 source code run under two different GC's would generate two different bytecode representations. This would happen if the M0 alloc() opcode assumes C calling conventions. This was generally deemed distasteful, so our alloc() opcode will not "bake in C assumptions", which is a good general principle, as well. This will be a fun test to write.
allison++ brought up the fact that we may need a way to tell the GC "this is allocated but uninitialized memory", a.k.a solve the "infant mortality" problem. chromatic++ suggested that we could add some kind of lifespan flag to our alloc opcode (which currently has an arbitrary/unused argument, since all M0 opcodes take 3 arguments for symmetry and performance reasons). This could be as simple as hints that a variable is local or global, or a more detailed delineation using bit flags.
It was also decided that we didn't need an invoke opcode and that invoke properly belongs as a VTABLE method on invokables.
We also talked about the fact that register machines greatly benefit from concentrating VM operations on either the caller or the callee side. Looking for more references about this. It seems that the callee side seems to be what we will try for, but I am not quite sure why.
We finally talked about calling conventions and decided that goto_chunk should roughly be equivalent to a jmp (assembly unconditional jump to address) and the invoke VTABLE would setup a return continuation (i.e. make a copy of the program counter), do a goto_chunk, and let the callee handle the rest, such as looking up a return continuation and invoking it.
After the main M0 meeting, cotto++, allison++ and I sat down at a coffee shop and came up with a list of next actions for M0:
I have been talking to cotto++ on IRC while typing up these notes and we have come to the conclusion that a "bytecode verifier" should also be put on that list. A verifier is a utility that detects invalid bytecode and prevent attacks via malicious bytecode. This is something that happens at runtime, where as a bytecode checksum happens before runtime, or at the end of compile time. They provide different kinds of insurance. The bytecode checksum feature will be an instrinsic feature that is not optional, since it prevents Parrot from running known-bad bytecode. But a bytecode verifier adds a significant amount of overhead. This overhead is reasonable if you are running untrusted code, but it is unreasonable when your are running trusted bytecode (i.e. bytecode that you created), so the verifier will have an option to be turned off.
We obviously have a lot of fun stuff to work on, so if any of it sounds fun, come ask cotto++ or me (dukeleto) on #parrot on irc://irc.parrot.org for some M0 stuff to do. We especially need help with writing tests and documentation.
There will be a Parrot hackathon at YAPC::NA this year, where I am sure some M0-related hacking will be happening. If you have never been to a hackathon before, I highly recommend them as a way to join a project and/or community. Meatspace is still the best medium for some things :)
(UPDATE: Some factual errors about our old JIT were pointed out by rafl++ and corrected)]]>
Many, many more tests involving Key PMCs were added. For an intro to what they are, take a look at my previous grant update. Many of the tests are clusters of related tests, because most VTABLEs have many similar forms which take integer, string or PMC-flavored keys. I ran into some platform-specific bugs which only manifest on Darwin machines, which were reported by Jim Keenan in TT# 2098 and which I then fixed by querying with a non-empty Key, which is more prudent.
I also ran into some actual bugs which I reported as Trac Tickets. First is that the cmp_pmc VTABLE does not seem to be working correctly from extend_vtable, which was reported in TT #2103. Then I fell into a "hole" in the VTABLE API, where ResizablePMCArray does not respond to defined_keyed(), which it should. This is described in TT #2094.
In retrospect, this was one of the most productive periods of my grant work. I estimate that I will be very close to the 95% milestone by my next grant update at this pace, which is very exciting.]]>
According to the latest code coverage statistics, we are now at 64% code coverage, which is an increase of about 10% since my last report. Most of this grant work concentrated on vtables that required Key PMCs. A Key PMC is an object that can be used to look something up in a Hash PMC or other aggregated object that supports "keyed access". It is very much similar to a "hash key" that can be used to look up the appropriate value.
One of the lessons that I have learned in working on these tests is that it is very easy to write tests that pass on gcc, but which absolutely explode with g++. This has to do with gcc not being as strict when some questionable type casting is done. I have learned my lesson and I promise not to break the test suite anymore. I will use g++ in my testing from now on, promise!
My productivity was definitely hampered by moving to a new house and having a two week business trip in the last month, but my new home office is finally set up, so I expect productivity to approach previous levels of adding a few dozen tests per week.]]>
This TPF grant has forced me to become very familiar with Parrot vtables (virtual tables), which is basically an API for talking to Parrot PMCs (really just objects with a funny name). PMC can stand for Parrot Magic Cookie or PolyMorphic Container. Take your pick.
Firstly, vtable is already slang for "vtable function", which expands to "virtual table function." What the junk is a "virtual table function" ? I find that the simplest way to think about it is that every PMC has slots or buckets with standardized names such as get_bool (get Boolean value) or elements (how many elements does this PMC have?)
All PMCs inherit sensible defaults for most vtables, but they are allowed to override them. Why would you want to override them? As a simple example, let us assume there is a vtable called length (there isn't actually, but it makes an easy example to explain these concepts). Our length vtable will act just like elements and tell us how many elements a PMC has. If we had a complex number PMC that was really just an FixedFloatArray PMC of two numbers underneath, the length would always return 2 for every complex number. Not very useful.
A much more useful length vtable would use the coefficients a and b from a + b*i and compute the Euclidean distance (length from the origin) sqrt(a^2 + b^2). Hopefully you now have a taste for what what vtables are about. Parrot PMCs have over 100 vtables that can be overridden to provide custom functionality.
I recently ran across the hashvalue vtable and couldn't find any tests for it in Parrot core (outside of the test that I had written for it in extend_vtable.t) or any use of it in Rakudo Perl 6. Oh noes! It seemed like an unused/untested feature, so I created a Trac Ticket to mark it as deprecated so it could be removed in a future release.
The discussion about the ticket was fierce. NotFound++ explained why the vtable was important and the mighty coding robot known as bacek++ manifested tests quickly.
Yet another case of this grant work having a positive impact on the Parrot codebase, even outside the embed/extend interface. I also improved an error message in the PMCProxy PMC, which arises when something goes bad during a partial re-compile. Yay for improved debuggability!
According to the current code coverage statistics, extend_vtable.c is up to 54% coverage from 43%, which is not quite where I predicted from my last update. No doubt this has something to do with me packing and preparing to move to a new house this month. My velocity didn't decrease so much as the amount of time that I had to work on this grant.
I am greatly enjoying working on this grant and even if it is going a bit slower than I had planned, I am very confident that it will be completed in the next few months and hopefully sooner.]]>
I do believe that my development velocity has increased recently, because I wrote a convenience funciton called extend_vtable_output_is(), which greatly reduces the number of lines of code that each extend_vtable test requires. The function is basically a wrapper around already existing functions that automates the process of compiling C source code use the Parrot C API, but it removes the need for roughly 40 lines of boilerplate stuff, such as including the proper header files, defining convenience functions that do basic error checking and data structure creation.
The whole reason this subsystem is undertested is because no function like extend_vtable_output_is() existed. Now each of my extend_vtable tests is around 10 lines, instead of 50. I've only had the new function for about half the time of the grant, so tests are now getting written much faster.
I have added about 700 lines of lines of tests since this grant started (using the spiffy new extend_vtable_output_is() function), and that has caused a 38% increase in test coverage. With the power of mathematics, we can figure out that (.38)*N = 700, which means N = 700/.38 = ~1842, where N is the number of lines of tests needed to cover 100% of the file (roughly).
My new estimate for getting to 95% coverage of extend_vtable is one month from now, Feb 24th, and then another two months for the rest of the grant.
The reason I say two months is that I am actually trying to hit a moving target, and the code coverage of extend.c and embed.c have actually *gone down* since I started the grant. Currently extend.c is about 6% lower and embed.c is about 14% lower. This means my grant is actually getting harder to complete.
I also learned about a very useful yet undocument environment variable called POSTMORTEM which makes Parrot test functions leave various intermediate files around for debugging purposes if it is set to true, which greatly helps in developing these tests. I plan to add documentation about this to the Parrot developer documentation.
Given the new test function and the new coverage numbers, I estimate that I will be able to complete this grant by late April 2011.]]>
I am working in the leto/embed_grant branch on Github, which has already been merged to master just before the release of Parrot 2.11.0.
My first merge of this topic branch included about 15 commits, which are about 2/3rds documentation and 1/3rd tests. I clarified some points about edge cases of Parrot function signatures, such as void input and void output, which is the emtpy string concatenated to both sides of an arrow ->, and gave an expanded description of what Pi means (PMC, invocant). Many examples of diverse kinds of function signatures were also added.
I gave the first user-visible documentation for many constants in the Embed subsystem, such as debug flags when creating interpreter objects and inline descriptions of different runcores that can be used with interpreter objects.
The tests that I added include the first coverage of returning Float PMCs and numeric constants from our embedding subsytem, as well as additional coverage for returning a ResizablePMCArray consisting of Numeric PMCs. I also added tests for creating multiple interpreter objects and added a TODO test for Trac Ticket 1880.
I also fixed a bug in the Parrot test suite, where tests in t/src were not skipped properly if src/parrot_config.o did not exist.
Most of this work was done between Thanksgiving and holiday travel, so I expect that development pace will pick up in the next few days. Currently, one of four inchstones has been achieved, and I will concentrate on raising the code coverage of extend_vtable.c in the next two weeks.
I would like to thank The Perl Foundation, and Karen Pauley in particular, for funding this very important grant to the Parrot and Rakudo Perl 6 communities.
I'm excited to announce that Parrot Foundation and The Perl Foundation have been accepted as organizations in Google Code-In 2010!
Google Code-In is a contest, similar to Google Summer of Code, where Google pays students aged 13-18 to do tasks designed by open source communities, while learning about open source. Google pays for the work to be done, and we get new members to our communities, while students learn useful skills. It is a big win for everyone.
In 2010, Google Summer of Code was a great success for Perl and Parrot. We got amazing new features in Parrot, Perl 5 and Perl 6 . In 2009, we had similarly spectacular results.
For the students, the benefits are huge. They get mentored by some of the best minds in open source and get "street cred" in the community. This contest also acts as a stepping stone for Google Summer of Code, so students that excel at Code-In will most likely be sought after for future Google Summer of Code involvement. It's also fantastic experience to put on a résumé. I see many Google Summer of Code students get snapped up by respected companies, or accepted to prestigious academic institutions.
The more well-documented tasks we have before that, the more students we will have the potential to attract. I can attest that these kind of contests attract some of the smartest students in the world, so the Perl and Parrot communities have much to gain by being involved.
I expect great results for Code-In as well, but we need your help. The Google Code-In contest opens up for students on:
It began by arriving a bit early to work with some awesome people on improving the GSoC Mentor Manual by adding a chapter for Organization Admins (there is actually documentation now!) and writing a GSoC Student Manual. This "book sprint" was facilitated by Adam Hyde of FLOSSManuals, and they were written with a completely open source software stack, as well as being released under a Creative Commons license. They are free for anyone to read online and are easily exportable to many formats. Read the Student Manual or the Mentor+Org Admin Manual online now! We even bound 60 copies of the books and handed them out to mentors attending the summit.
Parrot on RTEMS hacking with Chris Johns and Ralf from RTEMS. We used Centos 5 RPMS on Ubuntu 10.04 with rpm2cpio piped to cpio, which was a trick to get around the fact that RTEMS does not have debian packages. It worked remarkably well. I had a cross-compilation environment setup after a few minutes. I think they will be adding these intructions to their wiki. Now that I have the RTEMS toolchain on my netbook, I will be much more productive with regard to Parrot on RTEMS.
Chromatic, Chris Johns and I sat in a room and talked shop about how Parrot and RTEMS can play nicely together. There are still some feature voids on the Parrot side to fill: Parrot calls exit() in various places, which reboots RTEMS i.e. a syntax error reboots the OS. Not Fun. Parrot also needs a C probe to detect RTEMS, which already has a ticket in our bug tracker. A real-time garbage collector will be needed for long-running processes, but for short-lived applications, disabling the GC with the -G command line argument to Parrot will work.
I gave a session with Selena Deckelmann and Bart Massey introducing Troll University, which aims to educate organizations, corporations and open source communities about what motivations and principles trolls use and how to protect against them. We are working on some Trollcasts, so stay tuned!
I also gave a session called Dynamic Language Interoperability, which has been held for the last few years, to my knowledge. The consensus seemed to be that every dynamic language has the same interop problems, and Parrot VM seems to be the only project working hard to solve these complex issues in a general manner. This gives me a lot of hope that people will soon realize that Parrot is full of WIN.
It also came to my attention during the conference that Github hired the student that mentored under them this year to work on libgit2. This is one example of the amazing opportunities that students have after completing a Google Summer of Code. The sky really is the limit. And just in case you think this is an isolated incident, it isn't.
As if writing some books and going the Mentor Summit wasn't enough to totally drain me, I am currently attending the last day of the GIT Together 2010, which is the yearly Git developer and user meetup/unconferencey thing. I have learned so much that I can't even begin to describe it, but if you want to look at session notes, you can find them here.]]>
Ryan Jendoubi -- Ctypes for Perl Mentor: Reini Urban Blog: http://blogs.perl.org/users/doubi/ Repo: http://gitorious.org/perl-ctypes/perl-ctypes
This project is exciting many Perl developers, because it would minimize the need to use XS, which will make many more pure-Perl modules possible. This improves portability, becaue XS-based modules are notorious for being fragile across operating systems and compiler versions. This adds up to a whole lot of WIN.
Nat Tuck -- Hybrid Threads for Parrot Mentor: Andrew Whitworth Blog: http://parrot.org/blog/836 Repo: http://github.com/parrot/parrot/tree/gsoc_threads
Threads allow a single program to use more than one CPU, which is becoming increasingly important these days. Even mobile phones are multicore! This work aimed at adding threading support to Parrot Virtual Machine. Much was accomplished, but this effort is still on-going. So-called "green threads" were implemented, which is a necessary step to get Hybrid threads working.
Tyler Curtis -- A PAST Optimization Framework for Parrot Mentor: chromatic Blog: http://parrot.org/blog/839 Repo: http://github.com/ekiru/tree-optimization
This project is about providing a framework for optimizing PASTs (Parrot Abstract Syntax Trees). This will be used by language implementors when optimizing their HLLs (High Level Languages). This framework allows all languages on Parrot to benefit from optimizations that are written once, instead of each language implementor writing their own optimizations.
Daniel Arbelo Arrocha -- NFG and single-representation strings for Parrot Mentor: Allison Randal Blog: https://www.parrot.org/darbelo Repo: http://github.com/parrot/parrot/tree/gsoc_nfg
NFG stands for Normal Form Grapheme, and basically means having a standard internal representation of Unicode strings, so that very expensive conversions do not have to repeatedly take place. This makes string-heavy computations much faster and unifies a lot of code.
Carl Masak -- Add support for binary data in Rakudo Mentor: Jonathan Worthington Blog: http://use.perl.org/~masak/journal/ Repo: http://github.com/rakudo/rakudo
Rakudo Perl 6 now supports various binary data formats that were implemented as part of this project. Many relevant tests were also added to the Perl 6 Spec Test Suite as well as improvements and clarifications to the Perl 6 Specification.
Muhd Khairul Syamil Hashim -- Instrumentation Tool for Parrot Mentor: Christoph Otto Blog: http://www.parrot.org/blog/841 Repo: http://github.com/khairulsyamil/parrot-instrument
This instrumentation tool for Parrot allows one to dynamically peek into the execution of Parrot op-codes. This allows for writing profiling tools that can answer questions like "who calls functions X" and "how many Objects of type X were created."
John Harrison -- Improvements to NCI/LLVM Stack Frame Builder for Parrot Mentor: Peter Lobsinger Blog: http://www.parrot.org/ash Repo: http://github.com/ashgti/parrot
This project is a prerequisite for a JIT (Just In Time compilation) framework, which is an important goal for the Parrot community, since Parrot decided that our old JIT subsystem was broken beyond repair and removed it. Parrot has decided to use the very popular LLVM project in our rewrite of our JIT, and this project brings us a step closer on our journey.
Pawel Murias -- Mildew and SMOP on CPAN Mentor: Daniel Ruoso Repo: http://github.com/perl6/mu
This project involved working on Mildew and SMOP. Mildew is a Perl 6 implementation, and SMOP is the library Mildew uses for meta-object programming. You can think of Mildew as a sister to Rakudo Perl 6. Having many implemenations of Perl 6 helps to better define the Perl 6 specification. Updated versions of SMOP and Mildew are now available on CPAN.
The failing projects were:
Justin Hunter -- Rework Catalyst framework instance initialization code Mentor: Florian Ragwitz Mirko Westermeier -- Bulletproofing the Mojolicious test suite Mentor: Marcus Ramberg
Both of these projects passed their midterms, but due to circumstances outside of the program, these students were not able to complete their goals for their final evaluation. Sometimes Real Life throws you a curve ball, like starting a new job, moving to a new city, having a baby and similar things. We wish these students the best of luck, and hope that they complete their projects outside the structure of GSoC.
I am very proud and humbled by all the students and mentors that I worked with this year. I am constantly reminded that there are very intelligent developers that are very young, and The Perl Foundation and Parrot Foundation is very lucky to attract them and have them in our communities. I firmly believe that the passing GSoC 2010 projects have made a large positive impact on our codebases and many people will benefit from them for years to come.
Rock on and keep spreading the Open Source love!]]>
I have also been dutifully hacking on PL/Perl6, which embeds Rakudo Perl 6 into your PostgreSQL datbase via PL/Parrot, and just recently merged the plperl6 branch, which adds the first basic support for PL/Perl 6. Here is how it currently works:
To tell PL/Parrot that you would also like PL/Perl6, you set the environment variable PERL6PBC to the full path of perl6.pbc like so:
export PERL6PBC=/Users/leto/git/rakudo/parrot_install/lib/2.5.0-devel/languages/perl6/perl6.pbc
A PBC file is Parrot bytecode, and the perl6.pbc file basically bundles all of Rakudo Perl 6 into a single file. You can play around with the Rakudo Perl 6 REPL by running:
$ parrot $PERL6PBC
which is pretty much the exact same thing as running the perl6 binary in your $PATH.
When you compile PL/Parrot with the $PERL6PBC environment variable set, it automatically creates a separate Parrot interpreter with the perl6.pbc bytecode loaded, so that Perl 6 code can be executed.
To run PL/Parrot tests, you type "make test". You can also do this the PostgreSQL way with "make installcheck", which will run the tests and verify that the output matches a certain, known output. "make tests" just generates the TAP output.
Currently PL/Perl 6 tests are not run by default, they have their own Makefile target: test_plperl6 This is what the output of "make test_plperl6" looks like currently, on commit 44a985f123 of the perl6_args branch.
We run a total of 9 tests, 6 of which correctly run Perl 6 code and pass. You will notice that all the failing tests are relating to passing arguments into Rakudo from PostgreSQL, which is what I am currently trying to get to work. Currently I am passing a Parrot ResizablePMCArray of the arguments to a Rakudo function and executing it, but the function can't seem to see it. My guess is that Rakudo wants native datatypes and not Parrot datatypes. If you know how to create Rakudo datatypes from PIR, please let me know :) I promise you will -Ofun.
What does PL/Perl 6 look like? Here is a nice example of a PL/Perl6 function which calculates the sum of all Fibonacci numbers <= 100:
CREATE FUNCTION test_fibonacci_plperl6(integer) RETURNS int LANGUAGE plperl6 AS $$
[+] (1, 1, *+* ... 100)
If you are interested in hacking on PL/Perl 6, PL/Parrot or anything related, come join us in #plparrot on freenode, join the mailing list and fork us on github !]]>


text:
Though we have specific items such asScramble Squaresthatare a unique challenge for ages 12 and up, this age range may also be ready to try out any adult jigsaw puzzle challenge.
Use the filters to the left or simply scroll down to begin viewing all pages.
Copyright © 2008-2020, Puzzle Warehouse, All rights reserved.
Puzzle Warehouse recycles everything it can to save the environment and to keep costs and prices low.
We are Hiring! Please fill out the employment form or send your resume to firstname.lastname@example.com.


text: IS B 510 DSelective Soldering with the IS B 510 DThe Most Economical Step into Selective Soldering! All our machines are designed to meet the needs of lean manufacturing in combination with flexibility and through put at minimal cost. The new generation of selective soldering machine is controlled via embedded PC, CANopen technology and by InterSoft, a Windows based software. Our revolutionary Inter-PhotoScan offline programming system is a "Point and Click" PCB image package, also Windows based. That allows the operator to complete a program in a matter of minutes instead of hours. These entry level machines are newly designed with more than 10 years experience in manufacturing of selective soldering machines. All machines are equipped with our inert hot nitrogen atmosphere for the soldering process and to assist the prevention of oxidation. Each solder pot has this inert atmosphere and we can use up to 2 ports in one machine. The travelling X, Y, Z axis system is picking up the pots automatically. This function can be used for different alloys and/or for different nozzle diameters. These machines can be equipped with a unique designed preheating system for top and bottom heater, controlled by a pyrometer. All process parameters are controlled and monitoring for data take over. See information documentEmail kami untuk mendapatkan Data MSDS dan TDS mengenai produk yang anda kunjungi. Share To :


text:
A month of pumpkin.
I had no idea when we bought a new house we would be so busy! Back in our old apartment there were nights where we would just sit on the couch and watch TV and relax. We have been in the new house 2.5 months and that has yet to happen. There is something to replace/fix/paint everywhere we look. This new house has been interfering with my blogging...but it is worth it. Even though I have not been posting, I have still been baking. This month I plan to share with you a recipe with pumpkin every week. This post is for an amazing cupcake recipe from Martha Stewart. I can not say enough about how amazing these cupcakes were! The recipe in the book recommended a brown butter icing (which was more of a glaze) and I knew I wanted something more substantial so I whipped up a maple pecan frosting which was incredible! If you love pumpkin then you should definitely make these cupcakes!
Brown Butter Pumpkin Cupcakes
recipe adapted from Martha Stewart's Cupcakes
3/4 cup (1 1/2 sticks) unsalted butter, room temperature
1 2/3 cups all-purpose flour
2 teaspoons baking powder
1 teaspoon salt
1/2 teaspoon ground cinnamon
1/4 teaspoon freshly grated nutmeg
1/8 teaspoon ground gloves
1 cup canned pumpkin puree (not pie filling)
1 cup packed light brown sugar
1/2 cup granulated sugar
2 large eggs
Preheat oven to 325 degrees Fahrenheit. Line muffin tins with paper liners. In a saucepan, melt the butter over medium-low heat and continue to cook, swirling occasionally, until butter turns golden brown, Skim foam from top, and remove from heat. Pour into a bowl to stop the cooking, leaving any burned sediment behind; let cool.
Whisk together flour, baking powder, salt, cinnamon, nutmeg, and cloves. In another bowl, whisk together the pumpkin puree, both sugars, eggs, and brown-butter mixture. Add the flour mixture, and whisk until just combined.
Divide batter evenly among lined cups, filling each three-quarters full. Bake, rotating tins halfway through, until a cake tester inserted in centers comes out clean, about 20 minutes. Transfer tins to wire racks to cool completely before removing cupcakes. Frost with Maple Pecan Frosting. Makes 15 cupcakes.
Maple Pecan Frosting
adapted from Big Oven
1/2 cup maple syrup
2 ounces cream cheese softened
1/2 cup butter softened
2 cups powdered sugar
1/2 cup pecans toasted and finely chopped
In a saucepan over medium-high heat, bring maple syrup to a boil. Reduce heat and simmer, swirling pan occasionally, until reduced by about a third, 10-12 minutes. Pour into a glass measuring cup nested in a bowl of ice water and stir constantly until syrup is very thick and barely warm to touch, 3-4 minutes. Remove from ice water. In a bowl, with a mixer on low, beat cream cheese and butter until well blended. Beat in powdered sugar (adjust the amount of sugar to reach your desired consistency); scrape in reduced syrup; beat until smooth.
Sunday, November 8, 2009
Brown Butter Pumpkin Cupcakes with Maple Pecan Frosting
A month of pumpkin.
2 comments:
I baked these yesterday, and they definitely go in my permanent "keepers" of pumpkin recipes! I have wanted to make a recipe that uses browned butter for a long time, and these were so rich, moist, and delish! I shared a picture on my Facebook page, and people went ballistic! I put in the link to to your recipe on your blog, as a result. YUM! Thanks!ReplyDelete
- AnonymousOctober 28, 2014 at 3:51 PM
I made these and they were a huge hit at a party I attended. Thank you!ReplyDelete