While his impressive track record for being a top designer on the digital networks like Uplabs and Dribbble, Johny tells Digital Computer Arts that he's much more focused on his craft and teaching others. Working for Healthtap, SYP partners, UXD Training, ZOHO, and Tekion, Johny boasts a vast portfolio that showcases not only client side work but also collections of side projects that are mainly targeted at teaching others advanced examples of Interaction Design (IxD). "The focus for me, is creating animations that make technology more human like". Premium Interaction Design, a collection on Dribbble, includes over 100 examples of animations that do just that, and has been viewed almost a million times.
"For me it's all about how humans interact with these strange surfaces". Calculation and timing is important he says, "it's like a science; it includes a strange type of psychology".
As the industry evolves, this fourth dimension and added layer of concept becomes more defined; more sophisticated. Johny is certainly leading interaction design in a way that is vital for products to become more enjoyable to use. Living between Bangalore, India, and New York, Johny has a unique perspective of different cultures and this is evident in his work. As we talk more about his process in idealizing, planning, sketching, and animation techniques, he brings to light many constraints and problems that he has to worth through. "I have many interests such as architecture, design, culture, fashion, etc. and each field has its uniqueness. But no matter which kind of product we are making, that product has to solve a problem for the user to improve some aspect of the their life". Expanding on this, we start from his beginning, an interesting story that shows how intense focus and specialization can create a reputation that is known globally.
In our research, you mentioned you started at the age of twelve, with paper sketching. Amazing. Can you elaborate about this time?
Yes sure. During my childhood days, I was a kid that thought differently from the other children. I thought deeply and had many ideas. When I was growing up, people weren't interested to hear my ideas, so I started sketching my design on paper that immensely help me to reach the level where I am now. I sketch at the beginning of every project.
You're from India is that correct? And you studied at Alagappa Chettiar College of Engg &Tech, Karaikudi. Tell us a little bit about what you studied, what this college life was like, and what the program was like?
Yes, I am proud to be from India. I studied in Electronics engineering. I feel those are memorable days in my life because my college completely transformed my personality and made me the person I am today. Also, it helps to find my early interests and strengths. I had started my career as a magazine designer for my college. So I began combining my Engineering skills and Design skills. Thinking about the technical details is something I still do. For example, I design for the wearable space which relies heavily on data and not a lot of room for design or transitions. It needs minimal interaction. I have worked on a project called HealthONE, which helps users access their health record through sensors and provides them results, displayed in a straightforward, clean way, in their native language. I completed a lot of ethnography research during this project, to understand the people's empathy and to find the correct solution for the different types of user-types in different regions. Below is my home studio, its for both work and school.
Were you working or freelancing at this time?
I was living in New York during this time, doing my Masters in parallel with freelancing. It's a great challenge for me to manage my time, though I enjoyed applying the theories I learned from school, and use them in the concepts I was doing for client projects. I am learning a subject called, "Service design" which greatly helps me to identify all the touch point of the user to make the whole UX design cohesive. I am currently working for companies like Healthtap and SYP partners.
Then New York. First, why the move to US? Secondly, how is New York as a home?
As I mentioned in my previous answer, I wanted to extend myself as an interaction designer who can design for the whole world, not just for India. Also, I want to understand multicultural problems and work with multiple types of user-types. My studies have helped me open up my mind and make me think in a broad perspective to solve different types of user problems. I see differences between my home, and here, but at the same time both homes have been the same for me. It's nice, because if I want to go back, in today's worlds it easy to book a flight and go.
This is my favorite quote you spoke about, "I have diverse interests – architecture, design, culture, fashion, etc. and each field has its uniqueness. Nevertheless, all the above fields have a common characteristic – The Problem of the User." Can you elaborate a little bit about what this means and why you're so passionate about it?
Yes, I have seen the people all over the world following the same "conventional" method. For example, still now so many people are confused which side to open commercial doors, to push or to pull. A simple example of bad design. In each field, people are obsessed doing the same thing, being comfortable with conventional methods, so I decided to make some changes which enhance the people life. I like to think new.
Backing up even further and touching on your upbringing, how did creativity enter your world? Was there a set of influences within your family, school; did you have mentors?
I would say my MUM is my support; she always supports me to decide to follow my heart. When I joined as a designer, all my friends got good salaries but I wanted to choose the design profession because I loved the field. My parents hold and mentored me, they showed me how to improve myself and move further to the top.
Let's talk about freelancing for a moment. Your portfolio boasts projects for UXD Training, ZOHO, and more. Can you speak a little bit about this time? How long have you been a freelancer and why the change in career? How long did you work full-time before this?
I worked for two years as a Fulltime employee. I also started doing my freelancing projects to improve myself in design. One thing that I did to gain attention is start making concepts for those companies (Airbnb, Google, others). It has been huge in getting views and more clients. I used Behance to get these projects (and other graphic designs) out into the community. My first project I did for $2.
What is your process like? How do you start a project?
Think of the design problem I'm facing. I try to find the best solution using my experience as a designer but I also always ask my associates, who can see the problem through another lens.
Sketch my initial take on the problem and tape my inspirations on the handy whiteboard.
Take sticky notes and jot down what are the problems I'm discovering along the way, and how to solve them through interaction.
Do an initial UI design in Sketch. I take the rough layout I have drawn on the whiteboard, and then I start polishing the UI digitally.
Initiate the interaction design using Principle with all the groundwork done by now. As you can imagine, this is the part I enjoy the most!
Export the.MOV file from Principle and then import the.MOV to Photoshop. I crop the length, and finally, I get to export my prototype in GIF format.
The only thing left to do is to publish the final result on Dribble, Behance, Uplabs! I usually submit once a day, and it always brings me joy to get immediate feedback from fellow designers. It keeps me motivated to submit more of my work, and it helps me learn what gets traction and gets users excited.
Please see some examples of user boards and journeys that I map out before jumping into the computer. These are the most important part.
Do you have anyone else that is working with you, under you? Next to you?
Yes I have worked with my college Juniors, to guide them to get good jobs. I enjoy teaching others.
Talking a bit about the Google Analytics Project, I noticed what was unique about this project was that the animations were focused on illustrations, not necessarily screens or UX dashboards, things you usually focus on. Can you describe what this experience was like?
Thanks for asking that, it was a great challenge to make the perspective animation on principle, because you can't make perspective vies in the principle app. So I took that as a challenge to make the illustrations animated. It was an excellent welcome to enter that space. I feel that it was a breakthrough to my portfolio.
Besides Google, what has been your favorite project to date?
If you were to change one thing about Freelance what would it be?
I want to change my communication medium, it is hard for me communicate with clients through Gmail.
Premium Interaction design (IxD). You have a collection of Shots on Dribbble and Behance that showcase beautiful case-studies and imagery of mobile and web interactions. Can you talk about this project? Why did you do it? What was involved (AE? Client work?)?
It was for teaching and showcasing my skills only and did not involve any clients. Also, a lot of clients asked for these examples, but I don't want to sell them, I wanted to license them in my name. Those are projects that helped me to enrich my talent to the next level. Now everyone calls me an interaction guy because of these. It's a good kit for beginner to learn interaction design.
Do you have plans for extending this, making it a website or elaborating on the how-to's portion?
Yea, I am planning to make a youtube channel.
Similarly, with 100 Best Mobile App Interactions. You can tell that many of these scenarios are honestly from a different era, they speak to a future that is bright and beautiful. Can you also talk about this project here?
I don't think there are words to define these interactions, you have to just go see them. I have tried all types of interactions and this best showcases a good range. Because, I have a broad range of research for many of the examples here, these interactions were filled with different directions. I never want to assume things all by myself, so I always go the extreme users-cases and physically ask them questions and give these prototypes to them to test it. This 100 different interaction scenarios include failures and successes, but I intend to make solutions continuously whether it is right or wrong because only after user-testing can you know it's working or not.
If you were to change one thing about Interaction Design, what would it be? What could today's current applications (mobile and desktop) be better at?
I would suggest not jumping into designing with view frames (rectangle – artboard) dimensions particularly being held to 1024*1024, 360*640. Come out of the square boxes; the world is so big; For example, You can make a table which is interactive, you can make a garden with a tree which interacts with you. So think of the daily environment we all live in and try to improve those things with interaction.
Second question on this topic, what do you see the future like for Interaction Design, Mobile and desktop alike?
I see the future of interaction is like I said before, it is not in a small rectangle. It will be how humans interact with the environment. For example, imagine if you sit on a chair with a table in front of you and your able to see all of your pictures, something that AR might be moving into.
This is the fascinating question. In my future, I want to move into environment interaction design which combines the interaction of the environmental like sounds, air, music, heat, soil with robot technology which works seamlessly. This will bring the things we use in our environment easier to work with and something that can take us back to our roots like jungle age where people are healthy and happy. I want to make any user a superhuman with my technology which interacts with the environment.
Also, you have 1Cor 10:31 in your profiles, Can you talk to this?
Yea, and thanks for noticing. I am a firm believer of Lord Jesus Christ. I pray everyday morning and ask God to give me an idea to make today, he always helps me and holds me and give me an idea. Without Jesus, I can't be here, in each and everything I feel the God to decide my path. So it's a bible verses: "So whether you eat or drink or whatever you do, do it all for the glory of God." I always have a jealousy for the people that work for Jesus; I wish to be like those people, because Jesus also wanted to make the human life better. And empathy is essential in design, that Christianity taught me this. If you are doing proper research after some time, you will emphatically match to the people's lives, this will make you the best designer.


If you're stuck in Hyperdimension Neptunia Victory: New Party Member 'MAGES.', ask your fellow GameFAQs members for help.
MAGES. can now be used in battles and dungeons.
- You must progress to Chapter 1 and enter Planeptune.
Get more Hyperdimension Neptunia Victory: New Party Member 'MAGES.' news at GameSpot.


Camping Antiparos lies hidden in greenery, near a beautiful beach in the north of the Cyclades island Antiparos.
Built in the 70s the camping ground hasn't lost it's charm. Every year, people from all over the world travel here to seek a way back to nature and freedom.
The camping site lies directly by the sea, only a few 100 meters away from the centre of the town of Antiparos.
The camping ground offers relaxation as well as different kinds of activities for singles and family travellers.


text:
Rotating Banner Images
40 Days, 40 Nights
The Lenten season is upon us. Did I remember to abstain from meat yesterday (Ash Wednesday)? Yeah, after I chowed down on longanisa for breakfast. Whoops.
Over the years I have become more non-practising of my faith. And while I don't go through the routine (attend masses and the like), I am inclined to practice certain things, like giving something up for Lent and refraining from eating meat on Fridays during that time.
Religion a la carte. Roman Catholicism lite.
Over dinner last night, my friend Mike (who is just as non-practising) and I discussed what we would give up until Easter. Between the two of us, I am being serious and picking things that I will truly miss- french fries and chocolate. I was toying around with the idea of soda as well, but I need the sweetened caloric carbonation. But who knows, maybe I will tack it on later once I figure out how to kick the cola habit.
Yes, I can tack it on later.
Posted by Lilimonster at 5:55:00 PM
giving up soda sounds like a bad idea. chocolate and french fries sounds like enough
Under the Copper Tree Store
How to Cook Everything Project
tastemaker
Archive November (3) October (1) March (7) February (1) January (1) November (1) October (4) September (1) March (4) January (21) December (4) November (13) October (1) September (1) August (3) July (1) June (4) May (3) March (3) January (2) December (2) November (2) October (1) September (1) August (2) July (3) June (1) February (9) January (2) December (10) October (6) September (2) August (4) July (9) June (8) May (5) April (6) March (2) February (1) January (3) December (2) November (6) September (2) August (1) July (3) June (6) May (2) April (3) March (8) February (2) January (5) December (1) November (2) October (5) September (3) August (4) July (4) June (4) May (3) April (10) March (21) February (8) January (10) December (9) November (26) October (7) September (9) August (13) July (18) June (12) May (15) April (9) March (7) February (10) January (14) December (9) November (23) October (19) September (17) August (26) July (22) June (25) May (15) April (15) March (11) February (9) January (24) December (33) November (20) October (19) September (31) August (15) July (13) June (28) May (24) April (23) March (10) February (13) January (27) December (24) November (20) October (36) September (33) August (18) July (16) June (17) May (25) April (22) March (26) February (30) January (31) December (2) November (12) October (22) September (34) August (17) July (11) June (4) May (1) January (1) November (2) September (5) August (8) July (4) June (4) May (8) April (9) March (19) February (5) January (5) October (1) September (5) June (1) March (3) February (4) December (1) November (5) October (6) September (4) August (9) August (1)

redpajama_set_name: RedPajamaCommonCrawl


"Quite possibly the best one ski quiver for women on the market" Amplified with a new Carbon Alloy Matrix, the all-new SKY 7 HD W is the ultimate fusion of lightweight backcountry innovation and progressive freeride performance. With noticeably more edge grip, stability, dampness, and drive, the new Sky 7 HD W provides instinctive versatility and ease-of-use, while delivering groundbreaking, high-definition energy, mobility, and strength due to our unique new carbon and basalt weave. Combined with our patented Air Tip technology; Powder Turn Rocker profile; lightweight paulownia wood core construction; and versatile 98mm waist width, the new Sky 7 HD W offers an ultra-lightweight blend of all-mountain versatility, effortless float, and accessible backcountry performance. No matter where the snow takes you, whether resort-based or backcountry bound – the future of freeride is here.


text:
#include "tensorflow_serving/servables/tensorflow/regressor.h"

#include <memory>
#include <string>
#include <utility>
#include <vector>

#include "google/protobuf/map.h"
#include "tensorflow/contrib/session_bundle/bundle_shim.h"
#include "tensorflow/contrib/session_bundle/session_bundle.h"
#include "tensorflow/core/example/example.pb.h"
#include "tensorflow/core/example/feature.pb.h"
#include "tensorflow/core/lib/core/errors.h"
#include "tensorflow/core/lib/core/status.h"
#include "tensorflow/core/lib/core/status_test_util.h"
#include "tensorflow/core/platform/mutex.h"
#include "tensorflow/core/platform/types.h"
#include "tensorflow/core/public/session.h"
#include "tensorflow_serving/apis/input.pb.h"
#include "tensorflow_serving/apis/model.pb.h"
#include "tensorflow_serving/apis/regression.pb.h"
#include "tensorflow_serving/core/test_util/mock_session.h"
#include "tensorflow_serving/test_util/test_util.h"
#include "tensorflow_serving/util/optional.h"

namespace tensorflow {
namespace serving {
namespace {

using ::testing::_;
using test_util::EqualsProto;
using test_util::MockSession;

const char kInputTensor[] = "input:0";
const char kOutputTensor[] = "output:0";
const char kOutputPlusOneTensor[] = "outputPlusOne:0";
const char kImproperlySizedOutputTensor[] = "ImproperlySizedOutput:0";
const char kOutputFeature[] = "output";

const char kOutputPlusOneSignature[] = "output_plus_one";
const char kInvalidNamedSignature[] = "invalid_classification_signature";
const char kImproperlySizedOutputSignature[] = "ImproperlySizedOutputSignature";

// Fake Session used for testing TensorFlowRegressor
// Assumes the input Tensor "input:0" has serialized tensorflow::Example values.
// Copies the "output" float feature from each Example.
class FakeSession : public tensorflow::Session {
 public:
  explicit FakeSession(optional<int64> expected_timeout)
      : expected_timeout_(expected_timeout) {}
  ~FakeSession() override = default;
  Status Create(const GraphDef& graph) override {
    return errors::Unimplemented("not available in fake");
  }
  Status Extend(const GraphDef& graph) override {
    return errors::Unimplemented("not available in fake");
  }

  Status Close() override {
    return errors::Unimplemented("not available in fake");
  }

  Status ListDevices(std::vector<DeviceAttributes>* response) override {
    return errors::Unimplemented("not available in fake");
  }

  Status Run(const std::vector<std::pair<string, Tensor>>& inputs,
             const std::vector<string>& output_names,
             const std::vector<string>& target_nodes,
             std::vector<Tensor>* outputs) override {
    if (expected_timeout_) {
      LOG(FATAL) << "Run() without RunOptions not expected to be called";
    }
    RunMetadata run_metadata;
    return Run(RunOptions(), inputs, output_names, target_nodes, outputs,
               &run_metadata);
  }

  Status Run(const RunOptions& run_options,
             const std::vector<std::pair<string, Tensor>>& inputs,
             const std::vector<string>& output_names,
             const std::vector<string>& target_nodes,
             std::vector<Tensor>* outputs, RunMetadata* run_metadata) override {
    if (expected_timeout_) {
      CHECK_EQ(*expected_timeout_, run_options.timeout_in_ms());
    }
    if (inputs.size() != 1 || inputs[0].first != kInputTensor) {
      return errors::Internal("Expected one input Tensor.");
    }
    const Tensor& input = inputs[0].second;
    std::vector<Example> examples;
    TF_RETURN_IF_ERROR(GetExamples(input, &examples));
    Tensor output;
    TF_RETURN_IF_ERROR(GetOutputTensor(examples, output_names[0], &output));
    outputs->push_back(output);
    return Status::OK();
  }

  // Parses TensorFlow Examples from a string Tensor.
  static Status GetExamples(const Tensor& input,
                            std::vector<Example>* examples) {
    examples->clear();
    const int batch_size = input.dim_size(0);
    const auto& flat_input = input.flat<string>();
    for (int i = 0; i < batch_size; ++i) {
      Example example;
      if (!example.ParseFromString(flat_input(i))) {
        return errors::Internal("failed to parse example");
      }
      examples->push_back(example);
    }
    return Status::OK();
  }

  // Gets the Feature from an Example with the given name.  Returns empty
  // Feature if the name does not exist.
  static Feature GetFeature(const Example& example, const string& name) {
    const auto it = example.features().feature().find(name);
    if (it != example.features().feature().end()) {
      return it->second;
    }
    return Feature();
  }

  // Creates a Tensor by copying the "output" feature from each Example.
  // Requires each Example have an bytes feature called "class" which is of the
  // same non-zero length.
  static Status GetOutputTensor(const std::vector<Example>& examples,
                                const string& output_tensor_name,
                                Tensor* tensor) {
    if (examples.empty()) {
      return errors::Internal("empty example list");
    }
    const int batch_size = examples.size();
    if (output_tensor_name == kImproperlySizedOutputTensor) {
      // Insert a rank 3 tensor which should be an error because outputs are
      // expected to be of shape [batch_size] or [batch_size, 1].
      *tensor = Tensor(DT_FLOAT, TensorShape({batch_size, 1, 10}));
      return Status::OK();
    }
    // Both tensor shapes are valid, so make one of shape [batch_size, 1] and
    // the rest of shape [batch_size].
    *tensor = output_tensor_name == kOutputPlusOneTensor
                  ? Tensor(DT_FLOAT, TensorShape({batch_size, 1}))
                  : Tensor(DT_FLOAT, TensorShape({batch_size}));

    const float offset = output_tensor_name == kOutputPlusOneTensor ? 1 : 0;
    for (int i = 0; i < batch_size; ++i) {
      const Feature feature = GetFeature(examples[i], kOutputFeature);
      if (feature.float_list().value_size() != 1) {
        return errors::Internal("incorrect number of values in output feature");
      }
      tensor->flat<float>()(i) = feature.float_list().value(0) + offset;
    }
    return Status::OK();
  }

 private:
  const optional<int64> expected_timeout_;
};

// Add a named signature to the mutable signatures* parameter.
// If is_regression is false, will add a classification signature, which is
// invalid in regression requests.
void AddNamedSignature(const string& input_tensor_name,
                       const string& output_tensor_name,
                       const string& signature_name, const bool is_regression,
                       Signatures* signatures) {
  tensorflow::serving::Signature named_signature;
  if (is_regression) {
    named_signature.mutable_regression_signature()
        ->mutable_input()
        ->set_tensor_name(input_tensor_name);
    named_signature.mutable_regression_signature()
        ->mutable_output()
        ->set_tensor_name(output_tensor_name);
  } else {
    named_signature.mutable_classification_signature()
        ->mutable_input()
        ->set_tensor_name(input_tensor_name);
    named_signature.mutable_classification_signature()
        ->mutable_classes()
        ->set_tensor_name(output_tensor_name);
  }
  signatures->mutable_named_signatures()->insert(
      protobuf::MapPair<string, tensorflow::serving::Signature>(
          signature_name, named_signature));
}

// Parameter is 'bool use_saved_model'.
class RegressorTest : public ::testing::TestWithParam<bool> {
 public:
  void SetUp() override {
    bundle_.reset(new SessionBundle);
    meta_graph_def_ = &bundle_->meta_graph_def;
    optional<int64> expected_timeout = GetRunOptions().timeout_in_ms();
    if (!GetParam()) {
      // For SessionBundle we don't propagate the timeout.
      expected_timeout = nullopt;
    }
    fake_session_ = new FakeSession(expected_timeout);
    bundle_->session.reset(fake_session_);

    // Setup some defaults for our signature.
    tensorflow::serving::Signatures signatures;
    auto default_signature =
        signatures.mutable_default_signature()->mutable_regression_signature();
    default_signature->mutable_input()->set_tensor_name(kInputTensor);
    default_signature->mutable_output()->set_tensor_name(kOutputTensor);

    AddNamedSignature(kInputTensor, kOutputPlusOneTensor,
                      kOutputPlusOneSignature, true /* is_regression */,
                      &signatures);
    AddNamedSignature(kInputTensor, kOutputPlusOneTensor,
                      kInvalidNamedSignature, false /* is_regression */,
                      &signatures);

    // Add a named signature where the output is not valid.
    AddNamedSignature(kInputTensor, kImproperlySizedOutputTensor,
                      kImproperlySizedOutputSignature, true /* is_regression */,
                      &signatures);

    TF_ASSERT_OK(
        tensorflow::serving::SetSignatures(signatures, meta_graph_def_));
  }

 protected:
  // Return an example with the feature "output" = [output].
  Example example_with_output(const float output) {
    Feature feature;
    feature.mutable_float_list()->add_value(output);
    Example example;
    (*example.mutable_features()->mutable_feature())["output"] = feature;
    return example;
  }

  Status Create() {
    if (GetParam()) {
      std::unique_ptr<SavedModelBundle> saved_model(new SavedModelBundle);
      TF_CHECK_OK(internal::ConvertSessionBundleToSavedModelBundle(
          *bundle_, saved_model.get()));
      return CreateRegressorFromSavedModelBundle(
          GetRunOptions(), std::move(saved_model), &regressor_);
    } else {
      return CreateRegressorFromBundle(std::move(bundle_), &regressor_);
    }
  }

  // Variables used to create the regression model
  tensorflow::MetaGraphDef* meta_graph_def_;
  FakeSession* fake_session_;
  std::unique_ptr<SessionBundle> bundle_;

  // Regression model valid after calling create.
  std::unique_ptr<RegressorInterface> regressor_;

  // Convenience variables.
  RegressionRequest request_;
  RegressionResult result_;

 private:
  RunOptions GetRunOptions() const {
    RunOptions run_options;
    run_options.set_timeout_in_ms(42);
    return run_options;
  }
};

TEST_P(RegressorTest, BasicExampleList) {
  TF_ASSERT_OK(Create());
  auto* examples =
      request_.mutable_input()->mutable_example_list()->mutable_examples();
  *examples->Add() = example_with_output(2.0);
  *examples->Add() = example_with_output(3.0);
  TF_ASSERT_OK(regressor_->Regress(request_, &result_));
  EXPECT_THAT(result_, EqualsProto(" regressions { "
                                   "   value: 2.0 "
                                   " } "
                                   " regressions { "
                                   "   value: 3.0 "
                                   " } "));
}

TEST_P(RegressorTest, BasicExampleListWithContext) {
  TF_ASSERT_OK(Create());
  auto* list_with_context =
      request_.mutable_input()->mutable_example_list_with_context();
  // Add two empty examples.
  list_with_context->add_examples();
  list_with_context->add_examples();
  // Add the context which contains the output predictions.
  *list_with_context->mutable_context() = example_with_output(3.0);
  TF_ASSERT_OK(regressor_->Regress(request_, &result_));
  EXPECT_THAT(result_, EqualsProto(" regressions { "
                                   "   value: 3.0 "
                                   " } "
                                   " regressions { "
                                   "   value: 3.0 "
                                   " } "));
}

TEST_P(RegressorTest, ValidNamedSignature) {
  TF_ASSERT_OK(Create());
  request_.mutable_model_spec()->set_signature_name(kOutputPlusOneSignature);
  auto* examples =
      request_.mutable_input()->mutable_example_list()->mutable_examples();
  *examples->Add() = example_with_output(2.0);
  *examples->Add() = example_with_output(3.0);
  TF_ASSERT_OK(regressor_->Regress(request_, &result_));
  // GetParam() is 'is_saved_model' in this test. If using saved_model, this
  // test should use the kOutputPlusOneSignature named signature. Otherwise,
  // when using session_bundle, the signature_name in the model_spec will be
  // ignored and the default signature will be used.
  if (GetParam()) {
    EXPECT_THAT(result_, EqualsProto(" regressions { "
                                     "   value: 3.0 "
                                     " } "
                                     " regressions { "
                                     "   value: 4.0 "
                                     " } "));
  } else {
    EXPECT_THAT(result_, EqualsProto(" regressions { "
                                     "   value: 2.0 "
                                     " } "
                                     " regressions { "
                                     "   value: 3.0 "
                                     " } "));
  }
}

TEST_P(RegressorTest, InvalidNamedSignature) {
  TF_ASSERT_OK(Create());
  request_.mutable_model_spec()->set_signature_name(kInvalidNamedSignature);
  auto* examples =
      request_.mutable_input()->mutable_example_list()->mutable_examples();
  *examples->Add() = example_with_output(2.0);
  *examples->Add() = example_with_output(3.0);
  const Status status = regressor_->Regress(request_, &result_);

  // GetParam() is 'is_saved_model' in this test. If using saved_model, this
  // test should fail because the named_signature requested is actually a
  // classification signature. When using session_bundle, the signature_name
  // will be ignored and the default signature will be used.
  if (GetParam()) {
    ASSERT_FALSE(status.ok());
    EXPECT_EQ(::tensorflow::error::INVALID_ARGUMENT, status.code()) << status;
  } else {
    TF_ASSERT_OK(status);
    EXPECT_THAT(result_, EqualsProto(" regressions { "
                                     "   value: 2.0 "
                                     " } "
                                     " regressions { "
                                     "   value: 3.0 "
                                     " } "));
  }
}

TEST_P(RegressorTest, MalformedOutputs) {
  // If not using SavedModel, we don't use named signatures so the test is not
  // actually testing the right thing. Skip it.
  if (!GetParam()) {
    return;
  }

  TF_ASSERT_OK(Create());
  request_.mutable_model_spec()->set_signature_name(
      kImproperlySizedOutputSignature);
  auto* examples =
      request_.mutable_input()->mutable_example_list()->mutable_examples();
  *examples->Add() = example_with_output(2.0);
  *examples->Add() = example_with_output(3.0);
  const Status status = regressor_->Regress(request_, &result_);

  ASSERT_FALSE(status.ok());
  EXPECT_EQ(::tensorflow::error::INVALID_ARGUMENT, status.code()) << status;
}

TEST_P(RegressorTest, EmptyInput) {
  TF_ASSERT_OK(Create());
  // Touch input.
  request_.mutable_input();
  const Status status = regressor_->Regress(request_, &result_);
  ASSERT_FALSE(status.ok());
  EXPECT_THAT(status.ToString(),
              ::testing::HasSubstr("Invalid argument: Input is empty"));
}

TEST_P(RegressorTest, EmptyExampleList) {
  TF_ASSERT_OK(Create());
  request_.mutable_input()->mutable_example_list();
  const Status status = regressor_->Regress(request_, &result_);
  ASSERT_FALSE(status.ok());
  EXPECT_THAT(status.ToString(),
              ::testing::HasSubstr("Invalid argument: Input is empty"));
}

TEST_P(RegressorTest, EmptyExampleListWithContext) {
  TF_ASSERT_OK(Create());
  // Add a ExampleListWithContext which has context but no examples.
  *request_.mutable_input()
       ->mutable_example_list_with_context()
       ->mutable_context() = example_with_output(3);
  const Status status = regressor_->Regress(request_, &result_);
  ASSERT_FALSE(status.ok());
  EXPECT_THAT(status.ToString(),
              ::testing::HasSubstr("Invalid argument: Input is empty"));
}

TEST_P(RegressorTest, RunsFails) {
  MockSession* mock = new MockSession;
  bundle_->session.reset(mock);
  if (GetParam()) {
    EXPECT_CALL(*mock, Run(_, _, _, _, _, _))
        .WillRepeatedly(
            ::testing::Return(errors::Internal("Run totally failed")));
  } else {
    EXPECT_CALL(*mock, Run(_, _, _, _))
        .WillRepeatedly(
            ::testing::Return(errors::Internal("Run totally failed")));
  }
  TF_ASSERT_OK(Create());
  *request_.mutable_input()->mutable_example_list()->mutable_examples()->Add() =
      example_with_output(2.0);
  const Status status = regressor_->Regress(request_, &result_);
  ASSERT_FALSE(status.ok());
  EXPECT_THAT(status.ToString(), ::testing::HasSubstr("Run totally failed"));
}

TEST_P(RegressorTest, UnexpectedOutputTensorSize) {
  MockSession* mock = new MockSession;
  bundle_->session.reset(mock);
  std::vector<Tensor> outputs = {Tensor(DT_FLOAT, TensorShape({2}))};
  if (GetParam()) {
    EXPECT_CALL(*mock, Run(_, _, _, _, _, _))
        .WillOnce(::testing::DoAll(::testing::SetArgPointee<4>(outputs),
                                   ::testing::Return(Status::OK())));
  } else {
    EXPECT_CALL(*mock, Run(_, _, _, _))
        .WillOnce(::testing::DoAll(::testing::SetArgPointee<3>(outputs),
                                   ::testing::Return(Status::OK())));
  }
  TF_ASSERT_OK(Create());
  *request_.mutable_input()->mutable_example_list()->mutable_examples()->Add() =
      example_with_output(2.0);
  const Status status = regressor_->Regress(request_, &result_);
  ASSERT_FALSE(status.ok());
  EXPECT_THAT(status.ToString(), ::testing::HasSubstr("output batch size"));
}

TEST_P(RegressorTest, UnexpectedOutputTensorType) {
  MockSession* mock = new MockSession;
  bundle_->session.reset(mock);
  // We expect a FLOAT output type; test returning a STRING.
  std::vector<Tensor> outputs = {Tensor(DT_STRING, TensorShape({1}))};
  if (GetParam()) {
    EXPECT_CALL(*mock, Run(_, _, _, _, _, _))
        .WillOnce(::testing::DoAll(::testing::SetArgPointee<4>(outputs),
                                   ::testing::Return(Status::OK())));
  } else {
    EXPECT_CALL(*mock, Run(_, _, _, _))
        .WillOnce(::testing::DoAll(::testing::SetArgPointee<3>(outputs),
                                   ::testing::Return(Status::OK())));
  }
  TF_ASSERT_OK(Create());
  *request_.mutable_input()->mutable_example_list()->mutable_examples()->Add() =
      example_with_output(2.0);
  const Status status = regressor_->Regress(request_, &result_);
  ASSERT_FALSE(status.ok());
  EXPECT_THAT(status.ToString(),
              ::testing::HasSubstr("Expected output Tensor of DT_FLOAT"));
}

TEST_P(RegressorTest, MissingRegressionSignature) {
  tensorflow::serving::Signatures signatures;
  signatures.mutable_default_signature();
  TF_ASSERT_OK(tensorflow::serving::SetSignatures(signatures, meta_graph_def_));
  TF_ASSERT_OK(Create());
  Feature feature;
  feature.mutable_bytes_list()->add_value("uno");
  Example example;
  (*example.mutable_features()->mutable_feature())["class"] = feature;
  *request_.mutable_input()->mutable_example_list()->mutable_examples()->Add() =
      example;
  // TODO(b/26220896): This error should move to construction time.
  const Status status = regressor_->Regress(request_, &result_);
  ASSERT_FALSE(status.ok());
  // Old SessionBundle code treats a missing signature as a FAILED_PRECONDITION
  // but new SavedModel code treats it as an INVALID_ARGUMENT (signature
  // specified in the request was invalid).
  if (GetParam()) {
    EXPECT_EQ(::tensorflow::error::INVALID_ARGUMENT, status.code()) << status;
  } else {
    EXPECT_EQ(::tensorflow::error::FAILED_PRECONDITION, status.code())
        << status;
  }
}

// Test all RegressorTest test cases with both SessionBundle and SavedModel.
INSTANTIATE_TEST_CASE_P(UseSavedModel, RegressorTest, ::testing::Bool());

}  // namespace
}  // namespace serving
}  // namespace tensorflow

redpajama_set_name: RedPajamaGithub


The Sacred Union Aromatherapy Mist is intended to help you unfold the beauty of desire. The mist is a blend of Patchouli, Sandalwood, Sweetgrass, and Vanilla essential oils. The mist helps release negative emotions, relax and uplift you, bring spiritual attraction, and has a welcoming aroma that has a euphoric effect and sets the sensual mood.


text:
Home»Technology»Gaming»A new gameplay shows the new maps of Battlefield 2042
A new gameplay shows the new maps of Battlefield 2042
By Anuradha Mudad October 29, 2021 No Comments2 Mins Read
There is now just over 2 weeks for the launch of Battlefield 2042, the new installment of the famous DICE franchise, which saw its arrival on the market delayed a few weeks to ensure that the title arrived as polished as possible to the market.
After the public beta that took place a few weeks ago, the people of Ripple Effect Studios have had a lot of feedback to fix the different problems of the title. Now, the people of the studio show us a new gameplay in which we can see 3 of the new Battlefield 2042 maps.
In the new gameplay, which is just under a minute and a half long, We have seen three of the new Battlefield 2042 maps, which will be called Renewal, Breakway and Discarded. The first of them will be set in Egypt, with a layout that promises great fights.
On the other hand, Breakaway will be set in Antarctica, being a map that promises clashes in large open areas, with an oil plant in the center that will focus the action on several occasions in complete safety.
Battlefield 2042 Gets New Trailer Detailing Five New Specialists
Finally, we have Discarded, located in India, and whose main remarkable sign is that it will be full of containers, with a port area being the one that promises to attract players for the most important moments of the game.
Battlefield 2042 will hit the market on November 19 for Xbox Series X | S, Xbox One, PS5, PS4, PC and Stadia.
Read: Long-awaited improvements come to Rust with its latest update


Reading progress update: I've read 182 out of 182 pages.
I didn't love it as a lot of people said I would, but I did really like it.
I've not been around much lately (eh, life), but I'm hoping to change that in the coming days. Is anyone even still playing snakes and ladders anymore!? I've been going ridiculously slowly (as is my norm), but I'll keep playing for another while just to see more puffins on my board!
I finished The Great Gatsby and Spide: The Lost Tribes, which I loved, for very different reasons. I could only roll 1 die and got a 3, which takes me to square 12. I now have to read a book where the authors last name begins with T, U, V, W, X, Y or Z and I'll either pick a classic or a non-fiction, as I'm really getting into them.
right? Well no one told this to Stan and he's about to score the 'Hat Trick' to end all 'Hat Tricks' but honestly it's not on the ice.
I adore Stan and Erik, along with Erik's son Noah and Stan's mom and sister the family they're creating is so much fun to spend time with but now with the ringing of a phone things are about to change in ways that neither Stan or Erik had anticipated...wanted but hadn't quite anticipated yet.
Stan's heading back to Russia to collect his cousin's orphaned children and bring them back to America to become a part of the 'someday' family that he and Erik want to have...only, someday maybe wasn't suppose to be quite so soon.
I loved how Stan and Erik just did this...there was no should we? shouldn't we? this is family and they need a home so yes, there were logistics to deal with but doing it, giving these two children a home was never a decision to be made but that's not to say that there weren't concerns...Stan's gay and he's in a relationship with a man...it's not a secret and Stan's heading back to Russia...not a great place to go if you're gay...but he knows people.
So while it's stressful for Stan having to go back to Russia and for Erik having the man he loves travel to a place that's maybe not the safest place for him to be on his own no matter how big of a bear he is. What there isn't is a lot of unnecessary drama...me likey!
The focus of this story was Stan and Erik and while each man had their own pressure to deal with to make this happen they did it and they did it as a couple...no added drama or 'miscommunications' just a couple working together to make something that needed to happen...happen. Actually it wasn't even just a couple because Stan's mom was right there to do her part and Stan's sister totally stepped in to help as well because hey, this is what family does.
I adore this series it's just so easy to get into and as much as I love Stan and Erik or Ten and Mads, I'd love more about the other characters we've met as well...like...Layton and Adler, Trent and Dieter, Max and Ben or one of my other personal favorites Bryan and his tattoo artist Gatlin...more about any or all of these men would not be amiss in my world.
Sometimes it comes down to screw the angst and conflict and extra drama I just want something with characters who make me smile and stories that keep making me smile and leave me feeling like my world's a little bit of a better place and the 'Harrisburg Railers' do that for me.
An ARC of 'Hat Trick' was graciously provided by the authors in exchange for an honest review.
"The Great Gatsby" is essentially a love story. Daisy turns out to be as unattainable to Jay as Beatrice was to Dante but this being the US, the hero doesn't elevate his idol to muse status; instead he embarks on a ruthless pursuit that ends up destroying him.
It's difficult in the present era of throwaway relationships to comprehend the extent of Gatsby's romantic obsession. The questions are: 1) would he have taken to crime had Daisy returned his love and told her wealthy family to go to hell and 2) did he love Daisy precisely because she was a romantic chimera, a glamorous woman who represented a rarefied world he wished to conquer?


text:
Tuesday, May 9, 2006 3:13:44 PM
Initial investigation of mortality causes in free range layer flocks
S. Shini, G.D. Stewart, A. Shini and W.L. Bryden
Data on mortality were collected from the start of lay to 45 weeks of age.
Mortality causes were diagnosed from gross necropsy only and the examinations were performed for the period from 30 to 45 wks of age.
All dead/culled birds were collected daily, immediately refrigerated, and necropsied weekly. Samples for microbiological and pathological examination were not collected because of the delay between death and necropsy in many cases.
The results show that from start of lay until 45 weeks of age the average mortality rate in the free range flocks was 2.7% (1.7%, 1.7%, and 4.8%, respectively for each replicate).
Of the birds necropsied 85 percent showed fresh and profound lesions/wounds; evidence of cannibalism. Additionally, there were dead birds (12 percent of examined birds) that did not exhibit external wounds and died due to cachexia (from stress and/or malnourishment).
Examination of the reproductive tract of cachectic birds confirmed the presence of an undeveloped ovary and lack of large yellow follicles. The cause of death was also unclear in two cadavers (no signs of infectious or non-infectious diseases were found).
The gross pathology findings indicated that cannibalism was the cause of death in 85 percent of all cases, which took the form of body pecking (50 percent of all cases, with a significance of pecking more on the left side than on right side of the tail), vent pecking (35 percent of all cases), and head pecking (15 percent of all cases).
Feather picking and cannibalism, which frequently occurs in free-range poultry, were among the major causes of mortality in three free range flocks.
A wealth of factors such as environmental, ontogenetical and genetical may have played a role in the development and spread of feather-pecking and cannibalism behaviours in the flocks.
Pecking started during rearing when mortality rate was very low, feather pecking was insignificant and no cases of death due to cannibalism were recorded.
Cannibalism started to appear as feather pecking with the start of lay, probably developed and spread as an abnormal pecking behaviour emphasising changes in the hormonal status of the hen, high light intensities and social stress.
The literature indicates that selective breeding of chicken for gentler behaviour could provide an alternative approach to address these problems and improve the welfare of free-range layers. However, the development of cannibalism is still unclear.
More research is needed on the motivational and learning components in selective breeding for high group productivity and survivability that would result in reduced mortality from cannibalism and improved productivity.
For more of the article, please click here
Article made possible through the contribution of the Australian Poultry Science Symposium (APSS) 2006.


This course will give learners the required knowledge and skills to perform oral suctioning on service users who require this as part of their care requirements. The course itself will cover essential knowledge around the legal and professional implications of carrying out this procedure, as well as providing the learners with a step-by-step guide on the procedure and when to refer onto other health and social care professionals for further help and guidance.
Learners will be assessed throughout the course on their participation and knowledge of the subject. They will also undertake a knowledge assessment at the end of the course to demonstrate their learning and allow them to evidence this as part of their CPD.
Define what is meant by the term oral suctioning?


We provide top notch IT consulting services & solutions to corporate, non-profit and educational institutions.
Developing Amazing Solutions with Passion since 2006.
We were founded on the idea that IT projects needn't seem daunting, and shouldn't drag on for ages. Further, an IT project should be easily understood by both the technical and business sides of the project team. We have a unique combination of experience spanning over 15 years of both business operations and system development, allowing us to provide high quality, efficient and beautiful solutions custom tailored to our client's needs.
Our team is small enough to give each client the personal attention they deserve, while agile enough to take on IT projects of any scope and size. Our approach is to first evaluate, document and understand the business requirements, which we then utilize to create the perfect solution to meet your business needs.
Our clients range from $100+ Billion dollar financial firms to Silicon Valley start-ups -- and everything in between. Regardless of client size or project scope, we pay equal attention to each and every effort on our plate and always deliver exceptional products right on time.
Our central focus is to help your business achieve greater efficiency through better use of technology.
We focus on building custom software solutions for Desktop, Server, Mobile and Web environments. We've built everything from small-scale Windows apps to n-tiered enterprise systems.
Manual tasks within your operation will often yield errors and decrease productivity. We specialize in converting your manual processes into automated solutions -- reducing operational risk and saving money.
Our extensive experience in both business operations and IT allow us to provide effective project management services to your project team. We can confidently lead your IT project or simply help fill in the gaps of your existing team.
We're experts in all things data -- including data mining, transformation, preparation, cleansing, analysis and reporting. We leverage this expertise to provide our clients with robust reporting & analytical solutions.
We design & develop stunning and innovative solutions for our clients.
We take pride in our work, and we strive to exceed all expectations with our deliverables. We don't just provide services, we build hand-crafted solutions.
No two businesses are alike, and nor should be the software they rely on. Our solutions are custom-built to precisely meet your unique requirements.
Just like your business, the software which you rely on will evolve over time. All of our solutions are built to easily adapt to your growing business.
Our solutions are designed to reflect your institution's brand and image -- whether internal or public facing.
Quality coding is an art. Clean coding is necessary for both efficiency of current functionality, as well as flexibility for future enhancements.
We're confident in what we do, and will stand behind it with amazing support. Our support agreements are custom tailored to your needs.
Here's a few of the awesome solutions we've delivered.
We designed, developed and implemented an ultra-portable yet robust residential & income-producing loan review system for a large wholesale lender. The system is comprised of two Windows thin client apps, a portable database environment and a home base module for centralized review data warehousing, reporting and on-site review scheduling.
The data capture client applications were designed to work in full, limited and zero connectivity modes to ensure seamless functionality under any scenario the review team might encounter. Users can switch between networked and stand-alone modes at any time during the review, easily syncing back up when a connection is available.
The system is capable of handling the core customer mortgage review functions within our client's collateral department, including review scheduling, customer prioritization, loan sampling, onsite & remote data capture, QC review, ad-hoc & template-driven reporting and haircut (margin) calculation.
We developed and implemented a custom reporting tool to automate and streamline the submission of mortgage data to a federal agency. The reporting engine pulls data directly from the client's transactional system, which is then scanned for inconsistencies and exported to a series of custom-formatted data files for upload -- all with the click of a button. Submission history is maintained within the tool at the loan level ensuring all records are reported, and duplication in future submissions is avoided.
Prior to deploying the new reporting tool, the existing process required involvement from two departments and numerous analyst hours to assemble, clean, format and create the resulting reports. The solution we delivered cuts involvement down to a single analyst within the business unit and minutes (not hours) to prepare the data.
Perhaps more important than the time savings is the reduction in operational risk brought about by the new application. When data is being reported to any government agency, accuracy of that data is of utmost importance.
We designed and developed a responsive data capture form which is distributed online, completed by applicants remotely and submitted back to our client for import into their transactional system. We met these requirements by building a self-validating Excel Form which accepts, cleans, formats and preps the data for import into the client's core system.
The form's embedded validation engine provides real-time feedback to alert the user when invalid data is entered, and to keep them apprised of overall application progress. This real-time feedback ensures each application returned to the client is complete and virtually error-free. Once submitted to the client, the data can be uploaded to their core system for further evaluation.
We also supplied a comprehensive Technical Instructions Guide and put together a Tutorial Presentation along with the new Application Form to assist with the rollout.
We developed a workflow management tool which hooked directly into the client's core grant management system's database, effectively allowing us to extend system functionality without requiring enhancements to the core transactional system.
The application provides functionality to track and assign grant applications to business analysts across the entire review lifecycle. Additionally, the application has a suite of reports that can be generated with the click of a button, covering standard tracking metrics, review turn-times, and analyst performance. Lastly, the application generates a review summary report for each grant application once the review has concluded -- pulling and aggregating data from its own database, the core transactional system and several linked Excel workbooks into a single, concise PDF report.
The client utilizes this workflow management tool to replace several former disjointed tracking spreadsheets, allowing the team to work more effectively and provide metrics to management with ease throughout the six month review lifecycle.
We developed and installed a custom email processing engine which automatically parses & files trade confirmation email messages sent to the application's email account. The system processes emails received by parsing the subject line for targeted key words and performing several tasks such as document filing, folder creation and command processing based upon the key words extracted. The result is an organized folder and file structure on the client's file server which simplifies future retrieval of trade confirmation documentation, as well as satisfying their regulatory documentation retention requirements.
The application implements multiple complex logic routines to handle scenarios when documentation needs to be filed into several folders simultaneously, as well as systematically modifying file system folder names based upon new trade information discovered. What's more, the application automatically handles versioning when filing the documentation to ensure users can easily follow the documentation trail and timeline of events within each trade folder.
The system handles parsing of emails sent from any device - mobile or desktop - allowing the business users to put the filer into action whenever and from wherever they are working. A concise report is automatically sent back to the user's email account detailing the filing results, as well as providing links to the folders where documentation was filed.
We built a custom framework to facilitate communication between buyers and sellers of securities within a secure online trading platform. The framework accommodates private messaging between users on the platform, as well as providing blogging and news-feed services to both investors and organizations within the exchange. News articles published in the framework are subjected to multiple levels of privacy to ensure only appropriate users within the platform can read and reply to the published content.
The framework is comprised of several components spanning the entire LAMP stack, seamlessly working together to provide the functionality required by the client for their trading platform. Additionally, a documented API was also provided allowing the client to easily integrate the messaging framework into their core system -- providing simple hooks and calls to pass their application objects and data into the messaging framework and vice-versa.
Mobile devices are great, but they have really small screens. We'd love to show you what we've done on a bigger screen, so please load up our site from your desktop or tablet to see our portfolio. If you're on your tablet, try putting it in landscape mode to see if the screen is wide enough. If you're on your desktop, try making your browser window a bit bigger.
We've been using Tappan Tech for years in a variety of development and analytical capacities and they've always far exceeded our expectations with each deliverable. The solutions provided by Tappan Tech have streamlined several of our operations, resulting in greater efficiency and increased accuracy. We can always count on them to deliver a quality product on-time and within budget. It is easy to give Tappan Tech the highest recommendations to anyone seeking business improvement solutions.
We contracted Tappan Tech to redesign and implement a new website for our law firm, replacing the former outdated version. The entire experience was seamless and professional, and our new site was up and running in no time. We highly recommend Tappan Tech's web development services.
We were searching for an automated email filing solution to parse and file trade documents for quite some time prior to reaching out to Tappan Tech. Other vendor solutions were both costly and required us to compromise on our requirements. Once we reached out to Tappan Tech, a working prototype which met our exact needs was demonstrated within weeks, followed by a production ready version shortly thereafter. We highly recommend Tappan Tech for cost-effective and high quality application development services.
Let's get this conversation started. Drop us a note and we'll get back to you within 24 hours.
Great! Your message has been sent and we'll get back to you shortly.


Decision Logic provides operating and reporting solutions to the nation's top restaurants and food service organizations. Our software is designed by restaurant operators with store-level and above-store management in mind.
Launched in 1998 as the first web-based food cost product for a large Applebee's franchisee, Decision Logic was created by restaurateurs with operational efficiency as the vision. Today Decision Logic proudly serves over 50 brands and save operators more than $37.5 million in food and labor costs every year.
In 2014, Decision Logic partnered with Aviture to expand development expertise and catapult products to the next level. Aviture is a team of world-class software engineers focused on enterprise-grade products with consumer-grade simplicity. Aviture headquarters are located in Omaha, NE.
Aviture's experience in the restaurant industry includes working with Yum! Brands, Applebee's, and major suppliers like Coke, providing a unique insight into the needs of restaurant operators. Together we have adopted a lean approach to product development that has our customer at the center.


text:
package org.apache.shindig.gadgets.oauth;

import com.google.common.base.Preconditions;

/**
 * Thrown by OAuth request routines.
 * @since 2.0.0
 */
public class OAuthRequestException extends Exception {

  /**
   * Error code for the client.
   */
  private String error;

  /**
   * Error text for the client.
   */
  private String errorText;

  /**
   * Create an exception and record information about the exception to be returned to the gadget.
   * @param error
   */
  public OAuthRequestException (OAuthError error) {
    this(error.name(), error.toString());
  }

  /**
   * Create an exception and record information about the exception to be returned to the gadget.
   * @param error
   * @param errorText
   */
  public OAuthRequestException (OAuthError error, String errorText) {
    this(error.name(), String.format(error.toString(), errorText));
  }

  /**
   * Create an exception and record information about the exception to be returned to the gadget.
   * @param error
   * @param errorText
   * @param cause
   */
  public OAuthRequestException(OAuthError error, String errorText, Throwable cause) {
    this(error.name(), String.format(error.toString(), errorText), cause);
  }

  /**
   * Create an exception and record information about the exception to be returned to the gadget.
   * @param error
   * @param errorText
   */
  public OAuthRequestException(String error, String errorText) {
    super('[' + error + ',' + errorText + ']');
    this.error = Preconditions.checkNotNull(error);
    this.errorText = Preconditions.checkNotNull(errorText);
  }

  /**
   * Create an exception and record information about the exception to be returned to the gadget.
   * @param error
   * @param errorText
   * @param cause
   */
  public OAuthRequestException(String error, String errorText, Throwable cause) {
    super('[' + error + ',' + errorText + ']', cause);
    this.error = Preconditions.checkNotNull(error);
    this.errorText = Preconditions.checkNotNull(errorText);
  }

  /**
   * Create an exception and record information about the exception to be returned to the gadget.
   * @param message
   */
  public OAuthRequestException(String message) {
    super(message);
  }

  /**
   * Create an exception and record information about the exception to be returned to the gadget.
   * @param message
   * @param cause
   */
  public OAuthRequestException(String message, Throwable cause) {
    super(message, cause);
  }

  /**
   * Get the error code
   * @return
   */
  public String getError() {
    return error;
  }

  /**
   * Get a meaningful description of the exception
   * @return
   */
  public String getErrorText() {
    return errorText;
  }

  @Override
  public String getMessage() {
    return errorText;
  }

  @Override
  public String toString() {
    return '[' + error + ',' + errorText + ']';
  }
}


The microsite is a popular solution to certain design challenges. But, what are they, when should you use them and how can you create an effective one?
What makes an effective microsite?
But let's start with the fundamental question of what exactly makes a microsite.
A microsite is an individual web page or a small cluster of pages which are meant to function as a discrete entity within an existing website or to complement an offline activity. The microsite's main landing page can have a dedicated domain name or subdomain.
Exactly what is and isn't a microsite is up for debate. For example, is the Häagen-Dazs website a microsite because the product is a part of Nestlé ?
Much like a chainsaw, a microsite can be a useful tool in the right hands or disastrous in the wrong ones.
For our purposes, it refers to a site that is associated with an organisation but is on a separate domain and has custom navigation, design and content.
Whatever your definition, there is little doubt they are popular. Why, then, do so many organisations favour the microsite.
Microsites provide the site owner with complete control over design. That allows them to tie the microsite in with the visual appearance of the marketing material that the company is using on the associated campaign.
It also allows them to create a visual language designed specifically to the user segment that they are trying to reach. That is particularly valuable when the main site has to cater to a diverse set of people.
That kind of flexibility is not something that is usually possible if the company chooses to add microsite content to the existing website.
Also, microsites remove the distractions that integration into the main corporate site would bring. Primary site navigation is removed, as well as footers and other irrelevant elements.
That can feel important in larger corporate organisations. Typically they have large sites that are many levels deep and made up of numerous subsections. That can make navigation feel cumbersome and in many contexts damaging to the experience.
By contrast, microsites allow the user is focused purely on the campaign and associated calls to action.
By using a microsite for their walking guide of New York, the New York Times was able to avoid the clutter of their main site.
Finally, many organisations favour microsites because they are cleaner to manage internally. A single department can run each website, or the company can associate the site with a specific project. That helps define clear lines of responsibility and ownership.
Put this way; microsites look like an attractive option. However, they come with drawbacks as well.
One of the most significant problems with microsites is that they force users to adapt to different user interfaces. They visit the main corporate website, click on a link and find themselves on a microsite. Suddenly the design is different, navigation has changed, and there is often no clear way back. In short, it breaks every principle of good user interface design.
One of the biggest problems with microsites is that they force users to adapt to different user interfaces.
Of course, organisations see things differently. They view the world as a series of marketing campaigns or product lines. They believe users see an advertisement, make a note of the URL in the ad and then go to the website. They do not visit the main corporate site and so do not need to interact with multiple interfaces.
To a limited extent, they are correct. However, there are enough exceptions to make this a problem.
First, as I have suggested above, some users stumble across the microsite while exploring the main site.
Second, there are those who saw the campaign but didn't make a note of the URL. They just remembered the advertisement was by a particular organisation. Googling that company will take them to the main site and not the microsite.
Third, most microsites are not entirely self-contained. Sooner or later they require the user to engage with the wider organisation and so the user has to return to the main corporate site.
Microsites can create a disjointed and inconsistant experience for users.
Not that confusing the user is the only concern. You also need to consider the cost of microsites.
There is a substantial and often unjustified cost associated with the creation of a microsite. The site has to go through the complete design process, be built and hosted on a content management system and may well need additional functionality such as community features, payment processing or newsletter signup.
There is a substantial and often unjustified cost associated with the creation of a microsite.
If the microsite's content were to become a part of the corporate site, then the costs of design and build would be reduced. The basic design is already in place, as is the content management system. Even the more specific functionality like payment processing or newsletter signup often already exists on the main site.
Not that design and technology are the only cost associated with running a microsite. There is also maintenance.
Things change rapidly online and as a result, a website cannot just be launched and then abandoned. For a site to remain effective, it requires long-term maintenance.
Microsites that looked cutting edge when a company launched them can turn into an embarrassment that reflects negatively on the organisation behind them.
Microsites that looked cutting edge when they were launched can turn into an embarrassment.
Worst still, a site that was fine on launch can become inaccessible for a significant part of its target audience as technology changes.
One example of this was 'responsive design'. When organisations realised that sites needed to be accessible on mobile devices, they turned to responsive design as an answer. Updating their corporate website was at the top of their agenda. However, what about the microsites they ran? Each had a different design and different underlying technology. That meant they had to update each site separately. If all of these microsites had existed within the main corporate website, the organisation could have avoided that additional expense.
With so many pros and cons, how do you decide whether to launch a microsite or incorporate your campaign within the main site?
As with all things, there is no definitive answer about when to use a microsite. However, there are some questions you might wish to ask.
How Long Will the Site Need to Be Live?
Consider the lifespan of the microsite. If the content is only going to be around for a few months, then a microsite may be appropriate. Short-lived campaigns do not need to worry about the ongoing costs of maintenance.
Ask yourself how users will hear about the microsite. If they are coming to the site via clicking on a banner ad, then you don't need to worry about them accidentally ending up on the main corporate website and having to deal with multiple interfaces.
Think carefully about whether the user will need to visit the main corporate site. If they do and you are using a microsite, this could become a point where you lose users.
Could You Do It Within the Corporate Site?
Find out how flexible the main corporate website is. Maybe the design and layout could be customised enough to support the needs of the campaign.
Weigh the return on investment. If you invest money in creating an expensive microsite, will the campaign generate enough additional returns over using the corporate website?
See also: Website SWOT analysis: A 'How To' Example of Best Practice.
As well as asking ourselves about when microsites are appropriate, we also need to consider what microsites mean for our corporate site.
I believe the prevalence of microsites sends a clear message: most corporate websites are not fit for purpose.
A corporate website should be able to represent the depth and breadth of an organisation. If marketers need to fall back on microsites, this is a pretty clear indication that corporate websites are failing to do this.
In particular, I believe that corporate websites are failing marketers in two ways; design flexibility and focusing users.
Most corporate websites I encounter are so locked down and inflexible that they mostly offer a one size fits all container for content. You pour copy in, and it appears in one of a pre-defined number of buckets.
Too many corporate websites consist of a one size fits all template that content is poured into. There is no control over the design.
The reason these tools are not made available is that web teams are fearful that given too much freedom marketers will create an inconsistent user experience. They worry that too many changes between sections on the site will confuse users.
Ironically marketers want to create a consistent user experience too.
Ironically marketers want to create a consistent user experience too. It's just that they are trying to make the experience consistent across their campaign. They want the experience between ad, website and completion of a call to action, to be as smooth as possible. That is precisely why they want greater control over the design of the site.
Most web designers like to think of themselves as user-centric. That has become so ingrained in the web design community that I believe sometimes it is detrimental, especially among less experienced designers.
For example, naively, many web designers seem to believe that it is their job to give users what they want. Unfortunately, things are more complicated than that. Users suffer from choice paralysis and become confused by too many options or get distracted.
Users suffer from choice paralysis, are confused by the options or simply get distracted.
Marketers understand that users need to be focused. They are obsessed with reducing the number of options and removing clutter that may distract. That is one of the primary reasons why they like microsites.
If they incorporate their campaign into the main site, marketers find themselves dealing with the baggage that comes with that. In particular, they will have to include the site's navigation.
It's a fair comment. I am often amazed at how much real estate sites dedicate to navigation on the average corporate site. In fact, I have even seen occasions where the amount of space devoted to navigation is higher than the amount dedicated to content!
Like many websites, the Unilever site dedicated significant portions of the user interface to navigation.
If we are going to create enormous corporate sites that perform well for marketers and replace the need for microsites, we need to change our thinking about navigation.
Don't get me wrong; keeping navigation in a consistent location and on every page is essential. However, there is much we can do to minimise its impact.
That is an area that needs further exploration and research, but options might include collapsing navigation on lower pages of a site or introducing a breadcrumb-like approach I first suggested back in 2004.
All of this leaves us at a bit of an impasse. Microsites are often not the best approach, yet our corporate sites are letting us down. How then do we solve this dilemma?
The whole debate about which approach is preferable rages on in many organisations.
Unfortunately in my experience companies rarely confront this problem head-on. Instead, there is an ongoing turf war between the centre and the individual divisions. Unsurprisingly the web (and users) are caught in the middle.
In some organisations, the centre wins with branding becoming centralised. The website ends up presenting a unified vision of the company. Apple is an excellent example of this, with their website providing an incredibly focused view across all of its products and services.
Apple enforce a consistent look and feel across all of is products and services.
Other organisations are the complete opposite, allowing divisions to dictate their brand. Instead of a single mega-site, they build an interconnected network of smaller sites. Nestlé is an excellent example of this, with no design consistency existing between microsites like Kitkat and Nespresso.
Nestlé has no design consistency across brand microsites.
At first glance, you would think that a unified mega-site like Apple provides a better user experience. Although this can often be the case, it is not always so. As I have already said, these large mega-sites have increasingly complex navigational challenges, and it is easy for users to become lost when all the pages look very similar.
Of course, we are not just limited to these extremes. Other companies have found a middle way. Virgin, for example, allow their brands to create separate sites and yet use their corporate colour to help maintain unity.
Virgin uses colour as a tool for unifying their various websites.
However, an even better example is the BBC. From my perspective, they hit the sweet spot between uniformity and overly rigid conformity.
When you look at the BBC microsites, you will see different design styles aimed at different target audiences. However, there is a certain degree of uniformity across each site regarding navigational positioning, typography, grid system and stylistic elements.
The BBC maintain consistency through navigational, typography, grid system and stylistic elements.
That is achieved through the creation of a Global Experience Language. This design language is used across all BBC sites and ties them together. However, it still provides enough flexibility for individual divisions to stamp their brand on a website and cater for the specific needs of their audience. Best of all this approach does not undermine the user experience across the sites because of a consistent approach to navigation, layout and functional elements (such as a carousel).
See also: How to create a pattern library and why you should bother.
Not that the approach is without its downsides. It requires a central team with enough authority to enforce the design language (something that some organisations just don't have), and yet it still has some of the costs associated with designing separate sites. Also, careful consideration needs to be given to navigation so it does not come to dominate the interface.
That said, I believe there is a lot that larger organisations can learn from this approach and that it could be used to resolve a lot of internal politics.
What we learn from all of this is that there is no one-size-fits-all solution when it comes to microsites. Although not always desirable, there are times when a microsite makes sense. With that in mind, let's turn our attention to what makes an effective microsite.
We know that microsites tend to work best with a limited lifespan, with a well-defined audience and no need to integrate with a broader site. Knowing this helps us define what makes an effective microsite.
For a start, because we know that the microsite is a part of a broader campaign it needs to tightly integrate with that in both visual language and written style.
In other words, going from a Facebook advert to your microsite needs to feel like part of a consistent experience. Equally, any emails sent from the microsite need to reflect the design and content found on the site.
Because we should be building microsites around a campaign, it is essential that they remain focused. We should focus them on promoting a single product or appealing to a narrow demographic. The more we can do this, the more effective the site will be.
The data that lies beneath works well because of its clear focus on a simple narrative.
We should design most microsites with the emphasis on conversion. They exist to drive users through a sales funnel towards a call to action.
Successful microsites are those who have a defined, singular, call to action. The entire site is structured around getting users to complete that one goal, unlike standard websites which can often have multiple calls to action competing for attention.
Because microsites have a singular purpose, it makes it possible to integrate the design and copy together more tightly. Successful microsites have a high degree of art direction and often adopt a more creative approach than you might find on the main site.
Every Last Drop works well because it closely integrates design, copy and interation into a seemless experience.
At the beginning of this post, I described microsites as being like chainsaws. That, they can be a useful tool in the right hands or disastrous in the wrong ones. In other words, like a chainsaw, you must handle them with care.
You have to be sure they are the right tool for the job. Otherwise, microsites can create a disjointed, unpleasant experience for users and will fail to convert as you hope.
That said, done right, they can be the ultimate online conversion funnel. It all comes down to knowing when and how to use microsites. If that is something you need help with, get in touch.


LaserJet Enterprise M552 toner. Our Ink and Toner finder ensures the best supplies and maximum savings for your HP LaserJet Enterprise M552 Toner Cartridges. The LaserJet Enterprise M552 uses the HP LJ Ent. M553, 508A Black Toner, HP LJ Ent. M553, 508A Cyan Toner, HP LJ Ent. M553, 508A Magenta Toner, HP LJ Ent. M553, 508A Yellow Toner, HP LJ Ent. M553, 508X Black HY Toner, HP LJ Ent. M553, 508X Cyan HY Toner, HP LJ Ent. M553, 508X Magenta HY Toner, HP LJ Ent. M553, 508X Yellow HY Toner. We 100% guarantee your satisfaction on our products and service. Thank you for shopping at Inkjetcartridges.com.


text:
One of Holly Willoughby's favourite dresses from M&S is now on sale for a bargain price
But be quick - it's gonna fly off the shelves
Michelle Townsend
It's no secret that Holly Willoughby is a style icon.
Anytime she shares an outfit picture on Instagram, hundreds of fans rush to compliment her and ask her where it's from.
The This Morning star recently wore a beautiful print dress from Marks & Spencer, which was a huge hit with her fans.
Holly teamed the gorgeous number with a trench coats and cute pair of boots and looked stylish as ever.
(Image: Instagram/hollywilloughby)
Everyone is obsessed with Holly Willoughby's gorgeous trousers from L.K Bennett she wore on This Morning
A lot of her followers had their eye on it, and if you were one of them, we have some great news for you!
The dress was originally priced at €54, but has now been reduced to only €30 as part of an M&S sale - an absolute bargain, if you ask us.
But there is only a few left as the dresses are selling so quickly, so head over to their website here to snap it up.
See the pics of the stunning dress below
In pictures: M&S Diamond Print Shirt Midi Dress
Mum-of-three Holly is a big fan of Marks & Spencer, and last year started collaborating with them - something which she considers to be a "perfect partnership."
The TV presenter told HELLO! : "If you ask my kids what my favourite shop is, they'll say Marks & Spencer's - whether it's buying food or clothes, I love it. So it was a no brainer and the perfect partnership for me, really.
"I have this thing where if I'm going to be taken away from my home life it has to be really believable and something i enjoy and this was all of those things. It's just been lovely to do it - super exciting.
We love Holly Willoughby
Holly breaks silence on Phillip rift
Holly with kids Harry, Belle, & Chester
Unseen pic with Dad from wedding to Dan
Holly red faced sex confession
This summer Holly will release her fifth collection with the hugely popular retailer. Speaking about it, she told the publication: "It's really wearable - they're all clothes that I would have in my own wardrobe.
"What's nice about this collection as well is that it's a real summer capsule collection. Everything in it sort of ties in, so if you're going away on holiday and you just want to shove a couple of bits in your bag, everything intermingles quite nicely for you to have this lovely summery, cool vibe - it all works."
Download the RSVPLive App today
Keep up-to-date with all the very latest celebrity, health, beauty, parenting and entertainment news with the RSVPLive.ie app
Only select news that interests you by picking the topics you want to display on the app's homepage.
Plus, our enhanced user experience includes live blogs, video, interactive maps and slick picture galleries.
Download it now and get involved.
Click here to download from the app store. or here for Google Play.


text:
Home/St Louis Cardinals All-Time Lists
St. Louis Cardinals: Top Ten Free Agent Signings
By Steven McNeil
#5 Reggie Sanders
Oct 9, 2015; St. Louis, MO, USA; Reggie Sanders throws out the first pitch before game one of the NLDS between the Chicago Cubs and the St. Louis Cardinals at Busch Stadium. Mandatory Credit: Jeff Curry-USA TODAY Sports
I almost didn't include Reggie on this list. He did only play two season in St. Louis, but was a large part of those two teams' in 2004 and 2005. He was brought in during the 2003 offseason to play RF/LF, and was on his seventh team in seven years. In his first season, (which was the only full season he played) he finished the year with a slash of .260/.315/.482 with 52 extra-base hits (27 doubles, 22 homers, and 3 triples) and 67 RBI.
Playing in only 93 games the next season Sanders upped his game a bit, going .271/.340/.546 with a very good OPS of .887, finishing with one less homer than the season before (21) in over 150 less at-bats.
These aren't jump off the page MVP numbers, but that's not what was needed out of him on a team as loaded as the 04-05 teams were. He was hitting in a lineup with Albert Pujols, Jim Edmonds, Scott Rolen, and Larry Walker (2004). He didn't need to be that MVP guy, as the team had the MV3 (still perplexes me how this team didn't win the title).
Sanders also had pretty good postseason numbers with the Cardinals as he did contribute two very good NLDS performances in 04/05, going .286 with a homer and a stolen base in 04 and .333 with a homer, two doubles, and ten RBI in the 05 NLDS against the Padres. It was the 04 WS and 05 NLCS where his bat went to die unfortunately when the Cards needed it most.
All in all, one of the better signings in Cardinals' history.
Next: Chris Carpenter


London Oxford Airport, 31st January 2019: Smartwings, the biggest Czech air carrier and at the same time, one of the most rapidly growing air carriers in Central Europe, trusted Travion ltd. with yet another ground service and flight permit coordination for their 737-800 Africa Tour charter flights.
The seventeen-day itinerary consisted of twelve flights organized by a Slovak travel agency Leonardo. The route started in Prague in the Czech Republic and after a stopover in Bratislava it continued to Africa and the passengers had a chance to visit 8 different countries on the African continent. Travion successfully supported Smartwings in São Tomé Island, Tanzania, Zimbabwe, Botswana, Mozambique, Madagascar, Réunion Island and Djibouti.
As with any project of this scope and complexity, it is necessary to pay attention to detail, be single-minded in planning, thorough in communication and meticulous in follow through. Travion's team of experienced flight managers once again demonstrated, through their commitment to excellence backed by their market leading real-time communication application, their ability to handle such a project.
ABOUT TRAVION: Travion with its HQ in Oxford and Flight Management Centre in Prague provides a complete range of flight management services, both AD HOC and OUTSOURCED. From securing permits and slots, through arranging flight plans, ground handling services, fuel and in-flight catering to high-quality concierge services as well as meet & assist. Travion also assists operators with the payment of AIR PASSENGER DUTY (APD).
ABOUT SMARTWINGS: Smartwings is the biggest Czech air carrier and at the same time, one of the most rapidly growing air carriers in Central Europe belonging to Smartwings Group. The Group consists of six subsidiaries and transport of passengers represents the biggest business portfolio of Smartwings Group which is performed by two business brands Smartwings and Czech Airlines. Smartwings planes are flying to more than 400 airports on 4 continents.


Physically Hardening Adhesives: The active components are mainly solid polymers and resins. For application these must be converted to a liquid form. This can either be carried out by users by means of heating (hot melts) or can be carried out by adhesive manufacturers by dissolving the components in organic solvents or dispersing the components in water. The dry, fully-aired adhesive is generally unreactive and biologically inert. There is therefore usually no health hazard. In contrast, there is a potential health hazard from auxiliary components, such as organic solvents, that are present in some of these adhesives. These can make up as much as 80% of the weight of the adhesive product.
Hot Melts: These adhesives contain largely polymers and resins and only small amounts of auxiliary materials. There is virtually never a health hazard. When applying these adhesives manually, there is the risk of burns and users must protect themselves against this. During heating, small amounts of auxiliary materials, contaminants and cleavage products can be liberated, but these are insignificant when small amounts of adhesive are being processed. In an industrial or commercial environment, a ventilation system is recommended due to the larger quantities being used and the longer working times with the adhesives.
Organic Solvent (e.g. Contact Adhesives): In these adhesives the polymers and resins are dissolved in organic solvents. The hazard potential is determined by the nature of the solvent (e.g. flammability, irritation potential). Due to the high volatility of the solvents, exposure by inhalation of the vapors is the biggest problem. For most solvents the maximum concentration at the workplace and limiting factors are laid down (Workplace limit value, see Glossary). Due to the small amounts of adhesive used by private users, these limit values are generally not reached or are only exceeded for a very short time.
Water-Based (e.g. PVA Wood Adhesives): In the adhesives the organic solvents are replaced by water and suitable polymers are dispersed in the water. There are hence no potential health hazards from organic solvents. However, water-based adhesives are sensitive to attack by micro-organisms (e.g. mold formation). For that reason dispersion adhesives contain small amounts of preservatives for protection purposes. The potential health hazard is the triggering of allergic skin reactions, for example allergic reactions triggered by natural polymers such as natural rubber and non-modified colophony resins. The risk of sensitization in non-allergic people is generally extremely low due to the very small amounts of preservatives in the adhesives. Skin contact is here the exposure issue. Depending on the mode of application, skin contact may be unavoidable, as for example when using wallpaper pastes. However, here the concentration of preservatives is reduced as a result of mixing with water.
Plastisols: When applying these adhesives manually, there is the risk of burns and users must protect themselves against this. During heating, small amounts of auxiliary materials, contaminants and cleavage products can be liberated, but these are insignificant when small amounts of adhesive are being processed. In an industrial or commercial environment, a ventilation system is recommended due to the larger quantities being used and the longer working times with the adhesives.
Chemically Curing: The chemically reactive monomers/oligomers and hardeners and crosslinking agents determine the potential health hazard of these products. Once fully cured, the adhesive polymers are in general non-hazardous. Exposure and risk considerations hence only apply for the time period up until the adhesives have fully cured. Chemically curing may be classified into Single Component (1-C) and Two-Component (2-C).
Heat Curing (e.g. epoxies, phenol-formaldehyde): When applying these adhesives manually, there is the risk of burns and users must protect themselves against this. During heating, small amounts of auxiliary materials, contaminants and cleavage products can be liberated, but these are insignificant when small amounts of adhesive are being processed. In an industrial or commercial environment, a ventilation system is recommended due to the larger quantities being used and the longer working times with the adhesives.
Moisture Curing (e.g. polyurethanes): This group of adhesives reacts with water from the surroundings or water on the substrate. When applying these materials, it is suggested to wear gloves, and eye protection. These materials cure over a period of hours or even days; however, contact with the skin should be minimized as they can cause some skin irritation/dermatitis. Vapors can cause eye irritation and direct contact to the eyes with rubbing may cause some abrasion to them. In limited use, no additional protection is needed; however, an open area is recommended for production use. As with any moisture curing product, increasing the ambient humidity level will decrease cure time.
Cyanoacrylates: This group of adhesives reacts with water from the surroundings or water on the substrate. As private individuals only usually use small drops when applying the adhesive, the potential health hazard here is that if there is contact with the eyes or splashes of adhesive enter the eye then undesired bonding can take place (can gradually be dissolved using a soap solution). When being used industrially and commercially, possible irritation caused by the cyanoacrylate monomer, thermal effects and the rapid polymerization reaction have to be taken into consideration. Increasing the humidity prevents irritation of the respiratory tract. When carrying out major bonding tasks, not only is it recommended to adjust the humidity of the air but also to wear safety glasses and protective gloves.
Anaerobic: These types of materials are free radical cure mechanisms and begin to cure when they are confined between substrates of limited dimension, thus removing ambient air. Oxygen stabilizes these products, so the elimination of it (as in a joint), along with the presence of a free radical metallic ion the cure begins. Many of these materials contain some amount of mild acids and acrylic monomers so the use of gloves and eye protection is advised. Generally speaking, these materials are used as threadlocking agents, bearing (cylindrical bonding) retaining, flange sealing and thread sealing. They can be applied via manual application from a packaged bottle, or with automated equipment. Ventilation is not normally needed; however, in flange sealing, larger amounts are applied so open areas are often advised.
Radiation Cure: Radiation Cure is a method of initiation of the cure. It utilizes a photoinitiator as one of the raw materials in the adhesive/sealant. Once exposed to the chosen wavelength of energy (ultraviolet, visible, and even microwave) the photonitiator will react and cause the initiation of the curing process. In terms of safety, there are two concerns -- the adhesive/sealant itself, and the energy emitting source. For the adhesive/sealant, there are versions of cyanoacrylate, epoxy, silicone, anaerobic, and acrylic products all available as radiation curing. Thus, refer to the respective product descriptions in this section for handling and exposure limitations. With respect to the energy source, the first topic is microwave energy. While these materials are limited in use, they need to be mentioned, and normal concerns for microwave exposure are valid. These include the very same restrictions as when using microwave ovens at home - microwave energy must always be shielded. Use of ultraviolet light is common and requires the use of eye protection (designed specifically as UV blocking and intensity reduction) as well as skin protection to prevent burns. Many of the radiation curing adhesives utilize high intensity lights which are harmful to look at without eye protection. The same concerns are appropriate when discussing visible light cure. These materials utilize the very same idea of a photoinitiator, but it responds to a different wavelength of light. In this case the concern is the intensity of the light source. Again, use of eye protection is necessary. There are some low intensity visible light curing materials, with corresponding low intensity emitting lamps, but prolonged exposure them is not advised without UV blocking eye protection as some amount of stray UV light is likely to be emitted.
Silicones: Single component silicones have very similar handling and use concerns as the single component polyurethanes as described earlier. Therefore, the same handling methodology should be used. This group of adhesives reacts with water from the surroundings or water on the substrate. While both single and two-component materials are available, these comments refer specifically to the single component products. When applying these materials, it is suggested to wear gloves, and eye protection. These materials cure over a period of hours or even days; however, contact with the skin should be minimized as they can cause some skin irritation/dermatitis. Vapors can cause eye irritation and direct contact to the eyes will cause irritation. In limited use, no additional protection is needed, however, an open area is recommended for production use. As with any moisture curing product, increasing the ambient humidity level will decrease cure time.
Epoxiens : Epoxy materials have both a resin and hardener, which require mixing prior to use. These of these parts should be used with gloves and eye protection as they can cause mild skin and eye irritation. Normally, inhalation is not a concern; however, some people will experience some respiratory tract irritation, so open areas are suggested.
Urethanes:When a two-component polyurethane is used, the reaction for curing is the combining of the two parts. The mixed material is similar in safety related concern to the single component urethane as described above.
Methyl Methacrylates:This category of adhesives are usually used in structural bonding of metal substrates. Also known as "MMA's", these materials have a strong, pungent odor, and can cause headaches, nausea, dizziness and respiratory tract irritation. They cure via the mixing of the two parts, so when handling, gloves and eye protection are recommended. They are irritating to the skin and eyes. Localized ventilation is suggested for prolonged use. Otherwise, application in an open area is suggested.
Silicones: Silicones react with water. Depending on the type of silicone, this reaction releases either acetic acid or alcohols. The acetic acid can be clearly sensed by the nose before any irritation begins. In general the slowly released amounts are so small that they present no health risk, especially in the case of private users. Old formulations of neutral silicones which release butanone oxime must be labeled, but they are only used nowadays for special applications. It should be noted that these products may also be found as single component products.
Pressure Sensitive Adhesives: Private users only come into contact with these adhesives in the form of self-adhesive articles such as labels, adhesive tape, etc. As such these adhesives represent no hazard to private users in practice. Such articles are manufactured industrially using adhesives in the form of solutions, but mostly using dispersions and melts.