text:
Ubisoft Publishes WWI Drama Game Valiant Hearts: The Great War For Android And Android TV
Michael Crider
6:22pm PST Nov 25, 2014
Valiant Hearts isn't your usual war game. You won't be blasting through thousands of bad guys like BJ Blazkowitz, you won't be commanding an entire army like an over-the-top Command & Conquer general. Valiant Hearts is incredibly story focused, as it considers itself more of a playable comic book than a video game. It's also about World War I, which hasn't exactly been a popular subject for video games.
This trailer is for the PC and console version, but the mobile version looks very similar.
In the various episodes of Valiant Hearts: The Great War, you'll follow the stories of a German family living in France as the war begins, after which the father is deported and drafted into the German army. In serving the story, the gameplay shifts between small portions of adventure-style point and clicking, simple puzzles, and low-stress action segments. You'll do everything from dodge bullets to drive vehicles to perform battlefield surgery, none of which is particularly difficult, because Valiant Hearts is more interested in telling a surprisingly human story.
This is contrasted in an interesting way by the cartoony hand-drawn art, which often clashes (in a good way) with the bleak events and themes. In between the gameplay, Valiant Hearts will try to educate you about The Great War. Items and locations in the game have extensive museum-style flavor text that gives you historical context for the fictional story.
Valiant Hearts has been available for PC, consoles, and iOS for a while now, and there are two ways to play it on Android: on your phone or tablet or your Android TV device. Well, sort of: the Play Store listing for the Android TV version isn't compatible with the Nexus Player or the ADT-1 developer box, which means that nobody's playing it until someone makes more Android TV hardware (or Ubisoft fixes its Play Store compatibility settings). On regular Android, you get the first chapter of the story with your $5 purchase of Valiant Hearts: The Great War, with more chapters available as in-app purchases at $4.48 each, or you can get episodes 2-4 together for just shy of ten bucks. There are four episodes in total. We don't know if the $15 Android TV version includes them all, though the listing is set up for IAP. This is about the same price overall as the Steam version.
The app was not found in the store. :-(
Valiant Hearts : The Great War
Developer: Ubisoft Entertainment
B&H App Gets Big Material-Inspired Makeover [Update: New Icon Too]
[Fire Sale] Amazon Admits Defeat, Now Offering Unlocked 32GB Fire Phone For $199 With No Contract
Ask us anything about the Galaxy Buds Pro (Q&A)


text:
Netanyahu: We will bring rule of law to Israel's cities with an iron fist
Prime Minister Benjamin Netanyahu vowed to crack down on rioters on Wednesday, after Arabs in mixed cities attacked their Jewish neighbors' homes, synagogues and businesses.
"We are in a struggle on multiple fronts," Netanyahu said on a visit to Acre. "Last night, after the discussions and decisions at the Defense Ministry about the Gaza Strip, I went to Lod at 2 a.m., another front that opened up with anarchy."
Netanyahu pointed to the extra police and Border Patrol officers sent with emergency powers to Lod and Acre following the violence, and said the government will continue efforts to "stop the anarchy and bring back the rule of law to Israel's cities with an iron fist if need be, with all the forces and authority necessary."
The prime minister called the rioting "intolerable" and "recalls visions from the past," a possible reference to pogroms or even Kristallnacht, as Lod's Mayor Yair Ravivo said after a synagogue in the city was ransacked.
"We cannot accept that – certainly not in our state," Netanyahu said.
Netanyahu also called on Arab leaders to condemn the violence and act to stop it, saying that Israelis are proud of coexistence and will not let others harm it.
"We will bring the cities back on track for integration, success and taking part in the Israeli wonder," he stated. "Whoever thinks they can roll us back will not succeed."

redpajama_set_name: RedPajamaCommonCrawl


I am admittedly crazy about notebooking. In the beginning, it started out with a fascination over lapbooking. Sprite loved minibooks with their interesting folds and the potential for creative expression. We made lots of lapbooks over the years. We used notebooking as early as first grade, but it didn't hold Sprite's excitement like lapbooking did.
As she grew older and her writing skills matured, she began to appreciate notebooking as a more grown up form of lapbooking.There really is a lot of overlap between lapbooks and notebooks; you can even combine them. There was a slow and natural progression from lapbooks to notebooks in my daughter's case. The stages, if I had to break them down, looked like this.
Now, at the close of seventh grade, Sprite rarely uses minibooks for her written narrations. She prefers the wide open space of a notebooking page or piece of paper.
What is notebooking? Notebooking is recording written narrations on paper and storing them in a notebook of some kind. But that is far too simplistic of a definition. Notebooking incorporates elements of scrapbooking, lapbooking, and creative expression. In this case, some images are helpful for understanding what notebooking is. Take a few minutes to look at the Notebooking Exhibit. There are lots of photos and explanations there.
I am so gung-ho into notebooking that I created a second blog The Notebooking Fairy and wrote an eBook guide called Notebooking Success.
The Notebooking Fairy has loads of free printables and how to posts devoted exclusively to notebooking.
I also have a Pinterest board devoted to notebooking for homeschool. My blog posts dealing with notebooking here at Jimmie's Collage can be accessed via this category link: Notebooking Blog Posts.
Even though I make my own notebooking pages, I buy my fair share as well. I use and recommend the pages and membership at (affiliate link) NotebookingPages.com.


The NRA has been firing back at false accusations made by the Washington Post including one that claimed the gun-rights advocate had illegal ties to Russia (Fake News). In a video released last week, Grant Stinchfield at NRA-TV suggested that the disgraced publication's motto should be, "Journalism Dies at the Washington Post," instead of, "Journalism Dies in Darkness." He called out the violence of the left and the lies told by the media.
"If gun-owners abused the Second Amendment the way you have abused your paper and the First Amendment, our rights would have been taken away long ago. You people do more damage to this country with a keyboard than every NRA member combined has ever done with a firearm."
Of course, slandering and libeling the NRA is a regular activity for the media.


text:
Chris Moon Talks Us Through His Dreamy A-List Oils
by Hannah Kane | Mar 31, 2014 | Culture | 0 comments
Few young British artists could count on the presence of Michael Fassbender, Ed Sheeran and Pam Hogg at the launch of their latest Shoreditch show. But then few young British artists have anything like the quiet self-assurance and technical accomplishment of east Londoner Chris Moon.
Palms Motel Pool 25 x 20cm, oil on paper, 2014, unique, signed by the artist, framed
Moon's lack of art school training has proved no barrier to his carving out an enviable niche as the purveyor of deliciously dense, dreamy oils with a stark, haunting heart. His current exhibition, A Splendid Isolation, which grew out of a three-month residency in California, features a series of landscapes that are mange to be both vibrant and desolate. Capturing the state's abandoned motels, forgotten towns, forlorn pools and hollow parties, Moon paints in the occasional abstract figure, drenched with their sense of place. This is Edward Hopper on a woozy beat road trip, with Salvador Dali at the wheel, and it's a gorgeous ride.
In an age of Instagram gratification and commercial pressure, Moon is an obsessive maverick, reworking each painting countless times. He has been known to near-complete a work before scraping it back down to a single mark and starting again. The layered narratives that emerge are mesmeric, and his burgeoning, celeb-heavy fan base agrees; half the paintings had already sold before the private view opened on Thursday night.
If you're at loose end tonight, we strongly recommend you head along to his free Q&A with Francesca Gavin, Visual Arts Editor of Dazed and Confused, taking place at the gallery at 7pm. However, the exhibition runs until 6th April, so you've got a couple of weeks to head over to catch this heady new talent.
PHOENIX took the opportunity to have a word with Moon and find out what makes him tick.
You're based in East London and precious collections have featured that area. Why LA, why now?
For a start it was meant to be a break, but as paint never really leaves my side I found myself in a studio in Downtown LA throwing it about. I was in a magazine out there and I decided after that to extend the visit, break my ribs surfing, get a van and disappear for a while. It was nice to create work that I didn't have any real ties to apart from preconceptions gathered from my youth. It was nice to just try it out and dip my toes.
Knife Shop 41x 24cm, oil on board, 2014, unique, signed by the artist, framed
Which was the most difficult painting to complete in the collection?
The whole body of work has been reinvented so much, it started as a travelogue in paint – which frankly bored the shit out of me – and as all work starts with yourself this was soon to change. I was almost painting with a history I didn't have for the place so it wasn't a comment on America. I soon realised I had to almost characterise what I saw and not recount it, so it became more of a feeling for the place rather than the place itself.
Talk us through your painting process, from idea to finished result.
Reinvention in paint can be the longest process, the years of not showing work helped me find this destructive path to finish. Before what I felt as hatred I can now use as a technique and in a lot of this work a very simplistic image could have a very different past. It could start as the physical embodiment coming full circle and ending in a clash of sometimes three or four different narratives.
What other contemporary/upcoming artists do you rate?
Most of the artists I like are either all dead or dying. I've not left my studio for 14 months so I've not really seen anything new apart from the interior of pubs, and there's no good art there.
Big Boy 32 x 47cm, oil on canvas, 2014, unique, signed by the artist, framed
What book, song, film and dish would you recommend right now
I don't have any real time to read as I work constantly, living as half man half biscuit. There's a good Chinese up the road.
Chris Moon, A Splendid Isolation opens 28 March at Forge & Co, 154-158 Shoreditch High Street.
Words: Molly Flatt


text:
Q: Check if SPWorkflow is running I have a SPWorkflow object and I want to check if this workflow is running. It's a Sandbox solution so I don't have access to SPWorkflow.SPWorkflowStatus.
I have tried the following:
if (workflow.InternalState != SPWorkflowState.Running)
{
     // the workflow is not running
}

but what I get in workflow.InternalState is a list of SPWorkflowState enum values: "Running" and "NotStarted". This doesn't make any sense to me.
It should be a pretty simple thing but just can't get it to work.
Does anyone have the solution to this?

A: The workflow is acting on an item (sometimes called a context item) -- you can get its GUID from workflow.ItemGuid.  Then, you can check the workflow status from one of its fields, as eirikb said.
Once you have the SPListItem, you can then query its properties to get the workflow status number.
Here is a blog post about this, but for completeness, here's some untested, on-the-fly code for you:
var parentList = workflow.ParentList;
var listItem = parentList.GetItemByUniqueId(workflow.ItemGuid);
var workflowStatus = listItem[list.WorkflowAssociations[workflow.AssociationId].Name]);

workflowStatus should be a positive int -- it's an enumeration value whose friendly name is outlined on the like eirikb noted.  Again, for completeness, here it is.

A: There should be a column on your list with the same name as the workflow association.
This column should contain a number which represents a status of your workflow. So if this column is set to 2 then your workflow is running.

redpajama_set_name: RedPajamaStackExchange


text:
Feature Articles > The Brush is the Sword of the Mind
The Brush is the Sword of the Mind
» Samurai Shodo Series All Articles
Meeting the Last Samurai
Saigo Takamori is known in the popular imagination as the Last Samurai. Although the movie by that name is roughly based on the life of Saigo Takamori, it is a work of historical fiction. The character played by Tom Cruise is Captain Nathan Algren, a fictional character who was based on Jules Brunet, a French military advisor who fought in the Boshin War on the losing Shogunate side. Ken Watanabe played Lord Moritsugu Katsumoto, a fictional character based on Saigo Takamori. And the filming took place in New Zealand! A highly successful film at the Box Office, it plays freely with fact and fiction, and indirectly presents one image of Saigo Takamori.
This is not the first time that Saigo Takamori has been fictionalized in the public image. Even during his life he was cast in an image to carry a cause, becoming what Professor Aoyama Tadamasa of Bukkyo University called, the Perfect Omikoshi, or portable shrine. Though villainized by the Meiji Government in the Seinan War, he was soon recast as a hero representing the essence of what it means to be Japanese. He was presented in Nishiki-e prints in various ways that took liberties with historical facts. We don't even know what he really looked like, as no real photographs of Saigo Takamori exist, and even his wife said at the unveiling of the famous Saigo Takamori statue in Ueno Park, "That is not my husband!"
He was cast and quoted as a model of behavior during the Pacific War to justify the sacrifices demanded of the Japanese people; and he was recast as a model of selfless dedication to public benefit under Democracy. Princeton University historian Charles L. Yates wrote a book, Saigo Takamori: The Man Behind the Myth, to help separate some of these images from what we know of Saigo Takamori's life. The Image of the Dai Saigo, Great Saigo continued to emerge in biographies, and in the 1975-76 novel by Shiba Ryotaro, Tobu ga Gotoku (Like Flying!), on which was based the 1990 NHK Taiga Drama by the same name. And now in 2018 Saigo Takamori emerges again in the Taiga Drama Sego Don!
You can read history and historical novels, watch documentaries and Taiga Drama, and even movies like the Last Samurai, which are pieces to the puzzle. They can be interesting, entertaining, informative, and sometimes misleading, depending on the point of view, who is telling the story, and who is portraying the character of Saigo Takamori.
Reading the Words of Saigo Takamori
There is another way of coming to know the man, and that is through the words and brushstrokes that he actually wrote. Calligraphy is like a silent recording of the author's voice, but it is only silent to those who look at the surface. In this article we will look at three ways to go below the surface in the writing, and encounter Saigo Takamori at a deeper level.
The challenge is that Samurai writing is often done in highly cursive (Sousho) brush strokes, as well as in archaic literary style, Sourou-bun for formal documents, or Kanbun for Chinese poetry. Reading the original is in the realm of the scholar, but fortunately there are scholars who convert the characters into more legible print, as well as providing translations and interpretations in modern language. The context of the writing is also important. Who was it written for, and for what purpose, and in what context? This interpretation makes it more accessible, but still only represents the first layer of intellectual understanding.
Reading the Character of Saigo Takamori
The next layer is to look into the character and psychology of the person, by examining certain features of the brush writing which reveal the character in the way that the strokes are written. This is known as Graphology, or handwriting analysis, and provides insights into the character behind the characters. In Japan, this has been studied deeply by the Japan Graphologists Association. An analysis of specific qualities of Saigo Takamori's brush writing appears in the illustrations, which was provided under the supervision of Ishizaki Senu Sensei, an experienced and Certified Graphologist, as well as my Calligraphy teacher.
In Saigo Takamori's brush writing we see many features that reflect what we might expect from what we know of the man in history. The closely guarded internal spaces between the radicals of the character reveals a man who was determined and dedicated to a cause, stubborn and not easily distracted from his higher purpose. We also see signs of his struggle in the collapsed spaces where strokes cross that were meant to be open. The strength of his initial strokes reveals a strong-willed man of purpose. The equal spacing of horizontal strokes, and the even spaces between characters reveals a man who can wait, and will not be hurried. His preference for a cursive style and continuous connection of strokes reveals the hand of a confident, concentrated man who was conservative and traditional in his values.
Interestingly, some characteristics of his handwriting vary depending on the circumstance, and to whom he was writing. His poem Reflections during Imprisonment (Gokuchu Kan ari), written when he was in exile on Okino Erabu Island, shows deep concentration without any deviation from the vertical line. This is consistent with the content of the writing, and the tone of Chinese style poetry drawing on Neo-Confucian philosophy applied to the reverence that anti-Shogunal Samurai felt toward the Emperor. Yet the vertical line of his writing tends to weave and even drift to the left in his letters to Okubo Toshimichi, attempting to persuade a friend who did not share his views.
Like other men of High Purpose who composed Chinese style poetry and lived by aphorisms, he was determined and intelligent, but not original. He lived in the Shadow of his Lord Shimazu Nariakira, who he revered so much that he considered following him in death. He cared for the common people, having observed the suffering and unequal treatment of farmers in his own domain as a young man. He lived to serve, which is the actual meaning of the word Samurai, and sought to achieve a purification of politics during the Meiji Restoration, only to turn his back on it when it did not live up to his Higher Purpose. He took strategic risks with equanimity, rationalizing that if he died in the process, it would have been for the Higher Purpose. He was able to endure punishment and exile, not in resignation, but in determination to discover and life by Principles.
Katsu Kaishu described him as a man who would respond like a drum, in accordance to how he was stricken. Most of these characteristics are consistent with the image of what we might expect from what we know of the man, and it is interesting to see them revealed in his own handwriting.
Reading the Mind of Saigo Takamori
But we can read further into the body and soul behind his writing, if we learn how to faithfully copy the strokes, with a mental or physical brush. To do this itself requires tremendous concentration, close observation, and a willingness to give up our own preconceptions and graphological bias. This means not only reading, but actually writing the strokes in the same rhythm, style, and breathing of Saigo Takamori. It requires practice and some technique, but it can lead you to the marvelous experience of transcending space and time, as if you were listening to the man's own voice through his writing. This is a humbling experience, and it can also help you discover the nuances of his personality, the subtle qualities which are often overlooked in scholarship and dramatic productions.
If you engage in this practice, that of faithfully copying Samurai Shodo with a brush, you will find that it enhances your ability to read and understand the man in the first two layers of reading his words and his character. From a young age the Satsuma Samurai were trained to develop courage and commitment in action. They studied Jigenryu Swordsmanship, as well as Neo-Confucian Classics and Calligraphy in their Samurai Schools (Shugo).No one can become Saigo Takamori, nor would you want to. However, anyone can benefit in this way by having a closer encounter with the man through his writing. By experiencing his brush strokes as he wrote them, you may even discover qualities of his character that can strengthen your own.
Tips on Writing like a Samurai
There are some features of Saigo Takamori's handwriting that you might want to adopt in your own.
Strong Stroke Beginnings
The brush grips the paper with a firm pressure, and executes the strokes boldly.
A Firm Central Axis
The vertical center line of each character is aligned above and below, and does not stray from the central axis.
Cursive Connections
This is best cultivated by writing in Gyousho or Sousho, which you can practice by copying single characters or phrases, while reflecting on their meaning.
William Reed is an American but a long-time resident of Japan. Currently a professor at Yamanashi Gakuin University, International College of Liberal Arts (iCLA), and Co-Director of Japan Studies. He holds a 10th-dan in Shodo from the Nihon Kyoiku Shodo Renmei, and a 7th-dan in Aikido from the Yuishinkai, and is a Shihan in Nanba Jutsu. A weekly television commentator for Yamanashi Broadcasting, he also has appeared numerous times on NHK World Journeys in Japan, and in documentaries as a navigator to traditional Japanese history and culture. Certified as a World Class Speaking Coach, he has also appeared twice on TEDx stages in Japan and Norway, and has written a bestseller in Japanese on World Class Speaking.
Samurai Shodo Series All Articles
│NEWS TOP│


text:
Wilhelm Spohr (* 3. Februar 1868 in Hamburg; † 9. Juni 1959 in Schöneiche bei Berlin) war ein deutscher Schriftsteller, Herausgeber und Übersetzer des niederländischen Schriftstellers Eduard Douwes Dekker (bekannter als Multatuli).

Spohr wird dem Friedrichshagener Dichterkreis zugerechnet. Er war Redakteur an Gustav Landauers anarchistischer Zeitung Der Sozialist. Als er wegen "Anstiftung zum Klassenhaß" zu einem Jahr Gefängnis verurteilt wurde, erlernte er dort die niederländische Sprache. Er wurde auf dem Schöneicher Waldfriedhof bestattet, sein Grab existiert heute nicht mehr.

Sein Bruder war der Fotograf Carl Friedrich Wilhelm Spohr (1861–1936).

Werke

 Glorie des Alters: Ein frohes Manifest (Berlin(-Steglitz), W. Hoffmann, 1940; 2. Auflage ebenda, 1954), mit Bildnissen von Friedrich Dreyer-Tamura
 Goethe, sein Leben und Wirken (Berlin: Safari-Verlag, 1949)
 O ihr Tage von Friedrichshagen! Erinnerungen aus der Werdezeit des deutschen literarischen Realismus (Berlin: "Lied der Zeit", 1949), die 3. Auflage erschien unter dem Titel Fröhliche Erinnerungen eines "Friedrichshagners": Aus der Werdezeit des deutschen literarischen Realismus (Berlin: Das Neue Berlin, 1951), eine 4. Auflage erschien 1999 (Berlin-Friedrichshagen: Antiquariat Brandel)
 Berliner Anekdoten: Ein Streifzug durch die Vergangenheit Berlins im Lichte der Anekdote (Berlinische Miniaturen Band 13, Berlin: Das Neue Berlin, 1952)

Bibliographie

 Albert Burkhardt: , online auf der Website Friedrichshagener Dichterkreis
 Jürgen Scharnhorst: , online auf der Website Friedrichshagener Dichterkreis

Literatur

 Grave, Jaap: "Verdammt sei, wem das nicht heilig ist". Die Korrespondenz von Wilhelm Spohr mit Mimi Douwes Dekker und dem J.C.C. Bruns' Verlag, Auswahl, Kommentar und Nachwort Jaap Grave (edition friedrichshagen 6), Berlin 2003, 220 p.
 Walter Fähnders: Der Multatuli-Übersetzer Wilhelm Spohr und die Friedrichshagener. In: 150 Jahre Max Havelaar / 150 Years Max Havelaar. Multatulis Roman in neuer Perspektive / Multatuli's Novel from New Perspectives. Hrsg./eds.: Grave, Jaap / Praamstra, Olf / Vandevoorde, Hans. Frankfurt/M. 2012, S. 161–174.

Weblinks

 Spohr & Münchhausen
 Spohr & Fidus
 Wilhelm-Spohr-Archiv im Archiv der Akademie der Künste, Berlin

Autor
Übersetzer aus dem Niederländischen
Übersetzer ins Deutsche
Person (Schöneiche bei Berlin)
Deutscher
Geboren 1868
Gestorben 1959
Mann

redpajama_set_name: RedPajamaWikipedia


text:
Avonmouth food waste plant to generate green power
Derek Sivyer
Policy, Press releases, Technical
ADBA PRESS RELEASE
Bristol's first food waste anaerobic digestion (AD) plant has officially been opened today (3 Dec) by Defra minister David Heath.
The plant which will produce enough renewable energy to power around 3,000 homes is operated by Wessex Water subsidiary GENeco will treat 40,000 tonnes food waste from homes, supermarkets and businesses across the south west – preventing it from going to landfill.
Based at Bristol sewage treatment works in Avonmouth, the plant can produce 10 GWh of energy a year from biogas generated through anaerobic digestion treatment – a process in which bugs break down biodegradable material to produce methane gas.
Charlotte Morton, ADBA, chief executive, said:
This is an excellent example of the entrepreneurial potential of the UK's water sector, demonstrating just how much can be produced from our waste food through anaerobic digestion, not only helping Wessex Water to significantly reduce its carbon footprint but also making a valuable contribution to improving the UK's energy and food security.
ADBA looks forward to seeing many more businesses across a variety of sectors following the lead of GENeco and Wessex Water in improving the sustainability of their operations whilst making the most from their food waste through anaerobic digestion.
AD has the potential to deliver 10% of the UK's domestic gas demand, with remarkably 60% of this coming from the food waste we have historically sent to landfill.
It is projects like these that will help to build the UK's reputation as a world leader in the digestion of food waste – and what's particularly exciting is that we can all help in this by supporting separate food waste collections.
Mohammed Saddiq, general manager, GENeco, said:
Anaerobic digestion has a huge role to play in the closed loop economy and the new facility at Avonmouth is an excellent demonstration of that, taking local food waste and generating extremely low carbon energy and a quality fertiliser to return to food production.
I am very pleased to be joined by Defra Minister David Heath and the chief executive of the Anaerobic Digestion and Biogas Association to open the plant.
News from EBA: new State Aid Guidelines could restrict FIT
The European Biogas Association have today circulated the following news to members:As expected, the European…
MEMBER PRESS RELEASE: CooperOstlund announces cooperation with Vaisala for 3-in-1 biogas instrument
Biogas plants can now extract more value from waste following the launch of the world's first in-situ 3-in-1 biogas measurement instrument.
CfD second round allocation: BEIS call for views on cost reductions and heat strategy
In the run up to the next allocation round for Contracts for Difference the Department…
previous post: Biomethane to grid – What are the challenges?
next post: GENeco food wast plant to generate green power


The Museumplein (museum square) is a public space in the Museumkwartier neighbourhood of the Amsterdam-Zuid borough in Amsterdam, Netherlands. Located at the Museumplein are three major museums the Rijksmuseum, Van Gogh Museum, and Stedelijk Museum and the concert hall Concertgebouw.
Exciting news! Brasserie De Roode Leeuw is currently undergoing a major transformation so that we are expected to be able to welcome you again in our fully renovated Brasserie in early 2019. The hotel remains fully operational during this renovation.


If you register your email address, you can receive our clinic information automatically. Please click the mail address below and send a mail (no need to enter any text). Please check your mail's security mode if you can't receive our mails.


text:
Inflammable material
a film by :Jacques Maillot
Bruno, Corinne, Luc and Juliette, four friends who will drop their mask. Over the space of three nights, the wish to be in love - like in a relay race - will pass from one to the other, wreaking havoc and forcing each one of them to see themselves as they (...)
40min - 35mm - 1.66 - Color - Short - Drama Comedy
Original language :French
a film by :Marion Laine
Jeanne works as an auxiliary in a maternity in Marseille. Day and night, Jeanne and her colleagues fight to help mothers and their babies against the lack of staff and constant management pressure. Jeanne lives with her 18 year-old daughter, Zoé. When (...)
91min - DCP - 1.85 - Color
Intruder (The)
a film by :Claire Denis
A passionate heart: Louis Trebor's journey describes a loop, the curve of the Earth as I imagine it. From the Jura Mountains in France to the Swiss border, from Geneva to Pusan in South Korea, and on to the South Seas. Louis Trebor lives in hiding. He (...)
127min - 35 mm - Scope - Color - Dolby SRD - Drama
Original language:French, Korean & Tahitian
INVISIBLE EYE (THE)
a film by :Diego Lerman
Buenos Aires, March 1982. On the streets of the Argentinean capital, people are challenging the military dictatorship. Marita is a supervisor at the Colegio Nacional in Buenos Aires, the establishment that trains the country's future elite. She is 23 and (...)
Argentina - France - Spain
95min - 35 mm - 1.85 - Color - Dolby SRD - Drama
Original language :Spanish
a film by :Alain Cavalier with the collaboration of Françoise Widhoff
Irène and the filmmaker. A powerful relationship but full of gray areas. Irène disappears. A private journal left behind resurfaces years later. A freshness. An attraction. A danger. How to make a (...)
85min - 35 mm - 1.85 - Color - Autobiographical fiction
IRINA PALM
a film by :Sam Garbarski
Middle-aged Maggie must find a way to get enough money for her grandson's lifesaving medical treatment and lift the dwindling hopes of her only son Tom and his wife Sarah. Desperation leads the respectable, middle-class widow to work as a hostess in a (...)
Belgium - Germany
103min - 35 mm - 1.66 - Color - Drama
Original language : English
IT'S HARD BEING LOVED BY JERKS
a film by :Daniel Leconte
Because he had published the twelve Danish cartoons that had triggered the wrath of Muslims worldwide, Philippe Val, the editor of Charlie Hebdo, a French satirical newspaper, was cited to court by the Great Mosque of Paris, the World Muslim League and the (...)
108min - 35 mm - 1.85 - Color - Documentary
Original language : French
Italian Romance (An)
a film by :Carlo Mazzacurati
Tuscan, 1936. Giovanni Mansani is 30 years old with a good job as a bank clerk, a wife and a small kid. His life flows on without worries or anxieties yet without any deep emotional involvement. One day, during one his daily journeys as a commuter to (...)
France - Italy
98min - Super 35 mm - Scope - Color - Dolby SRD - Drama
Original language : Italian
a film by :Daniel & Emmanuel Leconte
On the 7th of January 2015, French satirical weekly Charlie Hebdo was the victim of a terrorist attack that killed 12 people, including the greatest French cartoonists Cabu, Wolinski, Charb, Tignous and Honoré.
The following day a policewoman was (...)
90min - DCP - 1.85 - Color - Documentary
a film by :Etgar Keret & Shira Geffen
At her wedding reception, Keren breaks a leg, unwillingly forcing her to cancel her honeymoon in the Caribbean. A strange little girl comes out of the sea and follows Batya like a shadow; the woman's life is transformed when she takes the little girl under (...)
Israel - France
78min - 35mm - 1.85 - Color - Drama
Original language : Hebrew & English
JIMMY RIVIERE
a film by :Teddy Lussi-Modeste
Jimmy Rivière is a young Gypsy, bright and edgy, sometimes too edgy. Under pressure from his community, Jimmy converts to Pentecostalism and gives up his two passions: Thai boxing and his girlfriend Sonia. But how can he turn down the new match his trainer (...)
90min - 35 mm - Color - Scope - Dolby SRD - Drama
Joy of Singing (The )
a film by :Ilan Duran Cohen
Muriel and Philippe work for an intelligence agency and form an unlikely pair of lovers. Their latest assignment is to find a memory stick hidden by Constance, the widow of a recently murdered uranium trafficker. This strangely naïve, wealthy young woman (...)
98min - 35 mm - Scope - Color - Comedy
Just Anybody
a film by :Jacques Doillon
A girl in her twenties tries to bring a little light and levity to her life that she fi nds inadequate, futile and lacking in the intensity that she requires. She decides to give her love. Not to the most seductive guy, nor the most deserving or most (...)
France - Belgium
a film by :Hadrien La Vapeur and Corto Vaclav
In Brazzaville, an invisible world governs the visible world. The apostle Medard struggles to heal the sick victims of bad spells. But his life changes when he is publicly accused of practicing black (...)
Original language: Lari, French
LA JAURÍA
a film by :Andrés Ramírez Pulido
Eliu, a country boy, is incarcerated in an experimental young offenders institution, deep in the heart of the Colombian tropical forest, for a crime he committed with his friend El Mono. Every day, the teenagers perform hard manual labour and endure intense (...)
France - Colombia
Original language: Spanish
LAND AND SHADE
a film by :César Acevedo
Alfonso is an old farmer who has returned home to tend to his son, who is gravely ill. He rediscovers his old house, where the woman who was once his wife still lives, with his daughter-in-law and grandson. The landscape that awaits him resembles a (...)
97min - DCP - 1.85 - Color - Drama
LATEST NEWS FROM THE COSMOS
a film by :Julie Bertuccelli
Despite being nearly 30, Hélène still looks like a teenager. She writes powerful, physical texts with a caustic humour. As she herself says, she was part of a "miscalibrated batch that doesn't fit in anywhere". A visionary author, the thinking (...)
Le grand bal
a film by :Laetitia Carton
It's the story of a ball. A big ball. Every summer, more than two thousand people come from all over Europe, to a small town in the French countryside. During 7 days and 8 nights, people dance again and again, lose the notion of time, defy their fatigue (...)
89min - DCP - Scope - Color - Documentary
a film by :Michael Rowe
Laura is 25 years old. She's a journalist, she's single and lives in a small apartment in Mexico City. After a series of short-lived affairs, Laura meets Arturo. After the first time they make love, she is left deeply unsettled. They embark on an (...)
92min - 35 mm - Scope - Color - Drama
LEAVE IT TO LUCIE !
a film by :Emmanuel Mouret
Lucie and Lucien, both in their mid-twenties, have been living together for many years. Lucie sales bath suits on the beaches of Marseilles. Lucien, while he was taking the French police academy entrance exam, has been selected as secret agent. To hide his (...)
91min - Color - Comedy
a film by :Catherine Corsini
Suzanne is about forty years old, a doctor's wife and mother of two teenagers living in the south of France. Her idle bourgeois lifestyle gets her down and she decides to go back to work as a physiotherapist, a job she trained for but quit in order to (...)
Let's Say...
a film by :Françoise Marie
"Let's Say..." and the imagination takes over. Instead of playing the usual Cowboys and Indians, children between the ages of 8 and 13, sons and daughters of doctors, farmers, policemen or grocers, act out their parent's jobs in front of the camera. (...)
82min - 35 mm - 1.85 - Color - Documentary
a film by :Marianne Khoury
A mother and her daughter explore together the trajectory of four generations of women from their family, an Egyptian family from the Levant where life and cinema have been intimately linked and still are. A cross look between family archives where the real (...)
95min - DCP - 1.85 - Color/B&W - Documentary
Original language: Arabic, French
a film by :Andrey Zvyagintsev
Kolia lives in a small town near the Barents Sea, in North Russia. He has his own auto-repair shop. His shop stands right next to the house where he lives with his young wife Lilya and his son from a previous marriage Romka.Vadim Shelevyat, the Mayor of the (...)
LIEUX SAINTS
a film by :Alain Cavalier
Toilets, loos, lavatories, bogs and johns were places of refuge when I was young. Along with the end of the garden. I thought I had secrets, thoughts and things others must not know. Else danger.Confident solitude, well-being, required a door you could (...)
32min - Video - 1.33 - Color - Documentary


ANN ARBOR, Mich. (AP) — A University of Michigan fraternity has been removed from the school and student-run Interfraternity Council for at least five years following allegations of violent hazing and forced alcohol consumption.
The Ann Arbor News reports Thursday that evidence of hazing was found during Alpha Sigma Phi's new member process.
Zeta Beta Tau International Fraternity announced in January that it had revoked its University of Michigan chapter's charter after determining policies prohibiting hazing were violated.


Clint & Shanda Decker has involved with photography & videography since the early 90's. Specializing in Wedding Videography, Wedding Photography, Bridals, Engagements, Families, Senior Portraits, Professional Headshots, Real Estate Photography & more. Call, Text, or Email us to book your event. The Deckers Video & Photography offer Family Photographer services in Noah's Event Center. We offer video and photography services in Salt Lake County and Utah County. Contact us if your event is outside our normal service area.
Even in winter, this lake produces some amazing backdrops.
This family photo shoot was taken at the American Fork Amphitheater.


text:
Close Encounters of the Moose Kind
Bill Sherwonit, Anchorage.
15 November 2015 Art & Awareness, Essay, People & CommunitiesAwareness, Biodiversity, Experiencing Nature, North America, Wildlife People InteractionsBill Sherwonit
Now a century old, Anchorage has at various times during its short history proclaimed itself the "Air Crossroads of the World," a "City of Lights" and a place of "Big Wild Life" (the latter for the community's "perfect blend of urbanity and wilderness"). But I have long believed—and yes, opined in my writings—that Alaska's urban center could easily be called the "City of Moose." I'm not the only one to publicly express this view. Earlier this year, former state wildlife manager Rick Sinnott, now a contributor to the Alaska Dispatch News, went so far as to write a cover story for the ADN's Sunday magazine playfully promoting the City of Moose idea.
The question of how to weave our urban lives with wild nature is one faced in different forms all around the world.
Not only do hundreds of moose inhabit the city's landscape, most of the 300,000 or so people who live here appreciate the ungulates' big, wild presence. Clear evidence of that was demonstrated in a study conducted in 2009 for the Alaska Department of Game by a company called Responsive Management.
Anchorage's human residents share their city with hundreds of moose, who must negotiate assorted urban challenges. Used with permission of Alaska Department of Fish and Game
A moose dines on the fruit of an ornamental shrub in an Anchorage yard. Used with permission of Alaska Department of Fish and Game
Among the findings: "While acknowledging that moose cause some problems, the large majority of Anchorage residents (87%) say that encounters with moose make life in Anchorage seem more interesting and special. A further indication of tolerance toward moose is that an overwhelming majority (94%) indicate that they have enjoyed watching moose in the Anchorage area in the past 2 years."
Still, not everyone likes having moose around. Some folks are angered by the animals' taste for ornamental plants and garden vegetables and would like their numbers thinned. Others, particularly parents with children, understandably worry about the dangers moose present. And a vocal minority argues that cities are for people, period, and moose shouldn't be allowed here (nor should any other big, wild animals that can inflict injuries be tolerated, most notably bears, or so the argument goes).
A young moose takes up temporary residence in the yard of an Anchorage homeowner. Used with permission of Alaska Department of Fish and Game
Inevitable conflicts between people and moose, some of which lead to injury or even death, show the challenges of living with wildlife—and, more generally, wild nature—in an urban community, even in a place where most residents feel a close connection to what might be called the "natural world" and where people place great value on outdoors activities.
Most of the city's human residents live in what's called the "Anchorage Bowl," a roughly triangular piece of lowland bounded on two sides by the waters of Cook Inlet and on the third by the Chugach Mountains. That bowl is also year-round home to an estimated 200 to 300 moose, with winter numbers tripling, to between 700 and 1,000 animals, when they're driven out of neighboring hills by deepening snow and lured into the city by Anchorage's relative abundance of winter food, much of it in the form of fruit-bearing ornamental trees and shrubs.
Though their density varies through the year, moose can be found throughout Anchorage in any season, even in the heavily commercialized downtown and midtown areas. In fact, I'd wager that for much of the year there's no better locale in Alaska to see North America's largest member of the deer family. Many that inhabit the city prefer the parks, greenbelts and wooded lots of west Anchorage, including the Turnagain area, where I have lived since 2006 after more than a dozen years on the city's Hillside.
A cow moose nuzzles its newborn calf; cows are protective moms and will aggressively defend their young, especially in the days immediately following their birth. Used with permission of Alaska Department of Fish and Game
Cinnamon colored, moose calves usually weigh 30 to 35 pounds when they're born in late May or early June and will weigh 300 to 400 pounds by the fall. Photo: Doug Lindstrand
One cow moose, often accompanied by a calf or two, inhabits pockets of woods near Anchorage's much-beloved Coastal Trail, where I regularly walk my dog. Occasionally a bull will amble down the street, munching as he goes. And it's not rare, especially in winter, to find moose bedded down in either my yard or those of my neighbors.
I've always felt confident that I could track down an urban moose or two on short notice, if asked to show off the local wildlife by visiting family or friends. That confidence was put to the test when my mother's two sisters visited us a few years after Mom moved to Alaska from the East Coast in 2002.
As their early summer visit wound down, the three sisters agreed they'd had a grand reunion. But neither of my aunts had seen much of the local wildlife. On something of a whim, my girlfriend and I took Mom and one of her sisters on a driving tour of West Anchorage in search of moose (the other sister had earlier headed to the hills east of town with her son, also to seek out moose).
About four-five minutes later, we spotted a cow and two yearlings, grazing among a small grove of birches, about 50 yards off the road that leads to Kincaid Park. We parked along the shoulder to watch the animals and within minutes, several other cars pulled over and a dozen murmuring people lined the road, many armed with binoculars, cameras and video recorders. Clearly we weren't the only moose hunters out that night and I guessed evening expeditions like ours go on throughout the summer.
Former Alaska wildlife manager Jessy Coltrane watches a young moose that got "stuck" inside a fenced area and will need help finding its way out. Used with permission of Alaska Department of Fish and Game
Pleased but not fully satisfied, we headed for a birch-spruce forest near Anchorage's international airport. Leaving pavement for a dusty gravel road, we slowed to a crawl. Within a few minutes, a young bull appeared in a meadow behind some birch trees. Approaching to within 25 feet of our parked car, the yearling nonchalantly picked leaves from atop a willow. Later we spotted a mature cow browsing among the birches, likely the young bull's mom. Engine off, we watched silently for several minutes. Both moose gorged on greens, unconcerned by our presence.
Nearly 10 pm, with the light dimming, we headed back. Still, we didn't stop looking. About 5 minutes from home I noticed two shadowy forms beside heavily traveled Northern Lights Boulevard.
"More moose," I shouted to the others. "And this time there's a little one."
Little indeed. A tiny, chestnut-colored calf the size of a small pony stood beside its mother in an open, grassy area. We pulled over to the shoulder and, our windows wide open, paused nearby the pair. Because cow moose are notoriously protective of their young, I watched for any signs of upset. But this one showed no evidence of being the least bit agitated. She lifted her head slightly and looked our way, then calmly resumed her grazing.
We lingered less than a minute. Then in deepening darkness we finished our tour, more impressed than ever by the city's abundance of people-tolerant moose.
For all the remarkable tolerance they show—especially given our species' sometimes foolish, stubborn, or mean-spirited behaviors—even urban moose remain wild animals. If pushed too far, or surprised by a close encounter, they'll sometimes respond aggressively, especially when already stressed by circumstances.
Cow moose with newborn calves can be every bit as dangerous as bears. In 2012, for example, one protective mom injured two young girls playing in their yard. Following that attack in Eagle River (a community that's part of the Anchorage municipality, just north of the city), local wildlife manager Jessy Coltrane told a reporter that the girls "didn't do anything wrong. It was one of those accidental chance encounters." Coltrane (who has since taken a job outside Alaska) further explained that cows are especially protective of their young the first two weeks after their birth, when the newborns are most vulnerable. "After that, they run like the wind and mom isn't as aggressive in defending them."
A moose pauses while crossing an Anchorage street; moose-vehicle collisions are especially a concern in winter driving conditions. Used with permission of Alaska Department of Fish and Game
Though most Anchorage residents love sharing their city with moose, conflicts are inevitable, for example when moose and outdoors enthusiasts meet along trails. Used with permission of Alaska Department of Fish and Game
Mature bulls, which can weigh 1,000 pounds or more, are nearly as dangerous during the autumn rut, when they stop eating and fight each other for mating rights. The battles can take a substantial toll, leading to exhaustion, injuries, and agitated animals, and what we humans might call short-tempered behavior. And then there's winter, when extreme cold or deep-snow conditions may lead to stressed-out moose that sometimes attack a person with little or no apparent provocation.
Dogs, of course, add to the stress in all these circumstances, and lots of Anchorage residents have dogs that they take walking, running, biking, skiing, and mushing. Though Anchorage has leash laws, many people allow their dogs off leash when using local trails. Some of those loose dogs end up harassing moose—and in turn are attacked. Fish and Game has estimated that moose injure 50 to 100 dogs each year, with a small number killed. In my estimation, it could be a lot worse; from what I've observed, in most situations Anchorage moose show remarkable tolerance of dogs as well as people.
Injuries to people are uncommon. Coltrane, the former wildlife manager, once estimated that moose harm five to ten people each year in the Anchorage area. Rarely are those injuries life threatening. But in 1993 and 1995, Anchorage residents were stomped to death by agitated moose. One fatal wintertime attack was caught on video and made national news when a cow moose with calf, apparently feeling cornered, trampled a man trying to enter a university building. It turned out that the moose had earlier been bombarded by snowballs, no doubt increasing its agitation and defensiveness.
Recognizing the fact that close encounters between people and moose can lead to harm (not only in Anchorage, but anywhere people and moose are likely to cross paths), the Alaska Department of Fish and Game has created a "Living with Moose" advisory that includes a section on "Safety in Moose Country."
Up close and personal: portrait of a moose standing beside the window of an Anchorage home. Used with permission of Alaska Department of Fish and Game
Though local media tends to emphasize the dangers of moose attacks, the primary danger that Alces alces presents to people is in moose-vehicle collisions. Alaska, it turns out, has one of the world's highest rates of moose-vehicle collisions per mile driven. The danger is greatest in winter, when visibility is poorest, streets are often slick with ice and snow, and large snowfalls can prompt moose to seek the relatively easy traveling conditions offered by plowed streets (or packed trails). Besides the winter peak, moose are most frequently hit by cars following the calving season.
In Anchorage alone, an average of 150 moose are annually hit by vehicles. Almost always, the moose suffer fatal injuries. People are rarely killed, though two people died this past October in Anchorage, when on consecutive days their vehicles (one a car, the other a motorcycle) struck moose. More commonly, vehicles are "totaled" and human occupants injured, sometimes seriously. To minimize the danger, the state presents a series of safe-driving tips.
Whether they result from stompings or vehicle collisions, moose-caused injuries almost inevitably lead to calls for moose hunts within the Anchorage Bowl. Limited hunts are already allowed on the military's neighboring Joint Base Elmendorf-Richardson (JBER) and in the Chugach Mountains, but so far there's been no widespread support for an in-city hunt.
The most recent calls for moose hunts in Anchorage proper have been tied to increased recreational use at West Anchorage's Kincaid Park, most notably single-track biking. A particularly strong push was made in late 2014, when resident Ira Edwards officially proposed a Kincaid moose hunt to the Alaska Board of Game.
In a response to Edwards' proposal and a story about it by Rick Sinnott, I wrote a commentary that explained why a Kincaid moose hunt was an awful idea. Among my main points: rather than "troublemaker" moose, human actions—and especially bad judgment—have largely contributed to the upswing of moose-human conflicts at Kincaid, whether in organized events or other, informal recreational activities.
To further borrow from my commentary, I noted:
We are supposedly the more intelligent species, yet we sometimes behave in remarkably foolish, ignorant, or stubborn ways.
To repeat: the problem at Kincaid Park isn't trouble-making moose. The animals should not be hunted for public-safety reasons, Edwards' chief rationale for starting a hunt there. And if a persistently dangerous moose is identified, authorities should remove it, not sport hunters.
Sinnott's story also makes it clear that there's been no upsurge in moose at Kincaid. In fact, based on F&G studies, it's more likely moose numbers have dropped since the mid-1990s.
Nor is there any evidence that moose have become more aggressive. Based on my own experiences—I visit Kincaid many times throughout the year—I'd wager Kincaid moose are as habituated to people as they've ever been, if not more so. . . .
Though neither the number nor behavior of moose has changed substantially, what has shifted at Kincaid is the human element. As Sinnott wrote, 'Nowadays the park crawls with people most of the year.'
Actually, 'crawls' isn't the best word choice. Many of the people who recreate at Kincaid are moving fast: runners, soccer players, skiers, and especially cyclists. The explosion of single-track trails and those who use them are the single biggest change that's contributed to Kincaid's so-called moose 'problem.'
Those trails have greatly fragmented what remained of Kincaid's already diminished woodlands. Thus it's now harder for moose to avoid us humans and that in turn means more encounters. More conflicts.
Those who say we must have either a moose preserve or a moose hunt are creating a false choice. We can have both moose and human recreation. But people need to take more responsibility for their actions, they need to pay more attention to—and show tolerance for—our wildlife neighbors.
There's more, but you get the idea.
To its credit, the Board of Game refused to take action on the proposal, arguing it had no authority to make such a decision.
Future attempts to open Anchorage to moose hunts seem inevitable, especially as increased recreational use and fragmented habitat heighten the likelihood of moose-human encounters and conflicts. The question—even in outdoors- and wildlife-loving Alaska—is whether we humans, again, supposedly the more intelligent species, are willing to make the smart decisions and compromises necessary to harmoniously share the landscape with moose—or bears, or other wild species.
On the surface, the challenges may appear larger when dealing with sometimes agitated—or traffic ignorant—thousand-pound animals, but the question of how to weave our urban lives with wild nature is one faced in different forms all around the world. Moose simply make the challenges more obvious.
Bill Sherwonit
Born in Bridgeport, Conn., nature writer Bill Sherwonit has called Alaska home since 1982. His most recent books include Animal Stories: Encounters with Alaska's Wildlife, Living with Wildness: An Alaskan Odyssey, and Changing Paths: Travels and Meditations in Alaska's Arctic Wilderness.
Born in Bridgeport, Conn., nature writer Bill Sherwonit has called Alaska home since 1982. He has contributed essays and articles to a wide variety of publications and is also the author of more than a dozen books. His most recent books include Animal Stories: Encounters with Alaska's Wildlife, Living with Wildness: An Alaskan Odyssey, and Changing Paths: Travels and Meditations in Alaska's Arctic Wilderness. Most of Sherwonit's work focuses on Alaskan subjects, with an emphasis on wilderness adventure, wildlands preservation, environmental issues, natural history, wildlife management, relationship with place, and notions of wildness, including the wildness to be found in and around his adopted home, Anchorage. Sherwonit also teaches nature writing. View all posts by Bill Sherwonit →
← Reflections on "Laudato Si, On Care For Our Common Home" Neighborhood Planning for Resilient and Livable Cities, Part 3 of 3: Montréal's Green, Active and Healthy Neighborhoods Project →
One thought on "Close Encounters of the Moose Kind"
stephanie koonz says:
Nice informative and interesting writing, Bill. I have thoroughly enjoyed the 4 moose encounters (3 at one time in the parking lot of the elementary school across the road from where I live) ( 1 moose along the side of Debarr Road which eventually was killed in traffic-I grieved that one) and (one huge moose in the yard munching on all the bushes where I was housesitting in South Anchorage) I have had since I moved here to Anchorage a year ago.
Defining the Just City Beyond Black and White
Toni Griffin, New York City
When I think about the just city, it's always black and white I was born in Chicago the evening before President Lyndon Johnson signed the Civil Rights Act of 1964 into law. Growing up on the south side of Chicago meant that on an average day, I rarely saw or...
Cities in Imagination
David Maddox, New York
Resilience is the word of the decade, as sustainability was in previous decades. No doubt, our view of the kind and quality of cities we as societies want to build will continue to evolve and inspire new descriptive goals. Surely we have not lost our desire for sustainable cities, with...
Turning Migrant Workers into Citizens in Urbanizing China
Pengfei XIE, Beijing
One of the root causes of inequity is urban and rural differentiation China is experiencing a massive migration to the cities, mostly due to the availability of jobs and better facilities. But the way the government administers citizenship also creates inequity and poverty. Since the founding of the People's Republic...
Urban Spaces and the Mattering of Black Lives
Darnell Moore, New York
It was close to midnight. A youngish, jovial-looking white woman with russet colored hair ran by me with ostensive ease. She donned earphones and dark, body-fitting jogging attire. I was walking home from the A train stop and along Lewis Avenue, which is a moderately busy thoroughfare that runs through...
9 November 2015 History, the Detroit River and Building an International Wildlife Refuge Right David Goode, Bath
A review of Bringing Conservation to Cities: Lessons from Building the Detroit River International Wildlife Refuge, by John H. Hartig. 2014. ISBN: 978-0-9921007-4-2. Michigan State University Press, East Lansing, MI. Ecovision World Monograph Series. 282 pages. John Hartig is currently...
5 February 2018 Earthquakes, Constitutions, Urban Planning and Social Change: Lessons and Controversies from Mexico Lorena Zárate, Mexico City
For better or worse, 2017 was a historic year for both Mexico and Mexico City. This can be summed up in two numbers: 100 and 32. The first number celebrates the one hundredth anniversary of Mexico's Constitution, approved on 5 February 1917, and renowned as the first Constitution in the world to incorporate social rights. The second number, 32, marks...
9 February 2016 The New Vocabulary of Urban Landscaping for Southern California Stephanie Pincetl, Los Angeles
Kitty Connolly, Los Angeles
The drought in California over the last few years has been long enough and sufficiently severe to compel mandatory urban water restrictions from the State Water Resources Control Board, an unprecedented policy move. The Board has also required, for the...
24 March 2018 Socioecological Science is Failing Cities. The Humanities Can Help Diane Pataki, Salt Lake City
"Science cannot solve the ultimate mystery of nature. And that is because, in the last analysis, we ourselves are part of nature and therefore part of the mystery that we are trying to solve." — Max Planck As a graduate student,...


The Countess of Gruyère was beautiful, kind and warm-hearted. One could have thought that she had everything one could possibly desire. Unfortunately, however, she was sad, devastated in fact, because she had no children and, more importantly, no heir.
Needless to say, an heir is essential to keep a philandering husband at home, everyone knows that ! All the ladies in the small city on the hill went about their occupations surrounded by their rosy-cheeked, healthy and unruly little brood of children but she went out alone, sad and mournful to cry and to pray in the various chapels of the area. She invoked the Almighty daily, she did so want a child.
During the same period, a well-known figure, John the Cripple, wandered throughout the district. No-one knew whence he came nor whither he was bound, but it was noted that he never passed a wayside church or chapel without entering to say a few prayers. He was penniless, he had to beg for his food but he was always cheerful, kind and very wise so his shoulder bag was never empty.
One cold, snowy Christmas Eve, when everyone was celebrating in the warmth of their homes and families, the Countess felt totally depressed. Searching desperately for comfort and help, she slipped into the little chapel dedicated to St. John and let her grief flow out. She sobbed and sobbed, heedless of any other presence in the chapel. John, the Cripple was there too, he was impressed by the abysmal despair of the unknown lady and went up to comfort her, offering a crust of bread, all he had. The Countess recognized him, she knew he was good and kind so she begged him to bless her and pray with her for the child she so desperately wanted.
The following autumn, there was double rejoicing for the harvest festival. Not only had it been a year of abundance but the Countess had given birth to a magnificent little boy. He was christened John and would be the next Count of Gruyère.


text:
COLCHESTER MASTER 2500 13" x 40" GAP BED CENTRE LATHE (12563)
COLCHESTER MASTER 2500 13" x 40" GAP BED CENTRE LATHE 1 5/8" Spindle Bore : 16 Speeds 20- 2500 rpm :...
BW Machine Tools Ltd
Belman ticks over on cutting tools from ITC
Posted on 14 Nov 2021 and read 475 times
Born out of the motorsport sector by its founders with over 20 years' experience in the industry and headed up by managing director Andrew Jarman, Belman Engineering Ltd has grown from a sub-contract machining service provider to the Formula One (F1) industry into a multi-service business.
The company offers fast turnaround five-axis CNC machining for metallic and composite components from its sites in Milton Keynes and Birmingham into a range of high-end sectors including F1, automotive, motorsport, medical and the defence sectors.
Specialising in the manufacture of complex components within extremely tight lead times, Belman Engineering has invested heavily in the latest range of DMG Mori five-axis machining centres and Matsuura MX520 machines and 10-pallet MX330 machining centres.
To squeeze every ounce of productivity out of the machines while reducing its costs, the company has invested in cutting tools from Tamworth-based cutting tool manufacturer www.itc-ltd.co.uk
Industrial Tooling Corporation (ITC).
The relationship between Belman Engineering and ITC started when the company that operates 24/7, employed Craig Smith as its new head of production. Mr Smith said: "I have worked with ITC at several previous positions, and they have always delivered industry-leading products and results. When local ITC representative Gary Bambrick visited, his initial assessment was that ITC could reduce our annual tooling costs from £100,000 per year to £60,000. This ambitious aim would be achieved through some different strategies.
"Firstly, ITC assessed our workload of predominantly aluminium, aluminium alloy and P20 tool steel parts against our existing tooling inventory. From here, ITC could recommend cutting tools to reduce our inventory by applying a series of individual tools that could each cater for a multitude of applications.
"Another target area was the cutting parameters. Gary suggested that some of the ITC and Widia range of tools could replace existing tools to run at significantly higher speeds and feeds whilst improving tool life. Additionally, ITC offered solutions that not only outperformed the previous tools, but they were also more cost-effective."
Over a period of time, ITC's Gary Bambrick applied a variety of cutting tools such as the ITC Series of 4081 four-flute coated end mills, the 3081 three-flute series, the 4032, 2172, 2071, 4121 and 2302 ranges that encompass everything from square, ball nose and radius tools in a variety of diameters.
"A number of these ranges have also been supplied as uncoated, coated and diamond coated in the case of the 4121 and 2302 series. Yielding impressive productivity gains as well as an ability to reduce tooling inventory for Belman Engineering, the cost reductions soon became apparent.
To facilitate the changeover, ITC also introduced a vending system to closely monitor and control stock levels and costs for the sub-contract manufacturer. With productivity improvements, stock consolidation and prolonged tool life, the cutting tool cost reductions continued. With growing confidence in the ITC brand and the expertise of the ITC engineering team, additional tools have since been applied.
This includes the Widia VDS drills, the Varitap range and also a selection of thread mills. The through coolant VDS drills perform exceptionally well at Belman Engineering on a complete range of materials from aluminium through to EN24T, further reducing inventory levels compared to the previous supplier.
More recent introductions have included the 5777C five-flute Varimill end mills for trochoidal milling of steel and the Widia M370 40mm diameter high-feed indexable tool with five inserts and six edges per insert, which has further enhanced productivity gains and cost reductions.
As a full-line supplier, ITC has also introduced the Kemmler range of heat-shrink tool bodies and a Bilz heat shrink system to complement the toolholders. Despite the ambitious aim to reduce tooling costs from £100,000 to £60,000, ITC has surpassed this saving and is continually striving to create additional cost reductions and productivity improvements for Belman Engineering.
In the latest cutting trials, ITC has introduced the high-end BIG KAISER boring system. The results so far have shown the precision boring system have slashed hole making times from 2min to 15sec while securing the tight tolerances and surface finishes required.
Mr Bambrick concluded: "We have introduced a wide variety of standardised solutions as well as high-end cutting tools that have proven to reduce inventory, costs and improve performance for Belman Engineering.
"Many of our standard product lines are extremely high-quality with an ability to cut a multitude of materials and this has contributed to the ongoing cost reductions. As a UK cutting tool manufacturer, we are also producing special tools on short lead times to further improve the service and availability of solutions to high-end manufacturers like Belman Engineering."
Tiger·tec Gold insert grades with multi-layered MT-TiCN coating
New range of plastic lateral spring plungers
ITC introduces Cupro-coated 1001-6F Series of routing tools
New high-performance coatings for carbide inserts
Precision fast-change chucks for sliders
Walter offers special tools and inserts with a short delivery time
DirectCooling system available for turning tool holders
Machining carbide with PCD solid head milling cutters
Walter launches vibration-damped Accure tec adaptors
Guhring's introduces new RF100 Sharp Series of end mills


text:
// Tests caching in AddonRepository.jsm

Components.utils.import("resource://gre/modules/AddonRepository.jsm");

Components.utils.import("resource://testing-common/httpd.js");
let gServer;

const PORT      = 4444;
const BASE_URL  = "http://localhost:" + PORT;

const PREF_GETADDONS_CACHE_ENABLED = "extensions.getAddons.cache.enabled";
const PREF_GETADDONS_CACHE_TYPES   = "extensions.getAddons.cache.types";
const PREF_GETADDONS_BYIDS         = "extensions.getAddons.get.url";
const PREF_GETADDONS_BYIDS_PERF    = "extensions.getAddons.getWithPerformance.url";
const GETADDONS_RESULTS            = BASE_URL + "/data/test_AddonRepository_cache.xml";
const GETADDONS_EMPTY              = BASE_URL + "/data/test_AddonRepository_empty.xml";
const GETADDONS_FAILED             = BASE_URL + "/data/test_AddonRepository_failed.xml";

const FILE_DATABASE = "addons.sqlite";
const ADDON_NAMES = ["test_AddonRepository_1",
                     "test_AddonRepository_2",
                     "test_AddonRepository_3"];
const ADDON_IDS = ADDON_NAMES.map(function(aName) aName + "@tests.mozilla.org");
const ADDON_FILES = ADDON_NAMES.map(do_get_addon);

const PREF_ADDON0_CACHE_ENABLED = "extensions." + ADDON_IDS[0] + ".getAddons.cache.enabled";
const PREF_ADDON1_CACHE_ENABLED = "extensions." + ADDON_IDS[1] + ".getAddons.cache.enabled";

// Properties of an individual add-on that should be checked
// Note: size and updateDate are checked separately
const ADDON_PROPERTIES = ["id", "type", "name", "version", "creator",
                          "developers", "translators", "contributors",
                          "description", "fullDescription",
                          "developerComments", "eula", "iconURL", "icons",
                          "screenshots", "homepageURL", "supportURL",
                          "optionsURL", "aboutURL", "contributionURL",
                          "contributionAmount", "averageRating", "reviewCount",
                          "reviewURL", "totalDownloads", "weeklyDownloads",
                          "dailyUsers", "sourceURI", "repositoryStatus",
                          "compatibilityOverrides"];

// The size and updateDate properties are annoying to test for XPI add-ons.
// However, since we only care about whether the repository value vs. the
// XPI value is used, we can just test if the property value matches
// the repository value
const REPOSITORY_SIZE       = 9;
const REPOSITORY_UPDATEDATE = 9;

// Get the URI of a subfile locating directly in the folder of
// the add-on corresponding to the specified id
function get_subfile_uri(aId, aFilename) {
  let file = gProfD.clone();
  file.append("extensions");
  return do_get_addon_root_uri(file, aId) + aFilename;
}

// Expected repository add-ons
const REPOSITORY_ADDONS = [{
  id:                     ADDON_IDS[0],
  type:                   "extension",
  name:                   "Repo Add-on 1",
  version:                "2.1",
  creator:                {
                            name: "Repo Add-on 1 - Creator",
                            url:  BASE_URL + "/repo/1/creator.html"
                          },
  developers:             [{
                            name: "Repo Add-on 1 - First Developer",
                            url:  BASE_URL + "/repo/1/firstDeveloper.html"
                          }, {
                            name: "Repo Add-on 1 - Second Developer",
                            url:  BASE_URL + "/repo/1/secondDeveloper.html"
                          }],
  description:            "Repo Add-on 1 - Description\nSecond line",
  fullDescription:        "Repo Add-on 1 - Full Description & some extra",
  developerComments:      "Repo Add-on 1\nDeveloper Comments",
  eula:                   "Repo Add-on 1 - EULA",
  iconURL:                BASE_URL + "/repo/1/icon.png",
  icons:                  { "32": BASE_URL + "/repo/1/icon.png" },
  homepageURL:            BASE_URL + "/repo/1/homepage.html",
  supportURL:             BASE_URL + "/repo/1/support.html",
  contributionURL:        BASE_URL + "/repo/1/meetDevelopers.html",
  contributionAmount:     "$11.11",
  averageRating:          1,
  reviewCount:            1111,
  reviewURL:              BASE_URL + "/repo/1/review.html",
  totalDownloads:         2221,
  weeklyDownloads:        3331,
  dailyUsers:             4441,
  sourceURI:              BASE_URL + "/repo/1/install.xpi",
  repositoryStatus:       4,
  compatibilityOverrides: [{
                            type: "incompatible",
                            minVersion: 0.1,
                            maxVersion: 0.2,
                            appID: "xpcshell@tests.mozilla.org",
                            appMinVersion: 3.0,
                            appMaxVersion: 4.0
                          }, {
                            type: "incompatible",
                            minVersion: 0.2,
                            maxVersion: 0.3,
                            appID: "xpcshell@tests.mozilla.org",
                            appMinVersion: 5.0,
                            appMaxVersion: 6.0
                          }]
}, {
  id:                     ADDON_IDS[1],
  type:                   "theme",
  name:                   "Repo Add-on 2",
  version:                "2.2",
  creator:                {
                            name: "Repo Add-on 2 - Creator",
                            url:  BASE_URL + "/repo/2/creator.html"
                          },
  developers:             [{
                            name: "Repo Add-on 2 - First Developer",
                            url:  BASE_URL + "/repo/2/firstDeveloper.html"
                          }, {
                            name: "Repo Add-on 2 - Second Developer",
                            url:  BASE_URL + "/repo/2/secondDeveloper.html"
                          }],
  description:            "Repo Add-on 2 - Description",
  fullDescription:        "Repo Add-on 2 - Full Description",
  developerComments:      "Repo Add-on 2 - Developer Comments",
  eula:                   "Repo Add-on 2 - EULA",
  iconURL:                BASE_URL + "/repo/2/icon.png",
  icons:                  { "32": BASE_URL + "/repo/2/icon.png" },
  screenshots:            [{
                            url:          BASE_URL + "/repo/2/firstFull.png",
                            thumbnailURL: BASE_URL + "/repo/2/firstThumbnail.png",
                            caption:      "Repo Add-on 2 - First Caption"
                          } , {
                            url:          BASE_URL + "/repo/2/secondFull.png",
                            thumbnailURL: BASE_URL + "/repo/2/secondThumbnail.png",
                            caption:      "Repo Add-on 2 - Second Caption"
                          }],
  homepageURL:            BASE_URL + "/repo/2/homepage.html",
  supportURL:             BASE_URL + "/repo/2/support.html",
  contributionURL:        BASE_URL + "/repo/2/meetDevelopers.html",
  contributionAmount:     null,
  averageRating:          2,
  reviewCount:            1112,
  reviewURL:              BASE_URL + "/repo/2/review.html",
  totalDownloads:         2222,
  weeklyDownloads:        3332,
  dailyUsers:             4442,
  sourceURI:              BASE_URL + "/repo/2/install.xpi",
  repositoryStatus:       9
}, {
  id:                     ADDON_IDS[2],
  name:                   "Repo Add-on 3",
  version:                "2.3",
  iconURL:                BASE_URL + "/repo/3/icon.png",
  icons:                  { "32": BASE_URL + "/repo/3/icon.png" },
  screenshots:            [{
                            url:          BASE_URL + "/repo/3/firstFull.png",
                            thumbnailURL: BASE_URL + "/repo/3/firstThumbnail.png",
                            caption:      "Repo Add-on 3 - First Caption"
                          } , {
                            url:          BASE_URL + "/repo/3/secondFull.png",
                            thumbnailURL: BASE_URL + "/repo/3/secondThumbnail.png",
                            caption:      "Repo Add-on 3 - Second Caption"
                          }]
}];

// Expected add-ons when not using cache
const WITHOUT_CACHE = [{
  id:                     ADDON_IDS[0],
  type:                   "extension",
  name:                   "XPI Add-on 1",
  version:                "1.1",
  creator:                { name: "XPI Add-on 1 - Creator" },
  developers:             [{ name: "XPI Add-on 1 - First Developer" },
                           { name: "XPI Add-on 1 - Second Developer" }],
  translators:            [{ name: "XPI Add-on 1 - First Translator" },
                           { name: "XPI Add-on 1 - Second Translator" }],
  contributors:           [{ name: "XPI Add-on 1 - First Contributor" },
                           { name: "XPI Add-on 1 - Second Contributor" }],
  description:            "XPI Add-on 1 - Description",
  iconURL:                BASE_URL + "/xpi/1/icon.png",
  icons:                  { "32": BASE_URL + "/xpi/1/icon.png" },
  homepageURL:            BASE_URL + "/xpi/1/homepage.html",
  optionsURL:             BASE_URL + "/xpi/1/options.html",
  aboutURL:               BASE_URL + "/xpi/1/about.html",
  sourceURI:              NetUtil.newURI(ADDON_FILES[0]).spec
}, {
  id:                     ADDON_IDS[1],
  type:                   "theme",
  name:                   "XPI Add-on 2",
  version:                "1.2",
  sourceURI:              NetUtil.newURI(ADDON_FILES[1]).spec,
  icons:                  {}
}, {
  id:                     ADDON_IDS[2],
  type:                   "theme",
  name:                   "XPI Add-on 3",
  version:                "1.3",
  get iconURL () {
    return get_subfile_uri(ADDON_IDS[2], "icon.png");
  },
  get icons () {
    return { "32": get_subfile_uri(ADDON_IDS[2], "icon.png") };
  },
  screenshots:            [{ get url () { return get_subfile_uri(ADDON_IDS[2], "preview.png"); } }],
  sourceURI:              NetUtil.newURI(ADDON_FILES[2]).spec
}];

// Expected add-ons when using cache
const WITH_CACHE = [{
  id:                     ADDON_IDS[0],
  type:                   "extension",
  name:                   "XPI Add-on 1",
  version:                "1.1",
  creator:                {
                            name: "Repo Add-on 1 - Creator",
                            url:  BASE_URL + "/repo/1/creator.html"
                          },
  developers:             [{ name: "XPI Add-on 1 - First Developer" },
                           { name: "XPI Add-on 1 - Second Developer" }],
  translators:            [{ name: "XPI Add-on 1 - First Translator" },
                           { name: "XPI Add-on 1 - Second Translator" }],
  contributors:           [{ name: "XPI Add-on 1 - First Contributor" },
                           { name: "XPI Add-on 1 - Second Contributor" }],
  description:            "XPI Add-on 1 - Description",
  fullDescription:        "Repo Add-on 1 - Full Description & some extra",
  developerComments:      "Repo Add-on 1\nDeveloper Comments",
  eula:                   "Repo Add-on 1 - EULA",
  iconURL:                BASE_URL + "/xpi/1/icon.png",
  icons:                  { "32": BASE_URL + "/xpi/1/icon.png" },
  homepageURL:            BASE_URL + "/xpi/1/homepage.html",
  supportURL:             BASE_URL + "/repo/1/support.html",
  optionsURL:             BASE_URL + "/xpi/1/options.html",
  aboutURL:               BASE_URL + "/xpi/1/about.html",
  contributionURL:        BASE_URL + "/repo/1/meetDevelopers.html",
  contributionAmount:     "$11.11",
  averageRating:          1,
  reviewCount:            1111,
  reviewURL:              BASE_URL + "/repo/1/review.html",
  totalDownloads:         2221,
  weeklyDownloads:        3331,
  dailyUsers:             4441,
  sourceURI:              NetUtil.newURI(ADDON_FILES[0]).spec,
  repositoryStatus:       4,
  compatibilityOverrides: [{
                            type: "incompatible",
                            minVersion: 0.1,
                            maxVersion: 0.2,
                            appID: "xpcshell@tests.mozilla.org",
                            appMinVersion: 3.0,
                            appMaxVersion: 4.0
                          }, {
                            type: "incompatible",
                            minVersion: 0.2,
                            maxVersion: 0.3,
                            appID: "xpcshell@tests.mozilla.org",
                            appMinVersion: 5.0,
                            appMaxVersion: 6.0
                          }]
}, {
  id:                     ADDON_IDS[1],
  type:                   "theme",
  name:                   "XPI Add-on 2",
  version:                "1.2",
  creator:                {
                            name: "Repo Add-on 2 - Creator",
                            url:  BASE_URL + "/repo/2/creator.html"
                          },
  developers:             [{
                            name: "Repo Add-on 2 - First Developer",
                            url:  BASE_URL + "/repo/2/firstDeveloper.html"
                          }, {
                            name: "Repo Add-on 2 - Second Developer",
                            url:  BASE_URL + "/repo/2/secondDeveloper.html"
                          }],
  description:            "Repo Add-on 2 - Description",
  fullDescription:        "Repo Add-on 2 - Full Description",
  developerComments:      "Repo Add-on 2 - Developer Comments",
  eula:                   "Repo Add-on 2 - EULA",
  iconURL:                BASE_URL + "/repo/2/icon.png",
  icons:                  { "32": BASE_URL + "/repo/2/icon.png" },
  screenshots:            [{
                            url:          BASE_URL + "/repo/2/firstFull.png",
                            thumbnailURL: BASE_URL + "/repo/2/firstThumbnail.png",
                            caption:      "Repo Add-on 2 - First Caption"
                          } , {
                            url:          BASE_URL + "/repo/2/secondFull.png",
                            thumbnailURL: BASE_URL + "/repo/2/secondThumbnail.png",
                            caption:      "Repo Add-on 2 - Second Caption"
                          }],
  homepageURL:            BASE_URL + "/repo/2/homepage.html",
  supportURL:             BASE_URL + "/repo/2/support.html",
  contributionURL:        BASE_URL + "/repo/2/meetDevelopers.html",
  contributionAmount:     null,
  averageRating:          2,
  reviewCount:            1112,
  reviewURL:              BASE_URL + "/repo/2/review.html",
  totalDownloads:         2222,
  weeklyDownloads:        3332,
  dailyUsers:             4442,
  sourceURI:              NetUtil.newURI(ADDON_FILES[1]).spec,
  repositoryStatus:       9
}, {
  id:                     ADDON_IDS[2],
  type:                   "theme",
  name:                   "XPI Add-on 3",
  version:                "1.3",
  get iconURL () {
    return get_subfile_uri(ADDON_IDS[2], "icon.png");
  },
  get icons () {
    return { "32": get_subfile_uri(ADDON_IDS[2], "icon.png") };
  },
  screenshots:            [{
                            url:          BASE_URL + "/repo/3/firstFull.png",
                            thumbnailURL: BASE_URL + "/repo/3/firstThumbnail.png",
                            caption:      "Repo Add-on 3 - First Caption"
                          } , {
                            url:          BASE_URL + "/repo/3/secondFull.png",
                            thumbnailURL: BASE_URL + "/repo/3/secondThumbnail.png",
                            caption:      "Repo Add-on 3 - Second Caption"
                          }],
  sourceURI:              NetUtil.newURI(ADDON_FILES[2]).spec
}];

// Expected add-ons when using cache
const WITH_EXTENSION_CACHE = [{
  id:                     ADDON_IDS[0],
  type:                   "extension",
  name:                   "XPI Add-on 1",
  version:                "1.1",
  creator:                {
                            name: "Repo Add-on 1 - Creator",
                            url:  BASE_URL + "/repo/1/creator.html"
                          },
  developers:             [{ name: "XPI Add-on 1 - First Developer" },
                           { name: "XPI Add-on 1 - Second Developer" }],
  translators:            [{ name: "XPI Add-on 1 - First Translator" },
                           { name: "XPI Add-on 1 - Second Translator" }],
  contributors:           [{ name: "XPI Add-on 1 - First Contributor" },
                           { name: "XPI Add-on 1 - Second Contributor" }],
  description:            "XPI Add-on 1 - Description",
  fullDescription:        "Repo Add-on 1 - Full Description & some extra",
  developerComments:      "Repo Add-on 1\nDeveloper Comments",
  eula:                   "Repo Add-on 1 - EULA",
  iconURL:                BASE_URL + "/xpi/1/icon.png",
  icons:                  { "32": BASE_URL + "/xpi/1/icon.png" },
  homepageURL:            BASE_URL + "/xpi/1/homepage.html",
  supportURL:             BASE_URL + "/repo/1/support.html",
  optionsURL:             BASE_URL + "/xpi/1/options.html",
  aboutURL:               BASE_URL + "/xpi/1/about.html",
  contributionURL:        BASE_URL + "/repo/1/meetDevelopers.html",
  contributionAmount:     "$11.11",
  averageRating:          1,
  reviewCount:            1111,
  reviewURL:              BASE_URL + "/repo/1/review.html",
  totalDownloads:         2221,
  weeklyDownloads:        3331,
  dailyUsers:             4441,
  sourceURI:              NetUtil.newURI(ADDON_FILES[0]).spec,
  repositoryStatus:       4,
  compatibilityOverrides: [{
                            type: "incompatible",
                            minVersion: 0.1,
                            maxVersion: 0.2,
                            appID: "xpcshell@tests.mozilla.org",
                            appMinVersion: 3.0,
                            appMaxVersion: 4.0
                          }, {
                            type: "incompatible",
                            minVersion: 0.2,
                            maxVersion: 0.3,
                            appID: "xpcshell@tests.mozilla.org",
                            appMinVersion: 5.0,
                            appMaxVersion: 6.0
                          }]
}, {
  id:                     ADDON_IDS[1],
  type:                   "theme",
  name:                   "XPI Add-on 2",
  version:                "1.2",
  sourceURI:              NetUtil.newURI(ADDON_FILES[1]).spec,
  icons:                  {}
}, {
  id:                     ADDON_IDS[2],
  type:                   "theme",
  name:                   "XPI Add-on 3",
  version:                "1.3",
  get iconURL () {
    return get_subfile_uri(ADDON_IDS[2], "icon.png");
  },
  get icons () {
    return { "32": get_subfile_uri(ADDON_IDS[2], "icon.png") };
  },
  screenshots:            [{ get url () { return get_subfile_uri(ADDON_IDS[2], "preview.png"); } }],
  sourceURI:              NetUtil.newURI(ADDON_FILES[2]).spec
}];

/*
 * Trigger an AddonManager background update check
 *
 * @param  aCallback
 *         Callback to call once the background update is complete
 */
function trigger_background_update(aCallback) {
  Services.obs.addObserver({
    observe: function(aSubject, aTopic, aData) {
      Services.obs.removeObserver(this, "addons-background-update-complete");
      aCallback();
    }
  }, "addons-background-update-complete", false);

  gInternalManager.notify(null);
}

/*
 * Check whether or not the add-ons database exists
 *
 * @param  aExpectedExists
 *         Whether or not the database is expected to exist
 */
function check_database_exists(aExpectedExists) {
  let file = gProfD.clone();
  file.append(FILE_DATABASE);
  do_check_eq(file.exists(), aExpectedExists);
}

/*
 * Check the actual add-on results against the expected add-on results
 *
 * @param  aActualAddons
 *         The array of actual add-ons to check
 * @param  aExpectedAddons
 *         The array of expected add-ons to check against
 * @param  aFromRepository
 *         An optional boolean representing if the add-ons are from
 *         the repository
 */
function check_results(aActualAddons, aExpectedAddons, aFromRepository) {
  aFromRepository = !!aFromRepository;

  do_check_addons(aActualAddons, aExpectedAddons, ADDON_PROPERTIES);

  // Separately test size and updateDate (they should only be equal to the
  // REPOSITORY values if they are from the repository)
  aActualAddons.forEach(function(aActualAddon) {
    if (aActualAddon.size)
      do_check_eq(aActualAddon.size === REPOSITORY_SIZE, aFromRepository);

    if (aActualAddon.updateDate) {
      let time = aActualAddon.updateDate.getTime();
      do_check_eq(time === 1000 * REPOSITORY_UPDATEDATE, aFromRepository);
    }
  });
}

/*
 * Check the add-ons in the cache. This function also tests
 * AddonRepository.getCachedAddonByID()
 *
 * @param  aExpectedToFind
 *         An array of booleans representing which REPOSITORY_ADDONS are
 *         expected to be found in the cache
 * @param  aExpectedImmediately
 *         A boolean representing if results from the cache are expected
 *         immediately. Results are not immediate if the cache has not been
 *         initialized yet.
 * @param  aCallback
 *         A callback to call once the checks are complete
 */
function check_cache(aExpectedToFind, aExpectedImmediately, aCallback) {
  do_check_eq(aExpectedToFind.length, REPOSITORY_ADDONS.length);

  let pendingAddons = REPOSITORY_ADDONS.length;
  let immediatelyFound = true;

  for (let i = 0; i < REPOSITORY_ADDONS.length; i++) {
    let expected = aExpectedToFind[i] ? REPOSITORY_ADDONS[i] : null;
    AddonRepository.getCachedAddonByID(REPOSITORY_ADDONS[i].id, function(aAddon) {
      do_check_eq(immediatelyFound, aExpectedImmediately);

      if (expected == null)
        do_check_eq(aAddon, null);
      else
        check_results([aAddon], [expected], true);

      if (--pendingAddons == 0)
        aCallback();
    });
  }

  immediatelyFound = false;
}

/*
 * Check an initialized cache by checking the cache, then restarting the
 * manager, and checking the cache. This checks that the cache is consistent
 * across manager restarts.
 *
 * @param  aExpectedToFind
 *         An array of booleans representing which REPOSITORY_ADDONS are
 *         expected to be found in the cache
 * @param  aCallback
 *         A callback to call once the checks are complete
 */
function check_initialized_cache(aExpectedToFind, aCallback) {
  check_cache(aExpectedToFind, true, function() {
    restartManager();

    // If cache is disabled, then expect results immediately
    let cacheEnabled = Services.prefs.getBoolPref(PREF_GETADDONS_CACHE_ENABLED);
    check_cache(aExpectedToFind, !cacheEnabled, aCallback);
  });
}

function run_test() {
  // Setup for test
  do_test_pending();
  createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9");

  startupManager();

  // Install XPI add-ons
  installAllFiles(ADDON_FILES, function() {
    restartManager();

    gServer = new HttpServer();
    gServer.registerDirectory("/data/", do_get_file("data"));
    gServer.start(PORT);

    run_test_1();
  });
}

function end_test() {
  gServer.stop(do_test_finished);
}

// Tests AddonRepository.cacheEnabled
function run_test_1() {
  Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, false);
  do_check_false(AddonRepository.cacheEnabled);
  Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true);
  do_check_true(AddonRepository.cacheEnabled);

  run_test_2();
}

// Tests that the cache and database begin as empty
function run_test_2() {
  check_database_exists(false);
  check_cache([false, false, false], false, run_test_3);
}

// Tests repopulateCache when the search fails
function run_test_3() {
  check_database_exists(true);
  Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true);
  Services.prefs.setCharPref(PREF_GETADDONS_BYIDS, GETADDONS_FAILED);

  AddonRepository.repopulateCache(ADDON_IDS, function() {
    check_initialized_cache([false, false, false], run_test_4);
  });
}

// Tests repopulateCache when search returns no results
function run_test_4() {
  Services.prefs.setCharPref(PREF_GETADDONS_BYIDS, GETADDONS_EMPTY);

  AddonRepository.repopulateCache(ADDON_IDS, function() {
    check_initialized_cache([false, false, false], run_test_5);
  });
}

// Tests repopulateCache when search returns results
function run_test_5() {
  Services.prefs.setCharPref(PREF_GETADDONS_BYIDS, GETADDONS_RESULTS);

  AddonRepository.repopulateCache(ADDON_IDS, function() {
    check_initialized_cache([true, true, true], run_test_5_1);
  });
}

// Tests repopulateCache when caching is disabled for a single add-on
function run_test_5_1() {
  Services.prefs.setBoolPref(PREF_ADDON0_CACHE_ENABLED, false);

  AddonRepository.repopulateCache(ADDON_IDS, function() {
    // Reset pref for next test
    Services.prefs.setBoolPref(PREF_ADDON0_CACHE_ENABLED, true);
    check_initialized_cache([false, true, true], run_test_6);
  });
}

// Tests repopulateCache when caching is disabled
function run_test_6() {
  check_database_exists(true);
  Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, false);

  AddonRepository.repopulateCache(ADDON_IDS, function() {
    // Database should have been deleted
    check_database_exists(false);

    Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true);
    check_cache([false, false, false], false, run_test_7);
  });
}

// Tests cacheAddons when the search fails
function run_test_7() {
  check_database_exists(true);
  Services.prefs.setCharPref(PREF_GETADDONS_BYIDS, GETADDONS_FAILED);

  AddonRepository.cacheAddons(ADDON_IDS, function() {
    check_initialized_cache([false, false, false], run_test_8);
  });
}

// Tests cacheAddons when the search returns no results
function run_test_8() {
  Services.prefs.setCharPref(PREF_GETADDONS_BYIDS, GETADDONS_EMPTY);

  AddonRepository.cacheAddons(ADDON_IDS, function() {
    check_initialized_cache([false, false, false], run_test_9);
  });
}

// Tests cacheAddons for a single add-on when search returns results
function run_test_9() {
  Services.prefs.setCharPref(PREF_GETADDONS_BYIDS, GETADDONS_RESULTS);

  AddonRepository.cacheAddons([ADDON_IDS[0]], function() {
    check_initialized_cache([true, false, false], run_test_9_1);
  });
}

// Tests cacheAddons when caching is disabled for a single add-on
function run_test_9_1() {
  Services.prefs.setBoolPref(PREF_ADDON1_CACHE_ENABLED, false);

  AddonRepository.cacheAddons(ADDON_IDS, function() {
    // Reset pref for next test
    Services.prefs.setBoolPref(PREF_ADDON1_CACHE_ENABLED, true);
    check_initialized_cache([true, false, true], run_test_10);
  });
}

// Tests cacheAddons for multiple add-ons, some already in the cache,
function run_test_10() {
  AddonRepository.cacheAddons(ADDON_IDS, function() {
    check_initialized_cache([true, true, true], run_test_11);
  });
}

// Tests cacheAddons when caching is disabled
function run_test_11() {
  check_database_exists(true);
  Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, false);

  AddonRepository.cacheAddons(ADDON_IDS, function() {
    // Database deleted for repopulateCache, not cacheAddons
    check_database_exists(true);

    Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true);
    check_initialized_cache([true, true, true], run_test_12);
  });
}

// Tests that XPI add-ons do not use any of the repository properties if
// caching is disabled, even if there are repository properties available
function run_test_12() {
  check_database_exists(true);
  Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, false);
  Services.prefs.setCharPref(PREF_GETADDONS_BYIDS, GETADDONS_RESULTS);

  AddonManager.getAddonsByIDs(ADDON_IDS, function(aAddons) {
    check_results(aAddons, WITHOUT_CACHE);
    run_test_13();
  });
}

// Tests that a background update with caching disabled deletes the add-ons
// database, and that XPI add-ons still do not use any of repository properties
function run_test_13() {
  check_database_exists(true);
  Services.prefs.setCharPref(PREF_GETADDONS_BYIDS_PERF, GETADDONS_EMPTY);

  trigger_background_update(function() {
    // Database should have been deleted
    check_database_exists(false);

    AddonManager.getAddonsByIDs(ADDON_IDS, function(aAddons) {
      check_results(aAddons, WITHOUT_CACHE);
      run_test_14();
    });
  });
}

// Tests that the XPI add-ons have the correct properties if caching is
// enabled but has no information
function run_test_14() {
  Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true);

  trigger_background_update(function() {
    check_database_exists(true);

    AddonManager.getAddonsByIDs(ADDON_IDS, function(aAddons) {
      check_results(aAddons, WITHOUT_CACHE);
      run_test_15();
    });
  });
}

// Tests that the XPI add-ons correctly use the repository properties when
// caching is enabled and the repository information is available
function run_test_15() {
  Services.prefs.setCharPref(PREF_GETADDONS_BYIDS_PERF, GETADDONS_RESULTS);

  trigger_background_update(function() {
    AddonManager.getAddonsByIDs(ADDON_IDS, function(aAddons) {
      check_results(aAddons, WITH_CACHE);
      run_test_16();
    });
  });
}

// Tests that restarting the manager does not change the checked properties
// on the XPI add-ons (repository properties still exist and are still properly
// used)
function run_test_16() {
  restartManager();

  AddonManager.getAddonsByIDs(ADDON_IDS, function(aAddons) {
    check_results(aAddons, WITH_CACHE);
    run_test_17();
  });
}

// Tests that setting a list of types to cache works
function run_test_17() {
  Services.prefs.setCharPref(PREF_GETADDONS_CACHE_TYPES, "foo,bar,extension,baz");

  trigger_background_update(function() {
    AddonManager.getAddonsByIDs(ADDON_IDS, function(aAddons) {
      check_results(aAddons, WITH_EXTENSION_CACHE);
      end_test();
    });
  });
}

redpajama_set_name: RedPajamaGithub


text:
Q: Collapsing Table Rows via Jquery Im trying to build a table. The table consists of the following. Each line is a row.
Main-Parent
 + Parent
  - children
  - children
 + Parent
  - children
  - children

The children will collapse into their Parent. And each of the parents will collapse into the Main Parent.
Ive got it partially working but not fully.
You can see the behavior in http://jsfiddle.net/0Lh5ozyb/88/
HTML

MAIN PARENT

MAIN PARENT

MAIN PARENT

PARENT

PARENT

PARENT

CHILD

Jackson

94

CHILD

Doe

80

PARENT

PARENT

PARENT

CHILD

Jackson

94

CHILD

Doe

80

JQUERY
// main heading
$('tr.main-parent')
    .css("cursor", "pointer")
    .click(function () {
        var $children = $(this).nextUntil($('tr').not('.sub'));
        $children.find('td > div, td').slideToggle();
});
$('tr[class^=child-]').find('td > div, td').hide();

// parent heading
$('tr.parent')
    .css("cursor", "pointer")
    .click(function () {
        var $children = $(this).nextUntil($('tr').not('[class^=child-]'));
        $children.find('td > div, td').slideToggle();
});
$('tr.sub').find('td > div, td').hide();

A: slideToggle can't be used for the main heading because the child headings may be in mixed states of visibility. You were simply inverting which subheadings were visible.
If at least one is visible you need them all to close.
// main heading
$('tr.main-parent')
    .css("cursor", "pointer")
    .click(function () {

        var $children = $(this).nextUntil($('tr').not('.sub'));

        if ($children.find(':visible').length) {
            $children.find('td > div, td').slideUp();
        }
        else {
            $children.find('td > div, td').slideDown();
        }
});

See: http://jsfiddle.net/0Lh5ozyb/120/
EDIT
If you would like to only show the subheadings when opening the main heading, filter to them first:
$children.filter('.parent').find('td > div, td').slideDown();

Updated example: http://jsfiddle.net/0Lh5ozyb/133/