text:
"We Are Enabled to Shape the Future We Want to Live in"
Alpcan Efe Gencer
A: Turkey has quite a dynamic history as the lands saw many civilizations come and go for thousands of years. As a result, it's turned into a true melting pot of different cultures over time. One benefit of this, which I enjoy the most, is the local cuisine. You could easily drive 50 kilometers in any direction and come across a city with a unique local dish you can't find anywhere else. There's something for everybody when it comes to food here.
Alpcan Efe Gencer, 22 years old, is from Turkey and based in Istanbul.Currently, a senior student studying International Trade and Business, he has studied in 4 different countries in the past 4 years, which has significantly influenced his way of thinking.
Witnessing the power of globalization across the globe; his experiences have convinced him that in order to build a more sustainable and developed future, strengthening the ties between nations and integrating the economies with each other is vital.
Passionate about finance, Alpcan performed numerous internships with banks & financial institutions. During his studies in Hong Kong, he established strong connections with the local finance sector and took licensing examinations along with joining numerous professional societies and institutes. A realist and an avid supporter of environmental protection, he believes that "Sustainable and Green Financial" practices have the power to change the way we grow our civilization, possibly without harming the nature.
Aside from his professional interests, he is also inquisitive by nature and enjoys broadening his horizons at every available opportunity. From living with local tribes in the Northern Thailand jungles to helping animal shelters, he is certain that every experience in the world offers something different we can use to improve ourselves. Alpcan is also a keen advocate of animal rights and wishes to promote it further across the world in the future.
I spent most of my childhood in Turkey until middle school years, when we moved to Washington D.C.. It was the first time that I was truly in an international environment on my own. Being in D.C., I had the opportunity to experience a wide range of international events, which gave me a decent idea of what the world beyond the horizon was like to a certain degree at that age. A perk of being in D.C. was that not only were you being introduced to other cultures but also to the problems of the world.
Soon after coming back to Turkey, I joined my schools Model United Nations (MUN) Club and became the president in a short time. Coming up with solutions to some of the most prominent problems in the world with people bearing the same motivation as each other was great and got me even more interested in reaching a point in life where I would be able to tackle such problems with hopefully material outcomes.
During my bachelor studies I had the opportunity to study in Turkey, U.S., Germany and Hong Kong. Focusing my studies mainly on economics, I saw how differently each system viewed the concept of economics to be. I must also point out that my time in Hong Kong was perhaps the most influential on me. It was the first time that I had a mentor and the first place where I became a member of a professional institute. It was also one of the best cities in the world to strengthen my financial knowledge and skills, being the International Finance Center Hong Kong is.
There are countless other major events in my life that have contributed to me being where I am today but let's leave those for another interview.
A: With our civilization expanding at an exponential rate, so are our problems. They're not without their solutions though. Given all of the news we see on the media, I'm still relatively positive regarding the future of our world. Everyday innovative and progressive leaders are emerging and transforming the industries they come from. The number of such people is increasing by the day. The focus being given to the youth is also rising. It is enabling us to shape the future we want to live in.
My concept of a better world involves the humankind understanding that we all live on the same earth and share the same lands. For our shortcomings in life we seem to be happy with just blaming the next person in line. This will change once we realize that in order to improve the way of life of not just ourselves but of those around us and of those that will come after us, we have join hands and take on these problems together and be willing to take the full-responsibility for it. It is only after then that we will truly reach a new and more harmonious era.
A: In a global sense, I believe that lack of education and rising inequality pose the greatest challenges. The lack of knowledge/education in many of the societies is being exploited by people who knows of those absences. Many of the problems that we see on the news headlines today are a result of this. Growing populist and separatist movements that are pointing fingers at other societies as the cause of their own troubles is just another one of the consequences.
Rising income inequality may not seem like a new topic but once we look at the figures, it is undoubtedly developing into one of the biggest issues we will face. Not only is it a problem on its own but income inequality also brings several other problems with itself, including lack of healthcare, education, safety, housing and many others. It also usually leads the decision-makers within a country to take even more controversial steps towards dealing with the problem.
Even though the lack of education may be somewhat softened in effect by the increasing usage of internet, the income inequality will be harder to resolve. It will involve dealing with ineffective bureaucratic practices and challenging the status-quo developed by the system over time.
A: The education that we are given in a modern sense does not fit into the traditional way of thinking present in many of the organizations. Our current generation tends to learn by exploring and experiencing. The past 4 years of my life has been anything but ordinary. I learned not just about the life in other countries but also of the knowledge they had accumulated within their universities. In a couple of situations when I was discussing with senior colleagues, I had some possible solutions to a couple of problems, that were based on practices I saw abroad and sadly my ideas were not paid much attention to due to my junior status. I'm still optimistic regarding the future though. This is just a phase that we have to go through and I just have to remind myself to not do the same mistakes that those before me have made.
A: A mentor is someone who has already walked the path that you want to take. The guidance that they can provide you is invaluable as it can save precious time and energy.
A: Curiosity along with confidence goes a long way.
A: Animal Rescue Association in Ankara, Turkey is doing invaluable work by treating and rescuing animals in need. They're a small and dynamic community that is helping out over 400 animals at their shelter. A large percentage of the animals that are being treated and housed are severely injured and/or elderly animals that are not fit to living outside on their own. The Association is also defending the animals constitutional rights in the public.
Q: What are some of the challenges that women in your country face and what efforts are made towards gender equality?
A: Sadly, there is still violence against women present. Along with that, the employment and wage gaps in Turkey are major problems that women are faced with. There are a number of NGO's focused on this issue that are gaining power within the country, however, there is still a lot of way to go into fixing these problems.
Q: Athena40 is the first ever global selection of the top 40 women forward thinkers, commentators, activists, authors, academics, entrepreneurs, executives, innovators. Can you think of a truly innovative and forward-thinking woman from your country that you wish to nominate for the Athena40 global list?
A: Zekiye Koklu - President of the Animal Rescue Association
A: "Optimism is the faith that leads to achievement. Nothing can be done without hope and confidence."
-Helen Keller
"I have not failed. I have just found 10,000 ways that won't work."
-Thomas A. Edison
A: The concept of sustainability is not just a theory but a material fact. We, as the new generation have the power to steer this train in the right direction.


As a follow-up of sorts to last year's extensive "Just Do It" collection, the Swoosh is turning to another signature catchphrase for 2019 by way of its cheeky "Have A Nike Day" slogan. Anchored by time-tested Beaverton favorites the likes of the Air Max 1, the Air Max 95, the Air Max 97, and more, we also see efforts from the much newer Air Max 270 and the resurgent Air More Money. With an emphasis being placed on full-family participation, there will be releases in sizing for men as well as both big kids and little kids. With vintage-inspired color blocking serving as this capsule's focal point, an array of hues are featured throughout, including Indigo Storm, Hyper Jade, Bleached Coral, and much, much more. One final element featured prominently throughout this entire series is a Nike swoosh smiley face logo that was both the hero of this Beaverton marketing campaign as well as part of Sean Wotherspoon's iconic Air Max 1/97 hybrid from 2018. With pairs expected to release the world over on March 1st, enjoy a detailed look at the many offerings below and stay tuned for updates and additions as their release date approaches.


…And then someone shows you how to use a paper towel.
It seems silly, but Joe brings up a great point- how many paper towels do your dainty little hands really need to be dried? For that matter, how many napkins will you really need at the restaurant? How about the useless plastic of straws? There are so many little everyday things that we use that really make an impact!
It's that time again… Tennessee American and TenneSEA!


text:
Home Breaking LG taps AI lab chief
LG taps AI lab chief
Hillary Lee
Darin Graham, new chief of LG AI lab in Toronto
Korean tech giant hires Darin Graham
LG Electronics strives to beef up its competitiveness in artificial intelligence (AI) through recruiting a globally-renowned expert in the highly-prominent segment.
The Seoul-based company said May 29 that it tapped Darin Graham as the chief of its AI research center located in Toronto, Canada.
Graham, a founding member of the Vector Institute of AI in Canada, is a top-tier researcher in artificial neural networks.
LG Electronics set up the Toronto AI lab midway through last year in order to carry out various AI-related projects together with the University of Toronto, the hotbed of AI study.
The university is famous for Geoffrey Hinton, who revolutionized AI research through advanced deep learning technology. He is called the godfather of deep learning.
The winner of the 2018 Turing Prize is regarded as one of the four most authoritative AI experts along with Yann LeCun, Andrew Ng, and Ray Kurzweil.
LG said that Graham's extensive connections with Canada's academic and business communities will help improve research capabilities of its Toronto lab.
The info-tech giant strives to take advantage of AI technologies to raise the competitive edge of its products in such areas as robotics, home appliances, and energy control business.
For example, LG announced this month that it has developed its own AI chip to better imitate the neural network of the human brain, which is necessary to improve the processing of deep learning algorithms.
Back then, the company said that the AI chip's powerful image processing function corrects distortion caused by wide-angle lenses and generates brighter and clear images in dark environments.
It expected that the new chip will be used for such products as robot vacuum cleaners, washing machines, refrigerators, and air conditioners.
LG develops own AI chip
Darin Graham
Hillary Lee studied literature in Seoul. Lee has big interests on various topics including IT, BT, business and finance. Lee can be reached at homin30@hanmail.net or 82-2-6956-6698.

redpajama_set_name: RedPajamaCommonCrawl


text:
Love the 1700's – Meet Regan Walker (and a giveaway)
Regan Walker is an award-winning, bestselling author of Regency, Georgian and Medieval romances. Her stories often feature a demanding sovereign who taps his subjects for special assignments. Each of her novels includes real history and real historical figures as characters. And, of course, adventure and love, sometimes on the high seas!
Beverley: Which genre or genres do you write or prefer to write? And why?
Regan: I write what I love to read: historical romance. I love getting lost in the past with a compelling story set deep in history. I'm a reviewer, too, so I read in many subgenres. Historical Romance Review is my blog: https://reganromancereview.blogspot.com/
Beverley: Who influenced you the most in deciding to become a writer?
Regan: I have been a writer since grade school. I don't think anyone influenced me; it was just something I did. But I did not begin to write historical fiction and historical romance until my law career ended. It began as a hobby and became a passion.
Beverley: What gets your creative juices flowing?
Regan: Research into the past… especially when I discover some juicy historical fact that brings a character to life. In my research for A Fierce Wind , when I learned one of the generals of the Revolution was a man who did not feel constrained by the bounds of morality and, moreover, was viewed by his men as incompetent, well, that allowed me to paint a picture the readers would grasp instantly.
Beverley: Do you have a favorite cartoon character? Why?
Regan: Beatrix Potter's Peter Rabbit appeals. He's an adventuring sort and I like that. I also like that the animation is beautifully done.
Beverley: Who would you love most to meet 'in person' and why?
Regan: I think it might be Queen Margaret of Scotland, the wife of Malcolm III. She's a character in my novel Rebel Warrior (and The Refuge ). I did so much research on her I feel I know her. My research revealed a wise, gracious and beautiful woman who gave up her dream to embrace another for the benefit of Scotland and that sacrifice was to have positive effects for centuries.
Beverley: If you had an unexpected free day what would you do with it?
Regan: I would spend it with a friend, beginning with breakfast out at a beachside restaurant. Then perhaps a bit of shopping, a movie and an elegant dinner. Being with someone you like and with whom you share common interests is a delight.
Beverley: What are you working on now?
Regan: I'm just beginning the research for Rogue's Holiday , book 5 in the Agents of the Crown series. It's a Regency set in 1820 that beginning with the Cato Street Conspiracy that could have wiped out the British cabinet but the plot was foiled before it reached fruition. And then the story will go to Brighton, the pleasure palace of the new King George IV, where Sir Robert Powell will meet his nemesis, Miss Chastity Reynolds.
Blurb for A Fierce Wind
A n exciting story of love in the time of revolution when loyalties are torn and love is tested and when the boy Zoé Donet knew as a child turns out to be the man of her dreams.
Love in the time of revolution
Zoé Ariane Donet was in love with love until she met the commander of the royalist army f ighting the revolutionaries tearing apart France. When the dashing young general is killed, she joins the royalist cause, rescuing émigrés fleeing France.
One man watches over her: Frederick West, the brother of an English earl, who has known Zoé since she was a precocious ten-year-old child. At sixteen, she promised great beauty, the flower of French womanhood about to bloom. Now, four years later, as Robespierre's Terror seizes France by the throat, Zoé has become a beautiful temptress Freddie vows to protect with his life.
But English spies don't live long in revolutionary France.
Excerpt for A Fierce Wind – Freddie goes after Zoe in Granville
Freddie paced the deck, glancing toward shore, wishing the fog would miraculously part to reveal the skiff he awaited. He had tried to convince Zoé of the foolhardy nature of her excursions into the ports to gather the refugees like a mother hen gathers her chicks. Stubborn as always and determined to save as many as she could, she would hear none of it. While he could admire her courage, he feared for her safety.
Standing amidships, Bequel nervously chewed on a bit of broom straw, bespeaking his unease at the vulnerable state of the ship idling in Granville's harbor for so long.
The crew, silently going about their tasks, kept glancing toward shore.
Except for the occasional band of drunken men, loud in their goodbyes as they left the taverns, silence reigned on the quay some fifty yards away.
Freddie's anxiety reached a crescendo. "She should have returned by now. Something must have gone wrong." He faced Bequel. "Spare me a few of the crew. I'm going after her."
That the quartermaster motioned two of the crew forward and ordered them to lower the boat and take Freddie ashore betrayed his worry for the capitaine 's niece.
Moments later, the rowing boat moved silently through the fog-shrouded waters. Freddie's stomach churned, his eyes fixed on the wharf emerging from the dense mist.
What could have happened to her?
Buy links for A Fierce Wind:
US: htt ps://www.amazon.com/dp/B07FYPFVRL
UK: https://www.amazon.co.uk/dp/B07FYPFVRL
Canada: https://www.amazon.ca/dp/B07FYPFVRL
You can find Regan at:
Author website: http://www.reganwalkerauthor.com/
Facebook: https://www.facebook.com/regan.walker.104
Regan Walker's Readers on Facebook: https://www.facebook.com/groups/ReganWalkersReaders/
Pinterest (storyboards for my books): https://www.pinterest.com/reganwalker123/
Twitter: https://twitter.com/RegansReview
Regan's blog, Historical Romance Review: https://reganromancereview.blogspot.com/
Amazon link for the Donet Trilogy: https://www.amazon.com/gp/bookseries/B071JPXTT5/
Regan is happy to offer a giveaway of the ebook of To Tame the Wind, book 1 in the Donet Trilogy (A Fierce Wind is book 3). It has won multiple awards. You can see To Tame the Wind here: http://www.reganwalkerauthor.com/to-tame-the-wind.html .


text:
RapidAIM
Live microbiomes
Precision Microbiome Therapeutics and
Modulating the production of specific metabolites by the gut microbiome to improve human health.
About MedBiome
MedBiome develops Precision Microbiome Therapeutics and Precision Microbiome Nutrition products that modulate the production of specific metabolites produced by the human gut microbiome. Changes in the levels of specific metabolites affect both wellness and disease and the ability to modulate the levels of such metabolites will enable the treatment of multiple diseases such as IBD, CKD, AD and CRC.
Each microbiome is unique, and individuals may respond differently to treatment. Therefore, we believe that personalized, or precision therapeutics and nutritional products represent the most attractive approach to product development.
MedBiome's core technology, called RapidAIM, enables the ex vivo discovery and characterization of therapeutic or nutritional products that modulate individual, live microbiomes. RapidAIM provides unprecedented insight into the metabolism of the microbiome. This insight enables the discovery of compounds that target the production of specific metabolites by the human microbiome. RapidAIM can therefore be used to:
Discover novel drugs, biologics, and nutritional products that act through the microbiome.
Characterize and de-risk existing products and compounds.
Stratify patients based on their microbiome responses.
Determine how drugs affect the microbiome.
Determine how the microbiome affects drugs.
Fully investigate both the function and the composition of the microbiome.
MedBiome is using RapidAIM to discover and develop Precision Microbiome Therapeutics and Precision Microbiome nutrition products that target the human microbiome to modulate the production of specific metabolites, metabolic pathways and enzymes.
MedBiome is developing compounds that target the human microbiome in four disease areas, all with significant unmet medical needs. These include:
Inflammatory Bowel Disease (IBD).
Early-stage Alzheimer's Disease (AD).
Chronic Kidney Disease (CKD).
Colorectal Cancer (CRC).
Our mission is to improve human health via modulation of the microbiome.
There is a strong relationship between the human gut microbiota and human health. The human gut microbiome produces metabolites involved in health and disease. Understanding how drugs affect the production of metabolites by the gut microbiome will transform how we conduct drug development and will lead to the development of Precision Microbiome Therapeutics.
Daniel Figeys, Ph.D.
dfigeys@medbiome.ca
Daniel Figeys, Ph.D. is Director and a Professor in the School of Pharmaceutical Sciences at the University of Ottawa. He is a Distinguished Research Chair in Proteomics and Systems Biology. He was the founding Director of the Ottawa Institute of Systems Biology and directed the institute for 10 years. Prior to joining the University of Ottawa, Daniel was Senior Vice President Systems biology and Lead Profiling at MDS-Proteomics, a privately held company. Daniel obtained a B.Sc. and a M.Sc. in chemistry from the Université de Montréal. He obtained a Ph.D. in chemistry from the University of Alberta and did his postdoctoral studies at the University of Washington. His laboratory has published over 200 articles and has been cited over 19,000 times.
Shane Climie, Ph.D.
vp, BUSINESS DEVELOPMENT
sclimie@medbiome.ca
Shane Climie, Ph.D. is a Principal with Popper and Company, which is focused on building life science organizations by meeting the needs of entrepreneurial, life science startups and the investors that support those early stage organizations. He is also President of Shane Climie & Associates which is focused on the provision of consulting services to life science companies. Dr. Climie is also Vice President of Business Development at MedBiome Inc. where he is responsible for corporate development, strategy and partnering. Dr. Climie also serves as Vice President of Corporate Development at Cyclica Inc. where he supports company growth by managing corporate relationships and strategic planning. Dr. Climie has more than 25 years of R&D and business development experience in the life sciences and pharmaceutical industry. He has led research teams involved in all aspects of drug discovery and technology development, and has designed, negotiated and managed many R&D collaborations. He has extensive experience in technology evaluation, technology development and strategic planning. Dr. Climie has been a Principal at Popper and Company for 13 years where he has provided interim executive management services to early-stage biotechnology companies in the areas of diagnostics and drug discovery / drug development as well as support in the areas of business management, marketing strategy and technology or opportunity assessment. Prior to his current appointments, Dr. Climie held several positions at Protana (formerly MDS Proteomics) including Senior Vice President of Science Strategy and Business Development, Senior Vice President of Research Collaborations, and Vice President of Proteomics and Business Development. Dr. Climie was also co-founder, Vice President and Chief Technology Officer of MDS Ocata and was a Visiting Research Scientist at the Samuel Lunenfeld Research Institute. Prior to that, Dr. Climie held several managerial positions at Allelix Biopharmaceuticals, Inc. including Principal Scientist. Dr. Climie completed postdoctoral work at the University of California at San Francisco and received a Ph.D. in Medical Biophysics from the University of Toronto.
Alain Stintzi, Ph.D.
Co-founder & CSO
astintzi@medbiome.ca
Professor and Vice Dean, University of Ottawa
Alain Stintzi, Ph.D. is a professor with the Department of Biochemistry, Microbiology and Immunology, a member of the Ottawa Institute of Systems Biology, and Vice-Dean of Graduate and Postdoctoral Studies at the Faculty of Medicine, University of Ottawa. Dr. Stintzi obtained his Ph.D. in Molecular and Cellular Biology at the Louis-Pasteur University, France (1997). He was subsequently a Postdoctoral fellow at the Department of Chemistry, University of California at Berkeley. In 2000, he was appointed Assistant Professor at the Department of Veterinary Pathobiology, Oklahoma State University. Dr. Stintzi has considerable experience in systems biology approaches to study the role of the gut microbiota in infectious and chronic diseases. Dr. Stintzi has published over 110 articles and book chapters and has contributed to more than 150 scientific and educational conferences.
David Mack, M.D. FRCPC
Professor, Department of Pediatrics, University of Ottawa
Director, CHEO Inflammatory Bowel Disease Centre
Division of Gastroenterology, Hepatology & Nutrition, Children's Hospital of Eastern Ontario(CHEO)
Dr. Mack is currently a Professor with the Department of Pediatrics in the Faculty of Medicine, at the University of Ottawa; Director of the Children's Hospital of Eastern Ontario (CHEO) Inflammatory Bowel Disease Centre. He is the Pediatric Lead of the Clinical Affairs Committee of the Canadian Association of Gastroenterology and currently Deputy-Chair of the Canadian Children Inflammatory Bowel Disease Network. Dr. Mack obtained his medical degree from the University of Toronto in 1983. He was appointed to faculty at the University of Nebraska School of Medicine in the United States in 1991. Dr. Mack completed his Pediatric Residency training at CHEO, and Residency training and Pediatric Gastroenterology Fellowship at the Hospital for Sick Kids in Toronto. His research Interests include pediatric Inflammatory Bowel Disease and the intestinal microbiome in pediatric Crohn's disease and ulcerative colitis.
Copyright © 2022 | Powered by WordPress | AgencyWP theme by ThemeArile


Looking for a lighter meal in Newark, why not order a wrap for delivery from HungryHens? These Delaware restaurants make amazing wraps that are full of flavor but won't weigh you down. Check out their hours, menus, and coupons before you order online for delivery or takeout.
House Salad Wrap only $8.99!
Chipotle Chicken Sandwich or Wrap for $8.49!
Veggie Wrap & Fries for $7.49!
Chicken Bacon Ranch Wrap only $8!


Wellness and movement go together. For us it is also true.
Check out the history of our hotel. Check out our gallery of archival images.
Gallery of our enjoyment of celebrations and other social events with great food.
Wellness stays and accommodation in the town Piešťany in Sandro Pavillon hotel.
See our luxury and what we are waiting for you.
Gallery of our conference rooms.
Look at our photos celebrities. We think they will certainly know.


text:
Google Maps shows how Hull has changed in 10 years - and it may shock you
It might surprise you
These pictures show how much Hull has changed in recent years.
Using Google Street View, we have been able to look at a number of busy locations in Hull and see how much they have altered.
Some may not have changed much at all, others have been spruced up and seen businesses come and go in that time.
Kingswood (Image: Google Street View)
Here, as shown in the video above, we are able to see:
Holderness Road in 2010 and 2017
Jameson Street in 2008 and 2017
Whitefriargate in 2008 and 2017
Kingswood in 2008 and 2017
Spring Bank in 2008 and 2017
Anlaby Road in 2012 and 2017
Beverley Road in 2008 and 2017
You will love these brilliant Hull Mecca bingo pictures from the Nineties
Do you have any old pictures of Hull over the years? If so, we could love to see them. Email sophie.kitching@trinitymirror.com
The Hull Daily Mail has recently launched a free app which features all the latest news, sport and what's on information. You can download it for iPhone and iPad from Apple's App Store, or get the Android version from Google Play.
Things to do Hull
Hull City Centre
Hull City Council


I have always been fascinated by scales of production in industry, by the world we live in where so much can be made and moved around so quickly and efficiently.
The concrete structures in this series represent large scale, fast construction methods themselves while also serving as containers for industrial production.
They appear frequently in our landscape and continue to multiply. They are bland, functional, non-descript; but to me they have a strange kind of beauty, repeatedly materialising around me as I pass through outer suburbs, usually on my way to somewhere else. So instead of driving by I have made them my destination, making a photographic study of their simple, austere shapes and rough textures.
The stark geometric outlines and solid bulk of these buildings have driven me to further abstraction. By overlaying photographs of these mundane yet compelling structures I have worked to build compositions that have an architecture of their own. The finished images are highly designed with the placement of every line and angle being considered at length and manipulated in an effort to achieve relational concord.


As I sit down to write this I note the time is 11.11am. For those of you who have an interest in numerology you will be aware of the significance of these numbers. The rest of you will just be thinking it is almost lunchtime.
This morning, during a rare period of 'down time' I took some time to sit in the garden and contemplate some emotional changes that have been occurring over the last few days. I was aware that big energetic changes were at play, and as usual, my physical and emotional dimensions were struggling to keep up. An intense headache and rising anxiety levels signalled that it was time to analyse these changes at closer range.
My dog, of course, was with me. No matter what the issue, animals always have a starring role in my blogs! Douglas is a cheeky Border Collie who is nine months old. He is a wise soul but is still trying to find his purpose in this lifetime. As we sat I begin to contemplate where I am currently in my life versus where I need to be, or more significantly, where I 'feel' I need to be. As thoughts came and went I began to notice that Douglas was starting to chew on the cushion next to me. I told him off and he sulked off somewhere. He returned a short time later with one of my shoes and proceeded to chew the laces – right in front of me! He got a firm telling off this time and was strongly encouraged to go and lie in his bed and keep out of trouble.
As I settled back down with my thoughts I decided to check in on what I had been feeling just before Douglas started to misbehave. I was aware that my anxiety levels had risen and I had begun to feel overwhelmed emotionally. It was then I realised that my mind had shifted from contemplating my emotions to simply overthinking them.
When we take time to contemplate our emotions and our state of being or situation, we do so without judgement. We have no preconceived notion of how things are supposed to be or what the end goal needs to look like. We merely observe, almost as an outsider, our feelings and points of view. There is no right or wrong, merely observation and acknowledgement of where we are currently in life. If we are not careful however, contemplation can quickly move to intense overthinking.
Overthinking, I liken to circling thoughts that go around and around creating feeling of negativity, regret and hopelessness. When we overthink things we are signalling to our brain to find a solution to the emotional mess. We seek order, clarity and a clear way forward. It becomes almost as though our survival is dependant on finding a solution to the problems we have. Of course there is no solution, or at least no one single solution. The reality is that there are any number of solutions available depending on what choices we make next.
What does this have to do with Douglas? Well, I noticed that when I was merely contemplating and being an observer of my thoughts, he was calm and enjoyed sleeping beside me. As soon as my thoughts took over and I began overthinking, my stress levels increased and he immediately responded by getting into mischief and chewing things around me. He had responded to the shift in my intention from a place of calm, observation, to one of judgement and frustration that no solution was presenting itself. When we shift our intentions like this we quickly lose gratitude for the simple pleasures we have in our lives right now, and instead focus on what we don't have. I like to think Douglas was reminding me that I was taking for granted the good things in my life currently, and how I forget how important the little things are.
Instead of telling him off, I thanked him for his valuable yet annoying contribution to my contemplation time and I decided to check in with some of my oracle cards to help focus my intentions. The card representing 'worthiness' came up. This is always an ongoing lesson for me, so I took note and began a simple meditation to clear any feeling I had around being 'unworthy' and 'not good enough'. I was soon interrupted by Douglas dragging my new pot plant from inside, out through the dog door and into the garden! The fact it was that particular pot plant was hugely significant.
I have a friend who has a real passion for plants. Bordering on obsessive, she loves plants of all shapes and sizes. Plants make her happy and it is constant source of my amusement to see how crazy she is over nurturing her plant collection. Anyway, a few weeks ago I took a leaf (no pun intended) out of her book and bought myself a pot plant for indoors. It was a lovely looking plant and although I appreciated what it added to my home, I didn't feel the connection she does with her plants, so ultimately I was a bit disappointed. Was there something wrong with me, or was the plant just not special enough? Lots of overthinking went on here I think you can gather.
After Douglas had massacred the plant I tried to think what energy Douglas had been responding to. It then became really apparent to me. I didn't love my plant the way my friend loved hers, so every time I glanced at it or walked past it, I felt unworthy of it. I didn't feel as strongly about the plant as I thought I would, so I had somehow begun to blame myself for this and felt 'not good enough' and 'undeserving' of the plant. By destroying the plant I like to think Douglas was actually just destroying the negative energy I had attached to it based on my negative self belief.
When you feel unworthy within yourself, you attach it to anything and everything, and as you walk through the world you see signs over and over that confirm in your mind that you are unworthy and not good enough. Without true self worth you will not only never feel worthy of what you have, you will never value the things that are truely important.
Douglas taught me today that I must always observe and analyse my emotions objectively without attachment and judgement. He also taught me I should not assess my worthiness based on what others truly value in the world. Everyone loves and shines in their own way. Thank you Douglas you cheeky pup!


text:
Q: stats.js shows FPS 0~2, render movement too slow i'm beginner for three.js also using it for BIM project,
when i load a gltf file of ~25mb i can barely move the whole object and stats.js monitor shows fps of 0~2 at max
gltf file : https://github.com/xeolabs/xeogl/tree/master/examples/models/gltf/schependomlaan
im using THREE js with vuejs
//package.json
"stats.js": "^0.17.0",
"three": "^0.109.0",

import * as THREE from 'three';
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader.js';
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';

this.scene = new THREE.Scene();

this.stats = new Stats();
this.stats.showPanel( 0, 1, 2 ); // 0: fps, 1: ms, 2: mb, 3+: custom
let div = document.createElement('div')
div.appendChild(this.stats.dom)

div.style.position = 'absolute';
div.style.top = 0;
div.style.left = 0;
document.getElementsByClassName('gltfViewer')[0].appendChild( div );
// Camera
this.camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 1500 );
this.camera.position.set( this.pos, this.pos, this.pos );
// renderer
this.raycaster = new THREE.Raycaster();
this.renderer = new THREE.WebGLRenderer({ canvas: document.getElementById('gltfViewerCanvas'), alpha: false });
this.renderer.setClearColor( 0xefefef );
this.renderer.setPixelRatio( window.devicePixelRatio );
this.renderer.setSize(window.innerWidth, window.innerHeight);
// adding controls

this.controls = new OrbitControls( this.camera, this.renderer.domElement );
this.controls.dampingFactor = 0.1;
this.controls.rotateSpeed = 0.12;
this.controls.enableDamping = true;
this.controls.update();

window.addEventListener('resize', _ => this.render());
this.controls.addEventListener('change', _ => this.render());

// light
var ambientLight = new THREE.AmbientLight( 0xcccccc );
this.scene.add( ambientLight );

var directionalLight = new THREE.DirectionalLight( 0xffffff );
directionalLight.position.set( 0, 1, 1 ).normalize();
this.scene.add( directionalLight );
// loading gltf file

// Instantiate a loader
this.gltfLoader = new GLTFLoader();

// Optional: Provide a DRACOLoader instance to decode compressed mesh data
this.dracoLoader = new DRACOLoader();
this.dracoLoader.setDecoderPath( 'three/examples/js/libs/draco' );
this.gltfLoader.setDRACOLoader( this.dracoLoader );

// Load a glTF resource
this.gltfLoader.load( this.src, this.onGLTFLoaded, this.onGLTFLoading, this.onGLTFLoadingError );
//onGLTFLoaded()
this.scene.add( optimizedGltf.scene );
// gltf.scene.getObjectById(404).visible = false;
this.listGltfObjects(gltf);

this.render();
// render ()

this.renderer.render( this.scene, this.camera );
this.stats.update();
// on mounted component :
animate()
// animate()
this.stats.begin()
this.render();
this.stats.end();

even after applying Draco compression using https://github.com/AnalyticalGraphicsInc/gltf-pipeline nothing changes.
Thanks

A: On filesize —
Draco compression reduces network size, but not the final amount of uncompressed data that must be sent to your GPU and rendered. If your original mesh was 100mb and you compress it to 25mb, you will still get the framerate of the original 100mb mesh. Aside: Using the -b option of glTF-Pipeline will reduce the size by another 50%, to 13MB, but again doesn't affect FPS.
On framerate —
This model contains 4280 meshes1, each requiring a GPU draw call. That is the source of your low QPS, and unfortunately it's a common problem in BIM models. You'll need to merge these meshes (in a program like Blender, or after loading in three.js) to as few as possible. A model like this should require < 100 draw calls, or even as few as 1.
1 To see this, try opening the model on https://gltf-viewer.donmccurdy.com/ and opening the JavaScript console. You should see a printout of the scene graph, which will contain many different meshes.

redpajama_set_name: RedPajamaStackExchange


text:
package com.netflix.zuul.scriptManager;

import com.netflix.config.DynamicBooleanProperty;
import com.netflix.config.DynamicPropertyFactory;
import com.netflix.config.DynamicStringProperty;
import com.netflix.zuul.constants.ZuulConstants;
import com.netflix.zuul.filters.FilterType;
import com.netflix.zuul.util.JsonUtility;
import net.jcip.annotations.ThreadSafe;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.*;

import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.*;

/**
 * Servlet for uploading/downloading/managing scripts.
 *

 *

 *
Upload scripts to the registry for a given endpoint.

 *
Download scripts from the registry

 *
List all revisions of scripts for a given endpoint.

 *
Mark a particular script revision as active for production.

 *

 */
@ThreadSafe
public class FilterScriptManagerServlet extends HttpServlet {

    public static final DynamicBooleanProperty adminEnabled = DynamicPropertyFactory.getInstance().getBooleanProperty(ZuulConstants.ZUUL_FILTER_ADMIN_ENABLED, true);
    public static final DynamicStringProperty redirectPath = new DynamicStringProperty(ZuulConstants.ZUUL_FILTER_ADMIN_REDIRECT, "filterLoader.jsp");

    private static final long serialVersionUID = -1L;
    private static final Logger logger = LoggerFactory.getLogger(FilterScriptManagerServlet.class);

    /* actions that we permit as an immutable Set */
    private static final Set<String> VALID_GET_ACTIONS = Collections.unmodifiableSet(new HashSet<String>(Arrays.asList(new String[]{"LIST", "DOWNLOAD"})));
    private static final Set<String> VALID_PUT_ACTIONS = Collections.unmodifiableSet(new HashSet<String>(Arrays.asList(new String[]{"UPLOAD", "ACTIVATE", "DEACTIVATE", "RUN", "CANARY"})));

    /* DAO for performing CRUD operations with scripts */
    private static ZuulFilterDAO scriptDAO;

    public static void setScriptDAO(ZuulFilterDAO scriptDAO) {
        FilterScriptManagerServlet.scriptDAO = scriptDAO;
    }

    /**
     * Default constructor that instantiates default dependencies (ie. the ones that are functional as opposed to those for testing).
     */
    public FilterScriptManagerServlet() {
        super();
        if (scriptDAO == null) scriptDAO = new ZuulFilterDAOCassandra(ZuulFilterDAOCassandra.getCassKeyspace());

    }

    /**
     * Construct with dependency injection for unit-testing (will never be invoked in production since servlets can't have constructors)
     *
     * @param sd
     */
    private FilterScriptManagerServlet(ZuulFilterDAO sd) {
        super();
        scriptDAO = sd;
    }

    /**
     * GET a script or list of scripts.
     *

     * Action: LIST
     *

     * Description: List of all script revisions for the given endpoint URI or list all endpoints if endpoint URI not given.
     *

     *
Request Parameter "endpoint": URI

     *

     *

     * Action: DOWNLOAD
     *

     * Description: Download the text or zip file of scripts for a given endpoint URI + revision.
     *

     *
Request Parameter "endpoint": URI

     *
Request Parameter "revision": int of revision to download

     *

     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // retrieve arguments and validate
        String action = request.getParameter("action");
        /* validate the action and method */
        if (!isValidAction(request, response)) {
            return;
        }

        // perform action
        if ("LIST".equals(action)) {
            handleListAction(request, response);
        } else if ("DOWNLOAD".equals(action)) {
            handleDownloadAction(request, response);
        }
    }

    /**
     * PUT a script
     *

     * Action: UPLOAD
     *

     * Description: Upload a new script text or zip file for a given endpoint URI.
     *

     *
Request Parameter "endpoint": URI

     *
Request Parameter "userAuthenticationRequired": true/false

     *
POST Body: text or zip file with multiple text files

     *

     *

     * Action: ACTIVATE
     *

     * Description: Activate a script to become the default to execute for a given endpoint URI + revision.
     *

     *
Request Parameter "endpoint": URI

     *
Request Parameter "revision": int of revision to activate

     *

     */
    @Override
    protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        if (!adminEnabled.get()) {
            response.sendError(HttpServletResponse.SC_FORBIDDEN, "Filter admin is disabled. See the zuul.filters.admin.enabled FastProperty.");
            return;
        }

        // retrieve arguments and validate
        String action = request.getParameter("action");
        /* validate the action and method */
        if (!isValidAction(request, response)) {
            return;
        }

        // perform action
        if ("UPLOAD".equals(action)) {
            handleUploadAction(request, response);
        } else if ("ACTIVATE".equals(action)) {
            handleActivateAction(request, response);
        } else if ("CANARY".equals(action)) {
            handleCanaryAction(request, response);
        } else if ("DEACTIVATE".equals(action)) {
            handledeActivateAction(request, response);
        }

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPut(request, response);
    }

    @Override
    protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        setUsageError(405, response);
        return;
    }

    @SuppressWarnings("unchecked")
    private void handleListAction(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String filter_id = request.getParameter("filter_id");
        if (filter_id == null) {
            // get list of all endpoints
            List<String> filterIDs = scriptDAO.getAllFilterIDs();
            Map<String, Object> json = new LinkedHashMap<String, Object>();
            json.put("filters", filterIDs);
            response.getWriter().write(JsonUtility.jsonFromMap(json));
        } else {
            List<FilterInfo> scripts;
            if (Boolean.parseBoolean(request.getParameter("active"))) {
                // get list of all scripts for this endpoint
                FilterInfo activeEndpoint = scriptDAO.getActiveFilterInfoForFilter(filter_id);
                scripts = activeEndpoint == null ? Collections.EMPTY_LIST : Collections.singletonList(activeEndpoint);
            } else {
                // get list of all scripts for this endpoint
                scripts = scriptDAO.getZuulFiltersForFilterId(filter_id);
            }
            if (scripts.size() == 0) {
                setUsageError(404, "ERROR: No scripts found for endpoint: " + filter_id, response);
            } else {
                // output JSON
                Map<String, Object> json = new LinkedHashMap<String, Object>();
                json.put("filter_id", filter_id);
                List<Map<String, Object>> scriptsJson = new ArrayList<Map<String, Object>>();
                for (FilterInfo script : scripts) {
                    Map<String, Object> scriptJson = createEndpointScriptJSON(script);
                    scriptsJson.add(scriptJson);
                }

                json.put("filters", scriptsJson);
                response.getWriter().write(JsonUtility.jsonFromMap(json));
            }
        }
    }

    private void handleDownloadAction(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String filter_id = request.getParameter("filter_id");
        if (filter_id == null) {
            // return error, endpoint is required
            setUsageError(404, "ERROR: No endpoint defined.", response);
        } else {
            String revision = request.getParameter("revision");
            FilterInfo script = null;
            if (revision == null) {
                // get latest
                script = scriptDAO.getLatestFilterInfoForFilter(filter_id);
            } else {
                int revisionNumber = -1;
                try {
                    revisionNumber = Integer.parseInt(revision);
                } catch (Exception e) {
                    setUsageError(400, "ERROR: revision must be an integer.", response);
                    return;
                }
                // get the specific revision
                script = scriptDAO.getFilterInfoForFilter(filter_id, revisionNumber);
            }

            // now output script
            if (script == null) {
                setUsageError(404, "ERROR: No scripts found.", response);
            } else {
                if (script.getFilterCode() == null) {
                    // this shouldn't occur but I want to handle it if it does
                    logger.error("Found FilterInfo object without scripts. Length==0. Request: " + request.getPathInfo());
                    setUsageError(500, "ERROR: script files not found", response);
                } else {
                    // output the single script
                    response.setContentType("text/plain");
                    response.getWriter().write(script.getFilterCode());
                }
            }
        }
    }

    private void handleCanaryAction(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String filter_id = request.getParameter("filter_id");
        if (filter_id == null) {
            // return error, endpoint is required
            setUsageError(404, "ERROR: No endpoint defined.", response);
        } else {
            String revision = request.getParameter("revision");
            if (revision == null) {
                setUsageError(404, "ERROR: No revision defined.", response);
            } else {
                int revisionNumber = -1;
                try {
                    revisionNumber = Integer.parseInt(revision);
                } catch (Exception e) {
                    setUsageError(400, "ERROR: revision must be an integer.", response);
                    return;
                }
                scriptDAO.setCanaryFilter(filter_id, revisionNumber);
                response.sendRedirect(redirectPath.get());
            }
        }
    }

    private void handledeActivateAction(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String filter_id = request.getParameter("filter_id");
        if (filter_id == null) {
            // return error, endpoint is required
            setUsageError(404, "ERROR: No endpoint defined.", response);
        } else {
            String revision = request.getParameter("revision");
            if (revision == null) {
                setUsageError(404, "ERROR: No revision defined.", response);
            } else {
                int revisionNumber = -1;
                try {
                    revisionNumber = Integer.parseInt(revision);
                } catch (Exception e) {
                    setUsageError(400, "ERROR: revision must be an integer.", response);
                    return;
                }
                try {
                    scriptDAO.deActivateFilter(filter_id, revisionNumber);
                } catch (Exception e) {
                    setUsageError(400, "ERROR: " + e.getMessage(), response);
                    return;
                }
                response.sendRedirect(redirectPath.get());
            }
        }

    }

    private void handleActivateAction(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String filter_id = request.getParameter("filter_id");
        if (filter_id == null) {
            // return error, endpoint is required
            setUsageError(404, "ERROR: No endpoint defined.", response);
        } else {
            String revision = request.getParameter("revision");
            if (revision == null) {
                setUsageError(404, "ERROR: No revision defined.", response);
            } else {
                int revisionNumber = -1;
                try {
                    revisionNumber = Integer.parseInt(revision);
                } catch (Exception e) {
                    setUsageError(400, "ERROR: revision must be an integer.", response);
                    return;
                }
                try {
                   scriptDAO.setFilterActive(filter_id, revisionNumber);
                } catch (Exception e) {
                    setUsageError(400, "ERROR: " + e.getMessage(), response);
                    return;
                }
                response.sendRedirect(redirectPath.get());

                //                Map<String, Object> scriptJson = createEndpointScriptJSON(filterInfo);
                //              response.getWriter().write(JsonUtility.jsonFromMap(scriptJson));
            }
        }

    }

    private void handleUploadAction(HttpServletRequest request, HttpServletResponse response) throws IOException {

        String filter = handlePostBody(request, response);

        if (filter != null) {
            FilterInfo filterInfo = null;
            try {
                filterInfo = FilterVerifier.getInstance().verifyFilter(filter);
            } catch (IllegalAccessException e) {
                logger.error(e.getMessage(), e);
                setUsageError(500, "ERROR: Unable to process uploaded data. " + e.getMessage(), response);
            } catch (InstantiationException e) {
                logger.error(e.getMessage(), e);
                setUsageError(500, "ERROR: Bad Filter. " + e.getMessage(), response);
            }
            filterInfo = scriptDAO.addFilter(filter, filterInfo.getFilterType(), filterInfo.getFilterName(), filterInfo.getFilterDisablePropertyName(), filterInfo.getFilterOrder());
            if (filterInfo == null) {
                setUsageError(500, "ERROR: Unable to process uploaded data.", response);
                return;
            }
            response.sendRedirect(redirectPath.get());
        }
    }

    private String handlePostBody(HttpServletRequest request, HttpServletResponse response) throws IOException {

        FileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);
        org.apache.commons.fileupload.FileItemIterator it = null;
        try {
            it = upload.getItemIterator(request);

            while (it.hasNext()) {
                FileItemStream stream = it.next();
                InputStream input = stream.openStream();

                // NOTE: we are going to pull the entire stream into memory
                // this will NOT work if we have huge scripts, but we expect these to be measured in KBs, not MBs or larger
                byte[] uploadedBytes = getBytesFromInputStream(input);
                input.close();

                if (uploadedBytes.length == 0) {
                    setUsageError(400, "ERROR: Body contained no data.", response);
                    return null;
                }

                return new String(uploadedBytes);
            }
        } catch (FileUploadException e) {
            throw new IOException(e.getMessage());
        }
        return null;
    }

    private byte[] getBytesFromInputStream(InputStream input) throws IOException {
        int v = 0;
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        while ((v = input.read()) != -1) {
            bos.write(v);
        }
        bos.close();
        return bos.toByteArray();
    }

    private Map<String, Object> createEndpointScriptJSON(FilterInfo script) {
        Map<String, Object> scriptJson = new LinkedHashMap<String, Object>();
        scriptJson.put("filter_id", script.getFilterID());
        scriptJson.put("filter_name", script.getFilterName());
        scriptJson.put("filter_type", script.getFilterType());
        scriptJson.put("revision", script.getRevision());
        scriptJson.put("active", script.isActive());
        scriptJson.put("creationDate", script.getCreationDate());
        scriptJson.put("canary", script.isCanary());
        return scriptJson;
    }

    /**
     * Determine if the incoming action + method is a correct combination. If not, output the usage docs and set an error code on the response.
     *
     * @param request
     * @param response
     * @return true if valid, false if not
     */
    private static boolean isValidAction(HttpServletRequest request, HttpServletResponse response) {
        String action = request.getParameter("action");
        if (action != null) {
            action = action.trim().toUpperCase();
            /* test for GET actions */
            if (VALID_GET_ACTIONS.contains(action)) {
                if (!request.getMethod().equals("GET")) {
                    // valid action, wrong method
                    setUsageError(405, "ERROR: Invalid HTTP method for action type.", response);
                    return false;
                }
                // valid action and method
                return true;
            }

            if (VALID_PUT_ACTIONS.contains(action)) {
                if (!(request.getMethod().equals("PUT") || request.getMethod().equals("POST"))) {
                    // valid action, wrong method
                    setUsageError(405, "ERROR: Invalid HTTP method for action type.", response);
                    return false;
                }
                // valid action and method
                return true;
            }

            // wrong action
            setUsageError(400, "ERROR: Unknown action type.", response);
            return false;
        } else {
            setUsageError(400, "ERROR: Invalid arguments.", response);
            return false;
        }
    }

    /**
     * Set an error code and print out the usage docs to the response with a preceding error message
     *
     * @param statusCode
     * @param response
     */
    private static void setUsageError(int statusCode, String message, HttpServletResponse response) {
        response.setStatus(statusCode);
        try {
            Writer w = response.getWriter();
            if (message != null) {
                w.write(message + "\n\n");
            }
            w.write(getUsageDoc());
        } catch (Exception e) {
            logger.error("Failed to output usage error.", e);
            // won't throw exception because this is not critical, logging the error is enough
        }
    }

    /**
     * Set an error code and print out the usage docs to the response.
     *
     * @param statusCode
     * @param response
     */
    private static void setUsageError(int statusCode, HttpServletResponse response) {
        setUsageError(statusCode, null, response);
    }

    /**
     * Usage documentation to be output when a URL is malformed.
     *
     * @return
     */
    private static String getUsageDoc() {
        StringBuilder s = new StringBuilder();
        s.append("Usage: /scriptManager?action=<ACTION_TYPE>&<ARGS>").append("\n");
        s.append("       Actions:").append("\n");
        s.append("          LIST: List all endpoints with scripts or all scripts for a given endpoint.").append("\n");
        s.append("              Arguments:").append("\n");
        s.append("                  endpoint: [Optional (Default: All endpoints)] The endpoint of script revisions to list.").append("\n");
        s.append("              Examples:").append("\n");
        s.append("                GET /scriptManager?action=LIST").append("\n");
        s.append("                GET /scriptManager?action=LIST&endpoint=/ps3/home").append("\n");
        s.append("\n");

        s.append("          DOWNLOAD: Download a given script.").append("\n");
        s.append("              Arguments:").append("\n");
        s.append("                  endpoint: [Required] The endpoint of script to download.").append("\n");
        s.append("                  revision: [Optional (Default: last revision)] The revision to download.").append("\n");
        s.append("              Examples:").append("\n");
        s.append("                GET /scriptManager?action=DOWNLOAD&endpoint=/ps3/home").append("\n");
        s.append("                GET /scriptManager?action=DOWNLOAD&endpoint=/ps3/home&revision=23").append("\n");
        s.append("\n");

        s.append("          UPLOAD: Upload a script for a given endpoint.").append("\n");
        s.append("              Arguments:").append("\n");
        s.append("                  endpoint: [Required] The endpoint to associated the script with. If it doesn't exist it will be created.").append("\n");
        s.append("                  userAuthenticationRequired: [Optional (Default: true)] Whether the script requires an authenticated user to execute.").append("\n");
        s.append("              Example:").append("\n");
        s.append("                POST /scriptManager?action=UPLOAD&endpoint=/ps3/home").append("\n");
        s.append("                POST /scriptManager?action=UPLOAD&endpoint=/ps3/home&userAuthenticationRequired=false").append("\n");
        s.append("\n");

        s.append("          ACTIVATE: Mark a particular script revision as active for production.").append("\n");
        s.append("              Arguments:").append("\n");
        s.append("                  endpoint: [Required] The endpoint for which a script revision should be activated.").append("\n");
        s.append("                  revision: [Required] The script revision to activate.").append("\n");
        s.append("              Example:").append("\n");
        s.append("                PUT /scriptManager?action=ACTIVATE&endpoint=/ps3/home&revision=22").append("\n");
        return s.toString();
    }

    public static class UnitTest {
        @Mock
        HttpServletRequest request;
        @Mock
        HttpServletResponse response;
        @Mock
        PrintWriter responseWriter;
        @Mock
        ServletOutputStream outputStream;

        @Before
        public void before() {
            MockitoAnnotations.initMocks(this);
            try {
                when(response.getWriter()).thenReturn(responseWriter);
                when(response.getOutputStream()).thenReturn(outputStream);
            } catch (IOException e) {
                throw new RuntimeException("failed to initialize mock", e);
            }
        }

        private FilterScriptManagerServlet getEndpointScriptManagerImplementation(ZuulFilterDAO dao) {
            return new FilterScriptManagerServlet(dao);
        }

        /**
         * Not found response for a "list scripts" request.
         *
         * @throws Exception
         */
        @Test
        public void testListScriptNotFound() throws Exception {
            /* setup mock request to return URI */
            when(request.getPathInfo()).thenReturn("?action=LIST&filter_id=name2:type");
            when(request.getParameter("action")).thenReturn("LIST");
            when(request.getParameter("filter_id")).thenReturn("name:type");
            when(request.getMethod()).thenReturn("GET");

            /* setup mock DAO */
            ZuulFilterDAO dao = mock(ZuulFilterDAOCassandra.class);
            List<FilterInfo> emptyResponse = Collections.emptyList();
            when(dao.getZuulFiltersForFilterId(anyString())).thenReturn(emptyResponse);

            /* construct servlet */
            FilterScriptManagerServlet servlet = getEndpointScriptManagerImplementation(dao);
            servlet.service(request, response);

            // verify that we get a 404 when this endpoint isn't found
            verify(response).setStatus(404);
        }

        /**
         * List scripts for an endpoint.
         *
         * @throws Exception
         */
        @Test
        public void testListScripts() throws Exception {
            /* setup mock request to return URI */
            when(request.getPathInfo()).thenReturn("?action=LIST&filter_id=name1:type1");
            when(request.getParameter("action")).thenReturn("LIST");
            when(request.getParameter("filter_id")).thenReturn("name1:type");
            when(request.getMethod()).thenReturn("GET");

            /* setup mock DAO */

            ZuulFilterDAO dao = mock(ZuulFilterDAOCassandra.class);
            List<FilterInfo> scriptsForEndpoint = new ArrayList<FilterInfo>();
            scriptsForEndpoint.add(new FilterInfo("name1:type", "code", FilterType.INBOUND, "name", "disable", "order", "app"));
            scriptsForEndpoint.add(new FilterInfo("name2:type", "code", FilterType.INBOUND, "name", "disable", "order", "app"));
            scriptsForEndpoint.add(new FilterInfo("name3:type", "code", FilterType.INBOUND, "name", "disable", "order", "app"));
            when(dao.getZuulFiltersForFilterId(anyString())).thenReturn(scriptsForEndpoint);

            /* construct servlet */
            FilterScriptManagerServlet servlet = getEndpointScriptManagerImplementation(dao);
            servlet.service(request, response);

            /* verify the default status is used */
            verify(response, never()).setStatus(anyInt());

            /* build up the JSON we expect */
            Map<String, Object> expectedJson = new LinkedHashMap<String, Object>();
            expectedJson.put("filter_id", "name1:type");
            List<Map<String, Object>> scriptsJson = new ArrayList<Map<String, Object>>();
            for (FilterInfo script : scriptsForEndpoint) {
                Map<String, Object> scriptJson = createExpectedJsonMap(script);
                scriptsJson.add(scriptJson);
            }
            expectedJson.put("filters", scriptsJson);

            /* verify that we received the expected JSON */
            String expectedJsonString = JsonUtility.jsonFromMap(expectedJson);
            System.out.println("Expected JSON: \n" + expectedJsonString);
            verify(responseWriter).write(expectedJsonString);
        }

        /**
         * List all endpoints
         *
         * @throws Exception
         */
        @Test
        public void testListEndpoints() throws Exception {
            /* setup mock request to return URI */
            when(request.getPathInfo()).thenReturn("?action=LIST");
            when(request.getParameter("action")).thenReturn("LIST");
            when(request.getMethod()).thenReturn("GET");

            /* setup mock DAO */
            ZuulFilterDAO dao = mock(ZuulFilterDAOCassandra.class);
            List<String> filters = new ArrayList<String>();
            filters.add("name1:type");
            filters.add("name2:type");
            filters.add("name3:type");
            filters.add("name4:type");
            when(dao.getAllFilterIDs()).thenReturn(filters);

            /* construct servlet */
            FilterScriptManagerServlet servlet = getEndpointScriptManagerImplementation(dao);
            servlet.service(request, response);

            /* build up the JSON we expect */
            Map<String, Object> expectedJson = new LinkedHashMap<String, Object>();
            expectedJson.put("filters", filters);

            /* verify the default status is used */
            verify(response, never()).setStatus(anyInt());

            /* verify that we received the expected JSON */
            String expectedJsonString = JsonUtility.jsonFromMap(expectedJson);
            System.out.println("Expected JSON: \n" + expectedJsonString);
            verify(responseWriter).write(expectedJsonString);
        }

        @Test
        public void testErrorWithUsageIfIncorrectMethod() throws Exception {
            /* setup mock request to return URI */
            when(request.getPathInfo()).thenReturn("?action=LIST&filter=unknown:type");
            when(request.getParameter("action")).thenReturn("LIST");
            // send POST instead of GET so we should get an error
            when(request.getMethod()).thenReturn("POST");

            FilterScriptManagerServlet servlet = new FilterScriptManagerServlet();
            servlet.service(request, response);

            // a 405 because POST with those arguments is invalid
            verify(response).setStatus(405);
            // test that the usage docs were output
            verify(response).getWriter();
            verify(responseWriter).write("ERROR: Invalid HTTP method for action type.\n\n");
            verify(responseWriter).write(getUsageDoc());
        }

        @Test
        public void testErrorWithUsageIfIncorrectArguments1() throws Exception {
            /* setup mock request to return URI */
            when(request.getPathInfo()).thenReturn("?");
            when(request.getMethod()).thenReturn("GET");

            FilterScriptManagerServlet servlet = new FilterScriptManagerServlet();
            servlet.service(request, response);

            System.out.println("--------------------------------------------------------");
            System.out.println(getUsageDoc());
            System.out.println("--------------------------------------------------------");

            // a 400 because the resource exists, but arguments are incorrect
            verify(response).setStatus(400);
            // test that the usage docs were output
            verify(response).getWriter();
            verify(responseWriter).write("ERROR: Invalid arguments.\n\n");
            verify(responseWriter).write(getUsageDoc());
        }

        @Test
        public void testErrorWithUsageIfIncorrectArguments2() throws Exception {
            /* setup mock request to return URI */
            when(request.getPathInfo()).thenReturn("?action=UNKNOWN");
            when(request.getParameter("action")).thenReturn("UNKNOWN");
            when(request.getMethod()).thenReturn("GET");

            FilterScriptManagerServlet servlet = new FilterScriptManagerServlet();
            servlet.service(request, response);

            // a 400 because the resource exists, but arguments are incorrect
            verify(response).setStatus(400);
            // test that the usage docs were output
            verify(response).getWriter();
            verify(responseWriter).write("ERROR: Unknown action type.\n\n");
            verify(responseWriter).write(getUsageDoc());
        }

        @Test
        public void testDoDeleteReturnsError() throws Exception {
            /* setup mock request to return URI */
            when(request.getPathInfo()).thenReturn("?");
            // send POST instead of GET so we should get an error
            when(request.getMethod()).thenReturn("DELETE");

            FilterScriptManagerServlet servlet = new FilterScriptManagerServlet();
            servlet.service(request, response);

            // a 405 because POST with those arguments is invalid
            verify(response).setStatus(405);
            // test that the usage docs were output
            verify(response).getWriter();
            verify(responseWriter).write(getUsageDoc());
        }

        @Test
        public void testDownloadSingleScriptRevision() throws Exception {
            /* setup mock */
            String filter_id = "name:type";
            String action = "DOWNLOAD";
            when(request.getPathInfo()).thenReturn("?action=" + action + "&filter_id=" + filter_id + "&revision=2");
            when(request.getMethod()).thenReturn("GET");
            when(request.getParameter("action")).thenReturn(action);
            when(request.getParameter("filter_id")).thenReturn(filter_id);
            when(request.getParameter("revision")).thenReturn("2");

            /* setup mock DAO */
            ZuulFilterDAO dao = mock(ZuulFilterDAOCassandra.class);
            FilterInfo script = mock(FilterInfo.class);
            when(dao.getFilterInfoForFilter(filter_id, 2)).thenReturn(script);
            String code = "code";

            when(script.getFilterCode()).thenReturn(code);

            FilterScriptManagerServlet servlet = getEndpointScriptManagerImplementation(dao);
            servlet.service(request, response);

            /* verify the default status is used */
            verify(response, never()).setStatus(anyInt());

            // verify mime-type
            verify(response).setContentType("text/plain");

            // verify the script is written to the response
            verify(responseWriter).write("code");
        }

        @Test
        public void testDownloadSingleScriptLatest() throws Exception {
            /* setup mock */
            String filter_id = "name:type";
            String action = "DOWNLOAD";
            when(request.getPathInfo()).thenReturn("?action=" + action + "&filter_id=" + filter_id);
            when(request.getMethod()).thenReturn("GET");
            when(request.getParameter("action")).thenReturn(action);
            when(request.getParameter("filter_id")).thenReturn(filter_id);

            /* setup mock DAO */
            ZuulFilterDAO dao = mock(ZuulFilterDAOCassandra.class);
            FilterInfo script = mock(FilterInfo.class);
            when(dao.getLatestFilterInfoForFilter(filter_id)).thenReturn(script);
            when(dao.getFilterInfoForFilter(filter_id, 2)).thenReturn(script);
            when(script.getFilterCode()).thenReturn("code");

            FilterScriptManagerServlet servlet = getEndpointScriptManagerImplementation(dao);
            servlet.service(request, response);

            /* verify the default status is used */
            verify(response, never()).setStatus(anyInt());

            // verify mime-type
            verify(response).setContentType("text/plain");

            // verify the script is written to the response
            verify(responseWriter).write("code");
        }

        @Test
        public void testDownloadSingleScriptPlusErrorHandlerLatest() throws Exception {
            /* setup mock */
            String filter_id = "name:type";
            String action = "DOWNLOAD";
            when(request.getPathInfo()).thenReturn("?action=" + action + "&filter_id=" + filter_id);
            when(request.getMethod()).thenReturn("GET");
            when(request.getParameter("action")).thenReturn(action);
            when(request.getParameter("filter_id")).thenReturn(filter_id);

            /* setup mock DAO */
            ZuulFilterDAO dao = mock(ZuulFilterDAOCassandra.class);
            FilterInfo script = mock(FilterInfo.class);
            when(dao.getLatestFilterInfoForFilter(filter_id)).thenReturn(script);
            when(dao.getFilterInfoForFilter(filter_id, 2)).thenReturn(script);
            when(script.getFilterCode()).thenReturn("code");

            FilterScriptManagerServlet servlet = getEndpointScriptManagerImplementation(dao);
            servlet.service(request, response);

            /* verify the default status is used */
            verify(response, never()).setStatus(anyInt());

            // the writer should not be touched since we need binary, not text
            verify(responseWriter).write(anyString());
        }

        @Test
        public void testDownloadEndpointNotFound() throws Exception {
            /* setup mock */
            String action = "DOWNLOAD";
            when(request.getPathInfo()).thenReturn("?action=" + action);
            when(request.getMethod()).thenReturn("GET");
            when(request.getParameter("action")).thenReturn(action);

            ZuulFilterDAO dao = mock(ZuulFilterDAOCassandra.class);
            FilterScriptManagerServlet servlet = getEndpointScriptManagerImplementation(dao);
            servlet.service(request, response);

            // a 404 because incorrect arguments were given (so the resource 'does not exist')
            verify(response).setStatus(404);
            // test that the usage docs were output
            verify(response).getWriter();
            verify(responseWriter).write("ERROR: No endpoint defined.\n\n");
            verify(responseWriter).write(getUsageDoc());
        }

        @Test
        public void testActivateRevision() throws Exception {
            /* setup mock */
            String endpoint = "name:type";
            String action = "ACTIVATE";
            when(request.getPathInfo()).thenReturn("?action=" + action + "&filter_id=" + endpoint + "&revision=2");
            when(request.getMethod()).thenReturn("POST");
            when(request.getParameter("action")).thenReturn(action);
            when(request.getParameter("filter_id")).thenReturn(endpoint);
            when(request.getParameter("revision")).thenReturn("2");

            /* setup mock DAO */
            ZuulFilterDAOCassandra dao = mock(ZuulFilterDAOCassandra.class);

            /* setup the mock script that will be uploaded */
            FilterInfo script = mockEndpointScript();

            // userAuthenticationRequired should default to true
            when(dao.setFilterActive(endpoint, 2)).thenReturn(script);

            // execute the servlet
            FilterScriptManagerServlet servlet = getEndpointScriptManagerImplementation(dao);
            servlet.service(request, response);

            /* verify the default status is used */
            verify(response, never()).setStatus(anyInt());
            verify(dao).setFilterActive(endpoint, 2);
        }

        @Test
        public void testActivateEndpointNotFound() throws Exception {
            /* setup mock */
            String action = "ACTIVATE";
            when(request.getPathInfo()).thenReturn("?action=" + action);
            when(request.getMethod()).thenReturn("POST");
            when(request.getParameter("action")).thenReturn(action);

            ZuulFilterDAO dao = mock(ZuulFilterDAOCassandra.class);
            FilterScriptManagerServlet servlet = getEndpointScriptManagerImplementation(dao);
            servlet.service(request, response);

            // a 404 because incorrect arguments were given (so the resource 'does not exist')
            verify(response).setStatus(404);
            // test that the usage docs were output
            verify(response).getWriter();
            verify(responseWriter).write("ERROR: No endpoint defined.\n\n");
            verify(responseWriter).write(getUsageDoc());
        }

        @Test
        public void testActivateRevisionNotFound() throws Exception {
            /* setup mock */
            String endpoint = "/ps3/{userID}/home";
            String action = "ACTIVATE";
            when(request.getPathInfo()).thenReturn("?action=" + action + "&filter_id=" + endpoint);
            when(request.getMethod()).thenReturn("POST");
            when(request.getParameter("action")).thenReturn(action);
            when(request.getParameter("filter_id")).thenReturn(endpoint);

            ZuulFilterDAO dao = mock(ZuulFilterDAOCassandra.class);
            FilterScriptManagerServlet servlet = getEndpointScriptManagerImplementation(dao);
            servlet.service(request, response);

            // a 404 because incorrect arguments were given (so the resource 'does not exist')
            verify(response).setStatus(404);
            // test that the usage docs were output
            verify(response).getWriter();
            verify(responseWriter).write("ERROR: No revision defined.\n\n");
            verify(responseWriter).write(getUsageDoc());
        }

        private Map<String, Object> createExpectedJsonMap(FilterInfo script) {
            Map<String, Object> expectedJson = new LinkedHashMap<String, Object>();
            expectedJson.put("filter_id", script.getFilterID());
            expectedJson.put("filter_name", script.getFilterName());
            expectedJson.put("filter_type", script.getFilterType());
            expectedJson.put("revision", script.getRevision());
            expectedJson.put("active", script.isActive());
            expectedJson.put("creationDate", script.getCreationDate());
            expectedJson.put("canary", script.isCanary());
            return expectedJson;
        }

        private FilterInfo mockEndpointScript() {
            Calendar now = Calendar.getInstance();
            FilterInfo script = mock(FilterInfo.class);
            when(script.getCreationDate()).thenReturn(now.getTime());
            when(script.getRevision()).thenReturn(1);
            when(script.isActive()).thenReturn(false);
            when(script.isCanary()).thenReturn(false);
            return script;
        }
    }
}

redpajama_set_name: RedPajamaGithub


What is a Mentor-Do I Need One?
Start by thinking about who regularly inspires you. Maybe it's the speaking coach that's crushing it with her products or the crafty mom who turned her blog into a thriving business that supports her family.
It's OK if you choose a mentor in a different niche. For example, you may choose a mentor who sells makeup online, even though you're a brand designer for local businesses. Just because you're in separate industries, it doesn't mean you can't be influenced by her.
As you consider who might be a good mentor, ask yourself why certain people inspire you. It may be they have something you want like a big business, a good marriage, or a great sense of style. It could also be something they already are like an artist, an entrepreneur, a speaker, or a novelist.
Getting clear on why someone inspires you is important. Once you know, you'll understand yourself better and what it is you want to create more of in your own life.
How Can You Learn from This Mentor?
You can begin learning from your mentor right away. Read her blog and sign up for updates. Watch her video episodes and take notes on the nuggets of wisdom that capture your interest. Follow her on social media and check in on her profile a couple of times a week.
Study what works for your mentor and what doesn't. Pay attention to how she structures her time and uses her energy. Note her goals and see how she reaches them and what tools she uses along the way.
As you're learning from your mentor and soaking up her wisdom, don't forget to engage with her. Comment on Facebook or reply on Twitter. Let her know how much you appreciate the fact that she's sharing her journey with others just like you.
Look for ways you could hang out with her, whether online or in a virtual space. Sign up for her webinar or attend the conference she's speaking at. Watch her live streams on Facebook or take her courses.
Find someone that INSPIRES you.
How can you LEARN from her?
How are you going to ENGAGE with her?
Finding a mentor doesn't have to be hard or complicated. In fact, there's probably at least one women that you already admire and can learn a lot from! Yeah…ME!
Transform your year with the help of a business mentor. Discover how by signing up here.


text:
Acanthorrhinum, monotipski biljni rod iz porodice trpučevki (Plantaginaceae). Jedina vrsta A. ramosissimum raste u suhim područjima Libije, Maroka, Alžira, Tunisa, Zapadne Sahare i Mauretanije.

U ovaj rod uključivana je i vrsta iz Španjolske, Acanthorrhinum rivas-martinezii, koja je izdvojena i uključena u zaseban rod Pseudomisopates.

Sinonimi
 Antirrhinum flexuosum Pomel
 Antirrhinum intricatum Ball
 Antirrhinum ramosissimum Cosson & Durieu
 Antirrhinum ramosissimum var. flavum Maire
 Antirrhinum ramosissimum var. flexuosum (Pomel) Coss. & Durieu
 Antirrhinum ramosissimum subsp. intricatum Ball
 Antirrhinum ramosissimum var. spinosissimum Bart.

Vanjske poveznice

Izvori

Antirrhinoideae

redpajama_set_name: RedPajamaWikipedia


Our high performance plastic products include polypropylene (PP), performance composites and polypropylene fibers. With in-depth knowledge of market demands and preferences, we concentrate on developing market-oriented and high quality, differentiated products and are committed to excellence in customer service to help our customers in technical innovation, application development, new product research, market information and businesses.
Polypropylene is a thermoplastic resin available through different formulations or modified by additives, making it widely used in different applications.
Performance composites have extensive applications. Each performance composite line has its unique advantages to satisfy the demands of various industries.
Our purchasing, green product planning, supplier management and EHS units interact closely with our suppliers. We ask our suppliers to provide material fact sheet, MSDS and quality assurance. Internally, we implement occupational safety and health management policy, ESH review measures and OHSAS-18001 in the establishment and execution of various management systems to stay in line with the Company's plan for the future.


As an environmental contractor who does asbestos and lead paint removal for demolition cmopanies, Rick Lair came across countless architectural artifacts--from griffins and North Wind faces to stained glass and bronze radiator covers--that were being neglected or destroyed.
Lair began salvaging and storing these historical pieces in his warehouse, garage, attic, basement and office-- "finally," he says, "accumulating enough to sign a lease and open a store."
His new loft Gallery, King Richard's, Ltd., Architectural Artifacts & Antiques, is in the heart of Chicago's River North neighborhood.
What makes Lair's 8,000 square foot gallery different from other architectural artifact salvage companies?
For one thing, he has one of the largest selections of terra cotta clay pieces available. Prices range from $20 to $35,000. Also, "we have a lot more furniture [that other Firms]," including a massive four-piece, turn-of-the century Brittany Tudor-style bedroom set pulled ouf of a house in the south of France ($8,500).
"And we specialize in larger-scale itmes like the lions," he adds, referring to two 10 foot unglazed terra cotta lions created in the early 1900s that were removed from a Jewish temple in the Douglas Park area.
The lions ($29,000 for the pair) have become regal signature pieces in his gallery at 226 W. Ontario St., which is having a grand opening party from 6 to 9 p.m April 8th. Call 312-482-9500.


Today's been a hectic day for anyone looking to get a Nexus 4. It appears that T-Mobile will be selling the Nexus 4 in 'Select' stores tomorrow for $199 on contract, or $499 off contract. Now that's just way to much for the Nexus 4 which is $299/$349 from Google, if you can order one. For those that might be desperate for the device, you may want to go and find one in-store tomorrow. But do remember, that the Nexus 4 sold at T-Mobile is exactly the same as the one sold in the Play Store.
Whether you want to replace your current T-Mobile device, or you want to switch to T-Mobile and take advantage of their new 'truly' unlimited data plans (starting at $54/month). I'd still recommend you to wait a few days and order from Google Play when they get their next stock in. But if you have money to throw at the device, go ahead and buy it from T-Mobile.
Anyone planning on going to T-Mobile tomorrow to pick up the Nexus 4? Let us know in the comments.


New Scientist, the science and technology journal has just launched two new blogs. The first, technology blog, deals with all the latest innovations, including videos of next-generation technology in action. The second, science blog provides a daily round-up of science news from around the world. New Scientist is an excellent pubilcation which I've read for many years so it's nice to see them enter the blogshere. I particulary liked the article entitled I'll send my android twin which reports that researcher Hiroshi Ishiguro is developing an android designed to look like himself which he intends to send in his place to conferences. Check out the video of one of Ishiguro's female androids, called Repilee Q2, introducing herself, extremelly realistic.


text:
Mondo announces reissue of Blade Runner 2049 score
Hans Zimmer and Benjamin Walfisch's soaring sounds will land at this year's Comic-Con
on July 02, 2019, 11:00am
Hans Zimmer and Benjamin Walfisch's Blade Runner 2049 score is getting the Mondo treatment. The company has announced its reissuing the epic 2017 score as an exclusive for San Diego Comic-Con this year. However, they've also kept the outsiders in mind.
Featuring artwork by Viktor Kalvachev, and produced by Michael Hodges, Ashley Culp, and Kayla Morrison, the 2XLP will be split into two incarnations. For Comic-Con, 500 copies will be pressed on to clear vinyl that's white and blue on one LP and opaque orange on the other. A teal and pink webstore version will follow.
Those attending Comic-Con will want to head to their booth (No. 435) beginning Wednesday, July 17th to grab the exclusive. Any remaining copies will be sold online alongside the webstore version at a later date. The odds aren't exactly in your favor.
(Film Review: With Blade Runner 2049, Denis Villeneuve Delivers A Masterpiece Sequel)
If you recall, Consequence of Sound named Hans Zimmer their Composer of the Year in 2017. At the time, both Zimmer and Walfisch spoke at great lengths about illustrating all the sounds for Denis Villeneuve's sequel, which the site named the top film of that year.
"The sound of the movie came about because of the way the movie looked," Zimmer explained. "The cinematography was like a filter to the synthesizer. It was as much a part of how to approach the sound as anything else. There was no way that with those images that I would have known how to make it work with an orchestra."
"This is a movie that basically outright rejected the orchestra," Walfisch echoed his sentiments. "There were a few cues where we used strings here and there, but even that just got less and less, to the point where there was just about one minute, and then that went away. It was actually very organic.
Revisit the full interview here and take a gander below at the reissue's beautiful artwork.
Rain imprint cover
Comic-Con Exclusive
Webstore Version
Benjamin Wallfisch
Sci-Fi Action
Soundtrack Reissue
Unseen colored video of Velvet Underground performing at Dallas war protest unearthed: Watch
Sebastian Bach on Celebrating Skid Row's Debut Album, Future Plans, and More


text:
Home Insights Graceful shutdown
13 May 2013 4min read
Jonathan Oakley
Battery-powered and battery-backed systems are now so commonplace that even to remark on them feels incredibly old fashioned. We are all so used to charging our mobile phones, electric toothbrushes, game controllers and Bluetooth headsets that it has become as automatic as hanging up our car keys. And it comes as a huge surprise if we can't find the keys, or our phone has no charge. So much effort has been put into battery technology, both in terms of capacity and consumption, that battery life is now so good that it is rare indeed to find our phone flat.
And here we find a largely unconsidered corner of the battery life design equation – the graceful failure. What is actually supposed to happen when the power source can no longer support its host device?
For the electronic engineer this is a classic conundrum. Just at the time when energy becomes limited, we would like to warn the user of this – but we don't want to consume more energy doing so! An LED doesn't take much power, and is actually more likely to be noticed if it's flashing (thus consuming no power for some of the time); but it's no use if the device is in your pocket, or another room. Sound is good, but the user is going to get annoyed if woken at 3am with an alert that the toothbrush could do with a charge.
Even in the absence of a good warning strategy, there remains the problem of optimal shutdown. For your phone there's no major problem. Provided you don't lose all your contact numbers you're unlikely to worry too much and after all, in the end it's your fault the battery went flat. But for a complex medical system other choices could be made; by shutting down a power-hungry heater, for example, it may be possible to keep a vital oxygen-level control system running for a few precious extra minutes. At the very least, one needs enough warning to be able to save the system state so that operation can resume cleanly once power is restored. This requires input from the whole design team. Amongst the myriad of other considerations battery shutdown can easily get short shrift, along with adequate system cooling and labelling. Yet ignoring it can have enormous consequences, and leaving it until later will often limit the scope of what can be done, making it difficult or even impossible to then change a sub-system to a less power-hungry one, or even just to one that can be shut down on demand.
Even a sophisticated charge-counting system, which monitors current into and out of the battery, can come unstuck.
None of this is made any easier by the difficulties involved in monitoring battery charge state. Simply monitoring battery voltage is rarely sufficient, as it will vary with temperature and load. Even a sophisticated charge-counting system, which monitors current into and out of the battery, can come unstuck. At Team we have direct experience of this when using an 'intelligent' battery module. This came complete with charge counting, status communication and automated charge termination, but could suddenly go from 40% charge to 0%, shutting the system down without warning. The reason? It took several weeks to determine, but it turned out that the system would fail if put on charge straight after being brought into a building. The charge termination would sense the fast temperature rise, assume that it was due to the battery reaching full charge, and not only stop charging but set the status to indicate a fully-charged state – even if moments before it had indicated 30%!
So when designing any device or system reliant on battery power remember these key points:
As part of the design process, include a thorough review of which sub-systems might be shut down early as power levels fall
Involve the whole design team
Make sure you fully understand the charging and discharging regimes – and how these will work in the real world
Don't leave it too late in the design process!
Look, don't just see
Injecting golden syrup
The environmental trade-offs of medical device technology


I think that your adding statement is OK.
The followings are my comments regarding the place of your adding statement in the UBL V2.0 specification (index.html).
I think that the definition in the description column of Consignor would be changed to your proposed statement.
There are some statements (6 lines) regarding transportation business process in the Section 5.8 Initiate Transport Services Collaboration.
I think that some guide statement (like your proposed statements) would be better to add.
We (JPLSC) will hold the F2F meeting on May 24, 2006.
We will discuss about this issue.
If the other comments will be arisen, I will inform you the comments.


New York, its time to talk baseball. It's the World Series. It's the bottom of the ninth inning and the bases loaded. Who do you put in the batter box? Alex Rodriguez (A-Rod) or Derek Jeter (The Captain)?
If you chose A-rod, then vote for Madam Secretary, because as great as A-rod's record is, with his gazillion dollars, the only World Series he's won was in 2009, and it was no thanks to him. When it matters, A-Rod's .365 batting average drops to a measly .161.
Baseball is the only job in the world where so long as you do what you were hired to do a third of the time, your considered a Hall of Famer. Unless you're Hillary Clinton of course. Somehow she's touted as a Hall of Famer and her record isn't even as good as A-Rod's. Unless, of course, we are talking about her "flip-flopping." (Quite ironic that Secretary Kerry – the original "flip-flopper" – is her successor.) Let's check out Secretary Clinton's batting record (a.k.a. her voting record) in New York.
In 2001, she supported the Patriot Act, leading to New York City's mapping of Arab American and Muslim American communities, one of the largest in the country. Though in direct violation of the 4th amendment, she continues to support the Patriot Act. Supporting the profiling of the Arab American community… STRIKE!
In 2001, she voted in favor of "No Child Left Behind," and thought tying standardized testing to funding was a fabulous idea, until 2015 when she decided to run for president. Did President Michael Mulgrew of the NY Teacher's Union forget she threw teachers under the school bus, or was he driving it? STRIKE! And a FOUL for Mr. Mulgrew!
In 2002, she supported the war in Iraq and now she states it was a "mistake." Her mistake cost the lives of approximately 240,000 individuals, including 191 New Yorkers who served in the US military. Quite a hefty price for a "mistake," don't ya' think? STRIKE!
In 2002, she made it public to her New York constituents that she believed marriage was between a man and a woman. As first lady, in 1996 she supported the Defense of Marriage Act (DOMA). Now she's all for marriage equality. In 2007, she announced her about-face on The Ellen DeGeneres Show. STRIKE!
In 2003, she was strongly opposed to closing Guantanamo. Further, she has done NOTHING about the practices that violate the civil liberties of terror suspects held in New York's Federal Prisons. In 2013, she began advocating for the closure of Guantanamo. 2013 was also the year she began sniffing out her prospects for the next presidential election. STRIKE!
Between 2010 and 2013, as Secretary of State, she advocated for the Trans-Pacific Partnership (TPP) over 40 times. The TPP would expand NAFTA, which she has supported since 1994 and is responsible for the loss of over 500,000 New York jobs and shrinking paychecks for those who still work. She came out against it after Senator Sanders called her on it in an early Democratic debate. STRIKE!
As recently as 2014, even after New Yorkers Against Fracking wrote a letter in 2013 directly to Secretary Clinton urging a ban against fracking, she supported the practice. As Secretary of State, she promoted fracking all over the world, practically campaigning for it in Bulgaria and Europe. Only after she was challenged in a debate with Senator Sanders on the issue, did the "mother fracker" change her mind. Again! STRIKE!
In that same year, New Yorkers Against Fracking also urged Secretary Clinton not to support the Constitution Pipeline being built in Albany, New York. I wouldn't hold my breath. In 2010, she said she was "inclined" to vote for the Keystone Pipeline because as she puts it, ""we're either going to be dependent on dirty oil from the Gulf, or dirty oil from Canada." Great attitude! In September of 2015, she decided to reverse her previous position on the Keystone Pipeline. STRIKE!
In 2014, The New York Supreme Court ruled that the death penalty was unconstitutional. Guess who voted consistently in favor of the death penalty? You guessed it! Secretary Clinton has been a staunch proponent of the death penalty. STRIKE!
So, much like A-Rod, Madame Secretary is "A-dud." If the above nine policies were a baseball game, she struck out in ALL nine innings. There is nothing "New York" about the former secretary. She knows it, and if she doubted it, Saturday Night Live solidified her desperation in their latest Clinton skit.