text:
You can sense the urgency in this, the penultimate episode of Veep. Oddly enough, not in moving the plot forward, as "Oslo" takes an unexpected detour across the Atlantic and away from the Democratic primaries in order to award Selina a Nobel peace price (or something in its vicinity), but rather in terms of the topics and ripped-from-the-headlines current events it wants to tackle before wrapping up the series in next week's finale.
And the results were oddly prescient for a show that wrapped filming months ago, as the episode manages to poke fun at both the Julian Assange saga by temporarily making Selina a fugitive from Interpol and an alleged war criminal, hunkered down in an Embassy under less than ideal conditions with the threat of imprisonment looming outside, as well the rise in measles outbreaks linked to the anti-vaxxer movement, and in this case, specifically to Jonah Ryan, who spreads Chicken Pox in the pattern of a dick all across the eastern seaboard as well as to his father, who winds up dead by his own hand. Both of these stories have recently popped up in the news, making the fact that the show was able to sneak these references into their penultimate episode (not to mention make them feel important and not just throwaway gags they were just checking off a list) all the more impressive.
Almost as impressive is the continued cavalcade of guest stars in this final season. After seeing the likes of Rhea Seehorn and Andy Daly join the cast in pitch-perfect roles, "Oslo" saw guest spots from Thomas Lennon as a CBS executive (in a subplot, by the way, which included a hilarious transition for Mike into network TV anchor as he continues to fumble his way up the ladder) and Michael McKean, who falls into that Peter MacNicol bracket of amazing veteran actors who instantly fit into the show and make you wonder why they weren't around any sooner. McKean plays Governor Valentine of Iowa, introduced in a scene where he knocks Dan and Richard down a peg for their meteoric political rise, and pretty much written off in the next when he contracts the shingles after his visit with the Chicken Pox-infected Ryans, forcing him to resign and making Richard the governor and a superdelegate who will likely have to decide next week who becomes his party's nominee for president (or, as I predicted last week, somehow stumbles into the presidency himself and saves America).
I don't know if any of this week's developments will factor in to next week's finale, as Selina takes a step forward and two steps back, like she always does, and Jonah continues his fall into further depravity, as he always does, but it's a marvel to watch a show ostensibly still in its prime go out on its own terms, still firing on all cylinders. The proof is in the pudding, as you'll see below with all the great lines from "Oslo!"
Selina: "I want tosound like Bono trying to impress his own reflection in the mirror."
Minna/Selina: "So my last three lovers are complaining that my dirty talk is both incessant and soporific." "Maybe you should let them choke you." "You think they would rather choke me than listen to me talk?" "I can only speak for myself."
Keith/Selina: "[The drone strike] was classified until somebody on your staff clicked on Asian girls bound and gagged." "Oh Ben… Or Kent… Or Leon… Or Marjorie.."
Amy: "Your anti-vaccination message is bringing together an unheard mix of Orthodox Jews, uneducated fringe conspiracists and kamboucha-douching private school moms."
Gary: "The menu has been an atrocity. The guests are vegan and the president won't eat anything without a face."
Minna: "I thought you were talking about your daughters wedding to your homosexual doppelganger?"
Selina: "As the former President of the United States, truth and justice can gargle my balls."
Dan/Richard: "Last night I tried to find one non-chain restaurant to eat at and Yelp basically told me to go Fudrucker myself." "Sounds like a settings issue."
Governor Valentine (Michael McKean) to Dan: "Save it, Manhattan date rape mystery."
Ben/Selina: "I could be dead by the time you get out of here." "No offense Ben, but that could be like tonight." "God willing."
Selina/Minna: "Minna, you don't go to prison for not being the head of the IMF." "Just the prison of unmet potential." "Go sit in the corner, Minna!"
Amy/Jonah: "Didn't you have chicken pox as a child? Or were you too busy bedwetting and cutting fuckholes in watermelons?" "That only works with fleshy melons."
Jonah: "I hate you so much I could walk into a supermarket and shoot everybody."
Minna/Gary: "Selina, if you go to prison you will not have your Gary to clean up after you." "No, I'll be there."
Kent: "For polling purposes you're practically a generic white male."
Selina: "I feel like the grim reaper just dropped his scythe and started eating me out."
Valentine: "Jonah Ryan has as much chance at becoming president as a stack of retarded raccoons in a trench coat, but if anyone is crawling out of our cesspool of a state to become his Ag. Sec it's going to be this pigfucker."
Selina and the Georgian Dictator: "Chivalry is not dead." "No, her name was Svetlana and she's definitely dead."
Selina: "Call Leon tell him to get his dick out of whatever homeless woman froze in front of the hotel."
Beth: "Jonah and I don't want any more kids until I can get my cake pop business off the ground. And we can do genetic testing to make sure they're not born dead."
Richard/Jonah: "Make sure his nose is wet." "What?" No, that's for dogs."
Jeff: "I can't believe you gave him chicken pox, I always had you pegged as an AIDS guy."
Kent/Selina: "Peggy Noonan has a column about Babar and American exceptionalism." "Oh but she's a dumb cunt."
George Prax	TV Reviews, Veep	Leave a comment May 6, 2019 May 6, 2019 4 Minutes
It's hard to believe that after tonight's "Super Tuesday", there are only two episodes ever left of Veep. Not only because I really can't imagine a world without a show as hilarious, witty, poignant and take-no-prisoners as it is, but also because, well, it doesn't feel as if much as happened this season. It's mostly been business as usual for the show and its vast array of incompetent bureaucrat characters and other than some maneuvering and position it doesn't seem like the season has really accomplished that much, despite the fact that something like a year has probably passed between the season premiere, where Selina Meyer announces her campaign, and this episode, as Super Tuesdays usually happen early in the spring.
I don't know if that's necessarily a criticism as I like spending time with these characters and I don't think it's ever been the case that I haven't laughed hysterically at a given episode of the show, but it's just remarkable to fathom. In a way, though, the slow-turning wheels of the American political system is kind of this show's motto.
What's more, I actually feel like I finally got a glimpse of what this show's endgame might be like, and funny enough that glimpse came in the episode's C-story. Richard Splett started the season working for both the Ryan and Meyer campaigns, left both to randomly become mayor of some hick town in Iowa, and ended this episode as the Lieutenant governor of the state after accidentally outing a bunch of corruption. I can totally see a world where Richard somehow winds up becoming president by accident. He's secretly the smartest character on this show, he's genuine and earnest, which is what people say they want out of a presidential candidate, and with Dan at his side it feels like almost the perfect compromise for a show where the thesis statement has always been about how terrible everyone in politics truly is.
And after all, making Selina president seems too obvious and too good a fate for that character, and even this show can't be so cynical as to make Jonah fucking Ryan president In fact the show seems to be setting both of them up for big falls, as Selina's arc in this episode went from trying to hide her ex-husband's embezzlement to trying to ignore the that she accidentally had the Chinese kill Andrew. And as for Jonah, well, they keep digging and ever-deepening hole of depravity for him, as it's revealed that Beth is actually his half-sister and not just his stepsister, not to mention pregnant with their inbred child.
Veep is cynical and unrelenting, but it would be a hell of a twist for it to end in a semi-positive place with someone like Richard Splett as the new president. But with only two episodes left I'm sure we're in for plenty of surprises.
Brutal Takedown of the Week: Last week, I dedicated the brutal takedown of the week to what might be the final Jeff Kane appearance as Peter MacNicol returned to deliver some doozies. I'd be remiss if I didn't offer the same reverence this week to Dan Bakkendahl's Roger Furlong, arguably an even better ringer for Veep than MacNicol has been. Furlong already made a brief appearance earlier in the season, but it's in this episode he gets to shine, delivering no fewer than four great lines as well as setting up his trusty sad sack aide Will (Nelson Franklin) for a vicarious fifth (not to mention how both he and Amy slam Jonah by referring to him as "Congressman Slender Man"):
Furlong: "Holy shit, Bruckheimer, when you get an abortion you're supposed to leave the mangled fetus at the clinic, not staple it to the skeleton of a gay condor and run it for president."
Furlong to Beth: "What Saudi prince's rape dongeon did you finger-trolley your way out of?"
Furlong: "Chances are you'll still get assassinated but the killer – may god guide his hand – will just have to work a little harder."
Furlong: "Have a good weepy slide down the shower wall this evening."
Will/Furlong: "Well I was hoping to finish my passion project." "Which is?" "Rerouting my urethra to the back of my balls so that I have to sit to pee like a real girl."
Selina wants to leak some of her death threats, like "someone should put a bullet in your shriveled old face." "No, just make up some death threats that are nice."
Marjorie/Selina/Gary: "This is the face of clinical depression." "With the hair of a mental patient." "My kingdom for her beret."
Selina: "Well this has been a dry fuck on a sandy beach."
Selina: "First of all call, it the Washington post like a non-asshole. And I don't know anything about foreign interference. And stop staring at my like I'm some sort of teenage runaway that you just strangled."
Selina: "Just give [the faith money] to one of those gay-converting Baptist colleges to fund a statue of a gold-plated Jesus fucking a triceratops."
Jonah/Beth: "I told Beth that we would go to Arkansas so she could give me a handjob in a hot spring." "It's my birthday."
Beth/Jonah: "I didn't get Clay vaccinated because it causes autism. And now he just has a little bit of autism." "When I was a kid they said best case scenario was I had autism and fucking look at me now."
Selina: "What are they giving away free Tommy Bahama dick cozy's?
Ben: "Me so complicit me go jail long time."
Gary/Selina: "I have your estrogen patch." "You wear it. Maybe you'll grow some hair on your vagina."
Doctor/Dan: "You brought a woman into my clinic to have her pregnancy terminated." "Could you be a little more specific?" "I'm actually worried she might have a thyroid issue because of her eyes." "Oh! Amy. Reminds me I gotta Apple Pay her for her half."
Selina RE Gary: "I don't think people are gonna buy that a guy who calls vaginas crank em crank ems is gonna be able to pull off some sort of multi million dollar fraud."
Amy/Jonah/Beth: "Is that what a real orgasm feels like?" "Ugh do women have those?" "That's what I've been telling you."
Selina is to meet "the fake real woman from your speech." Kent: "Just in the nick of time, she was about to be stoned by the local child army."
Richard: "That's hilarious, a talking company. Where would the mouth even be?"
Keith: "Hey now, you're not a grilled chicken sandwich and a miller light."
Selina: "When do the new Kent's come out?"
Kent addressing Mike's young child: "Chief strategist Kent Davidson, how do you do."
George Prax	TV Reviews, Veep	2 Comments April 29, 2019 April 29, 2019 5 Minutes
We're far enough into Veep's final season that discussing how the show has chosen to tackle the trump era of politics is starting to sound like a broken record, but last night's episode, "South Carolina", deserves another look from this perspective. The episode veers violently into the kind of cynical politics that have have dominated Washington since 2016 in more ways than one, and more severely than the three previous episodes of the season. In fact, I've been struggling with the notion that a transformative trump-like figure could exist in this world. Not because I don't think that someone so self-serving could exist in the Veep universe, but rather due to the fact that just about everyone in this world is already as self-serving and narcissistic as one donald j trump, and this episode shows just how far some of those people are willing to go to get what they want.
In "South Carolina", Selina Meyer resorts to several shady-ass tactics in order to keep the momentum of her campaign moving forward. Not only does she come very close to supporting police brutality while giving a speech in a black church (something she likely only backs away from in fear of her own safety), but she publicly declares her support for Chinese expansionism in exchange for a big, murky campaign contribution (as well as meddling in the primary) from that nation. In fact, this goes so far that we even find out that Andy Daly's mild-mannered campaign manager, who has spent the better part of this season so far cheerfully accepting Selina's disdain, reveals himself to be a Chinese plant.
We accept this kind of cynicism from the Jonah side of the story, and we get it, as Jonah's campaign manages to steer even further to the right. He winds up giving a speech denouncing math because it was technically invented by Muslims, decreeing that math teachers are terrorists. The looks of horror on the faces of Bill, Teddy and Amy are priceless. Amy winds up leaning into it, as she ends the episode by transforming herself into ersatz Kellyanne Conway (and it's glorious). But that's not all, as this comes after an entire episode of Jonah trying to drop out of the campaign and exchange his endorsement for a cabinet position, a deal no one wants to take, only to find out from his rich uncles that he's not in the campaign to win it, but instead to gather enough delegates so they can influence policy at the convention and ensure that their prisons remain full of pot smokers (because who wants a private prison with just rapists and murderers?).
Somehow even that manages to stride that line of almost egregious cynicism. But it's the Selina story that really kind of hits you where it hurts. We know she'll do whatever it takes to get what she feels is coming to her, so currying the favour of a foreign government probably shouldn't come as a surprise after all the shady and probably illegal shit we've seen her do (it's even references in every episode prior to this as the show has shined a line on Andrew's embezzlements). But the way Selina juggles racial politics and foreign election meddling so easily in this episode almost pushes things to far; never mind how she winds up using Dan for sex after he gets her speech balloons just right and then fires him from the campaign.
Between Selina's despicable behaviour, Jonah diving off the deepest of ends and how seamlessly the show weaves in current events and political issues, this is an all-timer when it comes to Veep's political cynicism. As this sets up the show's final arcs, it'll be curious to see if the show is at all interested in trying to redeem any of these people, or if they're merely trying to remind us once and for all that they're all just terrible, hopeless and incorrigible.
Brutal Takedown of the Week: We can't have an episode with an appearance from Jeff Kane and not highlight Peter MacNicol's tremendous mastery of the Jonah Ryan takedown. Somehow his character – who only began to appear on the show late in its run, has managed to become one of my favourites with only a handful of appearances. Here he is eviscerating Jonah in one scene (two lines)
Shut the fuck up! When you're president! I'll jam my fist up my dickhole and pull out a forty piece danish cutlery set when you're president.
Selina Meyer is a legitimate candidate, not a human pool skimmer last used to de-spunk a Provincetown hot tub party.
Gary wants a bigger role in the campaign. Selina: "What kind of role was your mother thinking of?" "I don't know, I thought everybody kinda did the same thing."
Bill: "I'm going to go hang myself from a sturdy pipe, and I'm not even going to bother jerking off."
Selina: "You can't just replace Gary with another lesbian and think I'm not gonna notice."
Marjorie (w/ Selina) on her tea-making skills: "Thank you ma'am, I learned from an Afghani warlord." "Why don't we put him on the payroll?" "You killed him in a drone strike."
Marjorie RE Gary: "You've been taking fashion advice from a man who dresses like an overgrown ventriloquist dummy."
Kent/Selina: "My polling shows their [non-college educated whites] main wants are jobs education and an adequate safety net…" "Okay, I can speak to that." "I'm not finished ma'am. To be denied to African Americans."
Ben/Kent: "Lu sent you a message inside Mike." "A misfortune cookie."
Richard: "When my uncle stole me, I don't remember exactly where he took me but I do have this recurring dream where I almost find out."
Selina/Ben: "He just fucked me right in the ass." "Son of a bitch wouldn't endorse you." "That too!"
Dan: "You want to blow a dog whistle in a black church? That's like blowing a rape whistle while you're raping somebody."
Selina: "Honeydew? If I want to pretend to be in the CNN green room I would draw a face on Ben's ass and call it Christiane Amanpour."
Amy: "I should have aborted myself."
Jonah at the beginning of the episode: "Math is a plot invented by the Chinese to make smart Americans feel dumb."
Jonah at the end of the episode: "I just found out from my stupid stepfather-in-law that math was created by Muslims. And we teach this Islamic math to children. Math teachers are terrorists!"
Jonah: "Algebra? More like Al Jazeera"
Teddy: "I may I'm a registered sex offender but I cannot be apart of this."
Selina: "If we lose it won't be for a lack of touching people in a Denny's."
Selina/Ben: "How's the turnout." "Much like my prostate, mostly black and much larger than we'd like."
Ben/Selina: "I told you you can't trust the Chinese, I married enough of them to know that." "Isn't your wife Korean?" "Maybe. Fog of war?"
Selina/Gary: "Your name will be all over it like Jodie Foster / John Hinkley style." "Oh my god, I'm obsessed with her."
Andy Daly quoting Selina: "I believe her exact words were 'if I need another Washington douche I'd go to the M Street Right Aid."
George Prax	TV Reviews, Veep	1 Comment April 22, 2019 5 Minutes
As Veep wraps up its run at a time where our contemporary political realities have long surpassed any reasonable semblance of parody, it's become rather important that Veep at least try and commentate on all of that craziness through its biting, no-punch-pulling lens. Under Armando Iannucci (and during the transitional David Mandel years), this was a show about worthless, lackadaisical beaurocrats running out the clock on a pointless political stepping stone, either on their way to greener pastures or serving penance for past slights. But as it eventually became clear that Selina Meyer was meant for greater things, the show slowly transformed itself, all the while getting more and more ruthless and more and more cynical. Now in its final form, it's only fitting that Veep embraces the insanity of the current political landscape and translate the current popular versions of things such as white nationalism and misogyny through its own lens of commentary.
The result of that so far this season has mostly bore fruit through the Jonah storyline, as Timothy Simons has long proven to be this show's ultimate punching bag. Jonah Ryan is stupid, rude, bigoted, ignorant and incompetent, which makes him the perfect poster boy for both this show and its translation of the political landscape, leading to some excellent humour over the course of the last three episodes. But in a surprise twist, by the end of this week's episode, it's Selina embracing, at least in part, that mantra, as she breaks down in a debate fumble of her own making and turns it into a resurgent moment as she tells an African-American candidate who can't stop using her identity as a crutch to "man up," as she did all the years she had to quietly endure misogyny in order to reach her current status. The people (which, on Veep, share social status with the likes of Jonah Ryan) eat it up and she winds up winning the debate and sinking her political opponents, after the floundering she had to endure over the course of the first two episodes.
It's an interesting stance for this show to take, tacitly admitting that these steps back are tried and true political maneuvers. Selina is and always has been selfish, her entire existence hinging on the idea that she's paid her dues and waited her turn to be president, that she's earned and deserves a run as president. But she's also always been a bleeding-heart progressive, so for her to quote-unquote turn to the dark side and so easily get a win is as biting a stance for this show to take as anything else it's ever done. It's early in the season, and "Pledge" is an admittedly transitional episode that aimed to get Selina from points A and B to C, but I wonder if this is something the show might stick to en route to whatever endgame they have in mind.
But even as a transitional episode, this was as hilarious as the show has been this year, with plenty of material for Selina (I loved her funeral blackball list and kind of wished they mined it for a few more jokes), a great Jonah subplot with a lot of visual humour (including several unfortunate press pics of him at the fair, him eating two different-sized corndogs, and debating a wizard), Richard succeeding a dog as the mayor of an Iowan town, and the perfect setup for next week as the episode ends with Amy getting a call from Teddy asking her to become Jonah's campaign manager, a job she enthusiastically (and presumably ironically) accepts, likely in order to fuck with Jonah.
And speaking of Amy, she had what's likely to stand as the most brutal piece of dialog of the season, so without further adieu, let's get to this week's best lines from "Pledge"!
Brutal Takedown of the week: Listen, I have shit to do, I can't copy down every single line of dialog from this show. But I couldn't help but do it for this epic takedown from Amy, trying to enter an abortion clinic in Iowa facing down a bunch of protesters. I pretty much can't think of a better way to react in that situation, and from now on this should be the go-to in the abortion debate
You want me to think about the children, you hog fingering fucks? Well I did I think about this, and I cried and, yeah suck my cock, I prayed a little. And here I am! So you can back the fuck off, you hypocritical cunts, before i show up to the piss puddle that is your house and protest your husband wacking it to your daughter's seventh grade yearbook. That sign's misspelt.
Selina: "It sounds like Dr. Seuss fucked Maya Angelou in the yasmatazz and then filled her all up with snoozeliscuzz."
Selina: "Last thing I need is my picture being taken eating dick-shaped food. I'd rather eat a food-shaped dick."
Richard: "My uncle was a shop steward for the 7-4. Asbestos killed him. Asbestor was the name of their pit bull."
Jonah: "I'm Jonah Ryan and I wanna suck this message's hot clam."
Teddy/Jonah: "We focus tested the ad and most people are uncomfortable watching a white man kick a black woman in the vagina." "Well I don't see vagina colour."
Richard: "On the plus column the undecard debate will be first, which means we'll have no problem getting out of the parking lot. Oh no, that's bad news too, it's stacked parking."
Teddy/Jonah: "You can't say retarded in front of a reporter." "Why, was he retarded?"
Mike: "Ever since i got it they stopped calling me old guy. Now it's hat guy." "It's fat guy."
Selina: "Look at you! You got chocolate all over your face like a child, but you're an adult!"
Dan's harrowing abortion knowledge: "Is that the Berkeley VC10? Cause that's the Shelby Cobra GT of vag vacs!"
Selina: "What's up with the Clubfoot Cuntessa?"
Richard: "Novelty mayors are Iowa's top source of tourism. After tornado chasing, and coming into town to buy Sudafed."
Teddy: "You have to be more PC than a clit ring made out of wheatgrass."
Selina: "I want you to add the Dalai Lama to this list, because i'm going to be the only stiff at my funeral."
Selina: "And this must be Mrs. Ryan. Or do you go by your maiden name, Mrs. Ryan?"
Selina/Richard: "But don't you have to be a dog [to be the mayor]?" "Legally, yes, but it's unenforceable."
Kent/Selina: "Ma'am, that's your funeral blackball list." "And all of you are on it!"
George Prax	TV Reviews, Veep	Leave a comment April 15, 2019 4 Minutes
Last week's season premiere of Veep was all about proving that the long-running HBO satire still had a place in the discourse on American politics. Could it be as biting and brutal as it was for its first six seasons, especially after nearly two years off the air?
The answer was an unsurprising and resounding yes, but it was nice to get confirmation that the show wouldn't spend its final episodes on some sort of tame farewell tour. And while the season's second episode, "Discovery Weekend", was probably a little laid back in comparison, the show and its cavalcade of assholes were still firing on most cylinders this week, delivering vicious lines and takedowns on topics including but not limited to the #MeToo movement, women in presidential politics, the (gay) money behind said presidential politics, somehow bulimia, and a lot more.
The episode sees Selina and the campaign visit a major political donor's weekend getaway where he is set to announce his backing of a single Democratic candidate. That donor is Felix Wade (played by the great William Fitchner), a political power player whose sexual preferences are the worst kept secret in politics (which doesn't stop Selina from putting her foot in her mouth and accidentally outing him to an unwitting Mike; whose habitual and often forgotten presence now that he's no longer in the campaign is quickly becoming one of my favourite things about this season) and who has decided to back Selina. Problem is that Tom James (Hugh Laurie) decides to stick his apparently gigantic penis where it doesn't belong, renewing one of the show's best will-they-won't-they love/hate dynamics between him ans Selina. Tom complicates matters by telling Selina he legitimately loves her right before she's set to deliver a speech that would guarantee her Felix's money, causing her to stumble and lose ground. He also gets caught by Amy fooling around with his new Amy (the brilliantly cast Rhea Seahorn, who may as well be a clone of Anna Chlumsky's).
So Selina and the gang spend most of the episode trying to stop Felix from falling too far in love with Tom, all while trying to do something "disruptive" to get his attention, which incidentally leaves them in the dust when Selina introduces Felix to a multiracial senator who Felix winds up back and who Selina describes as her protege (and therefore a perfect candidate to stab her in the back), leaving us in Veep's favourite territory; right back where we started.
Meanwhile, the Jonah Ryan campaign is going just as well, as his repeated lies about all the women he's clearly never gone out with come back to haunt him. While Teddy and the rest of his staff ponder what he could have done to offend a number of women, it turns out they've all banded together to create the wittingly labeled "#NotMe" movement to out Jonah as a liar and prove they've never slept with him. It's a nice play on words with regards to the #MeToo movement and also bad news for Jonah, seeing as the trump card (I hate myself for that, don't worry) of his campaign is his misplaced braggadocio.
All of this keeps the wheels moving on the show, but it's interesting to see things move rather slowly two weeks into this final season. I wonder if we're going to spend the entire season in the primaries, in order to mimic real life, or if a time jump is in the show's near future. In any case, that doesn't stop "Discovery Weekend" from being another great episode, so let's not waste any more time. Below you'll find all the great, brutal lines from this week's episode:
Jonah Ryan Dunk of the Week: "Dead-eyed lanterned-jawed one-and-done congresstard" (Jonah: "That could be anyone.")
Furlong: "I would have invited my wife but she's a squirter and that dress doesn't look scotch guarded."
Selina/Gary/Selina: "Come on that is idiotic. Is he really that insecure?" "Come on that is idiotic. Is he really that insecure?" "Gary gets it."
Gary/Selina: "Amy's bulimic." "It's about time. And I'll tell you something, she might want to consider more purging, less binging."
Kent to Amy: "You've got some vomit on your mustache."
Selina to Tom, upon meeting his new Amy: "What's up with Frigid Von Pole-up-her-ass?"
Selina/Kent: "He cannot spend another second with Felix without me jammed in between them like the cross piece in an Eiffel Tower threesome." "MMF, the devil's threesome."
Selina: "An all female ticket? I don't think so. The American people work hard for a living, they don't need that kind of bullshit."
Tom: "I believe the word you're fumbling for is mansplaining."
Teddy: "Jonah who have you traumatized? Start with the doctor that delivered you."
Teddy: "If anyone asks, tell them you've been chemically castrated. It's very easy to lie about and trust me, nobody checks."
Kent: "In current gay parlance Dan represents somewhere between a wolf and an otter. Some would say a frost otter."
Selina: "Dan fucked YOU? What were you wearing, a full length mirror?"
Selina: "I did not spend my entire life defending a woman's right to choose for you to choose this."
Jonah: "I split the bill on all my dates. Why would I pay for a woman to get fatter?"
Selina/Gary and his bath bomb: "Is it gonna explode between my legs and make me cum until I cry?" "I think it's peppermint."
Ben: "You're going to be drowning in money so dark it would get shot entering its own apartment."
Selina: "How dare that smooth shitsack cheat on his wife and risk his political future with someone that's not me."
Jonah/Richard: "I have scoliosis?" "Yes, clearly."
George Prax	TV Reviews, Veep	Leave a comment April 8, 2019 4 Minutes
The Most Brutal Insults from Veep S07E01: 'Iowa'
In this endless onslaught of sociopolitical turmoil, it's kind of crazy realize we've gone almost two full years without a season of Veep. The last time HBO's biting political sitcom was on the air, we were only a few months into the trump administration. When season 6 premiered, we were still talking about the travel ban and the administration's ceaseless attempts to strip Americans of their right to healthcare. We had barely heard of the name "Robert Mueller" and only had vague suspicions of Russian election interference. In retrospect, those were much simpler times. Perhaps the show and its writers felt the same, as the biggest criticism against season 6 was probably that it felt like it didn't belong. Some attributed it to the show's age, or how far passed its original premise it had gone, but it's quite possible that it was because the show didn't have any relevance or identity as a pre-trump show living in a post-trump world. I'll defend season 6 as being as funny as any season that came before it, but I'm willing to admit that perhaps its timing and its insistence on being more about an oblivious, out-of-touch ex-president rather than anything more biting was probably detrimental to how it would be remembered.
And that may be one of the reasons why it took showrunner David Mandel and his crew almost a full two years to prepare this, the seventh and final season. This is a show that was birthed from the cynicism of Obama-era obstructionist politics, a show that took as much inspiration from the then sitting VP Joe Biden as it did from its British predecessor, The Thick Of It. Those were much simpler times, where the ineffectual nature of politics could actually be mined for humour. Things are a lot more complicated now. A lot more sinister. And it's not like the show could simply cast Alec Baldwin or Tony Atamanuik to play trump, this is a fictional world, deviated from the actual politics of the 21st century. Portraying the post-trump world without donald trump likely proved to be a much harder nut to crack.
With this past week's season 7 premiere, "Iowa", it's probably safe to say that the show found where it had stored its nut cracker, because that biting commentary, that brutal take-no-prisoners attitude of the show was out and swinging with a fantastic episode. An episode that in no way forgets Veep's roots as being about a terrible, selfish politician and the terrible selfish people around her, while still finding the perfect moments to crack the whip in the direction of white nationalism and gun culture.
The episode centers largely around Selina's repeated failed attempts to announce her presidential campaign. She arrives at the wrong Iowan airport, she's stalled by multiple mass shootings, she's stonewalled by unpaid contractors and her staff's failures. And when she does finally announce, her declaration is overshadowed by the shitshow that is Jonah Ryan's literally incestuous campaign, which, it turns out, people find more raw and appealing than a business-as-usual Selina Meyer running once again for president.
The episode established that, in its final season, Veep will not cease to be a show about terrible people insulting each other terribly for being bad at their jobs. It's almost like it's going through an existential crisis, as Selina constantly laments the ineffective nature of her staff all while making the exact same mistakes they try to warn her about. And yet, it's also a show that rips apart the debate around mass shootings, purposely never taking an actual stance on the matter and playing into the ridiculous nature of the "thoughts and prayers" response (to the point where Selina slapdashedly tries to rebrand it as "mindfulness and meditations" instead of actually trying to say something substantive, only doing so absentmindedly when questioned by Mike, whom she forgets no longer works for her. The way the episode tackles the politicization of mass shootings is absolutely brutal and hilarious, as is what they set up with Jonah Ryan playing the post-trump candidate. I hope this isn't insulting towards Timothy Simons, because he's really good as playing a disgusting, gargantuan monster who you can totally believe is the rallying call of the alt-right (and yet "alt-right" and "white nationalism" are terms that aren't uttered in this episode, and likely never will be over the course of the season, because this show is truly that brilliant when it comes to subtext).
In other words, this is a great episode that feels like it earned its two year break. It feels like it's cemented its place in the modern political conversation, despite arguably feeling out of touch the last time we saw it, and without losing sight of what got it here. It seems like it's adapted perfectly, all while managing a huge, talented cast where there still is a lead that's head-and-shoulders above all the rest; and as you'll see below, that lead manages to steal the show despite the ever-growing cast that not only brings back pretty much everyone from previous seasons and adds the incomparable Andy Daly as Selina's accidental new campaign manager.
"Iowa" proves that Veep's still got it, and with nothing left to hold back, this final season is shaping up to be one hell of a ride.
Below are my favourite lines from the episode, be sure to check back weekly for the rest of the season!
Jonah Insult of the Week: 80-story Skyraper
Amy: "Hey, sweatpants! You can't just walk out, this isn't a Terrence Malick movie."
Selina: "I'm not sure about the part where I say I want to be president for all Americans. I mean, do I? All of them?"
Selina: "If Mohammed Atta had you people booking his travel he'd still be alive today. Which from his perspective would be a massive fuckup."
Dan/Selina: "FYI we're tracking a school shooting in Spokane, Washington." "Muslim or white guy? Which one's better for me?"
Amy/Selina: "First of all, there was a reluctance on the part of the candidate to take responsibility for mistakes." "What, no, you were the one who made mistakes." "Second, there was a culture of blame which made people feel unsafe expressing criticisms." "What dumb asshole said that?"
Selina: "How about I write 500 pages on how you need to start wearing concealer?"
Selina (escaping Marjorie): "I just had to get away from Blue is the Most Annoying Color."
Selina/Amy: "Amy, why would you want to be president?" "So I could nuke America."
Teddy/Bill: "How did this not come up?" "The same reason it didn't come up that he moisturizes with Minotaur semen, it's not one of the standard questions!"
Kent: "Google always filters out my emails, they think I'm a bot."
Selina/Ben: "I really thought my 50s would be about sucking and fucking my way through the Shorestein Center." "You and me both, ma'am."
Amy: "I don't want people to think I was going for Megan Egan because that sounds like someone who gets assfucked on the Major Deegan in a limerick."
Selina: "I was a gamechanger, I took a dump on the glass ceiling and I shaved my muff in the sink of the old boys club."
Ben: "technically it's more of a goat rape than a clusterfuck."
Jonah: "It's exactly what Woody Allen did. I'm clearly no more of a pervert than he is."
George Prax	TV Reviews, Veep	1 Comment April 1, 2019 April 1, 2019 5 Minutes
Star Trek: Discovery charts a bold new path for season 2 with 'Brother' [Season Premiere Review]
If season 1 of Star Trek: Discovery taught us anything, it's that, for the most part, each episode is only part of the story. That shouldn't surprise anyone who has witnessed the evolution of storytelling on television over the last twenty years; episodic TV is a thing of the past, and in genres like science fiction especially, serialized storytelling is king. Last season, a lot of people were quick to dismiss what Discovery was trying to do because they only bothered with the first few episodes. But it was over the course of the entire 15 episode first season that the story of Michael Burnham and the war with the Klingons unfolded. It had an arc that didn't even clearly convey its central thesis (the arrogance of the Federation's expansionist idea of peace and enlightenment, among other things) until about halfway through.
On top of that, as a serialized show in the 21st century, it took time for it to find its footing. Even discounting the change in showrunners and the added pressure of existing within the framework of an over 50-year-old franchise, and no less as a prequel, that's a normal thing for TV shows these days. And I really do think it wound up finding its footing. As the season wore in, it become more optimistic, more lighthearted, it featured more technology and exploration, and it made its points, all within the framework of a modern, serialized show, something I think Star Trek in 2019 needs to be.
In season 2, it's going to have to do all of these things over again, because a subtle promise in the season's build up and marketing is that this is sort of a soft-reboot of Disovery. The showrunners have changed again (during production, even), fully eliminating Bryan Fuller's imprint on the show, other than his name as creator in the opening sequence, and making it Alex Kurtzman's. Some of the pressure has been lifted off Discovery's shoulders, with the promise of no less than half a dozen other Trek series in the works, including the highly anticipated return of Sir Patrick Stewart to the role of Captain Picard, but the pressure to make Discovery bigger and better persists, all while finding a way to channel that old school notion of what it means to be Star Trek.
I thoroughly enjoyed "Brother", the season 2 premiere, but I must warn anyone watching or planning to watch that there's no way that it can satisfy everyone's desires of what they want Star Trek to be. Watching the episode it was clear to me that Kurtzman and the writers have abandoned the idea of boldly taking Trek into completely new places, instead focusing on balancing this new version of the franchise with a more familiar tone. In season 2, Discovery is funnier, lighter, more positive and brighter. There are times where it's almost obnoxious, but they always find a way to reel it back.
It's a premiere and the show is serialized, so it still sets up a story that will play out over multiple episodes if not the entire season, but there are missions within the episode that manage to get resolved, notably a rescue mission on a Starfleet medical freighter thought to have been lost during the Klingon war. The freighter is stuck in an asteroid field where the physics are wonky, due to a mysterious event that the ship is tasked with investigating, but the nature of that event is put on the back burner (since there are seven things they need to investigate) in favour of focusing on the rescue mission, as the crew is forced to take individual pods out to the asteroid where the ship has crashed.
As a result, like the season 1 premiere, it's an episode with a lot of action. But a different kind of action, as no phasers are fired, and there is no confrontation with an alien species. It's purely a rescue mission, and you can tell the writers specifically chose this path to differentiate season 2 from what came before.
The effort appears elsewhere as well. As already noted, this is a much funnier, light-hearted episode, and that's displayed not only in what they find on the ship (where the surviving officer is a dry-witted engineer played by the driest of dry comedians, Tig Notaro), but also in how the crew copes with its new leader, Captain Christopher Pike (Anson Mount, joining the cast), who commandeers the Discovery in order to complete the mission of investigating the seven synchronized events after the Enterprise sustains heavy damage. The crew is apprehensive, because they don't know much about Pike and he sort of steamrolls them, and they're still reeling from not one, but two Mirror Universe evil captain reveals. Pike makes it a point to prove to them he's not Gabriel Lorca. He jokes with them, he makes it a point to learn their names, he's even a fan of furniture in ready rooms. And he understands that he's encroaching on Saru's territory, so he gives him the space he needs as the ship's number one and, up to his arrival, acting captain. As much as this episode is about establishing this new threat and saving that freighter, it's about establishing Pike as the new captain and starting to build new relationships.
I really like the Captain Pike portrayed in this episode. He's different than the other iterations we've seen, but very much in line with what you'd expect the predecessor to Captain Kirk to be like. He's funny, incredibly charming and a bit of a rogue or a maverick. He comes from a ship on a long-term deep-space mission, so he plays a little more fast and loose with the rules than a Saru, which puts him in a nice spot between Saru and Burnham, the latter of which has her own tendency to bend rules and do things her own way. Pike knows things are different on a ship that experienced the war, and he feels bad for being ordered to sit it out, so he respects and lionizes Saru, but he very quickly bonds with Burnham, between their similarities and their mutual acquaintance in Spock. That makes Pike the perfect addition to this show, even though some might continue to think this prequel/TOS stuff is shoehorned in, and Anson Mount is pitch perfect in his portrayal.
And, of course, it's also about Burnham and her family problems, as the arrival of the Enterprise brings up the curious absence of one Mr. Spock, her foster brother, who has taken leave from his duties on the Enterprise and not spoken to Pike, Burnham, or his father Sarek in a long time. The episode starts with a lengthy flashback to Burnham's first day in Sarek's home, and Spock's initial rejection of his new foster sister. Later on Burnham blames herself for their failed relationship as faux-siblings. But visiting his quarters on the Enterprise, she discovers that Spock had something to hide, and that it might play in this larger mission with Pike. We don't see adult Spock just yet, but we know he's coming, as Ethan Peck has been cast in the role and seen in some of the trailers.
All of this makes for a lot to set up for the premiere, and we haven't even mentioned Stamets' decision to leave the ship for a teaching gig, abandoning his research with the Mycellium network, or the dark matter asteroid that they bring on board. All of this, obviously, will play out over the course of the season, but it sets up a good base, and it balances all of these elements fairly well. That's kind of the point of making a more action-oriented premiere. You have a lot to set up, it won't pan out for a few episodes, so here's an exciting space jump to tide you over (including a pitch-perfect redshirt death). "Brother" establishes a good pace for us to work with as Discovery launches into new territory this season. I'm excited about the Red Angel stuff, I'm curious to see how the Spock stuff plays out, I'm elated at how good Anson Mount is as Pike and the new dynamic with the crew, and I'm optimistic about the show's promise to be more about science and exploration, between the seven missions they've already set up and the dark matter asteroid they have sitting in the shuttle bay. And that's pretty much what you can expect out of a soft-reboot premiere like this.
"Brother" gets 8 snarky redshirt comments out of 10.
George Prax	Star Trek, TV Reviews	1 Comment January 18, 2019 January 18, 2019 6 Minutes
The Best Lines from It's Always Sunny In Philadelphia S13E10: 'Mac Finds His Pride' [Season Finale]
It's been an… odd season of It's Always Sunny In Philadelphia. Between dealing with the semi-retirement of one of its main characters, the struggle to keep the show fresh after 13 seasons, yet also satisfy those craving what they've been familiar with for all these years, the ever-changing landscape of television and what is supposed to make for good television, not to mention the ambitions of a very creative cast and crew, ambitions which are becoming harder and harder to contain, it's made for a batch of ten episodes that could only be fairly described as inconsistent.
We started the season with The Gang trying to replace Dennis, only to realize that they couldn't, and yet, even though the premiere promised his return, he was still absent from nearly half the remaining episodes, excused with some sort of contrivance such as a flashback or one character or another going off on their own adventures. We saw The Gang Minus Dennis celebrate Philly's big Super Bowl win from last year over two uneven, incomplete-feeling episodes. We saw Dee try and recreate the Wade Boggs challenge from a couple of seasons back with only women, the start of a string of very topical episodes tackling #MeToo, the bathroom debate and much more, a run that crescendoed through three diverse, amazing episodes that could very well wind up on a list of best ever IASIP episodes. "Time's Up For The Gang", "The Gang Solves The Bathroom Problem" and "The Gang Gets New Wheels" are all instant-classics and they all work for very different reasons. The first two represent the tremendous new directions this show could wind up going, with a writer's room stacked with newer, younger, more diverse voices capable of translating this posse of monsters to an era that's much different than the one in which this show began nearly fifteen years ago. The latter is the kind of classic Sunny shenanigans featuring violent crime against children that remind us of how this show hasn't really lost sight of what it's always been, despite its aspirations to try new and different things.
And yet, even though the show was clearly preparing to launch us in an entirely new direction, I don't think any of that prepared us for what happened in this week's season finale, "Mac Finds His Pride", an episode which veers so drastically to the left in its final act that it leaves you wondering where IASIP could go from here. After fifteen minutes or two of usual Sunny shenanigans, in which Frank is tasked with convincing Mac to dance on their gay pride parade float in order to I guess trick gays into coming to Paddys, the episode and the season goes somewhere very different, ending in an uninterrupted, jokeless interpretative dance in which Mac tries to convey to his father and his fellow convicts his internal struggle with being gay and coming out of the closet.
There's no punchline. The woman Mac is dancing with is not Dee being grabbed by her private parts like the most raucous moment of that first #MeToo episode. The convicts don't interrupt into violence after learning there's no Blake Shelton concert, Frank doesn't make some crass joke. Instead, the show decides to pay off the seeds they've been setting about Mac's sexuality for over a decade. It decides to prove that being gay is not a punching bag for a show that's cool with dunking on everybody. That it's not just a character trait for Mac. Even though it was pretty cool when Mac came out of the closet last season and nothing really changed, this contextualizes it and him as a character and makes his arc meaningful.
In a weird way, it works almost the same way that the season 12 finale does. In that episode, Dennis decides he has to grow up and go raise his family. Despite the show's best efforts to convince us that he didn't really change upon his return this season, I think we can all agree that he sort of did. And the same could be said about Mac here. For the past season and a half, the show has been trying to convince us that Mac didn't really change, other than being more open about what his dildo bike is for or what he's doing with his Dennis real doll or all those peaches we see strewn across his apartment in this episode (an unsubtle nod to last year's Call Me By Your Name and its most discussed scene). "Mac Finds His Pride" throws that out the window by admitting to itself and to its viewers that you can't just play it cool with such a big character defining moment, especially one with as much cultural baggage as coming out of the closet. And both the show and Rob McElheney play it with style and class, not only in the amazing choreographed and performed dance at the end of the episode, but with how Mac comports himself as a real human being throughout.
And the low-key best thing about this episode is how it frames the story around Frank, believe it or not. Mac's struggle is one we've seen in other shows and that, as the show hilariously points out, is hard to believe coming from someone who, in real life, is straight. McElheney and Charlie Day don't want to shove anything down our throats and they certainly want to treat this topic gracefully, so instead, the story is told from Frank's perspective, as an old, bigoted curmudgeon who readily admits he doesn't and will never understand Mac and homosexuality. And yet, he's just as surprised as we, the viewer, when he declares at the end of Mac's dance, raucously cheering along with all the other convicts in attendance, that he finally understands.
It wasn't only in that moment that I was pleasantly surprised by how they were treating this. All throughout the episode, Frank displays how he'll do anything for The Gang. He's tasked with getting Mac onto that float and never questions it. He just does it, and is willing to go to extreme lengths to satisfy his friends. And even though he has ulterior motives and questionable tactics, he decides to help Mac find his pride, his mojo by taking him around town to the gayest spots he knows. It's weirdly sweet, as Frank reveals himself to be the true father figure on the show, which is especially interesting juxtaposed against Luther's outright rejection of Mac, no matter his sexuality.
Of course that doesn't take away from the last scene of the episode, which is really groundbreaking for the show and for McElheney's character. It begs the question of where the show could go from here, if it's forever changed or if this will just be another pivot point, much like Dennis's departure last season. Either way, it proved that IASIP can be a lot more than just the same old show about assholes. I don't know if this means that it will strive to be the next Louie or Atlanta in its already-announced 14th season, or if this is just an occasional out of the box thing that they could do, but it's a great way to end a season of change. "Mac Finds His Pride" gets 9 sexy gay dances out of 10.
The Best Lines from the season finale of It's Always Sunny in Philadelphia:
No goddammits this week, and obviously with the the more serious tone of the final act there were less jokes than usual, but there are still some great lines and gags in this episode. Frank's increasingly grotesque face and how they use it to sell the point about Mac letting the blood flow or whatever is pretty great, in particular.
Vulture did a great piece today about the dance, including interviews with Rob McElheney and others from the show. It's a must-read.
Frank: "We're making a float for the parade… to rope in the gays."
Frank: "They give me one job and I gotta deal with your feelings?"
Frank: "This is a much better spread than they have at the straight orgies."
Frank/Mac: "One false move and these fairies could poke me full of holes." "What year is it in your head?"
Mac/Frank: "You don't know what's going on inside of me." "Well I'm sure there's five or six super viruses eating out your insides."
Frank: "You're gay and you're dancing with a hot chick who is god? The catholics really fucked you up."
Luther: "My cellmate ratted on me for having an extra pillow. I cut out his tongue with a rusty pair of pliers and fed it to the maggots."
Luther: "If it's not a boy you flush that shit out and try again."
Charlie: "What, are you gonna have you and me dancing on top of the gay float? The press will murder us. We need an authentically gay man. They'll see right through us."
Charlie: "Come on man, he looks like a monster, and you look like a monster. We're not trying to invite a bar full of monster men."
Sweet Dee: "You can't get a straight man to dance, the press will murder us."
Mac/Luther: "My name is Ronald McDonald." "Haha, I named him that."
George Prax	It's Always Sunny In Philadelphia, TV Reviews	Leave a comment November 8, 2018 November 8, 2018 6 Minutes
The Best Lines from It's Always Sunny in Philadelphia S13E09: 'The Gang Wins The Big Game'
It's totally understandable that It's Always Sunny in Philadelphia's take on the Vikings' Super Bowl win earlier this year couldn't be contained in a single episode. The way they split it up made total sense as well; the first episode, which aired last week, saw Charlie home alone at the bar, trying to overcome the odds after he gets his foot stuck in a bear trap and can't do his usual array of superstitions. The show saved everything else for this week's episode, "The Gang Wins the Big Game", in which Mac, Frank, Dee and an array of Philadelphia's biggest losers head to Minnesota in order to attend the game and help out their team. Both episodes brought very different things to the table and structurally stood on their own.
The problem with both is that they felt incomplete. Never mind Glenn Howerton's absence (as these episodes took place while Dennis was away raising his child in North Dakota), they just felt like two halves of an episode that would have maybe been better served if they were meshed together in one single narrative. If anything, "Charlie's Home Alone" felt like it needed more time, and this week's episode struggled to fill it. This is so egregious that the cold open of both episodes are both mostly just the same thing up until the point where Charlie gets left home alone.
That's not to say that both episodes aren't funny, and don't fit within the framework of makes for good Sunny. In this week's episode particularly, we get to see a lot of the great side-character from the show which have mostly gone unused this season, from Uncle Jack to Cricket to Pondy, but few of them really got a chance to shine the way they might in an episode where they're the focus. If anything, in the IASIP side-character power rankings, it's probably the Waiter that makes the biggest jump, even though this is his second appearance of the season (the first, in the Ladies Boggs Reboot, foretells this flashback episode). Elsewhere, we get a great bit where a pink-eye infested Sweet Dee goes on a Mr. Magoo-like adventure on her way to blinding Tom Brady in the final minute of the game, and Frank has to pass a kidney stone to save the team. As for Mac, his role in the episode feels very much like he was doing what Dennis would have been doing, which gives us an interesting glance into what a full Dennis-less season of this show would have been like (my take is that this is not the role I necessarily want Mac to be filling). It was also impressive how they got to use actual footage from the Super Bowl, not to mention footage of Philly fans celebrating after the fact. Sports footage feels like something sacrosanct in America, so it's rather impressive that they managed to pull that off.
"The Gang Wins the Big Game" has a lot of fun elements, but I don't think it comes together. More or less specifically because it's missing the Charlie elements from that week. I just felt as if I wanted more from both, especially after a string of great episodes earlier in this thirteenth season, and so much hype about these episodes, knowing they were coming. And it just feels as if it would have been an easy fix if this was an hourlong episode to open or close the season. That's why this second part gets 6 expeditions for jean shorts out of 10.
The Best Lines from This Week's Episode of It's Always Sunny in Philadelphia:
Goddamnit Count: 0, yet again! Maybe this is why these episodes didn't click with me. Also no bird jokes at Dee's expense despite being at an Eagles game.
Inarguably the funniest thing about this episode is how Danny DeVito has to use the shorter urinal. Also why does Mac have to take him to the bathroom?
Uncle Jack/Mac after Mac pulls off his giant hands: "Don't make me go without them." "I'm not making you go at all!"
Mac: "You have literally picked out the biggest pieces of shit in the city."
Cricket: "I came up port side on a horse and he was a little quicker than me. Lesson learned."
Mac after 11 plays of 'Eye of the Tiger': "It turns out there's not that many songs about Philadelphia."
Sweet Dee: "Everybody look at me, I'm a stupid Pats fan making stuff up about Dee's eye."
Mac after the Waiter falls: "This Minnesota rube, he's not ready for your big city shenanigans, Frank!"
George Prax	It's Always Sunny In Philadelphia, TV Reviews	Leave a comment November 1, 2018 3 Minutes


Gorgeous pink sunset. I thought the colors were beautiful as subtle as they were.
There is an old saying "Pink sky at night Sailor's delight" , which means it's supposed to be good weather tomorrow.
I love how the crane crosses the clouds.
Thank you for your visit and kind words, you now have a place in the Interesting Visitors list. After a quick look through you posts I have to say that I am impressed and will be returning for a more extended look.
A beautiful composition. Lovely sunset and colours.
this one above you have captured the colours in that sky beautifuly.


text:
\section{Principles of \ensuremath{{}^\textsf{meta\_}}\textsf{tools}{} and Context of this Report}

The authors' view on model transformation \cite{lt2011}
is in some aspects a ``dual'' approach to the construction of dedicated
model transformation tools:
It implies that \emph{every} computer-internal data structure can
(and should!) be seen as a model, and every computation is a kind of
model transformation.
Consequently, models are realized as type definitions, invariants
and processing code in the hosting computer
language: In a first step,
source code is generated automatically
from a mathematical
description. In a second step, the programmer is free to handle the model objects
by combining the generated API and the corresponding runtime libraries
with his/her familiar coding techniques.
During the last decade the authors' coding activities in this area have
been collected into  \ensuremath{{}^\textsf{meta\_}}\textsf{tools}{} \cite{mt2011}, a tool set
for \textsf{JAVA}{} source code generation. In this context, even source code
generation itself is realized as a transformation between models which adhere
to different meta-models.

Obviously this view differs significantly from dedicated model
transformation languages. Both approaches have their merits.
It may be valuable to compare the experiences, it may be possible
to learn from each other, and maybe both approaches turn out to
be two sides of a bridge which slowly grow and will meet somewhere
in the middle.

Regrettably, the authors did not get to know about the ``\textsf{Transformation Tool Contest 2011}'' \cite{Ttc2011}
until it had started.
Nevertheless, the organizers invited them to present their approach and
the authors afterwards developed a solution to the ``compiler optimization task''
from \textsf{TTC 2011}{} using \ensuremath{{}^\textsf{meta\_}}\textsf{tools}. The results are presented in this paper.

\subsection{Solved Tasks}
The source text and a runnable demonstration of this solution
is found at \cite{ourShare}.
It can read, visualize and optimize the files
\texttt{min.gxl},
\texttt{const.gxl},
\texttt{zero.gxl},
and \texttt{testcase.gxl}, which are included as
copies from the task's original test data.
The other files employ ``memory operations'', which are not yet supported
by the importing code.

\section{Stacking Models for Solving the Compiler Optimization Task}

\subsection{Import and Export Pipeline}

The ``Compiler Optimization Task'' is presented in
\cite{compileroptimizationcase},
containing an informal description and the necessary
test data.
The latter is given as an intermediate graph following the
``Firm'' syntax \cite{TrBoLi-99}.
This in turn is encoded in the ``GXL'' format,
a standardized XML format for exchanging graph-like data \cite{GxlHome}.

Given this setting, it soon turned out that a
\emph{stack of models} is an adequate approach.
Not only due to the fact that
two programmers were involved who created code for
GXL and Firm independently,
but also for clean, modular and correct implementation.
Figure~\ref{fig_cot_pipeline} shows the transformation pipeline.

Two kinds of model transformations are involved:
First, identical information is transformed from one representation
to another. Then the optimization task itself is performed as a transformation
on the best-suited representation. Afterwards the first transformation chain
is reversed.

\newcommand{\cite[/gxl-1.0.dtd]{GxlHome}}{\cite[/gxl-1.0.dtd]{GxlHome}}

\newcommand{\cite[/dtd/gxl-1.0.html]{GxlHome}}{\cite[/dtd/gxl-1.0.html]{GxlHome}}

Directly
from the DTD  at \cite[/gxl-1.0.dtd]{GxlHome}{}, the \texttt{tdom}{} generator from \ensuremath{{}^\textsf{meta\_}}\textsf{tools}{} generated a
type-safe document object model, in form of source
text for \textsf{JAVA}{} classes.
Only a small driver DTD (see appendix~\ref{file_gxl_driver}) had to be
prepended, for  manually identifying some common attributes and abstractions of
common content models. These will be translated to abstract super classes.
Appendix~\ref{txt_call_tdom_creation} shows the code snippet for
creating a model instance from a SAX event stream.

\definecolor{lightblue}{rgb}{0.8,0.8,1.0}
\definecolor{lightyellow}{rgb}{0.99,0.99,0.3}

\newcommand{\xarrowRead}[2]
\begin{pgfscope}
\pgfsetendarrow{\pgfarrowlargepointed{0.3cm}}
\pgfsetdash{{0.15cm}{0.1cm}}{0cm}
\pgfline{\pgfbackoff{0.5cm}{#1}{#2}}{\pgfbackoff{0.5cm}{#2}{#1}}
\end{pgfscope}
}

\newcommand{\xarrowCreate}[2]
\begin{pgfscope}
\pgfsetendarrow{\pgfarrowlargepointed{0.3cm}}
\pgfline{\pgfbackoff{0.5cm}{#1}{#2}}{\pgfbackoff{0.5cm}{#2}{#1}}
\end{pgfscope}
}

\newdimen\xdimy
\newdimen\xdimx

\newcommand{\xarrowInheritXX}[2]{
\begin{pgfscope}
\pgftranslateto{#1}
\pgfextracty{\xdimy}{#2}
\pgfextractx{\xdimx}{#2}
\pgfsetyvec{#2}
\pgfsetxvec{\pgfpoint{\xdimy}{-1.0\xdimx}}
\pgfmoveto{\pgfxy(-0.8,0)}
\pgflineto{\pgfxy(0,0.8)}
\pgflineto{\pgfxy(0.8,0)}
\pgfclosepath
\pgfstroke
\end{pgfscope}
}

\newcommand{\xarrowInheritX}[3]{
\pgfline{\pgfbackoff{0.5cm}{#1}{#2}}{#3}
\xarrowInheritXX{#3}{\pgfdiff{#3}{#2}}
}

\newcommand{\xarrowInherit}[2]{
\xarrowInheritX{#1}{\pgfbackoff{0.5cm}{#2}{#1}}{\pgfbackoff{0.8cm}{#2}{#1}}
}

\newcommand{\xarrowData}[2]{
\begin{pgfscope}
\pgfsetlinewidth{4pt}
\color{black!20}
\pgfsetendarrow{\pgfarrowtriangle{10pt}}
\pgfline{\pgfbackoff{0.5cm}{#1}{#2}}{\pgfbackoff{0.7cm}{#2}{#1}}
\end{pgfscope}
}

\newcommand{\xarrowDataX}[4]{
\begin{pgfscope}
\pgfsetlinewidth{4pt}
\color{black!20}
\pgfmoveto{#1}
\pgfcurveto{#2}{#3}{#4}
\pgfsetendarrow{\pgfarrowtriangle{10pt}}
\pgfstroke
\end{pgfscope}
}

\newcommand{\xcode}[5]
\begin{pgfscope}
\pgfsetlinewidth{#5}
\color{#4}
\pgfputat{#1}{\pgfrect[fill]{\pgfxy(-0.80,-0.4)}{\pgfxy(1.6,0.8)}}
\color{#3}
\pgfputat{#1}{\pgfrect[stroke]{\pgfxy(-0.80,-0.4)}{\pgfxy(1.6,0.8)}}
\pgfputat{#1}{\pgfbox[center,center]{#2}}
\end{pgfscope}
}

\newcommand{\xcodeX}[5]
\begin{pgfscope}
\pgfsetlinewidth{#5}
\color{#4}
\pgfputat{#1}{\pgfrect[fill]{\pgfxy(-0.75,-0.4)}{\pgfxy(1.5,0.8)}}
\color{#3}
\pgfputat{#1}{\pgfrect[stroke]{\pgfxy(-0.75,-0.4)}{\pgfxy(1.5,0.8)}}
\pgfputat{#1}{\pgfbox[center,center]{#2}}
\end{pgfscope}
}

\newcommand{\xmodel}[4]
\begin{pgfscope}
\pgfsetlinewidth{1pt}
\color{#4}
\pgfcircle[fill]{#1}{0.5cm}
\color{#3}
\pgfcircle[stroke]{#1}{0.5cm}
\pgfputat{#1}{\pgfbox[center,center]{#2}}
\end{pgfscope}
}

\newcommand{\xcurveA}{
\pgfcurveto{\pgfxy(0.0,0.0)}{\pgfxy(0.1,0.2)}{\pgfxy(0.3,0.2)}{\pgfxy(0.4,0.0)}}
\newcommand{\xcurveV}{
\pgfcurveto{\pgfxy(0.0,0.0)}{\pgfxy(0.1,-0.2)}{\pgfxy(0.3,-0.2)}{\pgfxy(0.4,0.0)}}

\newcommand{\xpfull}{
\pgfmoveto{\pgfxy(-0.4,-0.4)}
\pgflineto{\pgfxy(-0.4,0.4)}
\pgfcurveto{\pgfxy(-0.3,0.6)}{\pgfxy(-0.1,0.6)}{\pgfxy(0.0,0.4)}
\pgfcurveto{\pgfxy(0.1,0.2)}{\pgfxy(0.3,0.2)}{\pgfxy(0.4,0.4)}
\pgflineto{\pgfxy(0.4,-0.4)}
\pgfcurveto{\pgfxy(0.3,-0.6)}{\pgfxy(0.1,-0.6)}{\pgfxy(0.0,-0.4)}
\pgfcurveto{\pgfxy(-0.1,-0.2)}{\pgfxy(-0.3,-0.2)}{\pgfxy(-0.4,-0.4)}
\pgfclosepath
}

\newcommand{\xpage}[4]
\begin{pgfscope}
\pgfsetlinewidth{2pt}
\pgfputat{#1}{\xpfull\color{#4}\pgffill}
\pgfputat{#1}{\xpfull\color{#3}\pgfstroke}
\pgfputat{#1}{\pgfputat{\pgfxy(0,0.8)}{\pgfbox[center,center]{#2}}}
\end{pgfscope}
}

\newcommand{\xpageGiven}[2]{\xpage{#1}{#2}{black}{white}}
\newcommand{\xpageHandwritten}[2]{\xpage{#1}{#2}{black}{lightblue}}
\newcommand{\xpageUserInput}[2]{\xpage{#1}{#2}{black}{lightyellow}}
\newcommand{\xpageUserOutput}[2]{\xpage{#1}{#2}{black}{green}}

\newcommand{\xcodeHandwritten}[2]{\xcode{#1}{#2}{blue}{white}{2pt}}
\newcommand{\xcodeHandwrittenX}[2]{\xcodeX{#1}{#2}{blue}{white}{2pt}}
\newcommand{\xcodeGenerated}[2]{\xcode{#1}{#2}{black}{white}{1pt}}
\newcommand{\xcodeExisting}[2]{\xcode{#1}{#2}{black}{white}{1pt}}

\newcommand{\xmodelGenerated}[2]{\xmodel{#1}{#2}{black}{white}}

\begin{figure}[t]
\center

\begin{pgfpicture}{0cm}{-1.5cm}{15cm}{9cm}
\pgfrect[stroke]{\pgfxy(0,-1.5)}{\pgfxy(15,10)}

\xcodeExisting{\pgfxy(13.5,7.5)}{meta tool}
\xcodeHandwritten{\pgfxy(13.5,6.5)}{\small handcoded}
\xmodelGenerated{\pgfxy(13.5,5.5)}{\small model}
\pgfputat{\pgfxy(13.5,4.8)}{\pgfbox[center,center]{\small(generated code)}}

\pgfputat{\pgfxy(6.5,8.0)}{\pgfbox[center,center]{\small generating}}
\xarrowCreate{\pgfxy(5,7.8)}{\pgfxy(9,7.8)}
\pgfputat{\pgfxy(6.5,7.5)}{\pgfbox[center,center]{\small conceptual(reading)}}
\xarrowRead{\pgfxy(5,7.1)}{\pgfxy(9,7.1)}
\pgfputat{\pgfxy(10.8,8.0)}{\pgfbox[center,center]{\small inheritance}}
\xarrowInherit{\pgfxy(9.5,7.8)}{\pgfxy(12.5,7.8)}
\pgfputat{\pgfxy(11,7.5)}{\pgfbox[center,center]{\small data flow}}
\xarrowData{\pgfxy(9.5,7.1)}{\pgfxy(12.5,7.1)}

\xpageUserInput{\pgfxy(1,2)}{orig.xmi}
\xpageUserOutput{\pgfxy(1,0)}{opt.xmi}
\xarrowData{\pgfxy(1,2)}{\pgfxy(3,1)}
\xarrowData{\pgfxy(3,1)}{\pgfxy(1,0)}

\xpageGiven{\pgfxy(3,7)}{gxl.dtd}
\xarrowInherit{\pgfxy(3,5)}{\pgfxy(3,7)}
\xpageHandwritten{\pgfxy(3,5)}{gxl-driver.dtd}
\xarrowCreate{\pgfxy(3,5)}{\pgfxy(3,3)}
\xcodeExisting{\pgfxy(3,3)}{tdom}
\xarrowCreate{\pgfxy(3,3)}{\pgfxy(3,1)}
\xmodelGenerated{\pgfxy(3,1)}{GXL}

\xcodeHandwrittenX{\pgfxy(5,2)}{Reduce}
\xcodeHandwrittenX{\pgfxy(5,0)}{Expand}
\xarrowData{\pgfxy(3,1.3)}{\pgfxy(7,1.3)}
\xarrowData{\pgfxy(7,0.7)}{\pgfxy(3,0.7)}

\xpageHandwritten{\pgfxy(7,5)}{gxl.umod}
\xarrowRead{\pgfxy(3,7)}{\pgfxy(7,5)}
\xarrowCreate{\pgfxy(7,5)}{\pgfxy(7,3)}
\xcodeExisting{\pgfxy(7,3)}{umod}
\xarrowCreate{\pgfxy(7,3)}{\pgfxy(7,1)}
\xmodelGenerated{\pgfxy(7,1)}{GXL}

\xcodeHandwritten{\pgfxy(9,2)}{Xlat}
\xcodeHandwritten{\pgfxy(9,0)}{Xlat}
\xarrowData{\pgfxy(7,1.3)}{\pgfxy(11,1.3)}
\xarrowData{\pgfxy(11,0.7)}{\pgfxy(7,0.7)}

\xpageHandwritten{\pgfxy(11,5)}{firm.umod}
\xarrowCreate{\pgfxy(11,5)}{\pgfxy(11,3)}
\xcodeExisting{\pgfxy(11,3)}{umod}
\xarrowCreate{\pgfxy(11,3)}{\pgfxy(11,1)}
\xmodelGenerated{\pgfxy(11,1)}{Firm}

\xarrowDataX{\pgfxy(11.7,1.5)}{\pgfxy(13,2.0)}{\pgfxy(13,0.0)}{\pgfxy(11.7,0.5)}
\xcodeHandwrittenX{\pgfxy(13.5,1)}{Optimize}

\end{pgfpicture}

\caption{The processing pipeline for solving the ``Compiler Optimization Task''
with \ensuremath{{}^\textsf{meta\_}}\textsf{tools}{}\label{fig_cot_pipeline}}
\end{figure}

Then this model is transformed into a equivalent \texttt{umod}{}  model,
(see next section for explanation and appendix~\ref{file_gxl_umod} for the source).
The inheritance relation which spans the \texttt{umod}{} model
resemble that from the ``XML~Schema'' version of the GXL definition,
see \cite[xmlschema/xmlschema.html]{GxlHome}, for natural reasons.
The decoders and encoders between both models of GXL
are written manually, and derived from the automatically generated base visitors.
The source is in appendices~\ref{file_gxl_decode_java} and \ref{file_gxl_encode_java}.
The structure of this code
clearly expresses
the inheritance relation of the visited model.

\subsection{The \texttt{umod}{} Model of Firm}

Finally, the data to process is transformed from the GXL  model
into a \texttt{umod}{} model for representing Firm structures.
\texttt{umod}{} is one of the central tools in \ensuremath{{}^\textsf{meta\_}}\textsf{tools}{} for defining computer-internal data models, \cite{mt2011}, \cite{lt2011}.
It takes a mathematical description of a model,
i.e.\ of classes, inheritance relation, types and field structures,
and creates an API which allows to create and process \textsf{JAVA}{} objects
which represent the model elements in a type-safe way.
Esp., it supports the free composition of non-syntactic
data types like sets, sequences and maps, and eliminates the ubiquitous threat
of the \texttt{null} value.
The generated code includes configurable, general purpose
\emph{visitors} and \emph{rewriters},
serving as base classes for user code, as well as dedicated subclasses for
visualization and serialization.
By extending this generated code, user-defined code which
realizes the intended semantics becomes very compact,
cf.~appendices~\ref{file_checker_java} and \ref{file_constantfolding_java}.
The \texttt{umod}{} source is contained in appendix~\ref{file_firm_umod}.
Its design closely follows \cite[table~1]{FirmArticle}  and
\cite[table~2.1]{TrBoLi-99}.

A program graph in Firm is a kind of ``inverted'' program control flow
graph: Every node points to its predecessors which have to be evaluated
in advance.
This structure corresponds to those of pure expressions
and mathematical terms.
Consequently, in the \texttt{umod}{} version each program graph is identified and
represented \emph{solely by its end node}, since from this every
other node and  block is reachable.

Nodes and edges are \emph{typed}, from a small fixed set of
\first{node types} and \first{edge types}.
The latter are called ``modes'' for historical reasons.
Every node class defines for its instances the allowed combinations
of types for the incoming and the outgoing edges.

While the GXL model contains the Firm edges as reified, the \texttt{umod}{} version
reduces them to unidirectional references.
As a consequence, all backward information necessary during processing
must (and always can!) be locally memorized.
This elegant and efficient
technique has already been proposed by \cite[section~2.2.2.8]{TrBoLi-99}.
It is only possible because in general
no role information or sequential order is imposed on \emph{incoming} edges.

The drawings in \cite{TrBoLi-99} introduce ``sockets'', which impose
a partitioning of the incoming and on the outgoing side of each node.
These sockets are required only on the conceptual
level, not in the implementation,
because this partitioning  is uniquely determined by the \emph{type}
of the connected edges.
This type, in turn, is uniquely determined by the ``role'' of the definition of the
object's  field which contains the reference which realizes the edge.

Whenever a definition line in \cite[table~1]{FirmArticle}  or
\cite[table~2.1]{TrBoLi-99} mentions two different letters on the right
side of the arrow, then an instance of this node type can be the end point
of edges of two different edge types. In the \texttt{umod}{} model, edge types
and node roles are realized by \textsf{JAVA}{}  ``interfaces''.
On the conceptual level,
e.g.\ each node of type ``Start'' can be the target of a
``data flow edge'' and of a ``control flow edge''.
So the corresponding \texttt{umod}{} class
implements the \texttt{Numeric} and the \texttt{ControlFlow}
interface, and a reference to an instance object of this class
can be held by a field of \texttt{Numeric} and of  \texttt{ControlFlow} type.

The only node definitions which break this concept are those in which
the same edge type appears more than once on the right side of the arrow,
representing output of the same type, but with
different roles. This can be seen as
a \emph{sequential order} on incoming edges.
In this case, the proposal from \cite[section~2.2.2.8]{TrBoLi-99} is followed:
The node is the target of many edges, but not directly
from a consuming node, but from a special \first{projection node},
inserted to select one component of the incoming tuple.
In the \texttt{umod}{} model there exist two such node classes, \texttt{Proj\_X}
and \texttt{Proj\_N}, for control flow and for data flow.

The sequential order of the \emph{outgoing} edges is realized most
naturally by the distinction
of the fields which contain the references, and  by special container classes
like lists and maps for containing more than one outgoing edge.

\subsection{Consistency Checks on the Firm Model}

Both the textual description of the task in
\cite[section~3 ``Getting started. Verifier'']{Coptim_data}
and the Firm documentation in
\cite[section~2.1.3 ``Further restrictions to Firm Graphs'']{TrBoLi-99},
suggest to check certain consistency properties.
In our approach, some of these are already guaranteed ``by construction'',
i.e.\ by the algorithm  which translates from the GXL into the Firm \texttt{umod}{}
model, see appendix~\ref{file_gxl2firm_java}.
Further properties are checked explicitly be a dedicated
\texttt{Checker} class, see appendix~\ref{file_checker_java}.
Others are guaranteed implicitly, by the structure of the \texttt{umod}{} model.
Table~\ref{tabChecks} lists these properties (just by a few keywords
for the reader familiar with both documents) and indicates which part of
our solution does cover them.

The \texttt{Checker} class is derived from the generated visitor class,
but indirectly, because we have to deal with cycles explicitly.
We assume that \emph{the only cycles} in the
graph are made by blocks and their final ``Jump/Cond''  nodes.
The class \texttt{VisitBlocksOnce} cuts these cycles. It will
be compiled as a static inner class in \texttt{Firm.java}, since
it is contained as a \textsf{JAVA}{} escape directly in the \texttt{umod}{} source,
see appendix~\ref{file_firm_umod}.

\begin{table}[t]

\begin{tabular}{|p{0.7\textwidth}*4{|c}|}
\hline
\multicolumn{5}{|l|}{
\textit{The property below is currently \ldots}}\\

\cline{5-5}

\multicolumn{4}{|r|}{
\textit{\ldots checked on the fly by the translation
algorithm in}
               \texttt{Gxl2Firm} =} &
\multicolumn{1}{|c|}{T}
\\
\cline{1-5}

\multicolumn{3}{|r|}{\textit{\ldots checked explicitly in }
              \texttt{Checker} =} &
\multicolumn{1}{|c|}{C}&
\multicolumn{1}{l}{}\\
\cline{1-4}

\multicolumn{2}{|r|}{\textit{\ldots guaranteed implicitly, by
the properties of}
                            \texttt{Firm.umod} =}&
\multicolumn{1}{|c|}{i}&
\multicolumn{2}{l}{}\\
\cline{1-3}

\multicolumn{1}{|r|}{\textit{\ldots currently still unchecked,
but urgently required!} = }&
\multicolumn{1}{|c|}{?}&
\multicolumn{3}{l}{}\\

\hline
\hline
only one start node                 &  &  &  &T \\
\hline
start node only node in block       &  &  &  &  \\
\hline
start block no predecs              &  &  &  &  \\
\hline
only one end node                   &  &i &  &T \\
\hline
end node only node in block         &  &  &  &  \\
\hline
end block has no successors         &  &  &C &  \\
\hline
all blocks reach end node            &  &i &  &  \\
\hline
start node reaches all blocks       &? &  &  &  \\
\hline
inter-block graphs are acyclic      &? &  &  &  \\
\hline
phi node predecs $\equiv$ block predecs
                                    &  &  &C &  \\
\hline
inter-block edge requires corresponding control flow edge
                                    &? &  &  &  \\
\hline
dto., w.r.t.\ phi nodes and predecessor numbering
                                    &? &  &  &  \\
\hline
\hline
edge from node to block is on position ``-1''
                                    &  &  &  &T \\
\hline
all constants contained in start block
                                    &  &  &  &  \\
\hline
\hline
each block (w/o end block) has one control flow node
                                    &  &  &C &  \\
\hline

\end{tabular}
\caption{Consistency checks and their implementation\label{tabChecks}.
}
\end{table}

\subsection{Optimizing Transformations on the Firm Model}

The code of the class \texttt{ConstantFolding}, see
appendix~\ref{file_constantfolding_java},
performs simple constant folding in arithmetic operations,
and the resulting control flow simplification.
Most of the transformation-performing classes are
derived from the generated \first{rewriter} code, a framework for copy-on-write updating of model data.
Similar to a visitor, this generated class contains an
generated \texttt{action(C)} method for every model element class.
This method creates a clone of the visited object, and calls
the method \texttt{rewriteFields(C clone)}.
The \emph{generated version} of \texttt{rewriteFields()} first
calls \texttt{rewriteFields((D) clone)}, when \texttt{D} is the superclass of \texttt{C}.
Then it initiates the rewriting process recursively on
each field \texttt{f} defined on the level of \texttt{C} by calling
\texttt{rewrite(clone.get\_f())}.
When this returns,
(1) it  compares the result of rewriting with  the original, for detecting
changes, (2) stores the result into
the field of the clone, and (3) re-adjusts its own result value,
which at the beginning pointed to the original, to
refer to the clone, whenever such a change of a field value
has been detected.

The generated methods are now partly overridden by user defined, specialized
methods:

The method \texttt{rewriteFields(Binary)} will be called
on each binary numeric node in the model.
Like the generated version, it first
calls the rewrite process bottom-up on all sub-objects referred to.
Additionally it
\emph{substitutes}
the result by a new constant, where
appropriate.

User-defined \texttt{action(Proj\_X)} looks whether the selecting
value of the \texttt{Cond} is a constant after rewriting.
In this case it substitutes a constant \texttt{Jmp} or an empty list,
reflecting whether the index number of the \texttt{Proj\_X} is equal to
the selecting constant.
References to control flow nodes can only occur in the
\texttt{.predecs} map of a block. In the context of such an aggregate,
a single reference
can be re-written to a multiplicity of references, or to the empty list.
This decrease in alternatives is in turn checked by
\texttt{action(Phi)}, which may replace the visited object
by its single surviving input.

\section{Conclusion}

We have presented a solution for the ``Compiler Optimization Task''
from the ``\textsf{Transformation Tool Contest 2011}'' by generic programming, i.e.\ by automated generation
of model source code, as supported by the \ensuremath{{}^\textsf{meta\_}}\textsf{tools}{} toolkit.
During the last decade,
generated source code of this kind has been employed in different
software projects, serving as the starting point for very different styles of
of \textsf{JAVA}{} programming.
This shows that the mental model of ``coding as model transformation'' is
adequate for developing general purpose mid-scale software architectures.

The model definitions in appendices~\ref{file_gxl_umod} and
\ref{file_firm_umod} show the compactness of model definitions in our framework,
compared to the generated API doc at \cite[ttc2011/apidoc]{ourShare}.

The sources in appendices~\ref{file_gxl_decode_java}, \ref{file_gxl_encode_java},
\ref{file_gxl2firm_java}, and
\ref{file_firm2gxl_java} show how the structure of the model
organizes the transformation code in a natural and readable way.

The code in appendices~\ref{file_checker_java} and
\ref{file_constantfolding_java} shows how an intended transformation is
broken down into simple steps, and then combined in a pipeline.

The main \emph{advantages}
of this kind of model code generation are, in our experience:

\begin{enumerate}
\item
After the initial step, the generation of sources by \ensuremath{{}^\textsf{meta\_}}\textsf{tools}, no
further dedicated tools are required, and no additional programming
language front-end has to be learned.
\item
Nearly everything (beside some primitive run-time functions) is visible to the
programmer, nothing mystic happens ``behind the scene''.
\item
Many properties of a correct model instance are checked automatically
by the generated constructors and setter methods, or mapped to the
type system of the hosting language, see table~\ref{tabChecks} above.
\item
Visitor and rewriter based code is seamlessly integrated
with all other handwritten code: Both kinds of code can control, call
and parameterize each other, freely and recursively.
For this, only the native constructs from the hosting language are required.
\end{enumerate}

The special problems and \emph{disadvantages}:
\begin{enumerate}
\item
The first disadvantage is caused by the same fact as the preceding advantage:
Due to the integration of generated and hand-written code,
the consistency and integrity
of the model's internal state variables can only be guaranteed
in the limits imposed by the hosting language. E.g., in case of \textsf{JAVA}, putting
both kinds of code into the same ``package'' would allow the programmer
to clutter anything, with unforeseeable effects.
\item
The design of the model definition is crucial: All benefits
mentioned above are only fully enjoyable with an adequate
design of the  \texttt{.umod} source.
E.g., in case of \texttt{Firm.umod}:
whether the different numeric
data types shall be mapped to subclasses of `\texttt{Numeric}'',
--- whether all three interface types are really required,
--- whether one or more ``\texttt{Proj\_<>}'' nodes are sensible,
--- all these questions require some experience, or even some experiments.
\item
The visitor and rewriter API has to be understood and the protocol has
to be respected by the programmer. Otherwise effects can occur which seem
``mystical'' indeed.
\item
Due to the freedom of calling any code,
inferring properties of the transformation system
as a whole, like termination, completeness, confluence, may become
infeasible, or at least more restricted than in case of
a dedicated model transformation tool.
But the authors' work on visitor optimization \cite{lt2011} showed that
even in the open environment of an imperative hosting language
some analysis is possible.
\end{enumerate}

\bibliographystyle{eptcs}

redpajama_set_name: RedPajamaArXiv


text:
module Napybara
  class Selector < Struct.new(:child_element_selector, :record_selector, :record)
    METHOD_NAME_REGEX = /\{(\w+)\}/
    def method_name
      record_selector.match(METHOD_NAME_REGEX)[1]
    end

    def record_id
      record && record.public_send(method_name)
    end

    def to_s
      if record
        record_selector.gsub(METHOD_NAME_REGEX, record_id.to_s)
      else
        child_element_selector
      end
    end
  end
end

redpajama_set_name: RedPajamaGithub


For those of you who are interested the Auburn University Marching Honor Band, the application is now open! The date is Saturday, Sept. 12 and the opponent is Jacksonville State University. The deadline to apply is Friday, Aug. 14. Here is a link to the web site and application form. It is all done online.
Remember to be practicing on the show music. It's all posted online on Edmodo.


We will be having a couple of events going on this Summer that we're excited about!
Our first event will be a tour of the SAC Federal Credit Union headquarters and The Nebraska Brewing Company's new production building, followed by dinner at Nebraska Brewing Company. The cost for this event is $15.00. Please RSVP for this event no later than July 7, 2014 by emailing or calling Lauren at lauren@midwestlabs.com or 402-334-7770.
Our second event is Celebrate Ag Night at Werner Park with the Storm Chaser's. This game is on Wednesday, July 30, 2014 at 7:00 PM. Wednesdays are "Weiner Wednesdays" where you can enjoy a hot dog for only a penny! You can purchase tickets to this game for $7.00 on our website under the Pay tab, or you can mail a check to Midwest Laboratories at 13611 B St, Omaha, NE 68144. We need all tickets to be purchased by June 30, 2014 at the very latest. We hope to see you there!


text:
Do you have an instagram or Twitter account?
Instagram UK / Europe:
https://www.instagram.com/tonicstudios/
Instagram USA:
https://www.instagram.com/tonicstudiosusa/
https://twitter.com/tonicstudios
Do you have a YouTube channel?
Do you have a Facebook Page / Group?
Do you have a Blog?

redpajama_set_name: RedPajamaCommonCrawl


Directly overlooking Mackie Green is this stunning home which has been extensively modernised, extended and improved to create a delightful family home worthy of your attention. The hub of the home is an open plan kitchen/dining room with modern units, integrated appliances and patio doors overlooking the rear garden and woodland beyond. Entering the property there is an attractive entrance with wood flooring leading to a separate living room with feature bay and full height windows giving views of the Green. On the first floor there are two spacious double bedrooms along with a larger than usual family bathroom with a modern suite as well as a fourth bedroom currently used as an office. The property has been extended within the loft to provide a large dual aspect master bedroom with a built-in storage space and a contemporary themed en-suite shower room. Outside there is off street parking to the front for two/three cars with a shared driveway giving access to a garage with an up-and-over door. The rear garden has a delightful patio and an easy to maintain lawn whilst backing onto woodland. Full details of all the improvements made are available on request. Viewing highly recommended, exclusive to Spencer & Leigh.


text:
Hack: How to spy on a 3-D printer
Smartphones can figure out what a printer makes by analyzing the noise and energy it emits
A thief with bad intentions might use a smartphone to spy on a 3-D printer. That phone would listen for the sounds (acoustic waves) and electromagnetic energy emitted by a printer while it's working.
Wenyao Xu
By Stephen Ornes
Your 3-D printer is leaking, but not in ways you can see. It leaks sounds and energy. That's not a problem — unless you want to keep your creation a secret. In that case, it's time to get serious about security. Computer scientists have now shown that hackers can eavesdrop on 3-D printers — and then copy what they made. All it takes is your average smartphone.
As 3-D printing becomes more widespread, thieves will find new ways to steal original designs, worries Wenyao Xu. This computer scientist at the State University of New York in Buffalo led the new work. Right now, 3-D printing technology is still in the early stages. But before long, it could be used to print anything from spare parts for appliances to human organs. Large printers already have been used to print an entire house. Manufacturers could use such printers to create parts for airplanes. And it is creations like this where security becomes an issue. A hacker who steals a wing design might be able to change it — and sabotage the plane, for example.
"We need to prevent these attacks," Xu says.
This kind of printing is also known as additive manufacturing. Its use has been skyrocketing in recent years as costs for the hardware and printing "ink" have dropped.
An ordinary computer printer creates a flat version of a document by putting ink on paper. A 3-D printer works in a similar way. Most 3-D printed objects lay down one thin layer at a time. Its "ink" is what really distinguishes it. The printer's nozzle deposits a thin layer of liquid plastic or metal, which solidifies or hardens as it cools. By building up layer after layer of the ink, the machine creates a solid, three-dimensional object.
Explainer: What is 3-D printing?
To hack these printers, a spy needs to merely "listen" to the noise and energy the machine emits, including the magnetic fields that vary as it works. Both sound and electromagnetic energy travel as waves. By tapping into these waves, Xu says, a spy could identify the shape of what was being printed. This would allow someone to steal a design without ever seeing the original.
The human ear isn't sensitive enough to do this. So Xu used a smartphone. Today's average smartphone contains powerful microphones and other sensors. They can record the sound and changing magnetic fields produced as a 3-D printer works, Xu's team showed.
The scientists used a two-step process to turn a smartphone into a spying device. First came the training phase. During this step, they used the phone to collect data as a printer printed. At the same time, they noted the up-and-down and side-to-side movements of the nozzle. By comparing the two sets of data, they could match changes in the sound or magnetic fields that reflected the movement of the nozzle. The scientists built these connections into a computer program.
Then came the testing. Using what they'd learned in the first step, the researchers had their computer program analyze data as something different was printed. A smartphone had recorded the sounds and magnetic fields during the process. The "trained" program successfully translated the new data into nozzle movements. And they revealed what had been printed.
Their inspiration
This type of data theft is known as a "side-channel attack." It steals information by spying on a machine, rather than by swiping an object or hacking the computer program used to make it. Side-channel attacks in the new tests spied on a printer's sounds and magnetic energy.
Scientists used smartphones to eavesdrop on a 3D printer. Based on their spying, they were able to create a copy (lower) of the original printed object (above). In their test, the object was a key.Wenyao Xu
Xu's group used data stolen from a working printer by their phone to copy an abstract but complex shape. It looked like a key. And the copy proved nearly identical to the original. Currently, this side-channel data can be used to print an object with 90 percent accuracy, Xu's team showed.
Xu says this hack was inspired by the sounds he hears around him. People learn a lot by listening. "If we hear someone eating chips, we know they're eating chips," says Xu. "If someone is drinking water, we know they're drinking." So it goes with printing. His group suspected they could tell a lot about what a 3-D printer in the lab was printing, simply by listening to it. Then they set about testing that suspicion.
The group presented their results at a scientific conference in Vienna, Austria, on October 26.
Others have been concerned
Xu isn't the first scientist to probe side-channel attacks on 3-D printers. Scientists at the University of California, Irvine, published an April 2016 analysis of acoustic (sound-based) side-channel attacks. Computer scientist Mohammad Al Faruque led those studies. His team has now identified several ways someone could eavesdrop on a 3-D printer, he says. Besides sound and magnetic fields, a spy could use data on heat or vibrations or power. The more sensors a spy uses, the more accurate their stolen data will be — and the more valuable the theft, Al Faruque points out.
Al Faruque says he's glad researchers like Xu are expanding on his original work. "I'm happy that we discovered it and that people have started doing more research," he says. "It is very important."
Both Xu and Al Faruque say they're now working on ways to beef up the security for 3-D printers. A printer might be shielded to avoid leakage, for example. Or extra noise might be added to the environment to confuse any listening "ear." Ultimately, both researchers have the same goal.
"We don't want to steal ideas," says Xu. "We want to protect them."
This is one in a series presenting news on technology and innovation, made possible with generous support from the Lemelson Foundation.
acoustics The science of sounds and hearing.
3-D printing A means of producing physical items — including toys, foods and even body parts — using a machine that takes instructions from a computer program. That program tells the machine how and where to lay down successive layers of some raw material (the "ink") to create a three-dimensional object.
abstract Something that exists as an idea or thought but not concrete or tangible (touchable) in the real world. Beauty, love and memory are abstractions; cars, trees and water are concrete and tangible.
additive manufacturing This process of creating solid objects by depositing material, micro-layer by micro-layer (or slice by slice) from the bottom up. It's an explanation for how 3-D printing works.
computer program A set of instructions that a computer uses to perform some analysis or computation. The writing of these instructions is known as computer programming.
data Facts and/or statistics collected together for analysis but not necessarily organized in a way that give them meaning. For digital information (the type stored by computers), those data typically are numbers stored in a binary code, portrayed as strings of zeros and ones.
electromagnetic radiation Energy that travels as a wave, including forms of light. Electromagnetic radiation is typically classified by its wavelength. The spectrum of electromagnetic radiation ranges from radio waves to gamma rays. It also includes microwaves and visible light.
field (in physics) A region in space where certain physical effects operate, such as magnetism (created by a magnetic field), gravity (by a gravitational field) or mass (by a Higgs field).
hack (in computing) To get unapproved — often illegal — access to a computer, usually to steal or alter data or files.
magnetic field An area of influence created by certain materials, called magnets, or by the movement of electric charges.
manufacturing The making of things, usually on a large scale.
nozzle A round spout or slot at the end of a pipe, hose or tube. Nozzles are typically used to control the flow of a jet of high-pressure liquid or gas.
sensor A device that picks up information on physical or chemical conditions — such as temperature, barometric pressure, salinity, humidity, pH, light intensity or radiation — and stores or broadcasts that information. Scientists and engineers often rely on sensors to inform them of conditions that may change over time or that exist far from where a researcher can measure them directly.
side channel attack (in computing) To acquire indirect information (such as heat, sound, radiation) from a system as a form of spying. Later, these data may be analyzed collectively to piece together the function of the system from which they were acquired.
smartphone A cell (or mobile) phone that can perform a host of functions, including search for information on the Internet.
technology The application of scientific knowledge for practical purposes, especially in industry — or the devices, processes and systems that result from those efforts.
wave A disturbance or variation that travels through space and matter in a regular, oscillating fashion.
Meeting: W. Yu et al. My smartphone knows what you print: Exploring smartphone-based side-channel attacks against 3D printers. 23rd ACM Conference on Computer and Communications Security. October 2016. Vienna, Austria. doi: 10.1145/2976749.2978300.
Meeting: M.A. Al Faruque et al. Acoustic side-channel attacks on additive manufacturing systems. 2016 ACM/IEEE 7th International Conference on Cyber-Physical Systems (ICCPS), April 11-14, 2016. Vienna, Austria. doi: 10.1109/ICCPS.2016.7479068.
About Stephen Ornes
Stephen Ornes lives in Nashville, Tenn., and his family has two rabbits, six chickens and a cat. He has written for Science News for Students since 2008 on topics including lightning, feral pigs, big bubbles and space junk.
'Print' almost anything
By Stephen Ornes April 28, 2013
How to print shape shifters
By Stephen Ornes October 2, 2015
Fashioning inks to 'print' tissues
More Stories from Science News for Students on Tech
Like Magneto? Microcrystals give magnets superpower over living cells
By Jeremy Rehm December 17, 2019
Drones help scientists weigh whales at sea
A new spin on lab-grown meat
By Carolyn Wilke December 3, 2019
Weird little fish inspires the development of super-grippers
By Sid Perkins November 26, 2019
Sunflower-like rods could boost efficiency of solar collectors
By Sofie Bates November 13, 2019