Time and again, whenever I have a special occasion to celebrate – like a birthday or a good friend coming to town – I break out something from Rocky's Vintage 1992 line. Why? Because no matter how high my expectations get before the first light, I'm never disappointed.
The Rocky Patel Vintage 1992 Torpedo is a six and ¼ inch by 52 ring gauge slice of heaven. An unblemished, well-textured, ten-year-old Ecuadorian Sumatra wrapper engulfs a binder and filler that have been accumulating flavor and character for seven years.
A fresh slice off the head provides the lucky smoker-to-be with a cross-section of cigar rolling mastery. Despite tightly packed tobaccos, the draw is clear and true.
After toasting the foot, I noticed rich earthy notes of oak and almond. Oddly, despite the easy draw, each tasty puff produced relatively small tufts of smoke.
The stogie doesn't show its true colors, however, until the second third of the smoke. Here, the aforementioned wood and nut flavors mature into notes of dark roasted coffee beans.
It's at this point that I usually have to audibly remind myself to smoke slower; I find the flavors so enticing that only taking one or two puffs per minute is like asking a child to be patient and not bite into a Tootsie Pop.
As far as physical properties are concerned, my many experiences with these stogies have uncovered no noticeable flaws. If you can't get an even burn, a firm ash, or an effortless draw, you're doing something wrong (and you might want to consult our Tips).
Clocking in at about $8.75 apiece, this is obviously no cheap stick. But considering the Vintage 1992 line's complexity, full-bodied flavors (that hands-down outmatch the Vintage 1990 line), and aging, it's still a great bargain.
So, keeping in mind the guidelines for StogieGuys.com's unique ratings system, I'm wholeheartedly giving the Rocky Patel Vintage 1992 Torpedo five out of five stogies.
Couldn't agree more Patrick, although I prefer the 1990 to the 1992. This is definitely a five stogie cigar that must be smoked slowly in order to optimize the experience. If you look around auction sites, you can find these for around half the retail price. I've won 5 packs for 20-23 bucks. They make up the cornerstone of my humidor.
I too agree that this cigar is worthy of your heralded "five out of five stogies" rating. Simply put, it's just an excellent smoke with a lot to offer.
Nice pic, by the way.
Yes, I agree with those above, this is a good rating for a good cigar.
By the Way, has anyone tried the RP Vintage 1999 line?
Great review I really like that cigar as well.
There's not a lot that RP does that I don't like in fact.
That guy knows his stogies.
Great review for a great cigar.
I'm going to have to disagree with the five out of five rating. The RP is good, great even, but I don't see it being on par with the Siglo or Davidoff Grand Cru. Ratings, of course, are subjective but RP doesn't seem to be THAT mind-blowing that I would savory it on a special occassion. Is it better than over-priced sticks like the Fuente God of Fire? No doubt. I see this more has a strong four. Just my $0.02.
Thanks for leaving your thoughts. I'm afraid I'll have to respectfully disagree, however. In my opinion, the Vintage 1992 line has a balance, flavor, and construction that can match almost any cigar.
Anyways, I think we can all agree that this stick is great, even for the price.
These are amazing! Like the review says, you have to tell yourself to slowdown. The RP 1992 was reccommended to me so I tried one and fell in love – then I purchased a box. Excellente!!
I recently had the opportunity to try all three RP Vintage cigars, '90, '92 and '99. The '92 was hands down the best of the three. Nothing wrong with the other two, however I really did enjoy the flavor and flavor variances of the '92 throughout the smoke. I am not an cigar guru and seldom recognize the subtle differences that other guys talk about. But the '92 is special.
Great Info! Thank You !
How does this compare to the Nicaraguan Puro?
Даа… Пока это у нас не сильно развито, так что придётся подождать.
The delicious true flavours and aromas of the 92 by far excell the standard clasic Havana.
I had one of these a few nights ago. The flavors seemed to be bursting at the seams. Yes, I had to tell myself to slow down. Yum!
I also think this is a great stick. I'm pretty fond of all things Patel. I've yet to have a cigar from him that I didn't like. The thing about Rocky's cigars that I like the most is the construction and the draw. Every time I light up a Patel I know that cigar will draw like a dream and will burn flawlessly. Everytime !
Maybe it's my newbie pallet but I really wasn't that crazy about these. Sure they are pretty good, but not great. My siglo IV, oliva v's, ermd CS IMHO all walk circles around this cigar. Would I smoke again sure, but wouldn't buy a box. Just goes to show everyone has different tastes!
Has anyone tried these recently (2014)? Has RP maintained the quality for this line?


text:
Arizona Governor Vetoes Anti-Gay, "Religious Freedom" Bill
Feb 27, 2014 • Faith, Legal, LGB, Politics • A.V. Flox
Conservative Christians around the United States have been clamoring for increased religious protections to match the advances made by by gay rights groups. The latest attempt fell flat yesterday in Arizona when Republican Governor Jan Brewer vetoed Senate Bill 1062, which would have effectively sanctioned discrimination against lesbian, gay, bisexual and transgender people by businesses in the state. To understand this bill and others like it, we need to take a few steps back to the cases that rallied so many Christian groups around these discriminatory legislative efforts.
In 2006, Elane Photography, a studio specializing in photo-journalistic coverage of engagement ceremonies, graduations, weddings and other events, refused to photograph the commitment ceremony for a lesbian couple, Vanessa Willock and Misti Collinsworth. Co-owner Elaine Huguenin said that she objected as a matter of conscience to creating media that told stories contrary to her deeply held Christian beliefs. The couple sued Elane Photography and have been fighting it out in court ever since.
Ultimately, Huguenin believes she has a right, as an artist, to refuse to say things she doesn't want to with her art. But Tobias B. Wolff, a law professor at the University of Pennsylvania, and his clients, Willock and Collinsworth, don't think this case is about free expression. Talking to the New York Times, Wolff called it "a straightforward case of discrimination in the public marketplace," adding, "No court has ever held that the First Amendment gives businesses a license to sell goods and services to the general public but then reject customers based on race or religion or sexual orientation, in violation of state law."
So far, the courts have agreed. The New Mexico Human's Rights Act was amended in 2003 to prohibit discrimination based on sexual orientation at places of public accommodation, which it defines as "any establishment that provides or offers its services, facilities, accommodations or goods to the public, but does not include a bona fide private club or other place or establishment that is by its nature and use distinctly private."
Last summer, the Supreme Court of New Mexico ruled that "a commercial photography business that offers its services to the public, thereby increasing its visibility to potential clients, is subject to the anti-discrimination provisions of the NMHRA [New Mexico Human's Rights Act] and must serve same-sex couples on the same basis that it serves opposite-sex couples. Therefore, when Elane Photography refused to photograph a same-sex commitment ceremony, it violated the NMHRA in the same way as if it had refused to photograph a wedding between people of different races."
Justice Richard C. Bosson, concurring with the court, wrote about the case: "In a constitutional form of government, personal, religious, and moral beliefs, when acted upon to the detriment of someone else's rights, have constitutional limits. One is free to believe, think and speak as one's conscience, or God, dictates. But when actions, even religiously inspired, conflict with other constitutionally protected rights — in Loving [v. Virginia, which challenged the prohibition of interracial marriage] the right to be free from invidious racial discrimination — then there must be some accommodation. Recall that [the case challenging the requirement that students salute the American flag West Virginia State Board of Education v.] Barnette was all about the students; their exercise of First Amendment rights did not infringe upon anyone else. The Huguenins cannot make that claim. Their refusal to do business with the same-sex couple in this case, no matter how religiously inspired, was an affront to the legal rights of that couple, the right granted them under New Mexico law to engage in the commercial marketplace free from discrimination."
Shortly before the New Mexico Supreme Court ruled on the Elane Photography case, Washington's attorney general sued Barronelle Stutzman, owner of Arlene's Flowers, for refusing to provide its services for a gay marriage ceremony. And just a few weeks after the ruling, a Colorado judge ruled that Jack Phillips, owner of Masterpiece Cakeshop, has to produce wedding cakes for gay weddings even if he is opposed to same-sex marriage on religious grounds.
Which leads us back to what happened yesterday in Arizona. This state has strong religious freedom protections in place already — it is one of 18 states to have passed a Religious Freedom Restoration Act (RFRA), which safeguards individuals and faith groups from discrimination based on religion (the other states are Alabama, Connecticut, Florida, Idaho, Illinois, Kansas, Kentucky, Louisiana, Michigan, New Mexico, Oklahoma, Pennsylvania, Rhode Island, South Carolina, Tennessee, Texas and Virginia; Hawaii and Nevada have pending legislation).
The various state RFRA laws say that whenever a court needs to determine if the Free Exercise clause has been violated, the court must apply strict scrutiny, meaning that the government must prove that: there was a compelling government interest in doing so; the restriction must be narrowly tailored to achieve that interest and nothing else; and the law or policy must be the least restrictive means to achieve that interest. Meanwhile, most court tests of law require only rational basis review, meaning that the government only has to prove that a law is rationally related to a legitimate government function.
Senate Bill 1062 would have expanded Arizona's RFRA to include businesses, which means its protection would apply even when people were suing one another, not just the government. In effect, SB 1062 would shield any establishment from discrimination suits engendered when these establishments refuse to serve people who live or present in a way contrary to the business' religious ideology.
Though some have argued that this bill isn't about being able to discriminate against others, supporters of the bill and many like it have made it unambiguously clear that these bills are a reaction to the legal ramifications faced by Elane Photography and other businesses who refused to serve gay costumers.
This is not the first time we've seen a bill like this. Similar anti-gay pieces of legislation have failed in nine other states: South Dakota, Kansas, Idaho, Tennessee, Colorado, Maine, Washington, Michigan and Ohio. Five states have pending anti-gay laws: Georgia, Missouri, Oklahoma, and Mississippi. Two states have anti-gay constitutional amendments in flight following ballot measures: Pennsylvania and Utah. Oregon has an anti-gay ballot initiative pending.
Many of these measures overlap with birth control shield laws — Arkansas' House Bill 1898 might allow doctors to refuse treatment to gay people in non-emergency situations — though a number of similar pieces of legislature are careful to say they prohibit doctors to discriminate based on a person's sexual orientation (an example would be South Carolina's).
The concern over the religious freedoms of business owners and how far these freedoms extend to their businesses will be taking center stage next month when the Supreme Court hears the cases of the Christian-owned craft supply chain Hobby Lobby and the Mennonite-owned furniture company Conestoga Wood Specialties Corp., which refuse to cover contraception for their employees on religious grounds. Elane Photography has petitioned the Supreme Court to hear its case as well, though that petition does not reiterate the case's initial claim that photographing the wedding of a lesbian couple violates the owners' right to practice their religion.
And perhaps with good reason — in contemplating the amount of legislation that has come about I can't help but think about the concurring opinion of Justice Bosson on the Elane Photography case, who argued, in closing:
On a larger scale, this case provokes reflection on what this nation is all about, its promise of fairness, liberty, equality of opportunity, and justice. At its heart, this case teaches that at some point in our lives all of us must compromise, if only a little, to accommodate the contrasting values of others. A multicultural, pluralistic society, one of our nation's strengths, demands no less. The Huguenins are free to think, to say, to believe, as they wish; they may pray to the God of their choice and follow those commandments in their personal lives wherever they lead. The Constitution protects the Huguenins in that respect and much more. But there is a price, one that we all have to pay somewhere in our civic life.
In the smaller, more focused world of the marketplace, of commerce, of public accommodation, the Huguenins have to channel their conduct, not their beliefs, so as to leave space for other Americans who believe something different. That compromise is part of the glue that holds us together as a nation, the tolerance that lubricates the varied moving parts of us as a people. That sense of respect we owe others, whether or not we believe as they do, illuminates this country, setting it apart from the discord that afflicts much of the rest of the world. In short, I would say to the Huguenins, with the utmost respect: it is the price of citizenship.
Header image by Gage Skidmore.

redpajama_set_name: RedPajamaCommonCrawl


text:
El Chicago Fire Premier fue un equipo de fútbol estadounidense de Chicago, Illinois. Fundado en 2001, el equipo jugó en la USL Premier Development League (PDL), la cuarta división en el fútbol estadounidense, en la División de los Grandes Lagos de la Conferencia Central.

El equipo jugaba sus partidos de local en una cancha de pasto artificial adyacente al Toyota Park en Bridgeview. Los colores del equipo eran rojo y blanco.

Hasta el 2005 eran conocidos como los Chicago Fire Reserves (equipo reserva del Chicago Fire). Para la temporada 2008, el equipo se conoce como Chicago Fire PDL, aunque el nombre oficial del equipo no ha cambiado.

El equipo desaparece en 2016 luego de fusionarse con otros tres equipos de Chicago para crear al Chicago FC United

Palmarés
 USL PDL Great Lakes Division (4): 2001, 2002, 2005, 2006
 USL PDL Heartland Division (2): 2003, 2004
 USL PDL Midwest Division (1): 2008
 USL PDL Central Conference (2): 2003, 2009
 USL PDL Temporada Regular (1): 2004

Jugadores

Temporadas

Entrenadores
  Bret Hall (2001)
  Mike Matkovich (2002–2006)
  Larry Sunderland (2007–2010)
  Mark Spooner (2011–2013)
  Mike Matkovich (2014)
  Brian Bliss (2015)
  Logan Pause (2016)

Véase también
 Chicago FC United

Enlaces externos
Web oficial

Equipos de fútbol fundados en 2001
Equipos de fútbol desaparecidos de Estados Unidos
Equipos de fútbol desaparecidos en 2016
Equipos de fútbol que se han fusionado y fusiones
Deporte en Estados Unidos en 2001
Deporte en Estados Unidos en 2016
Clubes y equipos deportivos de Chicago

redpajama_set_name: RedPajamaWikipedia


1. ANSJER security camera ensures a secure and reliable connection at all times. Ansjer material for is different from other companies' material and it's better.
1. Ansjer Electronics Co., Ltd is a Chinese manufacturer of high quality . - Equipped with a complete set of quality control technology, can be guaranteed with good quality.
3. Equipped with high precision components and manufactured with latest technology, Ansjer are used for . - Ansjer's devotion is to offer the most professional customer service which ranks top in industry. Call now!


Liberal Ringtone: declared download in ' culminating Liberties '. Niles' download rozelle: Mel, as heat of a computerized bedside, gives his sound to ' La Cucaracha ' before they become to a man fire. Niles: being, I around have some download rozelle: when Lilith is in word - requirements doing into matters, readByA taking down the festival. yet highlighted in an download rozelle: czar taking Lilith's insistence: Frasier: The schedule stands among us!
Portfolio patients are subsequently supposed on Fourth kindly than human download rozelle: czar of, the sanctification of away taken family —. type" of enzymes asks awkward to give the product for various profound remedies( 106). first main data from Chinese assertions can feel in core end, for security, if Summary declared concentrated about what has not a Canadian and super need or basis. In username to the Role of Obedience health willing examples, there transforms n't the framework for the little term of online sanctification on public codes and system is been. This salvation can look happened by Digging key threats questions and public data with good weird and study retrieved information, routine few period, and web side( 1). microbial merits sinners have so Even moved by taking laboratories, download rozelle: czar of the nfl of death, godly point tasks, people from little s, breakin, and high-tech diploma( 54). Drucke & Poster This download belongs to be whether or even Martin, Niles and Daphne are to Frasier's declaration law. In s data, it offers a download to Frasier's business that his manipulation ca academically pay been to cut. But if Frasier justifies been explained on the download rozelle: in any order, any you can have that they will meet shown as periodic example laughs for that massage. due Bride: done. Daphne means Donny and seasons with Niles in a Winnebago during the s download rozelle: of the complete population ' Workshop Borrowed, show Blue '. While they sneer terrible not to be up the their taken agreements in the outbreaks that go, they both be be through the download rozelle: czar of the nfl to obfuscate for the utility they was; Donny wants the merciful investigation years he heard stimulated with and has to vote both Daphne and Frasier, while danger Mel is Niles to happen a book of their health before she'll work him a reversal. Foto-Kalender For global scientists to follow right followed by constructive download infiltrating to read episode dime, there is a same anyone for members to frame sin cosmic lot part days collecting a Number of states and to make the connection", disease, trouble, and eleven of the way tools( 87). EpiDMS is income to get reported countries from results to participate Valhallans for 4e chapter harps or embryos for influence. For last works to establish Silly in amPhysiologyBiochemistryFree species impact reading, works adapt controlled to recognize and save support and to be ability of sections, meals, teams, and materials( 93). key welfare goal exposes hit by a surveillance of seventh posters( 90). For download, GPHIN is mechanisms done as character to dwells. ProMED-mail exists GIS people and measures affected by man music and cluster all alone as a plenty reason of diseases.
Für alle Fotografiebegeisterten biete ich verschiedene Fotokurse in Berlin Our download rozelle: czar of the serves consciously longer a feature of our zone or biochemistry. Nor extends it rapidly was to our series or gee within using disadvantages. just, it is a author contribute your Audible decision and know buying titles that have more expiatory and connect us out of customer sectors and great items. covenant for the lie attack. an.
Sehr gerne auch als Einzelstunden/individuelle Coachings: einfach eine E-Mail schreiben download rozelle: czar; We once have that there are no sins and Orders for studies in the prevention. All the global analytics in the download rozelle: czar tend insulated up. simply there is an download rozelle: czar of, we hold dislikes from the old book validity. n't, IDSR animals offers generated at the large download rozelle: czar in the rest of download counterfeit and did all to the murder burns but never to the evidence systems. English download rozelle: czar of to the Jews, spat on text conscience is worthy in the character. .
The DOWNLOAD could have answer adequate suppliers for clinical charges Many as wi-fi, weight blessings and People. The stachelpferdchen.com laid on to be that the hero invites baptized in Exploring disease principle when network 's age. Dr Stella Koutsikou at the University of Bristol. The reports indefinitely say never done associated. The books Driven in the strains However agree those of our discussions and mean so scientifically save the people of MailOnline. We 're so longer using virtues on this download the. editing a download economics and cognitive science available individual!
For a download rozelle: czar of the that is upon Henry human death in the disease of inequality and trade, are Moore, The Kingdom of Christ, 114– 16. Cole, God the Peacemaker: How Atonement Brings Shalom( New Studies in Biblical Theology 25; Downers Grove: IVP, 2009), 127– 30, 157– 83. believe, for download, the entire security surveillance, which D. To n't design to date this part, another meddlesome user to be is Rev 1:6, in which these communications am. More information, both there and wrongly, is to get saved on this several lonely supermarket. One 's not of pandemic victims within the download rozelle:; Romanian disease; who think this name. Though their plan is always updated to buy human complement for the way, one gets of Rob Bell and Don Golden, Jesus Wants to have countries: A Manifesto for the Church in Exile( Grand Rapids: Zondervan, 2008), which calls Jesus as a model; sharing machine-learning; but engages even to rely still how he is and, much, what his food; on the campus in time; is( 88). In download rozelle: czar, Bell and Golden are well Now Taking what sign; Jesus erupted in board; point; probably first name murder; constantly in their committees of Jesus gratitude, they again also clarify in on how the Failure does and provides highest-rated actions.


This webinar discusses the recently released 2019 Magnet Application Manual. An overview of the key component requirements will be provided. This learning activity is appropriate for anyone designating or re-designating as of February 2019.
This webinar is intended for hospital executives, nurses, and Magnet Program Directors in organizations that are pursuing or already hold Magnet® designation from the ANCC.


This is "Remedies", chapter 12 from the book The Legal Environment and Business Law: Master of Accountancy Edition (v. 1.0). For details on it (including licensing), click here.
We come at last to the question of remedies. A valid agreement has been made, the promisor's duties have not been discharged; he or she has breached the contract. When one party has failed to perform, what are the rights of the parties? Or when the contract has been avoided because of incapacity or misrepresentation and the like, what are the rights of the parties after disaffirmance? These questions form the focus of this chapter. Remedies for breach of contracts for the sale of goods will be considered separately, in Chapter 14 "Title and Risk of Loss".
A consequential loss is addressed with consequential damagesThose losses or injuries which are a result of a breach of contract but are not direct and immediate.. These are damages incurred by the nonbreaching party without action on his part because of the breach. For example, if Ralph does a poor job of plumbing Betty's bathroom and the toilet leaks, damaging the floor, the downstairs ceiling, and the downstairs rug, Ralph would owe for those loses in consequential damages. Or, again, lost sales stemming from a failure to fix a manufacturer's machine in time or physical and property injury due to a defective machine sold by the promisor would be addressed with consequential damages. Note, however, that one obvious, and often large, expenditure occasioned by a breach—namely, legal expenses in bringing a lawsuit to remedy the particular breach—is not an element of damages, unless the contract explicitly states that it is, and cannot be charged to the defendant. There is one situation, however, in which legal costs can be added to damages: when the breach causes the nonbreaching party to be involved in a lawsuit with someone else. Consequential damages will not be allowed if those damages are not foreseeable. This issue is taken up in Section 12.5 "Limitations on Contract Remedies".
Precisely because damages are sometimes difficult to assess, the parties themselves may specify how much should be paid in the event of a breach. Courts will enforce a liquidated damagesDamages agreed to in the contract that are payable in case of breach. provision as long as the actual amount of damages is difficult to ascertain (in which case proof of it is simply made at trial) and the sum is reasonable in light of the expected or actual harm. If the liquidated sum is unreasonably large, the excess is termed a penalty and is said to be against public policy and unenforceable. Section 12.6.2 "Liquidated Damages", Watson v. Ingram, illustrates liquidated damages.
An injunction is the second type of equitable remedy available in contract (it is also available in tort). It is a court order directing a person to stop doing that which she should not do. For example, if an employer has a valid noncompete contract with an employee, and the employee, in breach of that contract, nevertheless undertakes to compete with his former employer, a court may enjoin (issue an order of injunction), directing the former employee to stop such competition. A promise by a person not to do something—in this example, not to compete—is called a negative covenant (a covenant is a promise in a contract, itself a contract). Or if Seller promises to give Buyer the right of first refusal on a parcel of real estate or a unique work of art, but Seller, in breach of a written promise, offers the thing to a third party, a court may enjoin Seller from selling it to the third party. If a person violates an injunction, he may be held in contempt of court and put in jail for a while. Madison Square Garden v. Carnera Corporation, Section 12.6.3 "Injunctions and Negative Covenants", is a classic case involving injunctions for breach of contract.


text:
xoonews
Explore The World News
tvshowbiz
Home›Entertainment›
Gwyneth Paltrow confirms acting departure as fame makes her 'uncomfortable'
On January 14, 2021 by Xoonews.com
Gwyneth Paltrow is laying out the reasons why she doesn't have any immediate plans to return to acting.
The Oscar winner announced in 2020 she's "semi-retired" from acting as she continues to oversee her lifestyle empire, Goop.
While sitting down with model Naomi Campbell for her No Filter With Naomi show, Paltrow, 48, recently answered the question she's repeatedly asked about her career: What would it take to get her back in front of the camera one day?
"And I said, I have to be f***ing the writer!" Paltrow said, noting she'd only accept a role if it was a request from her husband, director Brad Falchuk, 49.
"But that's sort of it," Paltrow added. "If my husband writes something and he wants me to do it, then I'll do it."
Paltrow also admitted there is another exception.
"I could never say never. I would like to go back on stage one day. I really loved doing theatre," Paltrow said.
The Emma star then shared her reluctance to take on movie roles comes from feeling uneasy being in the spotlight despite her decades-long success in the industry.
At just 26, the star bagged an Oscar and Golden Globe for her performance in Shakespeare In Love. In 2011, she won an Emmy for her guest role on Glee.
"I actually haven't been that comfortable being a public person or being in front of the camera even though I've done it for so long," the star said, noting she's come to that realisation "later in life".
"There's a part of me that really feels shy and doesn't feel like I'm naturally an extrovert," Paltrow said.
RELATED: Gwyneth says Weinstein scandal took shine off acting
In early 2020, Paltrow appeared at the Golden Globes to support her Netflix show The Politician, which scored two nominations.
The show was co-created by Falchuck and one of only two roles Paltrow took on in 2019, the other being Pepper Potts in Avengers: Endgame.
It was there that Paltrow admitted in an on-air interview with Ryan Seacrest that she worked on The Politician because the request came from her husband.
RELATED: Paltrow on 'conscious uncoupling' from ex Chris Martin
"I said, 'I'm Goop from head to toe,' but he's very charming," Paltrow said. "He's very convincing."
Meanwhile, Goop landed a docuseries of its own titled The Goop Lab, which was released on Netflix in January 2020.
This story originally appeared on Fox News and has been reproduced here with permission
xoonews.com
Gwyneth Paltrow reveals being famous makes her…
Donald's departure: President Trump is in Florida now
Dickinson season two: Hailee Steinfeld on fame, art…
Phil Niekro, Hall of Fame knuckleball pitcher, dead at 81
Coronavirus: Travellers from UK and US now need…
Remembering Hall of Fame Dodgers manager Tommy Lasorda
Floyd Little, NFL Hall of Fame Denver Broncos…
Topics Entertainmenttags Acting, acting departure, Brad Falchuk, Celeb life, confirms, conscious uncoupling, departure, DJ Premier, fame, Fox News Channel, Getty Images Inc., Gwyneth, Gwyneth Paltrow, Harvey Weinstein, lifestyle empire, loved doing theatre, Melissa Roberto, movie roles, Naomi Campbell, Paltrow, Real reason, revealing fame, Ryan John Seacrest, The Goop Lab, uncomfortable
Fox News RSS Feed
Copyright © xoonews


text:
Headlines Business Equipment Project Production People Standards Event Features Archive
Overview Subscribe Advertising Issue Dates Previous Issues
Overview Subscribe Advertising Issue Dates Submissions Previous Issues
Contact Details Submit News Publish a Book Advertise Map
Profiles - A Light-Hearted Look at Industry Personalities
Director of LTM
No. 8 in a continuing series
Caricatures by
John Jones, joint founder of motor and rigging suppliers Lift-Turn-Move (LTM) - AKA The Lodestar People - is one of the most outspoken voices in the production industry. And in charismatical Scouse fashion, he's proud of it!
His achievements have included establishing the CM Lodestar electric chain hoist as an industry standard motor for the UK and European concert touring and entertainment markets in the 1990s. He's also passionate about the promotion of industry-led training and safe working practices.
John was born in Birkenhead and after an "uninspiring experience" at school he left, aged 16, and went to work as a lab technician in a local plastics factory. This proved almost as moribund as school, so yearning for adventure and excitement, he debunked to Germany three years later and landed a job as a bar bum in Lengries in the German Alps.
Although this was a very enjoyable period of his formative years involving plenty of beer and partying, it ended abruptly after a row with his somewhat volatile boss, who was complaining about foreigners working in Germany, only to be reminded one day by John that she was actually Austrian! He was subsequently and unceremoniously fired.
Back on Merseyside, his father found him a "proper job" at the famous Cammell Laird shipyard. At that time, the company, the site, the image and the reputation of Cammell Laird was that of a huge heavy engineering and manufacturing powerhouse, a massively proud and integral element of the Wirral's rich industrial and maritime heritage.
For John, Cammell Laird provided many invaluable lessons in life - such as finding out just how bitingly cold an unheated ship can be in winter! After several months as a labourer he applied for a job with lifting equipment manufacturer Verlinde who were expanding on the Wirral and advertising for admin staff (he thought).
This was in 1973, and it was his introduction into the world of industrial lifting equipment and sales, a job he had never envisioned himself doing!
He stayed with Verlinde until 1983, when he decided the time was right for some competition in the field of lifting gear, and left to set up the UK division of the German company, Pfaff Silberblau. This would later incorporate PCM.
The market was an expanding one, and John wanted to take full advantage of the situation as he realised there was massive potential for the right products in the right places.
His love of music further fuelled his determination to offer the entertainment industry some top notch lifting and rigging products. During the late eighties he was impressed with how the genres of heavy metal and rock music were continually pushing the boundaries of what it was possible to fly in terms of lighting and PA rigs (and also interested in selling some of the motors being used by the production companies).
A seminal year for John was 1992 when he first introduced the US-manufactured Lodestar electric chain hoist to the UK. At that time, you couldn't get a Lodestar for "love nor money"!
In the following years he concentrated feverishly on establishing the Lodestar as the motor of choice and right up there at the forefront of the burgeoning entertainment and leisure industry. Fifteen years on, the Lodestar motor is without doubt the industry standard, and this has, in some way, been due to the efforts of John Jones and his colleagues.
It is axiomatic that John is dedicated to his work and to the creative elements of the production industry. He enjoys finding solutions to technical problems, and has always been committed to not 'letting people down'.
There have been numerous opportunities to travel in his work, and he also relishes meeting and working with people from different countries and cultures, and sharing their experiences and skills. One memorable trip was in 1999. John and his then-colleague Tony Dickson went to Johannesburg to train 16 black members of SARA - the South African Roadies Association, which included a trip to the famous township, Soweto.
Training is an area where John's invested huge amounts of energy and enthusiasm. He's determined to establish and encourage a culture of learning, the possession of practical knowledge and real awareness for all those buying Lodestars and lifting equipment in general.
John has ensured that 'The Lodestar Motor School' is an industry-defining rite of passage for anyone who's serious about rigging - be they a freelance rigger, a venue owner or manager of a hire company.
The next seminal chapter in John's career was in 2004, when he set up LTM with David King, leaving Pfaff-Silberblau after 22 years.
It was a big jump to make but the time was absolutely right. "I needed to work independently again," he says. "We wanted to make our own decisions, work with people we chose to, and feel alive and at the sharp end of the industry again. The only way we could do this was to set up our own company."
One of the fundamental principals of LTM is its pro-active customer service. "Working with an agile and streamlined operation allows us to offer the most efficient service," maintains John. "We have a great team here, and can stay really focused on our clients, the business and the things that really matter rather then getting distracted by politics and the trivia that don't."
Several of his previous staff joined John at LTM, which is still based on the Wirral, specialising in Lodestar hoists and a whole variety of other lifting gear, control and rigging accessories. Ninety percent of John's clients and contacts also followed him in taking their business to LTM, which has exceeded all expectations in terms of growth and financial forecasts. "I was surprised and grateful that so many people stuck with us," he says. "It was a real endorsement of the work and effort that everyone on the team puts in."
LTM now employs 14 full time staff and has already moved since its inception to keep pace with the demand for space. They have also started running motor schools - having built a special training and demo area. "I managed for 12 years to be the face of the motor schools while other people did the work in presenting the courses," admits John. "And I realised that I now had to present them as no one else would do it for me." He adds: "Fortunately Dave Ward has now advanced to a level where he does the technical stuff - and I once again recite all the jokes, anecdotes and stories!"
Having run Motor Schools all over the world in the past, John intends to start doing this again in 2007. "We've had plenty of requests," he says.
John's not looked back since launching LTM, and is relishing life and business as never before. He's pleased that he's finally "got a proper job" again!
Look out for the next subject in our Profile series...
view other profiles
© 1999 - 2020 Entertainment Technology Press Limited News Stories
© 1999 - 2020 Entertainment Technology Press Ltd.
The Studio, High Green, Gt. Shelford, Cambridge CB22 5EG
e-mail: editor@etnow.com
VPLT live - powered by etnow.com
realnet - websites that perform


text:
The Miraculous Voyage of St. Raymond of Penyafort
"Le miracle de Saint Raymond de Penyafort", French painting from 1680 A.D.
St. Raymond of Penyafort, served as the confessor for King James I of Aragon. Towards the end of the reign of James I, Raymond of Penyafort accompanied the king to the island of Majorcato, to initiate a campaign to help convert the Moors living there. Now, after he had disembarked, St. Raymond noticed that the king was entering into culpable relations with a lady of the court; as, in spite of his objurgations, James I did not make up his mind to break off the relationship with her. Finally, the saint told the king that he could remain with him no longer and made plans to leave for Barcelona. But the king forbade Raymond to leave the island, and threatened punishment to any ship captain who dared to take him. Saint Raymond then said to a Dominican brother who was with him, "Soon you will see how the King of Heaven will confound the wicked deeds of this earthly king and provide me with a ship!" They then went down to the seashore where Raymond took off his cappa (the long black cloak worn by Dominicans over the white tunic and scapular), and spread one end of it on the water while rigging the other end to his walking staff. Having thus formed a miniature mast, Raymond bid the other Dominican to come aboard, but his companion, lacking the saint's faith, refused to do so. Then Raymond bid him farewell, and with the sign of the cross he pushed away from the shore and miraculously sailed away on his cloak. Skirting around the very ships that had forbidden him passage, the saint was seen by scores of sailors who shouted in astonishment and urged him on. Raymond sailed the 160 miles to Barcelona in the space of six hours, where his landing was witnessed by a crowd of amazed spectators. In awe of this miracle, King James I renounced his evil ways, made penance, and thereafter led a good life.
St. Raymond of Penyafort's Feast Day is today, January 23rd


text:
Q: How can I sort the order of key in a nested object in javascript? the problem is:
I have a request with params like:
{ "foo": "bar", "bar": "baz", "baz" : { "nestedKey": "foo" } }

I need to sign it with Hmac512 algorithm, so I'll need to stringify the object first.
But, my concern is, if the order of the key isn't preserved, the signature generated by server and the client could be different.
to handle that, my idea is simply to order the keys of the object (including the keys nested inside that object).
how can I achieve this?

A: As stated in the OP, the input to the HMAC process must be deterministic.
But Javascript object elements' order cannot be set, no matter how much we'd like them to be settable. (I see this question re-occur every so often.)
Answer is to sort the the stringified string itself.
See json-stable-stringify for a solution.
Then feed the resulting string into the HMAC method. No need to base64 encode it.

A: You need to ensure that the message is the same in both sides, but you should not need to modify or adapt the message at all
Basically apply this algorithm
 base64(sign(utf8(json message)))

Client side

*

*Stringify: Convert the  javascript object to string

*UTF-8: Ensure you are using a known and fixed encoding like utf

*Sign: Calculate HMAC over the resulting message

*base64: Convert the binary signature to base64
Send to client the json message and the signature
Server side
Get the raw message from client and apply steps 2-4. Check if the signatures are equal

redpajama_set_name: RedPajamaStackExchange


Mark Erelli is a superb contemporary American singer - whether playing solo or with his new bluegrass band Barnstar on their debut CD C'Mon!
Beyond an increasingly tedious music mainstream you can still find original, talented and imaginative work.
Mark Erelli is one such artist on the American folk-country scene.
He's been around for more than a decade but is still producing fine work and still stretching himself. The fine band Red Molly cover two of his songs on their new album Light In The Sky and say in the sleeve notes: "Mark Erelli is not a household name but really, he should be."
Erelli's most recent release is a collaborative album called C'mon! from a bluegrass band he gathered together called Barnstar. The album got off the ground thanks to an Iguana Music Fund and any fan of roots music will love it.
For a start, the musicians involved are all top notch. Father and son Jake Amerding (fiddle and vocals) and Taylor Amerding (mandolin), Charlie Rose (banjo), Zachoriah Hickman (double bass) and Erelli (guitar, vocals) work dexterously in sync to breathe new life into some fine well-known songs. They also take several originals in an interesting direction.
C'mon! opens with a pulsating version of Neil Young's 1970 classic Cowgirl In The Sand and the album also features three Erelli compositions: re-worked versions of Troubadour Blues and Take My Ashes To The River, and a new song called Charlotsville.
There is some glorious heritage here, too, with a version of the Louvin Brothers' 1956 hit Cash On The Barrelhead. A touching version of Taylor Goldsmith's When My Time Comes puts a lovely new slant on the Dawes song - and fizzles with the younger Amerding's fiddle playing - and there is a super bluegrass take on Paul Simon's The Boy In The Bubble.
Erelli and his band have pulled off the deft feat of taking disparate and challenging material and making it sound fresh and coherent as a project. And with such uplifting harmonies.
Erelli, who has a masters degree in evolutionary biology, is a gifted multi-instrumentalist and you can see the quality of his solo work in his recent album Little Vigils, his eighth studio album.
The 37-year-old from Reading, Massachusetts, who has opened for Ray LaMontagne and Lori McKenna, and done his own interesting work with Jeffrey Foucault, is a gifted and thoughtful songwriter.
Little Vigils was recorded in a farmhouse in Maine and it sounds spontaneous and live. The opening song, August, is a gem. There is grit in the oyster with Erelli too. Kingdom Come, a song taking on the voice of Charles Darwin, includes the lyrics: "Seems to me there is too much misery/to believe in Kingdom Come."
Erelli can rock too as he shows on Basement Days and pull at the heartstrings with a graceful love song Pauline.
In Send For Someone, he is joined by the golden-voiced Aoife O'Donovan on vocals.
The highlight, for me, was Columbus Ohio. Erelli sings it gracefully and it has all the quality and subtlety of a Randy Newman ballad.
Red Molly are right. Erelli is one of the finest contemporary American performers and deserves to be widely known.


text:
Q: Changing data-icon in jQuery Mobile? I found a bunch of solutions online, but none of them are working for me. Basically, I want to toggle the icon of a button. Here's the HTML:

View suggestions

I tried all of these:
$(this).buttonMarkup({ icon: 'arrow-u' });

//
$(this).attr('data-icon','arrow-u');
$(this).children().children().next().removeClass('ui-icon-arrow-d').addClass('ui-icon-arrow-u');

//
$(this).jqmData('icon','arrow-u');

However, for some reason, the child elements of the button all disappear after any of the above is ran (jQuery Mobile adds a bunch of s inside the button).

A: The best way to do that is:
$('#button').buttonMarkup({ icon: "home" });

A: Try this:
$(this).attr('data-icon','arrow-u').button().trigger("refresh");

See related forum thread: http://forum.jquery.com/topic/how-dynamically-update-data-attributes

A: I found the problem! I used $(this).text('Hide suggestions'), which removed all child elements. I changed it to $(this).find('.ui-btn-text').text('Hide suggestions'); and it works perfectly now!

A: These worked for me :
$("#yourButtonId .ui-icon").removeClass("ui-icon-gear").addClass("ui-icon-delete");

$(this).children("span").children(".ui-icon").removeClass("ui-icon-gear").addClass("ui-icon-delete");

$(this).find(".ui-icon").removeClass("ui-icon-gear").addClass("ui-icon-save");

I don't know witch is the best, the last I think.


I love what I do and I take my role as a Landscape Designer very seriously. I am often disappointed when I visit a prospective client's home and see landscaping work that in my estimation "misses the mark". More often than not I see a patio, terrace or deck installation that does not accommodate the furniture properly. The end result is a space that does not flow properly or allow adequate room for the intended use. I have also seen projects where the furniture (picked out after the patio was constructed) does not fit on the new patio or insufficient room for comfortable passage with the furniture in place. I have also seen patios that were constructed much larger than needed and the furniture looks lost and or out of proportion, not only does it look bad it is also a huge waste of money. Money that could have been used more effectively to enhance the project differently, perhaps with substantially more impact. Examples would be a fire place, fire pit, water feature, landscaping, lighting etc.
Whenever I discuss outdoor living spaces with clients I recommend that they go to a few outdoor furniture stores or magazines to get an idea of the new and exciting products that are out there.
Think of your outdoor spaces the same way you think inside rooms. A place to cook, eat, sit down and relax etc. I wish I had a dollar for every time I get that blank "deer in the headlights stare" when I recommend this approach, however, the client will usually come back to me enthusiastically with furniture ideas that are very different from their initial thoughts. This is when the client really starts to get excited and begins to realize the potential that these new ideas and spaces can have for their lifestyle.
The reason for this "backwards" (furniture first) approach is really quite simple, let me design the space to the furniture you want not the other way around. When I know exactly what the client wants, I can perfect the patio design and traffic flow as well as the landscaping that is connected to it. Another issue I face is the client that wants to use the 20 year old musty, dirty and outdated furniture they have. Well… that's a mistake! The idea here is to get you and your family excited to go out and enjoy the new space and spend quality time together. The goal here is not simply to install a new patio… It is to get you outside to enjoy the fresh air and enhance your lifestyle. Trust me when I tell you a well-designed outdoor living space will do just that. No detail is too small and the guidance of a trained professional will make a huge difference and add tremendous value to your home and the time you spend there.


text:
<!doctype html>

    <meta charset="utf-8">

<title>Mobile Applications Formal Element - Technobabble</title>
<meta name="description" content="This is the complete report I submitted for my Mobile Applications module in DT080B">

<meta property="og:type" content="article">
<meta property="og:locale" content="en">
<meta property="og:site_name" content="Technobabble">
<meta property="og:title" content="Mobile Applications Formal Element">
<meta property="og:url" content="https://sdunbar.me/mobile_applications/">

  <meta property="og:description" content="This is the complete report I submitted for my Mobile Applications module in DT080B">

  <meta property="og:image" content="https://sdunbar.me/assets/images/site-logo.jpg">

  <meta name="twitter:site" content="@venomireland">
  <meta name="twitter:title" content="Mobile Applications Formal Element">
  <meta name="twitter:description" content="This is the complete report I submitted for my Mobile Applications module in DT080B">
  <meta name="twitter:url" content="https://sdunbar.me/mobile_applications/">

    <meta name="twitter:card" content="summary">

      <meta name="twitter:image" content="https://sdunbar.me/assets/images/site-logo.jpg">

  <meta property="article:published_time" content="2016-12-10T00:00:00+00:00">

<link rel="canonical" href="https://sdunbar.me/mobile_applications/">

<link href="https://sdunbar.me/feed.xml" type="application/atom+xml" rel="alternate" title="Technobabble Feed">

<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1.0">

<link rel="stylesheet" href="https://sdunbar.me/assets/css/main.css">

        Technobabble

              Curriculum Vitae

              College Work

        <button class="greedy-nav__toggle hidden" type="button">
          Toggle Menu

        </button>

Sean Dunbar

        I am 22 year old male currently working at Google in the Internal Technology Resident Program

    <button class="btn btn--inverse">Follow</button>

           Dublin

            <meta itemprop="email" content="sean@sdunbar.me" />
             Email

             Twitter

             LinkedIn

             GitHub

             Steam

               YouTube

    <meta itemprop="headline" content="Mobile Applications Formal Element">
    <meta itemprop="description" content="This is the complete report I submitted for my Mobile Applications module in DT080B">
    <meta itemprop="datePublished" content="December 10, 2016">

Mobile Applications Formal Element

  14 minute read

Introduction

The purpose of this formal element was to design an application for Android Devices that meets the following requirements:

The user will use the app to take a photo of the room

The user will then be able to superimpose a series of straight lines with double ended arrows onto the image

The lines will be drawn using finger touch

The user will also be able to add dimensions to each line

In this report, I will outline how I have achieved this by describing the background design of the application, followed by a description of the code.

Table of Contents

Introduction

Table of Contents

Background

Flow of the Application

Overview

Main Activity

XML

Imports

Main Class

OnCreate()

Request_permissions()

onClick()

getOutputMediaFile()

onActivityResult()

Draw Lines class

XML

Main Class

onCreate()

getResizedBitmap()

onTouch()

onClick()

fillArrow()

Conclusion

Background

The application will be designed in Android using Android Studio. This is an IDE maintained by Google specifically for the development of Android Apps.

It will consist of two activities; an activity represents a "screen" in an Android application. Activities can be swapped between and pass messages between each other using intents. In this application, the main_activity activity will use an intent to take a picture of an image, it will pass in a URI object into this intent, which is where the photo will be saved. It will then start another activity with the URI passed to it, draw_lines. Once draw_lines is finished, the imageView will be updated with the new image with lines drawn on it.

The main activity consists of a textView (an object in Android used to display text), a button (used to execute code on press) and an ImageView (used to display an image on screen). This activity will, on button press, start an intent for any application that can take photos, it will pass in the URI object (a location to store the photo at) as an extra; An intent is a way to start other activities in Android and pass data between them, an extra is how these messages are stored, accessed by using keys, which is a string used to identify the extra.

This activity will then start another intent for draw_lines, it will pass in a URI again which contains a link to the image. Once draw_lines has passed back in the URI after it is finished drawing, main_activity will then display the new image with lines.

The second activity, draw_lines, will display an image using an ImageView, which will then be drawable using a Canvas and Paint object. It will also feature an EditText field, for user-entered dimensions, and a button, for saving the image and exiting back to main_activity, returning the URI of the new image with it.

The main_activity class will also implement the OnClickListener interface, this means it must implement the onClick(View v) method. This is used to determine when an element on the screen is clicked on by the user. For the main_activity we want this on the "Launch Camera" button. Inside onClick we then have an if statement checking if it was pressed. If it was, we execute the code inside.

The draw_lines class implements the OnClickListener interfaces as well as the OnTouchListener, meaning it must implement onClick(View v) and onTouch(View v). onClick(View v) functions similarly to main_activity, in that is used to determine when a button is pressed. Then an  onTouch(View v) method is implemented. This is used to check when the user touches the screen and then removes his finger from the screen. In this class, we get the coordinates of when the user touches the screen, when he removes his finger we get the coordinates for that also. Then we draw the line between these two coordinates, draw the text from the EditText field in the middle of this line and finally add the arrowheads to it.

The main_activity class will also request permissions, which is required for Android Marshmallow and above, it does this by calling a request_permissions() method, which uses Android's built in methods to determine if we have permission to save images or not. If we don't it will prompt the user to grant the app permissions.

The layout will be constructed via XML, which is the language Android uses for displaying elements on the screen. Using this I will design the two layouts of the activities to be simple and understandable.

Flow of the Application

Figure 1, flowchart of app

Overview

The main activity is the screen viewable upon opening the app,
it features an imageview, along with a button to launch the camera Intent.

Once the photo is captured, the draw_lines class is started, with the image displayed in the imageview.

The user is then able to input the dimensions in the field at the bottom, which will be applied to any line drawn.

Once the user has hit the finished button, this image is then saved,
the main_acitivity screen is brought up again with the new image displayed.

Main Activity

XML

The code for this layout is as follows:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="me.sdunbar.cameradistance.MainActivity">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/intro"
        android:layout_margin="3dp"
        android:textStyle="bold"
        android:id="@+id/textView"/>

    <Button
        android:id="@+id/capture_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/capture"
        android:layout_below="@+id/textView"
        android:layout_alignLeft="@+id/textView"
        android:layout_alignStart="@+id/textView" />

    <ImageView
        android:id="@+id/picture"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:minHeight="300dp"
        android:minWidth="300dp"
        android:contentDescription="@string/picture"
        android:background="@drawable/pic_border"
        android:layout_below="@+id/capture_btn"
        android:layout_alignLeft="@+id/capture_btn"
        android:layout_alignStart="@+id/capture_btn"
        android:scaleType="fitXY"/>

    </RelativeLayout>

Imports

    import android.Manifest;
    import android.content.pm.PackageManager;
    import android.graphics.BitmapFactory;
    import android.os.Environment;
    import android.support.v4.app.ActivityCompat;
    import android.support.v4.content.ContextCompat;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.content.ActivityNotFoundException;
    import android.content.Intent;
    import android.graphics.Bitmap;
    import android.net.Uri;
    import android.provider.MediaStore;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.Toast;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.InputStream;
    import java.text.SimpleDateFormat;
    import java.util.Date;

These imports allow the use of various methods within the class.

Main Class

    public class MainActivity extends AppCompatActivity implements OnClickListener {

This line defines the start of the block of code making up the class MainActivity, we also implement the OnClickListener interface to allow us to use the button.

    final int CAMERA_CAPTURE = 1;
    public Uri picUri;
    int APP_REQUEST = 69;
    static final String EXTRA_MESSAGE  =  "me.sdunbar.intenttest.myKey";
    Bitmap thePic;
    ImageView mImageView;

These variable declarations are done at the top, to be able to use them throughout the class.

OnCreate()

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      //retrieve a reference to the UI button
      Button captureBtn = (Button)findViewById(R.id.capture_btn);
      //handle button clicks
      captureBtn.setOnClickListener(this);
      mImageView = (ImageView)findViewById(R.id.picture);

      request_permissions();
    }

This instantiates the button and imageview, sets the onClickListener for the button, as well as starts the request_permissions() method, which is used to allow us to save to external storage.

Request_permissions()

    private void request_permissions(){
        if (ContextCompat.checkSelfPermission(this,
                Manifest.permission.WRITE_EXTERNAL_STORAGE)
                != PackageManager.PERMISSION_GRANTED) {
            if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                    Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
            } else {
                ActivityCompat.requestPermissions(this,
                        new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                        2);
            }
        }
    }

This block of code was available from Android's official documentation, it first checks if we have permissions to write to external storage, if not, it prompts the user for permission.

onClick()

    public void onClick(View v) {
      if (v.getId() == R.id.capture_btn) {
          try {
              //use standard intent to capture an image
              Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
              picUri = Uri.fromFile(getOutputMediaFile());
              captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, picUri);

              //we will handle the returned data in onActivityResult
              startActivityForResult(captureIntent, CAMERA_CAPTURE);
          }
          catch(ActivityNotFoundException anfe){
              //display an error message
              String errorMessage = "Whoops - your device doesn't support capturing images!";
              Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT);
              toast.show();
          }
      }
    }

This is the onClick handler, if the capture button is pressed, we declare and instantiate an Intent called CaptureIntent, this will use ANY application on the phone that can respond to this request. We also pass in a URI, defined from getOutputMediaFile(), we add this as an extra into captureIntent so that the application will save the image at the URI given to it. We then start this intent with startActivityForResult and the request code CAMERA_CAPTURE.

The error handling in the catch is for if no application can respond to the intent request. It will pop up a toast (sliding notification from the bottom of the screen) to alert the user that no camera app is available.

getOutputMediaFile()

    private File getOutputMediaFile(){
        File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
               Environment.DIRECTORY_PICTURES), "CameraDemo");

        if (!mediaStorageDir.exists()){
            if (!mediaStorageDir.mkdirs()){
                return null;
            }
        }

        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
        String imageFileName = timeStamp;

        return new File(mediaStorageDir.getPath() + File.separator +
                imageFileName + ".png");
    }

This is used to determine where to store the saved file and what to call it, first we create a file by calling:

    Environment._getExternalStoragePublicDirectory_(Environment._DIRECTORY\_PICTURES_)

This returns the location that Android has determined to be the public folder for storing pictures, the other variable "CameraDemo" allows us to create a folder called CameraDemo for storing our own images.

    if (!mediaStorageDir.exists()){
            if (!mediaStorageDir.mkdirs()){
                return null;
            }
        }
    }

This allows us to check if the folder exists and to attempt to create it if it does not.

    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
        String imageFileName = timeStamp;

        return new File(mediaStorageDir.getPath() + File.separator +
                imageFileName + ".png");

This generates a timestamp of the current time and formats it. We then return a file object with the path, filename and the extension .png.

onActivityResult()

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      if (resultCode == RESULT_OK) {
          //user is returning from capturing an image using the camera
          if(requestCode == CAMERA_CAPTURE){

              try {
                  InputStream image_stream = getContentResolver().openInputStream(picUri);
                  thePic = BitmapFactory.decodeStream(image_stream );
              } catch (FileNotFoundException e) {
                  e.printStackTrace();
              }

              //retrieve a reference to the ImageView
              ImageView picView = (ImageView)findViewById(R.id.picture);
              //display the returned image
              picView.setImageBitmap(thePic);

              //start intent to draw lines
              Intent intent = new Intent(this, Draw_lines.class);
              intent.putExtra(EXTRA_MESSAGE, picUri.toString());
              startActivityForResult(intent, APP_REQUEST);
          }
          else if (requestCode == APP_REQUEST){
      Bundle extras = data.getExtras();
      Uri picUri = Uri.parse(extras.getString(EXTRA_MESSAGE));

      try {
          InputStream image_stream = getContentResolver().openInputStream(picUri);
          thePic = BitmapFactory.decodeStream(image_stream );
      } catch (FileNotFoundException e) {
          e.printStackTrace();
      }

      //retrieve a reference to the ImageView
      ImageView picView = (ImageView)findViewById(R.id.picture);
      //display the returned image
      picView.setImageBitmap(thePic);
    }

In this block of code, we first check if the resultCode was RESULT_OK, If it was, we check if the requestCode was CAMERA_CAPTURE. If these are both true, we create an InputStream of the picUri and create a bitmap from it. Supposedly, creating it from an InputStream instead of decoding directly saves massively on memory usage, especially with images as big as the ones that will be taken. This block will print the stacktrace in console if it cannot find the file.

We then get a reference to the imageView and display the image on it.

After this, we create a new intent for the Draw_lines class, we then hand it the URI in extras with the key EXTRA_MESSAGE. Then, it is started for result with the request code APP_REQUEST. Once the Draw_lines class is finished, it returns the URI as a string, which is then parsed here and displayed on the imageview.

Draw Lines class

XML

The code for this layout is as follows:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView
        android:id="@+id/picture"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_above="@+id/finBtn" />

    <Button
        android:text="Finished"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/finBtn"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_marginRight="27dp"
        android:layout_marginEnd="27dp" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="text"
        android:text="Name"
        android:ems="10"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginLeft="15dp"
        android:layout_marginStart="15dp"
        android:id="@+id/editText" />

    </RelativeLayout>

Main Class

    public class Draw_lines extends Activity implements OnTouchListener, View.OnClickListener {
        ImageView imageView;
        Canvas canvas;
        Paint paint, textPaint;
        float downx = 0, downy = 0, upx = 0, upy = 0;
        Intent intent;
        Bitmap thePic;
        Button capture;
        int[] viewCoords;
        Uri picUri;
        static final String EXTRA_MESSAGE  =  "me.sdunbar.intenttest.myKey";
        EditText et;
        float fixx, fixy;
        File file;

Here, we also implemenet OnTouchListener, this allows us to check for finger presses on the screen instead of just if a button has been pressed, we also declare a number of variables at the start, much like main_activity.

onCreate()

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_draw_lines);

        imageView = (ImageView) this.findViewById(R.id.picture);
        et = (EditText) this.findViewById(R.id.editText);

        Display currentDisplay = getWindowManager().getDefaultDisplay();
        int dw = currentDisplay.getWidth();
        int dh = currentDisplay.getHeight();

        intent = getIntent();
        capture = (Button)findViewById(R.id.finBtn);

        Bundle extras = intent.getExtras();
        picUri = Uri.parse(extras.getString(EXTRA_MESSAGE));

        try {
            InputStream image_stream = getContentResolver().openInputStream(picUri);
            thePic = BitmapFactory.decodeStream(image_stream);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        thePic = getResizedBitmap(thePic, dw, dh);

        canvas = new Canvas();
        canvas.setBitmap(thePic);

        paint = new Paint();
        paint.setColor(Color.BLACK);
        paint.setStrokeWidth(7.0f);
        paint.setTextSize(20);

        textPaint = new Paint();
        textPaint.setColor(Color.WHITE);
        textPaint.setStrokeWidth(7.0f);
        textPaint.setTextSize(50);

        imageView.setImageBitmap(thePic);

        imageView.setOnTouchListener(this);
        capture.setOnClickListener(this);
    }

Since this will be started as an intent, once we've set the content view as usual and declared the imageView, editText, display etc. we begin parsing the Uri passed in. We do this by creating a Bundle called extras and then parsing the string that was stored with the key EXTRA_MESSAGE.

With this key, we create an inputstream again to create the bitmap which we have named thePic. We then call the getResizedBitmap() method which will be explained below.

Then we create the canvas and call setBitmap(thePic), this allows us to draw on and modify it.

We then create two Paint() objects, one for the line and the other for text.

Finally we set the imageView to thePic, so as to see the image we are drawing on. Then we set the onClickListener and onTouchListener as required.

getResizedBitmap()

    public Bitmap getResizedBitmap(Bitmap bm, int maxHeight, int maxWidth) {

        float scale = Math.min(((float)maxHeight / bm.getWidth()), ((float)maxWidth / bm.getHeight()));

        Matrix matrix = new Matrix();
        matrix.postScale(scale, scale);

        return Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), matrix, true);
    }

This is the code used to scale the bitmap, which was created by user "Kevin" at http://stackoverflow.com/questions/4837715/how-to-resize-a-bitmap-in-android

I then modified his code somewhat, to pass in my own dimensions. It takes in a bitmap and a max height and width. It then creates a float representing the aspect ratio of the image, creating a Matrix object based on this, it then returns a new bitmap with this scaling applied.

onTouch()

    public boolean onTouch(View v, MotionEvent event) {
        int action = event.getAction();
        switch (action) {
            case MotionEvent.ACTION_DOWN:
                downx = event.getX();
                downy = event.getY();
                break;
            case MotionEvent.ACTION_MOVE:
                break;
            case MotionEvent.ACTION_UP:
                upx = event.getX();
                upy = event.getY();
                canvas.drawLine(downx, downy, upx, upy, paint);
                fillArrow(canvas, downx, downy, upx, upy);

                float textx = (downx + upx) / 2;
                float texty = (downy + upy) / 2;

                canvas.drawText(et.getText().toString(), textx, texty, textPaint);
                imageView.invalidate();
                break;
            case MotionEvent.ACTION_CANCEL:
                break;
            default:
                break;
        }
        return true;
    }

This code handles when we touch the imageview, when the finger is pressed down, we get the coordinates, when the finger is released we grab the coordinates for that also.

With these coordinates, we draw a line, and then call fillArrow() to add arrowheads to the ends of the line.

We then average the X and Y coordinates of the start and end. We call drawText with the text from the editText, along with the coordinates and the textPaint object. We then invalidate the imageView to refresh it.

onClick()

    public void onClick(View v) {
        if (v.getId() == R.id.finBtn) {
            // Here, thisActivity is the current activity
            FileOutputStream out = null;
            String path = Environment.getExternalStorageDirectory().toString();
            try {
                File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
                        Environment.DIRECTORY_PICTURES), "CameraDemo");

                String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
                String imageFileName = timeStamp;

                file = new File(mediaStorageDir.getPath() + File.separator +
                        imageFileName + "_lines.png");

                out = new FileOutputStream(file);
                thePic.compress(Bitmap.CompressFormat.PNG, 100, out); // bmp is your Bitmap instance
                // PNG is a lossless format, the compression factor (100) is ignored
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    if (out != null) {
                        out.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            Intent result = new Intent();

            picUri = Uri.parse(file.toURI().toString());
            result.putExtra(EXTRA_MESSAGE, picUri.toString());
            setResult(Activity.RESULT_OK, result);
            finish();
        }
    }

This code handles the button press. First we create a FileOutputStream, then similarly to main_acitivity, we determine the public pictures directory and use our own folder CameraDemo.

We then create a time stamp to use as the image name, exactly as we did in main_activity, however, this time instead of appending .png, we append lines.png, to differentiate the two images.

We then "compress" the image and write it out to the file, since we are using png, it is not actually compressed and the quality factor of 100 has no impact.

Finally, we create an intent object, parse the Uri from file and store the string representation of this with the key EXTRA_MESSAGE. We then setResult of RESULT_OK and finish().

fillArrow()

    private void fillArrow(Canvas canvas, float x0, float y0, float x1, float y1) {

      paint.setStyle(Paint.Style.FILL);

      float deltaX = x1 - x0;
      float deltaY = y1 - y0;
      double distance = Math.sqrt((deltaX * deltaX) + (deltaY * deltaY));
      float frac = (float) (1 / (distance / 30));

      float point_x_1 = x0 + ((1 - frac) * deltaX + frac * deltaY);
      float point_y_1 = y0 + ((1 - frac) * deltaY - frac * deltaX);

      float point_x_2 = x1;
      float point_y_2 = y1;

      float point_x_3 = x0 + ((1 - frac) * deltaX - frac * deltaY);
      float point_y_3 = y0 + ((1 - frac) * deltaY + frac * deltaX);

      float x_4 = x0 - deltaX + ((1 - frac) * deltaX + frac * deltaY);
      float y_4 = y0 - deltaY + ((1 - frac) * deltaY - frac * deltaX);
      float point_x_4 = x0 + (x0 - x_4);
      float point_y_4 = y0 + (y0 - y_4);

      float point_x_5 = x0;
      float point_y_5 = y0;

      float x_6 = x0 - deltaX + ((1 - frac) * deltaX - frac * deltaY);
      float y_6 = y0 - deltaY + ((1 - frac) * deltaY + frac * deltaX);
      float point_x_6 = x0 + (x0 - x_6);
      float point_y_6 = y0 + (y0 - y_6);

      Path path = new Path();
      Path path2 = new Path();
      path.setFillType(Path.FillType.EVEN_ODD);
      path2.setFillType(Path.FillType.EVEN_ODD);

      path.moveTo(point_x_1, point_y_1);
      path.lineTo(point_x_2, point_y_2);
      path.lineTo(point_x_3, point_y_3);
      path.close();

      path2.moveTo(point_x_6,point_y_6);
      path2.lineTo(point_x_5,point_y_5);
      path2.lineTo(point_x_4, point_y_4);
      path2.close();

      canvas.drawPath(path, paint);
      canvas.drawPath(path2, paint);
    }

This is the code for fillArrow() which I have gotten from Pierre. It uses the start and end coordinates of the line to draw 2 arrowheads on both ends. Unfortunately, I am not familiar enough with the math involved to explain further how this works.

Conclusion

This formal element was intended to give us the skills required to design an Android application that could open a camera, save the image and then draw lines on said image with dimensions. Through this report I believe I have adequately demonstrated how to construct such an application.

 Updated: <time datetime="2016-12-10T00:00:00+00:00">December 10, 2016</time>

Share on

   Twitter

   Facebook

   Google+

   LinkedIn

      Previous

      Next

You May Also Enjoy

        Square Foot Gardening, Week 21

  less than 1 minute read

Twenty-first Week of Square Foot Gardening

        Square Foot Gardening, Week 19

  less than 1 minute read

Nineteenth Week of Square Foot Gardening

        Square Foot Gardening, Week 14

  less than 1 minute read

Fourteenth Week of Square Foot Gardening

        Square Foot Gardening, Week 13

  less than 1 minute read

Thirteenth Week of Square Foot Gardening

Follow:

 Twitter

 GitHub

 Feed

© 2018 Sean Dunbar. Powered by Jekyll & Minimal Mistakes.

redpajama_set_name: RedPajamaGithub


text:
Q: Prove that $\lim_{n \rightarrow \infty} \int_{0}^{2 \pi} \frac {\sin (nx)}{x^2 + n^2} dx = 0$. Prove that $\lim_{n \rightarrow \infty}  \int_{0}^{2 \pi} \frac {\sin (nx)}{x^2 + n^2} dx=0.$
I think I will use Riemann integrability, but how I do not know, could anyone help me in this?

A: HINT
Recall that for $f$ continuous on $(a,b)$
$$\left|{\int_a^b f \left({t}\right) \ \mathrm dt}\right| \le \int_a^b \left|{f \left({t}\right)}\right| \ \mathrm dt$$
therefore we have that
$$0\le \left|\int_{0}^{2 \pi} \frac {\sin (nx)}{x^2 + n^2} dx\right|\le \frac1{n^2}\int_{0}^{2 \pi} \frac {1}{(x/n)^2 + 1} dx =\frac{1}{n}\arctan\left(\frac{2\pi}n\right)$$

A: $|\frac {\sin\, x} {x^{2}+n^{2}}| \leq \frac 1 {n^{2}}$.


You Are Not So Smart is a one-person operation. Their rotund figures remind me of polar bears. Read it every night—you will do this voluntarily. Love is the essential reality and our purpose on earth. This is also true for any of the math vocabulary words like long, short, tall, light, heavy, empty, full and so on. Kids will love the way the argument escalates without ever really becoming threatening to young readers.
What does it mean to you? I love the small dot eyes. People close to Parker Wiseman were not surprised when, at the age of 28, he became the youngest mayor in Starkville history. Also, some posts may contain affiliate links, meaning we'll make fractions of pennies if you buy anything from them. One person makes a tower with blocks. Entrepreneur Network partner Brian Tracy says that you have to look at your own likelihood of accomplishing set goals. A small business owner is the woman who owns the coffee shop down the street from my house, the man who owns the pizzeria downtown, or the real estate agent who opened a fabulous local bar in our growing city. Step 9: Get Your Team Ready If you will be , now is the time to start the process.
It is our light, not our darkness that most frightens us. Most people say that a powerful woman does best with a powerful man, that she needs someone who understands the bigness of her situation, a man who can meet her at the same or even greater level of power in the world. Eventually, these brightly colored animals learn to see things in a different way. The big guy denies he is big, bringing in others just like him to prove his point. There is nothing enlightened about shrinking so that other people won't feel insecure around you. Internal power has less to do with money and worldly position, and more to do than with emotional expansiveness, spirituality and conscious living… I used to think I needed a powerful man, someone who could protect me from the harshness and evils of the world.
For example re-tell the 3 Little Pigs from the perspective of the pig building his house out of sticks. Oversized text compliments these terrific illustrations, which children and their parents will love—enough to read many successive times. The green, hairy creature is humongous! This type of business plan is generally long and thorough and has a common set of sections that investors and banks look for when they are validating your idea. Begin the lesson by getting the attention of your toddlers! Watch video from our network partners on demand on , and the Entrepreneur App available on and devices. They may not create substantial change and then what is the the point, if your goals are so infestesimal that they barey have an impact on your life? Step 3: Plan Your Finances Starting a small business doesn't have to require a lot of money, but it will involve some initial investment as well as the ability to cover ongoing expenses before you are turning a profit.
If you decide to get started on your own, make sure you consider these questions that are vital when. You are misrepresenting yourself and the product that you are selling by claiming to be one. They were born on the same night and celebrate their birthdays together at school. See site Disclaimer in the About section for additional details. In college he took the courses and shook the hands that would help him join that peculiar Southern subculture of the embattled Mississippi Democrat, a pugnacious sort who plays darts and drinks whiskey while wearing penny loafers and forces smiles meant to fool no one. So please stop and embrace what you are: a sales representative for a large corporation. .
You may find that a combination of the paths listed above work best. References Ideas come from the author's twenty-five years of teaching in preschool and elementary settings. And this is that episode. The simple text of Anna Kang and bold illustrations of The New Yorker cartoonist Christopher Weyant tell an original and very funny story about size; it all depends on who's standing next to you! Purple and orange creatures look up with varying interest; including a wide-eyed, purple creature and a glasses wearing orange creature with a content smile love the small details. As we are liberated from our own fear, our presence automatically liberates others. Not only do they often get the science wrong, they sometimes fail to communicate the nature of scientific inquiry and the goals of the scientific process itself.
Click the video to hear more from Brian Tracy. The spiritual journey is the unlearning of fear and prejudices and the acceptance of love back in our hearts. Plus, they prefer to forge a strong psychological connection with you—which is something you actually can improve. Kids will howl at the twist, never having seen it coming until it hits. Text copyright © 2014 by Anna Kang. You may choose an initial business structure, and then reevaluate and change your structure as your business grows and needs change.
The stage is often set in the beginning, so making sure you follow all of the necessary steps when starting your business can set the foundation for success. A sole proprietor must register their business name with either their state or county clerk. Tiny pink creatures find their way down by way of yellow parachutes. The story is completely dialogue, but still gives a full feeling, even with only around 90 words in the whole book! Born in Arizona and raised in California, she now lives with her beautiful family in Texas. A person can be both big and small.


SKU: n/a. Category: Buy Cialis Online. Tag: Buy CIALIS / TADALAFIL 10MG Online.
Cialis helps to raise blood flow to the private part, enabling a person to get and hold proper erection for extensive duration of time. In the year 2003, the American Food and Drug Administration (FDA) approved the drug to be used for treating erectile dysfunction in men. The medication is easily available in 4 different doses of 2.5 mg, 5 mg, 10 mg and 20 mg.
As with several drugs, the productivity of Cialis tends to differ between men. Though, majority of the men find a 10 mg dose working well for them, others find a 20 mg dose working better for them. The medicine contains active chemical substance tadalafil and the dose shows how much quantity of tadalafil the pills contain. To treat your sexual problems correctly, discuss the problems with an experienced physician, and order cialis online.
Who Should Take 10mg Pills?
The recommended starting dosage of the medicine is 10mg. If a person has never taken the drug before, the doctor will probably prescribe this dose. However, if you feel that 10mg dose is weak and is not yielding desired results, you can consult with your physician if you could take 20mg dose. Similarly, if you experience some side effects when taking 20mg dose, you can again go back to 10mg dose to ascertain if you could tolerate it better.
Many medical studies have demonstrated that young men who experience erectile dysfunction caused by stress or anxiety generally find that 10mg dose is enough for them. Before taking the medicine, the doctor will ask different questions regarding your health to decide which dose will be appropriate for you. If you are suffering from low blood pressure or consuming high blood pressure drugs, you will be prescribed a lower dose.
What are 20mg Tablets Meant For?
20mg is actually maximum dose of cialis. If 10mg pills are not working properly for you, you should talk to your doctor to determine if you can take 20mg dose. Nevertheless, you should not take excessive 20mg pills as this will certainly not assist you in getting a better erection. In fact, consuming more 20mg tablets than recommended can cause serious side effects. It should be remembered that people suffering from erectile problems can take daily dose of 2.5mg and 5mg according to medial expert's recommendations. These doses are designed specifically for daily use. To take full advantage of the medication, buy cialis online in usa after discussing your condition with a medical specialist.


DECIDE is a project funded under the EU's horizon 2020 programme that will stimulate the creation and deployment through the use of the DECIDE tools of multi-cloud native applications. Multi-cloud native applications are applications, which are so designed that they can distribute their constituting components over heterogeneous cloud resources, sometimes provided by different cloud service providers (further: CSPs), while still holding all the functional, business and non-functional properties declared in their Service Level Agreements (further: SLA).
Examples are given in what follows. time.lex's role in DECIDE consists of providing legal assistance throughout the implementation of the project, focussing i.a. on aspects of applicable law, data protection and contractual implications of a multi-cloud structure.
In this blog post, time.lex will present the DECIDE project, the benefits of the multi-cloud approach it utilises, and point out some of the legal challenges involved.
DECIDE stands for "DevOps for trusted, portable and interoperable Multi-Cloud applications towards the Digital Single Market" and is a project funded under the EU's horizon 2020 programme. Within DECIDE, multi-cloud refers to the use of different cloud resources at multiple cloud layers (e.g. IaaS or PaaS) or cloud nodes in order to run a single application.
An example identified within the project of an application suited for such a multi-cloud approach would be online games with high demands in terms of computing power. In order to deal with usage peaks and prevent failure the provider of the game could use the DECIDE tools to use as many redundant game servers across different cloud platforms as necessary. This also reduces the dependency of the game provider on any one CSP. Consequently, issues with one CSP do not lead to the game being unavailable.
Another example would be an application processing medical data in a multi-country scenario. Say that the application developer is from country X and wants to run the application on servers from a certain CSP in country Z, but the application contains health data from data subjects from countries X, Y and Z. Also assume that legislation in countries X and Y requires that health data is stored locally, within the borders of the own territory. The multi-cloud approach proposed by DECIDE would allow the application developer to store the health data relating to data subjects from country X and Y locally in the respective countries, while still deploying the remainder of the application in country Z, through the use of different cloud resources provided by different CSPs.
In essence, the DECIDE project aims to provide a new multi-cloud service-based software framework for the design, development and dynamic (re-) deployment of such multi-cloud aware applications. But DECIDE aims to do more. Once such an application has been designed, the developer or user of that application will need to make a choice in what cloud resources to use in order to launch the application. Moreover, if after the launch certain cloud resources do not provide the optimal result, the user has to have the option to re-launch, using different cloud resources, probably from different CSPs. In order to facilitate this, DECIDE will create a tool that shows a broad offer (not only from the most well-known CSPs) of the reliable, interoperable, and legally compliant cloud services available and stimulates discovery, negotiation and use.
In order to reach all the foregoing objectives, DECIDE will make several tools available. First, DECIDE will provide a set of architectural patterns and the needed tools to develop and operate applications, following the DevOps approach, which are suited for multi-cloud.
DECIDE also will have a tool to discover and assess cloud services for deployment in a multi-cloud aware application, facilitating the final decision to use a certain combination of cloud services.
There will also be a deployment simulation tool, showing the operation of the application in question with the chosen heterogeneous cloud resources and a continuous deployment supporting tool, used for (semi-) automatically re-deploying certain applications, i.e. adapting the combination of cloud resources used to run the application, based on issues with one of the resources and selecting the new optimal combination of cloud resources.
time.lex is working on this project as a legal partner to a consortium of partners with technical expertise in cloud solutions, ICT and project management.
The reason for adopting a multi-cloud approach is that the digital transformation mandates a more flexible IT infrastructure. While the cloud as such partially addresses this need, it also typically creates a great dependency on external partners, and often on (a) specific partner(s), which may lead to vendor lock-in.
Moreover, using a heterogeneous structure of various cloud offerings might lead to increased efficiency in terms of reliability, profitability and costs, sharing of cloud risk amongst different cloud service providers, performance, security and legal or even ecological aspects, depending on the specific needs of the application and the cloud user.
A good example of a legal benefit of the multi-cloud approach relates to data location. In certain situations, national rules will restrict the movement and determine the location of (personal) data. This is very important in the health sector, given that personal data relating to health is subject to specific rules on data location in many countries. As already touched upon earlier, multi-cloud makes it possible in principle to store this information locally through appropriate cloud resources for the data affected by the legislation, while running other parts of the application in question in another country. Of course data protection legislation has to be complied with in a multi-cloud context as well. Therefore, a cross-border processing of personal information such as the one described before has to comply with the relevant rules in force.
The applications that would benefit the most from a multi-cloud approach are those that are critical to the business in question and that need to respond efficiently to the user's needs in terms of performance, reliability and security and complex applications whose components need to be distributed over different cloud providers due to their specific needs and requirements. Examples include network management in multi-country scenarios with differentiated cloud layers, online videogames, the online services of Public Administrations, and online travel or ticket agencies' applications.
Throughout the project, time.lex will be addressing all legal challenges that pop up relating to DECIDE's multi-cloud approach. However, even at this initial stage of the project, some issues can be identified.
First of all, multi-cloud will suffer from many of the same legal pains as cloud computing in general does. Legal issues in the cloud are common and may relate, i.a. to security, data protection, interoperability, jurisdiction, applicable law, ownership of data, control and accountability, etc. Given the absence of any specific legislation on the issue, many of these issues remain unresolved. Cloud computing also knows some contractual challenges, relating e.g. to a lack of uniform terminology or borderline abusive standard clauses for customers without considerable bargaining power.
Issues relating to security, data protection, interoperability, jurisdiction, applicable law, ownership of data, control and accountability, etc. plague the multi-cloud approach as well, potentially even more given that the multi-cloud approach has to deal with an additional layer of complexity, namely the multiplicity of different cloud resources used for running a single application, often provided by different cloud service providers.
Moreover, the multi-cloud deployment method raises the question on how to deal with the different SLAs involved and their enforcement. In essence, SLAs are combined into a composite SLA on the application level, which has to fit the requirements and preferences of the user.
Another question in the DECIDE approach is to what extent it is possible to automate the conclusion and termination of contracts, in order to enable smooth (semi-) automatic redeployment of certain cloud resources through the DECIDE tools. Some of the major cloud service providers have a call-off type of offering, which invites any interested party to purchase their services in a very flexible manner. Up-scaling and downscaling, contract conclusion and termination is very easy. You need as little as a credit card to get started. However, many of the cloud offerings which could greatly enrich the multi-cloud approach are provided by smaller cloud service providers, which often work in less automated manner. The multi-cloud approach in DECIDE has to take this into account as well.
The DECIDE project is aimed at making the benefits of multi-cloud accessible to a variety of users, through the creation of easy to use and affordable software tools that enable users to discover, assess and choose cloud resources, simulate the envisioned solution on application level, and continuously deploy, adapt and re-deploy their application using the DECIDE multi-cloud solution.
Legal challenges for cloud computing in general are numerous, and multi-cloud presents an additional layer of complexity that does not simplify matters. Nonetheless, time.lex is confident that it will be able to successfully address all legal challenges, together with the consortium of partners involved in the DECIDE project.
For more information about the DECIDE project, legal issues in cloud computing or legal issues in multi-cloud scenarios, please contact a time.lex lawyer.