text:
March / April 2016 Issue
"Renewal"
Center Field: Art in the Middle
The Sensation of Un-thought Thoughts: An Interview with Simone Forti
by Caroline Picard | Mar 1, 2016
"Thinking with the Body," a workshop with Simone Forti, at Northwestern University, hosted by the Mary & Leigh Block Museum of Art, in relation to the exhibition A Feast of Astonishments: Charlotte Moorman and the Avant-Garde, 1960s–1980s. The workshops were hosted in partnership with Northwestern's Departments of Art History, Art Theory & Practice, and Performance Studies; the Dance Program; Mellon Dance Studies; and the Poetry & Poetics Colloquium. (Simone Forti)
During a talk organized in conjunction with the exhibition A Feast of Astonishments: Charlotte Moorman and the Avant-Garde, 1960s–1980s, at Northwestern University's Mary and Leigh Block Museum of Art, Simone Forti touched on the breadth of her work as a writer, dancer, choreographer, and teacher. As she spoke, students performed one of Forti's seminal works, Huddle and read excerpted compositions made during a two-day, movement-and-creative-writing workshop. The combined effect of her conversation and this tableau captured the fluidity of Forti's career, as she flowed effortlessly between spoken language, embodied movement, and introspection. The interview below followed Forti's presentation; the accompanying images feature students who participated in the workshop.
Caroline Picard: During your talk, you referred to Anna Halprin as your mother and John Cage as your father. I know that you've also explored a lot of animal movement in your work; does that interest also come from Cage and Halprin?
Simone Forti: In the 1950s, Anna was teaching dance improvisation, always with a point of reference. She had us observe a lot of movements and forms in nature and improvise to explore aspects of what we had observed. My movement vocabulary in the 1970s was very much based on my observations of animals in the zoo, both their gaits and the games some animals invented for passing time in their limited environment. I came to see movement play as a root of dance behavior.
CP: What role does architecture play in that scheme? For instance, you described working primarily on Halprin's outdoor deck in Marin County, north of San Francisco. I'm curious to know how that setting might have contrasted with dance or performance movements inspired by New York City.
SF: I once read a translated Chinese poem, in which I found the line, "I go to the garden to open my heart." Dancing on Anna's deck in the woods brought a lot of joy. And I've sometimes thought of the way we moved as being akin to how the abstract expressionists painted. When my then husband, Robert Morris, and I moved to New York, I remarked on how everything my gaze fell on had been designed by people. [The world] felt like a house of mirrors. Through Robert Dunn's composition class at the Merce Cunningham studio, I became acquainted with the work and the thinking of John Cage. And I was able to think up the Dance Constructions, which gave me a feeling of my simple weight and mass and non-stylized movement.
"Thinking with the Body," a workshop with Simone Forti, at Northwestern University, hosted by the Mary & Leigh Block Museum of Art, in relation to the exhibition A Feast of Astonishments: Charlotte Moorman and the Avant-Garde, 1960s–1980s. The workshops were hosted in partnership with Northwestern's Departments of Art History, Art Theory & Practice, and Performance Studies; the Dance Program; Mellon Dance Studies; and the Poetry & Poetics Colloquium.
Everything my gaze fell on had been designed by people. The world felt like a house of mirrors
CP: Much of the Block Museum's exhibition captures the atmosphere of New York avant-garde theater and music festivals. How did those events inform your own practice?
SF: I lived and worked in a large community of artists and took it for granted that I too was making art. So the avant-garde festivals were part of my world but not a very close part. During the span of the festivals, I was closer to the community that formed around the Happenings (with people like Robert Whitman, Claes Oldenburg, Jim Dine, and Allan Kaprow) and the dance community (including Yvonne Rainer, Steve Paxton, and Trisha Brown) than I was to the Fluxus group. I was also close to Jackson Mac Low and La Monte Young. I was close to Nam June Paik primarily because we lived in the same co-op. And he later invited me to participate in three of his video operas.
[In the exhibition,] it's fun to see us all so young, to see the look of those days. Above all, it is wonderful to see images of Charlotte doing amazing things. Of course, I was aware of her in those days but not so aware of the many things she had done.
CP: Does that New York avant-garde culture of artists relate to your statement, "We are in a landscape now, taking turns changing the landscape"? I have a sense you are interested in looking at the interrelationship of mind and body, that thought and movement always necessarily correspond. It occurred to me that groups of people working together would make another corresponding environment or landscape.
SF: That's wonderful. The verbal mind and body mind do work together; it's something we all experience but have difficulty finding words to explain. I like including people working together in that cycle of influences, of course.
CP: Handbook in Motion is a collection of your writings that presents presumably natural moments, like a polar bear on an ice floe, with seemingly equivalent moments, in which a man in pajamas walks up to a tree and changes his posture. You write lush descriptions of Woodstock as a landscape, populated not just by people but also by supposedly inanimate things: "Objects, though moved by people, seemed to follow their own path, to be part of the flow." Your work emerges within this assembly, whether as collaborative performance-based games or descriptions of works. It seems like you are suggesting that one can embody a large view—of collective participation, for instance—while exercising minute and very specific movements in a single instant.
SF: I have the impression that—even as I try not to think but to experience a microsecond of being between thoughts—I still sense un-thought thoughts, ready to burst into structured thought. I think we're aware of a lot of things at once. I like to cut back and forth between my point of focus and the mosaic of my peripheral awareness. I cultivate this and work with it in my improvised moving-and-speaking News Animation performances. I find these jumps of focus a lot easier to do while I'm freely moving; maybe the movement is a kind of distraction. When I lived in Vermont, I loved working in my kitchen garden. I learned that worms in the earth stay clean and herbs tend to invade other herbs' territories. If during a News Animation performance—maybe while twisting together how different cultures have different views of their history and of events in the present—I place my hand on the floor, that contact suddenly recalls the feel of bumping into a potato in the ground. Moving and putting words to observations, questions, anguish, and humor is a way of paying attention and of keeping one's thoughts fluid and responsive.
I still sense un-thought thoughts, ready to burst into structured thought. I think we're aware of a lot of things at once.
CP: Can you talk about Saburo Murakami's 1956 piece, Sakuhin (Tsuka) [Work (Paper Break Through)], particularly the role of built-in resistance? I feel like Huddle incorporates a similar functional resistance: the figures within the group have to hold their positions in order to allow another peer to climb over them. Similarly the piece Slant Board uses the tension between the incline of the ground, gravity, and a body interacting with ropes.
SF: Resistance. Like getting your teeth into good dark bread and tearing off a hunk of it. When I was a kid I loved wrestling. Huddle and Slant Board [are psychologically satisfying in that way]. When I arrived in New York, I felt the need to push against something solid. I had heard that John Cage wanted to be able to hear sound purely, without the distraction of stylistic expectations, and that his use of chance operations was in part a device that surprised him and let him hear a sound in and of itself. From that, I learned that if you need something, you can create a situation that lets you fill that need.
CP: But how do you identify a need so that others can participate in its fulfillment?
SF: When I made the Dance Constructions, I don't think I could have articulated what I needed or that I knew that these pieces could help me. I think that a lot of my creative decisions came from my body: "Ugh. Me climb." What I say about it now is in retrospect and should be taken with a grain of salt. But I find it interesting that, about the time I moved from improvising (which I eventually returned to and which has been my primary mode over the years) to the more conceptual Dance Constructions, abstract-expressionist painting was less in vogue as minimalism came into focus.
CP: What does it feel like, to return to your early work?
SF: I mainly see young people learning to perform the Dance Constructions. They find the work meaningful, and that's joyful to me. I can stand aside and see that the pieces are beautiful. There's something solid about them. I feel that a young artist can get a footing against them and push off into new territory.
The Dance Constructions have been influential in both the art and the dance world, and I trust that they continue to be valuable by engaging us in a discourse. Each is a separate idea. For the viewer, each allows us to see the direct beauty of people simply in action. For the performer, there is the enjoyment of participating with others in an action that is simple and direct while being part of a whole with complex implications. Not all of the Dance Constructions work with resistance. In Platforms, two performers lie under boxes and whistle a tone on each exhale.
CP: Breath is such an intangible yet omnipresent activity. I love the way it centers one's attention, on the present.
SF: I think of Platforms as a domestic piece. I see the two performers as lovers, asleep, each in their own dream world yet hearing each other breathe.
Caroline Picard
Caroline Picard is an artist, writer, publisher, and curator who explores the figure in relation to systems of power through on-going investigations of inter-species borders, how the human relates to its environment and what possibilities might emerge from upturning an anthropocentric world view. Her writing has appeared in publications like ArtForum (critic's picks), Artslant, Flash Art International, Hyperallergic, Paper Monument, and The Seen. In 2014 she was the Curatorial Fellow at La Box, ENSA in France, and became a member of the SYNAPSE International Curators' Network of the Haus der Kulturen der Welt in Berlin in 2015. She is the Executive Director of The Green Lantern Press—a nonprofit publishing house and art producer in operation since 2005—and Co-Director of Sector 2337, a hybrid artspace/bar/bookstore in Chicago. www.sector2337.com.
Mary & Leigh Block Museum of Art
0 Comments | Reply


Amazing Dentistry for kids and all!
Took my three year old daughter and she had the most caring, gentle and nurturing assistant I've ever met. Noticed many clients walking out smiling and looking forward to their next appt. Highly recommend them to kids/parents and anyone one looking for quality and humane dental experience! You won't be treated like a chart here.
From the moment I walk into the office, I feel welcomed by the receptionists. When you get a teeth cleaning, you know you've gotten the works. As for Dr. Tadah, he always provides excellent care, and he goes beyond making sure his patients are completely satisfied. I just love this place!
My kids look forward to all their scheduled appointments. They compete for their end results, which so far has been positive for both - zero cavities!!
The best dental place I have ever been!!
All staff is awesome. The service, attention, detail to work and to explanation of procedure. Everything is clearly explained and atmosphere is great. I definitely recommend Redlands family dental service and orthodontics.
The doctor and his staff are amazing! !!! Highly recommend this dental office to everyone.
By far the best dentist I've ever had, and the entire staff is extremely friendly and competent. This dentist is very smart, skilled at his craft and compassionate. I used to go years between dental visits, as they were so uncomfortable, but now I go every six months with good results, no hassle, every time.
Redlands Family Dental center specializes in Cosmetic and General Dentistry, the art of perfecting your smile.
The most up-to-date materials and techniques are used in their dedication to renewing and creating beautiful, healthy smiles. With every visit to the office you will discover an atmosphere that is relaxing and comfortable.
We are committed to providing the highest standards of quality and care to our patients.
It is our hope that by dedicating our office to the care of the apprehensive dental patient, we can help patients who have never before been comfortable in the dental chair. We can help patients gain the ease and confidence to achieve not only complete dental health, but beautiful smiles as well.
Our first priority is always to provide relief for patients in pain. We understand that giving the patient a comfortable experience in the dental chair will keep them coming back.
We recommend that your first visit be a consultation appointment, so that we can best understand your individual needs as a patient. Patient satisfaction depends on good communication with the doctor. The patient's satisfaction is our primary concern. If we have overlooked anything that could make your visits easier or more comfortable, please let us know.


REDBOOK assembled a team of industry pros and busy moms to test hundreds of new beauty products. These are the best beauty products of 2012 and the winners of our coveted MVP Awards.
REDBOOK assembled a crack team of industry pros and busy moms to test hundreds of new beauty products. Their lips, lashes, and noses are still recovering (49 perfumes is nothing to sniff at!), but it was worth it to find the best beauty products of 2012.
Industry pros and REDBOOK readers tested the top products of 2012. These are their absolute faves.
"It has a beautiful, velvety feel, a touch of shine, and a slim tip that made it a cinch to swipe on," said makeup artist Laura Geller. Her fave shade was Golden Dragon, a lush crimson.
"This made my skin look flawless," said dermatologist Phoebe Lu. Plus, "it's free of oil and fragrance, so it's safe for both acne-prone and sensitive skin."
"It's unbelievably silky and gave my skin a gorgeous, realistic glow that didn't look at all 'powdered,'" raved dermatologist Diane Berson of this finely milled, universally flatting formula with light-reflecting pigments. The jumbo-size jar lasts for months!
Our judges went buh-nanas for this formula. "It thickens, lengthens, and has a blueish tint to illuminate the whites of the eyes," Geller said. Spa owner Cindy Barshop raved: "My eyes looked bigger and brighter."
Oil-free, with a vitamin C derivative to brighten skin over time? Shazam! "It made my skin look so luminous," said makeup artist Sonia Kashuk. Berson added, "It really diminished the appearance of pores."
"I felt the healing effects immediately," said hair colorist Sharon Dorram of this balm, which has cupuaçu butter and passionflower-seed oil in it.
"You can really see the color on your lips, and I loved the conditioning feel," said makeup artist Kimara Ahnert.
"I hate carrying around a lot of products, so I loved the two-in-one packaging," said hair colorist Louise O'Connor. (The luminizer is in the tube and the cream blush is hidden in the cap.) "The colors were soft and healthy-looking — especially with the highlighter dabbed on top."
"The color lasted all day and stayed shiny for hours," said hair colorist Gina Gilbert, who was crazy about the texture: "I loved that it was so creamy, not sticky."
"The silky formula is easy to blend, but doesn't budge once it sets," said Ahnert of this ultra-pigmented cream shadow. Her must-get shade? Illusoire (right). "It's beautiful swished all over the lids for a shimmering, smoky effect."
"Some bronzers are too red or dark, but this golden color looked so natural," said hairstylist Jennifer Lawrence of this hydrating, one-shade-fits-all find.
It's thick enough to hide zombie eyes and comes with a salicylic-acid gel to shrink zits. "Total lifesaver!" said REDBOOK deputy editor Jennifer Tung.
"The skinny little points made these super-easy to put on," said Lisa Price, founder and president of Carol's Daughter, of this set of black, gray, and silver mechanical pencils.
"This orange-y red isn't flashy, and it suits all skin tones because it has yellow and pink undertones," explained manicurist Roxanne Valinoti.
"It goes on smoothly and is the perfect amount of coverage for everyday," said our celeb judge, Ali Wentworth. And as dermatologist Macrene Alexiades-Armenakas pointed out, "It has peptides to boost collagen production and hyaluronic acid to plump skin."
A royal-flush: "It looks almost crazy-bright in the pot, but it goes on sheer and gives the prettiest, glowiest effect," said REDBOOK executive editor Meredith Rollins.
"Sophisticated and chic," said mononymed manicurist Elle of this glossy, sandy beige. "My celebrity clients loved it, and I used it at a few fashion shows, where it worked with all kinds of clothes. Nice!"
"It evenly distributes heat, so it won't rob hair of moisture," Dorram said.
This heat-activated serum, which contains frizz-calming Brazilian-nut oil, hit all the high marks. "It made my hair softer, shinier, and smoother," Downie said. "And it really moisturized."
"The fine mist is not at all greasy," said hairstylist Tippi Shorter.
"My new secret weapon!" Dorram declared of this 100-percent-vegan wonder. "It moisturized without creating buildup."
It pumps up strands, strengthens them with keratin, and smells insanely good. "It gave my hair just the right amount of fullness without making me look like a crazy person," says Falik. "With no crunchiness!"
Everyone — and every hair texture — took a shine to these formulas. "They moisturized my fine hair without weighing it down," O'Connor said. Gilbert, who has thick hair, added, "I loved the creamy textures and scents."
Lawrence fell hard for the alcohol-free formula: "It tamed frizz, added shine, and kept my waves bouncy."
"Just one drop defined my curls beautifully," said Trae Bodge, cofounder of Three Custom Color Cosmetics.
Shorter put this hairspray to the ultimate test on a photo shoot in hot, sticky Miami. Her report: "I couldn't believe how well it helped the models' hair hold up against the humidity."
"My new go-to dryer — I've been using it every day in my salon!" said Lawrence of this styling star, which smooths the hair cuticle while minimizing heat damage. "It dries hair faster with less stress and tames even the frizziest texture."
"Kept my flyaways in check all day," beamed Tung. Price's rave review: "It gave me a nice burst of shine and controlled frizz without making my curls oily."
Not only does this weightless mist guard hair from heat, "it also brings life back to unwashed hair," said Dorram. And who doesn't want that?


text:
Q: How to select linux as platform in Firemonkey Style Designer? In the Firmonkey style designer of Delphi 11 Alexandria, I don't find a way to add a custom style for Linux. After adding a new platform I see only this platforms:

I am using the Enterprise Edition with the FMXLinux package from GetIt. Can acquisition of "Upgrade from GetIt to FmxLinux Personal Life-Time" solve this problem?

redpajama_set_name: RedPajamaStackExchange


text:
Q: Minimizing crossed lines in a web graph I am implementing (considering it actually) a control that allows users to create a web diagram out of a series of nodes. The purpose will be to create a "flow chart" of sorts out of a series of questions to be asked by another part of the software; for each question, the answer chosen determines which question should be asked next. It's a little FSMish but much smarter than a linear progression of questions of the form "If you answered X to question Y, please answer the following...". The graph is a web and not guaranteed to be a tree, because the user defining the graph may want to ask a couple follow-up questions and then return to the "normal" line of questioning, thus two different nodes may "merge" to the same child node. However, the web is guaranteed not to be circular and to have one starting point, thus there are a finite number of paths through the graph and all of a finite length.
Here's the question. I would like to have an "arrange" button (or simply auto-arrange) that rearranges the nodes so that the number of lines connecting nodes of the web that have to cross each other is minimized. Most flow-charting tools have a feature to do this, but my Google-fu has failed to find a general-purpose algorithm of this type. I've identified it as the "crossing number" problem, but it appears that there is no general solution to finding the minimal crossing number of a graph with V nodes and E paths, and that any such solution would be NP-hard (if a particular sub-problem could be solved in a single operation, then the full problem can be solved in polynomial time). On top of that, none of the references I've found detail algorithms that can lay out a graph with a minimal (to say nothing of "minimum") crossing number.
Any hints?
EDIT: I gave Sharkos the tick for his excellent references. However, assuming that the graph has a definite start point, is one-way and non-circular, a working algorithm (maybe not optimal) is actually pretty simple. In pseudocode:
"
Give all nodes an initial XScore, YScore and LinkScore of 0
Determine the start node (either designated, or the one not linked to by any other)
Set start node's XScore and YScore to 1
Set running YScore = 1
Start recursion
for each path from node
   if node on other end has XScore <= current
      set other node's XScore to current + 1
   if node on other end has YScore <= running YScore
      set other node's YScore to running YScore
      increment other node's LinkScore
   Recurse with node on other end
   Increment running YScore

Order nodes by XScore, then YScore.

--If the graph happens to be planar, we're done.

--To minimize crossover:

for each XScore
   for each node with that XScore
      if the next node with the same XScore has a higher LinkScore
         swap the two nodes, exchanging YScores

A: Here's a Master's thesis on the topic, which gives some algorithms with discussion, and which gives references to lots and lots of different people's approaches, from exact algorithms to approximation algorithms.
However, for a fairly simple, concrete pseudocode version of the 'planarization method', apparently (not an expert, though I have studied graph theory and it sounds plausibly useful) a common approximation, see section 2.5 in this chapter from the Handbook of Graph Drawing and Visualization, which is freely available online.
Hopefully that's the sort of thing you wanted?


text:
Tag archive for 'Bill of Rights'
By Robert On Friday, April 19th, 2019
The Constitution, the Declaration of Independence and why read these documents
Author of the book, How to Read the Constitution and the Declaration of Independence, Paul Skousen joined me to talk about all things pertaining to these documents. Why read them? How to read them? What are the More...
By Brandon Jones On Wednesday, October 10th, 2018
Voter Guide on 2018 Florida Amendment Four: Voting restoration for convicted felons
Ahead of the general election, former U.S. Senate candidate Alex Snitker broke down the Florida amendments on the 2018 ballot for Florida Daily. Snitker then spoke with Dispatch Radio about the amendments. UPDATE: More...
By The Dispatch On Thursday, June 14th, 2018
Liberty Counsel sues Florida counties over ban on counseling minors on sexual attraction, gender confusion
Liberty Counsel has filed suit in federal court against the City of Boca Raton and Palm Beach County for their adoption of City Ordinance 5407 and County Ordinance 2017-046, which prohibit minors in Boca Raton More...
By The Dispatch On Thursday, January 4th, 2018
Louisiana AG Jeff Landry, Congressman Mike Johnson release free speech documents for students, praised by Liberty Counsel
Louisiana Attorney General Jeff Landry and U.S. Congressman Mike Johnson released a 15-page document as a valuable resource regarding the religious and free speech rights of students in public schools. photo Josh More...
By Robert On Tuesday, May 2nd, 2017
Rand Paul: Money for universities with 'one set of speech' and 'Dystopian Visions'
Kentucky Senator Rand Paul has been making some news when it comes to higher education, one is linked to recent comments influenced by the horrible events at UC Berkeley and another is due to a class he is scheduled More...
By The Dispatch On Saturday, December 17th, 2016
Rand Paul on the Bill of Rights Day, meeting with Mike Pence and Steven Mnuchin
On Thursday, Republican Senator from Kentucky, Dr Rand Paul published an Op-Ed on Breitbart entitled Restore the Bill of Rights on the 225th anniversary of the adoption of the Bill of Rights. Dr. Paul with Vice More...
By Brandon Jones On Friday, September 23rd, 2016
Ted Cruz endorses Donald Trump in anti-Hillary move
Ted Cruz surprised many and confirmed rumors by endorsing Donald Trump, contradicting previous promises and remarks, but also fulfilling his promise to support the GOP nominee. Turning to Facebook posting: "After More...
By Brandon Jones On Tuesday, June 28th, 2016
Ken Burns attacks Donald Trump during Stanford speech as a 'charlatan' good for ratings
Filmmaker Ken Burns attacked the GOP presumptive nominee Donald Trump during Stanford's commencement speech adn then spoke with USA TODAY, saying it was his "responsibility as a citizen to say that." "I More...
By Brandon Jones On Friday, June 17th, 2016
Sen Joe Manchin says 'due process is what's killing us right now'
According to Senator Joe Manchin (D-WV), due process of law is a major obstacle to national security, even stating that "Due process is what's killing us right now." While appearing on Morning Joe to discuss More...
By Brandon Jones On Wednesday, June 8th, 2016
Hillary Clinton won't say second amendment is a constitutional right
The Democratic presidential candidate Hillary Clinton declined to say if she thinks the Second Amendment guarantees the constitutional right to bear arms during an interview Sunday with ABC's George Stephanopoulos. Stephanopoulos More...
By The Dispatch On Tuesday, June 7th, 2016
NC State's 'permit' for student speech halted by federal court
A federal court Saturday ordered a halt to North Carolina State University's policy that requires a permit for nearly any kind of non-commercial student speech or communication anywhere on campus. The order came More...
By The Dispatch On Monday, May 23rd, 2016
Thomas More Society challenges Kansas Constitution, there is no 'Right' to an abortion
The Thomas More Society filed a friend-of-the-court (amicus curiae) brief in the Kansas Supreme Court in a case challenging the constitutionality of a Kansas law barring physicians from performing dismemberment More...
By The Dispatch On Wednesday, March 16th, 2016
College of DuPage ends threats against students handing out copies of Constitution, Bill of Rights
The College of DuPage has revised its speech policies after receiving a letter from Alliance Defending Freedom attorneys representing a student threatened with arrest if he continued passing out copies of the U.S. More...
By Zach Jones On Thursday, February 18th, 2016
Ted Cruz on Maryanne Trump Barry, she's 'a radical pro-abortion extremist'
Ted Cruz pledged to make the presidential election a "referendum" on the U.S. Supreme Court, ramping up efforts to make that issue one more increasingly personal point of contention with Donald Trump, his biggest More...
By Butter Bracco On Friday, January 29th, 2016
Gun Control hearing: Maryland's Barbara Mikulski, let's avoid 'constitutional arguments'
Maryland Sen. Barbara Mikulski said at a Senate hearing that she wanted to avoid getting "involved in constitutional arguments" as the hearing in question dealt with President Obama's recent executive More...
By Robert On Sunday, August 9th, 2015
Rand Paul: The Lone Voice of Liberty at the Republican Debate
On Thursday night, 10 Republican Presidential wanna-bees met in front of a record television audience to "debate" the issues and let the American electorate know what they believe. While some candidates More...
By Robert On Friday, August 7th, 2015
Republican debate déjà vu: NYC-area pol vs. a Paul
While I was watching the testy exchange last night at the first Republican Presidential debate between New Jersey Gov. Chris Christie and Kentucky Senator Rand Paul over government surveillance, I couldn't More...
By Robert On Monday, July 6th, 2015
Americans become more oblivious to the First Amendment
According to some sad and shameful results from a recent Newseum Institute poll, thirty-three percent of Americans cannot name any of the rights guaranteed by the First Amendment. Photo of the US Constitution taken More...
By Brandon Jones On Monday, April 27th, 2015
Richard Dreyfuss on PoliticKING: civics in schools, ISIS, voting on 'empty phrases'
Richard Dreyfuss explains his movement to bring American civics back into the classroom and why he doesn't vote to Larry King on his Ora.TV show PoliticKING with Larry King. DREYFUSS: So all the guys that More...
By Brandon Jones On Wednesday, April 15th, 2015
Ted Cruz on gun control: 'Second Amendment is not for hunting,' gun bans lead to tyranny
2016 presidential candidate Ted Cruz, R-Texas, was interviewed by Guns.com at the NRA's Annual Meeting and Exhibit in Nashville, Tennessee and discussed the Second Amendment and how public opinion is trumped by More...

redpajama_set_name: RedPajamaCommonCrawl


text:
package uk.gov.gchq.gaffer.flink.operation.handler;

import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.functions.sink.SinkFunction;

import uk.gov.gchq.gaffer.data.element.Element;
import uk.gov.gchq.gaffer.flink.operation.handler.util.FlinkConstants;
import uk.gov.gchq.gaffer.operation.OperationException;
import uk.gov.gchq.gaffer.operation.impl.add.AddElementsFromSocket;
import uk.gov.gchq.gaffer.store.Context;
import uk.gov.gchq.gaffer.store.Store;
import uk.gov.gchq.gaffer.store.operation.handler.OperationHandler;

/**
 *

 * A {@code AddElementsFromSocketHandler} handles the {@link AddElementsFromSocket}
 * operation.
 *

 *

 * This uses Flink to stream the {@link uk.gov.gchq.gaffer.data.element.Element}
 * objects from a socket into Gaffer.
 *

 *

 * Rebalancing can be skipped by setting the operation option: gaffer.flink.operation.handler.skip-rebalancing to true
 *

 */
public class AddElementsFromSocketHandler implements OperationHandler<AddElementsFromSocket> {
    private final SinkFunction<Element> sink;

    public AddElementsFromSocketHandler() {
        this(null);
    }

    public AddElementsFromSocketHandler(final SinkFunction<Element> sink) {
        this.sink = sink;
    }

    @Override
    public Object doOperation(final AddElementsFromSocket op, final Context context, final Store store) throws OperationException {
        final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        if (null != op.getParallelism()) {
            env.setParallelism(op.getParallelism());
        }

        final DataStream<Element> builder =
                env.socketTextStream(op.getHostname(), op.getPort(), op.getDelimiter())
                        .flatMap(new GafferMapFunction(String.class, op.getElementGenerator()));

        final SinkFunction<Element> gafferSink = getSink(op, store);

        if (Boolean.parseBoolean(op.getOption(FlinkConstants.SKIP_REBALANCING))) {
            builder.addSink(gafferSink);
        } else {
            builder.rebalance().addSink(gafferSink);
        }

        try {
            env.execute(op.getClass().getSimpleName() + "-" + op.getHostname() + ":" + op.getPort());
        } catch (final Exception e) {
            throw new OperationException("Failed to add elements from port: " + op.getPort(), e);
        }

        return null;
    }

    private SinkFunction<Element> getSink(final AddElementsFromSocket op, final Store store) {
        return sink == null ? new GafferSink(op, store) : sink;
    }
}

redpajama_set_name: RedPajamaGithub


This study examined the effects of a smoking cessation coaching program based on the motivation stage applying the Transtheoretical Model to stop the smoking of patients in terms of the amount of smoking, nicotine dependence, CO level, and urine cotinine. The study design was a multi-repeat multiple repeat intermittent time series study with one-group, a pre-post design. The participants were 47 smoking patients (44 males and 3 females), who were treated at a public hospital in N city. The participants were 4 (8.51%) subjects in the action stage and 43 subjects (91.49%) in the preparation stage of the motivation stage. The coaching program intervention was conducted at the first day, second week, and 6th week. The smoking cessation maintenance of the subjects was checked at the 12th week. A chi-square test and t-test were used to analyze the data. The subjects in the action stage were kept under the condition of no smoking and nicotine dependence. After the program of subjects in the preparation stage, the amount of smoking, nicotine dependence, and CO level were significantly lower compared to the pre-test (p<.001). The findings suggest that the coaching program based on the motivation stage was effective in improving the smoking cessation for patients who smoke. On the other hand, the patients in the smoking cessation program may require much more financial assistance than those of healthy people. A greater workforce and budget will be needed for patients to stop smoking.
W. J. Kim, The motivational change on smoking cessation after mass-education for smokers. Unpublished master's thesis, Dankook University, Seoul, Korea, 2001.
Y. R. Kim, Effects of motivational enhancement smoking cessation program on smoking behaviors, smoking cessation motivation and stage of change in the hospitalized patients. Unpublished master's thesis, Catholic University, Seoul. 2012.
J. H. Lee Effects of bypass graft of atherosclerotic arterial obstruction in the lower extremities. Unpublished master's thesis, Dong-a University, Busan. 2012.
World Health Organization. Manual and self-assessment form. Geneva: World Health Organization, 2006.
Y. R. Han, E. H. Ha, H. S. Park, B. E. Lee, Motivation of adolescents smoking cessation : use of focus group interview. Journal of Korean Society for Health Education and Promotion, 22(1). p.55-71. 2005.
K. Lee, M. Lee, The effects of smoking cessation through a smoking cessation counselling program on expiratory CO concentration, BMI, blood pressure, liver function, and lipid metabolism in smoking cessation successes. Journal of Korean Academy of Community Health Nursing, 19(2), p.234-246, 2008.
Ministry of Health and Welfare. 2014 Public Health Program Guideline. Seoul: Ministry of Health and Welfare, 2014.
Ministry of Health and Welfare. 2010 Smoking prevention and smoking cessation clinic program guideline. Seoul: Ministry of Health and Welfare, 2010.
J. Y. Sim, N. Y. Han, Y. S. Cheong, S. M. Yoo, E. W. Park, Smoking cessation success associated factors in smoking cessation clinic. Korean Journal of Family Medicine, 23(3), p. 325-333, 2002.
J. T. Choi, Factors associated smoking cessation success among nicotine dependence smokers. Unpublished master's thesis, Yonsei University, Seoul, 1992.
C. H. Kim, H. G. Seo, Factors associated smoking cessation success of smokers visited in smoking cessation clinics. Korean Journal of Family Medicine, 22(11), p.1603-1611. 2001.
K. H. Seo, S. M. Lee, Psychological factors associated with short-term and long-term abstention following a smoking cessation program. Journal of Korean Society for Health Education and Promotion, 21(1), p.137-151. 2004.
Y. S. Ha, Effects of motivation interview smoking program on smoking of adolescents. Unpublished master's thesis, Kyungpook National University, Daegu, 2009.
T. M. Song, J. Y. Lee K. S. Choi, The factors influencing on success of quitting smoking in new enrollees and re-enrollees in smoking cessation clinics. Journal of Korean Society for Health Education and Promotion, 25(2), p.19-30, 2008.


text:
2.8 Mega Watt Fuel Cell in USA
Construction of a fuel cell with enough capacity to power 2,800 homes has begun on the UC San Diego campus as part of a renewable energy project with the city of San Diego and BioFuels Energy to turn waste methane gas from the Point Loma Wastewater Treatment Plant directly into electricity without combustion.
UC San Diego's 2.8-megawatt fuel cell
When completed in late 2011, the 2.8-megawatt fuel cell will be the largest on any college campus, providing about 8 percent of UC San Diego's total energy needs. The $19 million project requires no university funding: The project is eligible for $7.65 million in California Self Generation Program incentives; BioFuels Energy will provide the remaining $11.35 million in private investment, loans and investment tax credits.
"Our campus currently generates 85 percent of its own power. With this new fuel cell and the near-doubling of our photovoltaic solar capacity in 2011, our campus will be able to meet as much as 95 percent of our annual electricity needs," said Gary C. Matthews, vice chancellor of resource management and planning. "The fact that we've been able to significantly increase our renewable-energy capacity in very challenging economic times with an innovative public-private partnership is as much a financial feat as it is an engineering accomplishment."
As part of a 10-year agreement, UC San Diego will buy the electricity produced by the fuel cell from BioFuels Energy at competitive rates. The university's fuel cell also offers the potential benefits of cogeneration, or combined heat and power, in which waste heat can be tapped as a secondary power source, raising the overall net efficiency of the fuel cell to about 60 percent, compared with about 33 percent for coal- and oil-fired power plants.
About 85 percent of the university's energy needs are provided by its low-emission 30-megawatt natural-gas-fired cogeneration plant, which operates at 66 percent overall net efficiency. It is also called a combined heat and power plant because it generates electricity to run lights and equipment and also captures the plant's waste heat to produce steam for heating, ventilation and air conditioning for much of the 12.5 million gross square feet of campus buildings. Waste heat from the plant also is used as a power source for a water chiller that fills a 3.8-million-gallon storage tank at night with cold water, which allows the university to reduce its peak daytime energy requirements by about 14 percent.
The fuel cell and its ancillary equipment will occupy a space about the size of a tennis court. It will form the centerpiece of UC San Diego's Energy Innovation Park on the east side of the main campus, which includes:
• High efficiency, 5.75-kilowatt sun-tracking concentrating photovoltaic array made by Concentrix Solar.
• A compressed natural gas (CNG) fueling station for 13 CNG service vehicles, including two delivery trucks and two street sweepers, three sedans, three pick-up trucks and three buses. Vehicle emissions are lower with natural gas fuel than with gasoline because CNG-fueled vehicles emit 10 percent less carbon dioxide compared to diesel and 30-40 percent less than equivalent gasoline-fueled vehicles.
• A chiller plant that efficiently produces the cold water required to cool the nearby Moores UCSD Cancer Center and Shiley Eye Center.
In the future the energy park will have an array of additional technologies:
• An electric-vehicle charging station.
• A second chiller plant with 300 kilowatts of cooling capacity that will be powered by the fuel cell's waste heat to cool the Cancer Center, Shiley Eye Center and other UC San Diego medical treatment, research and office buildings nearby.
• An energy-storage system that will stockpile four hours' output of electricity from the fuel cell every night during off-peak hours and release the electricity to the campus energy grid during peak-demand hours in the afternoon.
The planned energy-storage system is eligible for an additional $3.4 million in Self Generation Program incentives and could reduce UC San Diego's peak energy demand by 6 percent.
"The university's increasingly sophisticated microgrid will integrate all the campus'
production, consumption and stored power and cooling water into one of the most sophisticated energy-management systems anywhere," said John Dilliott, energy and utilities manager for the campus. "We will soon be able to factor in the variable cost of imported electricity and optimize the production and consumption of electricity in our entire system with a high degree of cost and energy efficiency."
The city of San Diego will make money by selling the Point Loma Wastewater Treatment Plant's biogas, which is purified on site and injected into an existing gas pipeline that will supply three fuel cells being constructed, one at UC San Diego and two at city of San Diego sites. "This project and the uniqueness of the concept is anticipated to pave the way for similar future applications," said Frank Mazanec, managing director of Encinitas, Calif.-based BioFuels Energy.
The three fuel cells are made by Danbury, Conn.-based FuelCell Energy, Inc. and use an electrochemical process to combine the methane fuel with oxygen in ambient air to produce electricity directly. Carbon dioxide and water vapor are also produced, but no nitrate or particulate pollutants are produced because there is no combustion.
The so-called directed biogas project is the first time that a FuelCell Energy power plant will be fueled by renewable biogas generated at a distant location.
The fuel cell being built at UC San Diego is one of the largest fuel cells in the nation to use directed biogas from a wastewater treatment plant," said Kenneth J. Frisbie, also managing director at BioFuels Energy. "No university has a fuel cell this big."
Posted by John Burke at 16:59
Labels: Fuel Efficiency Paramount
John Burke 8 December 2010 at 17:07
This is great news for Fuel Cells and running vehicles on gas as opposed to Petrol.
However some European Fuel Cells are able to provide 45% electrical energy output and if using CHP (Combined Heat and Power) to utilise the waste heat can get to 80% fuel efficiencies.
Furthermore rather than use Compressed Natural Gas (CNG) Europe is promoting LPG (Liquefied Petroleum Gas - mainly propane/butane mix) in transport policy with 8 million vehicles in Europe using LPG
Is the Hydrogen Fuel Cell a Practical Solution
AD and CHP - What?
Hydrogen Fuel Cell Buses in London
Electric Cars and Fuel Cells are the Future, BUT.....
Solar Power, Silicon Production and Reforestation ...
China Breaks 300 mph to Take Rail Speed Record
USA, China and UK team Up for Bio Fuel Technology
Co Generation gets Thumbs Up from Germany
John Burke | Create your badge


Is 56575 the best Minnesota zip code for your business?
Now you can skip hours of internet research and jump straight to getting answers with our meaningful at-a-glance Demographics Spreadsheet Report. With the most current & most popular demographic data, it's the perfect starting point for your research about 56575 and the rest of Minnesota.
All 56575 population data above are from the US Census Bureau.
The population data for 56575 are from the Census' American Community Survey 2017 5-year estimates. The demographic data for 55411, 55785, 56116, and 56129 are the most current, comparable demographics available from the US Census Bureau, are from the American Community Survey 2017 5-year estimates, and were downloaded on December 2017. Check out our FAQ section for more details.
With 765 people, 56575 is the 603rd most populated zip code in the state of Minnesota out of 881 zip codes. But watch out, 56575, because 56116 with 764 people and 56129 with 752 people are right behind you.
The largest 56575 racial/ethnic groups are American Indian (51.0%) followed by White (44.6%) and Two or More (1.8%).
In 2017, the median household income of 56575 residents was $36,538. 56575 households made slightly more than 55411 households ($36,512) and 55785 households ($36,429) . However, 39.3% of 56575 residents live in poverty.
The median age for 56575 residents is 48.2 years young.
Looking for 56575, MN Starter Report PDF? Click Here.


Apart from mosquitoes and cockroaches, termites may be the least beloved insects rambling around our planet. But they're also among the most underappreciated of creepy-crawlies—and their example can tell us a thing or two about how to create biofuels, train robots, and harness artificial intelligence.
They're Fun. They Fuel Our Nostalgia. They Remind Us of Our Obligation to One Another.


I have so many people who are unable to go to Haiti for whatever reason(s). I feel that most are not trying hard enough. They want a message from the spirit , but can not go to Haiti. I remember one of the first messages I got in serve from the lwa. When the god came in he greeted a few people then came straight for me.It feels so good just to have lwa acknowledge you. He shook his head as he shook my hands and then asked me " Where have you been? Where have you been? I have been waiting for you almost 30 years..."
Why did I keep my god waiting so long? He was with me , protecting me the whole time. Most of my " friends" I use to party with are in jail, on drugs, have HIV, have lost their children, ect... I know that only becuse Good God and my angels it is them and not me. My god waited for me and I know he is not going to let me go anywhere.
This is what I love about working with people hands on. I can not wait for my botanica to open so people do not have to keep the lwa waiting.


text:
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* vim: set sw=4 sts=4 ts=4 expandtab: */
/*
 * test-display:
 *
 * Copyright (C) 2002-2004 Dom Lachowicz
 *
 * This program is released into the PUBLIC DOMAIN, and is meant to be a
 * useful example if how to draw a SVG image inside of a GtkWidget. This
 * program is free software; you can redistribute it and/or modify it at your
 * will.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE
 *
 * Simple utility to view a SVG file inside of a GtkWindow
 */

#include "config.h"
#include "rsvg.h"
#include "rsvg-private.h"
#include "rsvg-size-callback.h"

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>

#include <gtk/gtk.h>
#include <gdk/gdk.h>

#if 0 // defined (G_OS_UNIX)
#include <gio/gunixinputstream.h>
#endif

#define DEFAULT_WIDTH  640
#define DEFAULT_HEIGHT 480

/* RsvgImage */

#define RSVG_TYPE_IMAGE (rsvg_image_get_type ())
#define RSVG_IMAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RSVG_TYPE_IMAGE, RsvgImage))

typedef struct _RsvgImage       RsvgImage;
typedef struct _RsvgImageClass  RsvgImageClass;

struct _RsvgImage {
    GtkWidget parent_instance;

    cairo_surface_t *surface; /* a cairo image surface */
};

struct _RsvgImageClass {
    GtkWidgetClass parent_class;
};

static GType rsvg_image_get_type (void);

static void
rsvg_image_take_surface (RsvgImage *image,
                         cairo_surface_t *surface)
{
    if (image->surface == surface)
      return;
    if (image->surface)
      cairo_surface_destroy (image->surface);
    image->surface = surface; /* adopted */

    gtk_widget_queue_resize (GTK_WIDGET (image));
}

G_DEFINE_TYPE (RsvgImage, rsvg_image, GTK_TYPE_WIDGET);

static void
rsvg_image_init (RsvgImage *image)
{
  gtk_widget_set_has_window (GTK_WIDGET (image), FALSE);
}

static void
rsvg_image_finalize (GObject *object)
{
  RsvgImage *image = RSVG_IMAGE (object);

  rsvg_image_take_surface (image, NULL);
}

static void
rsvg_image_get_preferred_width (GtkWidget *widget,
                                gint      *minimum,
                                gint      *natural)
{
  RsvgImage *image = RSVG_IMAGE (widget);

  *minimum = *natural = image->surface ? cairo_image_surface_get_width (image->surface) : 1;
}

static void
rsvg_image_get_preferred_height (GtkWidget *widget,
                                 gint      *minimum,
                                 gint      *natural)
{
  RsvgImage *image = RSVG_IMAGE (widget);

  *minimum = *natural = image->surface ? cairo_image_surface_get_height (image->surface) : 1;
}

static gboolean
rsvg_image_draw (GtkWidget *widget,
                 cairo_t *cr)
{
  RsvgImage *image = RSVG_IMAGE (widget);

  if (image->surface == NULL)
      return FALSE;

  cairo_save (cr);
  cairo_set_source_surface (cr, image->surface, 0, 0);
  cairo_paint (cr);
  cairo_restore (cr);

  return FALSE;
}

static void
rsvg_image_class_init (RsvgImageClass *klass)
{
  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
  GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);

  gobject_class->finalize = rsvg_image_finalize;
  widget_class->get_preferred_width = rsvg_image_get_preferred_width;
  widget_class->get_preferred_height = rsvg_image_get_preferred_height;
  widget_class->draw = rsvg_image_draw;
}

static RsvgImage *
rsvg_image_new_take_surface (cairo_surface_t *surface)
{
  RsvgImage *image;

  image = g_object_new (RSVG_TYPE_IMAGE, NULL);
  rsvg_image_take_surface (image, surface);

  return image;
}

static cairo_surface_t *
rsvg_image_get_surface (RsvgImage *image)
{
  return image->surface;
}

/* Main */

static char *
_rsvg_basename (const char *file)
{
    if (file && *file)
        return g_path_get_basename (file);

    return NULL;
}

typedef struct _ViewerCbInfo ViewerCbInfo;
struct _ViewerCbInfo {
    GtkWidget *window;
    GtkWidget *popup_menu;
    RsvgImage *image;
    RsvgHandle *handle;
    GtkAccelGroup *accel_group;
    char *base_uri;
    char *id;
    RsvgDimensionData dimensions;
    gdouble x_zoom;
    gdouble y_zoom;
};

static cairo_surface_t *
render_to_surface (ViewerCbInfo *info)
{
    int width, height;
    cairo_matrix_t matrix;
    cairo_surface_t *surface;
    cairo_t *cr;

    width = ceil ((double) info->dimensions.width * info->x_zoom);
    height = ceil ((double) info->dimensions.height * info->y_zoom);

    surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height);
    if (cairo_surface_status (surface) != CAIRO_STATUS_SUCCESS) {
        cairo_surface_destroy (surface);
        return NULL;
    }

    cr = cairo_create (surface);

    cairo_matrix_init_scale (&matrix, info->x_zoom, info->y_zoom);
    cairo_transform (cr, &matrix);

    if (!rsvg_handle_render_cairo_sub (info->handle, cr, info->id)) {
        cairo_destroy (cr);
        cairo_surface_destroy (surface);
        return NULL;
    }

    cairo_destroy (cr);

    if (cairo_surface_status (surface) != CAIRO_STATUS_SUCCESS) {
        g_printerr ("Error while rendering image: %d\n", cairo_surface_status (surface));
        cairo_surface_destroy (surface);
        return NULL;
    }

    return surface;
}

static void
set_window_title (ViewerCbInfo * info)
{
    char *title;
    gchar *zoom_string;

    if (info->x_zoom != info->y_zoom) {
        zoom_string = g_strdup_printf ("%4d%% : %4d%%",
                                       (gint) (info->x_zoom * 100),
                                       (gint) (info->y_zoom * 100));
    } else {
        zoom_string = g_strdup_printf ("%4d%%",
                                       (gint) (info->x_zoom * 100));
    }

    if (info->id) {
        title = g_strdup_printf ("%s#%s (%s) — %s",
                                 info->base_uri, info->id,
                                 zoom_string,
                                 _("SVG Viewer"));
    } else {
        title = g_strdup_printf ("%s (%s) — %s",
                                 info->base_uri,
                                 zoom_string,
                                 _("SVG Viewer"));
    }
    gtk_window_set_title (GTK_WINDOW (info->window), title);
    g_free (title);
    g_free (zoom_string);
}

static void
zoom_image (ViewerCbInfo * info, gdouble factor)
{
    info->x_zoom *= factor;
    info->y_zoom *= factor;

    rsvg_image_take_surface (info->image, render_to_surface (info));

    set_window_title (info);
}

static void
zoom_in (GObject * ignored, ViewerCbInfo * info)
{
    zoom_image (info, sqrt (G_SQRT2));
}

static void
zoom_out (GObject * ignored, ViewerCbInfo * info)
{
    zoom_image (info, 1. / sqrt (G_SQRT2));
}

static void
begin_print (GtkPrintOperation *operation,
			 GtkPrintContext   *context,
			 gpointer           user_data)
{
	gtk_print_operation_set_n_pages (operation, 1);
}

static void
draw_page (GtkPrintOperation *operation,
		   GtkPrintContext   *context,
		   gint               page_nr,
		   gpointer           user_data)
{
    ViewerCbInfo *info = (ViewerCbInfo *) user_data;
    cairo_t *cr;
    gdouble page_width, page_height, page_aspect;
    gdouble width, height, aspect;
    cairo_matrix_t matrix;

    cr = gtk_print_context_get_cairo_context (context);
    page_width = gtk_print_context_get_width (context);
    page_height = gtk_print_context_get_height (context);
    page_aspect = page_width / page_height;

    // FIXMEchpe
    rsvg_handle_set_dpi_x_y (info->handle,
                             gtk_print_context_get_dpi_x(context),
                             gtk_print_context_get_dpi_y(context));

    width = info->dimensions.width;
    height = info->dimensions.height;
    aspect = width / height;

    if (aspect <= page_aspect) {
        width = page_height * aspect;
        height = page_height;
    } else {
        width = page_width;
        height = page_width / aspect;
    }

    cairo_save (cr);
    cairo_matrix_init_scale (&matrix,
                             width / info->dimensions.width,
                             height / info->dimensions.height);
    cairo_transform (cr, &matrix);
    rsvg_handle_render_cairo (info->handle, cr);
    cairo_restore (cr);
}

static void
print_pixbuf (GObject * ignored, gpointer user_data)
{
  GtkPrintOperation *print;
  ViewerCbInfo *info = (ViewerCbInfo *) user_data;

  print = gtk_print_operation_new ();

  g_signal_connect (print, "begin_print", G_CALLBACK (begin_print), info);
  g_signal_connect (print, "draw_page", G_CALLBACK (draw_page), info);

  (void)gtk_print_operation_run (print, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG,
                                 GTK_WINDOW (info->window), NULL);

  g_object_unref (print);
}

static char *
save_file (const char *title, const char *suggested_filename, GtkWidget * parent, int *success)
{
    GtkWidget *dialog;
    char *filename = NULL;

    *success = 0;
    dialog = gtk_file_chooser_dialog_new (title,
                                          GTK_WINDOW (parent),
                                          GTK_FILE_CHOOSER_ACTION_SAVE,
                                          GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                          GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL);

    if (suggested_filename && *suggested_filename) {
        gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), suggested_filename);
    }

    if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) {
        filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
        *success = 1;
    }

    gtk_widget_destroy (dialog);

    return filename;
}

static void
save_pixbuf (GObject * ignored, gpointer user_data)
{
    ViewerCbInfo *info = (ViewerCbInfo *) user_data;
    char *filename, *base_name, *filename_suggestion;
    int success = 0;
    cairo_surface_t *surface;

    base_name = _rsvg_basename (info->base_uri);
    if (base_name)
        filename_suggestion = g_strdup_printf ("%s.png", base_name);
    else
        filename_suggestion = NULL;

    filename = save_file (_("Save SVG as PNG"), filename_suggestion, info->window, &success);
    g_free (base_name);
    g_free (filename_suggestion);

    if (filename) {
        surface = rsvg_image_get_surface (info->image);
        if (cairo_surface_write_to_png (surface, filename) != CAIRO_STATUS_SUCCESS) {
                GtkWidget *errmsg;

                errmsg = gtk_message_dialog_new (GTK_WINDOW (info->window),
                                                 GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
                                                 GTK_MESSAGE_WARNING,
                                                 GTK_BUTTONS_CLOSE, "Failed to save");

                gtk_dialog_run (GTK_DIALOG (errmsg));

                gtk_widget_destroy (errmsg);
        }

        g_free (filename);
    } else if (success) {
        GtkWidget *errmsg;

        errmsg = gtk_message_dialog_new (GTK_WINDOW (info->window),
                                         GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
                                         GTK_MESSAGE_WARNING,
                                         GTK_BUTTONS_CLOSE, _("No filename given"));
        gtk_window_set_transient_for (GTK_WINDOW (errmsg), GTK_WINDOW (info->window));

        gtk_dialog_run (GTK_DIALOG (errmsg));
        gtk_widget_destroy (errmsg);
    }
}

static void
copy_svg_location (GObject * ignored, gpointer user_data)
{
    ViewerCbInfo *info = (ViewerCbInfo *) user_data;
    GtkClipboard *clipboard = NULL;

    if (info->base_uri) {
        clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
        gtk_clipboard_set_text (clipboard, info->base_uri, -1);
    }
}

static void
create_popup_menu (ViewerCbInfo * info)
{
    GtkWidget *popup_menu;
    GtkWidget *menu_item;
    GtkWidget *stock;

    popup_menu = gtk_menu_new ();
    gtk_menu_set_accel_group (GTK_MENU (popup_menu), info->accel_group);

    if (info->base_uri) {
        menu_item = gtk_image_menu_item_new_with_label (_("Copy SVG location"));
        stock = gtk_image_new_from_stock (GTK_STOCK_COPY, GTK_ICON_SIZE_MENU);
        gtk_widget_show (stock);
        gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), stock);
        g_signal_connect (menu_item, "activate", G_CALLBACK (copy_svg_location), info);
        gtk_widget_show (menu_item);
        gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), menu_item);
        gtk_widget_add_accelerator (menu_item, "activate", info->accel_group, GDK_KEY_C,
                                    GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
    }

    menu_item = gtk_image_menu_item_new_with_label (_("Save as PNG"));
    stock = gtk_image_new_from_stock (GTK_STOCK_SAVE_AS, GTK_ICON_SIZE_MENU);
    gtk_widget_show (stock);
    gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), stock);
    g_signal_connect (menu_item, "activate", G_CALLBACK (save_pixbuf), info);
    gtk_widget_show (menu_item);
    gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), menu_item);
    gtk_widget_add_accelerator (menu_item, "activate", info->accel_group, GDK_KEY_S,
                                GDK_CONTROL_MASK | GDK_SHIFT_MASK, GTK_ACCEL_VISIBLE);

    menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_PRINT, NULL);
    g_signal_connect (menu_item, "activate", G_CALLBACK (print_pixbuf), info);
    gtk_widget_show (menu_item);
    gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), menu_item);
    gtk_widget_add_accelerator (menu_item, "activate", info->accel_group, GDK_KEY_P, GDK_CONTROL_MASK,
                                GTK_ACCEL_VISIBLE);

    menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_ZOOM_IN, NULL);
    g_signal_connect (menu_item, "activate", G_CALLBACK (zoom_in), info);
    gtk_widget_show (menu_item);
    gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), menu_item);
    gtk_widget_add_accelerator (menu_item, "activate", info->accel_group, GDK_KEY_plus,
                                GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);

    menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_ZOOM_OUT, NULL);
    g_signal_connect (menu_item, "activate", G_CALLBACK (zoom_out), info);
    gtk_widget_show (menu_item);
    gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), menu_item);
    gtk_widget_add_accelerator (menu_item, "activate", info->accel_group, GDK_KEY_minus,
                                GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);

    info->popup_menu = popup_menu;
}

static gint
button_press_event (GObject * widget, GdkEventButton * event, gpointer user_data)
{
    if (event->button == 3 && event->type == GDK_BUTTON_PRESS) {
        ViewerCbInfo *info = (ViewerCbInfo *) user_data;

        gtk_menu_popup (GTK_MENU (info->popup_menu), NULL, NULL,
                        NULL, NULL, event->button, event->time);
        return TRUE;
    }

    return FALSE;
}

static void
quit_cb (GtkWidget * win, gpointer unused)
{
    /* exit the main loop */
    gtk_main_quit ();
}

static void
populate_window (GtkWidget * win,
                 ViewerCbInfo * info,
                 cairo_surface_t *surface /* adopted */,
                 gint win_width,
                 gint win_height)
{
    GtkWidget *vbox;
    GtkWidget *scroll;
    GtkWidget *toolbar;
    GtkToolItem *toolitem;
    GtkRequisition requisition;
    gint img_width, img_height;

    vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
    gtk_container_add (GTK_CONTAINER (win), vbox);

    /* pack the window with the image */
    img_width = cairo_image_surface_get_width (surface);
    img_height = cairo_image_surface_get_height (surface);

    /* create a new image */
    info->image = rsvg_image_new_take_surface (surface);

    toolbar = gtk_toolbar_new ();
    gtk_box_pack_start (GTK_BOX (vbox), toolbar, FALSE, FALSE, 0);

    toolitem = gtk_tool_button_new_from_stock (GTK_STOCK_ZOOM_IN);
    gtk_toolbar_insert (GTK_TOOLBAR (toolbar), toolitem, 0);
    g_signal_connect (toolitem, "clicked", G_CALLBACK (zoom_in), info);

    toolitem = gtk_tool_button_new_from_stock (GTK_STOCK_ZOOM_OUT);
    gtk_toolbar_insert (GTK_TOOLBAR (toolbar), toolitem, 1);
    g_signal_connect (toolitem, "clicked", G_CALLBACK (zoom_out), info);

    gtk_widget_size_request(toolbar, &requisition);

    /* HACK: adjust for frame width & height + packing borders */
    img_height += requisition.height + 30;
    win_height += requisition.height + 30;
    img_width  += 20;
    win_width  += 20;

    scroll = gtk_scrolled_window_new (NULL, NULL);
    gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll),
                                    GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
    gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scroll),
                                           GTK_WIDGET (info->image));
    gtk_box_pack_start (GTK_BOX (vbox), scroll, TRUE, TRUE, 0);
}

static void
view_surface (ViewerCbInfo * info,
              cairo_surface_t *surface /* adopted */,
              const char *color)
{
    GtkWidget *win;
    GdkColor bg_color;
    gint win_width, win_height;

    /* create toplevel window and set its title */

    win = gtk_window_new (GTK_WINDOW_TOPLEVEL);

    win_width = DEFAULT_WIDTH;
    win_height = DEFAULT_HEIGHT;

    populate_window (win, info, surface, win_width, win_height);

    /* exit when 'X' is clicked */
    g_signal_connect (win, "destroy", G_CALLBACK (quit_cb), NULL);
    g_signal_connect (win, "delete_event", G_CALLBACK (quit_cb), NULL);

    if (color && strcmp (color, "none") != 0) {
        if (gdk_color_parse (color, &bg_color)) {
            GtkWidget *parent_widget = gtk_widget_get_parent (GTK_WIDGET (info->image));

            gtk_widget_modify_bg (parent_widget, GTK_STATE_NORMAL, &bg_color);
        } else
            g_warning (_("Couldn't parse color '%s'"), color);
    }

    create_popup_menu (info);

    info->window = win;
    gtk_window_add_accel_group (GTK_WINDOW (win), info->accel_group);

    g_signal_connect (win, "button-press-event", G_CALLBACK (button_press_event), info);

    gtk_widget_show_all (win);

    set_window_title (info);
}

int
main (int argc, char **argv)
{
    int retval = 1;
    GError *err = NULL;
    GOptionContext *g_option_context;
    double x_zoom = 1.0;
    double y_zoom = 1.0;
    double dpi_x = -1.0;
    double dpi_y = -1.0;
    int width = -1;
    int height = -1;
    int bVersion = 0;
    char *bg_color = NULL;
    char *base_uri = NULL;
    gboolean keep_aspect_ratio = FALSE;
    char *id = NULL;
    GInputStream *input;
    GFileInfo *file_info;
    gboolean compressed;
    GFile *file, *base_file;
    cairo_surface_t *surface;

    int from_stdin = 0;
    ViewerCbInfo info;

    char **args = NULL;
    gint n_args = 0;

    GOptionEntry options_table[] = {
        {"stdin", 's', 0, G_OPTION_ARG_NONE, &from_stdin, N_("Read from stdin instead of a file"),
         NULL},
        {"dpi-x", 'd', 0, G_OPTION_ARG_DOUBLE, &dpi_x, N_("Set the # of Pixels Per Inch"),
         N_("<float>")},
        {"dpi-y", 'p', 0, G_OPTION_ARG_DOUBLE, &dpi_y, N_("Set the # of Pixels Per Inch"),
         N_("<float>")},
        {"x-zoom", 'x', 0, G_OPTION_ARG_DOUBLE, &x_zoom, N_("Set the x zoom factor"),
         N_("<float>")},
        {"y-zoom", 'y', 0, G_OPTION_ARG_DOUBLE, &y_zoom, N_("Set the y zoom factor"),
         N_("<float>")},
        {"width", 'w', 0, G_OPTION_ARG_INT, &width, N_("Set the image's width"), N_("<int>")},
        {"height", 'h', 0, G_OPTION_ARG_INT, &height, N_("Set the image's height"), N_("<int>")},
        {"bg-color", 'b', 0, G_OPTION_ARG_STRING, &bg_color,
         N_("Set the image background color (default: transparent)"), N_("<string>")},
        {"base-uri", 'u', 0, G_OPTION_ARG_STRING, &base_uri, N_("Set the base URI (default: none)"),
         N_("<string>")},
        {"id", 0, 0, G_OPTION_ARG_STRING, &id, N_("Only show one node (default: all)"),
         N_("<string>")},
        {"keep-aspect", 'k', 0, G_OPTION_ARG_NONE, &keep_aspect_ratio,
         N_("Preserve the image's aspect ratio"), NULL},
        {"version", 'v', 0, G_OPTION_ARG_NONE, &bVersion, N_("Show version information"), NULL},
        {G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &args, NULL, N_("[FILE...]")},
        {NULL}
    };

	/* Set the locale so that UTF-8 filenames work */
    setlocale(LC_ALL, "");

    g_type_init ();

    info.window = NULL;
    info.popup_menu = NULL;

    g_option_context = g_option_context_new ("- SVG Viewer");
    g_option_context_add_main_entries (g_option_context, options_table, NULL);
    g_option_context_add_group (g_option_context, gtk_get_option_group (TRUE));
    g_option_context_set_help_enabled (g_option_context, TRUE);
    if (!g_option_context_parse (g_option_context, &argc, &argv, NULL)) {
        exit (1);
    }

    g_option_context_free (g_option_context);

    if (bVersion != 0) {
        g_message (_("rsvg-view version %s\n"), VERSION);
        return 0;
    }

    if (args)
        n_args = g_strv_length (args);
    else
        n_args = 0;

    if ((!from_stdin) && (n_args != 1)) {
        g_printerr (_("No files specified, and not using --stdin\n"));
        return 1;
    }

    rsvg_set_default_dpi_x_y (dpi_x, dpi_y);

    compressed = FALSE;

    if (from_stdin) {
#if 0 // defined (G_OS_UNIX)
        input = g_unix_input_stream_new (STDIN_FILENO, FALSE);
#else
        input = NULL;
        g_set_error_literal (&err, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
                             "Reading from stdin not supported");
#endif
        base_file = NULL;
    } else {
        file = g_file_new_for_commandline_arg (args[0]);
        input = (GInputStream *) g_file_read (file, NULL, &err);

        if (base_uri)
            base_file = g_file_new_for_uri (base_uri);
        else
            base_file = g_object_ref (file);

        if ((file_info = g_file_query_info (file,
                                            G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
                                            G_FILE_QUERY_INFO_NONE,
                                            NULL,
                                            NULL))) {
            const char *content_type;
            char *gz_content_type;

            content_type = g_file_info_get_content_type (file_info);
            gz_content_type = g_content_type_from_mime_type ("application/x-gzip");
            compressed = (content_type != NULL && g_content_type_is_a (content_type, gz_content_type));
            g_free (gz_content_type);
            g_object_unref (file_info);
        }

        g_object_unref (file);
    }

    g_strfreev (args);

    if (input == NULL) {
        g_printerr ("Failed to read input: %s\n", err->message);
        g_error_free (err);
        return 1;
    }

    if (compressed) {
        GZlibDecompressor *decompressor;
        GInputStream *converter_stream;

        decompressor = g_zlib_decompressor_new (G_ZLIB_COMPRESSOR_FORMAT_GZIP);
        converter_stream = g_converter_input_stream_new (input, G_CONVERTER (decompressor));
        g_object_unref (input);
        input = converter_stream;
    }

    info.base_uri = base_file ? g_file_get_uri (base_file) : g_strdup ("");
    info.id = id;
    info.x_zoom = x_zoom;
    info.y_zoom = y_zoom;

    info.handle = rsvg_handle_new_from_stream_sync (input,
                                                    base_file,
                                                    RSVG_HANDLE_FLAGS_NONE,
                                                    NULL /* cancellable */,
                                                    &err);
    g_object_unref (base_file);
    g_object_unref (input);

    if (info.handle == NULL) {
        g_printerr ("Failed to load SVG: %s\n", err->message);
        g_error_free (err);
        return 1;
    }

    rsvg_handle_get_dimensions (info.handle, &info.dimensions);

    if (width != -1) {
        info.x_zoom = (double) width / info.dimensions.width;
    } else {
        info.x_zoom = x_zoom;
    }
    if (height != -1) {
        info.y_zoom = (double) height / info.dimensions.height;
    } else {
        info.y_zoom = y_zoom;
    }

    surface = render_to_surface (&info);
    if (surface == NULL) {
        g_printerr ("Unknown error while rendering image\n");
        goto done;
    }

    retval = 0;

    info.accel_group = gtk_accel_group_new ();

    view_surface (&info, surface, bg_color);

    /* run the gtk+ main loop */
    gtk_main ();

  done:

    g_free (info.base_uri);
    g_object_unref (info.handle);

    rsvg_cleanup ();

    return retval;
}


DE PERE - St. Norbert College collected a power-play goal by sophomore forward Lauren Roethlisberger with 3:53 remaining to claim a 3-2 win over Oswego State University to compete the non-conference series sweep at the Cornerstone Community Center's Resch Olympic Pavilion.
The Green Knights (8-5-1) got the game-winning when Roethlisberger jammed home a loose puck from the doorstep at the 16:07 mark of the third period for her fifth goal of the season. Oswego State (8-4-1) pulled its goaltender with 1:03 remaining, but the Lakers couldn't net the equalizer.
St. Norbert took a 2-0 lead in the game. Andera Senne scored her second goal of the season with a marker at 13:04 of the first period. Zoe Kurth then put the Green Knights up by a pair with a power-play goal at 12:14 of the second period.
The Lakers answered with a goal by Erika Truschke at 18:15 of the second period to halve the deficit by second intermission. Kendall Appelbaum's power-play goal at 8:15 of the third period tied the game.
St. Norbert outshot Oswego State by a 40-30 margin. The Green Knights were 2-for-3 on the power play, and 4-for-8 with the extra skater in the series. Oswego State was 1-for-4 on the power play.
Kaley Gibson made 28 saves for the Green Knights, while Tori Trovato made 37 stops for the Lakers.


text:
Giotto at the Movies
Interior of the Scrovegni Chapel, Padua, Italy. © José Luiz Bernardes Ribeiro
Since the year 1305, visitors to the Scrovegni Chapel in Padua, Italy, are also entering a 14th century movie palace. On the chapel's walls and ceiling a favorite Biblical epic, The Story of Mary and Christ, unfolds its narrative in a sequential series of compelling, innovative frescoes, which are among the most important breakthroughs in western art. They were created by the great Florentine master designer, painter — and, yes, director/animator –Giotto di Bondone (1266/67 – 1337).
Giotto had an intuitive genius for visual storytelling and connecting emotionally with his mostly illiterate audience. In his hands, the story's characters look and act like real humans. They live in familiar-looking Italian hills, houses and meadows; they communicate directly with viewers, make them participant's in the story. Viewing the paintings becomes a shared, immersive experience.
This was a profound change from Byzantine symbolism. Those remote, expressionless, cord-of-wood figures floating on gold backgrounds are beautiful, but cold and distant imagery compared to Giotto's work. By contrast, his paintings are mirrors of the human condition. A farmer's son, he plowed the field, as it were, of modern representational art for key figures of the High Renaissance, such as Michelangelo, Raphael, and Leonardo da Vinci; the latter artist, born over 100 years after Giotto died, once remarked that post-Giotto "art declined."
Always impressive is Giotto's staging of scenes containing multiple figures. Unerringly, with great clarity, he focuses our eyes like a movie director. His "actors" express a wide palette of emotions, among them love, hate, horror, anger, fear, pity and sorrow. It's all there, expressed with subtle economy and understatement in the poses and staging. Giotto's art is truthful and, therefore, believable. Or "sincere," the word older Disney animators used to describe sensitive character animation.
A superb example of Giotto's gifts is the "Kiss of Judas" fresco depicting the moment just after Christ is betrayed to the arresting soldiers by an identifying kiss from Judas Iscariot, one of Christ's apostles. The scene takes place in the midst of a swirling, unruly mob whose spears, halberds and torches serve as directional arrows pointing toward the two men at the center. The embracing folds of Judas' yellow cloak — the color a psychological tell for his cowardly act — lead our eyes toward an affecting "close-up" of Jesus and Judas.
Jesus' expression is calm, compassionate, forgiving, as he gazes directly into Judas' eyes. His betrayer, by contrast, shorter or lower in position, appears to be frozen with guilt. His eyes sink into his furrowed, simian-like brow; his lips are still puckered. He is locked in fear and self-loathing. Amidst noisy turmoil, the stare between the two men is quiet; a surreal, slo-mo, time-stopping moment of private thoughts.
The Scrovegni fresco "cinema" also offers romance and a full-on, physical expression of love. When Joachim and Ann (parents of the Blessed Mary) embrace each other after months of absence, their eyes and lips lock as their hands tenderly and passionately pull each other close.
For on-screen horror, few blood-and-guts film scenes can compete with Giotto's shocking fresco of the Slaughter of the Innocents: babies torn from their agonized mother's arms are slaughtered by King Herod's goons, amid a pile of massacred children.
Giotto also possessed a sense of humor and wasn't shy of displaying comic relief in otherwise serious contexts. Observe the scene-stealing, braying camel that startles its handler in the "Adoration of the Magi" fresco.
The artist's personal humor endeared him to his friends. He was said to be a homely man, and legend has it that Dante (who apparently had no filter) once asked Giotto how he could create such beautiful paintings and such ugly children. The artist allegedly replied: "I make my pictures by day and my babies at night!"
Can today's animators and filmmakers still learn from an artist who lived more than 700 years ago? Of course! One can always profit from analyzing Giotto's visual communication techniques. I contend that Albert Hurter did precisely that in Walt Disney's first feature, SNOW WHITE AND THE SEVEN DWARFS (1937).
An excellent draftsman, Hurter (1883-1942) arrived at the Disney studio in 1931 at age 48 with an extensive background in fine arts training and study in Europe. With his encyclopedic knowledge of art history, he often regaled his cartoonist colleagues with descriptions of the art of Vincent Van Gogh, Herman Vogel, Honoré Daumier, Gustave Doré, Franz Stuck, and Heinrich Kley, among others.
Hurter became the Disney studio's first "inspirational sketch" artist: he created hundreds of imaginative conceptual drawings, ideas for personality gags and visualizations that would inspire the studio's directors, writers, storyboard artists and animators. In SNOW WHITE, his visual influence is all-pervasive. Of particular interest is a sequence that is a breakthrough in the art of character animation: the seven dwarfs grieving over the inert body of Snow White.
For Walt Disney, it was a daring gamble. For he hoped audiences would suspend their disbelief to find believable the emotions expressed by cartoon characters mourning the "death" of another toon. In dozens of sketches, Hurter relentlessly searched for the right body language and facial expressions for the dwarfs as well as suggestions for positioning the characters around the bier within a cottage setting, ideas for lighting, mood and so on.
His creative search, to my mind and animated eye, was similar to Giotto's process in creating the Lamentation fresco in Scrovegni Chapel. It is reasonable to assume that Hurter, art history maven, knew of and may have found useful, the composition and gestures of the 14th century master's painting. Giotto's brilliant placement of individualized mourners, each grieving in their own way — quietly mournful to hysterical disbelief — as guideposts, leading our eye to the prostrate Christ embraced in his mother's arms. Above, ten angels mirror the scene, and they behave in distinctively individual mourning poses and expressions, too.
Similarly, Hurter's dwarfs each display sorrow in seven distinct ways: staring in disbelief, weeping openly, some so distraught they avoid looking at the radiant princess' body, whose glow rivals the light emanating from the candles behind her.
When master animator Frank Thomas (1912 – 2004), with great subtlety, transformed Hurter's idea sketches into animation drawings (see below), audiences wept at the final result.
As my friend, animation historian John Culhane, once said regarding Snow White's lamentation sequence: "Moving drawings became . . . moving drawings."
11384total visits,1visits today
Author John CanemakerPosted on June 15, 2017
5 thoughts on "Giotto at the Movies"
John McElwee says:
Thanks for this marvelous piece. I've been enjoying a book and documentary series, "Art Of The Western World," that deals in part with Giotto, so your observations were timed just right, and very welcome. You also have a very pleasing design here — particularly like the banner.
Judith Trojan says:
Such wonderful insight and marvelous interconnections! I studied Giotto in college and your sharply focused piece brought his work back to me in a refreshing new way. Ditto for the seven dwarfs… Many thanks!
Michael Barrier says:
A lovely post. Phyllis and I visited the Scrovegni Chapel almost twenty years ago, and a return visit is part of my life's unfinished business. The Disney parallel seems exactly right. The great Disney cartoons are distinguished by their simplicity and directness, and those are exactly the virtues that make the Giotto frescoes so powerful and moving.
Russell Merritt says:
Strangest of all, the most powerful way to experience the power of the Scrovegni frescoes is the way Hurter did — in reproduction. Sadly, the Chapel itself has become a somewhat grotesque tourist attraction. To protect Giotto's work, visitors are decontaminated for 15 minutes and then enter the chapel in clusters, given another 15 minutes to look around while a tour guide talks into her mini-speaker. Your bravura connections, John, not only showed how to see Giotto's art from a fresh perspective, the Scrovegni Chapel opens up broader questions of what it means to say, "I've seen that work."
Lynne McVeigh says:
Very impressive and connection to "Snow White" a real eye-opener. Thank you for this excellent blog.
Previous Previous post: Revisiting 1981: "Disney Animations and Animators" at the Whitney Museum
Next Next post: FOREVER FISCHINGER!
Site customized and managed by Joseph Kennedy


Our Micro D - micro miniature connectors are extremely popular due to their rugged & reliable design and customization ease.
Suited for navigation, radar, communications, avionics, medical device, engine controls applications and more.
Micro-D interconnects are available in I/O, straight, right-angle & SMT board-mount models.
Our Micro D connectors meet or exceed MIL-83513 performance specifications. Our rugged, mission critical connectors are available in a variety of configurations.
Our technical team can assist you with new designs or they can cross refer other Micro D manufacturer part numbers.
Please e-mail sales@jacarem.co.uk or phone 01494 791336 for further technical assistance or support on Micro D connectors.


text:
import converters
import parser
import sys
import json

# // test bot logic
def bot_logic(game_state):
    return 0

# // todo: need parsing game_state: is_someone_allin(), is_someone_rise(), get_active_players(), get_all_money_in_game()
# // todo: get_probabillity()
# // todo:
# fold = 0
# someone_allin = True # is_someone_allin()
# noone_rise = False # is_someone_rise()
# active_player_count = # get_active_players()
# our_probabillity_to_win = get_probabillity()
# current_pot = get_all_money_in_game()
# if someone_allin:
# 	if is_good_chance_to_win():
# 		return all_in
# 	else
# 		return fold
# elif noone_rise:
# 	return big_blind * 3
# else:
# 	amount_to_call = get_max_rise();
# 	if is_probabillity_good_to_play():
# 		return amount_to_call

class Player:
    VERSION = "1.5"
    NAME = "Kraken"

    def __init__(self):
        self.bet = 0
        self.risk = 1.
        self.accuracy = 1000
        self.active_players = 0
        self.our_player = None

    def get_preflop_probability(self, hand, players_count):
        preflop_probability_table = parser.Parser().parse_preflop("preflop.txt")
        hand_converted = converters.server_to_table(hand)
        print "HAND_CONVERTED:", hand_converted
        try:
            preflop_probability = preflop_probability_table[hand_converted][players_count - 1]
        except:
            print "START_CONVERTING"
            hand_converted_2 = hand_converted[1] + hand_converted[0]
            if len(hand_converted) == 3:
                hand_converted_2 += hand_converted[2]
            print
            "HAND_CONVERTED_2:", hand_converted_2
            try:
                preflop_probability = preflop_probability_table[hand_converted_2][players_count - 1]
            except:
                preflop_probability = 100

        print "PREFLOP_PROB_EXIT"
        return preflop_probability

    def checkBet(self):
        print >> sys.stderr, "CHECK_BET"
        current_buy_in = self.game_state["current_buy_in"]
        if current_buy_in == self.our_player["bet"]:
            self.bet = 0
        else:
            self.bet = self.our_player["bet"]

    def foldBet(self):
        print >> sys.stderr, "FOLD_BET"
        self.bet = 0

    def callBet(self):
        print >> sys.stderr, "CALL_BET"
        self.bet = self.game_state['current_buy_in'] - self.our_player['bet']

    def raiseBet(self):
        print >> sys.stderr, "RAISE_BET"
        self.bet = self.game_state['current_buy_in'] - self.our_player['bet'] + self.game_state['minimum_raise']

    def all_in(self):
        print >> sys.stderr, "ALL_IN"
        if self.our_player:
            our_stack = self.our_player["stack"]
            self.bet = our_stack
            return self.bet

    def maxStack(self):
        players_list = self.game_state["players"]
        maxStack = 0
        for pl in players_list:
            if pl["status"] == "active" and pl["name"] != Player.NAME:
                if pl["stack"] > maxStack:
                    maxStack = pl["stack"]

        return maxStack

    def betRequest(self, game_state):
        self.game_state = game_state

        try:
            players_list = game_state["players"]
            for pl in players_list:
                if pl["status"] == "active":
                    self.active_players += 1

            for player in players_list:
                if player["name"] == Player.NAME:
                    self.our_player = player
                    break

            print "ACTIVE PLAYERS: ", self.active_players
            hand = self.our_player["hole_cards"]
            preflop_probability = self.get_preflop_probability(hand, self.active_players)

            tmphand = []
            lastProb = 0
            if len(game_state["community_cards"]) > 0:
                for cardOne in hand:
                    for cardTwo in game_state["community_cards"]:
                        tmphand = [cardOne, cardTwo]
                        preflop_probability = self.get_preflop_probability(tmphand, self.active_players)
                        if (preflop_probability > lastProb):
                            lastProb = preflop_probability
                preflop_probability = lastProb
            else:
                preflop_probability = self.get_preflop_probability(hand, self.active_players)

            print >> sys.stderr, "HAND:", hand, "PROBABILITY: " + str(preflop_probability)
            if preflop_probability < 35.0:
                self.foldBet()
            # elif preflop_probability >= 35.0 and preflop_probability < 37.0:
            #     self.checkBet()
            elif preflop_probability >= 37.0 and preflop_probability < 50.0:
                self.callBet()
            elif preflop_probability > 50.0:
                maxUsersStack = self.maxStack()
                if maxUsersStack != 0 and maxUsersStack < self.our_player["stack"]:
                    self.all_in()
                else:
                    self.raiseBet()
            elif preflop_probability == 100:
                self.all_in()
        except Exception as e:
            print >> sys.stderr, "MAIN EXCEPTION: ", e.message
            self.all_in()
        finally:
            print "FINAL_BET:", self.bet
            return self.bet

    def showdown(self, game_state):
        pass

# pl = Player()
# data = {
#     "tournament_id":"550d1d68cd7bd10003000003",
#     "game_id":"550da1cb2d909006e90004b1",
#     "round":0,
#     "bet_index":0,
#     "small_blind": 10,
#     "current_buy_in": 320,
#     "pot": 400,
#     "minimum_raise": 240,
#     "dealer": 1,
#     "orbits": 7,
#     "in_action": 1,
#     "players": [
#         {
#             "id": 0,
#             "name": "bob",
#             "status": "active",
#             "version": "Default random player",
#             "stack": 1010,
#             "bet": 320
#         },
#         {
#             "id": 1,
#             "name": "Kraken",
#             "status": "active",
#             "version": "Default random player",
#             "stack": 1590,
#             "bet": 80,
#             "hole_cards": [
#                 {
#                     "rank": "6",
#                     "suit": "hearts"
#                 },
#                 {
#                     "rank": "K",
#                     "suit": "spades"
#                 }
#             ]
#         },
#         {
#             "id": 2,
#             "name": "Chuck",
#             "status": "out",
#             "version": "Default random player",
#             "stack": 0,
#             "bet": 0
#         }
#     ],
#     "community_cards": [
#         {
#             "rank": "4",
#             "suit": "spades"
#         },
#         {
#             "rank": "A",
#             "suit": "hearts"
#         },
#         {
#             "rank": "6",
#             "suit": "clubs"
#         }
#     ]
# }
# json_data = json.dumps(data)
# json_msg = json.loads(json_data)
# pl.betRequest(json_msg)


text:
The Stag Inn (Hastings)
The Stag is the oldest pub still open in Hastings. Standing in an elevated position on the eastward side of All Saints Street, Hastings Old Town, with whitewashed walls and oak beams, the pub dates from 1547. It has a wealth of oak beams, winding passages and stairways. The front is in Georgian style, added by the Victorians. There are inglenook fireplaces and a secret passage, filled in around forty years ago, that possibly, led to All Saints churchyard.
There are two bars. The front is the most commonly used and features the famous "mummified" cats. More correctly smoke dried cats, they were found in a chimney on the first floor during the 1940s. Until the 1980's they hung from the corner of the metal work above the bar. Due to their fragile state it was decided to rehouse them in their current abode in a custom made wooden case. There is no historical evidence, but it is popularly believed they belonged to Hannah Clarke, a witch, who is said to have occupied the Stag in the earlier part of its existence.
Outside, at the rear, is the designated smoking area, a patio and a further two tiers of a steeply inclined garden. The middle tier features picnic tables whilst the top tier features a newly planted orchard with a bower and a large wicker man.
During the summer months the garden attracts many visitors. It is not suitable as a children's play area, due to its steepness, and for the same reason food is not served above the patio level.
For entertainment, Monday nights are informal quiz nights. Tuesdays are an open English Folk session which has been in existence for over forty years. Bluegrass music on Wednesdays, and shanty singing with the Hastings Shanty Singers on Thursdays. Other bands are occasionally booked for the weekends. Friday, Saturday and Sunday the Stag becomes more food orientated with the bars reverting to a traditional atmosphere of quiet chatter amongst friends.
14 All Saints Street, Hastings, East Sussex. TN34 3BJ
14 All Saints Street, Hastings, East Sussex. TN34 3BJ. UK
http://www.shepherdneame.co.uk/pubs/hastings/stag-inn
Every Monday 8.30pm


The Salem faith family realizes that many who visit with us in person, or visit our website, have not yielded their lives to Jesus Christ, and may not even know much about the Bible, about the Christian faith, or about Jesus. Or, what you have heard might not be quite right.
We invite you to check out Two Ways to Live for a brief presentation of the gospel message (the good news).
Additionally, we periodically offer short courses to provide an understanding of the basic tenets of the Christian faith, focusing on the Gospel of Mark in the Bible. These courses consist of only six sessions, usually one per week. We provide the materials, we provide a Bible, and you will not be called on to pray or even to talk, but you will have opportunity to ask questions if you like.
We invite you to explore who Jesus is!
NEXT COURSE BEGINS: indicate your interest by filling out the online form.


Stephanie is a graduate of Michigan State University's School of Hospitality within the Eli Broad College of Business. After graduation she began her real estate career in Chicago, Illinois, with Koenig & Strey, one of Chicago's premier real estate firms, and then joined Toll Brothers, a luxury home builder, as Sales Manager in South Barrington, Illinois. Subsequently, she worked with another residential/commercial firm in Michigan, and then another in Washington, D.C., before joining Washington Fine Properties in 2011.
Stephanie prides herself on exceptional customer service. Her attention to detail and ability to multitask will ensure a smooth and efficient real estate transaction. With her diverse sales background, including sales for a luxury home builder and several condominium projects in the DC area, Stephanie brings a wealth of experience to guide her clients through the entire real estate process. She has worked with the most discerning clients and has successfully executed many complex transactions. With her extensive knowledge of the greater DC area and her professional sensibility and positive attitude, Stephanie is a delightful agent to work with for all your housing needs.
Living where she works, Stephanie resides in Friendship Heights with her yellow lab, Sophie.
Stephanie was our saving grace during our first home-buying process. From start to finish, she was incredibly attentive to our endless questions about real estate, walking us through every detail and explaining the ins and outs. Not only is she very knowledgeable about the local market, but she�s also extremely competitive, which helped us put forth a smart, reasonable, and attractive offer that beat out multiple others. Working with Stephanie was the best decision we made to find our first home.
We would not be homeowners without Stephanie�s help! Stephanie was patient, professional and compassionate throughout the entire process. As first-time homebuyers with significant student debt, Stephanie anticipated the unique challenges we faced, listened to us, understood what we needed in our first home, and help set realistic expectations. With more than 15 years' experience, Stephanie�s expert knowledge of the market, attention to detail, and timeliness, helped us navigate the highly competitive environment and frequent multiple-offer situations in the DMV.
Stephanie�s strategies and counsel helped us prepare the best offer possible to maximize the likelihood of success. Her advice was critical in deciding how much to offer, and she always placed good value above all else. From Day 1 through closing, Stephanie was our advocate and always put our interests as buyers first; she made sure we were fairly treated by the sellers, lender, appraiser, and co-op board. Now that we have moved in, we are confident we paid an extremely fair price and couldn�t be happier with our new home.
We met Stephanie in 2010 when we contacted her after her flyer arrived in our mailbox announcing her recent sales in our neighborhood. We had no intention of selling our condo at the time but we wanted to be ready when the time came. Stephanie stayed in touch with us in the most patient and professional way (for seven years!) until we were ready to sell.
Fast forward to 2017 when we finally committed to selling our condo, Stephanie stepped right in to get our condo sold, at a great price, in a timely manner, and find us a new home.
Stephanie was exceptionally responsive, organized, thorough, knowledgeable, and trustworthy. Stephanie was always a few steps ahead of the process and kept us informed every step of the way. She stepped beyond her role as realtor, becoming a mentor, advisor and friend to us. She wears many hats and wears them very well! At one showing she was even prepared with a game to entertain our children while my husband and I toured and discussed the home at our leisure. She was key to keeping the home-selling/buying process stress-free and enjoyable. What I appreciated most was her commitment to us and genuine interest towards finding us a home in a neighborhood we love.
We're so grateful that flyer showed up in our mailbox seven years ago and brought us to Stephanie.
Stephanie was a motivated agent when we met at an open house. Her follow-up was amazing. She found a lot of houses to show me and was very flexible on times to show them (even picked me up from a work event once). I couldn�t be happier with the house and neighborhood she helped me find and her services. I highly recommend Stephanie if you are looking for a go-getter - which is needed in the DC market!


text:
Monday Aug 13 2018
Tabla player Babar Khanna says he was beaten up outside Lahore residence
Monday Aug 13, 2018
Babar Ali Khanna. Photo: Coke Studio
Tabla and dholak player Babar Ali Khanna, who is a member of Coke Studio's house band, was threatened and beaten up outside his Lahore residence on Sunday night.
Babar recalled the incident in a Facebook live video and showed the state of his house following the attack.
The tabla and dholak player said that gun shots were fired outside his house and bricks were hurled at his gate.
Khanna's neighbours also appeared in the video and said, "Eight to 10 men on motorcycles arrived at his house and beat him up."
Another neighbour said, "I don't know who those people were but this is not right and Babar is well-respected in the neighbourhood. We are all terrified."
Khanna emphasised in the video that he does not know who the people were.
Khanna whose musical journey spans over 29 years has been a part of Coke Studio since season one.


In 2017, Darlene F. Blondin was a General Legal And Kindred Administrator at the U.S. Tax Court in Washington, District Of Columbia.
Darlene F. Blondin is a GS-12 under the general schedule payscale.
It is possible that Darlene F. Blondin has also worked at the . See more information here.
Employee report contains full federal employment and salary history for Darlene F. Blondin from 2013 through 2017.
If more information is required, you may request a full employee report containing salary information and all publicly available data for Darlene F. Blondin by clicking here.