The global gas market balance has swung from Asia back towards Europe as oversupply in the LNG market has taken hold. European hubs are providing key global price support as a market of last resort for surplus LNG flows. But how much surplus LNG can Europe absorb without driving hub prices sharply lower?
The ability of European hubs to absorb LNG is driven primarily by supplier flexibility to ramp down pipeline contract volume to take or pay levels. But at the point that contract swing flexibility is exhausted, hub prices may disconnect from oil-indexed contract prices and fall substantially, firstly to levels that induce gas vs coal switching in European power markets and then ultimately towards price support from Henry Hub (as was the case in 2008-09). This is what we refer to as the tipping point.
Forward market prices do not yet anticipate this 'tipping point' being reached. Forward hub prices remain broadly in line with oil-indexed contract price proxies. But the global market currently looks to be finely balanced. In Chart 1 we show our summary view of the supply and demand balance in the European vs global LNG market for 2016.
The left hand side of the chart shows the supply and demand balance at European hubs. The right hand side of the chart shows the global LNG market balance. LNG supply in excess of Asian demand (and the relatively small non-Asian emerging market demand), will need to be absorbed by Europe.
Some of this European volume is via non-divertible LNG supply contracts, primarily into Southern Europe. But as new volumes of LNG liquefaction capacity are commissioned in 2015 and 2016 they look to be exacerbating the oversupply situation in Asia. Under conditions of oversupply, divertible European LNG contracts and surplus spot LNG cargoes will flow into European hubs.
The ability for European hubs to absorb surplus LNG volumes is driven primarily by the displacement of flexible pipeline contract volumes, most of which come from Russia. As surplus LNG flows act to push hub prices below oil-indexed strike prices, suppliers are incentivised to minimise pipeline contract volumes to the annual contract 'take or pay' (ToP) levels.
Chart 1 illustrates the volume of pipeline swing contract flexibility above ToP. Swing flexibility has traditionally been about 85% of annual contract volume. However suppliers have negotiated additional ToP flexibility through contract reopener processes over the last 5 years, although it is difficult to know exactly how much given confidentiality of negotiations.
The important thing to note is that with swing flexibility around this level, European hubs do not appear to be far from the tipping point we describe above. This tipping point could be tested over the next two years if European and Asian gas demand remains soft in the face of the rapid ramp up in new LNG supply.
There has been a rapid transition in European hub pricing over the last six months as crude prices have fallen and European LNG imports have increased. These conditions warrant revisiting our framework for analysing European hub prices, to gain some perspective on how prices may evolve going forward.
The first of these tasks is helped by the fact that most sources of European supply are under long term contracts that use a similar structure. The second task is assisted by the fact that only a relatively small volume of total European supply actually has the flexibility to respond to changes in market price.
Chart 2 illustrates the key tranches of supply that are currently interacting to set hub prices at the margin. It is important to note that the chart contains a simplified view of both supply and demand, in order to get across the key concepts. It should also be noted that inflexible 'must flow' volumes of gas (e.g. domestic production and contracted ToP volumes) are assumed to sit to the left of the supply stack at zero price.
The demand curve (in red) shows a simplified representation of pan-European gas demand in 2016. Projected demand at current price levels is around 530 bcm. The demand curve is downward sloping at lower price levels. This is driven primarily by an increase in gas demand as coal plant output switches to gas plant output as gas prices fall. The shaded red range around the demand curve reflects uncertainty around factors that influence demand such as coal price levels. The Henry Hub price level represents a floor price for European hubs given the US gas market can ultimately assume the role of LNG market 'sink' for surplus cargoes (as it did in 2008-09), although this situation may act to push US gas prices lower.
We have simplified pan-European supply by grouping flexible sources of gas into four main tranches as set out in the table below (again more logic here in our previous article). This provides a basic view of supply source interaction which is enough to describe key hub pricing dynamics. This can then be enhanced relatively easily by adding more detail on volume and pricing as required (e.g. sub-tranches of supply).
This volume consists predominantly of Russian swing contract flexibility (and matches the top bar in the EU supply column in Chart 1). The pricing and flow dynamics of this gas are heavily dependent on oil-prices given contract indexation.
We show an estimate of price ranges on the contracts that make up this swing supply (6.50 – 7.75 $/mmbtu) using a current proxy based on oil prices.
Current volume dynamics in 2016 suggest that most annual swing volumes above ToP will be displaced by flexible LNG flows into Europe (as described in Chart 1). The price level of just above 7 $/mmbtu is consistent with current NBP forward prices for 2016.
This volume consists of both divertible European LNG supply contracts and surplus spot LNG cargoes not required by Asia. These Flexible LNG volumes are currently displacing Russian pipeline swing contract volumes (as described above).
The volume of this Flexible LNG that flows into Europe will depend on Asian spot LNG prices in 2016, which we have approximated based on forward Asian LNG price proxies (note this is not a 'transactable' forward price benchmark). The important dynamic around this tranche of gas is that it will flow into European hubs as a market of last resort if not required in Asia.
In this tranche we have grouped (i) uncontracted Norwegian production (optimised against hub prices) and (ii) spot indexed Norwegian contract sales. We assume this gas is priced at (or marginally below) spot hub prices.
In other words while the pricing/flow of this gas is optimised within-year against spot prices, annual volumes are sold to ensure Norway's annual production targets are met and contract volume requirements are fulfilled. Hence this tranche is assumed to sit ahead of the other flexible tranches of supply.
We have grouped the remaining higher priced supply sources on the far right of the supply curve. The two most important sources here are (i) uncontracted Russian production and (ii) flexible LNG volumes that could be diverted from Asia given an adequate premium of European hub prices over Asian spot LNG prices.
We do not give detailed consideration to the pricing of this gas for the simple view presented in this article. But as a guide on pricing, Russia is unlikely to sell additional volumes of uncontracted gas unless all of its contracted volumes have been lifted (i.e. pricing ranges above the swing contract tranche at $7.75+). Similarly a significant European price premium would be required to induce LNG demand reduction in Asia.
This simplified annual supply stack view provides a useful summary of some of the key drivers of hub price evolution given current market balance. While it is easier to observe these dynamics at an annual level, there are more complex dynamics at work behind this at a sub-annual level (e.g. seasonal price & flow behaviour). A particularly important dynamic here is the fact that there is additional within year flexibility in swing contracts (over and above the annual flex above ToP levels shown in the chart). These sub-annual dynamics do not invalidate conclusions at an annual level, but are important to bear in mind.
The price declines at European gas hubs over the last six months have been consistent with the fall in oil prices. In other words gas hub prices have remained broadly linked to long term oil-indexed contract prices. But this linkage is threatened by a limited volume of swing contract flexibility which can be displaced in order for hubs to absorb higher LNG inflows. At the point that contract swing flexibility is exhausted, hub price levels can disconnect from oil-indexed contract prices. At this tipping point, prices may fall sharply lower to levels that support the increase in demand required to absorb higher LNG inflows.
The supply stack in Chart 2 highlights the two key tranches of gas supply that will determine whether the European gas market reaches its tipping point. At current hub price levels (~7 $/mmbtu), European hubs cannot absorb both flexible LNG imports (the green tranche) and significant volumes of swing contract volumes above 'take or pay' levels (the blue tranche). This leads to the conclusion that increasing LNG inflows are likely to ensure that hub prices remain below oil-indexed contract price levels (i.e. flexible LNG will sit below swing gas in the supply stack).
Once European swing contract flex has been fully displaced by higher LNG imports, tipping point dynamics are driven by price inelastic volumes of demand and supply. Surplus LNG supply sold into Europe as a market of last resort is relatively insensitive to hub price levels. LNG will flow into Europe as long as NBP/TTF prices are more attractive than LNG spot price alternatives (e.g. in Asia). Similarly it may take significant gas price falls to induce higher European hub demand from gas vs coal plant switching. The inelasticity of these supply and demand volumes is an important factor that can drive sharp moves lower in hub prices.
The evolution of overall European gas demand levels will also be a key determinant of whether hubs reach the tipping point. If medium term demand is lower than the levels we have assumed, due to weather, continued economic stagnation, further general erosion of power sector gas burn by coal and renewables, this reduces the scope for European hubs to absorb LNG imports while meeting Russian take-or-pay volumes. This underlines the importance of keeping the assumptions within this framework refreshed as views of European demand change.
If Asian LNG demand remains weak over the next two years, the tipping point dynamics we describe in this article may take center stage. Global liquefaction capacity is set to increase by 55 bcma by the end of 2016. If a significant volume of that increase in LNG supply flows into Europe, it will test the ability of European hubs to ramp down swing contract take in order to absorb increasing LNG inflows. Under these conditions, the switching of coal for gas plant in the power sector will become a key driver of marginal hub pricing dynamics. We will come back shortly to focus on a more detailed analysis of coal vs gas switching dynamics.
Timera Energy offers tailored workshops exploring the evolution of the global LNG and European gas market fundamentals and pricing dynamics. These workshops involve Howard Rogers who, as the Director of the Gas Programme at the Oxford Institute for Energy Studies, is acknowledged as a leading industry expert in the global gas market.


text:
German Officials: Two-Thirds of Migrants 'Basically Illiterate"
Germany, a country of 80 million, received over one million migrants and unvetted "refugees" in 2015.Chancellor Angela Merkel is expecting another million migrants this year.
Another 91,671 migrants entered Germany in January of this year despite ice snow and freezing temperatures.
German officials are concerned that nearly two-thirds of the migrants are illiterate. Teaching the foreigners to become productive members of society will cost the country millions.
Breitbart London reported:
A senior German academic has joined the chorus of voices expressing concern over the low educational standards of newly arriving migrants, and the significant knock-on effects that is bound to have on the German educational system.
President of the University of Hamburg and chairman of the German Educational Action Council Dieter Lenzen has pointed to the enormous cost of teaching hundreds of thousands of newcomers basic language skills, pointing in particular to the Syrian community. While the proportion of Syrians arriving and claiming to have university degrees — around 15 per cent — isn't much below the German population as a whole, the vast majority of the remaining 85 per cent are in a significantly worse state, unable even to perform basic tasks like reading a bus timetable.
Outlining the scale of the challenge and the lack of ability of most Syrians arriving in Europe, President Lenzen said: "the problem is the 65 per cent of an age group that can operate only on reading comprehension level one by the PISA test", reports N24.
The Program for International Student Assessment (PISA) test is a standard form of measuring intellectual ability and at level one suggests that the majority of Syrian "refugees" are unable to complete "basic reading tasks" such as "Locating straightforward information" or "Making low-level inferences".
President Lenzen told media he estimated around two thirds of these arrivals had no qualifications at all from their home nation. He estimated giving migrants German lessons to get them to a point where they could become productive members of society would cost some €80,000 a year for a class of 25, with classes needed for some two and a half years.

redpajama_set_name: RedPajamaCommonCrawl


The Android Training Course designed by Eastern Techno Solutions ensures that students learn core and advanced topics required for a successful career in Android Apps Development.
Android course covers topics on how to design, develop and build applications for Android. The Android Training program takes a student from the basics of Android programming to creating small and large Android apps. The Android Course not only teaches the student how to program, develop, design and visualize Android apps but also details on how to sell them on the Android marketplace.
Learn the basics of Android, and take the first step on your journey to becoming an Android developer!


text:
ATL: Stories from the Retrofuture
The Quinlan Circle
The Gay Gatsby
Hands Held in the Snow
Reborn on a Systemless Earth… With a System
Invisible Werewolf Dracula meets Vampire Mummy Frankenstein
StarCrash!! With Jeff
Uhh, Reincarnation Goddess? You Forgot to Give Me the System
Facebook (ew)
News Post Archive
Vote on Top Web Fiction!
05 - The Worst Mystery The Story
The Worst Mystery – Chapter 4: 途中
July 12, 2019 Thedude3445
"Why do they think we can just get rid of robots and make all the old jobs come back…" Karina grumbles. "It's ridiculous. They can't actually believe it, can they… Honestly, sometimes they're worse than the Earth Group…"
"You're comparing a political party you don't like to an eco-terror organization," I say. "Are you sure you're not the bad guy here?"
"Sorry, I just get really, really annoyed by Labors when they do all their stupid protests…"
"You know, I've actually fought the Earth Group a couple times." I take a sip of my already-half-empty can of soda, empty of course because it blew up in my face. I must have accidentally shaken it while I wasn't paying attention, or I'm the victim of the world's lamest prank. "They're not guys to mess with. Even the weird crust punk guys that loiter around bars half the time. If you go down to the wrong part of town dressed like a hi-tech hippie, you will get the crap beaten out of you."
"I GUESS Labors are better," Karina says. "Even if they are worse than basically every party in Atlanta."
"If you say they're worse than the Values Party, I can't be your friend anymore."
"Well, it's–"
"I'm actually serious about that," I add.
"Wait, really?"
"No, but it would make me question your judgment significantly." Anyone who holds even the slightest amount of positivity towards the party dedicated to, among other things, re-banning gay marriage and instituting a halt to all foreign aid to the West, is someone who earns my ire. Like, that Kevin O'Conner guy who keeps AR73 is probably a Values Party voter. Let that sink in for a moment when you are considering whether or not to support them.
Karina shrugs. "The Labor Party is better. But that's comparing an idiot to someone pretending to be an idiot so they can snatch your wallet when you aren't looking."
"Gosh, you have a way with words."
I take a few steps to the side and face the cashier robot standing motionlessly. "Doesn't Karina have a way with words?"
It doesn't respond at all. Not even an automated response about buying stuff. Huh. Must be an old model or something. I grab a bag of chips and wave it in front of its face. Its eye sockets light up and it chirps, "One bag of Sun Chips. Two dollars, please."
"No, than– Actually, I'm a bit hungry." I buy the bag and start munching away, though I have to set down my can of soda dangerously on a shelf full of other food items because there's nowhere else to do it. "You'd think if they designed this thing to be able to be ridden in, that they'd put some chairs in or something. Want some?" I tilt the bag in Karina's direction.
"No thanks, I'm watching my figure." Not commenting on that one in any direction. That is a way to get myself eviscerated. "And I think the reason they don't put chairs in is because they don't want 'undesirables' getting a free ride across town."
She means homeless people. "Yeah… sucks."
The Labor Party does have one pretty big point in that, yeah, the unemployment rate in Atlanta has grown a lot in the past few years. Like, almost twenty percent when you count the rural areas at the outskirts. The homeless population is large, especially among young people who flunk out of school and take to the streets, and even when Mayor Epstein was in power and still popular, he couldn't change that much. Robots just swooped in most of the jobs you can do without a good education. And a good education… is pretty hard to get for a lot of people.
But enough of that. These chips are pretty good. The Bustable Lemons soda… is also pretty good. I'm mildly satisfied with everything right now. I just wish I could say the same about Karina. She's looking pretty frustrated right now, staring at the floor in thought. Is she upset about how badly our investigation, or lack thereof, has gone so far?
"You know…" I say. "I'll admit something to you. When you sent that text, I thought it was something actually serious. I ran over to you as fast as I could. That's why I was so gross and sweaty."
Karina looks up at me. "What? This IS serious," she says.
"I know this is a big deal to you to find this soda, but it's just soda. Even if we don't find anything, you shouldn't be so hard on yourself."
"Huh? No, this really is serious. R8PR assigned this mission to me, and he's counting on me to figure it out."
"Wh…What? Why didn't you tell me that earlier?!"
"He told you to search for this soda? And also, you met with R8PR without me?"
"Yeah, it's the first mission he's ever given me. And also yeah, I check up on him sometimes without you. R8PR is my friend too, Morgan."
"I'm not sure I'd go so far as to call him my 'friend.'"
"That's why I didn't want to ask you for help so quickly," Karina says. "I was hoping I could do it all on my own. But this one's way too hard, it looks like. Whatever Magitek Soda is, it's important enough that R8PR thinks it's worth looking for, but… After a week I still don't have a clue."
"Besides the fact you actually saw it with your own two eyes."
"Well, yeah, but–"
"No buts," I say. "You haven't failed. You've actually seen the damn thing to know for sure it exists. You're halfway there already."
"That's a good way to look at it… And I guess when we get off, we could still stumble into something if we try hard. Yeah." Karina crushes the can in her hand and tosses it across the auto-conbini into a recycling bin. It circles around the rim and then falls in. "Yeah! We're gonna do this."
"That's the gumption we need."
She raises her hand in the air, and I wait for her to do something, but… she just kind of lowers it. "I… thought we were going to high-five."
"Uh, no, I'm holding a bag of chips."
Things quiet down quickly from there. I finish the chips and drop the bag into the compost bin, and then finish the rest of my soda. Actually, drinking this further, it's kind of bad. The aftertaste makes it really obvious that there's no added sugar, and it's too sour. Maybe this would be a good mixer with whiskey, but by itself it's just a mediocre carbonated drink.
I imagine that, whatever Magitek Soda is, it probably tastes similarly lame. Just like the company it's named after.
"Heh." Karina starts laughing to herself.
"Heh?"
"I just thought… I bet there's a ton of pornos that use 'trapped in an auto-conbini alone… IN TRAFFIC' as their setup."
"Pfffft. You're right. I can see it now. The cashier robot barely works, so the countertop is free. And then the wall if you're into that kind of thing. Just throw in two young, desperate actors, and…" We realize where the nature of this conversation is going.
The rest of the ride is very quiet.
<== Previous ♠ Next ==>
bustable lemons soda, this is the latest ive ever released a chapter i think but it was because i had a work party last night
10 - Dog Days in Hotlanta The Story
Dog Days in Hotlanta – Chapter 27: A Medley of Bullets
December 29, 2020 Thedude3445
Dog Days in Hotlanta – Chapter 26: Before We Get to the Rodeo
November 16, 2020 Thedude3445
Previous: The Worst Mystery – Chapter 3: Random Patterns
Next: The Worst Mystery – Chapter 5: Getting Off
6 thoughts on "The Worst Mystery – Chapter 4: 途中"
Pingback: The Worst Mystery – Chapter 3: Random Patterns – ATL
Thedude3445 says:
I just want you to take a break now, so you can look at the 80s Mobile Suit Gundam screenplay. http://www.zimmerit.moe/the-hollywood-gundam-bibliography/ Syd Mead did the concept art and everything, so it's lovely pre-production work. Sadly, the company didn't actually have the rights to the IP, so they had to cancel the project. And to this day, we've never had a Gundam live-action movie other than that really bad direct-to-DVD Canadian one.
hejin57 says:
ATL mentioned politics? The nerve!
As a Values Party supporter, I will cease reading this story forever.
Not ATL, only Karina. We here at ATL are distancing ourselves from Ms. Kodama, whose remarks have been inflammatory to certain groups vital to our advertising revenue. We apologize to anyone who may have been offended by her remarks.
What a Fine Halloween! says:
So there are druid/pagan/wicca/veganoids/(Insert other green party) running around this place? Are they like some Merry Men style folk or crazy survivalists?
Marianne Williamson runs a spirit cult in Raleigh, probably
The Social Media Killer – First Draft (Chapters 16-19) [Quinlan Vault]
Quinlan Circle Stories:
Reborn on a Systemless Earth... With a System
Uhh, Reincarnation Goddess? You Forgot to Give Me a System
Rainbow Destructor
All Rights Reserved 2018-2021, Quinlan Circle


Fox Guest: Florida Dems Are "Manufacturing Voters" - Joe.My.God.
"The forces on the left, the Democrats and their allies are trying to push this to what I call within the margin of litigation. They are manufacturing voters, and they are doing it with an architect, Superintendent Snipes, who has a record of gross incompetence and fraud. And it is a shame that she is still in this position, given the fact that through her own admission she lacks the management skills to provide an election that has integrity, and has the confidence of the voters.
"At the end of the day, what's going on now is akin to a banana republic and a failed state, and that's a shame because the people of Florida, the legitimate voters who came out and voted cannot have their legitimate ballots negated by corruption, fraud, and voters who are being manufactured." – Ken Blackwell, speaking last night on Fox News.
In 2004 as Ohio's secretary of state, Blackwell himself was embroiled in a dispute over the certification of his state's electoral college votes, leading to the ultimately dismissed US Supreme Court case, Moss V Bush. Blackwell now works for the Family Research Council and the American Civil Rights Union, a right wing group formed in 1998 with a name intended to sow confusion with the ACLU. Blackwell has said that gays suffer from a "compulsion" that could be "restrained" if they just bothered to try.


KATHMANDU, Nepal – Staff from Bridge Foundation, the New Canaan, Connecticut-based humanitarian relief organization, are on their way back to the US from earthquake-stricken Nepal after overseeing emergency shipmentsof two Interagency Emergency Health Kits (IEHK).
Each kit provides basic healthcare support for 10,000 people for 90 days. They are basically hospitals-in-a-box. The kit includes basic medications, antibiotics, wound dressings, sutures, syringes, casting material and other medical supplies tailored for this specific disaster.
Due to the severity of the quakes, roads and trails throughout the Valley west of Kathmandu eastward upward toward the Mt. Everest Base Camp, became inaccessible by vehicle and helicopters were dispatched to deliver doctors and supplies to the impacted areas.
Prior to departing the US, Bridge Foundation began discussions with New York based NGO Dooley Intermed International's President Scott W. Hamilton, who has a successful track record of work in Nepal through their partnership with Mission Himalaya.
With Scott's assistance, Mission Himalaya provided Bridge Foundation with in-country logistics and support.
The non-profit Mission Himalaya organization, and its President Bibhuti Thakur, have been indispensable. Mission Himalaya has played a critical role and continues to be a key asset to the region as they deliver tents, tarps and other equipment. Mission Himalaya also created and delivered several "Hot Kitchens" to local villages.
These community kitchens are essential for the thousands of displaced families who, while living in temporary shelters, could cook meals. Bridge Foundation was able to assist with one Hot Kitchen by procuring local commodities sufficient to feed approximately 200 people in the Kashi Gaon village from 10 days up to two weeks.
Bridge Foundation's Gary Galanis was on the ground in Kathmandu to oversee distribution. "It is one of our prime missions for Bridge Foundation to be able to provide a basic human necessity as these people struggle to get their homes and lives stabilized," Galanis said. "With the upcoming monsoon season only a month away, citizens of Nepal are rushing to prepare."
Additionally, Bridge will provide a shipment of essential drugs and medical supplies for a Dooley Intermed medical team departing New York in the coming days. They will partner with Mission Himalaya to utilize the supplies in medical programs in the impacted areas.
"Dooley Intermed and Mission Himalaya have been great resources, but more importantly, we have become friends," Galanis said. "No need to reinvent the wheel. To ensure success, you need to partner with the people who understand and know the area, its people and their customs. Working with the wonderful people of Nepal, we were able to be much more efficient and effective" he added.
Bridge is continuing discussions concerning several other projects in Nepal. Once the news crews and reporters leave, and the earthquakes slip from the headlines, it is essential to continue a dialogue and create actionable mid- and long-term plans.


o-ring Archives - Gallagher Fluid Seals, Inc.
Sealing can often be a frustrating challenge when dealing with flow batteries. Determining what materials are compatible with certain chemistries or developing a profile that provides optimal sealing under available compression can be a time-consuming task for those outside the sealing industry. A trial and error approach can have a significant overall cost impact through multiple prototype iterations, prolonged testing, and ultimately, delaying product commercialization.
Parker's design and material engineers can provide support to your team in the critical, early stages of product development. With hundreds of engineered elastomeric materials to choose from, our team can identify and recommend a compound that works with your specific electrolytes or other fluids. With the exceptionally long lifetime requirements of flow batteries, our homogeneous rubber provides the elasticity needed to handle the many charge-discharge cycles the battery will see in its life.
Our applications engineering team takes more than a few calls each month where the O-ring is leaking, either immediately or after just a short time in service. Once we drill down to the details, we learn the failure mode is an improperly sized groove and O-ring. It isn't all that uncommon for a groove to be cut in a flange and a novice designer learns the hard way that standard O-rings cannot fit in just any groove geometry. For hardware that has already been machined, frustration ensues as the caller learns the O-ring solution requires tooling. Tooling can have a lead time of at least a month to cut and can cost thousands of dollars. Parker offers a TetraSeal® solution, which often does not require tooling and can be made of many of the same materials used for O-rings.
The TetraSeal is a circular precision-cut seal with a square cross-section. Unlike O-rings which require a unique mold for each material family and size, TetraSeals are extruded, cured and machine cut to the target thickness. Our manufacturing facilities in both Spartanburg, South Carolina and Goshen, Indiana are tooled in a variety of interchangeable extrusion dies, making this type of seal an easily sourced seal solution without the lead time and cost of a custom molded O-ring.
We receive many requests from customers asking for recommendations on how to retain seals in an application. One of the most popular "quick fixes" is to apply liberal amounts of adhesive to a standard O-ring type product without respect to groove shape or sealing function. However, Parker OES provides a wide array of sealing technologies, offering innovative solutions to accommodate the challenging and vast sealing needs of our customers.
A customer had been using a standard O-ring product on an outdoor electronic device. This part was sealing the external edge of the enclosure and meant to keep out water and dust. The enclosure was plastic injection molded so this extreme edge had irregular geometry to accommodate the molding process. The original proposal was to shove O-ring cord in place and adhere it down with RTV (Room Temperature Vulcanization) so that it did not fall out during assembly. This left a rust colored stripe exposed on a consumer device due to fitment issues. Parker's proposal was to replace the O-ring cord with a custom hollow extrusion that fit the available space and allowed complete closure, thus not exposing the seal to be visible. The RTV process was replaced with PSA (Pressure Sensitive Adhesive) that was preassembled to the seal and allowed for quick and clean placement during assembly and retention for any maintenance needed.
Gallagher recently published its Failure Modes of Elastomers in the Semiconductor Industry White Paper, now available for download on our site. This white paper discusses common issues that occur with elastomer seals in the semiconductor industry. The excerpt below is the third section of our new white paper, discussing O-Ring Stretch, Chemical Attack, Plasma Cracking, and Permeation. To download the entire white paper, visit our Resources Page, or click on the image to the right.
High performance elastomers are found in many applications in the semiconductor industry (see paper titled Perfluoroelastomers in the Semiconductor Industry). Though perfluoroelastomer (FFKM) seals are formulated to meet the highest performance requirements of integrated circuit (chip) manufacturers, even these elastomers can't solve every sealing application nor will they last forever in service. Additionally, end users need to understand subtle performance differences between perfluoroelastomers in the same product line. For example, one product may be better at minimizing particle generation while another may be better for high temperature services.
O-Rings continue to be the most widely utilized sealing product. While the 'Donut' shaped profile has by and large been kept intact since their inception, continued elastomeric development has pushed o-ring temperature and chemical compatibility to limits unimaginable several decades ago.
Typically, O-Rings fail due to adverse effects of a number of factors, from improper installation and lubrication to incorrect size and design. The collection of videos below will help you minimize installation errors that may lead to failure (be sure to bookmark this page for future reference).
Precision O-rings are manufactured by vulcanization in a closed mold using compression or injection molding. This makes it possible to produce O-rings in relatively small manufacturing tolerances and with good surface quality according to ISO 3601-1 and ISO 3601-3. Due to defined vulcanization parameters, precision O-rings exhibit consistently high mechanical properties across the entire circumference. This high quality level is an indispensable prerequisite for achieving consistently good sealing effects over a long period of time.
However, up to now, this production technology has been regarded in the sealing industry as not being economically feasible for O-rings in very large dimensions due to the enormous work and related costs involved in making extra-large molds. In addition, such large molds are extremely difficult to handle and therefore cannot be accomplished by many seal manufacturers.
The innovative manufacturing technology of continuous vulcanization used by Parker Prädifa, which does not involve failure-prone joints, enables the cost-efficient production of precision-quality O-rings with high mechanical load resistance in nearly any desired diameter. The technical properties of continuously vulcanized O-rings are comparable with those of O-rings produced by conventional compression molding. As a result of being molded, these XXL O-rings are quality products for challenging applications.
The surface qualities and tolerances correspond to those in ISO 3601:2012. However, this standard only covers cord thicknesses of up to 8.4 mm. To ensure that customers receive reliable and consistently high-quality O-rings where cord thickness is >8.4 mm, Parker Prädifa has developed an in-house standard based on ISO 3601:2012.
In addition to precision-quality XXL O-rings, Parker Prädifa offers the development and production of customer-specific geometries in large diameters. A wide range of materials is available according to the application requirements.
The challenge >> In the large-scale industrial production of semi-synthetic antibiotics, up to 500,000 liters of antibiotics are produced per batch. For such large-scale production to be economically feasible equipment of corresponding dimensions is required. In addition to large fermenters with diameters of several meters in which the biotech antibiotic is bred, centrifuges of similar dimensions are utilized to separate the antibiotic from process agents. Leakage must be prevented at all cost for safety and economic reasons. A leaking centrifuge might contaminate the antibiotics, resulting in high financial losses or, worse yet, in health and environmental hazards.
The solution >> Parker Prädifa was involved in the project at an early stage to develop a reliable sealing solution. The utilization of continuously vulcanized, i.e. jointless precision O-rings ensures the requisite reliability. Besides the seal design, the compound properties, particularly temperature and media resistance, play a key role. In addition to permanent temperatures of 250 °C, the seal has to withstand the aggressive media used in antibiotics production. The Parofluor® (FFKM) compound V8920 was selected as the suitable material for this application.
The challenge >> The development of a new lithography system for semiconductor manufacturing posed the challenge of sealing two halves of a housing. Due to the tolerance situation in producing the respective housing halves, there was a risk of a gap of up to 0.5 mm occurring between the two halves in the assembled housing.
The solution >> In sealing technology, the gap dimensions to be bridged are typically between 0.05 mm and 0.25 mm. As larger gap dimensions available for sealing in the groove in this application could not be reliably sealed, or only by entailing a higher risk of leakage, with a solid seal such as an O-ring, a conventional O-ring sealing solution was not selected here, but a profile seal featuring a lip design. This seal was developed using Finite Element Analysis (FEA) to ensure reliable sealing of large gaps and tolerance variations in the seal groove between the two halves of the housing. In addition, the shape of the seal prevents twisting during installation and reduces the required assembly forces.
In the selection of the seal compound, high purity requirements had to be considered. Due to specific post-curing processes, the FKM compound V0747 with low outgassing properties achieves outstanding results.
This article was contributed by Stefan Reichle, Market Unit Manager Indsutry, Engineered Materials Group Europe, Prädifa Technology Division.
Incorrect O-ring installation can lead to assembly damage causing leakage during the first pressure test. If the system does not pressurize properly, the entire piece of equipment should be disassembled and seals must be replaced. Depending on when this test occurs, multiple manufacturing steps could be in between the seal installation and the first step where leakage can be identified. If O-ring damage happens with high frequency, you could be wasting time and money on seal replacement. Luckily, there are some easy steps that can be followed to help prevent this from occurring. Parker's recommended guidelines for installation include always using lubrication, good gland design, and ensuring correct sizing.
Using lubrication is an essential facet of proper installation. Lubrication reduces surface friction between the O-ring and mating surfaces, allowing the O-ring to seat in the groove with very little difficulty. In male and female radial seals, lubrication will reduce installation force and create a smooth transition as the piston is inserted in the bore.
Choosing the proper lubricant requires careful consideration of your system. You must ensure the lubricant choice is compatible with the material being used, suitable for the temperature range of the application, compatible with the system fluids, capable of producing a high surface tension film, and does not clog system filters.
Lubrication of O-rings is extremely important. The greatest benefit of using a lubricant is typically obtained during installation.
Using a lubricant is going to decrease the surface friction of the O-ring helping to prevent abrasion, pinching or cutting of the O-ring during installation. Lubricating an O-ring can also help to seat the O-ring properly into the application, as well as aid and speed up automated assembly processes.
The proper method of applying a lubricant to an O-ring always seems to be an area of concern for many of our customers and there are many methods used in the marketplace. One is to apply the lubricant to the O-ring using your fingers, your hand or a brush. Another is to dip the O-ring into a container of the lubricant. A third method commonly used is to dispense the O-ring lubricant into the seal packaging and use what we call the "shake and bake" method.
The common goal of all of these different lubrication methods is to have a thin uniform film applied to the entire surface of the O-ring when completed. This will ease installation and provide best friction reduction.
Gallagher Fluid Seals is a Parker Authorized Distributor, with thousands of o-rings stocked at all times. If you have any questions about o-rings, material compatibility, failure modes, etc, please don't hesitate to contact us.
Article re-posted with permission from Parker Hannifin Sealing & Shielding Team. Original content can be found on Parker's Blog.
Can O-rings be used in rectangular or non-circular groove patterns? This question comes up weekly, and the answer is a resounding "Yes!" however there are definite guidelines we want to follow. A non-circular face seal footprint might also be called a racetrack groove, a wandering groove or a custom plan view. When using an O-ring, the main design consideration is the corner or smallest radius (shown "r" in diagram). The inside radius should be at least three times the O-ring cross sectional diameter. In a perfect world, six times greater is even better. What we want to avoid is over-stressing the O-ring around the bend, or causing a corner crease which increases likelihood of corner leakage. Designing the radius at six times the cross section will minimize the bending stress, resulting in increased service life.
The face seal design chart below explains the hardware dimensions to use for an O-ring seal when the groove is cut into a flat surface.
For designing systems which contain internal pressure, like the example below, the groove's outside diameter (OD) is primary, and the groove's width then determines the inside diameter.


The reason for creating the investigative grand jury remains unknown. It's also not known what case or cases the group is expected to review.
York County's top judge has authorized the creation of an investigative grand jury panel, the York County District Attorney's Office has confirmed.
Grand juries generally are convened to review evidence and determine whether it's substantial enough to warrant criminal charges. Grand juries also can hand down indictments.
The district attorney's office asked York County President Common Pleas Judge Joseph C. Adams to issue an order summoning an investigative grand jury, according to Kyle King, spokesman for the office.
Adams issued the order to convene a grand jury, King confirmed.
Grand juries can examine multiple cases. It's unclear how many cases, and which ones, this grand jury will be tasked with reviewing.
King said no one at the district attorney's office is at liberty to discuss "any matters concerning the investigative grand jury."
He cited Pennsylvania law, which states that prosecutors and other court employees are sworn to secrecy about grand jury proceedings and can be held in contempt of court for violating the law.
York County used investigating grand juries to review evidence of crimes committed during York City's 1969 race riots, during which city Officer Henry Schaad and a woman visiting family in York — Lillie Belle Allen — were murdered.
A number of men either pleaded guilty or were found guilty at trial in York County Court of the separate murders.


text:
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "content/browser/network_service_instance_impl.h"

#include <map>
#include <memory>
#include <string>
#include <utility>

#include "base/bind.h"
#include "base/environment.h"
#include "base/feature_list.h"
#include "base/message_loop/message_pump_type.h"
#include "base/metrics/histogram_macros.h"
#include "base/no_destructor.h"
#include "base/sequenced_task_runner.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/synchronization/waitable_event.h"
#include "base/task/post_task.h"
#include "base/threading/sequence_local_storage_slot.h"
#include "base/threading/thread.h"
#include "build/build_config.h"
#include "content/browser/browser_main_loop.h"
#include "content/browser/network_service_client.h"
#include "content/browser/service_sandbox_type.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/content_browser_client.h"
#include "content/public/browser/network_service_instance.h"
#include "content/public/browser/service_process_host.h"
#include "content/public/browser/system_connector.h"
#include "content/public/common/content_client.h"
#include "content/public/common/network_service_util.h"
#include "content/public/common/service_names.mojom.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "net/log/net_log_util.h"
#include "services/network/network_service.h"
#include "services/network/public/cpp/features.h"
#include "services/network/public/cpp/network_switches.h"
#include "services/network/public/mojom/net_log.mojom.h"
#include "services/network/public/mojom/network_change_manager.mojom.h"
#include "services/network/public/mojom/network_service.mojom.h"
#include "services/network/public/mojom/network_service_test.mojom.h"

namespace content {

namespace {

#if defined(OS_POSIX)
// Environment variable pointing to credential cache file.
constexpr char kKrb5CCEnvName[] = "KRB5CCNAME";
// Environment variable pointing to Kerberos config file.
constexpr char kKrb5ConfEnvName[] = "KRB5_CONFIG";
#endif

bool g_force_create_network_service_directly = false;
mojo::Remote<network::mojom::NetworkService>* g_network_service_remote =
    nullptr;
network::NetworkConnectionTracker* g_network_connection_tracker;
bool g_network_service_is_responding = false;
base::Time g_last_network_service_crash;

std::unique_ptr<network::NetworkService>& GetLocalNetworkService() {
  static base::NoDestructor<
      base::SequenceLocalStorageSlot<std::unique_ptr<network::NetworkService>>>
      service;
  return service->GetOrCreateValue();
}

// If this feature is enabled, the Network Service will run on its own thread
// when running in-process; otherwise it will run on the IO thread.
//
// On Chrome OS, the Network Service must run on the IO thread because
// ProfileIOData and NetworkContext both try to set up NSS, which has to be
// called from the IO thread.
const base::Feature kNetworkServiceDedicatedThread {
  "NetworkServiceDedicatedThread",
#if defined(OS_CHROMEOS)
      base::FEATURE_DISABLED_BY_DEFAULT
#else
      base::FEATURE_ENABLED_BY_DEFAULT
#endif
};

base::Thread& GetNetworkServiceDedicatedThread() {
  static base::NoDestructor<base::Thread> thread{"NetworkService"};
  DCHECK(base::FeatureList::IsEnabled(kNetworkServiceDedicatedThread));
  return *thread;
}

// The instance NetworkService used when hosting the service in-process. This is
// set up by |CreateInProcessNetworkServiceOnThread()| and destroyed by
// |ShutDownNetworkService()|.
network::NetworkService* g_in_process_instance = nullptr;

void CreateInProcessNetworkServiceOnThread(
    mojo::PendingReceiver<network::mojom::NetworkService> receiver) {
  // The test interface doesn't need to be implemented in the in-process case.
  auto registry = std::make_unique<service_manager::BinderRegistry>();
  registry->AddInterface(base::BindRepeating(
      [](mojo::PendingReceiver<network::mojom::NetworkServiceTest>) {}));
  g_in_process_instance = new network::NetworkService(
      std::move(registry), std::move(receiver),
      true /* delay_initialization_until_set_client */);
}

scoped_refptr<base::SequencedTaskRunner>& GetNetworkTaskRunnerStorage() {
  static base::NoDestructor<scoped_refptr<base::SequencedTaskRunner>> storage;
  return *storage;
}

void CreateInProcessNetworkService(
    mojo::PendingReceiver<network::mojom::NetworkService> receiver) {
  scoped_refptr<base::SingleThreadTaskRunner> task_runner;
  if (base::FeatureList::IsEnabled(kNetworkServiceDedicatedThread)) {
    base::Thread::Options options(base::MessagePumpType::IO, 0);
    GetNetworkServiceDedicatedThread().StartWithOptions(options);
    task_runner = GetNetworkServiceDedicatedThread().task_runner();
  } else {
    task_runner = base::CreateSingleThreadTaskRunner({BrowserThread::IO});
  }

  GetNetworkTaskRunnerStorage() = std::move(task_runner);

  GetNetworkTaskRunner()->PostTask(
      FROM_HERE, base::BindOnce(&CreateInProcessNetworkServiceOnThread,
                                std::move(receiver)));
}

network::mojom::NetworkServiceParamsPtr CreateNetworkServiceParams() {
  network::mojom::NetworkServiceParamsPtr network_service_params =
      network::mojom::NetworkServiceParams::New();
  network_service_params->initial_connection_type =
      network::mojom::ConnectionType(
          net::NetworkChangeNotifier::GetConnectionType());
  network_service_params->initial_connection_subtype =
      network::mojom::ConnectionSubtype(
          net::NetworkChangeNotifier::GetConnectionSubtype());

#if defined(OS_POSIX)
  // Send Kerberos environment variables to the network service.
  if (IsOutOfProcessNetworkService()) {
    std::unique_ptr<base::Environment> env(base::Environment::Create());
    std::string value;
    if (env->HasVar(kKrb5CCEnvName)) {
      env->GetVar(kKrb5CCEnvName, &value);
      network_service_params->environment.push_back(
          network::mojom::EnvironmentVariable::New(kKrb5CCEnvName, value));
    }
    if (env->HasVar(kKrb5ConfEnvName)) {
      env->GetVar(kKrb5ConfEnvName, &value);
      network_service_params->environment.push_back(
          network::mojom::EnvironmentVariable::New(kKrb5ConfEnvName, value));
    }
  }
#endif
  return network_service_params;
}

void CreateNetworkServiceOnIOForTesting(
    mojo::PendingReceiver<network::mojom::NetworkService> receiver,
    base::WaitableEvent* completion_event) {
  if (GetLocalNetworkService()) {
    GetLocalNetworkService()->Bind(std::move(receiver));
    return;
  }

  GetLocalNetworkService() = std::make_unique<network::NetworkService>(
      nullptr /* registry */, std::move(receiver),
      true /* delay_initialization_until_set_client */);
  GetLocalNetworkService()->Initialize(
      network::mojom::NetworkServiceParams::New(),
      true /* mock_network_change_notifier */);
  if (completion_event)
    completion_event->Signal();
}

void BindNetworkChangeManagerReceiver(
    mojo::PendingReceiver<network::mojom::NetworkChangeManager> receiver) {
  GetNetworkService()->GetNetworkChangeManager(std::move(receiver));
}

base::CallbackList<void()>& GetCrashHandlersList() {
  static base::NoDestructor<base::CallbackList<void()>> s_list;
  return *s_list;
}

void OnNetworkServiceCrash() {
  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
  DCHECK(g_network_service_remote);
  DCHECK(g_network_service_remote->is_bound());
  DCHECK(!g_network_service_remote->is_connected());
  g_last_network_service_crash = base::Time::Now();
  GetCrashHandlersList().Notify();
}

// Parses the desired granularity of NetLog capturing specified by the command
// line.
net::NetLogCaptureMode GetNetCaptureModeFromCommandLine(
    const base::CommandLine& command_line) {
  base::StringPiece switch_name = network::switches::kNetLogCaptureMode;

  if (command_line.HasSwitch(switch_name)) {
    std::string value = command_line.GetSwitchValueASCII(switch_name);

    if (value == "Default")
      return net::NetLogCaptureMode::kDefault;
    if (value == "IncludeSensitive")
      return net::NetLogCaptureMode::kIncludeSensitive;
    if (value == "Everything")
      return net::NetLogCaptureMode::kEverything;

    // Warn when using the old command line switches.
    if (value == "IncludeCookiesAndCredentials") {
      LOG(ERROR) << "Deprecated value for --" << switch_name
                 << ". Use IncludeSensitive instead";
      return net::NetLogCaptureMode::kIncludeSensitive;
    }
    if (value == "IncludeSocketBytes") {
      LOG(ERROR) << "Deprecated value for --" << switch_name
                 << ". Use Everything instead";
      return net::NetLogCaptureMode::kEverything;
    }

    LOG(ERROR) << "Unrecognized value for --" << switch_name;
  }

  return net::NetLogCaptureMode::kDefault;
}

}  // namespace

network::mojom::NetworkService* GetNetworkService() {
  if (!g_network_service_remote)
    g_network_service_remote = new mojo::Remote<network::mojom::NetworkService>;
  static NetworkServiceClient* g_client;
  if (!g_network_service_remote->is_bound() ||
      !g_network_service_remote->is_connected()) {
    bool service_was_bound = g_network_service_remote->is_bound();
    g_network_service_remote->reset();
    if (GetContentClient()->browser()->IsShuttingDown()) {
      // This happens at system shutdown, since in other scenarios the network
      // process would only be torn down once the message loop stopped running.
      // We don't want to start the network service again so just create message
      // pipe that's not bound to stop consumers from requesting creation of the
      // service.
      auto receiver = g_network_service_remote->BindNewPipeAndPassReceiver();
      auto leaked_pipe = receiver.PassPipe().release();
    } else {
      if (!g_force_create_network_service_directly) {
        mojo::PendingReceiver<network::mojom::NetworkService> receiver =
            g_network_service_remote->BindNewPipeAndPassReceiver();
        g_network_service_remote->set_disconnect_handler(
            base::BindOnce(&OnNetworkServiceCrash));
        if (IsInProcessNetworkService()) {
          CreateInProcessNetworkService(std::move(receiver));
        } else {
          if (service_was_bound)
            LOG(ERROR) << "Network service crashed, restarting service.";
          ServiceProcessHost::Launch(
              std::move(receiver),
              ServiceProcessHost::Options()
                  .WithDisplayName(base::UTF8ToUTF16("Network Service"))
                  .Pass());
        }
      } else {
        // This should only be reached in unit tests.
        if (BrowserThread::CurrentlyOn(BrowserThread::IO)) {
          CreateNetworkServiceOnIOForTesting(
              g_network_service_remote->BindNewPipeAndPassReceiver(),
              /*completion_event=*/nullptr);
        } else {
          base::WaitableEvent event;
          base::PostTask(
              FROM_HERE, {BrowserThread::IO},
              base::BindOnce(
                  CreateNetworkServiceOnIOForTesting,
                  g_network_service_remote->BindNewPipeAndPassReceiver(),
                  base::Unretained(&event)));
          event.Wait();
        }
      }

      mojo::PendingRemote<network::mojom::NetworkServiceClient> client_remote;
      auto client_receiver = client_remote.InitWithNewPipeAndPassReceiver();
      // Call SetClient before creating NetworkServiceClient, as the latter
      // might make requests to NetworkService that depend on initialization.
      (*g_network_service_remote)
          ->SetClient(std::move(client_remote), CreateNetworkServiceParams());
      g_network_service_is_responding = false;
      g_network_service_remote->QueryVersion(base::BindOnce(
          [](base::Time start_time, uint32_t) {
            g_network_service_is_responding = true;
            base::TimeDelta delta = base::Time::Now() - start_time;
            UMA_HISTOGRAM_MEDIUM_TIMES("NetworkService.TimeToFirstResponse",
                                       delta);
            if (g_last_network_service_crash.is_null()) {
              UMA_HISTOGRAM_MEDIUM_TIMES(
                  "NetworkService.TimeToFirstResponse.OnStartup", delta);
            } else {
              UMA_HISTOGRAM_MEDIUM_TIMES(
                  "NetworkService.TimeToFirstResponse.AfterCrash", delta);
            }
          },
          base::Time::Now()));

      delete g_client;  // In case we're recreating the network service.
      g_client = new NetworkServiceClient(std::move(client_receiver));

      const base::CommandLine* command_line =
          base::CommandLine::ForCurrentProcess();
      if (command_line->HasSwitch(network::switches::kLogNetLog)) {
        base::FilePath log_path =
            command_line->GetSwitchValuePath(network::switches::kLogNetLog);

        base::DictionaryValue client_constants =
            GetContentClient()->GetNetLogConstants();

        base::File file(
            log_path, base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_WRITE);
        if (!file.IsValid()) {
          LOG(ERROR) << "Failed opening NetLog: " << log_path.value();
        } else {
          (*g_network_service_remote)
              ->StartNetLog(std::move(file),
                            GetNetCaptureModeFromCommandLine(*command_line),
                            std::move(client_constants));
        }
      }

      base::FilePath ssl_key_log_path;
      if (command_line->HasSwitch(network::switches::kSSLKeyLogFile)) {
        UMA_HISTOGRAM_ENUMERATION(kSSLKeyLogFileHistogram,
                                  SSLKeyLogFileAction::kSwitchFound);
        ssl_key_log_path =
            command_line->GetSwitchValuePath(network::switches::kSSLKeyLogFile);
        LOG_IF(WARNING, ssl_key_log_path.empty())
            << "ssl-key-log-file argument missing";
      } else {
        std::unique_ptr<base::Environment> env(base::Environment::Create());
        std::string env_str;
        if (env->GetVar("SSLKEYLOGFILE", &env_str)) {
          UMA_HISTOGRAM_ENUMERATION(kSSLKeyLogFileHistogram,
                                    SSLKeyLogFileAction::kEnvVarFound);
#if defined(OS_WIN)
          // base::Environment returns environment variables in UTF-8 on
          // Windows.
          ssl_key_log_path = base::FilePath(base::UTF8ToUTF16(env_str));
#else
          ssl_key_log_path = base::FilePath(env_str);
#endif
        }
      }

      if (!ssl_key_log_path.empty()) {
        base::File file(ssl_key_log_path,
                        base::File::FLAG_OPEN_ALWAYS | base::File::FLAG_APPEND);
        if (!file.IsValid()) {
          LOG(ERROR) << "Failed opening SSL key log file: "
                     << ssl_key_log_path.value();
        } else {
          UMA_HISTOGRAM_ENUMERATION(kSSLKeyLogFileHistogram,
                                    SSLKeyLogFileAction::kLogFileEnabled);
          (*g_network_service_remote)->SetSSLKeyLogFile(std::move(file));
        }
      }

      GetContentClient()->browser()->OnNetworkServiceCreated(
          g_network_service_remote->get());
    }
  }
  return g_network_service_remote->get();
}

std::unique_ptr<base::CallbackList<void()>::Subscription>
RegisterNetworkServiceCrashHandler(base::RepeatingClosure handler) {
  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
  DCHECK(!handler.is_null());

  return GetCrashHandlersList().Add(std::move(handler));
}

#if defined(OS_CHROMEOS)
net::NetworkChangeNotifier* GetNetworkChangeNotifier() {
  return BrowserMainLoop::GetInstance()->network_change_notifier();
}
#endif

void FlushNetworkServiceInstanceForTesting() {
  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));

  if (g_network_service_remote)
    g_network_service_remote->FlushForTesting();
}

network::NetworkConnectionTracker* GetNetworkConnectionTracker() {
  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) ||
         !BrowserThread::IsThreadInitialized(BrowserThread::UI));
  if (!g_network_connection_tracker) {
    g_network_connection_tracker = new network::NetworkConnectionTracker(
        base::BindRepeating(&BindNetworkChangeManagerReceiver));
  }
  return g_network_connection_tracker;
}

void GetNetworkConnectionTrackerFromUIThread(
    base::OnceCallback<void(network::NetworkConnectionTracker*)> callback) {
  base::PostTaskAndReplyWithResult(
      FROM_HERE, {BrowserThread::UI, base::TaskPriority::BEST_EFFORT},
      base::BindOnce(&GetNetworkConnectionTracker), std::move(callback));
}

network::NetworkConnectionTrackerAsyncGetter
CreateNetworkConnectionTrackerAsyncGetter() {
  return base::BindRepeating(&content::GetNetworkConnectionTrackerFromUIThread);
}

void SetNetworkConnectionTrackerForTesting(
    network::NetworkConnectionTracker* network_connection_tracker) {
  if (g_network_connection_tracker != network_connection_tracker) {
    DCHECK(!g_network_connection_tracker || !network_connection_tracker);
    g_network_connection_tracker = network_connection_tracker;
  }
}

const scoped_refptr<base::SequencedTaskRunner>& GetNetworkTaskRunner() {
  DCHECK(IsInProcessNetworkService());
  return GetNetworkTaskRunnerStorage();
}

void ForceCreateNetworkServiceDirectlyForTesting() {
  g_force_create_network_service_directly = true;
}

void ResetNetworkServiceForTesting() {
  ShutDownNetworkService();
}

void ShutDownNetworkService() {
  delete g_network_service_remote;
  g_network_service_remote = nullptr;
  if (g_in_process_instance) {
    GetNetworkTaskRunner()->DeleteSoon(FROM_HERE, g_in_process_instance);
    g_in_process_instance = nullptr;
  }
  GetNetworkTaskRunnerStorage().reset();
}

NetworkServiceAvailability GetNetworkServiceAvailability() {
  if (!g_network_service_remote)
    return NetworkServiceAvailability::NOT_CREATED;
  else if (!g_network_service_remote->is_bound())
    return NetworkServiceAvailability::NOT_BOUND;
  else if (!g_network_service_remote->is_connected())
    return NetworkServiceAvailability::ENCOUNTERED_ERROR;
  else if (!g_network_service_is_responding)
    return NetworkServiceAvailability::NOT_RESPONDING;
  else
    return NetworkServiceAvailability::AVAILABLE;
}

base::TimeDelta GetTimeSinceLastNetworkServiceCrash() {
  if (g_last_network_service_crash.is_null())
    return base::TimeDelta();
  return base::Time::Now() - g_last_network_service_crash;
}

void PingNetworkService(base::OnceClosure closure) {
  GetNetworkService();
  // Unfortunately, QueryVersion requires a RepeatingCallback.
  g_network_service_remote->QueryVersion(base::BindOnce(
      [](base::OnceClosure closure, uint32_t) {
        if (closure)
          std::move(closure).Run();
      },
      base::Passed(std::move(closure))));
}

}  // namespace content

redpajama_set_name: RedPajamaGithub


A security researcher recently figured out how to install and play the classic first-person shooter video game Doom on point-of-sale credit card readers, the ubiquitous devices at store registers around the world that complete purchases when you swipe, tap, or insert your credit card.
While Nolan Ray's hack isn't going to blow up the POS world, it helps demonstrate the potential insecurities of our retail transactions.
At the annual hacker conference DefCon in July, Ray demonstrated his hack on the Verifone MX 925, a credit card reader still in use and receiving manufacturer updates. You can buy it on Amazon.com for less than $600. He began by unlocking the device with its default personal identification number, or PIN, which Ray says retailers—like consumers, with other Internet-connected devices—rarely change, due to laziness or a lack of guidance. More than 90 percent of POS readers rely on their default PIN for security, according to a 2015 study.
Once the terminal has been unlocked, any malicious hacker could access and steal data stored on the reader—or install a 25-year-old video game like Doom—wirelessly through a Wi-Fi or Bluetooth connection, or directly through its smart-card reader, or its USB or COM ports.
While you might not expect a store clerk to allow a malicious hacker to fiddle with a POS reader long enough to unlock or steal data from it, unmanned registers, especially at big chain stores, make for tantalizing targets. And as retailers increasingly rely on payment devices to process customer purchases and protect customer data, they need to become more vigilant than ever about the security at the register, Ray told The Parallax after his presentation.
"A lot of the classic breaches were actually going after the point-of-sale system, and now [retailers are] trying to move all of that card data off of those systems," he says. A POS reader is "oftentimes a 'black box' to the retail chain," he adds. Retailers are "just kind of taking vendor guarantees" about device security without verifying them.
Ray says Verifone "generally" has "excellent security," and was "quick and responsive" when he told the company about his Doom hack, in accordance with responsible disclosure practices. But POS devices from various manufacturers have a long history of hacker exploitation. And although a number of high-profile retailers and financial institutions, including Equifax, Target, Home Depot, and J.P. Morgan, have acknowledged breaches over the past several years, he and other experts worry that manufacturers of POS readers aren't sufficiently motivated to improve their devices' security.
How much should we worry about hackers stealing our credit card information through a POS reader? The odds are low, says Ben Knieff, a financial-crimes consultant.
"When you consider the fact that there are millions of payments terminals, the chance of you getting hacked through any given one of them is very small," he says. But that doesn't make the threat less real.
The cost of credit card fraud, which includes hacked POS reader transactions, has been rising, Knieff says. Researchers for LexisNexis' 2016 True Cost of Fraud Report found that every dollar lost to fraud cost merchants $2.40, 17 cents more than it did the prior year. Likewise, the monthly average of fraudulent transactions has increased, from 156 to 206 successful fraudulent purchases.
Charles Henderson, who leads IBM's X-Force Red security testing team, presented an in-depth study on POS security in 2015 at the RSA Conference in San Francisco. His investigations at the time revealed much of what Ray was able to re-confirm at DefCon this year: POS readers are typically shipped with default PINs. They typically lack strong data encryption technology. And retailers' typically lax security policies enable hackers to install malware on POS devices with relative ease.
Retailers can take various steps to protect their POS readers and, by extension, their customers. The first step, Ray says, is to change the default PIN.
Knieff adds that before sliding their credit cards in POS readers, consumers should attempt to wiggle them. A loose or wobbly reader connection might indicate that a credit card skimmer was placed over the device. And Henderson stresses the importance of big-box retailers performing security tests on installed POS readers.


1260th post in this thread / topic.
Guess I'm leaving until I feel better and not-so-depressed-that-every-living-being-hates-me depressed.
It could be worse (like being forced to move out without a computer and with no money, getting killed, etc.).
If my cat is suffering, I can't cheer up.
She has no food either.
Anyway, guess my final post here will probably be in the Toribash thread nathantcash made. Probably.
But pretty unlikely, since anything is possible.
Got a new monitor today.
One here, two at the SCSForums (as of posting this).
And your next post will be your 1000th post!
Shane + ORGMaker = chaos.
Shane + ORGMaker2 = even more chaos.
Shane + Sword = a lot of destruction.
Shane + Poetry = horrible poems.
SILVER! INTERNAL! LIGHTNING! VEGETABLE! EMBER! RANDOM!
Did you hear a echo?


text:
Brodie Croft granted early release to head home to join Brisbane Broncos
November 30, 2019 ricky	Leave a comment
New Brisbane Broncos halfback Brodie Croft
The Brisbane Broncos got their man, and that man is newly released Melbourne Storm half Brodie Croft.
Being granted that release allowed the Broncos to sign Croft on a three-year deal.
Croft will join Junior Kangaroos teammates David Fifita and Thomas Flegler at the club.
With 39 games to date and still only 22, there is room to grow but the potential is there and that excites coach Anthony Seibold.
"We are bringing Brodie home to Queensland and giving him the opportunity to represent our club and the club he grew up supporting," said Seibold.
"Brodie has performed at an elite level throughout the various stages of his development and even as recent as last month represented the Junior Kangaroos under-23s team."
Having played in the 2018 NRL grand final and maturing as a player, Seibold believes Croft is ready for the next step.
"I believe Brodie is ready to step up as a leader and key position player at the Broncos after learning his craft in Melbourne," the Broncos head coach continued.
"He experienced a Grand Final in 2018 and is at an age where he is ready to lead a team around the park.
"Brodie gives us depth in the halfback position and he, Anthony Milford and Tom Dearden are players we believe can have a strong influence in what we do in season 2020 and beyond."
Broncos CEO Paul White also chimed in on Croft's arrival.
"Brodie comes from a good system and has played a few seasons of NRL football and that is important for our club," said White.
"Brodie wants to be a Bronco and is a proud Queenslander – and we are really happy to be able to be bring him home."
Previous PostHome is where the heart is as Townsend sticks with the SharksNext PostMerrin leaves England to make surprise return to Dragons


text:
Energy Challenge charges forward
Published on: Monday, June 1, 2015 Takoma Park Newsletter
By Gina Mathias
More than 200 households – representing a full 4 percent of the city's single family homes – have signed up for Takoma Park's Neighborhood Energy Challenge, and are working towards their Green Home Certification since the Challenge launched earlier this year. That's real progress, and it is only the beginning. Here are some of the other accomplishments the city has chalked up as it works toward winning the Georgetown University Energy Prize, a $5 million grant that could boost Takoma Park's energy profile even higher.
The first data submission to the Georgetown University Energy Prize (GUEP) team was completed. It establishes the city's baseline, which is what Takoma Park will be judged against for the next two years. Data will be shared at takomaparkmd.gov/sustainability once it is evaluated and approved by the GUEP team.
Two out of the six City Councilmembers have had an energy audit as of May 18: Council-members Tim Male (Ward 2) and Kate Stewart (Ward 3). Wonder who will get Green Home Certified first?
Neighborhood Energy Challenge teams have formed in every ward, but not all neighborhoods have signed up yet for a chance at the $2,000 prize. That prize will go to the neighborhood with the most participation and homes (including rentals!) getting Green Home Certified, with actual energy savings to show for it. Want to start or join a team? Email ginam@ takomaparkmd.gov. Teams that have formed include: Hodges Heights; Sycamore-Beech-Woodland; New Hampshire Gardens North of Jackson and New Hampshire Gardens South of Jackson; East Long Branch Sligo (between the creeks) and West Long Branch Sligo; Elm Avenue (segments); South of Forest Park; Allegheny-Westmoreland Area; and PoplarGude-Cockerille.
Between Pepco, Washington Gas, City of Takoma Park and Montgomery County, there are more than $3,580 in rebates available for individual homeowners. Get yours before the money is gone! Email ginam@takomaparkmd.gov for details.
The best way to start participating in this drive to save energy is to get a Comprehensive Energy Audit of your home. The city will even reimburse you the $100 cost! For a list of preferred contractors, go to http://tinyurl. com/preferredcontractors.
This article appeared in the June 2015 edition of the Takoma Park Newsletter. The Takoma Park Newsletter is available for download here.
The Firehouse Report
Storm alert: Staying safe in Takoma Park


text:
Q: How to access property with a condition inside React.useState() and change it I have a component that uses React.useState to keep a property named available
and what I want to do is to change its value to true with a conditional statement, so that my component gets rendered based on that condition, but I can't set up a conditional statement inside React.useState. I tried changing it in my other component with a conditional statement:
  const [isUserLogged] = React.useState(true);
  const arrowDir = props['data-expanded']
    ? 'k-i-arrow-chevron-down'
    : 'k-i-arrow-chevron-right';

  if (isUserLogged === true) {
    props.available === true;
  }

But that didn't work too. How can I achieve this with a conditional statement? Here is my entire code:
import * as React from 'react';
import { withRouter } from 'react-router-dom';
import {
  Drawer,
  DrawerContent,
  DrawerItem,
} from '@progress/kendo-react-layout';
import { Button } from '@progress/kendo-react-buttons';

const CustomItem = (props) => {
  const { visible, ...others } = props;
  const [isUserLogged] = React.useState(true);
  const arrowDir = props['data-expanded']
    ? 'k-i-arrow-chevron-down'
    : 'k-i-arrow-chevron-right';

  if (isUserLogged === true) {
    props.available === true;
  }

  return (
    <React.Fragment>
      {props.available === false ? null : (
        <DrawerItem {...others}>

          {props.text}
          {props['data-expanded'] !== undefined && (

          )}
        </DrawerItem>
      )}
    </React.Fragment>
  );
};

const DrawerContainer = (props) => {
  const [drawerExpanded, setDrawerExpanded] = React.useState(true);
  const [isUserLogged] = React.useState(true);

  const [items, setItems] = React.useState([
    {
      text: 'Education',
      icon: 'k-i-pencil',
      id: 1,
      selected: true,
      route: '/',
    },
    {
      separator: true,
    },
    {
      text: 'Food',
      icon: 'k-i-heart',
      id: 2,
      ['data-expanded']: true,
      route: '/food',
    },
    {
      text: 'Japanese Food',
      icon: 'k-i-minus',
      id: 4,
      parentId: 2,
      route: '/food/japanese',
    },
    {
      text: 'Secret Food',
      icon: 'k-i-minus',
      id: 5,
      parentId: 2,
      route: '/food/italian',
      available: false,
    },
    {
      separator: true,
    },
    {
      text: 'Travel',
      icon: 'k-i-globe-outline',
      ['data-expanded']: true,
      id: 3,
      route: '/travel',
    },
    {
      text: 'Europe',
      icon: 'k-i-minus',
      id: 6,
      parentId: 3,
      route: '/travel/europe',
    },
    {
      text: 'North America',
      icon: 'k-i-minus',
      id: 7,
      parentId: 3,
      route: '/travel/america',
    },
  ]);

  const handleClick = () => {
    setDrawerExpanded(!drawerExpanded);
  };

  const onSelect = (ev) => {
    const currentItem = ev.itemTarget.props;
    const isParent = currentItem['data-expanded'] !== undefined;
    const nextExpanded = !currentItem['data-expanded'];
    const newData = items.map((item) => {
      const {
        selected,
        ['data-expanded']: currentExpanded,
        id,
        ...others
      } = item;
      const isCurrentItem = currentItem.id === id;
      return {
        selected: isCurrentItem,
        ['data-expanded']:
          isCurrentItem && isParent ? nextExpanded : currentExpanded,
        id,
        ...others,
      };
    });
    props.history.push(ev.itemTarget.props.route);
    setItems(newData);
  };

  const data = items.map((item) => {
    const { parentId, ...others } = item;

    if (parentId !== undefined) {
      const parent = items.find((parent) => parent.id === parentId);
      return { ...others, visible: parent['data-expanded'] };
    }

    return item;
  });
  return (

        <Button icon="menu" look="flat" onClick={handleClick} />
        Categories

      <Drawer
        expanded={drawerExpanded}
        mode="push"
        width={180}
        items={data}
        item={CustomItem}
        onSelect={onSelect}
      >
        <DrawerContent>{props.children}</DrawerContent>
      </Drawer>

  );
};

export default withRouter(DrawerContainer);

A: if props.available is present when your component is rendering you can write a conditional expression while declaring the isLoggedIn inside useState.
In case it is available later we can always use useEffect hook to update the isLoggedIn
const Component = (props) => {
// if props.available is already present to you
const [isLoggedIn, setIsLoggedIn] = React.useState(props.isAvailable ? true : false);

// if props.isAvailable is not present when your component renders you can use
// useEffect

React.useEffect(() => {
  setIsLoggedIn(props.isAvailable);
}, [props.isAvailable])

 // use IsLoggedIN here
return (

  {
    isLoggedIn ?

 Logged in

     :
llogged out

   }

)

}

redpajama_set_name: RedPajamaStackExchange


Guevara, E., Gutiérrez-Hernández, J. M., Castonguay, A., Lesage, F., Moncada, B. & González, F. J. (2017) Multi-modal morphological and molecular imaging of skin samples. Biomedical Research-India. In press.
Beaumont, E., Guevara, E., Dubeau, S., Lesage, F., Nagai, M., & Popovic, M. R. (2014). Functional electrical stimulation post spinal cord injury improves locomotion and increases afferent input into the central nervous system in rats. Journal of Spinal Cord Medicine, 37(1), 93–100. doi:10.1179/2045772313Y.0000000117.
Guevara, E., Berti, R., Londono, I., Xie, N., Bellec, P., Lesage, F., & Lodygensky, G. A. (2013). Imaging of an inflammatory injury in the newborn rat brain with photoacoustic tomography. PLoS ONE. 8(12), e83045. doi:10.1371/journal.pone.0083045.
Guevara, E. (2016). El cerebro en reposo a través de la óptica (1st ed.). San Andrés Cholula, Puebla, México: Editorial UDLAP. ISBN: 978-607-7690-55-9.


Sainsbury's popular Nectar card scheme is set to give shoppers even more rewards for their money.
The new changes will allow customers to take advantage of a more personalised service, with rewards for how often people shop with the retailer.
Sainsbury's said the more loyal a customer is, the more value they'll get from the scheme, which will be digitally led and available as an app on your smartphone.
The project is currently being piloted in the Isle of Wight, with customers able to choose their own offers based on the items they buy most often.


text:
Here it is, finally, after all this time. The thing absolutely no-one – literally not a single soul – asked for: The great big How To Be A Liberal film marathon. I've included one or two films per chapter, for you to watch after you read it, or maybe all at once at the end of the book, or anytime you fancy really. Fuck, I can't control you. YOU MUST BE YOUR OWN PERSON. EXPRESS YOUR AUTONOMY. HAVE YOU LEARNT NOTHING FROM THE BOOK?
This originally popped into existence because the missus and I were going to watch a film which touched on one of the elements of the book, and then decided – fuck it, we've got nothing on – what if we actually put together a series of films which spoke to the events and themes of each chapter? That led to her repeatedly falling asleep while I nerded out hard over some extremely obscure films about 17th Century politics.
Believe me – there's some heavy lifting behind what's on here. We've sat through some proper shite (Cromwell, The Patriot and Marie Antoinette are particularly noteworthy examples which you must never watch) but kept it well away from the list. Every film here has something powerful to recommend it, and some of them are truly extraordinary. Only one of them is objectively bad – Cartesius – but even that is still oddly impressive in its sense of commitment. Although after a couple hours of it, you may admittedly disagree.
The missus' review is included after mine, for reasons of full disclosure. As you can imagine, she is in the process of re-assessing some of her life choices. Parts Two and Three will be up soon.
Eric Darnell and Tim Johnson, 1998, available for free on Amazon Prime
It's curious – but deeply reassuring – how many children's films are imbued with liberal messages. More will figure later on in this list, but Antz is arguably the most radical of all of them. Its central messages are astonishingly on-point – question all orders, think for yourself, be an individual, choose your own life. The final lines of the film are – and I know this is ridiculous, but it's true – a near perfect summary of Harriet Taylor and John Stuart Mill's autonomy principle. It's not on this list just because it's lovely or satisfyingly fable-like way to begin, although it's both of those things. It's here because it's hard to think of another film – for any audience, in any genre – which does a better job of introducing basic liberal ideas. The fact that it then tries to inspire them in children and encourage them to question authority is just a very big plus. Those ideas are explored not just in the plot or the script, but in the architecture of the story. The portrayal of a dumping ground, complete with a lushly depicted rotting fish, as an insect utopia is really quite beautiful – and a reminder that different people have different visions of the good life.
Missus review: Quite boring. Sex jokes for adults in a cartoon? The 90s were so naff.
Cartesius
Roberto Rossellini, 1974, available on Criterion Channel (VPN required)
Yes that's right, we start as we mean to go with a two-and-a-half hour 1970s Italian made-for-TV film about Rene Descartes. To make things even more exciting it's almost impossible to find. The only place I could get it online is on the Criterion Channel, which, unfortunately, does not allow subscriptions from the UK. You can get around this with a VPN – Hotspot has a free version which'll do the trick. Once that's accomplished you have the tribulations of the film itself, which has no narrative structure to speak of, but instead consists of painful set-ups for philosophising between Descartes and a host of figures, always conducted in the same manner and proceeding in the same way. There are no struggles for our hero to overcome or characters to populate his story. So yes – this one is for the hardcore only, but all is not lost. The film is brilliantly researched and thorough, giving you a very efficient overview of the entirety of Cartesian philosophy. Ugo Cardea is oddly fitting as Descartes – rarely smiling and wafting around full of his own self-importance, much as you might imagine the man himself. Charles Borromel makes a perfect Marin Mersenne, with a smile constantly playing on his lips. The rest of the acting is several steps down from that which you get from side characters in a video game or a 70s porno. This is best watched by turning it into a drinking game where you have to do a shot every time someone wakes up Descartes in bed and tells him it's late. There is also a tremendously weird scene involving an automaton. Is it easy? No. Is it fun? No. Is it good? Honestly, no. But it is genuinely informative and there's a real charm to watching a film which is so committed to laying out the history of ideas on screen.
Missus review: I fell asleep several times due to the monotonous tones and every time I woke up it was the same two men talking about mathematics.
The Wachowskis, 1999, available to rent online through streaming services
Before the Matrix, philosophy professors had to explain the notion of the Cartesian demon. After the Matrix, that was no longer necessary. Now they could just say: Prove you're not in the Matrix. In fact the whole film acts as some kind of fever dream playing out in Descartes' head on the night of the three dreams. "You ever have that feeling where you're not sure if you're awake or still dreaming?" Neo asks, in one of his first lines. If Descartes had philosophised through the medium of slow-mo gun fights and kung-fu, this might well have been the kind of thing he'd come up with. The film has barely dated at all, and that is not just about its special effects. It's that it perfectly melds philosophy and action in a way which is seemingly effortless and yet utterly original. Of course, it's been adopted by dimwit conspiracy theory red-pill lunatics online, but watching it gives you an idea of just how universal questions about certainty and objectivity are in Western thought. And that helps dramatise why Descartes' discovery of the individual was so striking: the only certainly true thing in a world you can't rely on.
Missus review: I remember the film being cleverer than it was but maybe I was dumber in the 90s.
A Field in England
Ben Wheatley, 2013, available to rent online through streaming services
Ok, so let's be clear. This film is messed up. It is messed up in ways you will have never thought possible, including one scene that disorientated me so badly I thought for a moment I might throw up. There's no point going into it expecting it to make sense, or indeed that any of the events which unfold during it will be explained. You just have to sort of let it wash over you. It's an uncompromising piece of film-making with a singular vision. One of the things I love about it – there are too many to list individually – is that at some point a group of people decided to make a black and white hallucinogenic horror film set in the English Civil War. What kind of audience is there for that? None. But they did it anyway, and fuck may God bless them for that. There are certain key moments in this, including specifically the shot of a man emerging from a tent – you'll know it when you see it – that might just haunt you forever. They do me. I kept finding myself undone by memories of them days after watching it. It is not included here for the political points it makes, if indeed they can be discerned. It's more that its whole approach – the affront to sense – seems to channel what the civil war period represents, of age-old certainties undermined, of suddenly anything being possible, of violent and shocking change. It doesn't so much address the civil war as try to encapsulate the psychological impact of living through it.
Missus review: I want to forget I ever watched this film please.
Fanny Lye Deliver'd
Thomas Clay, 2020, available to rent online through streaming services
That same sense of strangeness and uncomfortable change is present in Fanny Lye Deliver'd, which makes a good double-bill with A Field in England, although by Christ you'll be fucked by the end of it. The two even have almost identical film posters. Here the sense of weirdness and fluctuation is described as "an England now adream". The sense of historical accuracy here – especially in the housing, clothing and instruments for the soundtrack – is second to none. What starts as a seemingly quite inspiring story suddenly takes a serious turn for the worse and things become really quite monstrous and uncomfortable. The main focus here is on sexual relationships, and in particular the treatment of women, during the civil war period, but it's noticeable how many aspects it shares with A Field in England, including the ingestion of psychedelics in a crucial scene. Mushrooms in both films induce the personal experience of a grander social revolution taking place around the characters. Taken together, these two films give an indication of just what an unsettling impact the English Civil War still has on the English psyche and how it is capable of inspiring filmmakers' best work.
Missus review: I want to watch the civil war Thelma and Louise flick that happened in the last five mins ie. a completely different film.
Chapter Three – Part One: Glorious Revolution
The Man Who Laughs
Paul Leni, 1928, available to rent online through streaming services
Not an easy sell this. A silent black and white film, made nearly a century ago, by a German expressionist. But if you give it a shot you will find wonders which are simply not possible in talkies, not the least of which is the creation of a deeply disturbing – almost suffocating – hypnotic dream-space. Set during the rule of King James II and carrying on into that of Queen Anne, The Man Who Laughs tracks the life of a child whose face has been disfigured into a permanent grin. As it happens, he was the inspiration for the Batman villain the Joker – a fact which will be obvious the moment you lay eyes on him. The film is an examination of false smiles, of the relationship between seriousness and laughter, and nearly every central moment in it emerges from that dynamic. Visually, it is a masterpiece. In terms of its place in this list, the fact it occurs during Glorious Revolution years is ultimately quite superficial. It's included because, at its heart, it is a liberal story. It is about a man discarded as a freak by society, to be laughed at and mocked, who then establishes his own life. Conrad Veidt, in a masterclass of acting, guides us through every feeling he experiences through his eyes while his mouth is fixed in its grim permanent smile, culminating in an extraordinary and deeply moving set piece in the House of Lords. Notice the way that he is always silent, but you can hear the mocking laughter of the crowds gathered around him, or the cruel irony that when someone is finally willing to accept his deformity, it is as a sexual kink which serves to actually undermine his desire for acceptance. A truly beautiful and unforgettable piece of film-making.
Missus review: Fell asleep.
Chapter Three – Part Two: The American Revolution
Thomas Kail, 2020, available for free on Disney Plus
Hamilton is less a musical than a cultural phenomenon, and a tremendously valuable and healthy one at that. This isn't simply because of its racially-blind casting, but also artistically, for the melding of hip hop and musicals – a mix that proves so potent you presume it'll become its own genre. This film of the New York show avoids the usual stale and distant effect of theatrical performances on screen, due to a dynamic camera and elegant, effective editing. It provides a useful overview of the American war of Independence and the struggles which came afterwards to assert the character and structure of the new nation. But more than that, it carries within it a liberal argument about the figure of the immigrant, encapsulated in the moment in which Hamilton and Lafayette stand together and exclaim: "Immigrants. We get the job done." Beautiful, evocative and vigorously alive: there's no better film on this period of history.
Missus review: Good songs, naff lazy sexism for a musical made in this century. We can believe in a black Washington but women are either saints or slags.
Chapter Three – Part Three: The French Revolution
Andrzej Wajda, 1983, available for free on YouTube
One of the finest films on this list. Wajda's portrayal of the last days of Danton, played here intelligently by Gérard Depardieu, is a piece of properly mature film-making. He assumes his audience are highly intelligent – there's no attempt to fill you in on the events leading up the period in film. In a way, it doesn't matter. You have what you need in the story. One of its most extraordinary accomplishments is to assume the political realities of the period instead of criticising them. This makes the Terror feel like a working political reality, like an event you are really living through rather than one seen through a window from the future. What appears insane from the outside actually becomes perfectly comprehensible inside the film, as all the main characters operate according to its logic. It's gripping, knuckle-whitening stuff, and through it all you have this terrible sense of a crunching inevitable sense of doom. Wojciech Pszoniak's performance as Robespierre is genuinely terrifying: his cold, dead eyes staring pointedly around him, softening only for those rare cases in which he can still feel empathy. Note the way that the Polish director had all of Danton's allies played by French actors and all the allies of Robespierre played by Poles. He was making a comment on the Solidarity movement's struggles in Poland as much as he was the French Revolution, and in doing so showing the persistent danger of ideas around the 'general will' through the ages.
Part Two of the great big How To Be A Liberal film marathon will be published soon.
Posted in Uncategorized on September 21, 2020 by iandunt.
← Brexit: What the hell happens now – Errors and clarifications part three


text:
Theses and Dissertations from UMD
UMD Theses and Dissertations
Measurement of radiation pressure and tailored momentum transfer through switchable photonic devices
Ma_umd_0117E_17785.pdf (11.83Mb)
Ma, Dakang
Munday, Jeremy N
DRUM DOI
https://doi.org/10.13016/M2Z57Q
Light carries momentum, which can be transferred to an object upon reflection or absorption. The resulting force per unit area from light, so called radiation pressure, is rather weak but can have macroscopic consequences. For example, sunlight imparts momentum on dust particles causing a comet's tail to be directed away from the sun. In a microscopic world, micro/nano-mechanical transducers have become sensitive enough that radiation pressure can influence them greatly. However, photothermal effects often accompany and overwhelm the radiation pressure, complicating its measurement. In this thesis, we first show a quantitative measurement of the radiation force on an uncoated silicon nitride microcantilever in an ambient condition. We identify and separate the radiation pressure and photothermal effects through an analysis of the cantilever's frequency response. Further, we demonstrate the first measurement of a wavelength-dependent radiation pressure due to optical interference in a silicon microcantilever. We utilize an in-situ optical transmission measurement at the excitation position to determine the local optical properties. Another interesting application of radiation pressure is a solar sail. Solar sails use solar radiation pressure for propulsion and offer an opportunity for propellant-free space travel, enabling long-term and long-distance missions that are impossible with traditional methods. Although solar sail propulsion alleviates the need to carry chemical fuel, attitude control and steering are still performed using traditional methods involving reaction wheels and propellant ejection. In the second part of the thesis, we present a steerable solar sail concept based on a polymer dispersed liquid crystal (PDLC) device that switches between transparent and scattering states, enabling attitude control without mechanically moving parts or chemical propellant. Devices are fabricated and characterized (transmission, reflection, absorption and scattering) over the visible and near infrared range of the solar spectrum (400 nm - 1100 nm) and are found to outperform previous designs by more than a factor of four in terms of over-all weighted momentum switchablility between on and off states. Devices require no power in the diffusely reflective state and dissipate less than 0.5 mW/cm^2 while in the on state, showing great potential as a low-power switching mechanism for solar sail attitude control.
Electrical & Computer Engineering Theses and Dissertations


As with many popular items, there have been a wonderful quantity of inexpensive Chinese imitations flooding the market place. They are usually 50 % the price tag of a branded electronic cigarette and seem like the real factor as effectively. It is inadvisable to use these since they have not been subject matter to the identical demanding screening the formal digital cigarettes have and can possibly be very harming to the user's overall health.


How to clean and prepare fresh snails for cooking the. From french escargot recipes to greek favorites like bourbouristi popping fried snails , all recipes involving fresh snails require the primary ingredient to be cleaned and prepared for cooking.... Snails are healthy, nutritious and delicious, but they must be properly prepared and cleaned before you cook them, and it's relatively easy to do it.
I am lucky enough to say that my boys love to eat kale. There was actually a kale incident the other night whereby I only made one bunch and some grabbing occurred at the table as the boys �fought� over it. how to add credit card to playstation store ps4 All advised pretty much the same technique for cooking snails, with slight variations: Purge the snails (put them on a cornmeal diet in a closed dish for several days to clear their innards of any noxious stuff they may have been nibbling), boil them, extract them from their shells, and then use them in whatever recipe you have in mind.
Clean the snails thoroughly. See how here. Prepare a big casserole, pour enough olive oil to cover the surface and when hot add the bacon cut in stripes. When it goldens up, reserve the bacon in a plate and let the casserole and the oil cool down. When it's completely cold place the snails inside and cover with a lid. Turn heat on. Keep it to minimum until all snails � how to clear cookies on my acer tablet Lime takes some time to clean off the slime completely but firms the snails up thereby giving it a crunchy feel after cooking which is usually the best part. Directions::: Step 1: Break the snails or remove from the shells with the rod.
Snails are healthy, nutritious and delicious, but they must be properly prepared and cleaned before you cook them, and it's relatively easy to do it.
So cooling them right down in the freezer to slow their nervous processes, and making sure that the water you drop them into is already boiling, is the best way to ensure they are killed quickly.
add washed snails to boiling salted water and cook for 30 minutes for very large snails boiled snails removed from the stock Blend or pound pepper, chopped onion and seasoning.
8/09/2011�� Some basic tips to prepare the snails: 1. Put the snails in a tank without food for 2 days to make sure that the intestines are emptied (optional). Put the snails in a tank without food for 2 days to make sure that the intestines are emptied (optional).