text:
Tag: Josh Donaldson
That's Amaury's News and Commentary podcast: White Sox surprised Yanks Donaldson got just a one day suspension; Cardinals Molina out for bereavement after pitching Sunday
Published on May 23, 2022 May 23, 2022 by Sports Radio ServiceLeave a comment
New York Yankees Josh Donaldson (left) and manager Aaron Boone (right) talk during the first inning against the Chicago White Sox at Guarantee Rate Field in Chicago on Sun May 22, 2022 (AP News)
#1 MLB suspended New York Yankees Josh Donaldson one game for making a Jackie Robinson reference to Chicago White Sox shortstop Tim Anderson on Saturday. Donaldson after the game in New York made the Jackie Robinson reference and said he meant no disrespect but White Sox pitching coach Ethan Katz was surprised that he only got one day.
#2 The Jackie Robinson reference was an undertone a dog whistle to Anderson who is black and Donaldson is white player. Donaldson said that he was joking around in the past with Anderson about the Robinson reference when Anderson said he feels like today's Jackie Robinson.
#3 Amaury, Sunday the St Louis Cardinals pitcher Yadier Molina who pitched in relief giving up two home runs and four runs after the Cardinals swept the Pittsburgh Pirates in four games at PNC Park. The Cardinals have placed Molina on the bereavement list the reason for the bereavement was not disclosed.
#4 The San Francisco Giants are coming off losing a three game sweep against the San Diego Padres at Oracle Park. The Giants also lost first baseman Brandon Belt to the 10 day IL for an inflamed right knee. Giants manager Gabe Kapler said the team is still in good shape.
#5 The Oakland A's have lost seven of their last ten games and have lost two of three to the Los Angeles Angels over the weekend including Sunday's 4-1 loss. A's pitcher Cole Irvin lost the contest and the A's are not getting any run support.
Amaury Pi Gonzalez is the lead Spanish play by play announcer for the Oakland A's on flagship station Le Grande KIQI 1010 San Francisco and does News and Commentary at http://www.sportsradioservice.com
Categories MLB, That's Amaury's News and Commentary•Tags Brandon Belt, Chicago White Sox, Cole Irvin, Josh Donaldson, Los Angeles Angels of Anaheim, mlb, New York Yankees, Oakland A's, Pittsburgh Pirates, San Francisco Giants, Sports Radio Service, St.Louis Cardinals, That's Amaury's News and Commentary, Tim Anderson, Yadier Molina
Panik's walk-off gives Giants huge 4-3 win
Orovillemr.com photo: San Francisco Giants' Joe Panik watches his two-run single in front of Atlanta Braves catcher Brian McCann during the ninth inning of a baseball game in San Francisco, Tuesday, May 21, 2019. The Giants won 4-3.
SAN FRANCISCO — Down to his last strike on multiple occasions, Joe Panik came up huge in the bottom of the ninth inning.
Panik slapped a single to right field off of Luke Jackson that scored Kevin Pillar and Mac Williamson, as the San Francisco Giants came back from a 3-1 deficit to defeat the Atlanta Braves 4-3 before a crowd of just 28,030 at Oracle Park.
This was the second walk-off of the season for the Giants, and the second this month, as Buster Posey hit a walk-off single in the bottom of the ninth inning to defeat the Los Angeles Dodgers on May 1.
As for Panik, this was his second career walk-off hit and first since May 1, 2015 against the Los Angeles Angels.
Jackson came on in the bottom of the ninth inning, as he looked for his team-high seventh save of the season; however, in the end it did not happen.
The closer got Evan Longoria to ground out for the first out of the inning, but Brandon Crawford singled to left, then Jackson got Steven Duggar to strike out for the second out of the inning and then Crawford advanced an additional 90 feet on defensive indifference.
Pillar then cut the Braves lead down to one, as he singled in Crawford and then Pablo Sandoval came to the plate. Pillar then stole second to get into scoring position that setup Sandoval for the possible game-tying hit.
Sandoval hit a ball into the hole at third base that Josh Donaldson dove and kept the ball from going into left field that would have tied up the game, and Pillar stayed at third base. Williamson came on to pinch run for Sandoval, and stole second that setup Paniks heroics.
Panik fell behind 0-2 and then the count went to 3-2, and finally on the eighth pitch of the at-bat, Panik hit a 95 mile per hour into right field that scored both Pillar and Williamson to give the Giants an improbable victory.
The Braves got on the board in the first inning, as Dansby Swanson singled and eventually scored on a Nick Markakis double to left field.
Panik got the Giants rally started in the bottom of the first inning, as he singled off of Braves starter Julio Teheran, he went to second on a Buster Posey single and then over to third on a Brandon Belt fly ball to left field. Evan Longoria then tied up the game, as he doubled to left field to easily score Panik from third base; however, the rally ended, when Crawford struck out to end the inning.
Both Teheran and rookie Shawn Anderson matched each other inning for inning until the Braves finally got to Anderson in the top of the sixth inning and chased the rookie, who was making just his second major league start.
Donaldson and Markakis ended Andersons night, as they hit back-to-back singles in the top of the sixth inning and that brought on Reyes Moronta, who got Austin Riley to fly out to Duggar in centerfield; however, both Donaldson and Markakis advanced an additional 90 feet. Brian McCann broke up the tie, as he hit a sacrifice fly to Stephen Vogt in left field.
Freddie Freeman extended the Braves up to two runs in the top of the seventh inning, as he hit an opposite field single that scored Ronald Acuna, Jr., who walked with one out in the inning and went to second on a Swanson walk.
Acuna made a huge defensive play in the bottom of the third inning, as he robbed Brandon Belt of a solo home run.
If people that thought Acunas plat was huge, Crawford also came up with two huge defensive plays of his own.
The shortstop snared a Freeman line drive in the top of the third inning that looked like it was going into left field, but Crawford caught the ball to rob Freeman of a base hit.
Crawford came up huge on the defense again in the top of the ninth inning, as Acuna attempted to steal second base and was originally called safe; however, replays showed that Crawford applied the tag on the foot and the umpires went to replay and after a 44-second review, it was determined that Acuna was indeed out.
Paniks two-run walk-off base hit gave the win to Trevor Gott, who is 2-0 on the season, while Jackson falls to 2-1.
Anderson, who was making his second start of his career, went five innings, allowing two runs on eight hits, not walking a batter and striking out three, as he did not fare in the decision.
The veteran Teheran went 5.2 innings, allowing just one run on three hits, walking three and striking out six.
Once again, the Giants helped out, as they went the final four innings, allowing one run on three hits, walking three and striking out two.
NOTES: Vogt started in left for just the second time in his major-league career, and it was his fifth appearance in left field and 17 in right field. Vogt last played in the outfield in 2017.
Sandoval picked up his 10th pinch-hit of the season, and is now 10-for-25 as a pinch-hitter this season.
In 16 career games against the Giants, Donaldson is 21-for-60, a .350 clip with seven extra base hits.
Acuna, who hit two home runs in the series opener on Monday night, has reached base in seven of his 10 plate appearances in the series, as he has walked twice and picked up five hits.
UP NEXT: Jeff Samardzija looks for his third win of the season, as he takes the mound on Wednesday night for the Giants, while left-hander Max Fried looks to raise his record to 7-2 on the season, as he toes the rubber for the Braves.
Categories MLB, San Francisco Giants•Tags Atlanta Braves, Brandon Crawford, Buster Posey, Dansby Swanson, Evan Longoria, Joe Panik, Josh Donaldson, Kevin Pillar, Los Angeles Angels, Los Angeles Dodgers, Luke Jackson, Mac Williamson, mlb, Nick Markakis, Pablo Sandoval, San Francisco, San Francisco Giants, Sports radio, Steven Duggar
Blue Jays beat the A's 5-3 in a strange game
Published on July 17, 2016 by Charlie O. MalloneeLeave a comment
Marcus Semien hits his 20th home run of the season. Photo Credit: Kelley L Cox-USA TODAY Sports
The Oakland Athletics lost the final game of the three-game series to the Toronto Blue Jays 5-3 on Sunday afternoon, but the A's still won the series two games to one.
The Sunday game had "weird" painted all over it right from the beginning. Rich Hill started the game for Oakland and the speculation was that it would be his final start as an Athletic because of his trade value. Hill threw five pitches and called the trainer to the mound. A piece of skin came off where he had a blister that caused him to miss a start, and that was it for Hill. His day was over.
The A's would use seven pitchers in the game but the real surprise was the appearance of starting pitcher Sean Manaea in the second inning of the game. The rookie left-hander was scheduled to start the game on Tuesday versus the Astros. After it was determined that reliever Andrew Triggs could not continue after being hit in the calf with a batted ball, manager Bob Melvin called on Manaea.
Melvin talked about how tough it was to ask Manaea to respond so quickly. "It's tough to ask the kid to do something like that too. We were going to limit his pitches but we just didn't have enough bullpen wise to get through the game if we didn't use him. He responded really well. I'm sure he didn't come to the ballpark thinking I might pitch today."
Manaea worked five innings giving up two runs (both earned) on three hits. He struck out four Blue Jay hitters. Manaea did give up a two-run home run to Troy Tulowitzki in the top of the fourth inning. Tulowitzki hit his 16th home run of the season over the center field wall. Manaea did not figure in on the decision in Sunday's game.
The Tulowitzki home run gave Toronto a 3-0 lead. The Jays scored a run in the that wild and confusing top of the first inning.
The A's were having to battle the strong pitching of J.A. Happ who entered the game with a 12-3 record. Happ held the A's hitless through the first three innings.
The A's broke through in the bottom of the sixth inning when they sent nine men to the plate and scored three runs on four hits to tie the game at 3-3. Marcus Semien started the scoring for the A's by hitting his 20th home run of the year.
The game remained tied until the top of the ninth when the Blue Jays put runners on base by virtue of back-to-back base hits. With two outs, former Athletic Josh Donaldson stepped in and hit a double to left field that drove in two runs giving Toronto a 5-3 lead. The A's were unable to respond in the bottom of the ninth and the final score was Toronto 5 Oakland 3.
On the bump
Rich Hill showed reporters his finger and the skin that had come off that finger. It does not look like an injury that is going to heal quickly. Bob Melvin was clear in postgame press conference that Hill was not a candidate to start on Tuesday against Houston.
Andrew Triggs who was hit by a ball on his left calf has a serious contusion. Melvin said they will evaluate Triggs situation again on Monday.
Marc Rzepczynski worked 0.2 of an inning and struck out two batters. Liam Hendricks pitched 1.1 innings and walked one hitter while giving up no runs in relief.
John Axford (3-3) took the loss going 0.2 innings giving up two runs (earned) on three hits. He walked two and struck out one.
Patrick Schuster worked 0.1 inning to close out the game.
Happ worked 5.2 innings giving up 3 runs (all earned) on five hits for Toronto. He struck out five and walked one. Happ did not figure in on the decision.
Jason Grilli (3-1) was credited with the win. Grilli worked 1.0 inning giving up no runs and no hits in his time on the mound.
The save went to Roberto Osuna. It is his 19th save of the season.
In the batter's box
Marcus Semien went 1-for-4 with a run scored, a home run and a RBI. He now has 20 home runs and 48 RBI both of which are career highs.
Danny Valencia had a 2-for-4 day that included scoring a run. Valencia is now hitting .307 in the 56 games since he came off the disabled list May 6th. There have to be some contending teams that want his bat in their lineup and are willing to part with prospects to get it.
Jed Lowrie went 2-for-4 on Sunday. Lowrie is 6-for-16 (.375) in his four starts as the leadoff batter this season.
Yonder Alonso came into the game as a pinch hitter in the sixth inning and went 1-for-2 hitting a double that was good for two RBI.
Josh Donaldson has reached base safely in 22 straight games and is hitting .388 over that period. He went 2-for-5 on Sunday.
Russell Martin went 2-for-3 on Sunday and scored a run. He is hitting .324 over the last 10 games.
Edwin Encarnacion had a 1-for-4 day but is .394 over his last 20 games.
The Athletics were involved in a minor transaction on Sunday as they acquired left-handed pitcher Ross Detwiler from the Cleveland Indians for cash considerations. Detwiler was pitching for Triple-A Columbus and will be assigned to Triple-A Nashville for the A's. He will not be on the 40-man roster.
This move was made to shore up the pitching staff in Nashville which has seen so many changes as pitchers have been promoted to Oakland and others have been designated for assignment.
Toronto first baseman Justin Smoak signed a two-year contract extension worth $8.25 million on Saturday. The contract includes an option year that would pay Smoak $6 million if exercised.
"We love Toronto, me and my family, and we wanted to stay here as long as we can," Smoak said. "So we just wanted to get something done."
Smoak is currently a role player for the Blue Jays. His signing is seen as protection at first base in case free agent Edwin Encarnacion signs elsewhere.
Three-game series in Oakland with Houston:
Mon – RHP Kendall Graveman (5-6,4.37) vs. RHP Mike Fiers (6-3,4.35) 7:05 PM
Tue – To be announced vs. LHP Dallas Keuchel (6-9,4.90) 7:05 PM
Wed – RHP Daniel Mengden (1-4,5.54) vs. RHP Doug Fister (9-6,3.64) 12:35 PM
Toronto heads to Phoenix for two games with the Diamondbacks
Categories MLB, Oakland Athletics•Tags Andrew Triggs, Bob Melvin, JA Happ, John Axford, Josh Donaldson, marcus semien, Oakland Athletics, Rich Hill, Russell Martin, Sean Manaea, Toronto Blue Jays, Troy Tulowitzki
A's minor league spotlight: Franklin Barreto
The Oakland Athletics will be looking for prospects just like the one who is in out minor league spotlight this week as they move veteran players to playoff contenders between now and August 1st. Infielder Franklin Barreto is ranked the number one prospect in the A's minor league system and he was acquired from the Toronto Blue Jays as a part of the Josh Donaldson trade that also brought Kendall Graveman to the Athletics.
Barreto was originally signed by Toronto for $1.45 million in 2012. Barreto began to catch everyone's attention in 2014 when he led the Northwest League in multiple categories. He had a .311 batting average and .384 on base percentage. Barreto was seen as a major piece of the Donaldson trade.
After joining the A's organization, Barreto was assigned to Advanced Class-A Stockton in the California league. He immediately found success at the plate hitting .302 with an OBP of .333. Barreto had 13 home runs and 22 doubles in 90 games, but his season was cut short when he suffered a wrist contusion in late July that put him on the disabled list for the rest of the year.
The scouts rank Barreto as an above average hitter with average power but some see him with more than average power. He is rated as a average runner. Barreto is said to have an outstanding arm but is considered to be a below average fielder.
Barreto is currently assigned to Double-A Midland of the Texas League. He has appeared in 87 games and currently has a .258 batting average with a .321 on base percentage and a .387 slugging percentage. Barreto has 17 doubles, two triples, seven home runs and 32 RBI. He 22-for-32 in the stolen base department. Based on his current hitting statistics, Barreto will probably be looking at spending at least the first half of the 2017 season back Midland.
Barreto has also struggled defensively. His original position was shortstop but there was a problem with to many errors being committed. At Midland this season, they have used Barreto at second base and at shortstop. He has committed three errors in 28 games at second and 14 errors in 56 games at short. With shortstop Marcus Semien in the majors and Triple-A All-Star shortstop Chad Pinder at Nashville, Barreto's future may be at second base or at a corner spot in the outfield.
Barreto was selected to the Texas League South Division All-Star Team. He played second base and hit a double in the game that the South Division won 8-3.
Categories MLB, Oakland Athletics•Tags Chad Pinder, Franklin Barreto, Josh Donaldson, Kendall Graveman, marcus semien, Midland Rockhounds, Oakland Athletics, Texas League
A's vs the Toronto Blue Jays preview
Published on July 14, 2016 July 14, 2016 by rxsluggerLeave a comment
Toronto Blue Jays' Troy Tulowitzki slides safely into home plate to score against San Francisco Giants catcher Buster Posey during the ninth inning of a baseball game Tuesday, May 10, 2016, in San Francisco. (AP Photo/Eric Risberg)
OAKLAND–The second half of the 2016 baseball season resumes Friday night at the Oakland Coliseum. The Toronto Blue Jays, currently residing in a second place tie in the AL East with the Boston Red Sox, are just two games behind the Baltimore Orioles. The Jays have been surging as they have won eighteen of the last twenty-five and are 51-40 overall. The Jays have a strong offense, starting rotation and bullpen. Josh Donaldson, the reigning MVP, and former Oakland Athletic is having another strong year and could repeat as MVP. Donaldson is hitting .304 and has 23 homers and 64 RBIs. Donaldson, facing the A's in Oakland, is five-for thirteen with a home run, two doubles, and five RBI. Many fans still rue the day that Oakland traded Donaldson to Toronto and view that move as one of the factors that have taken the A's down to lower depths of the AL West. Michael Saunders, an All-Star this year, is having a career year for Toronto. Edwin Encarnacion leads the AL with eighty RBIs and has twenty-three dingers to his credit. Catcher Russell Martin started slowly but has been performing better lately. Other key offensive threats are shortstop Troy Tulowitzki and center fielder Kevin Pillar. Right fielder Joey Bautista will not play this weekend as he is on the DL with a turf toe. As you can see, the Blue Jays are loaded, and the A's pitchers will have to be sharp to contain the Toronto Offense.
The Blue Jays' starters are Marcus Strom, Aaron Sanchez, R.A.Dickey, and J.A. Happ Stroman (7-4, 4.89 ERA) will pitch Friday night for Toronto. Sanchez (9-1 2.97 ERA) is pitching well and made the AL All-Star squad this year. Happ is 12-3. Jesse Chavez, another former Athletic, Drew Storen, Jason Grilli Brett Cecil and Roberto Osuna headline the bullpen. Osuna has eighteen saves in twenty chances so far this year.
The A's will send Daniel Mengden to the hill Friday night. Mengden is 1-4 with an ERA of 4.54. Mengden has pitched well enough to have a better record, but the A's offense has not given him enough run support. Hopefully, that will change Friday night. The A's, since May 1st, are 25-39 and are 37-51 overall. There is a lot of speculation regarding players that might be traded before the July 31st deadline. Contending teams are looking at Rich Hill and Sonny Gray as well as Josh Reddick, Danny Valencia, and Stephen Vogt. The A's are not going anywhere this year. The front office will be making decisions soon about the future of these players. What do the A's have to do to become contenders? Do they trade away their assets for prospects? How many times will the A's rebuild the team? The phone lines are ringing in the A's offices now. Hopefully, the trades the A's make will get them back on the road to respectability.
Categories MLB, Oakland Athletics•Tags Josh Donaldson, Toronto Blue Jays
A's Bassitt runs into red-hot Josh Donaldson with predictable results
Published on April 23, 2016 April 24, 2016 by moepeaLeave a comment
Chris Bassitt wasn't himself on Saturday, and it was apparent from the start.
Absent the normal velocity on his fastball, and struggling with location, Bassitt needed more than 30 pitches to finish the first inning. By the end of the second inning, and after Josh Donaldson's majestic drive landed behind the center field wall, Bassitt was effectively done, trailing 5-1 in a game the A's would go on to lose to the Blue Jays, 9-3.
"It's a starter's job to make them feel uncomfortable, and that was the very last thing I was doing," Bassitt said.
The loss ended what the team hopes is a defining run, a six-game win streak, and a seven-game road winning streak that made the A's the last big-league club to lose away from home in 2016. With the rest of the AL West experiencing early-season struggles, Oakland was able to maintain its perch atop the division—tied with Texas with a 10-8 record.
Bassitt had pitched effectively in each of his three previous April starts, but after the game he complained of arm fatigue. His fastball, normally 95-96mph, topped out at 94mph on Saturday, and that along with his body language and his poor track record in the first inning, had the Toronto lineup salivating.
The first two Blue Jays reached, but Bassitt had a chance to put the dangerous Jose Bautista away after starting him 0-2. But the right hander missed with his next three pitches, the last of which ended up at the backstop for a wild pitch, allowing the two baserunners to advance. When Bautista then grounded out, it was an RBI sacrifice tying the game 1-1, instead of an inning-changing double play.
Three batters later, the A's fell behind when third baseman Chris Coghlan couldn't cleanly field Russell Martin's grounder, allowing Josh Donaldson to score. Curiously, the official scorer ruled Martin's grounder an infield hit, but in the real world, it was an instance of the Oakland defense letting its pitcher down at a critical juncture.
In the second, Bassitt again let the first two hitters reach. Then on a 2-0 pitch to the reigning AL MVP, the ball grabbed too much the strike zone and Donaldson, true to form, sent it soaring. After hitting a career-best 84 extra-base hits in 2015, the former Athletic is at again this season, with 13 extra-base hits and a major-league best seven homers already.
Toronto snapped a three-game losing streak, and did what they could to change the tenor of the conversation away from the 80-game suspension for PED use handed down to their first baseman, Chris Colabello. Justin Smoak, an experienced veteran replaced Colabello, but the Blue Jays murderer's row of Donaldson, Bautista, Edwin Encarnacion and Troy Tulowitzki remains intact.
Tulowitzki missed Friday's game against the A's, but returned in force with a pair of solo shots, the first of which came off Bassitt in the fifth.
Mark Canha got the A's off to a fast start with a home run in the first. And Coco Crisp and Josh Phegley came up with timely, two-out RBI singles later in the game. But the A's lineup was largely ineffective, drawing just one walk, and grounding into three double plays.
J.A. Happ pitched seven innings and picked up the win. The veteran was plenty familiar to the A's, but they couldn't damage him, outside of Canha's blast. Happ's doing something right; he placed himself on a very short list of Toronto starters to begin a season with four consecutive quality starts in the last 20 years.
The A's turn to Eric Surkamp in Sunday's series finale. Surkamp will be opposed by Drew Hutchinson, who was recalled from the minors for the assignment, a move, according to manager John Gibbons, made to give his entire rotation an extra day of rest.
Categories Oakland Athletics•Tags A's, Josh Donaldson
A's Don't "Look Like Idiots", Wait Out Walk-off Win
Published on July 23, 2015 by Matthew HarringtonLeave a comment
By Matthew T.F. Harrington
OAKLAND, Calif. – The Oakland Athletics hosted their 16th annual Root Beer Float day Wednesday night at the O.Co Coliseum, treating fans to a sweet treat before the game before Ike Davis served des the dessert during the game. After raising $34,709 for the Juvenile Diabetes Relief Fund, the A's topped Felix Doubront and the Toronto Blue Jays 4-3 on a pinch-hit single.
Josh Phegley, Stephen Vogt and Jake Smolinski all knocked in runs as well, and starter Sonny Gray pitched seven innings of two-run ball to help Oakland (44-52) pass the Seattle Mariners to move a half-game out of the American League West cellar. The Blue Jays (48-48) fall back to .500 after winning the first game of the series.
The walk-off came in bizarre fashion in the bottom of the 10th, with the A's not sure if they in fact were winners. Davis bounced a chopper that Jose Reyes dove for before tossing to first, allowing another late inning sub Josh Reddick to score on what first base umpire Marvin Hudson ruled a base hit in a bang-bang play.
"I didn't think he was going to catch it," said Davis. "As soon as I hit it I thought 'that's going to be a hit'. He made a good play and it was really close."
Davis came off the bench to pinch hit against deposed Jays closer Roberto Osuna (1-4, 2.28 ERA) and quickly fell behind 0-2. He managed to fight off a fastball, trickling it to the opposite field for the hit.
"Ike was coming in cold," said A's manager Bob Melvin. "That's a tough assignment. After the first couple pitches he was behind. He fouled some back, wasn't trying to do too much. He wanted to put it in play on the other side of the diamond."
"He blew it by me twice," said Davis. "I knew I had to shorten up. I tried to hit the ball hard the first two times."
It wasn't without drama though. Amidst a brief A's celebration, Toronto manager John Gibbons asked for, and was granted, a replay review. The A's players gathered on the mound, awaiting their fate.
"It's a tough position to be in," said Reddick. "If they turn it over, we're going to look like idiots."
After a 2 minutes and 45 seconds of review, home plate ump Hunter Wendelstedt confirmed that the call on the field would stand, with there being inconclusive evidence to overturn the call.
"They stayed with what they were told to do," said Melvin on the ruling. "If there's no definitive proof to overturn, you stay with it. It was nerve-wracking waiting on the verdict, but we'll take it."
"It felt like the longest replay of the year," noted Reddick.
The A's very briefly celebrated before racing into the dugout.
"We had a lot of fun out there planning our exit," said Davis on the pre-concocted curtain call.
The game could have gone entirely the other way though. With Oakland leading 3-2, Tyler Clippard took over in the ninth inning looking for save number 18. He opened the inning issuing a free pass to Danny Valencia then coughing up a double to Devon Travis. Jose Reyes walked to load the bases with former A's slugger Josh Donaldson up to the dish.
Clippard managed to down Donaldson on strikes, but brought around the tying run after walking Jose Bautista. He managed to coax an Edwin Encarnacion strikeout and Dionner Navarro fly out to escape the jam tied. Fernando Rodriguez (1-1, 3.21) then pitched a scoreless tenth to pick up the win.
"That's tough," said Melvin on Clippard's outing. "Now you're in a no-win situation. All you can do is keep it tied. You have the middle of their order up, some tough customers to deal with."
"To get back into the dugout a tie game allowed us to win that game later," added Melvin.
For the second night in a row Josh Donaldson managed to sour his warm homecoming by driving in a run, plating the first run of the game on a single up the middle in the top of the third inning. He'd endear himself to A's fans again an inning later, throwing a tricky grounder in the dirt to give Smolinski a two-base error. Smolinski moved over to third base on a Ben Zobrist single, then came around to score on Phegley's liner up the middle, knotting the game 1-1.
With starter Sonny Gray not featuring his sharpest stuff the A's offense supported its ace, tacking on a pair of runs in the fifth. Billy Burns reached on a single, then swiped second before being knocked in on Stephen Vogt's base hit. Melvin wasn't able to see the singling, getting ejected after arguing a strike call on a botched pitchout during Burns' steal.
"There was a bit of a miscommunication," said Melvin on the situation. "I was asking if it was a pitchout. I think (homeplate umpire Wendelstedt) thought I was continuing to argue."
Zobrist would also single, forcing Doubront to issue the intentional walk to Billy Butler to create a force out. Smolinski hit a deep fly to center field, but center fielder Kevin Pillar managed to pull in the ball. Vogt scampered home to convert the sacrifice. Brett Lawrie appeared to crack the game open with a scorching liner up the middle, but second baseman Devon Travis was perfectly positioned to field the hot shot.
Gray gave the fans a scare in the sixth, taking an Edwin Encarnacion liner up the middle off his back foot. After a brief visit from the trainer and a smile from Gray, the ace continued on no worse for wear.
"I knew he broke his bat, I just didn't know how fast it was coming," said Gray. "I knew it hit me pretty solid."
"I was telling Vogt and Phegley I was fine," said Gray on why he was smiling during the trainer's visit. "They told me to tell the dugout that, but the trainer was already out there."
The A's would need both runs after Danny Valencia opened the 7th inning with a first-pitch homer to straight-away center field. Gray would finish out the inning, sandwiching a Donaldson walk between a pair of outs. He'd depart the game after finishing the inning, having struck out three while walking two and allowing 9 hits for two earned runs but wound up with a no-decision.
"They really made him work for a while," said Melvin. "He was throwing some good pitches and they weren't trying to do too much with them. They were hitting the ball the other way, fouling some pitches off."
"There are outings like that where you really have to work hard on it," stated Melvin. "He ends up leaving with the lead. I thought he pitched really well."
Edward Mujica relieved Gray in the 8th, opening the inning with a leadoff single to Encarnacion. Mujica would erase the baserunner, fielding a grounder from Chris Colabello to start the 1-4-3 double play. He would cough up a two-out single to Russell Martin, then hand second base to pinch runner Ezequiel Carrera on a wild pitch before mowing down Pillar on a ground out to shortstop Marcus Semien.
Doubront would have been the hardluck loser. The southpaw went just 4 2/3 innings, allowing 7 hits and two earned runs to go with the unearned marker.
Donaldson and the Jays wrap up their first visit to the Coliseum this season with a matinee game Wednesday. Scott Kazmir takes the mound in what may be one of his last starts in the green and gold with the trade deadline approaching. He'll be opposed by youngster Drew Hutchinson.
Categories Oakland Athletics•Tags A's, Athletics, Bob Melvin, Josh Donaldson, Josh Reddick, Oakland A's, sonny gray
On Eve of His Return to Oakland, Revisiting the Josh Donaldson Trade
When Toronto Blue Jays third baseman Josh Donaldson steps into the O.Co Coliseum batter's box for the first time as a visiting player against Kendall Graveman Tuesday night, it will be a moment months in the making.
The earth has long since stopped shaking since a ground shattering trade that saw A's general manager sned the Oakland A's most feared slugger in exchange for Graveman, starting third baseman Brett Lawrie and prospects Sean Nolin and Franklin Barreto in the offseason. That doesn't mean the wound won't still be fresh for A's fans.
Donaldson has put up similar stats North of Border to the ones he produced for four seasons in Oakland, which is to say he's been MVP-caliber for the Jays. Donaldson is fresh off his second-straight All-Star game appearance, hitting second for the American League in its 6-3 victory over the Senior Circuit Squad in Cincinnati.
The 29-year old is hitting .288 for the season after 92 games, is one shy of the AL lead in runs batted in with 62 and sits five homers back of Mike Trout's 27 for the league lead in long balls. Not bad for a player making only $4.5 million dollars.
On its exterior, the trade looks like a clear win for the Jays, who added a power bat to line-up already loaded with thumpers like Jose Bautista, Edwin Encarnacion and Russell Martin. But the return for Donaldson hasn't exactly been failing the A's.
If Cy Young Awards were handed out in Spring Training, Graveman would have been a candidate. The 24-year-old righty owned the desert competition, going 3-1 with a miniscule 0.36 earned run over 25 1/3 innings. If they handed out the awards in April, he'd probably have been last on the list. Graveman compiled an 8.27 ERA, walking 9 while striking out only 7 over 16 1/3 innings. It was clear that Graveman wasn't ready for the major leagues just yet, so a return to Triple A Nashville was in the cards for the young hurler.
Perhaps not. Graveman returned to the parent club in late May, and has been lights out ever since. In ten starts, he's gone at least 5 2/3 innings every time. He's allowed only 16 runs in his second tour of duty, and had managed to shrink his ERA to 3.16 prior to his last outing where he was touched up for 4 runs. He's ERA since returning is sub-3.00. More importantly, he's only walked 18 while punching out 44 batters.
While Brett Lawrie, the other main piece of the trade, hasn't produced like Donaldson did, no one has asked him to. Lawrie, a former first round pick (16th overall in 2008), hasn't lived up to the hype that followed him before he even played a professional game, but he hasn't been a slouch either.
The Langley, British Columbia native is on track for career-highs in most offensive categories including homers (current 8, high 12), RBI (37, high 48) and most importantly for the oft-injured Canadian, games played (88, high 125). While he won't match his rookie season batting average of .293 over 43 games in 2011, he's on pace to best his full-season high of .273. The right-handed batter enters play Tuesday with a .280 mark. While he hasn't been outstanding, he's been better than expected.
Factor in Barreto, named to the MLB.com weekly all-prospect team, and Nolin still being at least a season away and the A's could wind up being big winners in this trade. They may not feel like it now, but a rotation with Nolin and Graveman at the head and Barreto and Lawrie on the left side of the infield winning an AL West title, and possibly even the pennant, may be on the horizon soon. But first comes Tuesday night, a chance for the A's to top the Jays and win a little victory.
Categories Oakland Athletics•Tags A's, Josh Donaldson, Oakland, Oakland A's
Rangers Deny A's Celebration, Make Game 162 A Must-Win
Published on September 27, 2014 by Matthew HarringtonLeave a comment
The celebration of clinching a playoff spot will have to wait another day for the Oakland Athletics following a 5-4 loss to the Texas Rangers at Globe Life Park. The defeat, mixed with a walk-off Seattle Mariners win later in the evening, means the A's (87-74) will now need to win or have the Mariners lose in the season finale Sunday to clinch a spot in the one-game Wild Card playoff and a date with the runner-up of the American League Central. The Detroit Tigers and Kansas City Royals already clinched a playoff berths while boasting identical records, but must use the final day of the regular season to decide who will win the AL Central and who will host the Wild Card game Tuesday.
Oakland starter Jeff Samardzija (7-13, 2.99 ERA) suffered the loss after allowing five runs over seven innings despite striking out nine Rangers. The A's Josh Donaldson hit his 29th home run of the season, while Jake Smolinski and Robinson Chirinos went deep for last-place Texas (67-94). Spencer Patton (1-0, 0.96) picked up his first career win, while Neftali Feliz nailed down his 13th save of the season at home.
Donaldson, whose status was in doubt after aggravating a knee injury Friday night, opened the game with a solo shot off Rangers starter spot starter Scott Baker in the first inning, but Texas struck back with run scoring singles by Rougned Odor and Adrian Beltre in the bottom half of the frame for a 2-1 lead for their surprise starter.
Smolinski took Samardzija deep in the fourth for a 3-1 edge, but Oakland pulled within one after Nate Freiman's double play off reliever Alex Claudio scored Josh Reddick.
Chirinos extended the lead in the seventh inning after his two-run homer off Samardzija. The A's then came back in the next half inning with a pair of RBI singles by Reddick and Jed Lowrie off Roman Mendez. On Reddick's single, Jonny Gomes managed to just beat out the tag on a play at the plate. Rangers interim manager Tim Bogar challenged the play, but the call of safe originally made on the field was upheld.
The Rangers are expected to send Saturday's planned starter, Ace Derek Holland, to the mound Sunday looking to take the A's postseason fate out of their own hands. The left-hander missed his regularly scheduled start after migraines derailed his ability to make the start. Manager Bob Melvin will tab the A's Opening Day starter Sonny Gray with game 162 duties.
Categories Oakland Athletics•Tags A's, Jed Lowrie, Jeff Samardzija, Josh, Josh Donaldson, Josh Reddick, Oakland
Super Sam's Triple Seals The Deal, Oakland Defeats Anaheim 5-3
Published on August 22, 2014 August 22, 2014 by kahlilnajar7Leave a comment
OAKLAND, CA – AUGUST 22: Sam Fuld #23 of the Oakland Athletics is congratulated by teammates after he scored against the Los Angeles Angels of Anaheim in the bottom of the six inning at O.co Coliseum on August 22, 2014 in Oakland, California. (Photo by Thearon W. Henderson/Getty Images)
by Kahlil Najar
OAKLAND – Sam Fuld hit a deep line shot to right center field in the bottom of the sixth that hit the wall that scored Alberto Callaspo from first to give the A's their first lead of the game and proved to be the game winning run of the night. Fuld went 1 for 4 on the night with one RBI and one run and Alberto Callaspo went 2 for 4 with a run and of his own. Coco Crisp hit his second lead off homer of the year to contribute to the A's scoring who are now 4-0 against the Angels at home this year.
On the offense coming through, especially Coco Crisp, head coach Bob Mevin said, "They hit a home run. Then Coco answers. That was big. That was huge. That was like alright we're fine. You can't put too much pressure on him but when we play our best he's playing well."
The bottom of the A's batting order had 6 hits and three runs tonight.
"That's what we need. We need to have a deep line up sometimes and that really is the strength of our line up and why offensively we've got the numbers we put up this year," beamed Melvin.
Sonny Gray also had a gem of a game tonight. Gray (13-7) went 8 and 1/3 innings and gave up six hits, including a pair of homers but only allowed those two solo shots. Gray also struck out five and was backed up by some great defense by Josh Donaldson who started a nice double play in the top of the sixth. Gray is now 9-1 against all teams in the AL West.
"Mixing in all three of his pitches. Fastball had good life, curve ball backdoor to lefties, away from righties, enough change ups to keep you off balance. It was pretty impressive," said Melvin on Gray.
Gray started off shaky in the first when after getting the Angels lead off batter to ground out, he threw an 81 mph curve ball that Mike Trout got a hold of and went over the left center field wall for his eighth home run of the year and give the Angels a 1-0 lead. Coco Crisp wasted no time to respond as he hit his 15th career lead off home run to the exact same spot and tied the game up at one a piece.
After the Trout home run, Gray was able to put out the next nine batters until Josh Hamilton ripped a curve ball into the right field stands to give the Angels the lead again 2-1.
The A's tied it up in the bottom of the fifth when after a Crisp double and a Gentry walk, Josh Donaldson smacked a line drive to Angels pitcher Santiago who was able to get a hand on it and deflected the ball into the second baseman's glove to get Gentry out at second but on a throwing error by shortstop Erick Aybar, Donaldson was able to advance to second and Crisp was able to cross the plate.
In the sixth, Sam Fuld came up and smacked his third triple of the year into right center to score Callaspo and give the A's a 3-2 lead. Andy Parrino then followed with a sac fly to bring in Fuld and make it a 4-2 Oakland lead.
The A's received an insurance run in the eighth when Stephen Vogt hit his ninth homer of the year to make it a 5-2 game. The Angels tried to make it interesting in the ninth as they put up a run against Sean Doolittle and got the bases loaded but he settled down and got Chris Ianetta to strike out and end the game 5-3.
Tomorrow the Angels send up their ace C.J. Wilson (10-8, 4.59) against the A's ace Jon Lester (13-8, 2.58). Game time 6:05 pm.
Categories Oakland Athletics•Tags Josh Donaldson, Los Angeles A, Oakland A's, sonny gray


text:
Lend Your Talent
0 items | €0,00
Enrolment for the academic year 2020/21 – Pre-school education and 1st year of basic education
Information May 19, 2020
Parents and guardians are advised that the normal enrollment period for basic education, for the academic year 2020/21, runs from the 4th of May to the 30th of June 2020.
Children of immigrants residing in Portugal for one year to be granted birthright citizenship
Citizenship laws are going to change. Portugal will recognize the right to Portuguese nationality for children born in within national territory who are children of immigrants who have had Portuguese
General Recommendations (Coronavirus / COVID-19)
The new coronavirus, called Covid-19, was identified for the first time in December 2019, in China, in the city of Wuhan. This new agent had not been previously identified in
New reception facilities have been created and will operate during this emergency period for victims of domestic violence, with around 100 spaces. Support services continue to function. You can always
Foreign Access to the SNS
Considering the entire legal and guiding framework regarding the access of foreign citizens in Portugal to health care in the NHS, including the recent publication of Dispatch No. 3863-B /
Mental Health – SNS 24
What is the psychological counseling service over the phone? The psychological counseling service is integrated in the SNS 24 telephone line, through 808 24 24 24 and aims to support
A practical guide about the government's decision to temporarily legalise migrants and refugees during COVID-19 pandemic
Questions & answers Order No. 3863-B / 2020, of 27 March 1 – Who is the dispatch for? Foreign citizens who, at the date of the declaration of the State
The IOM Mission in Portugal provides assistance to Voluntary Return and Reintegration through the Voluntary Return and Reintegration Support Program (ARVoRe VII). The ARVoRe VII program aims to ensure that
Deconfinement Plan (COVID-19)
Information May 2, 2020
Conditions: The availability of masks and disinfectant gel on the market Regular hygienisation of spaces Reduced maximum capacity Hygiene of the hands and breathing etiquette Physical distancing (2m) The mandatory
Public Transport Update (COVID-19)
Starting from May, the validation of passes and tickets will be mandatory again for the public transports of Lisbon. The announcement was made this Sunday by the AML, through a
You can unsubscribe anytime. For more details, Please review our Privacy Policy.
R. Carvalho Araújo 66-B
info@lisbonproject.org
Copyright © Lisbon Project, 2021 Privacy Policy

redpajama_set_name: RedPajamaCommonCrawl


text:
Ghost (often stylized as GHOST) was a visual kei rock band from Japan. They started activity in 2004, and changed lineup several times.

Musical styles
Their sound is often described as melodic, but they also have elements of hard rock and gothic rock. They disbanded in 2007 after the departure of guitarist Hisui.

Biography
Ghost was formed in 2004 as a part of the boom of new visual kei bands. The original lineup consisted of vocalist Kousei, Hisui and Syo~ji on guitars and drummer Rin. In May of the same year, they were joined by Zero on bass guitar. Their first single, higyaku no shiro, was released in December.

In 2005, Ghost lost two of its members; Syo~ji and Rin. Shortly after, they were joined by Yu on drums and Yura (ex-Devil Kitty) on guitar. However, Yu quit the band in November 2005. The band continued to play with several support drummers, while releasing their first mini-album, Bi-zarre Collector. In 2005 Ghost also performed their first one-man concert, at Takadanobaba Arena.

Ghost's first full album, Tsumi to batsu Brand New Capsule XIV was released in December 2006. By then, they had recruited a new drummer, Kisara from the band Delta Ark.

In 2007, they released two new singles titled Blue Cloud and akai kumo. During their concert at Shibuya Club Quattro on August the 25th, the band announced that Hisui would be leaving Ghost. After that concert, it was decided that Ghost would disband. Their last live was held at Takadanobaba Area on December 6, 2007 and they released a compilation album titled The Best of Ghost on December 12.

Members
Kousei – vocals (2004–2007)
Yura –  guitar (2005–2007)
 – bass guitar (2004–2007)
Kisara – drums (2006–2007)

Former members
 – drums (2004–2005)
Syo~ji – guitar (2004–2005)
 – drums (2005-2005)
 – guitar (2004–2007)

Discography

Albums and EPs
 Bi-zarre Collector (December 21, 2005)
 Tsumi to batsu Brand New Capsule XIV (罪と罰 Brand New Capsule XIV, December 20, 2006)
 The Best of Ghost (December 12, 2007)

Singles
 Higyaku no shiro (被虐ノ城, December 15, 2004)
 Kousoku no kan (拘束ノ棺, May 10, 2005)
 For Dear (May 10, 2006)
 Kuchihateta kumo no sujou (朽チ果テタ蜘蛛ノ巣城, August 23, 2006)
 Dead or Dead: Silence of Species (June 27, 2007)
 Dead or Dead: Creature Eden...to Sadness (June 27, 2007)
 Akai kumo (赫い蜘蛛, August 29, 2007)
 Blue Cloud (August 29, 2007)

DVDs
 Theater of Underworld (February 21, 2007)

Others
 Confinement party (August 1, 2005)
 Yurikago wa madoromi (Short Ver.) (ゆりかごは微睡み(Short Ver.), August 3, 2006)
 Theater of Haunted Carnival Vol.3 (December 14, 2006)
 Hajimete no offshoot shuu (初めてのオフショット集, May 10, 2007)
 Oboreru sakana (溺れる魚, August 25, 2007)
 Red Thread (December 12, 2014)

References

External links
 Official website

Japanese hard rock musical groups
Visual kei musical groups
Musical groups established in 2004
Japanese gothic rock groups

redpajama_set_name: RedPajamaWikipedia


Previous bonus was $25, $5 ACTIVATION FEE IS WAIVED AS WELL.
To receive $50 bonus to Buxx Card Account, you must provide offer code 02010052. Bonus is limited to one per household. Buxx Card must be opened between 11/18/2011 and 01/01/2012. To receive the $50 bonus, you must load at least $25 to the card at opening. Please allow up to two weeks for the $50 bonus to be available on the Buxx card.
This seems to be a little different, as it appears to be one per household.


text:
Hacker News new | past | comments | ask | show | jobs | submit login
A late-night rant about OOP and parametric dispatch (avdi.org)
38 points by joeyespo on Apr 2, 2016 | hide | past | web | favorite | 32 comments
faaef on Apr 2, 2016
I don't really see a pervasive point to this rant. It is true that OOP can be reduced to message passing, and that there's a specific style of OOP a lot of people see as "OOP", but that doesn't mean that this style is "just obfuscated procedural code, or uglified functional code". That OOP can be implemented on top of functional style code, or procedural style code says nothing about it being "true OOP" or not. For example, the great Common Lisp Object System is built with functional primitives. And that makes it more elegant, not less. Building an object system on top of a functional/procedural language is syntactic sugar, and there's nothing inherently bad about it. After all we write code for people to read.
LoSboccacc on Apr 2, 2016
I'd like the code complete approach. A method has 4 channels: api, status, input, output.
Reducing how many channels interact semplify code a lot. Oop went for input, status and statu, output pairs. Functional uses input, output and api, output pairs.
Good programmers understand that and apply the one which is proper to model their problem, to reach performance/memory goals and most importantly to reduce te cognitive load of large codebases.
mcphage on Apr 2, 2016
This seems weird to post here. It's clear he's working out some ideas, but hasn't gotten them clear enough in his head to take out of context and discuss in a place like HN.
dllthomas on Apr 2, 2016
It does not seem to have been posted by the author.
javajosh on Apr 2, 2016
Consider this tree:
softly
Let's call this the coordinate-system of your API (I've extended it a little hopefully to make it clearer). It's a small coordinate-system because it doesn't take any strings, but whatever. 'loudly' only makes sense in the context of 'bark', and 'bark' only makes sense on the context of 'dog'. That list of nodes is a coordinate that identifies a unique position in the API. (Note that in this API, actually just "loudly" should be enough to call the right code, but that won't be true in general.)
To be formal you can pick out the code by saying `(do dog bark loudly)`, where `do` is a reduction that concatenates and executes the code at each node. (With a little constraining you could say `(do-special loudly)`)
OOP just calls these API coordinates by special impressive-sounding names. The top level "objects" and the second level "methods" and the third level "method arguments", and imposes all kinds of finicky constraints (some of which are even useful). Languages differ wildly with these constraints: Java doesn't let you have a unique instance method (well, not without either reflection or bytecode manipulation, anyway), but Ruby does (lovingly called "monkey-patching"). And it's quite rigid in it's current form, with a fixed noun/verb/adverb structure.
At the end of the day all that detail obscures the simple truth that your code defines a coordinate system and an invocation is a single coordinate. There's a lot more to be said about this, of course! But I hope it helps/inspires.
rdtsc on Apr 2, 2016
According to Alan Kay true OO is message based. First you'd identify what the objects are -- it seems dog and cat. Then you have a choice. Can either send them messages which look like {bark, softly}, {bark, loudly}, {run, fast}, {run, slow}. Similar for cat.
Or can think of dog having an internal state machine and can be in two states -- barking or running. When it is barking he can get two messages {softly} or {loudly}. If it is running, can get fast or slow messages. There is a way to switch from one state to another say getting a {bark} or {run}. Other messages might lead to an error/exception.
This way the first way of doing things is just sending a message which both switches state and regulates intensity of activity.
Heck pretty much a similar example is presented in Learn You Some Erlang For Great Good book in the "Rage Against the Finite State Machine":
http://learnyousomeerlang.com/finite-state-machines
(My favorite state machine is a that of a cat though in that text)
Yes indeed. But what I'm saying is that there is actually just one nameless state machine whose coordinate system is organized as a tree who's leaves represent the machine's degrees-of-freedom. It's kind of an odd thing: the leaf both partitions state, and it also co-locates the DoF for changing the state (or at least it's apparent state, if you're immutable).
Neat link, I'll have to check it out. I've not done erlang but I'm quite intrigued by gen_server in particular.
Sorry for talking about coordinate-systems: I can't help it, I have a physics degree.
sparkie on Apr 2, 2016
This is good intuition. I tend to use this kind of idea in code these days. Here's an example:
($define! tree ($branch
(dog ($branch
(bark ($branch
(loudly ($lambda () "WOOF!"))
(softly ($lambda () "woof"))))
(run ($branch
(fast ())
(slow ())))))
(cat ($branch
(meow ($lambda () "meow!"))
(purr ())
(run ())))))
($walk tree ($walk dog ($walk bark (loudly)))
=> "WOOF!"
If one attempted to just say (loudly), an error would be raised because loudly only exists in the context of bark, which only exists in the context of dog, etc. We walk through the tree to find this context, then run the function (loudly).
In the above Kernel code, the context is called an environment, and environments are first class. The evaluator takes an expression o and an environment e as arguments, and it is said that "o is evaluated in e".
The tree is basically described by construcing new environments, where for example, the symbol "dog" is bound to another environment containing the bindings "bark" and "run". I've used the word "$branch" in the example for simplicity, but this term already exists in Kernel under another name.
($define! $branch $bindings->environment)
$walk is implemented by combining the current environment with the one specified as its first operand, then the second operand is evaluated in the combined environment.
($define! $walk
($vau (env expr) dynenv
(eval expr (make-environment (eval env dynenv) dynenv))))
Programming this way can be pretty fun, as you're not restricted by some arbitrary "impressive sounding names" for accessing environments in restricted ways. You can do things the way you want, and it's fairly trivial to implement your own object systems.
I've termed it environment-oriented-programming. I basically use it as a means to implement OOP, generics, records, algebraic data types and whatnot. When combined with the use of other Kernel features like encapsulation types, it can be used to implement interesting type systems.
Cool beans, sparkie. I'm working on something involving this shape (which is like a set of related call chains). The ability to call "loudly" by itself is a convenience only, a kind of syntactic sugar. I'm sure you could easily write the function that takes this tree, the string 'loudly' and emits '($walk tree ($walk dog ($walk bark (loudly)))'. :)
There's certainly a few ways you could do that in Kernel, but I think doing this is less interesting than having to explicitly specify the environments to enter to find loudly to begin with. I see other potential problems with just specifying loudly alone which we'd look to avoid up-front, or explicitly handle as part of the tree.
So for example if the cat were to become able to meow loudly, there would no longer be just one path into loudly, but we'd have two. Typically, we'd either make loudly a generic and specify (or infer) the type were referring to, or we'd have a dynamically-dispatched loudly which looks at say, the first argument and decides which one to execute. Both the these are trivial to implement as environments. However, the more interesting gain Kernel gives is that there is no way built into the language to enumerate the bindings in an environment (a deliberate omission).
We can walk through the tree as given in this example (using car and cdr), but if there were some binding "(mouse the-mouse)" added to the tree, where the-mouse is already an environment, and not a list of instructions to build a new environment, then we cannot walk through its sub-tree, which may contain bindings such as "loudly".
We can explicitly call ($binds? the-mouse loudly) to test this, iff "the-mouse" is an environment. This works by basically attempting to retreive the binding loudly and capturing the error thrown if it doesn't exist in the binding. In practice, we'd have a more interesting type for mouse, which contains an environment, but encapsulated (via make-encapsulation-type), with only predefined ways of accessing the bindings of the environment.
With this setup, a binding in an environment behaves much like a capability. By knowing the name of a binding, you have the capability to use it. Proper use of the environment and encapsulation types gives us the flexibility to tightly constrain who can see "loudly".
>However, the more interesting gain Kernel gives is that there is no way built into the language to enumerate the bindings in an environment (a deliberate omission).
Why not throw an error, or perhaps return a curry that takes an integer picking between multiple 'loudly' options? Its true that such 'do-special' would need global read access to the entire program, which is perhaps what you want to avoid?
Global access to the entire problem is definitely what we want to avoid. Encapsulation is a useful tool for maintaning invariants, controlling access to data and so forth. We don't want to give it up, and we may not even be able to give it up to begin with.
One way to consider an environment is that it may be a physical machine with a set of bindings, variables and processes on it, where some of the bindings point to other environments - ie, other machines.
Then if you're a user of the tree, and you want to invoke loudly, there exists at least one other machine, dog, between yourself and bark. You obviously don't know what is on the bark machine because the dog mediates your access to it. You don't really have any access to it other than by sending a message to dog which asks it to send a message to bark.
So the number of "loudly" options in such a network (ie, the internet) is potentially unbounded. The dog machine might know, by virtue of asking the machines it is directly connected to, whether the binding loudly exists, and it can chose to expose either the binding, or another message named loudly which discriminates between multiple loudly options if the other machines connected to it (aka, dynamic dispatch).
In the example above, replace "$branch" with "$spawn" and "$walk" with "$send", and you effectively have the actor model, which is more like the OOP imagined by Kay and others. The fun part here would be to implement $spawn and $send though.
Ah, you inspire the thought that we don't necessarily know what the valid inputs are to a distributed program! But realize that this problem will bite you even higher up the food chain (so to speak) because what if there is more than one dog node? What does your program do in that case?
An environment can only bind a symbol to one expression, so the symbol "dog" in the tree environment is bound to an opaque reference to an environment (or machine), containing the dog's bindings. There can be many of these machines containing dog's bindings, but if you were to bind them all to dog, you would only have access to the most recently bound one, since binding a name in an environment overwrites any existing binding with a new one.
The solution is therefore, that we must either use bindings such as "dog1", "dog2" and whatnot, or we have a binding "dogs" which binds a list of environment objects, which we can index to refer to a specific dog. Actually, "dogs" could itself just be an environment which binds specific dog's names, like spike to their respective environments
($define! dogs ($bindings->environment (spike ($spawn ...)) (charlie ($spawn ...))))
This might be less useful than a list though as there's no way to map over the dogs in an environment.
catnaroek on Apr 2, 2016
The author has no idea what "parametric polymorphism" means. It's not "dispatching on all the arguments to a function".
acjohnson55 on Apr 2, 2016
What was so urgent about getting out this half-baked thought out that the dude couldn't have waited to write something coherent?
If all you're doing is calling methods on objects with no supertypes or private members, then yeah, you could accomplish the same thing by convention. But once you start layering on more functionality in your object system, the number of way you code encode this functionality starts to explode. Everybody ends up doing things their own way, and there's no consistency or compatibility. Sound familiar? It should because it's C.
VeejayRampay on Apr 2, 2016
Sincere question for you: Why does it bother you so much that someone wrote something about something on the web (as hinted by your opening sentence)? Why should we care that the thought is half-baked? Does it rob you of precious space on the internets?
Sometimes, we just want to use the medium to share thoughts with people, there's no cause to be annoyed or even condescending like that, it makes for a horrible atmosphere where no one will want to engage in public discourse.
Fair point. Maybe I was too harsh. I do believe that people should be able to work out their ideas publicly. And perhaps it's not the author's fault that it ended up on HN.
But the again, if you visit the blog now, the piece reads:
> Update: this post was the product of an exhausted mind, and as such it misused terms, wasn't well backed-up, and was generally incoherent. I'm withdrawing it until such time as I can articulate these ideas a little more competently.
I look forward to the outcome of this.
And I agree with that. Avdi can be a great layman-oriented writer, he has a knack for vulgarizing the cryptic, that article was not an example of that. It was rushed, obviously. My point was about something else though, which we seem to agree on.
From Alan Kay's quote:
OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things.
What is really described here is a dynamicly typed, actor-based language. I can see a bit of truth in Joe Armstrong's joke that Erlang is the original and true OO language.
white-flame on Apr 2, 2016
In a purely linguistic sense, the phrase "Object Oriented" does have some affinity to single dispatch, because the dispatch is oriented around a single special Object.
"Message Oriented" flows well into multiple dispatch, as the entire message can be taken into account for determining the final method combination.
This of course is related back to the notion of a language focusing on the nouns (Objects), or verbs (Methods, Messages): http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom...
> "Message Oriented" flows well into multiple dispatch, as the entire message can be taken into account for determining the final method combination.
I'm not sure about this. The metaphor is that you send a message to a specific recipient, and the recipient figures out, independently, how to behave in response to that message. So it still seems like single dispatch to me.
In Lisp/CLOS-style multiple dispatch, the method you call is not associated with any particular object. It's simply a dispatcher, and the objects are the parameters/message contents.
So you don't send a message to a recipient object, but dispatch it using a toplevel method name. I know that's a deviation from Kay's descriptions, but it meshes well with the examples of multiple dispatch that I've seen.
Conceptually, "dispatch" can be understood as finding the recipient, not an after-receipt task.
Yes, I know how CLOS works. It's certainly a powerful approach, but it doesn't strike me as terribly... umm... object-oriented.
(0) In CLOS, as you say, methods are requests to the global environment to find the right behavior to perform on a list of arguments. In an object-oriented system, each object has its own behavior, and the rest of the program (that is, the environment) has no business knowing how it internally works.
(1) In CLOS, anyone can tamper with any object's slots, and this isn't even discouraged. In an object-oriented system, the internal representation of an object can't be directly manipulated from the rest of the program. The behavior of an object is defined entirely in terms of how it responds to messages.
That being said, you can do object-oriented programming with CLOS. It's just not the only, or even the main style that it supports.
For more information, see: http://wcook.blogspot.com/2012/07/proposal-for-simplified-mo...
> In an object-oriented system, each object has its own behavior, and the rest of the program (that is, the environment) has no business knowing how it internally works.
I would say that describes Erlang-style message passing, or maybe JavaScript-style prototype OO. But in most "common OO" languages, I would say it's more correct that each class has its own behavior, not object. Of course, the hidden state of an object can parameterize the class's behavior.
But still, there are many behaviors which differ based on the type or identity of their arguments, but aren't well suited to be encapsulated into said objects as they're equal peer parameters to the message, hence CLOS etc.
dale-cooper on Apr 2, 2016
I find clojure's multimethods (http://clojure.org/reference/multimethods) really awesome in the context of dispatching.
foota on Apr 2, 2016
Maybe we need some sort of hn robots.txt file to stop things from getting posted before someone's ready for them to be :)
spriggan3 on Apr 2, 2016
Or an HTTP code. WIP : 218
mwpmaybe on Apr 10, 2016
X-Hacker-News-Please-Stop
3pt14159 on Apr 2, 2016
The issue to me is one of name spacing. Where is the XML#to_s defined? Certainly not in one very large to_s function that takes in large swaths of various types. Of course it should be namespaced around XML, the only issue is whether it's module based or object based.
I think object based is better. Why? Because I can take the object and introspect the methods. Any number of functions can take in an XML object, but there are very few methods that the XML object needs to have. In my repl if I do:
my_xml.methods - Object.new.methods
I get a list of what I'm expected to do with this object. If I do something along the lines of:
functions.collect { |f| f.first_argument_can_be? XML }
Then I'm pulling in not just the normal functions, but also anything that consumes _any_ instance of the XML instance, including domain specific ones.
Now, you could argue that all method-like functions should be namespaced to their own module, but now humans have to be trusted to not define these functions outside of that module and they have to be trusted to not define anything else in the module. For what purpose?
true_religion on Apr 2, 2016
Elixir is a functional language, and has the option of modules and protocols so you can define XML#to_string in two ways.
Either as a protocol so you could do to_string(this_xml)
Or as a function within the module so you could do XML.to_string(this_xml)
If you use the module function defintion you can import it into your scope via import XML
then you can write to_string(this_xml) as if it were a protocol.
Retra on Apr 2, 2016
It's not a binary choice. You could easily have everything be module namespaced and then then allow module functions to be selectively promoted to method invocation. But really, that's no different from requiring all functions to be methods and then selectively 'demoting' some to be static or class functions instead.
Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact


Jug-in-box makes it easy for consumers to handle 3 lbs of cooking oil.
For consumers who like to deep-fry their bird on Thanksgiving, LoCo Cookers has introduced a new product to use with its turkey fryers: LoCo Peanut Oil Blend. The food packaging—which uses a jug-in-box packaging design—is sturdy enough to support three gallons of oil and provides easy handling.
Two parallel, oblong die-cuts on top of the box provide a handle for the package. A round die-cut window, also on the box's top panel, gives consumers access to the screw cap on the inner jug.
For those who prefer to remove the primary container from the box, the high-density polyethylene jug, produced by CKS Packaging, features a flat, molded handle.
Peachtree Packaging & Display produces the corrugated boxes for LoCo's oil package using a Göpfert five-color flexo press and die-cutter, which prints and die-cuts in a single pass. The corrugated is flexographically printed in four colors, after which a water-based aqueous coating is applied.
Ad agency Scales designed the package's graphics, which are color matched to graphics on LoCo's turkey-fryer packaging; Peachtree Packaging & Display designed the box's dielines.
LoCo Peanut Oil Blend is sold only through Lowe's. "The Peanut Oil Blend box is positioned right next to the Turkey Fryer Kit, Turkey Frying Pots and accessories, for customer convenience," Sumrall says.
LoCo's oil packaging design matches its turkey-fryer packaging, which appears at the beginning of this video, and shows the fryer's unboxing and set up.
Peanut Oil BLEND, not Peanut Oil as per your headline. And, I cannot find the ratio of oils anywhere.


This in-depth study of the hydrological risks to hydropower dams on the Zambezi River gives an early warning about what Southern Africa could be facing as it contemplates plans for more large hydropower dams in a time of climate change.
Currently, 13,000 megawatts of new large-dam hydro is proposed for the Zambezi and its tributaries. The report finds that existing and proposed hydropower dams are not being properly evaluated for the risks from natural hydrological variability (which is extremely high in the Zambezi), much less the risks posed by climate change.
Overall, Africa's fourth-largest river will experience worse droughts and more extreme floods. Dams being proposed and built now will be negatively affected, yet energy planning in the basin is not taking serious steps to address these huge hydrological uncertainties. The result could be dams that are uneconomic, disruptive to the energy sector, and possibly even dangerous.
The Zambezi basin exhibits the worst potential effects of climate change among 11 major sub-Saharan African river basins, and will experience the most substantial reduction in rainfall and runoff, according to the International Panel on Climate Change.
The basin is likely to experience significant warming and higher evaporation rates in the next century. Because large reservoirs evaporate more water than natural rivers, big dams could worsen local water deficits and increase the risk of shortfalls in power generation.
The designs for two of the bigger dam projects proposed for the Zambezi – Batoka Gorge and Mphanda Nkuwa dams – are based on historical hydrological records and have not been evaluated for the risks associated with reduced flows and more extreme flood and drought cycles. Under future climate scenarios, these dams are unlikely to deliver expected services over their lifetimes.
More frequent extreme floods threaten the stability and safe operation of large dams. If dams are "under-designed" for larger floods, the result could be serious safety risks to millions of people living in the basin.
The Zambezi's large dams have profoundly altered the hydrological conditions most important for maintaining downstream livelihoods and biodiversity. The ecological goods and services provided by the Zambezi, which are key to enabling societies to adapt to climate change, are under grave threat. These services are not being properly valued in planning for large dams in the basin.
The report recommends a series of steps to address the coming storm of hydrological changes, including changes to how dams are planned and operated.


..(Left) Upstream part of Taguibo River just before Bobon Creek. (Right) BCWD personnel measure on April 29, 2015 the water yield of the Taguibo River using a stream flow meter just downstream of Bobon Creek and within the project site of the Butuan Bulk Wa..
Forecast from the Philippine Atmospheric Geophysical and Astronomical Services Administration (PAGASA) showed that the Philippines is currently experiencing the effects of a weak El Niño. PAGASA released El Niño Advisory No. 2 last April 7, 2015 stating that the weak El Niño will likely continue until mid-2015 with the chances of strengthening toward the end of the year.
On April 29, 2015, the water yield of the Taguibo River was measured using a stream flow meter. It was measured just downstream of Bobon Creek and within the project site of the Butuan Bulk Water Supply Project. The amount of water flowing through the Taguibo River measures an average of 2,100 cubic meter an hour which is about 175% of BCWD's requirement of 1,200 cubic meters.
Despite the 75% excess of water source against the requirement, the extraction rate could not reach the 1,200 cubic meters per hour requirement due to lower river depth. The average total production extracted from the Taguibo River is only 704 cubic meters per hour which is about only 59% of the requirement of BCWD with only a maximum production recorded of 886 cubic meters per hour and lowest production of 472 cubic meters per hour on that date.
If the weak El Niño will extend until the end of this year, then there is a high possibility that the water yield of Taguibo River will continue to lower down until such time that it will be lower than the 59% of the required 1,200 cubic meters per hour.
As part of the Butuan City Water District's (BCWD) commitment in providing quality service to its concessionaires, the BCWD has been doubling its efforts in monitoring its water sources and preparing for any possible effects that may impede in the operation of the BCWD.
BCWD relies mostly in the Taguibo River as the major source of its water supply. As such, BCWD is now preparing for any possible effect of the weak El Niño in its water supply. Among the preparations include (1) the implementation of street-by-street leak detection and repair program, (2) campaign to report any illegal water connection, (3) conditioning of the five pumping stations which are the back-up sources of BCWD, (4) guarantee that the six reservoirs are sufficiently re-charged, (5) operation of the booster pump at Km.6 Libertad to cater to high elevated areas such as Bancasi, Pinamanculan and Dumalagan, and (6) worst case scenario is the implementation of distribution management through valving and tanker rationing.
Several activities are also in line to be able to inform the public on the possible effect of El Niño to the water supply of Butuan City Water District. BCWD is urging its concessionaires to conserve water. According to a study by the Philippine Institute for Development Studies (PIDS) entitled "Determination of Basic Household Requirements," an average Filipino family uses six liters per capita per day for drinking and 12 liters for cooking and the kitchen. Majority of the water use in every Filipino household is for personal hygiene which is at 68 liters per capita per day and 74 liters for sanitation services. The basic household activities which consume the bulk of the water use of a Filipino family can be lessened through water conservation. BCWD compels its concessionaires to reduce, reuse and recycle. This will greatly help minimize the average water consumption of every concessionaire.
BCWD is reminding its concessionaires that the office is only responsible for maintaining the water line from the mainline to their water meter, the concessionaires are responsible for the repairs to any part of the water system from the meter toward their homes. If they find leaks in the mainline of BCWD, they are urged to report it immediately to the office of BCWD. And if there are leaks in their homes, they need to have it repaired.
For more water conservation tips to mitigate the effect of El Nino, concessionaires can visit BCWD website Homepage – www.bcwd.gov.ph. They can also get water conservation tips leaflet at the BCWD Collection Lobby.


I pretty much have to credit almost all this work to my cooking genius friend Jimmy because my parents had decided four days prior that I would be making Thanksgiving dinner. This, of course, gave me no time to prepare since I had work the whole week but luckily a message on Facebook to Jimmy provided me with all the information I needed. Though it's after Thanksgiving and practically useless to post this up for you now, I figured it'd be a good reference for the future or any turkey dinners you want to make. Thanks to Duc for providing all the pictures and being my sous chef!
1 package salt pork (in strips), 6 oz.
Hopefully you have defrosted your turkey. If not, you're going to need to. Come back to this recipe after that's done. Clean out the cavity of your turkey. You can put gloves on if you'd like but you don't have to for this next step. Loosen the skin of the turkey by starting at the tapered end of the breast and ripping the connective tissue between the skin and the flesh. It may seem awkward because you'll be sticking your hands all up under the skin but trust me, you'll want to do this.
Mince about one third of your fresh herbs and 4 cloves of the garlic. Mix these into your butter by hand until it is evenly combined. Then rub this butter mixture all over the turkey's flesh underneath the skin. You'll probably also want to massage your turkey to make sure the butter is well spread.
People sometimes like to make stuffing to put inside the turkey but there are also many horror stories about doing so because of bacteria or how much longer it takes for the turkey to cook. To avoid doing so but to still give the turkey a great taste, you can fill the cavity with halved lemons, the remaining whole garlic cloves, and one half of the remaining herbs (1/3rd of the original amount). Wash your salt pork.
Pre-heat your oven to 325°F. Fill the tray of a roasting pan with two cups of water and add the remaining herbs. Mix the baking powder and salt in a dish, and then use that mixture all over the skin of your turkey. This will give it a nice brown when roasting. Next, use cotton twine to tie the turkey's legs together. You don't have to do a full truss here. Place the turkey breast down onto the roasting pan rack and arrange the wings underneath the breast. Lay your washed salt pork along the back of the turkey so that its fat/juices can keep your turkey moist; no basting necessary! Stick the pan in the oven.
You're going to need a meat thermometer. For a turkey of such size, it will take you about 3.5 hours of cook time (if you need a timetable, check out http://allrecipes.com/howto/turkey-cooking-time-guide/). When the breast is at 130°F, remove the salt pork and flip the turkey over. Change the oven temperature to 425°F. You should have about 45 minutes left on the clock now. The final temperature at which the breast should be is between 160°F-165°F and the legs/thighs should be 170°F-175°F.
One of the important things to do when roasting a turkey is not to serve right away when you take it out of the oven! When the ideal temperatures have been reached on your turkey, take it out of the oven and let it sit for about 20-30 minutes before serving. Don't worry - it'll still be hot. You just want to let the juices of the turkey be spread throughout all the meat. Enjoy!


text:
package org.lwjgl.util.generator;

/**
 *
 * This class generates the functions in the native source files.
 *
 * @author elias_naur <elias_naur@users.sourceforge.net>
 * @version $Revision$
 * $Id$
 */

import org.lwjgl.PointerBuffer;

import com.sun.mirror.apt.*;
import com.sun.mirror.declaration.*;
import com.sun.mirror.type.*;

import java.io.*;
import java.util.*;
import java.nio.*;

public class NativeMethodStubsGenerator {
	private static final String BUFFER_ADDRESS_POSTFIX = "_address";
	public static final String BUFFER_POSITION_POSTFIX = "_position";
	private static final String STRING_LIST_NAME = "_str";
	private static final String POINTER_LIST_NAME = "_ptr";

	public static void generateNativeMethodStubs(AnnotationProcessorEnvironment env, TypeMap type_map, PrintWriter writer, InterfaceDeclaration d, boolean generate_error_checks, boolean context_specific) {
		for (MethodDeclaration method : d.getMethods()) {
			Alternate alt_annotation = method.getAnnotation(Alternate.class);
			if ( (alt_annotation != null && (!alt_annotation.nativeAlt() || alt_annotation.skipNative())) || method.getAnnotation(Reuse.class) != null )
				continue;
			generateMethodStub(env, type_map, writer, Utils.getQualifiedClassName(d), method, Mode.NORMAL, generate_error_checks, context_specific);
			if (Utils.hasMethodBufferObjectParameter(method))
				generateMethodStub(env, type_map, writer, Utils.getQualifiedClassName(d), method, Mode.BUFFEROBJECT, generate_error_checks, context_specific);
		}
	}

	private static void generateParameters(PrintWriter writer, Collection<ParameterDeclaration> params, Mode mode) {
		for (ParameterDeclaration param : params) {
			if ( param.getAnnotation(Result.class) != null || (param.getAnnotation(Helper.class) != null && !param.getAnnotation(Helper.class).passToNative()) )
				continue;
			final Constant constant_annotation = param.getAnnotation(Constant.class);
			if ( constant_annotation == null || !constant_annotation.isNative() )
				generateParameter(writer, param, mode);
		}
	}

	private static void generateParameter(PrintWriter writer, ParameterDeclaration param, Mode mode) {
		writer.print(", ");
		if (mode == Mode.BUFFEROBJECT && param.getAnnotation(BufferObject.class) != null) {
			writer.print("jlong " + param.getSimpleName() + Utils.BUFFER_OBJECT_PARAMETER_POSTFIX);
		} else if ( param.getAnnotation(PointerWrapper.class) != null ) {
			writer.print("jlong " + param.getSimpleName());
		} else {
			JNITypeTranslator translator = new JNITypeTranslator();
			param.getType().accept(translator);
			writer.print(translator.getSignature() + " " + param.getSimpleName());
		}
	}

	private static void generateMethodStub(AnnotationProcessorEnvironment env, TypeMap type_map, PrintWriter writer, String interface_name, MethodDeclaration method, Mode mode, boolean generate_error_checks, boolean context_specific) {
		if ( !context_specific && method.getAnnotation(Alternate.class) == null )
			writer.print("static ");
		else
			writer.print("JNIEXPORT ");

		final TypeMirror result_type = Utils.getMethodReturnType(method);
		final CachedResult cached_result_annotation = method.getAnnotation(CachedResult.class);
		final AutoSize auto_size_annotation = method.getAnnotation(AutoSize.class);

		if ( method.getAnnotation(PointerWrapper.class) != null ) {
			writer.print("jlong");
		} else {
			JNITypeTranslator translator = new JNITypeTranslator();
			result_type.accept(translator);
			writer.print(translator.getReturnSignature());
		}
		writer.print(" JNICALL ");

		writer.print(Utils.getQualifiedNativeMethodName(interface_name, method, generate_error_checks, context_specific));
		if (mode == Mode.BUFFEROBJECT)
			writer.print(Utils.BUFFER_OBJECT_METHOD_POSTFIX);
		writer.print("(JNIEnv *env, jclass clazz");
		generateParameters(writer, method.getParameters(), mode);
		if (Utils.getNIOBufferType(result_type) != null) {
			if ( (cached_result_annotation == null || !cached_result_annotation.isRange()) && (auto_size_annotation == null || !auto_size_annotation.isNative()) )
				writer.print(", jlong " + Utils.RESULT_SIZE_NAME);
			if (cached_result_annotation != null)
				writer.print(", jobject " + Utils.CACHED_BUFFER_NAME);
		}
		if (context_specific) {
			writer.print(", jlong " + Utils.FUNCTION_POINTER_VAR_NAME);
		}
		writer.println(") {");

		generateBufferParameterAddresses(type_map, writer, method, mode);
		Alternate alt_annotation = method.getAnnotation(Alternate.class);
		if (context_specific) {
			String typedef_name = Utils.getTypedefName(method);
			writer.print("\t" + typedef_name + " " + (alt_annotation == null ? method.getSimpleName() : alt_annotation.value()));
			writer.print(" = (" + typedef_name + ")((intptr_t)");
			writer.println(Utils.FUNCTION_POINTER_VAR_NAME + ");");
		}

		final Code code_annotation = method.getAnnotation(Code.class);

		final boolean hasResult = !result_type.equals(env.getTypeUtils().getVoidType());
		final boolean resultPreDeclare = hasResult && (hasPointerArrayInits(method.getParameters()) || (code_annotation != null && (code_annotation.nativeAfterVars().length() > 0 || code_annotation.nativeBeforeCall().length() > 0)));
		if ( resultPreDeclare )
			printResultParam(type_map, writer, method, result_type, true);

		if ( code_annotation != null && code_annotation.nativeAfterVars().length() > 0 )
			writer.println(code_annotation.nativeAfterVars());

		generatePointerArrayInits(type_map, writer, method.getParameters());

		if ( code_annotation != null && code_annotation.nativeBeforeCall().length() > 0 )
			writer.println(code_annotation.nativeBeforeCall());

		writer.print("\t");
		if ( resultPreDeclare )
			writer.print(Utils.RESULT_VAR_NAME + " = ");
		else if ( hasResult )
			printResultParam(type_map, writer, method, result_type, false);
		writer.print((alt_annotation == null ? method.getSimpleName() : alt_annotation.value()) + "(");
		generateCallParameters(writer, type_map, method.getParameters());
		writer.print(")");
		writer.println(";");

		if ( code_annotation != null && code_annotation.nativeAfterCall().length() > 0 )
			writer.println(code_annotation.nativeAfterCall());

		generateStringDeallocations(writer, method.getParameters());
		if (!result_type.equals(env.getTypeUtils().getVoidType())) {
			writer.print("\treturn ");
			Class java_result_type = Utils.getJavaType(result_type);
			if (Buffer.class.isAssignableFrom(java_result_type)) {
				if (cached_result_annotation != null)
					writer.print("safeNewBufferCached(env, ");
				else
					writer.print("safeNewBuffer(env, ");
			} else if (String.class.equals(java_result_type)) {
				writer.print("NewStringNativeUnsigned(env, ");
			} else if ( method.getAnnotation(PointerWrapper.class) != null ) {
				writer.print("(intptr_t)");
			}
			writer.print(Utils.RESULT_VAR_NAME);
			if (Buffer.class.isAssignableFrom(java_result_type)) {
				final String size_parameter_name;
				if ( auto_size_annotation != null && (auto_size_annotation.isNative() || (cached_result_annotation != null && cached_result_annotation.isRange())) )
					size_parameter_name = auto_size_annotation.value();
				else
					size_parameter_name = Utils.RESULT_SIZE_NAME;

				writer.print(", ");
				Utils.printExtraCallArguments(writer, method, size_parameter_name);
			}
			if (Buffer.class.isAssignableFrom(java_result_type) ||
				String.class.equals(java_result_type))
				writer.print(")");
			writer.println(";");
		}
		writer.println("}");
		writer.println();
	}

	private static void printResultParam(final TypeMap type_map, final PrintWriter writer, final MethodDeclaration method, final TypeMirror result_type, final boolean preDeclare) {
		final ParameterDeclaration result_param = Utils.getResultParameter(method);
		final Declaration return_declaration = result_param == null ? method : result_param;
		final NativeTypeTranslator result_translator = new NativeTypeTranslator(type_map, return_declaration);
		result_type.accept(result_translator);
		if ( preDeclare )
			writer.print("\t");
		writer.print(result_translator.getSignature() + " " + Utils.RESULT_VAR_NAME);
		if ( preDeclare)
			writer.println(";");
		else
			writer.print(result_param == null ? " = " : ";\n\t");
	}

	private static void generateCallParameters(PrintWriter writer, TypeMap type_map, Collection<ParameterDeclaration> params) {
		if (params.size() > 0) {
			boolean first = true;
			for ( ParameterDeclaration param : params ) {
				if ( param.getAnnotation(Helper.class) != null )
					continue;

				if ( first )
					first = false;
				else
					writer.print(", ");

				generateCallParameter(writer, type_map, param);
			}
		}
	}

	private static void generateCallParameter(PrintWriter writer, TypeMap type_map, ParameterDeclaration param) {
		if ( param.getAnnotation(Helper.class) != null )
			return;

		final Constant constant_annotation = param.getAnnotation(Constant.class);
		if ( constant_annotation != null && constant_annotation.isNative() ) {
			writer.print(constant_annotation.value());
			return;
		}

		boolean is_indirect = param.getAnnotation(Indirect.class) != null;
		if (is_indirect || param.getAnnotation(PointerArray.class) != null) {
			writer.print("(");
			final NativeTypeTranslator translator = new NativeTypeTranslator(type_map, param);
			param.getType().accept(translator);
			writer.print(translator.getSignature());
			writer.print("*)");
		}
		if ( param.getAnnotation(PointerWrapper.class) != null )
			writer.print("(" + param.getAnnotation(PointerWrapper.class).value() + ")(intptr_t)");
		if (param.getAnnotation(Result.class) != null || is_indirect)
			writer.print("&");

		if ( param.getAnnotation(Result.class) != null ) {
			writer.print(Utils.RESULT_VAR_NAME);
		} else {
			writer.print(param.getSimpleName());
			if ( param.getAnnotation(PointerArray.class) != null )
				writer.print(getPointerArrayName(Utils.getJavaType(param.getType())));
			else if ( Utils.isAddressableType(param.getType()) )
				writer.print(BUFFER_ADDRESS_POSTFIX);
		}
	}

	private static void generateStringDeallocations(PrintWriter writer, Collection<ParameterDeclaration> params) {
		for (ParameterDeclaration param : params) {
			final Class java_type = Utils.getJavaType(param.getType());
			if ( java_type.equals(String.class) && param.getAnnotation(Result.class) == null )
				writer.println("\tfree(" + param.getSimpleName() + BUFFER_ADDRESS_POSTFIX + ");");
			else if (param.getAnnotation(PointerArray.class) != null ) // Free the string array mem
				writer.println("\tfree(" + param.getSimpleName() + getPointerArrayName(java_type) + ");");
		}
	}

	private static void generateBufferParameterAddresses(TypeMap type_map, PrintWriter writer, MethodDeclaration method, Mode mode) {
		strLoopDeclared = false;
		ptrLoopDeclared = false;
		for ( ParameterDeclaration param : method.getParameters() ) {
			final Constant constant_annotation = param.getAnnotation(Constant.class);
			if ( param.getAnnotation(Result.class) == null && (constant_annotation == null || !constant_annotation.isNative()) && Utils.isAddressableType(param.getType()))
				generateBufferParameterAddress(type_map, writer, method,  param, mode);
		}
	}

	private static boolean strLoopDeclared;
	private static boolean ptrLoopDeclared;

	private static void generateBufferParameterAddress(TypeMap type_map, PrintWriter writer, MethodDeclaration method, ParameterDeclaration param, Mode mode) {
		final Check check_annotation = param.getAnnotation(Check.class);
		final PointerArray array_annotation = param.getAnnotation(PointerArray.class);
		final Class java_type = Utils.getJavaType(param.getType());

		final NativeTypeTranslator translator = new NativeTypeTranslator(type_map, param);
		param.getType().accept(translator);
		final String native_type = translator.getSignature();

		if ( !java_type.isArray() || CharSequence.class.isAssignableFrom(java_type.getComponentType()) ) {
			writer.print("\t" + native_type + param.getSimpleName());
			writer.print(BUFFER_ADDRESS_POSTFIX + " = (");
			writer.print(native_type);
			writer.print(")(intptr_t)");

			if (mode == Mode.BUFFEROBJECT && param.getAnnotation(BufferObject.class) != null) {
				writer.print("offsetToPointer(" + param.getSimpleName() + Utils.BUFFER_OBJECT_PARAMETER_POSTFIX + ")");
			} else {
				if (Buffer.class.isAssignableFrom(java_type) || java_type.equals(CharSequence.class) || java_type.equals(CharSequence[].class) || PointerBuffer.class.isAssignableFrom(java_type) ) {
					writer.print(param.getSimpleName());
				} else if (java_type.equals(String.class)) {
					writer.print("GetStringNativeChars(env, " + param.getSimpleName() + ")");
				} else if ( array_annotation == null )
					throw new RuntimeException("Illegal type " + java_type);
			}
			writer.println(";");
		}

		if ( array_annotation != null ) {
			final String n = getPointerArrayName(java_type);
			final String arrayType;
			if ( POINTER_LIST_NAME.equals(n) ) {
				if ( n.equals(param.getSimpleName()) )
					throw new RuntimeException("The name '" + n + "' is not valid for object array arguments annotated with PointerArray");

				arrayType = translator.getSignature(true) + (org.lwjgl.PointerWrapper.class.isAssignableFrom(java_type.getComponentType()) ? " " : "");

				// Declare loop counters and allocate object array
				if ( !ptrLoopDeclared ) {
					writer.println("\tint " + n + "_i;");
					writer.println("\tjobject " + n + "_object;");
					ptrLoopDeclared = true;
				}
			} else {
				if ( n.equals(param.getSimpleName()) )
					throw new RuntimeException("The name '" + n + "' is not valid for arguments annotated with PointerArray");

				arrayType = translator.getSignature(true);

				// Declare loop counters and allocate string array
				if ( !strLoopDeclared ) {
					writer.println("\tint " + n + "_i;");
					writer.println("\t" + arrayType + n + "_address;");
					strLoopDeclared = true;
				}
			}

			writer.print("\t" + arrayType + "*" + param.getSimpleName() + n + " = ");
			if ( check_annotation != null && check_annotation.canBeNull() )
				writer.print(array_annotation.value() + " == 0 ? NULL : ");
			writer.println("(" + arrayType + "*) malloc(" + array_annotation.value() + " * sizeof(" + arrayType + "));");
		}
	}

	private static String getPointerArrayName(final Class java_type) {
		final Class<?> component_type = java_type.getComponentType();
		if ( component_type != null && (Buffer.class.isAssignableFrom(component_type) || org.lwjgl.PointerWrapper.class.isAssignableFrom(component_type)) )
			return POINTER_LIST_NAME;
		else
			return STRING_LIST_NAME;
	}

	private static boolean hasPointerArrayInits(Collection<ParameterDeclaration> params) {
		for ( ParameterDeclaration param : params ) {
			PointerArray pointerArray_annotation = param.getAnnotation(PointerArray.class);
			if ( pointerArray_annotation != null )
				return true;
		}
		return false;
	}

	private static void generatePointerArrayInits(TypeMap type_map, PrintWriter writer, Collection<ParameterDeclaration> params) {
		for ( ParameterDeclaration param : params ) {
			PointerArray pointerArray_annotation = param.getAnnotation(PointerArray.class);
			if ( pointerArray_annotation != null ) {
				final Class java_type = Utils.getJavaType(param.getType());
				final Class<?> component_type = java_type.isArray() ? java_type.getComponentType() : null;
				final NativeTypeTranslator translator = new NativeTypeTranslator(type_map, param);
				param.getType().accept(translator);

				final String n = getPointerArrayName(java_type);
				if ( POINTER_LIST_NAME.equals(n) ) {
					// Init vars
					writer.println("\t" + n + "_i = 0;");
					// Fill pointer array with the buffer pointers
					writer.println("\twhile ( " + n + "_i < " + pointerArray_annotation.value() + " ) {");
					if ( component_type.isAssignableFrom(Buffer.class) )
						writer.println("\t\t" + n + "_object = (*env)->GetObjectArrayElement(env, " + param.getSimpleName() + ", " + n + "_i);");
					else
						writer.println("\t\t" + n + "_object = (*env)->GetObjectArrayElement(env, " + param.getSimpleName() + ", " + n + "_i);");
					writer.println("\t\t" + param.getSimpleName() + n + "[" + n + "_i++] = (" + translator.getSignature(true) + ")(intptr_t)getPointerWrapperAddress(env, " + n + "_object);");
					writer.println("\t}");
				} else {
					final String lengths = pointerArray_annotation.lengths();

					// Init vars
					writer.println("\t" + n + "_i = 0;");
					writer.println("\t" + n + "_address = (" + translator.getSignature(true) + ")" + param.getSimpleName() + BUFFER_ADDRESS_POSTFIX + ";");
					// Fill string array with the string pointers
					writer.println("\twhile ( " + n + "_i < " + pointerArray_annotation.value() + " ) {");
					if ( lengths.length() == 0 ) {
						writer.println("\t\t" + param.getSimpleName() + n + "[" + n + "_i++] = " + n + "_address;");
						writer.println("\t\t" + n + "_address += strlen(" + n + "_address) + 1;");
					} else {
						writer.println("\t\t" + param.getSimpleName() + n + "[" + n + "_i] = " + n + "_address;");
						writer.println("\t\t" + n + "_address += " + lengths + BUFFER_ADDRESS_POSTFIX + "[" + n + "_i++];");
					}
					writer.println("\t}");
				}
			}
		}
	}

}

redpajama_set_name: RedPajamaGithub