text:
2 Film Critics: Top 10 Films for 2020
In spite of being deprived of theaters, it was a good year for film. We saw only two of these in theaters (and now even they are available at home). In alphabetical order—so we didn't have any arguments over which should go first, and because they are all worthy—below are synopses of, and links to, the reviews (within each review is accessibility online).
"First Cow" "I'm Thinking of Ending Things"
"Martin Eden"
"The Painted Bird"
"The Painter and the Thief"
"Palm Springs"
"Portrait of a Lady on Fire"
Honorable mention: "The Assistant" ★★★; "Cuties (Mignonnes)" ★★★; "Never, Rarely, Sometimes, Always" ★★★1/2; The Traitor (Il Traditore)" ★★★1/2;
Bacurau ★★★1/2: A corrupt government, working with white supremacist mercenaries, withholds water and medicines from a small, idyllic, rural village, then attempts to wipe it off the map, figuratively and literally. The town musters a defense. Despite violence, the storytelling is remarkably subtle, and the themes—blatant racism and government disintegration—contemporary. https://www.2filmcritics.com/post/bacurau
Beanpole ★★★★: At the center of this compelling drama, set in Leningrad in 1945, are two women, each damaged and traumatized by the war and its aftermath. "Beanpole" is the nickname of the very blond, blue-eyed, rail-thin, 6-foot tall, cool and neurotic Iya, a veteran of the Soviet artillery. Masha, Iya's co-worker and friend from the front, is dark and short and round and vivacious, as well as pragmatic and clever. A survivor, she knows how to get herself a job, salt and fruit, and sex.
First Cow ★★★1/2: A charming caper, taking place in the rough-hewn wilderness of Oregon Country in the 1820s. The title is both literal and a metaphor of transition and change, representing that liminal moment between a hard, masculine, beaver-trapping ("soft gold"), frontier culture that's on the cusp of decline, and something gentler—still masculine and distinctly entrepreneurial, but with a feminine side—that's making its first appearance. In the form of a biscuit.
I'm Thinking of Ending Things ★★★1/2: A couple drives out of a city towards his rural boyhood home so she can meet his parents. He's funny, not particularly good-looking, maybe not funny, apparently knowledgeable about musicals, maybe a poetry expert, maybe a physicist. She's melancholy, thinking of ending the weeks'-old relationship ("things"), or she's perky; she's maybe a student, maybe a literary critic, maybe a gerontologist, maybe a poet, maybe a waitress. As in all things Charlie Kaufman, there's no stable ground. In this faux horror film there's no real horror, except that of realizing the limits of one's ability to shape one's existence.
Mank ★★★1/2: "Mank" is ostensibly about writing the script for "Citizen Kane," the 1941 film some consider to be the best ever made and historically understood as the product of one auteur—namely, Orson Welles. Welles is here a minor character. Although one can appreciate "Mank" as an historical treatment of the origins of the famous script and of the era, the film is in essence the story of one man's struggle to preserve his identity—as a person and as a writer—in a world that seems committed to stripping him of it. Mank (a superb performance by Gary Oldman) is an unlikely hero. He's unattractive, alcoholic, arrogant, pushy and acerbic. Yet he represents the last and best attempt to both be part of Hollywood and not succumb to it. https://www.2filmcritics.com/post/_mank
Martin Eden ★★★1/2: Based on Jack London's semi-autobiographical 1909 novel of a sailor turned writer, "Martin Eden" is set in Italy in the Mussolini era. Its focus is on the charismatic Eden's struggle to rise about his station, and then to deal with the loss of self caused by sudden fame. "There is no Martin Eden," he tells an audience gathered to hear him speak and read, "you've invented me." London's character has been memorialized in Tom Waits's 1974 musical ode to sailors, "Shiver Me Timbers." A traditional story in some respects, unusual in others. https://www.2filmcritics.com/post/martin-eden
The Painted Bird ★★★1/2: A boy of about 9 is separated from his family, moving from one adult to another, from one isolated dwelling or village to another, in a desperate two-year effort to survive in the culture of racism, ignorance, superstition and intolerance that characterized Eastern Europe in 1944 and 1945. Stripped of name and family, the child experiences life as a series of horrors that include animal torture, sexual abuse, assaults and attempted assaults, murder and attempted murder—of him and others. His nemeses are all blue-eyed; he is the other. Three hours of hard-to-watch but gripping cinema.
The Painter and the Thief ★★★1/2: A drug-dazed thief steals the paintings of Barbora, a talented Czech realist. Then they have a relationship. He becomes her model. "I can sit," he says. The two are complex characters, whose dark, self-destructive, parallel pasts may never be fully revealed.
Palm Springs ★★★: The R-rated Romcom is alive and well in "Palm Springs," a creative look at the 40-something slacker male and the woman destined to drag him into adulthood. Andy Samberg ("Saturday Night Live") fully inhabits the role of Nyles, with exceptional physical as well as verbal humor. Cristin Milioti (the mother in "How I Met Your Mother"), is Sarah, the more thoughtful and somewhat less comedic side of the couple and a formidable match for Nyles. For those who demand more than laughs, there's an existential subtext!
Portrait of a Lady on Fire ★★★1/2: Very French: slow-paced, quiet, subtle, restrained, thoughtful (even intellectual), this compelling love story between two women is impeccably crafted and narrated and exquisitely acted. https://www.2filmcritics.com/post/portrait-of-a-lady-on-fire


text:
Monday, November 21, 2016
Holiday Gift Guide: Collage.com
22 comments:
Looks like a great gift.ReplyDelete
That is so cool! That is a really neat photo quilt. Definite Christmas gift idea for my mom and grandma.ReplyDelete
(Holiday Gift Guide: Collage.com) Would make the perfect holiday gift this year for my son and new daughter-in-law.ReplyDelete
I wish I had enough money to get a collage blanket :) I love their site!ReplyDelete
That would make an awesome gift for the grands.ReplyDelete
A great collageReplyDelete
Wow looks fun. I'm not sure what picture I would chooseReplyDelete
This looks like a really fun gift!ReplyDelete
Awesome collage.ReplyDelete
That is so cool. My mom would love one of these.ReplyDelete
Great collage, I love it.ReplyDelete
Excellent ideaReplyDelete
What a cool collage!ReplyDelete
I love collagesReplyDelete
I love this collageReplyDelete
awesome collageReplyDelete
I love this collageReplyDelete
Such a perfect gift for grandparents!ReplyDelete
awesome collageReplyDelete
I would love to have one with all my grandkids. That would be neat to have.ReplyDelete
I love this collageReplyDelete
It seems so cool! A way to keep a precious picture closeReplyDelete

subset: commoncrawl


text:
A developer on my team once asked an excellent question: "Are you always looking for better ways to do things?" Absolutely. That's what I hope this blog is all about.
I used to know everything but that was a long time ago. I've seen a lot of changes in the industry over the years in terms of tools and methodologies.
I care a lot about writing high quality software, on time, with the right feature set, and I hope be able to use this blog as a forum to capture things that went right, things that went wrong, and exchange ideas with other developers.


text:
Free Access
Europhysics News
Volume 35, Number 4, July-August 2004
|129 - 130
|Published online
|01 October 2008
Europhysics News Vol. 35, No. 4, 2004, pp. 129-130
Institut für Photonik, Technische Universität Wien, Austria
Photoelectrons measuring the phase of light
Institut für Photonik, Technische Universität Wien, Austria
2 Max-Planck-Institut für Quantenoptik, Garching, Germany
This article has no abstract.
© European Physical Society, EDP Sciences, 2004
Current usage metrics show cumulative count of Article Views (full-text article views including HTML views, PDF and ePub downloads, according to the available data) and Abstracts Views on Vision4Press platform.
Data correspond to usage on the plateform after 2015. The current usage metrics is available 48-96 hours after online publication and is updated daily on week days.
Initial download of the metrics may take a while.
First page of the article


text:
HIV Testing
All HIV testing will be done confidentially unless the client requests to take the test anonymously. Syphilis and Latent TB testing may not be done anonymously. Under the laws of the State of Texas, testing for HIV is strictly confidential and disclosure may be made to physicians, nurse, or other healthcare personnel who have legitimate need to know the test result. Records will be handled in a confidential fashion and all personnel handing records have been advised of the law addressing confidentiality in Texas.


text:
Original image by @ThkBleu, expert Photoshop by me.
Mike Bolsinger (1-3, 5.75) vs. Zack Greinke (8-3, 3.84)
After a disastrous trip to SF (which I blissfully mostly missed, thanks to being on my own trip to Vegas), the Dodgers run up against their old friend and resident odd duck, Zack Greinke.
Hopefully they didn't wash their hands after pooping. I hear that drives him crazy.


text:
The Machinery Maintenance Program is a schedule of planned maintenance services aimed at the prevention of breakdowns and failures to reduce loss of work due to down time. The goal of preventive maintenance is to prevent the failure of equipment before it actually occurs.
Each service is designed to enhance the reliability of your equipment by replacing worn components before they actually fail. Anton's only uses Factory Trained Technicians and factory supplied parts in our Machinery Maintenance Program.
Ensure the ongoing reliability of all your machines
Machinery services are pre-scheduled for your convenience
Members receive priority scheduling for all Call-Outs
For more information, please contact us on 1300 268 667 or contact your account manager.
It's easy to book a service call with our qualified technicians. Simply choose the service package you require, your location and desired date/time, and we will contact you shortly to discuss your requirements. (Note: this service requires a separate log in using Facebook, Google or Appointy account. Please contact us on 1300 268 667 if you require any assistance)
Box quantities are approximate only. All prices are quoted in AUD and exclude GST. Prices are subject to change without notice. Colours depicted may vary from actual product. Where colour and finish is critical please request a sample. All Copyrights Reserved © Anton's Mouldings Pty Ltd ACN 005 649 838
Moulding | Matboard | Foamboard | Glass and Acrylic | Accessories | About Us | Contact Us | Security and Personal Information
Picture Framing Supplies | Picture Frame Moulding | Picture Framing Equipment


text:
Disability Access: Flexibility with attendance policy
Flexibility with attendance policy
The Disability Access office recommends an increase in the attendance policy by 50%. (e.g. If your policy is 4 absences then this accommodation would allow for 6). The implementation of this accommodation is also contingent on whether or not the accommodation will "fundamentally alter" the course. Please discuss this accommodation with the student and write on the accommodation form what the "new/adapted" attendance policy is.


text:
About Kevin
Kevin Waugh is the Member of Parliament for Saskatoon-Grasswood. Born and raised in Saskatoon, Kevin has proudly called the city home for most of his life.
Kevin has been an active community member for four decades, supporting many organizations and sitting on the boards of several non-profits. His involvement includes fundraising for a variety of children's initiatives such as the YMCA Strong Kids program, which allows children to get involved in summer camps when they might otherwise not be able to. For his efforts in the community, Kevin received the Saskatchewan Centennial Medal for "long standing community involvement".
Prior to running for Federal Office in 2015, Kevin served as a trustee with the Saskatoon Board of Education from 2006 to 2015, including terms on the Saskatchewan School Boards Association Executive.
After a long career in sports broadcasting, Kevin was elected Member of Parliament for Saskatoon-Grasswood in October 2015. He is currently the Deputy Shadow Minister for Canadian Heritage and has previously served as Deputy Shadow Minister for Indigenous Affairs. After being re-elected in 2019, Kevin was elected by his colleagues to serve as the Chair of the Conservative Party of Canada's Saskatchewan Caucus.
Kevin and his wife Ann have two children, Geoff and Courtney, and two grandchildren.


text:
|# Copyright 2017 Google Inc. All Rights Reserved.
|# Licensed under the Apache License, Version 2.0 (the "License");
|# you may not use this file except in compliance with the License.
|# You may obtain a copy of the License at
|# http://www.apache.org/licenses/LICENSE-2.0
|# Unless required by applicable law or agreed to in writing, software
|# distributed under the License is distributed on an "AS IS" BASIS,
|# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|# See the License for the specific language governing permissions and
|# limitations under the License.
|"""Compile an .idl file to Cobalt v8c bindings (.h and .cpp files).
|Calls into idl_compiler_cobalt.shared_main specifying the V8
|CodeGenerator class.
|import sys
|import _env # pylint: disable=unused-import
|from cobalt.bindings.idl_compiler_cobalt import generate_bindings
|from cobalt.bindings.v8c.code_generator_v8c import CodeGeneratorV8c
|if __name__ == '__main__':


text:
Project Leader: Alan Plummer
John Tebbutt observed the luminous blue variable Eta Carinae (then Eta Argus) and the long period variable R Carinae through the late 19th century. These observations, with their comparison stars, were published in a series of MNRAS papers and they have not yet been entered into the AAVSO international database. Entering this data into the database will make it widely available for study.
Today, R Car is a suggested star for visual variable star beginners, and Eta Car is good too. These will be observed by any interested observers with the goal of using the best techniques possible in observing, time recording, accuracy, etc. (This of course doesn't mean that observers will get the same estimates. Each observer wants their own measures!)
Observations from both the late 19th century and today will be entered into the AAVSO data base. Light curves can then be generated, examined, and discussed. Depending on results, this will be publishable in the JAAVSO, the VSS Newsletter, or in some popular magazine. New observers can learn many things from this project: Techniques, history, the two classes of variables, etc.
Because any light curve analysis here is to be historical in nature, it isn't necessary for the new observations to extend for more than a year (more or less). No more time is needed to achieve the goals in Part 2. That time can be expected to cover one cycle of R Car, and who knows what Eta Car will do. Possibly Eta may drop slightly in magnitude over the year.
7 X 50 binoculars are a minimum requirement, as well as larger binoculars or a 90-100 mm telescope. Correct VSS RASNZ charts will be provided, as well as any help necessary.
If you're interested in joining this project and are a member of VSS, please contact Alan Plummer.


text:
Replacement Door Panels Light Gray 18-36CTN-LGR For C6500 C7500 C8500 Product Type: Door Panel Fitment Note 1: PAIR / 90-02 CHEVY COMMERCIAL TRUCK C6500,C7500,C8500 Fitment Note 2: NON- Power Only, Padded Armrest, Weather Strips, Fasteners Fitment Note 3: Upholstered Insert and Kick Panel With Map Pocket Free Shipping in the Lower 48 StatesSKU: CVL18-36CTN-LGR
Product Details:Made From Durable ABS Plastic And Vacuum Molded For Perfect Fit
Highlights & Features:Coverlay Manufacturing, Inc. originated in Denver, Colorado in 1982 and incorporated as Import Auto Products, Ltd., a Colorado corporation. Our original purpose, at the time of incorporation, was to import aftermarket auto body parts from Taiwan and Italy and sell them to body shops in the Denver area. In the spring of 1982, we attended a trade show seeking new suppliers. At that show we discovered a formed plastic dash cover for the Datsun 240Z. We purchased a few for resale. The typical response was "That's great! Do you have a dash cover for my vehicle?" Being confident and ambitious we declared "Those dash covers can't be hard to make - bet we can do it". Six months later, we had the first dash cover we could sell. In November 1983, we attended the Specialty Equipment Manufacturers Association (SEMA) Trade Show in Las Vegas as an exhibitor. We proudly displayed our first twelve dash covers and we were overwhelmed by the response from the automotive industry. In 1992, after battling lost production from snow days, needing more space and a centralized location for shipping purposes, Import Auto Products, Ltd. moved to its present location in San Angelo, Texas. Since our trademark Coverlay became recognized throughout the automotive industry, we officially changed our name to Coverlay Manufacturing, Inc. in 1994. Our mission is to supply the consumer with a quality product at the lowest possible price.
Material:ABS - Acrylonitrile Butadiene Styrene
Color:See item specifics


text:
Web designers tend to focus a lot of their attention on the visual elements of a design. How do the colours work together? Is the layout balanced? Is the spacing optimal? As designers, we want our creations to be as visually pleasing as possible, because we know this feeds directly into the overall quality of the experience.
But there's far more to designing an excellent website than 'making it pretty'.
In fact, for your business. UX is thus a vital aspect of web design – and not just from the business side.
That's why, when I wanted to up my game in web design, I turned to web developers to get a few ideas. As you bring the visual aspects of your next design together, take some time to focus on the following elements, and you'll create a site people want to stick around on.
Provide security
If you're asking your site visitors to share their personal information with you, they need to know their info's safe from hackers and the world at large.
a product online, especially if they're older. And that fear is just as powerful as aggravation over other usability issues. With identity theft rampant these days, people are reluctant to share financial data unless they feel safe.
So take time to think about how you protect the information people share with you. And perhaps more importantly for designers: how you show people their data's safe.
Even if it's something as simple as a name and email address, how will you secure it from hackers? And what visual signs will you offer that said info is safe? Chrome now does a great job of showing users that a site is served over HTTPS, but if your audience skews older, you may need to make such signals even more prominent.
You'll also want to make sure your privacy policy is easy to access, so your site visitors will understand how you work to protect them.
If you use Webflow, we've got your back on the privacy front, with .
Go responsive
These days, your website needs to be responsive. Around , and yet an astounding .
Let's say you visited a rare coffee bean website on your laptop (we're not going to say it's civet coffee, but maybe). Then you head out to lunch with your friends and want to share it with them. But when you pull it up on your iPhone, it's distorted and hard to browse. You can't show your friends anything, and you'll likely grow aggravated and find a different website that sells rare coffee beans.
Skip the app
Thinking about paying someone to build a mobile app for your website? Think again.
Statistics show that there are around 50 million mobile apps downloaded each day, yet 95 per cent are abandoned within 30 days. Beyond a few popular exceptions, people just don't want to use your app.
So unless your product is all about getting something done quickly and easily while on the go, .
Don't lose sight of the visuals
Even when you're focused on usability, visuals still matter.
90 per cent of the information transmitted to the brain is visual. And visual learners – people who learn best via visual aids – make up over half the population. So adding images, infographics and data visualisations to your content can help the majority of your site visitors fully understand the message you are trying to convey.
Just know that when you add a lot of graphics to a website, you have to make sure they don't also slow it down and . That's one reason – and offers tips you can use to .
It's okay to use video (in some places)
In the past, many web developers were reluctant to use video because not everyone was on high-speed internet. But in the US, that's changing.
At the end of 2015, Pew Research Center reported that , while those who didn't often turned to their smartphones. For the rest, there's high-speed internet at cafes, libraries and coffee shops. With so many more people on high-speed internet connections, bandwidth concerns have become less pressing.
Video can boost your conversion rates, too. According to survey data, a product or service.
Don't just add a video for the sake of adding a video, though – make sure it has a purpose. Do you want to teach your site visitors something? Inform them about the special features of your product? Make them laugh? Whatever your goal, your video should enhance the rest of your content, not replace it.
Stay up to date
The number one thing I've learned from web developers is to , usability, and site visitor preferences. Web developers stay on top of the latest software and best practices, and they're always trying new things. We web designers should do the same.
Don't be afraid to think outside the box. Don't be afraid to consult with other designers and web developers if you have questions.
Related articles:


text:
Privacy Policy
1. Collection of information
We may collect personal information about you when:
- you take a service or product from us
- you contact us with an enquiry or in response to a communication from us
We may take this information from you in a number of ways:
- Internet & email
- Telephone (both fixed and mobile)
- Text message or similar multimedia messaging application
2. Use of information
2.1 Information you provide or we hold about you may be used by us and/or our agents to:
- identify and respond to you when you make direct enquiries or requests to us
- administer any accounts, services and products provided by us
- undertake marketing & customer analysis
- help prevent and detect fraud or loss
- contact you about other services and products offered by us, and selected partners (provided you have given us prior consent)
3. Disclosure of information
3.1. We may disclose information we hold about you to third parties for the purpose of providing services you have requested, as part of the process of sale, or where legitimately requested for legal or regulatory purposes, as part of legal proceedings or prospective legal proceedings.
3.2. We will not sell, rent or share your personal information, with or to any third parties for marketing purposes without your express permission.
4. Monitoring
We may monitor and record calls made to us for the purposes of quality assurance, legal, regulatory and training.
5. Protection of information
We maintain strict security measures in order to protect personal information. These measures include technical and procedural steps to protect your data from misuse, unauthorised access or disclosure, loss, alteration, or destruction. Credit card information is transmitted using secure socket layer (SSL) encryption.
6. Links to 3rd Party Web Sites.
Our websites may contain links to other recognised and respected organisations websites. We are not responsible for the privacy practices of these sites. This privacy policy applies solely to information collected on Solutions on Demand Ltd brand websites.
7. Use of 'cookies'
Like many other websites, Solutions on Demand Group websites uses cookies. 'Cookies' are small pieces of information sent by an organisation to your computer and stored on your hard drive to allow that website to recognise you when you visit. They collect statistical data about your browsing actions and patterns and do not identify you as an individual. For example, we use cookies to store your country preference. This helps us to improve our website and deliver a better more personalised service.
It is possible to switch off cookies by setting your browser preferences. For more information on how to switch off cookies on your computer, visit our full cookies policy. Turning cookies of may result in a loss of functionality when using our website.
8. Transferring data outside of the UK
As part of the services offered to you through Solutions on Demand Ltd, the information which you provide to us may be transferred to countries outside the European Union ("EU"). By way of example, this may happen if any of our servers are from time to time located in a country outside of the EU. These countries may not have similar data protection laws to the UK. By submitting your personal data, you're agreeing to this transfer, storing or processing. If we transfer your information outside of the EU in this way, we will take steps to ensure that appropriate security measures are taken with the aim of ensuring that your privacy rights continue to be protected as outlined in this Policy.
If you use our services while you are outside the EU, your information may be transferred outside the EU in order to provide you with those services.
9. Changes to this policy
We reserve the right to change this policy at any time and updated version will be posted on UnitedHosting websites from time to time. Your continued use of our sites following the posting of changes to this policy will mean you accept those changes. Information collected prior to the time any change is posted will be used according to the terms of the policy that applied at the time the information was collected.
10. Contact Us
If you would like further information about this policy or you wish to enquire about the data we hold about you, please contact us:
Solutions on Demand Ltd
11 Standalane
Email: [email protected]
Tel: 01560 428031
Fourth Floor
69 West Nile Street
Glasgow G1 2QB
Tel: 0141 488 1533


text: Heart disease is the No. 1 killer of men, and the hearts of one of eight men over age 40 will at some point suddenly stop beating – an event known as sudden cardiac arrest. June is both National Men's Health Month and CPR and AED Awareness Month, making it a good time to revisit ways to prevent heart disease. READ MORE


text:
Download our mobile app:Icon Icon
Online Banking
Click Here To Login To FirstBank's Online Banking
Now you can have 24-hour access to real-time account information from the convenience of your personal computer. FirstBank Online Banking is convenient, easy to use, and more secure than ever.
Everything I like!
E-Statements are good for the environment. They literally save tons of paper. Which means fewer trees need to be harvested and less energy needs to be used to make the paper. Choosing E-Statements is something easy you can do, that really is Earth-friendly.
You get your statement sooner, because online delivery eliminates delays sometimes found with postal mail delivery.
E-Statements eliminate the clutter of paper statements and allow you to store and retrieve past statements right on your hard drive.
Identity Theft experts actually recommend electronic statements. Why? Because most identity theft occurs through the mail or improperly discarded paper documents containing sensitive information. E-Statements simply protect your information better than paper statements.
It costs you nothing to switch to E-Statements — and to have access to every transaction in your account, including check images, right at your fingertips. Enroll today, and discover all the advantages of E-Statements. Simply log into Online Banking, and enroll for eStatements under the options tab.
Bill Pay
Save money and time with the convenience of paying bills with FirstBank's Bill Pay. Bill Pay is quick, easy and secure.
Simply the best way to manage your payments.


text:
Don't act like God, Sunil Grover tells Kapil Sharma
Mumbai, March 21 (IANS) Actor-comedian Kapil Sharma and Sunil Grover from "The Kapil Sharma Show" seem to have mended their strained relationship after Kapil extended apology and said he was sorry if he had unintentionally hurt his co-star.
Kapil was accused of allegedly hurting Sunil while drunk on a flight from Melbourne.
On Monday, Kapil tweeted: "Paji Sunil Grover. Sorry if hurt you unintentionally. You know very well how much I love you. Love and regards always."
In reply to the tweet, Sunil sent out a long post via social media on Tuesday.
In it, Sunil said that even though working with Kapil has been a learning experience, he requested that Kapil should treat everybody with respect.
"All are not as successful as you. All are not as talented as you are. But if they all are talented like you, who will value you? So have some gratitude towards their existence. And also, if someone is correcting you, don't abuse that person," Sunil said.
He added: "Refrain from using foul language in front of women who have nothing to do with the stardom you carry. They are just travelling with you. Thanks for making me realise it was your show and you have the power to throw out anybody, anytime."
Sunil also asked Kapil to not act "like God".
Responding to Sunil's post then, Kapil wrote: "You won my heart. I love you more and more."
According to the buzz, Sunil skipped the shooting of the show's latest episode on Monday.
Kapil tweeted: "Today packed up at 6 a.m. After so long and I missed so many things. Love you. See you in the evening at your home."
On "The Kapil Sharma Show", Sunil plays the characters Doctor Mashoor Gulati and Rinku Bhabhi.
This is not their first spat.


text:
Everett Transmission
Looking For Something?
For some applications such as trenching or running a rototiller, a lower ground speed was needed while still maintaining the higher pto speed. To accomplish this, some transmissions were made to install behind the tractor transmission rather than in front like the Sherman and Hupp. The Everett trencher transmission actually lengthened the tractor by a few inches when installed. The Everett transmission has such an extreme gear reduction at 98 to 1 that it's only logical use can be for running the trencher unit. The photo below shows an Everett unit installed in Marvin Baumann's 8N "Fourtrans", the world's slowest tractor. Marvin has four transmissions in his tractor, the Sherman creeper transmission, the standard transmission, the Everett trencher transmission, and the Howard gear reduction unit.
Thanks to John Smith of Old Ford Tractor for allowing us to use this information.


text:
by Agape Charmani
Waldemar von Kazak is a Russian artist inspired by retro cars, pinup girls and vintage illustrations. His work focuses on both the beautiful and the ugly side of the western culture and reality. Apart from his retro-influenced illustrations, the artist explores the troubling issues of society, beauty standards as well as our relationship with technology.
His world is a dystopian rotter future, as a result to the mistreatment of today's reality and the conveniences offered in the 21st century.
"Life constantly provides food for thought and new ideas. It is difficult to carry ideas in itself – they ask outside. Sometimes so quickly that quality of drawing suffers," he explains in an interview with Pinup Arena.


text:
Standing in front of Sullivan's door, Clint straightened his tie for the fifth time. His trip to the heart of the Mariner's home turf had yielded some massive and pleasant surprises that he was eager to share with his sometimes-prickly traveling companion. After he knocked on the door, he heard a muffled, "One moment," and took to rocking on his heels while he waited. He smoothed out his surprise new duds, ensured he'd done all the buttons on his shirt properly, and made sure his fly had been zipped. Check. Check. Check. Should he button the sport coat or not? What was protocol? A quick hand through his hair again, and then a surreptitious nose cleaning, just in case.
Calm down, man.
When Sullivan's door opened a few moments later, Clint had to bite back a wolf whistle. A pair of driving shades and that baseball cap really added to her image (not that she was bad to begin with), and his pulse raced. This might be harder than he'd thought.
Man up, Clint, he told himself. "Are you ready to go, Sully?"
She gave him a slow once over. "I know I didn't give you enough money to buy that. Where'd you get it?"
He shook his head. "Some store." He could tell she was hardly satisfied with the answer, but ignored the follow up question in her eyes. "Let's try again. Are you ready to go? It's five."
She glanced at her watch. "Go? Where are we going?"
He grinned. "You are hungry, yes?"
"Maybe," she said cautiously. In reply, her stomach gurgled, "Absolutely I'm hungry, you idiot," and Lindsay blushed crimson.
Clint pretended not to notice the sound, and jerked a thumb toward the stairs. "C'mon. Even if you're fine, I'm dying for something better than the burgers from the joint next door. I was thinking about something, you know, upscale. Just the two of us. Think of it as part of me paying off my debt."
She cocked her head. "In case you hadn't noticed, we've been watching a dwindling budget lately. And, besides, I'm not dressed to go anywhere nice."
Clint turned and jogged for the stairs. "No worries," he called back to her. "Dinner's taken care of, and I've got your evening wear sorted out, too. Let's go!" He was down the stairs and in the lobby in under a minute. She appeared seconds later, frowning—probably glaring behind those shades—and demanding answers.
"That'd be telling," he replied with a smirk. She was leaning forward, eager for whatever it was he was holding back. Or maybe she was actually eager to rip his head off because she was infected by the Touch. Either way, there was no reason to delay. He strode through the front door of the motel, and then turned to hold it open for her. Sullivan approached sinuously, too much the way a big cat would close on its prey. Realizing the problem, Clint released the door and stepped aside, only to realize a new problem. A moment later, the door took Sullivan full in the face.
"Sully!" Clint sprang for the door and yanked it open, even as she staggered backwards. "Man, Sully. I swear by everything holy that I didn't mean to—"
She silenced him with a hand, while rubbing vigorously at her nose with her other hand. "That's twice you've hit me with a door! What is your prob— never mind. I'm not bleeding, am I?" She didn't wait for an answer before turning back toward the lobby and striding for the ladies' room.
Clint buried his face in his hand, and then looked behind him. Good. His surprise was still there. "Sully! You look fine. If you need a mirror, there's one here in the limo."
She missed a step, and then stopped. Carefully, she looked back over her shoulder. He saw her gasp slightly, and then turn all the way around. She looked back and forth between the restrooms and the waiting luxury car. Finally, her shoulders dropped slightly, and walked carefully toward the limousine. Clint opened the car's door immediately, dismissing the driver with a nod. Sullivan approached slowly, and shot meaningful looks both at Clint and at the car door.
"What?" he asked. "Hey, that was an accident."
She gave him a look. "And so was the thing in the hospital."
"Yes. So was the thing in the hospital. But do you really think I'd slam a car door on a woman?"
She crossed her arms over her chest, and cocked her head.
Clint blushed slightly, and gestured at the door, and said, "Look, Miss Sullivan. I promise I'm not going to intentionally injure or humiliate you. This? This was supposed to be a nice surprise and it hasn't exactly gone the way I planned it. Bear with me, please? I promise I'll do my very best to make this as enjoyable for you as it has been for me. Okay?"
Sullivan hesitated, but at last put one foot forward, then the other. Then she sped to the limo and climbed inside without so much as a glance at Clint. Her passage was so close that a faint whiff of her perfume caught his nose. Clint breathed deeply, and let the scent linger in his mind, resolving to get her a bottle of whatever that was as a "thank you" gift, once he got a job again. He really did owe her big. Hopefully, tonight would help.
I Am A Reader and sponsored by the publisher. VOID WHERE PROHIBITED BY LAW. a Rafflecopter giveaway


text:
Disney Toystory Alien Doll Pouch with Shoulder Strap
Cute little shoulder type pouch. It is convenient to put in a small thing such as coin, small stuff, tissue, cosmetics etc. Because it is a convenient type of entering, it opens casually and makes it easy to see inside.
Character: Alien
Type: Coin Bag, Pouch
Series: Disney Toystory
Shoulder Strap Length: 80cm
Size: 21×15×9cm
Material / component: Polyester ・Nylon ・Iron ・PS
(Auto Google Translation from Japanese.)
Need Any Help?
Stocking, Delivery or Gift Suggestion, feel free to make a Live Chat with us whatever you want to know:
FB Messenger
Whatsapp +852 6019 8315


text:
Export 5 results:Author Title Type [ Year]
Filters: Keyword is Alzheimer Disease and Author is Bennett, David A [Clear All Filters]
"Toward defining the preclinical stages of Alzheimer's disease: recommendations from the National Institute on Aging-Alzheimer's Association workgroups on diagnostic guidelines for Alzheimer's disease.", Alzheimers Dement, vol. 7, no. 3, pp. 280-92, 2011.,
"Demonstrated brain insulin resistance in Alzheimer's disease patients is associated with IGF-1 resistance, IRS-1 dysregulation, and cognitive decline.", J Clin Invest, vol. 122, no. 4, pp. 1316-38, 2012.,
"Integrated systems approach identifies genetic nodes and networks in late-onset Alzheimer's disease.", Cell, vol. 153, no. 3, pp. 707-20, 2013.,
"REST and stress resistance in ageing and Alzheimer's disease.", Nature, vol. 507, no. 7493, pp. 448-54, 2014.,
"MIND Diet, Common Brain Pathologies, and Cognition in Community-Dwelling Older Adults.", J Alzheimers Dis, vol. 83, no. 2, pp. 683-692, 2021.,


text:
An Introduction to Terraform
Learn the basics of Terraform in this step-by-step tutorial of how to deploy a cluster of web servers and a load balancer on AWS
Update, November 17, 2016: We took this blog post series, expanded it, and turned it into a book called Terraform: Up & Running!
Update, July 8, 2019: We've updated this blog post series for Terraform 0.12 and released the 2nd edition of Terraform: Up & Running!
Update, April 7, 2022: The early release of the 3rd edition of Terraform: Up & Running, updated through Terraform 1.1, is now available!
This is Part 2 of the Comprehensive Guide to Terraform series. In Part 1, we explained why we picked Terraform as our IAC tool of choice and not Chef, Puppet, Ansible, SaltStack, or CloudFormation. In this post, we're going to introduce the basics of how to use Terraform to define and manage your infrastructure.
The official Terraform Getting Started documentation does a good job of introducing the individual elements of Terraform (i.e. resources, input variables, output variables, etc), so in this guide, we're going to focus on how to put those elements together to create a fairly real-world example. In particular, we will provision several servers on AWS in a cluster and deploy a load balancer to distribute load across that cluster. The infrastructure you'll create in this example is a basic starting point for running scalable, highly-available web services and microservices.
This guide is targeted at AWS and Terraform newbies, so don't worry if you haven't used either one before. We'll walk you through the entire process, step-by-step:
- Set up your AWS account
- Install Terraform
- Deploy a single server
- Deploy a single web server
- Deploy a configurable web server
- Deploy a cluster of web servers
- Deploy a load balancer
- Clean up
You can find sample code for the examples below at: https://github.com/gruntwork-io/intro-to-terraform. Note that all the code samples are written for Terraform 0.12.x.
Terraform can provision infrastructure across many different types of cloud providers, including AWS, Azure, Google Cloud, DigitalOcean, and many others. For this tutorial, we picked Amazon Web Services (AWS) because:
- It provides a huge range of reliable and scalable cloud hosting services, including Elastic Compute Cloud (EC2), Auto Scaling Groups (ASGs), and Elastic Load Balancing (ELB). If you find the AWS terminology confusing, be sure to check out AWS in Plain English.
- AWS is the most popular cloud infrastructure provider, by far.
- AWS offers a generous Free Tier which should allow you to run all of these examples for free.
When you first register for AWS, you initially sign in as the root user. This user account has access permissions to everything, so from a security perspective, we recommend only using it to create other user accounts with more limited permissions (see IAM Best Practices). To create a more limited user account, head over to the Identity and Access Management (IAM) console, click "Users", and click the blue "Create New Users" button. Enter a name for the user and make sure "Generate an access key for each user" is checked:
Note: the IAM user page may look a bit different when you try it, but the basic idea of creating an IAM User is the same.
Click the "Create" button and you'll be able to see security credentials for that user, which consist of Access Key ID and a Secret Access Key. You MUST save these immediately, as they will never be shown again. We recommend storing them somewhere secure (e.g. a password manager such as Keychain or 1Password) so you can use them a little later in this tutorial.
Save the credentials somewhere secure. Never share them with anyone. Don't worry, the ones in the screenshot above are fake.
Once you've saved the credentials, click "Close" (twice) and you'll be taken to the list of users. Click on the user you just created and select the "Permissions" tab. By default, a new IAM user does not have permissions to do anything in the AWS account. To be able to use Terraform for the examples in this blog post series, add the following permissions (learn more about Managed IAM Policies here):
AmazonEC2FullAccess: required for this blog post.
AmazonS3FullAccess: required for How to manage Terraform state.
AmazonDynamoDBFullAccess: required for How to manage Terraform state.
AmazonRDSFullAccess: required for How to create reusable infrastructure with Terraform modules.
CloudWatchFullAccess: required for Terraform tips & tricks: loops, if-statements, and pitfalls.
IAMFullAccess: required for Terraform tips & tricks: loops, if-statements, and pitfalls.
Follow the instructions here to install Terraform. When you're done, you should be able to run the terraform command:
$ terraform
Usage: terraform \[-version\] \[-help\] <command> \[args\](...)
In order for Terraform to be able to make changes in your AWS account, you will need to configure the AWS credentials for the user you created earlier. There are several ways to do this (see A Comprehensive Guide to Authenticating to AWS on the Command Line), one of the easiest of which is to set the following environment variables:
export AWS\_ACCESS\_KEY\_ID=(your access key id)
export AWS\_SECRET\_ACCESS\_KEY=(your secret access key)
Terraform code is written in a language called HCL in files with the extension
.tf. It is a declarative language, so your goal is to describe the infrastructure you want, and Terraform will figure out how to create it. Terraform can create infrastructure across a wide variety of platforms, or what it calls providers, including AWS, Azure, Google Cloud, DigitalOcean, and many others.
You can write Terraform code in just about any text editor. If you search around, you can find Terraform syntax highlighting support for most editors (note, you may have to search for the word "HCL" instead of "Terraform"), including vim, emacs, Sublime Text, Atom, Visual Studio Code, and IntelliJ (the latter even has support for refactoring, find usages, and go to declaration).
The first step to using Terraform is typically to configure the provider(s) you want to use. Create a file called
main.tf and put the following code in it:
provider "aws" {
region = "us-east-2"
This tells Terraform that you are going to be using the AWS provider and that you wish to deploy your infrastructure in the
us-east-2 region (AWS has data centers all over the world, grouped into regions and availability zones, and us-east-2 is the name for data centers in Ohio, USA). You can configure other settings for the AWS provider, but for this example, since you've already configured your credentials as environment variables, you only need to specify the region.
For each provider, there are many different kinds of resources you can create, such as servers, databases, and load balancers. Before we deploy a whole cluster of servers, let's first figure out how to deploy a single server that will run respond with "Hello, World" to HTTP requests. In AWS lingo, a server is called an EC2 Instance. Add the following code to
main.tf, which uses the aws_instance resource to deploy an EC2 Instance:
resource "aws\_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance\_type = "t2.micro"
The general syntax for a Terraform resource is:
resource "<PROVIDER>\_<TYPE>" "<NAME>" {
PROVIDER is the name of a provider (e.g.,
TYPE is the type of resources to create in that provider (e.g.,
NAME is an identifier you can use throughout the Terraform code to refer to this resource (e.g.,
example), and
CONFIG consists of one or more arguments that are specific to that resource (e.g.,
ami = "ami-0c55b159cbfafe1f0"). For the
[aws_instance](https://www.terraform.io/docs/providers/aws/r/instance.html) resource, there are many different arguments, but for now, you only need to set the following ones:
ami: The Amazon Machine Image (AMI) to run on the EC2 Instance. You can find free and paid AMIs in the AWS Marketplace or create your own using tools such as Packer. The preceding code sets the
amiparameter to the ID of a Ubuntu 18.04 AMI in
us-east-2. This AMI is free to use.
instance_type: The type of EC2 Instance to run. Each type of EC2 Instance provides a different amount CPU, memory, disk space, and networking capacity. The EC2 Instance Types page lists all the available options and how much each one costs. The preceding example uses
t2.micro, which has one virtual CPU, 1GB of memory, and is part of the AWS free tier.
In a terminal, go into the folder where you created
main.tf, and run the
terraform init command:
$ terraform init
Initializing the backend...
Initializing provider plugins...
\- Checking for available provider plugins...
\- Downloading plugin for provider "aws" (...)\* provider.aws: version = "~> 2.10"
Terraform has been successfully initialized!
terraform binary contains the basic functionality for Terraform, but it does not come with the code for any of the providers (e.g., the AWS provider, Azure provider, GCP provider, etc), so when first starting to use Terraform, you need to run
terraform init to tell Terraform to scan the code, figure out what providers you're using, and download the code for them. By default, the provider code will be downloaded into a
.terraform folder, which is Terraform's scratch directory (you may want to add it to
.gitignore). You'll see a few other uses for the
init command and
.terraform folder later on. For now, just be aware that you need to run
init any time you start with new Terraform code, and that it's safe to run
init multiple times (the command is idempotent).
Now that you have the provider code downloaded, run the
terraform plan command:
$ terraform plan
Refreshing Terraform state in-memory prior to plan...(...)\+ aws\_instance.example
ami: "ami-2d39803a"
availability\_zone: "<computed>"
ebs\_block\_device.#: "<computed>"
ephemeral\_block\_device.#: "<computed>"
instance\_state: "<computed>"
instance\_type: "t2.micro"
key\_name: "<computed>"
network\_interface\_id: "<computed>"
placement\_group: "<computed>"
private\_dns: "<computed>"
private\_ip: "<computed>"
public\_dns: "<computed>"
public\_ip: "<computed>"
root\_block\_device.#: "<computed>"
security\_groups.#: "<computed>"
source\_dest\_check: "true"
subnet\_id: "<computed>"
tenancy: "<computed>"
vpc\_security\_group\_ids.#: "<computed>"Plan: 1 to add, 0 to change, 0 to destroy.
plan command lets you see what Terraform will do before actually doing it. This is a great way to sanity check your changes before unleashing them onto the world. The output of the plan command is a little like the output of the
diff command: resources with a plus sign (
+) are going to be created, resources with a minus sign (
-) are going to be deleted, and resources with a tilde sign (
~) are going to be modified in-place. In the output above, you can see that Terraform is planning on creating a single EC2 Instance and nothing else, which is exactly what we want.
To actually create the instance, run the
terraform apply command:
$ terraform apply(...)Terraform will perform the following actions: # aws\_instance.example will be created
+ resource "aws\_instance" "example" {
+ ami = "ami-0c55b159cbfafe1f0"
+ arn = (known after apply)
+ associate\_public\_ip\_address = (known after apply)
+ availability\_zone = (known after apply)
+ cpu\_core\_count = (known after apply)
+ cpu\_threads\_per\_core = (known after apply)
+ get\_password\_data = false
+ host\_id = (known after apply)
+ id = (known after apply)
+ instance\_state = (known after apply)
+ instance\_type = "t2.micro"
+ ipv6\_address\_count = (known after apply)
+ ipv6\_addresses = (known after apply)
+ key\_name = (known after apply)
}Plan: 1 to add, 0 to change, 0 to destroy.Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.Enter a value:
You'll notice that the
apply command shows you the same
plan output and asks you to confirm if you actually want to proceed with this plan. So while
plan is available as a separate command, it's mainly useful for quick sanity checks and during code reviews, and most of the time you'll run
apply directly and review the plan output it shows you.
Type in "yes" and hit enter to deploy the EC2 Instance:
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.Enter a value: yesaws\_instance.example: Creating…
aws\_instance.example: Still creating… \[10s elapsed\]
aws\_instance.example: Still creating… \[20s elapsed\]
aws\_instance.example: Still creating… \[30s elapsed\]
aws\_instance.example: Creation complete after 38sApply complete! Resources: 1 added, 0 changed, 0 destroyed.
Congrats, you've just deployed a server with Terraform! To verify this, you can login to the EC2 console, and you'll see something like this:
It's working, but it's not the most exciting example. For one thing, the Instance doesn't have a name. To add one, you can add a tag to the EC2 instance:
resource "aws\_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance\_type = "t2.micro" tags = {
Name = "terraform-example"
terraform apply again to see what this would do:
$ terraform applyaws\_instance.example: Refreshing state...
(...)Terraform will perform the following actions: # aws\_instance.example will be updated in-place
~ resource "aws\_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
availability\_zone = "us-east-2b"
instance\_state = "running"
(...) + tags = {
+ "Name" = "terraform-example"
} (...)
}Plan: 0 to add, 1 to change, 0 to destroy.Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.Enter a value:
Terraform keeps track of all the resources it already created for this set of configuration files, so it knows your EC2 Instance already exists (notice Terraform says "Refreshing state…" when you run the
apply command), and it can show you a diff between what's currently deployed and what's in your Terraform code (this is one of the advantages of using a declarative language over a procedural one). The preceding diff shows that Terraform wants to create a single tag called "Name," which is exactly what you need, so type in "yes" and hit enter.
When you refresh your EC2 console, you'll see:
The next step is to run a web server on this Instance. In a real-world use case, you'd probably install a full-featured web framework like Ruby on Rails or Django, but to keep this example simple, we're going to run a dirt-simple web server that always returns the text "Hello, World" using a code borrowed from the big list of http static server one-liners:
echo "Hello, World" > index.html
nohup busybox httpd -f -p 8080 &
This is a bash script that writes the text "Hello, World" into
index.html and runs a web server on port 8080 using busybox (which is installed by default on Ubuntu) to serve that file at the URL "/". We wrap the busybox command with
[nohup](https://en.wikipedia.org/wiki/Nohup) to ensure the web server keeps running even after this script exits and put an
& at the end of the command so the web server runs in a background process and the script can exit rather than being blocked forever by the web server.
How do you get the EC2 Instance to run this script? Normally, instead of using an empty Ubuntu AMI, you would use a tool like Packer to create a custom AMI that has the web server installed on it. But again, in the interest of keeping this example simple, we're going to run the script above as part of the EC2 Instance's User Data, which AWS will execute when the instance is booting:
resource "aws\_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance\_type = "t2.micro" user\_data = <<-EOF
echo "Hello, World" > index.html
nohup busybox httpd -f -p 8080 &
EOF tags = {
Name = "terraform-example"
<<-EOF and
EOF are Terraform's heredoc syntax, which allows you to create multiline strings without having to put
\n all over the place (learn more about Terraform syntax here).
You need to do one more thing before this web server works. By default, AWS does not allow any incoming or outgoing traffic from an EC2 Instance. To allow the EC2 Instance to receive traffic on port 8080, you need to create a security group:
resource "aws\_security\_group" "instance" {
name = "terraform-example-instance" ingress {
from\_port = 8080
to\_port = 8080
protocol = "tcp"
cidr\_blocks = \["0.0.0.0/0"\]
This code creates a new resource called
[aws_security_group](https://www.terraform.io/docs/providers/aws/r/security_group.html) (notice how all resources for the AWS provider start with
aws_) and specifies that this group allows incoming TCP requests on port 8080 from the CIDR block
CIDR blocks are a concise way to specify IP address ranges. For example, a CIDR block of
10.0.0.0/24 represents all IP addresses between
10.0.0.0 and
10.0.0.255. The CIDR block
0.0.0.0/0 is an IP address range that includes all possible IP addresses, so this security group allows incoming requests on port 8080 from any IP. For a handy calculator that converts between IP address ranges and CIDR notation, see http://www.ipaddressguide.com/cidr.
Simply creating a security group isn't enough; you also need to tell the EC2 Instance to actually use it by passing the ID of the security group into the
vpc_security_group_ids argument of the
aws_instance resource. To do that,
you first need to learn about Terraform expressions.
An expression in Terraform is anything that returns a value. You've already seen the simplest type of expressions, literals, such as strings (e.g.,
"ami-0c55b159cbfafe1f0") and numbers (e.g.,
5). Terraform supports many
other types of expressions that you'll see throughout this blog post series.
One particularly useful type of expression is a reference, which allows you to access values from other parts of your code. To access the ID of the security group resource, you are going to need to use a resource attribute reference,
which uses the following syntax:
PROVIDER is the name of the provider (e.g.,
TYPE is the type of resource (e.g.,
NAME is the name of that resource (e.g., the security group is named
"instance"), and
ATTRIBUTE is either one of the arguments of that resource (e.g.,
name) or one of the attributes exported by the resource (you can find the list of available attributes in the documentation for each resource—e.g., here are the attributes for aws_security_group). The security group exports an attribute called
id, so the expression to reference it will look like this:
You can use this security group ID in the `vpc_security_group_ids` parameter of the `aws_instance`:
resource "aws\_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance\_type = "t2.micro"
vpc\_security\_group\_ids = \[aws\_security\_group.instance.id\] user\_data = <<-EOF
echo "Hello, World" > index.html
nohup busybox httpd -f -p 8080 &
EOF tags = {
Name = "terraform-example"
When you add a reference from one resource to another, you create an implicit dependency. Terraform parses these dependencies, builds a dependency graph from them, and uses that to automatically figure out in what order it should create resources. For example, if you were to deploy this code from scratch, Terraform would know it needs to create the security group before the EC2 Instance, since the EC2 Instance references the ID of the security group.
When Terraform walks your dependency tree, it will create as many resources in parallel as it can, which means it can apply your changes fairly efficiently. That's the beauty of a declarative language: you just specify what you want and Terraform figures out the most efficient way to make it happen.
If you run the
apply command, you'll see that Terraform wants to add a security group and replace the EC2 Instance with a new Instance that has the new user data:
$ terraform apply(...)Terraform will perform the following actions:\# aws\_instance.example must be replaced
\-/+ resource "aws\_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance\_type = "t2.micro" (...) + user\_data = "c765373..." # forces replacement
~ vpc\_security\_group\_ids = \[
- "sg-871fa9ec",
\] -> (known after apply) (...)
} # aws\_security\_group.instance will be created
+ resource "aws\_security\_group" "instance" {
+ arn = (known after apply)
+ description = "Managed by Terraform"
+ egress = (known after apply)
+ id = (known after apply)
+ ingress = \[
+ {
+ cidr\_blocks = \[
+ "0.0.0.0/0",
+ description = ""
+ from\_port = 8080
+ ipv6\_cidr\_blocks = \[\]
+ prefix\_list\_ids = \[\]
+ protocol = "tcp"
+ security\_groups = \[\]
+ self = false
+ to\_port = 8080
+ name = "terraform-example-instance"
}Plan: 2 to add, 0 to change, 1 to destroy.Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.Enter a value:
-/+ in the
plan output means "replace"; look for the text "forces replacement" to figure out what is forcing Terraform to do a replacement. With EC2 Instances, changes to many attributes will force the original Instance to be terminated and a completely new Instance to be created (this is an example of the immutable infrastructure paradigm). It's worth mentioning that while the web server is being replaced, any users of that web server would experience downtime; you'll see how to do a zero-downtime deployment with Terraform in Terraform tips & tricks: loops, if-statements, and pitfalls.
Since the plan looks good, enter "yes" and you'll see your new EC2 Instance deploying:
In the description panel at the bottom of the screen, you'll also see the public IP address of this EC2 Instance. Give it a minute or two to boot up and then use a web browser or a tool like
curl to make an HTTP request to this IP address at port 8080:
$ curl http://<EC2\_INSTANCE\_PUBLIC\_IP>:8080
Hello, World
Yay, you now have a working web server running in AWS!
You may have noticed that the web server code has the port 8080 duplicated in both the security group and the User Data configuration. This violates the Don't Repeat Yourself (DRY) principle: every piece of knowledge must have a single, unambiguous, authoritative representation within a system. If you have the port number copy/pasted in two places, it's too easy to update it in one place but forget to make the same change in the other place.
To allow you to make your code more DRY and more configurable, Terraform allows you to define input variables. The syntax for declaring a variable is:
variable "NAME" {
The body of the variable declaration can contain three parameters, all of them optional:
description: It's always a good idea to use this parameter to document how a variable is used. Your teammates will not only be able to see this description while reading the code, but also when running the
applycommands (you'll see an example of this shortly).
default: There are a number of ways to provide a value for the variable, including passing it in at the command line (using the
-varoption), via a file (using the
-var-fileoption), or via an environment variable (Terraform looks for environment variables of the name
TF_VAR_<variable_name>). If no value is passed in, the variable will fall back to this default value. If there is no default value, Terraform will interactively prompt the user for one.
type: This allows you enforce type constraints on the variables a user passes in. Terraform supports a number of type constraints, including
tuple, and
any. If you don't specify a type, Terraform assumes the type is
For the web server example, here is how you can create a variable that stores the port number:
variable "server\_port" {
description = "The port the server will use for HTTP requests"
type = number
Note that the
server_port input variable has no
default, so if you run the
apply command now, Terraform will interactively prompt you to enter a value for
server_port and show you the
description of the variable:
$ terraform applyvar.server\_port
The port the server will use for HTTP requests Enter a value:
If you don't want to deal with an interactive prompt, you can provide a value for the variable via the
-var command-line option:
$ terraform apply -var "server\_port=8080"
You could also set the variable via an environment variable named
TF_VAR_<name> where
<name> is the name of the variable you're trying to set:
$ export TF\_VAR\_server\_port=8080
$ terraform apply
And if you don't want to deal with remembering extra command-line arguments every time you run
plan or
apply, you can specify a
default value:
variable "server\_port" {
description = "The port the server will use for HTTP requests"
type = number
default = 8080
To use the value from an input variable in your Terraform code, you can use a new type of expression called a variable reference, which has the following syntax:
For example, here is how you can set the
from_port and
to_port parameters of the security group to the value of the
server_port variable:
resource "aws\_security\_group" "instance" {
name = "terraform-example-instance" ingress {
from\_port = var.server\_port
to\_port = var.server\_port
protocol = "tcp"
cidr\_blocks = \["0.0.0.0/0"\]
It's also a good idea to use the same variable when setting the port in the User Data script. To use a reference inside of a string literal, you need to use a new type of expression called an interpolation, which has the following syntax:
You can put any valid reference within the curly braces and Terraform will convert it to a string. For example, here's how you can use
var.server_port inside of the User Data string:
user\_data = <<-EOF
echo "Hello, World" > index.html
nohup busybox httpd -f -p "${var.server\_port}" &
In addition to input variables, Terraform also allows you to define _output variables_ with the following syntax:
output "<NAME>" {
value = <VALUE>
NAME is the name of the output variable and
VALUE can be any Terraform expression that you would like to output. The
CONFIG can contain two additional parameters, both optional:
description: It's always a good idea to use this parameter to document what type of data is contained in the output variable.
sensitive: Set this parameter to
trueto tell Terraform not to log this output at the end of
terraform apply. This is useful if the output variable contains sensitive material or secrets, such as passwords or private keys.
For example, instead of having to manually poke around the EC2 console to find the IP address of your server, you can provide the IP address as an output variable:
output "public\_ip" {
value = aws\_instance.example.public\_ip
description = "The public IP of the web server"
This code uses an attribute reference again, this time referencing the
public_ip attribute of the
aws_instance resource. If you run the
apply command again, Terraform will not apply any changes (since you haven't
changed any resources), but it will show you the new output at the very end:
$ terraform apply(...)aws\_security\_group.instance: Refreshing state...
aws\_instance.example: Refreshing state...Apply complete! Resources: 0 added, 0 changed, 0 destroyed.Outputs:public\_ip = 18.104.22.168
As you can see, output variables show up in the console after you run
terraform apply, which users of your Terraform code may find useful (e.g., you now know what IP to test once the web server is deployed). You can
also use the
terraform output command to list all outputs without applying any changes:
$ terraform output
public\_ip = 18.104.22.168
And you can run
terraform output <OUTPUT_NAME> to see the value of a specific output called
$ terraform output public\_ip
This is particularly handy for scripting. For example, you could create a deployment script that runs
terraform apply to deploy the web server, uses
terraform output public_ip to grab its public IP, and runs
curl on the IP as a quick smoke test to validate that the deployment worked.
Input and output variables are also essential ingredients in creating configurable and reusable infrastructure code, a topic you'll see more of in How to create reusable infrastructure with Terraform modules.
Running a single server is a good start, but in the real world, a single server is a single point of failure. If that server crashes, or if it becomes overwhelmed by too much traffic, users can no longer access your site. The solution is to run a cluster of servers, routing around servers that go down, and adjusting the size of the cluster up or down based on traffic (for more info, check out A Comprehensive Guide to Building a Scalable Web App on Amazon Web Services).
Managing such a cluster manually is a lot of work. Fortunately, you can let AWS take care of it for by you using an Auto Scaling Group (ASG). An ASG can automatically launch a cluster of EC2 Instances, monitor their health, automatically restart failed nodes, and adjust the size of the cluster in response to demand.
The first step in creating an ASG is to create a launch configuration, which specifies how to configure each EC2 Instance in the ASG. From deploying the single EC2 Instance earlier, you already know exactly how to configure it, and you can reuse almost exactly the same parameters in the
[aws_launch_configuration](https://www.terraform.io/docs/providers/aws/r/launch_configuration.html) resource:
resource "aws\_launch\_configuration" "example" {
image\_id = "ami-0c55b159cbfafe1f0"
instance\_type = "t2.micro"
security\_groups = \[aws\_security\_group.instance.id\] user\_data = <<-EOF
echo "Hello, World" > index.html
nohup busybox httpd -f -p "${var.server\_port}" &
EOF lifecycle {
create\_before\_destroy = true
The only new thing here is the
lifecycle setting. Terraform supports several lifecycle settings that let you customize how resources are created and destroyed. The
create_before_destroy setting controls the order in which resources are recreated. The default order is to delete the old resource and then create the new one. Setting
create_before_destroy to
true reverses this order, creating the replacement first, and then deleting the old one. Since every change to a launch configuration creates a totally new launch configuration, you need this setting to ensure that the new configuration is created first, so any ASGs using this launch configuration can be updated to point to the new one, and then the old one can be deleted.
Now you can create the ASG itself using the
[aws_autoscaling_group resource](https://www.terraform.io/docs/providers/aws/r/autoscaling_group.html):
resource "aws\_autoscaling\_group" "example" {
launch\_configuration = aws\_launch\_configuration.example.id min\_size = 2
max\_size = 10 tag {
key = "Name"
value = "terraform-asg-example"
propagate\_at\_launch = true
This ASG will run between 2 and 10 EC2 Instances (defaulting to 2 for the initial launch), each tagged with the name "terraform-asg-example". The ASG uses a reference to fill in the launch configuration name.
To make this ASG work, you need to specify one more parameter:
availability_zones. This parameter specifies into which availability zones (AZs) the EC2 Instances should be deployed. Each AZ represents an isolated AWS data center, so by deploying your Instances across multiple AZs, you ensure that your service can keep running even if some of the AZs fail. You could hard-code the list of AZs (e.g. set it to
["us-east-2a", "us-east-2b"]), but that won't be maintainable or portable (e.g., each AWS account has access to a slightly different set of AZs), so a better option is to use data sources to get the list of subnets in your AWS account.
A data source represents a piece of read-only information that is fetched from the provider (in this case, AWS) every time you run Terraform. Adding a data source to your Terraform configurations does not create anything new; it's just a way to query the provider's APIs for data and to make that data available to the rest of your Terraform code. Each Terraform provider exposes a variety of data sources. For example, the AWS provider includes data sources to look up VPC data, subnet data, AMI IDs, IP address ranges, the current user's identity, and much more.
The syntax for using a data source is very similar to the syntax of a resource:
data "<PROVIDER>\_<TYPE>" "<NAME>" {
PROVIDER is the name of a provider (e.g.,
TYPE is the type of data source you want to use (e.g.,
NAME is an identifier you can use throughout the Terraform code to refer to this data source, and
CONFIG consists of one or more arguments that are specific to that data source. For example, here is how you can use the aws_availability_zones data source to fetch the list of AZs in your AWS account:
data "aws\_availability\_zones" "all" {}
To get the data out of a data source, you use the following attribute reference syntax:
For example, to get the list of AZ names from the
aws_availability_zones data source, you would use the following:
Use this value to set the
availability_zone argument of your
aws_autoscaling_group resource:
resource "aws\_autoscaling\_group" "example" {
launch\_configuration = aws\_launch\_configuration.example.id
availability\_zones = data.aws\_availability\_zones.all.names min\_size = 2
max\_size = 10 tag {
key = "Name"
value = "terraform-asg-example"
propagate\_at\_launch = true
At this point, you can deploy your ASG, but you'll have a small problem: you now have multiple servers, each with its own IP address, but you typically want to give your end users only a single IP to use. One way to solve this problem is to deploy a load balancer to distribute traffic across your servers and to give all your users the IP (actually, the DNS name) of the load balancer. Creating a load balancer that is highly available and scalable is a lot of work. Once again, you can let AWS take care of it for you, this time by using Amazon's Elastic Load Balancer (ELB) service.
AWS offers three different types of load balancers:
- Application Load Balancer (ALB): best suited for HTTP and HTTPS traffic.
- Network Load Balancer (NLB): best suited for TCP and UDP traffic.
- Classic Load Balancer (CLB): this is the "legacy" load balancer that predates both the ALB and NLB. It can do HTTP, HTTPS, and TCP, but offers far fewer features than the ALB or NLB.
Since our web servers use HTTP, the ALB would be the best fit, but it requires more code and more explanation, so to keep this long blog post from getting even longer, we're going to use the CLB, which is simpler to use.
You can create a CLB using the aws_elb resource:
resource "aws\_elb" "example" {
name = "terraform-asg-example"
availability\_zones = data.aws\_availability\_zones.all.names
This creates an ELB that will be deployed across all of the AZs in your account. AWS load balancers don't consist of a single server, but multiple servers that can run in separate AZs (that is, separate data centers). AWS will automatically scale the number of load balancer servers up and down based on traffic and handle failover if one of those servers goes down, so you get scalability and high availability out of the box.
Note that the
aws_elb code above doesn't do much until you tell the CLB how to route requests. To do that, you add one or more listeners which specify what port the CLB should listen on and what port it should route the request to:
resource "aws\_elb" "example" {
name = "terraform-asg-example"
availability\_zones = data.aws\_availability\_zones.all.names # This adds a listener for incoming HTTP requests.
listener {
lb\_port = 80
lb\_protocol = "http"
instance\_port = var.server\_port
instance\_protocol = "http"
In the code above, we are telling the CLB to receive HTTP requests on port 80 (the default port for HTTP) and to route them to the port used by the Instances in the ASG. Note that, by default, CLBs don't allow any incoming or outgoing traffic (just like EC2 Instances), so you need to add a new security group to explicitly allow inbound requests on port 80 and all outbound requests (the latter is to allow the CLB to perform health checks, as you'll see shortly):
resource "aws\_security\_group" "elb" {
name = "terraform-example-elb" # Allow all outbound
egress {
from\_port = 0
to\_port = 0
protocol = "-1"
cidr\_blocks = \["0.0.0.0/0"\]
} # Inbound HTTP from anywhere
ingress {
from\_port = 80
to\_port = 80
protocol = "tcp"
cidr\_blocks = \["0.0.0.0/0"\]
You now need to tell the CLB to use this security group by adding the
security_groups parameter:
resource "aws\_elb" "example" {
name = "terraform-asg-example"
security\_groups = \[aws\_security\_group.elb.id\]
availability\_zones = data.aws\_availability\_zones.all.names # This adds a listener for incoming HTTP requests.
listener {
lb\_port = var.elb\_port
lb\_protocol = "http"
instance\_port = var.server\_port
instance\_protocol = "http"
The CLB has one other nifty trick up its sleeve: it can periodically check the health of your EC2 Instances and, if an instance is unhealthy, it will automatically stop routing traffic to it. Let's add an HTTP health check where the CLB will send an HTTP request every 30 seconds to the "/" URL of each of the EC2 Instances and only mark an Instance as healthy if it responds with a 200 OK:
resource "aws\_elb" "example" {
name = "terraform-asg-example"
security\_groups = \[aws\_security\_group.elb.id\]
availability\_zones = data.aws\_availability\_zones.all.names health\_check {
target = "HTTP:${var.server\_port}/"
interval = 30
timeout = 3
healthy\_threshold = 2
unhealthy\_threshold = 2
} # This adds a listener for incoming HTTP requests.
listener {
lb\_port = var.elb\_port
lb\_protocol = "http"
instance\_port = var.server\_port
instance\_protocol = "http"
How does the CLB know which EC2 Instances to send requests to? You can attach a static list of EC2 Instances to an ELB using the CLB's
instances parameter, but with an ASG, Instances will be launching and terminating dynamically all the time, so that won't work. Instead, you can use the
load_balancers parameter of the
aws_autoscaling_group resource to tell the ASG to register each Instance in the CLB:
resource "aws\_autoscaling\_group" "example" {
launch\_configuration = aws\_launch\_configuration.example.id
availability\_zones = data.aws\_availability\_zones.all.names min\_size = 2
max\_size = 10 load\_balancers = \[aws\_elb.example.name\]
health\_check\_type = "ELB" tag {
key = "Name"
value = "terraform-asg-example"
propagate\_at\_launch = true
Notice that we've also configured the
health_check_type for the ASG to
"ELB". The default
health_check_type is
"EC2", which is a minimal health check that only a considers Instance unhealthy if the AWS hypervisor says the server is completely down or unreachable. The
"ELB" health check is much more robust, as it tells the ASG to use the CLB's health check to determine if
an Instance is healthy or not and to automatically replace Instances if the CLB reports them as unhealthy. That way, Instances will be replaced not only if they are completely down, but also if, for example, they've stopped serving requests because they ran out of memory or a critical process crashed.
One last thing to do before deploying the load balancer: let's add its DNS name as an output so it's easier to test if things are working:
output "clb\_dns\_name" {
value = aws\_elb.example.dns\_name
description = "The domain name of the load balancer"
terraform apply and read through the plan output. You should see that your original single EC2 Instance is being removed and in its place, Terraform will create a launch configuration, ASG, ALB, and a security group. If the plan
looks good, type in "yes" and hit enter. When
apply completes, you should see the
clb_dns_name output:
Outputs:clb\_dns\_name = terraform-asg-example-123.us-east-2.elb.amazonaws.com
Copy this URL down. It'll take a couple minutes for the Instances to boot and show up as healthy in the CLB. In the meantime, you can inspect what you've deployed. Open up the ASG section of the EC2 console, and you should see that the ASG has been created:
If you switch over to the Instances tab, you'll see the two instances in the process of launching:
And finally, if you switch over to the Load Balancers tab, you'll see your CLB:
Wait for the "Status" indicator to say "2 of 2 instances in service." This typically takes 1–2 minutes. Once you see it, test the
clb_dns_name output you copied earlier:
$ curl http://terraform-asg-example-123.us-east-2.elb.amazonaws.com
Hello, World
Success! The CLB is routing traffic to your EC2 Instances. Each time you hit the URL, it'll pick a different Instance to handle the request. You now have a fully working cluster of web servers! As a reminder, the sample code for the examples above is available at: https://github.com/gruntwork-io/intro-to-terraform.
At this point, you can see how your cluster responds to firing up new Instances or shutting down old ones. For example, go to the Instances tab, and terminate one of the Instances by selecting its checkbox, selecting the "Actions" button at the top, and setting the "Instance State" to "Terminate." Continue to test the CLB URL and you should get a "200 OK" for each request, even while terminating an Instance, as the CLB will automatically detect that the Instance is down and stop routing to it. Even more interestingly, a short time after the Instance shuts down, the ASG will detect that fewer than 2 Instances are running, and automatically launch a new one to replace it (self healing!). You can also see how the ASG resizes itself by changing the
min_size and
max_size parameters or adding a
desired_size parameter to your Terraform code, and re-running
Of course, there are many other aspects to an ASG that we have not covered here. For a real deployment, you would need to attach IAM roles to the EC2 Instances, set up a mechanism to update the EC2 Instances in the ASG with zero downtime, and configure auto scaling policies to adjust the size of the ASG in response to load. For a fully pre-assembled, battle-tested, documented, production-ready version of the ASG, as well as other types of infrastructure such as Docker clusters, relational databases, VPCs, and more, check out the Gruntwork Infrastructure as Code Library.
When you're done experimenting with Terraform, it's a good idea to remove all the resources you created so AWS doesn't charge you for them. Since Terraform keeps track of what resources you created, cleanup is simple. All you need to do is run the
destroy command:
$ terraform destroy(...)Terraform will perform the following actions: # aws\_autoscaling\_group.example will be destroyed
- resource "aws\_autoscaling\_group" "example" {
} # aws\_launch\_configuration.example will be destroyed
- resource "aws\_launch\_configuration" "example" {
} # aws\_lb.example will be destroyed
- resource "aws\_lb" "example" {
} (...)Plan: 0 to add, 0 to change, 8 to destroy.Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure, as shown
above. There is no undo. Only 'yes' will be accepted to confirm. Enter a value:
Once you type in "yes" and hit enter, Terraform will build the dependency graph and delete all the resources in the right order, using as much parallelism as possible. In about a minute, your AWS account should be clean again.
You now have a basic grasp of how to use Terraform. The declarative language makes it easy to describe exactly the infrastructure you want to create. The
plan command allows you to verify your changes and catch bugs before deploying them. Variables, references, and dependencies allow you to keep code DRY and efficient.
However, we've only just scratched the surface. In Part 3 of the series, How to manage Terraform state, we'll show how Terraform keeps track of what infrastructure it has already created, and the profound impact that has on how you should structure your Terraform code. In Part 4 of the series, we'll show how to create reusable infrastructure with Terraform modules.
For an expanded version of this blog post series, pick up a copy of the book Terraform: Up & Running (2nd edition available now!). If you need help with Terraform, DevOps practices, or AWS at your company, feel free to reach out to us at Gruntwork.


text:
Wisconsin Public Radio Airing 5-part Series on Death
Over the next few weeks, Wisconsin Public Radio, a branch of NPR, will be hosting a five-part series on death on their program, To the Best of Our Knowledge. Each part will focus on one aspect of how Americans deal with death. The parts are, in order of when they will air:
- The Reckoning - how to start discussions about death
- Exit Plan - the tolls of end of life care and ways to ease the experience
- The Last Moment - discussing near-death experiences and the ability of modern medicine to bring people back from brain death
- The Wake - how we deal with and experience grief
- After Life - mortality and remembrance and how these topics are affected in the digital age
The series began this past Sunday, November 9, and will continue for the next four Sundays. If you miss the live broadcasts, you can listen to all parts of the program here.
November 10, 2014 | Advance Care Planning News


text:
I call tandoori chicken India's best-loved grilled chicken. The secret is in the spices and the marinade which makes the chicken super moist and flavorful. Traditionally tandoori chicken is made in a clay oven (tandoor) and is very popular in restaurants. Even though I am making this in the Air Fryer I am still calling it tandoori chicken…rather Air Fryer Tandoori Chicken – Spicy Indian Chicken. It is still grilled and marinated with the same spices. I cant recreate a tandoor at home, however, the taste of this is not far from chicken cooked in a tandoor.
Different chicken dinner ideas that are delicious but easy to make are definitely my idea of WEEKNIGHT SUCCESS.
This is definitely one of my favorite things to make in the air fryer. I find that the chicken does not dry out and it cooks in less time than a regular oven.
What ingredients to I need to make Air Fryer Tandoori Chicken – Spicy Indian Chicken?
Greek yogurt forms the marinade base. It makes the chicken tender and the spices make it flavorful.
In order to avoid dryness, I put some oil in the marinade as well as coat the chicken with some oil when it is air fried.
Chicken drumsticks with the skin peeled. Using a sharp knife, cut about 2 to 4 slits across the chicken drumsticks about 2 to 3 inches wide and deep. This will enable the marinade to penetrate the chicken. I used 7 drumsticks for this recipe.
Wings or smaller pieces: If you use wings, thighs or breasts then you can air fry at 360°F for 15 minutes. Toss and flip the chicken at the 7 minute mark. That is enough time to cook smaller pieces of chicken.
Other ingredients: Oil, ginger garlic paste, lemon juice, salt, ground pepper, red chili powder, kashmiri chili powder, ground turmeric, garam masala, ground coriander, and ground cumin).
What do I serve this Air Fryer Tandoori Chicken – Spicy Indian Chicken with?
- It can we served as an appetizer with cilantro chutney.
- It can be served with naan (Indian flat bread) as a part of a meal.
- Served as a side dish.
- It can also be served in lettuce as a low carb wrap.
How am I going to make Air Fryer Tandoori Chicken – Spicy Indian Chicken?
Step 1: Cut 2 to 4 slits on the drumsticks about 2 to 3 inches wide and deep.
Mix all the ingredients except chicken with 2 tablespoons oil in a bowl. The remaining oil will be used for greasing. When the marinade is mixed well add the drumsticks in the marinade. Let the chicken marinate for a minimum of 30 minutes. Ideally a marinade time of 6 hours works great for all the spices to soak in. But if you are in a rush you can do 30 minutes.
Step 2: When you are ready to cook, grease the air fryer basket with oil. I grease mine by rubbing, brushing, or spraying, a little bit of oil on the bottom grate. Then, follow your air fryer directions for preheating to 350°F for 5 minutes. When it's preheated, working in batches, place the chicken in a single layer.
Cook the chicken at 360°F for 10 minutes. Turn and cook for another 10 minutes. Finally increase the temperature to 370°F and cook for another 5 to 10 minutes until the skin is brown and crisp. Check after the final 5 minute mark (25 minutes) and turn it around for the last 5 minutes.
Tried this recipe yet? Give us a rating, comment below in the reply section and let us know what you think.
Also, try some of our other recipes:
Air Fryer Tandoori Chicken – Spicy Indian Chicken
- 7 drumsticks (skin peeled)
- 1 cup plain greek yogurt
- 3.5 tbsp oil of choice (divided)
- 2 tsp ground coriander (dhaniya powder)
- 1 tsp ground cumin (jeera powder)
- 1/2 tsp ground turmeric (haldi powder)
- 1.5 tsp red chili powder (cayenne pepper)
- 1 tsp kashmiri chili powder
- 2.5 tsp garam masala
- 1.5 tbsp ginger garlic paste (either freshly minced in equal quantities or store bought)
- 1 and 1/4 tsp salt
- 1 tbsp lemon juice (freshly squeezed or bottled)
- 1/4 tsp ground black pepper (kali mirch)
- Mix 2 tbsp oil with all the other ingredients except chicken. Stir well.
- Using a sharp knife, cut about 2 to 4 slits across the chicken drumsticks about 2 to 3 inches wide and deep.
- Add chicken in the marinade and coat it well. Let it sit in the marinade for a minimum of 30 minutes in the refrigerator. Ideally 6 hours marinade time is perfect but in a time bind 30 minutes is good too.
- When you are ready to cook, rub inside of air fryer basket with oil. Keep some left over oil for the chicken.
- Preheat the air fryer at 350°F for 5 minutes.
- Once it is preheated, add chicken and place it in the air fryer basket in a single layer. Discard the left over extra marinade. Do not overcoat the chicken with it.
- Air fry at 360°F for 10 minutes. Add some oil to the chicken, flip the chicken, and air fry for another 10 minutes.
- Then up the temperature to 370°F for 10 minutes. Check at the 5 minute mark and flip it if you like it to be over crispy. I cook mine for full 30 minutes but you could do 25 minutes if you'd like.
- Serve with cilantro chutney, Indian flatbread or with lettuce wraps.
- Ground cayenne pepper and red chili powder can be used interchangeably as both of them make the dish spicy. So if you don't have red chili powder you can use cayenne pepper instead.
- On a scale of 1 to 5, the spice levels in this recipe would be at level 3.5. So if you don't like very spicy food you can reduce the amount of red chili powder.


text:
Learn more about the Evidence-Based Leadership Council
Evidence-based programs offer proven models to promote health and prevent disease.
All the information you need to get started on implementing an EB program.
How to keep your EB program up and running
Information and tools to help you assess your program.
The Archstone Foundation
The Centers for Disease Control and Prevention (CDC)
National Association of Chronic Disease Directors (NACDD)
National Association of Area Agencies on Aging (n4a)
Aging and Disability Business Institute (ADBI)
National Council on Aging (NCOA)
OsteArthritis Action Alliance (OAAA)


text:
Moody's Analytics BankFocus has been significantly improved, including changes to reflect the new IFRS9 accounting standard, introduced by the International Accounting Standards Board (IASB) this year.
The changes have been introduced to provide greater granularity and clarity. They affect the Global Detailed and WVB IFRS National As Published templates in Moody's Analytics BankFocus. The updates to financial line items in BankFocus are summarized below.
New line items:
- IFRS9 new line items
- non-performing loans as reported by the bank
- pension and related reserves line item has been added to the balance sheet: equity section to provide more granularity (previously they were included under "Other" reserves)
- staff benefits fund and related reserves
Consolidation of several existing line items, including:
- liquid assets (including available for sale and held to maturity)
- total equity (including hybrid capital)
- pre-impairment operating profit
- total financial assets: securities
- total off-balance sheet exposure
Several revisions to existing line items, including:
- interest income on cash and balances with central banks
- capital ratios
- certificate of deposits and bank overdraft
BankFocus is updated every quarter.
You might be interested in:
Moody's Analytics BankFocus can help you to research and analyze banks, for counterparty credit risk, portfolio analysis, regulatory reporting and anti-money laundering due diligence.
BankFocus combines renowned content from Bureau van Dijk and Moody's Investors Service with expertise from Moody's Analytics, and offers you a range of access and analysis options including a contemporary interface and integrated workflow solutions.


text:
Media Room
India: Autogas refuelling network expands in Maharashtra and Madhya Pradesh
LPG company Confidence Petroleum India Ltd, under the brand 'Go Gas,' has recently opened an LPG refuelling stations in Yavatmal and Akola (both in Maharashtra) and Jabalpur in Madhya Pradesh.
Besides these new opening, Go Gas has a network of Autogas outlets in Maharashtra, Madhya Pradesh, Andhra Pradesh, Telangana, Karnataka, Tamilnadu and Rajasthan. The company operates more than 209 LPG refuelling facilities in India.
Moreover, it has aggressive plans to open 500 new filling stations across the nation within the next 3 years. As the vehicle population in India continues to grow, so does the acceptance of LPG as a transport fuel.
In recent years Autogas has emerged as a powerful alternative to petrol, as it is an economical, environmentally-friendly and safe fuel for the future needs. For more information, please check this link.
1 April 2020


text:
Rose Infused Strawberry Sorbet
- Serves 4-6
Author Notes
Surrounded by strawberry season, I over thoughtfully tired my search for something outstanding and creative to present for more than just shortcake post of yesteryear.
I mean, don't get me wrong, strawberry shortcake is such a classic it's even got a scented doll named after it — I just wanted more. Unconventional combinations like balsamic, basil and black pepper have been surfacing for some time. and recently, I was confronted with a pastry chef's attempt at combining all three. Not something I wanted to re-create, unfortunately.
I could have almost come full circle with homage to most people's Nanas' Summer Strawberry Pie but let me tell you, it's been so hot and muggy these past couple of days, just the idea of boiling water made me want to sweat.
Naturally in this heat, only Yours Truly would hit the strawberry patch at high noon. There's something pretty spectacular about sneaking a warm, so perfectly ripe summer strawberry. Even tasting like the homemade jam it will soon become, I couldn't help imagining a slip n' slide ride to get my overheated self back to the stifling car.
I've guessed that my designated, appropriately red, strawberry picking bucket can hold about 10 or so pounds of berries. We like the berries, but whatever can't get consumed by the masses within a couple of days by the periodical snack or stuffed crêpes for breakfast, will end up hulled and frozen on parchment for bagging and later enjoyment.
To my delight, I found that a medium Ziploc bag holds about 1 Lb of frozen berries. Perfect for making one of the tastiest and simplest strawberry treats concocted to sooth the heat. Really. Don't let the rose syrup be your deal breaker, it's really quite easy as long as you can get your hand on a rose. It's a wonderful combination that's tips this sorbet over the edge of great and frozen berries are everywhere, so you don't even have to pick and hull them yourself. —Dayna McIsaac
- Rose Infused Strawberry Sorbet
1 pound
Frozen Strawberries
3/4 cup
Rose Syrup
- Rose Petal Syrup
1 cup
1 cup
Petals of 2 Roses
- Rose Infused Strawberry Sorbet
- Add strawberries to food processor, pulsing at first to chop. Scrape sides with a spatula.
- With the motor running, add the rose syrup through the feed tube, stopping to scrape the sides as necessary, blending until smooth.
- If not serving immediately, transfer sorbet into a low sided container, cover tightly and freeze.
- Rose Petal Syrup
- Choosing roses which are in bloom, being sure they are from your own garden or otherwise organic source, pluck the fresh petals and rinse lightly to remove any debris, if necessary.
- In a large saucepan, dissolve the sugar into the water.
- Add the rose petals and bring the syrup to a rolling simmer.
- After about 15 -20 minutes, the syrup should be aromatic and the petals should be mostly translucent.
- Remove the saucepan from the heat to cool. Strain the syrup with a mesh strainer to use and store refrigerated, in a clean jar with a tight fitting lid.


text:
The markets have dropped. What now?
February 28, 2020
If you have seen or heard the news in the last few weeks, you have probably heard about the virus referred to as the Coronavirus or COVID-19. There has obviously been a lot of downward stock market volatility in the last week to say the least. The S&P 500 closed down about 8% Year to Date as of yesterday. And, until the personal and economic effects of the virus become more certain, volatility may continue in the short term.


text:
Welcome to Designerleathercraft where you will find Individual Hand Made Sheepskin Suede Leather and Snakeskin Fashions and Accessories. Many Thanks to those of you who are making my website such a success.
See the Leather Jewellery Collection
Designer handbags, hats and designer belts from famous designers are generally very expensive but please have a look around Designerleathercraft to find unusual accessories at sensible prices. Apart from my own designs from stock I am often able to make similar designs to order if the materials are available to me
Although I had planned to specialize mainly in the hand made accessories on the website, particularly the sheepskin goodies and the suede, leather and snakeskin belts as I felt with these particular accessories I could offer an individual selection that is not widely available, my design for toscana sheepskin gilets has proved to be very popular and I am making a few for stock as well as taking individual orders for the gilets when I have suitable toscana shearlings available.
I am planning to make a leather and suede version of this design for the spring and summer and I am introducing a very unusual range of leather jewellery with semi-precious stones. Complimentary to the current boho look.
I occasionally have great value sheepskin and leather clothing other than my own work available from the website. Unfortunately the sheepskin flying jackets are currently out of stock.
Other pieces are linked from Bag a Bargain .
You will find details of the suede, leather, sheepskin, snakeskin and exotics and belt buckles and trims that I use linked from the materials page
I hope you enjoy browsing my virtual studio
Thanks for visiting
I have been making individual designs in sheepskin, suede, leather and snakeskin for some time now and to keep up with the advance in mobile technology I am working to go mobile friendly and also add a shopping cart to offer my leather crafts and sheepskin goodies for sale online. My sheepskin scarves and sheepskin bags were very popular last season so I hope to have a good selection of these available from stock for winter 2018/19 as they add a touch of luxury to an outfit and were also very popular as gifts. If you have a winter wedding to go to or you're hitting the slopes you might like to take a look at my sheepskin hats. I have previously sold my hand made suede, leather, snakeskin and sheepskin fashions and accessories at many craft fairs including the Christmas Craft Fair at Alexandra Palace and the Jubilee Craft Market in Covent Garden. Some of my hand made suede belts and snakeskin belts were also sold by Turnbull and Asser of Jermyn Street when they had a ladies department.